oh-my-opencode 5.0.0-beta.21 → 5.0.0-beta.23

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 (151) hide show
  1. package/dist/cli/index.js +290 -288
  2. package/dist/cli-node/index.js +290 -288
  3. package/dist/index.js +1675 -1657
  4. package/dist/skills/debugging/SKILL.md +2 -0
  5. package/dist/skills/debugging/references/methodology/00-setup.md +12 -0
  6. package/dist/skills/debugging/references/methodology/02-investigate.md +21 -0
  7. package/dist/skills/debugging/references/runtimes/go.md +15 -1
  8. package/dist/skills/debugging/references/runtimes/native-binary.md +38 -0
  9. package/dist/skills/debugging/references/runtimes/node.md +25 -0
  10. package/dist/skills/debugging/references/runtimes/python.md +13 -0
  11. package/dist/skills/debugging/references/runtimes/rust.md +41 -0
  12. package/dist/skills/debugging/references/scripts/dap.mjs +267 -0
  13. package/dist/skills/debugging/references/scripts/dap.test.ts +86 -0
  14. package/dist/skills/debugging/references/scripts/fixture-adapter.mjs +59 -0
  15. package/dist/skills/debugging/references/tools/dap.md +103 -0
  16. package/dist/skills/debugging/references/tools/frida.md +193 -0
  17. package/dist/tools/delegate-task/types.d.ts +3 -0
  18. package/dist/tui.js +131 -147
  19. package/package.json +18 -15
  20. package/packages/lsp-core/src/index.ts +1 -0
  21. package/packages/lsp-core/src/lsp/client-wrapper.ts +25 -5
  22. package/packages/lsp-core/src/lsp/client.ts +26 -0
  23. package/packages/lsp-core/src/lsp/connection.ts +16 -0
  24. package/packages/lsp-core/src/lsp/constants.ts +1 -0
  25. package/packages/lsp-core/src/lsp/format-document.test.ts +143 -0
  26. package/packages/lsp-core/src/lsp/format-document.ts +90 -0
  27. package/packages/lsp-core/src/lsp/manager-max-clients.test.ts +151 -0
  28. package/packages/lsp-core/src/lsp/manager.ts +34 -1
  29. package/packages/lsp-core/src/lsp/server-definitions.ts +29 -0
  30. package/packages/lsp-core/src/lsp/server-installation.test.ts +376 -0
  31. package/packages/lsp-core/src/lsp/server-installation.ts +200 -27
  32. package/packages/lsp-core/src/lsp/server-resolution-local-binary.test.ts +170 -0
  33. package/packages/lsp-core/src/lsp/server-resolution.ts +18 -5
  34. package/packages/lsp-core/src/lsp/transport.ts +9 -0
  35. package/packages/lsp-core/src/lsp/types.ts +8 -0
  36. package/packages/lsp-core/src/tool-surface.test.ts +13 -1
  37. package/packages/lsp-core/src/tools/definitions.ts +14 -0
  38. package/packages/lsp-core/src/tools/format.test.ts +56 -0
  39. package/packages/lsp-core/src/tools/format.ts +56 -0
  40. package/packages/lsp-core/src/tools/index.ts +1 -0
  41. package/packages/lsp-core/src/tools/types.ts +10 -0
  42. package/packages/lsp-daemon/dist/cli.js +432 -144
  43. package/packages/lsp-daemon/dist/client.d.ts +10 -0
  44. package/packages/lsp-daemon/dist/client.js +401 -107
  45. package/packages/lsp-daemon/dist/daemon-client.d.ts +1 -0
  46. package/packages/lsp-daemon/dist/daemon-client.js +3 -0
  47. package/packages/lsp-daemon/dist/index.js +395 -107
  48. package/packages/lsp-daemon/package.json +1 -1
  49. package/packages/lsp-tools-mcp/dist/cli.js +384 -99
  50. package/packages/lsp-tools-mcp/dist/lsp/manager.js +53 -0
  51. package/packages/lsp-tools-mcp/dist/mcp.js +384 -99
  52. package/packages/lsp-tools-mcp/dist/tools.js +385 -99
  53. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  54. package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +2 -2
  55. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  56. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  57. package/packages/omo-codex/plugin/components/codegraph/dist/cli.js +69 -35
  58. package/packages/omo-codex/plugin/components/codegraph/dist/serve.js +21 -2
  59. package/packages/omo-codex/plugin/components/codegraph/package.json +1 -1
  60. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  61. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  62. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  63. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  64. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  65. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
  66. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +3 -3
  67. package/packages/omo-codex/plugin/components/lsp/dist/cli.js +404 -121
  68. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  69. package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
  70. package/packages/omo-codex/plugin/components/rules/dist/cli.js +3 -3
  71. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  72. package/packages/omo-codex/plugin/components/rules/package.json +1 -1
  73. package/packages/omo-codex/plugin/components/rules/src/post-compact-budget.ts +3 -3
  74. package/packages/omo-codex/plugin/components/rules/test/post-compact-budget.test.ts +4 -4
  75. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  76. package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
  77. package/packages/omo-codex/plugin/components/telemetry/dist/cli.js +30 -15
  78. package/packages/omo-codex/plugin/components/telemetry/dist/posthog.js +30 -15
  79. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  80. package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
  81. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  82. package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
  83. package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +2 -2
  84. package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
  85. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-commands.js +5 -1
  86. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-output.d.ts +2 -1
  87. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-output.js +11 -1
  88. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.js +22 -10
  89. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +4 -4
  90. package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
  91. package/packages/omo-codex/plugin/components/ulw-loop/src/cli-commands.ts +5 -1
  92. package/packages/omo-codex/plugin/components/ulw-loop/src/cli-output.ts +13 -1
  93. package/packages/omo-codex/plugin/components/ulw-loop/src/cli.ts +3 -5
  94. package/packages/omo-codex/plugin/components/ulw-loop/test/cli-entrypoint.test.ts +26 -2
  95. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  96. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  97. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  98. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-codegraph-init-guidance.json +1 -1
  99. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  100. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  101. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  102. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  103. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  104. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  105. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  106. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  107. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  108. package/packages/omo-codex/plugin/hooks/session-start-checking-codegraph-bootstrap.json +1 -1
  109. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  110. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  111. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
  112. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  113. package/packages/omo-codex/plugin/hooks/subagent-stop-checking-ulw-execute-continuation.json +1 -1
  114. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  115. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  116. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  117. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  118. package/packages/omo-codex/plugin/model-catalog.json +3 -3
  119. package/packages/omo-codex/plugin/package-lock.json +13 -13
  120. package/packages/omo-codex/plugin/package.json +1 -1
  121. package/packages/omo-codex/plugin/scripts/migrate-codex-config/catalog.mjs +3 -3
  122. package/packages/omo-codex/plugin/skills/debugging/SKILL.md +2 -0
  123. package/packages/omo-codex/plugin/skills/debugging/references/methodology/00-setup.md +12 -0
  124. package/packages/omo-codex/plugin/skills/debugging/references/methodology/02-investigate.md +21 -0
  125. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/go.md +15 -1
  126. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/native-binary.md +38 -0
  127. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/node.md +25 -0
  128. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/python.md +13 -0
  129. package/packages/omo-codex/plugin/skills/debugging/references/runtimes/rust.md +41 -0
  130. package/packages/omo-codex/plugin/skills/debugging/references/scripts/dap.mjs +267 -0
  131. package/packages/omo-codex/plugin/skills/debugging/references/scripts/fixture-adapter.mjs +59 -0
  132. package/packages/omo-codex/plugin/skills/debugging/references/tools/dap.md +103 -0
  133. package/packages/omo-codex/plugin/skills/debugging/references/tools/frida.md +193 -0
  134. package/packages/omo-codex/plugin/test/aggregate-model-catalog.test.mjs +1 -1
  135. package/packages/omo-codex/plugin/test/auto-update.test.mjs +2 -2
  136. package/packages/omo-codex/plugin/test/migrate-codex-config.test.mjs +8 -8
  137. package/packages/omo-codex/scripts/install-config-reasoning.test.mjs +2 -2
  138. package/packages/omo-codex/scripts/install-dist/install-local.mjs +38 -23
  139. package/packages/shared-skills/skills/debugging/SKILL.md +2 -0
  140. package/packages/shared-skills/skills/debugging/references/methodology/00-setup.md +12 -0
  141. package/packages/shared-skills/skills/debugging/references/methodology/02-investigate.md +21 -0
  142. package/packages/shared-skills/skills/debugging/references/runtimes/go.md +15 -1
  143. package/packages/shared-skills/skills/debugging/references/runtimes/native-binary.md +38 -0
  144. package/packages/shared-skills/skills/debugging/references/runtimes/node.md +25 -0
  145. package/packages/shared-skills/skills/debugging/references/runtimes/python.md +13 -0
  146. package/packages/shared-skills/skills/debugging/references/runtimes/rust.md +41 -0
  147. package/packages/shared-skills/skills/debugging/references/scripts/dap.mjs +267 -0
  148. package/packages/shared-skills/skills/debugging/references/scripts/dap.test.ts +86 -0
  149. package/packages/shared-skills/skills/debugging/references/scripts/fixture-adapter.mjs +59 -0
  150. package/packages/shared-skills/skills/debugging/references/tools/dap.md +103 -0
  151. package/packages/shared-skills/skills/debugging/references/tools/frida.md +193 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omo",
