oh-my-opencode 5.1.13 → 5.1.15

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 (80) hide show
  1. package/dist/cli/index.js +18 -17
  2. package/dist/cli-node/index.js +18 -17
  3. package/dist/index.js +16 -16
  4. package/dist/skills/browser/SKILL.md +26 -2
  5. package/dist/skills/browser/references/commands.md +10 -1
  6. package/dist/skills/browser/references/install.md +7 -0
  7. package/dist/skills/browser/runtime/omowright/manifest.json +1 -1
  8. package/dist/skills/browser/scripts/browser-engine-guard.mjs +506 -0
  9. package/dist/skills/browser/scripts/omowright.mjs +29 -2
  10. package/dist/tui.js +16 -16
  11. package/package.json +14 -14
  12. package/packages/lsp-core/src/post-edit/not-installed.test.ts +2 -2
  13. package/packages/lsp-core/src/post-edit/orchestration.test.ts +13 -13
  14. package/packages/lsp-core/src/post-edit/orchestration.ts +9 -3
  15. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  16. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  17. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  18. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  19. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  20. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  21. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  22. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  23. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
  24. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +4 -4
  25. package/packages/omo-codex/plugin/components/lsp/dist/cli.js +33 -19
  26. package/packages/omo-codex/plugin/components/lsp/dist/codex-hook.js +27 -17
  27. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  28. package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
  29. package/packages/omo-codex/plugin/components/lsp/src/codex-hook.ts +36 -18
  30. package/packages/omo-codex/plugin/components/lsp/test/codex-hook-not-installed.test.ts +203 -0
  31. package/packages/omo-codex/plugin/components/rules/CHANGELOG.md +1 -0
  32. package/packages/omo-codex/plugin/components/rules/bundled-rules/hephaestus/gpt-6.md +1 -1
  33. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  34. package/packages/omo-codex/plugin/components/rules/package.json +1 -1
  35. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  36. package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
  37. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  38. package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
  39. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  40. package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
  41. package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +1 -1
  42. package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
  43. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +5 -5
  44. package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
  45. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  46. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  47. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  48. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  49. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  50. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  51. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  52. package/packages/omo-codex/plugin/hooks/post-tool-use-recording-spawn-admission.json +1 -1
  53. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  54. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  55. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  56. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  57. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  58. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  59. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  60. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
  61. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  62. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  63. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  64. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  65. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  66. package/packages/omo-codex/plugin/package-lock.json +12 -12
  67. package/packages/omo-codex/plugin/package.json +1 -1
  68. package/packages/omo-codex/plugin/skills/browser/SKILL.md +26 -2
  69. package/packages/omo-codex/plugin/skills/browser/references/commands.md +10 -1
  70. package/packages/omo-codex/plugin/skills/browser/references/install.md +7 -0
  71. package/packages/omo-codex/plugin/skills/browser/runtime/omowright/manifest.json +1 -1
  72. package/packages/omo-codex/plugin/skills/browser/scripts/browser-engine-guard.mjs +506 -0
  73. package/packages/omo-codex/plugin/skills/browser/scripts/omowright.mjs +29 -2
  74. package/packages/omo-codex/scripts/install-dist/install-local.mjs +2 -2
  75. package/packages/shared-skills/skills/browser/SKILL.md +26 -2
  76. package/packages/shared-skills/skills/browser/references/commands.md +10 -1
  77. package/packages/shared-skills/skills/browser/references/install.md +7 -0
  78. package/packages/shared-skills/skills/browser/runtime/omowright/manifest.json +1 -1
  79. package/packages/shared-skills/skills/browser/scripts/browser-engine-guard.mjs +506 -0
  80. package/packages/shared-skills/skills/browser/scripts/omowright.mjs +29 -2