3
- "version": "5.0.0-beta.21",
3
+ "version": "5.0.0-beta.23",
4
4
  "description": "One Codex plugin namespace for Yeongyu's local Codex components.",
5
5
  "author": {
6
6
  "name": "Yeongyu Kim",
@@ -3088,14 +3088,14 @@ import { join as join16 } from "node:path";
3088
3088
  var FALLBACK_CODEX_MODEL_CATALOG = {
3089
3089
  current: {
3090
3090
  model: "gpt-5.6-sol",
3091
- modelContextWindow: 372000,
3091
+ modelContextWindow: 650000,
3092
3092
  modelReasoningEffort: "high",
3093
3093
  planModeReasoningEffort: "xhigh"
3094
3094
  },
3095
3095
  managedProfiles: [
3096
3096
  {
3097
3097
  model: "gpt-5.5",
3098
- modelContextWindow: 400000,
3098
+ modelContextWindow: 650000,
3099
3099
  modelReasoningEffort: "high",
3100
3100
  planModeReasoningEffort: "xhigh"
3101
3101
  },
@@ -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.21) Checking Bootstrap Provisioning"
11
+ "statusMessage": "(OmO 5.0.0-beta.23) 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.21",
3
+ "version": "5.0.0-beta.23",
4
4
  "description": "Codex SessionStart bootstrap component that provisions LazyCodex runtime dependencies from a detached worker.",
5
5
  "type": "module",
6
6
  "private": true,
@@ -5882,9 +5882,25 @@ var OmoTelemetrySettingsSchema = OmoTelemetrySettingsLayerSchema.extend({
5882
5882
  enabled: boolean2().default(true)
5883
5883
  }).strict();
5884
5884
 
5885
+ // ../../omo-config-core/src/schema/format-on-mutation.ts
5886
+ var mode = _enum(["off", "best-effort", "required"]);
5887
+ var languages = record(string2(), boolean2()).optional();
5888
+ var OmoFormatOnMutationLayerSchema = object({
5889
+ mode: mode.optional(),
5890
+ languages,
5891
+ maxFileBytes: number2().int().positive().optional(),
5892
+ timeoutMs: number2().int().positive().optional()
5893
+ }).strict();
5894
+ var OmoFormatOnMutationSchema = OmoFormatOnMutationLayerSchema.extend({
5895
+ mode: mode.default("best-effort"),
5896
+ maxFileBytes: number2().int().positive().default(1048576),
5897
+ timeoutMs: number2().int().positive().default(3000)
5898
+ }).strict();
5899
+
5885
5900
  // ../../omo-config-core/src/schema/config.ts
5886
5901
  var OmoOpenCodeHarnessConfigSchema = record(string2(), unknown());
5887
5902
  var OmoTypedHarnessConfigSchema = object({
5903
+ formatOnMutation: OmoFormatOnMutationLayerSchema.optional(),
5888
5904
  categories: OmoCategoriesConfigSchema.optional(),
5889
5905
  agents: OmoAgentsConfigSchema.optional(),
5890
5906
  codegraph: OmoCodegraphSettingsLayerSchema.optional(),
@@ -5896,6 +5912,7 @@ var OmoTypedHarnessConfigSchema = object({
5896
5912
  telemetry: OmoTelemetrySettingsLayerSchema.optional()
5897
5913
  }).strict();
5898
5914
  var OmoConfigProfileSchema = object({
5915
+ formatOnMutation: OmoFormatOnMutationLayerSchema.optional(),
5899
5916
  categories: OmoCategoriesConfigSchema.optional(),
5900
5917
  agents: OmoAgentsConfigSchema.optional(),
5901
5918
  codegraph: OmoCodegraphSettingsLayerSchema.optional(),
@@ -5910,6 +5927,7 @@ var OmoConfigProfileSchema = object({
5910
5927
  "[codex]": OmoTypedHarnessConfigSchema.optional()
5911
5928
  }).strict();
5912
5929
  var OmoConfigSchema = object({
5930
+ formatOnMutation: OmoFormatOnMutationSchema.optional(),
5913
5931
  $schema: string2().optional(),
5914
5932
  categories: OmoCategoriesConfigSchema.optional(),
5915
5933
  agents: OmoAgentsConfigSchema.optional(),
@@ -5928,6 +5946,7 @@ var OmoConfigSchema = object({
5928
5946
  legacy_migrations: record(string2(), unknown()).optional()
5929
5947
  }).strict();
5930
5948
  var OmoConfigLayerSchema = object({
5949
+ formatOnMutation: OmoFormatOnMutationLayerSchema.optional(),
5931
5950
  $schema: string2().optional(),
5932
5951
  categories: OmoCategoriesConfigSchema.optional(),
5933
5952
  agents: OmoAgentsConfigSchema.optional(),
@@ -9588,7 +9607,7 @@ function defaultPluginRoot() {
9588
9607
  }
9589
9608
 
9590
9609
  // components/codegraph/src/session-start-cooldown.ts
9591
- import { mkdirSync as mkdirSync4, readFileSync as readFileSync6, rmSync as rmSync2 } from "node:fs";
9610
+ import { mkdirSync as mkdirSync4, readFileSync as readFileSync6, rmSync as rmSync3 } from "node:fs";
9592
9611
 
9593
9612
  // ../../utils/src/atomic-write.ts
9594
9613
  import {
@@ -9596,9 +9615,12 @@ import {
9596
9615
  fsyncSync,
9597
9616
  openSync,
9598
9617
  renameSync as renameSync2,
9618
+ rmSync as rmSync2,
9599
9619
  unlinkSync as unlinkSync2,
9600
9620
  writeFileSync as writeFileSync4
9601
9621
  } from "node:fs";
9622
+ import { randomUUID as randomUUID2 } from "node:crypto";
9623
+ import { dirname as dirname8 } from "node:path";
9602
9624
  var TOLERATED_FSYNC_CODES = new Set([
9603
9625
  "EPERM",
9604
9626
  "EACCES",
@@ -9620,29 +9642,41 @@ function tolerantFsyncSync(fileDescriptor, fsyncImpl) {
9620
9642
  }
9621
9643
  }
9622
9644
  function writeFileAtomically(filePath, content, options = {}) {
9623
- const tempPath = `${filePath}.tmp`;
9624
- writeFileSync4(tempPath, content, "utf-8");
9625
- const tempFileDescriptor = openSync(tempPath, "r+");
9626
- try {
9627
- tolerantFsyncSync(tempFileDescriptor, options.fsyncSync ?? fsyncSync);
9628
- } finally {
9629
- closeSync(tempFileDescriptor);
9630
- }
9645
+ const platform = options.platform ?? process.platform;
9646
+ const fsyncImpl = options.fsyncSync ?? fsyncSync;
9647
+ const tempPath = `${filePath}.${process.pid}.${randomUUID2()}.tmp`;
9631
9648
  try {
9632
- renameSync2(tempPath, filePath);
9633
- } catch (error) {
9634
- const isPermissionError = error instanceof Error && (error.message.includes("EPERM") || error.message.includes("EACCES"));
9635
- if ((options.platform ?? process.platform) === "win32" && isPermissionError) {
9649
+ writeFileSync4(tempPath, content, "utf-8");
9650
+ const tempFileDescriptor = openSync(tempPath, "r+");
9651
+ try {
9652
+ tolerantFsyncSync(tempFileDescriptor, fsyncImpl);
9653
+ } finally {
9654
+ closeSync(tempFileDescriptor);
9655
+ }
9656
+ try {
9657
+ renameSync2(tempPath, filePath);
9658
+ } catch (error) {
9659
+ const isPermissionError = error instanceof Error && (error.message.includes("EPERM") || error.message.includes("EACCES"));
9660
+ if (platform !== "win32" || !isPermissionError)
9661
+ throw error;
9636
9662
  unlinkSync2(filePath);
9637
9663
  renameSync2(tempPath, filePath);
9664
+ }
9665
+ if (platform === "win32")
9638
9666
  return;
9667
+ const directoryFileDescriptor = openSync(dirname8(filePath), "r");
9668
+ try {
9669
+ tolerantFsyncSync(directoryFileDescriptor, fsyncImpl);
9670
+ } finally {
9671
+ closeSync(directoryFileDescriptor);
9639
9672
  }
9640
- throw error;
9673
+ } finally {
9674
+ rmSync2(tempPath, { force: true });
9641
9675
  }
9642
9676
  }
9643
9677
 
9644
9678
  // components/codegraph/src/session-start-paths.ts
9645
- import { basename as basename3, dirname as dirname8, join as join14 } from "node:path";
9679
+ import { basename as basename3, dirname as dirname9, join as join14 } from "node:path";
9646
9680
  function resolveSessionStartStatePaths(homeDir, projectRoot) {
9647
9681
  const canonicalProjectRoot = canonicalizeCodegraphPath(projectRoot);
9648
9682
  const workspacePaths = resolveCodegraphWorkspacePaths(canonicalProjectRoot, { homeDir });
@@ -9657,7 +9691,7 @@ function resolveSessionStartStatePaths(homeDir, projectRoot) {
9657
9691
  };
9658
9692
  }
9659
9693
  function stateParent(path) {
9660
- return dirname8(path);
9694
+ return dirname9(path);
9661
9695
  }
9662
9696
 
9663
9697
  // components/codegraph/src/session-start-cooldown.ts
@@ -9693,7 +9727,7 @@ function recordSessionStartFailure(options) {
9693
9727
  }
9694
9728
  function clearSessionStartCooldown(options) {
9695
9729
  const path = resolveSessionStartStatePaths(options.homeDir, options.projectRoot).cooldownPath;
9696
- rmSync2(path, { force: true });
9730
+ rmSync3(path, { force: true });
9697
9731
  }
9698
9732
  function cooldownDuration(baseCooldownMs, failureCount, maxCooldownMs) {
9699
9733
  let duration3 = Math.min(baseCooldownMs, maxCooldownMs);
@@ -9777,8 +9811,8 @@ function writeSessionStartNotice(stdout, notice) {
9777
9811
  }
9778
9812
 
9779
9813
  // components/codegraph/src/session-start-lock.ts
9780
- import { randomUUID as randomUUID2 } from "node:crypto";
9781
- import { mkdirSync as mkdirSync5, readFileSync as readFileSync7, rmSync as rmSync3, statSync as statSync3, writeFileSync as writeFileSync5 } from "node:fs";
9814
+ import { randomUUID as randomUUID3 } from "node:crypto";
9815
+ import { mkdirSync as mkdirSync5, readFileSync as readFileSync7, rmSync as rmSync4, statSync as statSync3, writeFileSync as writeFileSync5 } from "node:fs";
9782
9816
  function acquireSessionStartLock(options) {
9783
9817
  const paths = resolveSessionStartStatePaths(options.homeDir, options.projectRoot);
9784
9818
  const lockPath = paths.lockPath;
@@ -9807,7 +9841,7 @@ function releaseSessionStartLock(lock) {
9807
9841
  if (snapshot.kind !== "present" || snapshot.token !== lock.token)
9808
9842
  return false;
9809
9843
  try {
9810
- rmSync3(lock.path, { force: true });
9844
+ rmSync4(lock.path, { force: true });
9811
9845
  return true;
9812
9846
  } catch (error) {
9813
9847
  if (error instanceof Error)
@@ -9832,7 +9866,7 @@ function reclaimStaleLock(lockPath, staleSnapshot, options) {
9832
9866
  const changed = current.raw !== staleSnapshot.raw || current.mtimeMs !== staleSnapshot.mtimeMs;
9833
9867
  if (changed || options.nowMs - current.mtimeMs < options.staleMs)
9834
9868
  return { kind: "locked" };
9835
- rmSync3(lockPath, { force: true });
9869
+ rmSync4(lockPath, { force: true });
9836
9870
  }
9837
9871
  const acquired = tryCreateLock(lockPath, options.projectRoot);
9838
9872
  return acquired.kind === "acquired" ? { ...acquired, recoveredStale: true } : acquired;
@@ -9841,11 +9875,11 @@ function reclaimStaleLock(lockPath, staleSnapshot, options) {
9841
9875
  return { kind: "inconclusive", reason: error.message };
9842
9876
  throw error;
9843
9877
  } finally {
9844
- rmSync3(reclaimPath, { force: true });
9878
+ rmSync4(reclaimPath, { force: true });
9845
9879
  }
9846
9880
  }
9847
9881
  function tryCreateLock(lockPath, projectRoot) {
9848
- const token = randomUUID2();
9882
+ const token = randomUUID3();
9849
9883
  try {
9850
9884
  writeFileSync5(lockPath, `${JSON.stringify({ projectRoot, token })}
9851
9885
  `, {
@@ -9864,7 +9898,7 @@ function tryCreateLock(lockPath, projectRoot) {
9864
9898
  }
9865
9899
  function tryCreateMarker(path) {
9866
9900
  try {
9867
- writeFileSync5(path, `${randomUUID2()}
9901
+ writeFileSync5(path, `${randomUUID3()}
9868
9902
  `, { encoding: "utf8", flag: "wx", mode: 384 });
9869
9903
  return { kind: "acquired" };
9870
9904
  } catch (error) {
@@ -9902,17 +9936,17 @@ function errorCode2(error) {
9902
9936
 
9903
9937
  // components/codegraph/src/session-start-outcome.ts
9904
9938
  import { appendFileSync as appendFileSync2, mkdirSync as mkdirSync6 } from "node:fs";
9905
- import { dirname as dirname9, join as join15 } from "node:path";
9939
+ import { dirname as dirname10, join as join15 } from "node:path";
9906
9940
  function appendSessionStartOutcome(homeDir, outcome, nowMs = Date.now()) {
9907
9941
  const path = join15(codegraphDataRoot(homeDir), "session-start.jsonl");
9908
- mkdirSync6(dirname9(path), { recursive: true });
9942
+ mkdirSync6(dirname10(path), { recursive: true });
9909
9943
  appendFileSync2(path, `${JSON.stringify({ ...outcome, timestamp: new Date(nowMs).toISOString() })}
9910
9944
  `);
9911
9945
  }
9912
9946
 
9913
9947
  // components/codegraph/src/session-start-project.ts
9914
9948
  import { realpathSync as realpathSync7, statSync as statSync4 } from "node:fs";
9915
- import { dirname as dirname10, join as join16 } from "node:path";
9949
+ import { dirname as dirname11, join as join16 } from "node:path";
9916
9950
  function probeCodegraphProject(projectRoot, options = {}) {
9917
9951
  const resolved = resolveProjectRoot(projectRoot);
9918
9952
  if (resolved.kind === "inconclusive")
@@ -9944,14 +9978,14 @@ function probeResolvedExactProject(projectRoot, probeDatabase) {
9944
9978
  return { kind: "uninitialized" };
9945
9979
  }
9946
9980
  function probeResolvedAncestors(projectRoot, probeDatabase) {
9947
- let ancestorRoot = dirname10(projectRoot);
9981
+ let ancestorRoot = dirname11(projectRoot);
9948
9982
  while (ancestorRoot !== projectRoot) {
9949
9983
  const database = probeDatabase(ancestorRoot);
9950
9984
  if (database.kind === "present")
9951
9985
  return { ancestorRoot, kind: "nested-root" };
9952
9986
  if (database.kind === "inconclusive")
9953
9987
  return database;
9954
- const parent = dirname10(ancestorRoot);
9988
+ const parent = dirname11(ancestorRoot);
9955
9989
  if (parent === ancestorRoot)
9956
9990
  break;
9957
9991
  ancestorRoot = parent;
@@ -10113,7 +10147,7 @@ function parseNodeMajor(version2) {
10113
10147
  }
10114
10148
 
10115
10149
  // ../../utils/src/codegraph/provision.ts
10116
- import { createHash as createHash2, randomUUID as randomUUID3 } from "node:crypto";
10150
+ import { createHash as createHash2, randomUUID as randomUUID4 } from "node:crypto";
10117
10151
  import { execFile as execFile2 } from "node:child_process";
10118
10152
  import { chmod, mkdir, readdir, readFile, rename, rm, rmdir, stat, writeFile } from "node:fs/promises";
10119
10153
  import { existsSync as existsSync9 } from "node:fs";
@@ -10233,7 +10267,7 @@ async function installExtractedBundle(extractDir, installDir, executableName) {
10233
10267
  }
10234
10268
  async function installAsset(layout) {
10235
10269
  const { asset, downloader, installDir, version: version2 } = layout;
10236
- const stagingDir = join18(installDir, ".staging", randomUUID3());
10270
+ const stagingDir = join18(installDir, ".staging", randomUUID4());
10237
10271
  const archivePath = join18(stagingDir, basename4(asset.url));
10238
10272
  const extractDir = join18(stagingDir, "extract");
10239
10273
  try {
@@ -10296,7 +10330,7 @@ async function ensureCodegraphProvisioned(options) {
10296
10330
  import { existsSync as existsSync10 } from "node:fs";
10297
10331
  import { homedir as homedir10 } from "node:os";
10298
10332
  import { spawnSync } from "node:child_process";
10299
- import { basename as basename5, dirname as dirname11, join as join20 } from "node:path";
10333
+ import { basename as basename5, dirname as dirname12, join as join20 } from "node:path";
10300
10334
  import { createRequire } from "node:module";
10301
10335
 
10302
10336
  // ../../utils/src/runtime/which.ts
@@ -10449,7 +10483,7 @@ function defaultProvisionedBin(homeDir, fileExists) {
10449
10483
  function resolveBundledShim(requireResolve, fileExists) {
10450
10484
  try {
10451
10485
  const packageJson = requireResolve(`${CODEGRAPH_PACKAGE}/package.json`);
10452
- const packageRoot = dirname11(packageJson);
10486
+ const packageRoot = dirname12(packageJson);
10453
10487
  const candidates = [join20(packageRoot, "bin", "codegraph.js"), join20(packageRoot, "npm-shim.js")];
10454
10488
  return candidates.find((candidate) => fileExists(candidate)) ?? null;
10455
10489
  } catch (error) {
@@ -11759,8 +11793,8 @@ async function runBridgedCodegraphProcess(command, args, options) {
11759
11793
  destroyChildPipes();
11760
11794
  terminateCodegraphChild(child);
11761
11795
  });
11762
- const clientForwardingDone = forwardClientToCodegraph(options.input, childInput, pendingResponses, (mode) => {
11763
- defaultResponseMode = mode;
11796
+ const clientForwardingDone = forwardClientToCodegraph(options.input, childInput, pendingResponses, (mode2) => {
11797
+ defaultResponseMode = mode2;
11764
11798
  }, () => parentWatchdogFired);
11765
11799
  const responseForwardingDone = forwardCodegraphToClient(childOutput, options.output, pendingResponses, () => defaultResponseMode, () => parentWatchdogFired);
11766
11800
  const bridgeDone = Promise.all([clientForwardingDone, responseForwardingDone]);
@@ -6148,9 +6148,25 @@ var OmoTelemetrySettingsSchema = OmoTelemetrySettingsLayerSchema.extend({
6148
6148
  enabled: boolean2().default(true)
6149
6149
  }).strict();
6150
6150
 
6151
+ // ../../../../omo-config-core/src/schema/format-on-mutation.ts
6152
+ var mode = _enum(["off", "best-effort", "required"]);
6153
+ var languages = record(string2(), boolean2()).optional();
6154
+ var OmoFormatOnMutationLayerSchema = object({
6155
+ mode: mode.optional(),
6156
+ languages,
6157
+ maxFileBytes: number2().int().positive().optional(),
6158
+ timeoutMs: number2().int().positive().optional()
6159
+ }).strict();
6160
+ var OmoFormatOnMutationSchema = OmoFormatOnMutationLayerSchema.extend({
6161
+ mode: mode.default("best-effort"),
6162
+ maxFileBytes: number2().int().positive().default(1048576),
6163
+ timeoutMs: number2().int().positive().default(3000)
6164
+ }).strict();
6165
+
6151
6166
  // ../../../../omo-config-core/src/schema/config.ts
6152
6167
  var OmoOpenCodeHarnessConfigSchema = record(string2(), unknown());
6153
6168
  var OmoTypedHarnessConfigSchema = object({
6169
+ formatOnMutation: OmoFormatOnMutationLayerSchema.optional(),
6154
6170
  categories: OmoCategoriesConfigSchema.optional(),
6155
6171
  agents: OmoAgentsConfigSchema.optional(),
6156
6172
  codegraph: OmoCodegraphSettingsLayerSchema.optional(),
@@ -6162,6 +6178,7 @@ var OmoTypedHarnessConfigSchema = object({
6162
6178
  telemetry: OmoTelemetrySettingsLayerSchema.optional()
6163
6179
  }).strict();
6164
6180
  var OmoConfigProfileSchema = object({
6181
+ formatOnMutation: OmoFormatOnMutationLayerSchema.optional(),
6165
6182
  categories: OmoCategoriesConfigSchema.optional(),
6166
6183
  agents: OmoAgentsConfigSchema.optional(),
6167
6184
  codegraph: OmoCodegraphSettingsLayerSchema.optional(),
@@ -6176,6 +6193,7 @@ var OmoConfigProfileSchema = object({
6176
6193
  "[codex]": OmoTypedHarnessConfigSchema.optional()
6177
6194
  }).strict();
6178
6195
  var OmoConfigSchema = object({
6196
+ formatOnMutation: OmoFormatOnMutationSchema.optional(),
6179
6197
  $schema: string2().optional(),
6180
6198
  categories: OmoCategoriesConfigSchema.optional(),
6181
6199
  agents: OmoAgentsConfigSchema.optional(),
@@ -6194,6 +6212,7 @@ var OmoConfigSchema = object({
6194
6212
  legacy_migrations: record(string2(), unknown()).optional()
6195
6213
  }).strict();
6196
6214
  var OmoConfigLayerSchema = object({
6215
+ formatOnMutation: OmoFormatOnMutationLayerSchema.optional(),
6197
6216
  $schema: string2().optional(),
6198
6217
  categories: OmoCategoriesConfigSchema.optional(),
6199
6218
  agents: OmoAgentsConfigSchema.optional(),
@@ -9458,8 +9477,8 @@ async function runBridgedCodegraphProcess(command, args, options) {
9458
9477
  destroyChildPipes();
9459
9478
  terminateCodegraphChild(child);
9460
9479
  });
9461
- const clientForwardingDone = forwardClientToCodegraph(options.input, childInput, pendingResponses, (mode) => {
9462
- defaultResponseMode = mode;
9480
+ const clientForwardingDone = forwardClientToCodegraph(options.input, childInput, pendingResponses, (mode2) => {
9481
+ defaultResponseMode = mode2;
9463
9482
  }, () => parentWatchdogFired);
9464
9483
  const responseForwardingDone = forwardCodegraphToClient(childOutput, options.output, pendingResponses, () => defaultResponseMode, () => parentWatchdogFired);
9465
9484
  const bridgeDone = Promise.all([clientForwardingDone, responseForwardingDone]);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sisyphuslabs/codex-codegraph",
3
- "version": "5.0.0-beta.21",
3
+ "version": "5.0.0-beta.23",
4
4
  "description": "Codex plugin MCP wrapper for CodeGraph.",
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.21) Checking Comments"
11
+ "statusMessage": "(OmO 5.0.0-beta.23) 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.21",
3
+ "version": "5.0.0-beta.23",
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.21) Recommending Git Bash MCP"
11
+ "statusMessage": "(OmO 5.0.0-beta.23) 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.21) Resetting Git Bash MCP Reminder"
23
+ "statusMessage": "(OmO 5.0.0-beta.23) 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.21",
3
+ "version": "5.0.0-beta.23",
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.21) Verifying LazyCodex Executor Evidence"
11
+ "statusMessage": "(OmO 5.0.0-beta.23) 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.21",
3
+ "version": "5.0.0-beta.23",
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.21",
4
- "inputDigest": "sha256:e4f12ba35e5b120e126db0d9f96819c4244d5296a9346dd18021680bead4af60",
3
+ "version": "5.0.0-beta.23",
4
+ "inputDigest": "sha256:6ca6ad100ccdd3adbac2d93a8fe3fe5e774cd0cf0d51bef5b12fe2b311c3909d",
5
5
  "outputs": [
6
6
  {
7
7
  "path": "cli.d.ts",
@@ -9,7 +9,7 @@
9
9
  },
10
10
  {
11
11
  "path": "cli.js",
12
- "sha256": "3f675ea851c53c89962d593cd1c5f91779ef0e6583e56699e00d24c03994dac2"
12
+ "sha256": "5e3645a0299f523876c758e645e70f7a122a46da6ec7d3994473ec19f9048430"
13
13
  },
14
14
  {
15
15
  "path": "codex-hook-cli.d.ts",