package/dist/cli/index.js CHANGED
@@ -64,7 +64,7 @@ var package_default;
64
64
  var init_package = __esm(() => {
65
65
  package_default = {
66
66
  name: "oh-my-opencode",
67
- version: "5.1.13",
67
+ version: "5.1.15",
68
68
  description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
69
69
  main: "./dist/index.js",
70
70
  types: "dist/index.d.ts",
@@ -241,7 +241,7 @@ var init_package = __esm(() => {
241
241
  },
242
242
  devDependencies: {
243
243
  "@clack/prompts": "^1.8.1",
244
- "@code-yeongyu/senpi": "2026.10.3",
244
+ "@code-yeongyu/senpi": "2026.10.6",
245
245
  "@modelcontextprotocol/sdk": "^1.30.0",
246
246
  "@oh-my-opencode/agents-md-core": "workspace:*",
247
247
  "@oh-my-opencode/ast-grep-mcp": "workspace:*",
@@ -299,18 +299,18 @@ var init_package = __esm(() => {
299
299
  typescript: "^7.0.2"
300
300
  },
301
301
  optionalDependencies: {
302
- "oh-my-opencode-darwin-arm64": "5.1.13",
303
- "oh-my-opencode-darwin-x64": "5.1.13",
304
- "oh-my-opencode-darwin-x64-baseline": "5.1.13",
305
- "oh-my-opencode-linux-arm64": "5.1.13",
306
- "oh-my-opencode-linux-arm64-musl": "5.1.13",
307
- "oh-my-opencode-linux-x64": "5.1.13",
308
- "oh-my-opencode-linux-x64-baseline": "5.1.13",
309
- "oh-my-opencode-linux-x64-musl": "5.1.13",
310
- "oh-my-opencode-linux-x64-musl-baseline": "5.1.13",
311
- "oh-my-opencode-windows-arm64": "5.1.13",
312
- "oh-my-opencode-windows-x64": "5.1.13",
313
- "oh-my-opencode-windows-x64-baseline": "5.1.13"
302
+ "oh-my-opencode-darwin-arm64": "5.1.15",
303
+ "oh-my-opencode-darwin-x64": "5.1.15",
304
+ "oh-my-opencode-darwin-x64-baseline": "5.1.15",
305
+ "oh-my-opencode-linux-arm64": "5.1.15",
306
+ "oh-my-opencode-linux-arm64-musl": "5.1.15",
307
+ "oh-my-opencode-linux-x64": "5.1.15",
308
+ "oh-my-opencode-linux-x64-baseline": "5.1.15",
309
+ "oh-my-opencode-linux-x64-musl": "5.1.15",
310
+ "oh-my-opencode-linux-x64-musl-baseline": "5.1.15",
311
+ "oh-my-opencode-windows-arm64": "5.1.15",
312
+ "oh-my-opencode-windows-x64": "5.1.15",
313
+ "oh-my-opencode-windows-x64-baseline": "5.1.15"
314
314
  },
315
315
  overrides: {
316
316
  hono: "^4.13.8",
@@ -9493,7 +9493,7 @@ You are working on tasks that don't fit specific categories but require moderate
9493
9493
  </Category_Context>`, UNSPECIFIED_LOW_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Use only when no specialist category fits, effort is moderate, and scope stays within a few files/modules. Prefer any matching specialist category.</Selection_Gate>
9494
9494
  <Caller_Warning>Provide explicit must-do steps, forbidden scope, and concrete success criteria.</Caller_Warning>`, UNSPECIFIED_HIGH_CATEGORY_PROMPT_APPEND = `<Category_Context>
9495
9495
  You are working on tasks that don't fit specific categories but require substantial effort.
9496
- </Category_Context>`, UNSPECIFIED_HIGH_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Use only when no specialist category fits and substantial effort spans systems/modules with broad impact. Use unspecified-low for contained moderate work.</Selection_Gate>`, DEEP_LOW_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Route here when one subsystem plus its callers holds the mechanism and the evidence, once read, leaves one right answer. Wide but mechanical work belongs here or in a quick batch. When unsure, choose deep-low: a misrouted child returns \`ESCALATE: deep-high\` after one cheap attempt; re-spawn the same brief as deep-high with its findings.</Selection_Gate>`, DEEP_HIGH_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Route here only when you can name the decision evidence cannot settle: a trade-off with no single right answer, a contract change crossing a package or process boundary, a mechanism with no in-repo pattern to copy, or correctness argued from invariants rather than observed in a test. Wide scope with easy decisions is deep-low or unspecified-high; reasoning as the deliverable is ultrabrain.</Selection_Gate>`, DEEP_LOW_GATE_MODELS, DEEP_HIGH_GATE_MODEL = "gpt-6-astra", OPENAI_CATEGORIES;
9496
+ </Category_Context>`, UNSPECIFIED_HIGH_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Use only when no specialist category fits and substantial effort spans systems/modules with broad impact. Use unspecified-low for contained moderate work.</Selection_Gate>`, DEEP_LOW_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Of the two deep lanes this is the default: the child settles its decisions from what it reads. When unsure, choose deep-low; a misrouted child returns \`ESCALATE: deep-high\` after one cheap attempt, and you re-spawn the same brief as deep-high with its findings.</Selection_Gate>`, DEEP_HIGH_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Route here only when you can name the decision evidence cannot settle: a trade-off with no single right answer, a contract change crossing a package or process boundary, a mechanism with no in-repo pattern to copy, or correctness argued from invariants rather than observed in a test. Wide scope with easy decisions is deep-low or unspecified-high; reasoning as the deliverable is ultrabrain.</Selection_Gate>`, DEEP_LOW_GATE_MODELS, DEEP_HIGH_GATE_MODEL = "gpt-6-astra", OPENAI_CATEGORIES;
9497
9497
  var init_openai_categories = __esm(() => {
9498
9498
  init_types();
9499
9499
  DEEP_LOW_GATE_MODELS = ["gpt-6.1-sol", "gpt-6.1-sol-fast", "gpt-5.6-sol-fast", "gpt-5.6-sol"];
@@ -9508,7 +9508,7 @@ var init_openai_categories = __esm(() => {
9508
9508
  {
9509
9509
  name: "deep-low",
9510
9510
  config: { model: "openai/gpt-6.1-sol", variant: "medium" },
9511
- description: "Default deep lane: one goal, one deliverable, decisions the child can settle from what it reads. **3D graphics, computer/browser use, CAPTCHA, multimodal, backend, logic, and algorithm work is routed here.** Multiple goals fan out as parallel calls.",
9511
+ description: "Default deep lane: one goal, one deliverable, decisions the child can settle from what it reads; preferred over deep-high for 3D graphics, computer/browser use, CAPTCHA, multimodal, backend, logic, and algorithm work. Multiple goals fan out as parallel calls.",
9512
9512
  callerGuidance: DEEP_LOW_CATEGORY_CALLER_GUIDANCE,
9513
9513
  promptAppend: DEEP_LOW_CATEGORY_PROMPT_APPEND,
9514
9514
  resolvePromptAppend: resolveDeepLowCategoryPromptAppend,
@@ -89369,7 +89369,7 @@ var package_default2;
89369
89369
  var init_package2 = __esm(() => {
89370
89370
  package_default2 = {
89371
89371
  name: "@oh-my-opencode/omo-codex",
89372
- version: "5.1.13",
89372
+ version: "5.1.15",
89373
89373
  type: "module",
89374
89374
  private: true,
89375
89375
  description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
@@ -98698,6 +98698,7 @@ var REQUIRED_PLUGIN_ARTIFACTS = [
98698
98698
  join63("extensions", "omo.js"),
98699
98699
  join63("extensions", "omo-task.js"),
98700
98700
  join63("extensions", "omo-computer-use.js"),
98701
+ join63("extensions", "omo-memory-doctor.js"),
98701
98702
  join63("extensions", "assets.generated.json"),
98702
98703
  join63("extensions", "omo-member.js"),
98703
98704
  join63("extensions", "memory-run-supervisor.mjs"),
@@ -65,7 +65,7 @@ var package_default;
65
65
  var init_package = __esm(() => {
66
66
  package_default = {
67
67
  name: "oh-my-opencode",
68
- version: "5.1.13",
68
+ version: "5.1.15",
69
69
  description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
70
70
  main: "./dist/index.js",
71
71
  types: "dist/index.d.ts",
@@ -242,7 +242,7 @@ var init_package = __esm(() => {
242
242
  },
243
243
  devDependencies: {
244
244
  "@clack/prompts": "^1.8.1",
245
- "@code-yeongyu/senpi": "2026.10.3",
245
+ "@code-yeongyu/senpi": "2026.10.6",
246
246
  "@modelcontextprotocol/sdk": "^1.30.0",
247
247
  "@oh-my-opencode/agents-md-core": "workspace:*",
248
248
  "@oh-my-opencode/ast-grep-mcp": "workspace:*",
@@ -300,18 +300,18 @@ var init_package = __esm(() => {
300
300
  typescript: "^7.0.2"
301
301
  },
302
302
  optionalDependencies: {
303
- "oh-my-opencode-darwin-arm64": "5.1.13",
304
- "oh-my-opencode-darwin-x64": "5.1.13",
305
- "oh-my-opencode-darwin-x64-baseline": "5.1.13",
306
- "oh-my-opencode-linux-arm64": "5.1.13",
307
- "oh-my-opencode-linux-arm64-musl": "5.1.13",
308
- "oh-my-opencode-linux-x64": "5.1.13",
309
- "oh-my-opencode-linux-x64-baseline": "5.1.13",
310
- "oh-my-opencode-linux-x64-musl": "5.1.13",
311
- "oh-my-opencode-linux-x64-musl-baseline": "5.1.13",
312
- "oh-my-opencode-windows-arm64": "5.1.13",
313
- "oh-my-opencode-windows-x64": "5.1.13",
314
- "oh-my-opencode-windows-x64-baseline": "5.1.13"
303
+ "oh-my-opencode-darwin-arm64": "5.1.15",
304
+ "oh-my-opencode-darwin-x64": "5.1.15",
305
+ "oh-my-opencode-darwin-x64-baseline": "5.1.15",
306
+ "oh-my-opencode-linux-arm64": "5.1.15",
307
+ "oh-my-opencode-linux-arm64-musl": "5.1.15",
308
+ "oh-my-opencode-linux-x64": "5.1.15",
309
+ "oh-my-opencode-linux-x64-baseline": "5.1.15",
310
+ "oh-my-opencode-linux-x64-musl": "5.1.15",
311
+ "oh-my-opencode-linux-x64-musl-baseline": "5.1.15",
312
+ "oh-my-opencode-windows-arm64": "5.1.15",
313
+ "oh-my-opencode-windows-x64": "5.1.15",
314
+ "oh-my-opencode-windows-x64-baseline": "5.1.15"
315
315
  },
316
316
  overrides: {
317
317
  hono: "^4.13.8",
@@ -9494,7 +9494,7 @@ You are working on tasks that don't fit specific categories but require moderate
9494
9494
  </Category_Context>`, UNSPECIFIED_LOW_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Use only when no specialist category fits, effort is moderate, and scope stays within a few files/modules. Prefer any matching specialist category.</Selection_Gate>
9495
9495
  <Caller_Warning>Provide explicit must-do steps, forbidden scope, and concrete success criteria.</Caller_Warning>`, UNSPECIFIED_HIGH_CATEGORY_PROMPT_APPEND = `<Category_Context>
9496
9496
  You are working on tasks that don't fit specific categories but require substantial effort.
9497
- </Category_Context>`, UNSPECIFIED_HIGH_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Use only when no specialist category fits and substantial effort spans systems/modules with broad impact. Use unspecified-low for contained moderate work.</Selection_Gate>`, DEEP_LOW_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Route here when one subsystem plus its callers holds the mechanism and the evidence, once read, leaves one right answer. Wide but mechanical work belongs here or in a quick batch. When unsure, choose deep-low: a misrouted child returns \`ESCALATE: deep-high\` after one cheap attempt; re-spawn the same brief as deep-high with its findings.</Selection_Gate>`, DEEP_HIGH_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Route here only when you can name the decision evidence cannot settle: a trade-off with no single right answer, a contract change crossing a package or process boundary, a mechanism with no in-repo pattern to copy, or correctness argued from invariants rather than observed in a test. Wide scope with easy decisions is deep-low or unspecified-high; reasoning as the deliverable is ultrabrain.</Selection_Gate>`, DEEP_LOW_GATE_MODELS, DEEP_HIGH_GATE_MODEL = "gpt-6-astra", OPENAI_CATEGORIES;
9497
+ </Category_Context>`, UNSPECIFIED_HIGH_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Use only when no specialist category fits and substantial effort spans systems/modules with broad impact. Use unspecified-low for contained moderate work.</Selection_Gate>`, DEEP_LOW_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Of the two deep lanes this is the default: the child settles its decisions from what it reads. When unsure, choose deep-low; a misrouted child returns \`ESCALATE: deep-high\` after one cheap attempt, and you re-spawn the same brief as deep-high with its findings.</Selection_Gate>`, DEEP_HIGH_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Route here only when you can name the decision evidence cannot settle: a trade-off with no single right answer, a contract change crossing a package or process boundary, a mechanism with no in-repo pattern to copy, or correctness argued from invariants rather than observed in a test. Wide scope with easy decisions is deep-low or unspecified-high; reasoning as the deliverable is ultrabrain.</Selection_Gate>`, DEEP_LOW_GATE_MODELS, DEEP_HIGH_GATE_MODEL = "gpt-6-astra", OPENAI_CATEGORIES;
9498
9498
  var init_openai_categories = __esm(() => {
9499
9499
  init_types();
9500
9500
  DEEP_LOW_GATE_MODELS = ["gpt-6.1-sol", "gpt-6.1-sol-fast", "gpt-5.6-sol-fast", "gpt-5.6-sol"];
@@ -9509,7 +9509,7 @@ var init_openai_categories = __esm(() => {
9509
9509
  {
9510
9510
  name: "deep-low",
9511
9511
  config: { model: "openai/gpt-6.1-sol", variant: "medium" },
9512
- description: "Default deep lane: one goal, one deliverable, decisions the child can settle from what it reads. **3D graphics, computer/browser use, CAPTCHA, multimodal, backend, logic, and algorithm work is routed here.** Multiple goals fan out as parallel calls.",
9512
+ description: "Default deep lane: one goal, one deliverable, decisions the child can settle from what it reads; preferred over deep-high for 3D graphics, computer/browser use, CAPTCHA, multimodal, backend, logic, and algorithm work. Multiple goals fan out as parallel calls.",
9513
9513
  callerGuidance: DEEP_LOW_CATEGORY_CALLER_GUIDANCE,
9514
9514
  promptAppend: DEEP_LOW_CATEGORY_PROMPT_APPEND,
9515
9515
  resolvePromptAppend: resolveDeepLowCategoryPromptAppend,
@@ -89448,7 +89448,7 @@ var package_default2;
89448
89448
  var init_package2 = __esm(() => {
89449
89449
  package_default2 = {
89450
89450
  name: "@oh-my-opencode/omo-codex",
89451
- version: "5.1.13",
89451
+ version: "5.1.15",
89452
89452
  type: "module",
89453
89453
  private: true,
89454
89454
  description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
@@ -98777,6 +98777,7 @@ var REQUIRED_PLUGIN_ARTIFACTS = [
98777
98777
  join63("extensions", "omo.js"),
98778
98778
  join63("extensions", "omo-task.js"),
98779
98779
  join63("extensions", "omo-computer-use.js"),
98780
+ join63("extensions", "omo-memory-doctor.js"),
98780
98781
  join63("extensions", "assets.generated.json"),
98781
98782
  join63("extensions", "omo-member.js"),
98782
98783
  join63("extensions", "memory-run-supervisor.mjs"),
package/dist/index.js CHANGED
@@ -27788,7 +27788,7 @@ var UNSPECIFIED_HIGH_CATEGORY_PROMPT_APPEND = `<Category_Context>
27788
27788
  You are working on tasks that don't fit specific categories but require substantial effort.
27789
27789
  </Category_Context>`;
27790
27790
  var UNSPECIFIED_HIGH_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Use only when no specialist category fits and substantial effort spans systems/modules with broad impact. Use unspecified-low for contained moderate work.</Selection_Gate>`;
27791
- var DEEP_LOW_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Route here when one subsystem plus its callers holds the mechanism and the evidence, once read, leaves one right answer. Wide but mechanical work belongs here or in a quick batch. When unsure, choose deep-low: a misrouted child returns \`ESCALATE: deep-high\` after one cheap attempt; re-spawn the same brief as deep-high with its findings.</Selection_Gate>`;
27791
+ var DEEP_LOW_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Of the two deep lanes this is the default: the child settles its decisions from what it reads. When unsure, choose deep-low; a misrouted child returns \`ESCALATE: deep-high\` after one cheap attempt, and you re-spawn the same brief as deep-high with its findings.</Selection_Gate>`;
27792
27792
  var DEEP_HIGH_CATEGORY_CALLER_GUIDANCE = `<Selection_Gate>Route here only when you can name the decision evidence cannot settle: a trade-off with no single right answer, a contract change crossing a package or process boundary, a mechanism with no in-repo pattern to copy, or correctness argued from invariants rather than observed in a test. Wide scope with easy decisions is deep-low or unspecified-high; reasoning as the deliverable is ultrabrain.</Selection_Gate>`;
27793
27793
  var DEEP_LOW_GATE_MODELS = ["gpt-6.1-sol", "gpt-6.1-sol-fast", "gpt-5.6-sol-fast", "gpt-5.6-sol"];
27794
27794
  var DEEP_HIGH_GATE_MODEL = "gpt-6-astra";
@@ -27803,7 +27803,7 @@ var OPENAI_CATEGORIES = [
27803
27803
  {
27804
27804
  name: "deep-low",
27805
27805
  config: { model: "openai/gpt-6.1-sol", variant: "medium" },
27806
- description: "Default deep lane: one goal, one deliverable, decisions the child can settle from what it reads. **3D graphics, computer/browser use, CAPTCHA, multimodal, backend, logic, and algorithm work is routed here.** Multiple goals fan out as parallel calls.",
27806
+ description: "Default deep lane: one goal, one deliverable, decisions the child can settle from what it reads; preferred over deep-high for 3D graphics, computer/browser use, CAPTCHA, multimodal, backend, logic, and algorithm work. Multiple goals fan out as parallel calls.",
27807
27807
  callerGuidance: DEEP_LOW_CATEGORY_CALLER_GUIDANCE,
27808
27808
  promptAppend: DEEP_LOW_CATEGORY_PROMPT_APPEND,
27809
27809
  resolvePromptAppend: resolveDeepLowCategoryPromptAppend,
@@ -98586,7 +98586,7 @@ function getCachedVersion(options = {}) {
98586
98586
  // package.json
98587
98587
  var package_default = {
98588
98588
  name: "oh-my-opencode",
98589
- version: "5.1.13",
98589
+ version: "5.1.15",
98590
98590
  description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
98591
98591
  main: "./dist/index.js",
98592
98592
  types: "dist/index.d.ts",
@@ -98763,7 +98763,7 @@ var package_default = {
98763
98763
  },
98764
98764
  devDependencies: {
98765
98765
  "@clack/prompts": "^1.8.1",
98766
- "@code-yeongyu/senpi": "2026.10.3",
98766
+ "@code-yeongyu/senpi": "2026.10.6",
98767
98767
  "@modelcontextprotocol/sdk": "^1.30.0",
98768
98768
  "@oh-my-opencode/agents-md-core": "workspace:*",
98769
98769
  "@oh-my-opencode/ast-grep-mcp": "workspace:*",
@@ -98821,18 +98821,18 @@ var package_default = {
98821
98821
  typescript: "^7.0.2"
98822
98822
  },
98823
98823
  optionalDependencies: {
98824
- "oh-my-opencode-darwin-arm64": "5.1.13",
98825
- "oh-my-opencode-darwin-x64": "5.1.13",
98826
- "oh-my-opencode-darwin-x64-baseline": "5.1.13",
98827
- "oh-my-opencode-linux-arm64": "5.1.13",
98828
- "oh-my-opencode-linux-arm64-musl": "5.1.13",
98829
- "oh-my-opencode-linux-x64": "5.1.13",
98830
- "oh-my-opencode-linux-x64-baseline": "5.1.13",
98831
- "oh-my-opencode-linux-x64-musl": "5.1.13",
98832
- "oh-my-opencode-linux-x64-musl-baseline": "5.1.13",
98833
- "oh-my-opencode-windows-arm64": "5.1.13",
98834
- "oh-my-opencode-windows-x64": "5.1.13",
98835
- "oh-my-opencode-windows-x64-baseline": "5.1.13"
98824
+ "oh-my-opencode-darwin-arm64": "5.1.15",
98825
+ "oh-my-opencode-darwin-x64": "5.1.15",
98826
+ "oh-my-opencode-darwin-x64-baseline": "5.1.15",
98827
+ "oh-my-opencode-linux-arm64": "5.1.15",
98828
+ "oh-my-opencode-linux-arm64-musl": "5.1.15",
98829
+ "oh-my-opencode-linux-x64": "5.1.15",
98830
+ "oh-my-opencode-linux-x64-baseline": "5.1.15",
98831
+ "oh-my-opencode-linux-x64-musl": "5.1.15",
98832
+ "oh-my-opencode-linux-x64-musl-baseline": "5.1.15",
98833
+ "oh-my-opencode-windows-arm64": "5.1.15",
98834
+ "oh-my-opencode-windows-x64": "5.1.15",
98835
+ "oh-my-opencode-windows-x64-baseline": "5.1.15"
98836
98836
  },
98837
98837
  overrides: {
98838
98838
  hono: "^4.13.8",
@@ -18,7 +18,31 @@ one where a human is a single call away. Never substitute one engine for the oth
18
18
  the attached engine is not set up, run the onboarding script and tell the user its one remaining
19
19
  step.
20
20
 
21
- ## Step 0 — load omowright and prove the stack
21
+ ## Step 0 — which engine this session is allowed to use
22
+
23
+ When `OMO_BROWSER_ENGINE` is set (the OmO desktop app sets it for every session), it wins over the table above:
24
+
25
+ | Value | What you do |
26
+ |---|---|
27
+ | `connected` | Use `connectBrowserSkill()` only. If the user's browser is not connected you get a "Connect your browser" error: relay it and stop. Never open another browser |
28
+ | `builtin` | Do not call `connectBrowserSkill()`; use the app's in-app browser tools |
29
+ | `none` | Do not do browser work. Say that agent browser access is off for this project |
30
+ | unset | The table above, as before (terminal use) |
31
+
32
+ While any engine is set, `loadOmowright()` returns a guarded library. The owned engine (`connectPipe`,
33
+ `connectCloakProfile`, `connect`) and every other export that acts on a browser is refused, so the table above
34
+ does not apply: do not look for a way around it, and tell the user what the session allows. Under `connected`
35
+ the app sees what the browser is doing, and before a click, Enter or script that sends, posts, pays, orders,
36
+ subscribes, deletes or closes an account, and before Enter in a message box, it asks the user first. A "No" fails the action with
37
+ `BrowserActionDeclinedError`: report that, never retry it or go around it (`session.tool()` lets only reads
38
+ through; `evaluate` is guarded too). If the user presses Stop, the next call throws `BrowserUserStoppedError`: tell
39
+ the user browser use was stopped and start no new session this turn.
40
+
41
+ The guard prevents mistakes by a cooperating agent. It is not a security boundary: code that imports the raw
42
+ entry (`resolveOmowrightEntry()`) is not guarded, and a host without the `omo_browser_bridge` tool cannot show state or
43
+ honor Stop, though questions are still asked.
44
+
45
+ ## Step 1 — load omowright and prove the stack
22
46
 
23
47
  ```js
24
48
  const { loadOmowright } = await import("<skill-root>/scripts/omowright.mjs")
@@ -94,7 +118,7 @@ changing the extension's automation settings.
94
118
  out everywhere. No flow here needs it.
95
119
  - **`focused: false` by default.** The browser belongs to someone who is probably using it.
96
120
  - **One short, named session per task,** always stopped.
97
- - **Bot-scored or WAF targets go to the owned engine.** The attached engine's daemon enables console
121
+ - **Bot-scored or WAF targets go to the owned engine** (not while `OMO_BROWSER_ENGINE` is set: then say the site needs a browser the session does not allow). The attached engine's daemon enables console
98
122
  capture on every tab it drives, which is a known automation signal; CloakBrowser through
99
123
  `connectCloakProfile()` is the stealth path.
100
124
 
@@ -98,8 +98,17 @@ Every refusal is a `BskRpcError` with the daemon's own `code`:
98
98
  | `invalid_params` | wrong option shape | fix the call, do not retry as-is |
99
99
  | `permission_denied` | `evaluate` on a tab outside the Agent Window, or a denied borrow | stop; the user said no |
100
100
  | `timeout` | the tool did not finish in its budget | read the page state before retrying once |
101
- | `user_aborted` | the user pressed Stop in the browser | stop the task and report |
101
+ | `user_aborted` | the user pressed Stop in the browser | stop the task and report; under `OMO_BROWSER_ENGINE` this surfaces as `BrowserUserStoppedError` and no session starts again this turn |
102
102
  | `cdp_failed` | the page cannot be attached (restricted URL, DevTools open) | say which page and why |
103
103
 
104
+ Typed errors under `OMO_BROWSER_ENGINE` (see SKILL.md Step 0):
105
+
106
+ | Error | `code` | Meaning |
107
+ |---|---|---|
108
+ | `BrowserNotConnectedError` | `browser_not_connected` | the user's browser is not connected; ask them to connect it |
109
+ | `BrowserEngineRefusal` | `browser_engine_none` / `browser_engine_builtin` / `browser_engine_unsupported` / `browser_tool_blocked` | this engine setting does not allow that call |
110
+ | `BrowserActionDeclinedError` | `user_declined` | the user said no, or no question could be asked; do not retry |
111
+ | `BrowserUserStoppedError` | `user_stopped` | the user stopped browser use |
112
+
104
113
  Long calls can be cancelled: `const h = session.client.callWithHandle("tool.navigate", {...})`
105
114
  then `await session.client.cancel(h.rpcId)`.
@@ -8,6 +8,13 @@ Three pieces. The onboarding script prepares all three; a human finishes exactly
8
8
  | Browser extension | registered from the Web Store listing through Chrome's external-extension mechanism | **yes, up to one click** — the browser asks the user to enable it |
9
9
  | Daemon process | auto-starts on the first call | nothing to do |
10
10
 
11
+ ## Inside the OmO desktop app
12
+
13
+ The app installs the `bsk` CLI and starts its daemon itself, and keeps the daemon running when the app closes.
14
+ Do not run `browser-install.mjs` there unless the doctor says the app's engine is missing; a session set to
15
+ `OMO_BROWSER_ENGINE=builtin` or `none` never uses this skill's attached engine at all. `BSK_HOME` and `BSK_BIN`
16
+ still decide where the CLI and daemon are found, here and everywhere else.
17
+
11
18
  ## Supported
12
19
 
13
20
  | | |
@@ -5,5 +5,5 @@
5
5
  "index.js": "b6b064fab277031c6c51f5a58b84b31040f9960bf767bf646adc0540c1d25c1b",
6
6
  "page-bundle.js": "bfd51e8383cf47200d57387bbbed258bce5a3a3d00c38fc108034d2888e23f0c"
7
7
  },
8
- "stagedAtUtc": "2026-10-03T10:05:16.419Z"
8
+ "stagedAtUtc": "2026-10-04T05:22:59.419Z"
9
9
  }