oh-my-opencode 5.0.0-beta.10 → 5.0.0-beta.12

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 (73) hide show
  1. package/dist/cli/index.js +34 -86
  2. package/dist/cli-node/index.js +34 -86
  3. package/dist/index.js +80 -93
  4. package/dist/tools/delegate-task/builtin-categories.d.ts +1 -0
  5. package/dist/tools/delegate-task/builtin-category-definition.d.ts +1 -0
  6. package/dist/tools/delegate-task/tool-description.d.ts +3 -1
  7. package/dist/tui.js +19 -71
  8. package/package.json +14 -14
  9. package/packages/lsp-core/src/lsp/client-wrapper-outside-cwd.test.ts +78 -0
  10. package/packages/lsp-core/src/lsp/client-wrapper.test.ts +6 -6
  11. package/packages/lsp-core/src/lsp/client-wrapper.ts +5 -6
  12. package/packages/lsp-core/src/lsp/outside-context-workspace.ts +33 -0
  13. package/packages/lsp-core/src/lsp/workspace-markers.ts +1 -0
  14. package/packages/lsp-daemon/dist/cli.js +94 -59
  15. package/packages/lsp-daemon/dist/client.js +72 -37
  16. package/packages/lsp-daemon/dist/index.js +78 -43
  17. package/packages/lsp-tools-mcp/dist/cli.js +68 -33
  18. package/packages/lsp-tools-mcp/dist/mcp.js +68 -33
  19. package/packages/lsp-tools-mcp/dist/tools.js +68 -33
  20. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  21. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  22. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  23. package/packages/omo-codex/plugin/components/codegraph/dist/cli.js +9 -0
  24. package/packages/omo-codex/plugin/components/codegraph/dist/serve.js +9 -0
  25. package/packages/omo-codex/plugin/components/codegraph/package.json +1 -1
  26. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  27. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  28. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  29. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  30. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  31. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
  32. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +3 -3
  33. package/packages/omo-codex/plugin/components/lsp/dist/cli.js +83 -54
  34. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  35. package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
  36. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  37. package/packages/omo-codex/plugin/components/rules/package.json +1 -1
  38. package/packages/omo-codex/plugin/components/start-work-continuation/hooks/hooks.json +2 -2
  39. package/packages/omo-codex/plugin/components/start-work-continuation/package.json +1 -1
  40. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  41. package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
  42. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  43. package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
  44. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  45. package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
  46. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +4 -4
  47. package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
  48. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  49. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  50. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  51. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-codegraph-init-guidance.json +1 -1
  52. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  53. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  54. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  55. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  56. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  57. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  58. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  59. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  60. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  61. package/packages/omo-codex/plugin/hooks/session-start-checking-codegraph-bootstrap.json +1 -1
  62. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  63. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  64. package/packages/omo-codex/plugin/hooks/stop-checking-start-work-continuation.json +1 -1
  65. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  66. package/packages/omo-codex/plugin/hooks/subagent-stop-checking-start-work-continuation.json +1 -1
  67. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  68. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  69. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  70. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  71. package/packages/omo-codex/plugin/package-lock.json +13 -13
  72. package/packages/omo-codex/plugin/package.json +1 -1
  73. package/packages/omo-codex/scripts/install-dist/install-local.mjs +2 -2
@@ -1,6 +1,6 @@
1
1
  // ../lsp-core/src/lsp/client-wrapper.ts
2
- import { existsSync as existsSync9, realpathSync as realpathSync4, statSync as statSync3 } from "node:fs";
3
- import { basename as basename3, dirname as dirname6, join as join4, resolve as resolve7 } from "node:path";
2
+ import { existsSync as existsSync10, realpathSync as realpathSync5, statSync as statSync3 } from "node:fs";
3
+ import { basename as basename3, dirname as dirname7, join as join5, resolve as resolve7 } from "node:path";
4
4
 
5
5
  // ../lsp-core/src/request-context.ts
6
6
  import { AsyncLocalStorage } from "node:async_hooks";
@@ -3194,15 +3194,52 @@ async function disposeDefaultLspManager() {
3194
3194
  }
3195
3195
  }
3196
3196
 
3197
+ // ../lsp-core/src/lsp/outside-context-workspace.ts
3198
+ import { existsSync as existsSync6, realpathSync as realpathSync4 } from "node:fs";
3199
+ import { dirname as dirname5, join as join3 } from "node:path";
3200
+
3201
+ // ../lsp-core/src/lsp/workspace-markers.ts
3202
+ var WORKSPACE_MARKERS = [".git", "package.json", "pyproject.toml", "Cargo.toml", "go.mod", "pom.xml", "build.gradle"];
3203
+
3204
+ // ../lsp-core/src/lsp/outside-context-workspace.ts
3205
+ function findWorkspaceRootOutsideContext(directory) {
3206
+ const marked = nearestMarkedAncestor(directory);
3207
+ if (marked !== undefined)
3208
+ return marked;
3209
+ return realpathSync4(nearestExistingAncestor(directory));
3210
+ }
3211
+ function nearestMarkedAncestor(directory) {
3212
+ let current = directory;
3213
+ for (;; ) {
3214
+ if (existsSync6(current) && WORKSPACE_MARKERS.some((marker) => existsSync6(join3(current, marker)))) {
3215
+ return realpathSync4(current);
3216
+ }
3217
+ const parent = dirname5(current);
3218
+ if (parent === current)
3219
+ return;
3220
+ current = parent;
3221
+ }
3222
+ }
3223
+ function nearestExistingAncestor(directory) {
3224
+ let current = directory;
3225
+ while (!existsSync6(current)) {
3226
+ const parent = dirname5(current);
3227
+ if (parent === current)
3228
+ return current;
3229
+ current = parent;
3230
+ }
3231
+ return current;
3232
+ }
3233
+
3197
3234
  // ../lsp-core/src/lsp/server-install-state.ts
3198
- import { existsSync as existsSync6, mkdirSync, readFileSync as readFileSync3, renameSync as renameSync2, writeFileSync as writeFileSync2 } from "node:fs";
3199
- import { dirname as dirname5 } from "node:path";
3235
+ import { existsSync as existsSync7, mkdirSync, readFileSync as readFileSync3, renameSync as renameSync2, writeFileSync as writeFileSync2 } from "node:fs";
3236
+ import { dirname as dirname6 } from "node:path";
3200
3237
  function getInstallDecisionsPath() {
3201
3238
  return lspRequestContext().installDecisionsPath;
3202
3239
  }
3203
3240
  function loadInstallDecisions() {
3204
3241
  const path = getInstallDecisionsPath();
3205
- if (!existsSync6(path))
3242
+ if (!existsSync7(path))
3206
3243
  return {};
3207
3244
  try {
3208
3245
  const parsed = JSON.parse(readFileSync3(path, "utf8"));
@@ -3224,7 +3261,7 @@ function isInstallDecision(value) {
3224
3261
  }
3225
3262
  function writeInstallDecisions(decisions) {
3226
3263
  const path = getInstallDecisionsPath();
3227
- mkdirSync(dirname5(path), { recursive: true });
3264
+ mkdirSync(dirname6(path), { recursive: true });
3228
3265
  const tmpPath = `${path}.tmp`;
3229
3266
  writeFileSync2(tmpPath, `${JSON.stringify(decisions, null, 2)}
3230
3267
  `, "utf8");
@@ -3243,7 +3280,7 @@ function isRecord5(value) {
3243
3280
  }
3244
3281
 
3245
3282
  // ../lsp-core/src/lsp/config-loader.ts
3246
- import { existsSync as existsSync7, readFileSync as readFileSync4 } from "node:fs";
3283
+ import { existsSync as existsSync8, readFileSync as readFileSync4 } from "node:fs";
3247
3284
 
3248
3285
  // ../lsp-core/src/lsp/server-definitions.ts
3249
3286
  var LSP_INSTALL_HINTS = {
@@ -3400,7 +3437,7 @@ function getUserConfigPath() {
3400
3437
  return lspRequestContext().userConfigPath;
3401
3438
  }
3402
3439
  function loadJsonFile(path) {
3403
- if (!existsSync7(path))
3440
+ if (!existsSync8(path))
3404
3441
  return null;
3405
3442
  try {
3406
3443
  const parsed = JSON.parse(readFileSync4(path, "utf-8"));
@@ -3588,8 +3625,8 @@ function getDisabledServerIds() {
3588
3625
  }
3589
3626
 
3590
3627
  // ../lsp-core/src/lsp/server-installation.ts
3591
- import { existsSync as existsSync8 } from "node:fs";
3592
- import { delimiter as delimiter3, join as join3 } from "node:path";
3628
+ import { existsSync as existsSync9 } from "node:fs";
3629
+ import { delimiter as delimiter3, join as join4 } from "node:path";
3593
3630
  function isServerInstalled(command, _workingDirectory) {
3594
3631
  if (command.length === 0)
3595
3632
  return false;
@@ -3597,7 +3634,7 @@ function isServerInstalled(command, _workingDirectory) {
3597
3634
  if (!cmd)
3598
3635
  return false;
3599
3636
  if (cmd.includes("/") || cmd.includes("\\")) {
3600
- if (existsSync8(cmd))
3637
+ if (existsSync9(cmd))
3601
3638
  return true;
3602
3639
  }
3603
3640
  const isWindows = process.platform === "win32";
@@ -3618,7 +3655,7 @@ function isServerInstalled(command, _workingDirectory) {
3618
3655
  const paths = pathEnv.split(delimiter3);
3619
3656
  for (const p of paths) {
3620
3657
  for (const suffix of exts) {
3621
- if (existsSync8(join3(p, cmd + suffix))) {
3658
+ if (existsSync9(join4(p, cmd + suffix))) {
3622
3659
  return true;
3623
3660
  }
3624
3661
  }
@@ -3714,7 +3751,6 @@ function getAllServers() {
3714
3751
  }
3715
3752
 
3716
3753
  // ../lsp-core/src/lsp/client-wrapper.ts
3717
- var WORKSPACE_MARKERS = [".git", "package.json", "pyproject.toml", "Cargo.toml", "go.mod", "pom.xml", "build.gradle"];
3718
3754
  function isDirectoryPath(filePath) {
3719
3755
  try {
3720
3756
  return statSync3(filePath).isDirectory();
@@ -3727,21 +3763,23 @@ function findWorkspaceRoot(filePath) {
3727
3763
  const abs = resolveReadablePathInsideContext(filePath);
3728
3764
  let dir = abs;
3729
3765
  if (!isDirectoryPath(dir)) {
3730
- dir = dirname6(dir);
3766
+ dir = dirname7(dir);
3731
3767
  }
3768
+ if (!isPathInside(cwd, abs))
3769
+ return findWorkspaceRootOutsideContext(dir);
3732
3770
  const fallbackRoot = nearestExistingDirectoryInsideContext(dir, cwd) ?? cwd;
3733
3771
  while (isPathInside(cwd, dir)) {
3734
3772
  const canonicalDir = existingDirectoryInsideContext(dir, cwd);
3735
3773
  if (canonicalDir !== undefined) {
3736
3774
  for (const marker of WORKSPACE_MARKERS) {
3737
- if (existsSync9(join4(dir, marker))) {
3775
+ if (existsSync10(join5(dir, marker))) {
3738
3776
  return canonicalDir;
3739
3777
  }
3740
3778
  }
3741
3779
  }
3742
3780
  if (dir === cwd)
3743
3781
  break;
3744
- dir = dirname6(dir);
3782
+ dir = dirname7(dir);
3745
3783
  }
3746
3784
  return fallbackRoot;
3747
3785
  }
@@ -3753,10 +3791,7 @@ function resolveReadablePathInsideContext(filePath) {
3753
3791
  const rebased = rebaseThroughCanonicalAncestor(abs, cwd);
3754
3792
  if (rebased !== undefined)
3755
3793
  return rebased;
3756
- const canonical = canonicalizeExistingOrNearestAncestor(abs);
3757
- if (isPathInside(cwd, canonical))
3758
- return canonical;
3759
- throw new LspInvalidPathError(`LSP file path must be inside request cwd: ${filePath}`);
3794
+ return canonicalizeExistingOrNearestAncestor(abs);
3760
3795
  }
3761
3796
  function resolvePathInsideContext(filePath) {
3762
3797
  const cwd = contextCwd();
@@ -3771,12 +3806,12 @@ function rebaseThroughCanonicalAncestor(path, cwd) {
3771
3806
  let current = path;
3772
3807
  const suffix = [];
3773
3808
  while (true) {
3774
- if (existsSync9(current)) {
3775
- const canonical = realpathSync4(current);
3809
+ if (existsSync10(current)) {
3810
+ const canonical = realpathSync5(current);
3776
3811
  if (isPathInside(cwd, canonical))
3777
- return suffix.length === 0 ? canonical : join4(canonical, ...suffix);
3812
+ return suffix.length === 0 ? canonical : join5(canonical, ...suffix);
3778
3813
  }
3779
- const parent = dirname6(current);
3814
+ const parent = dirname7(current);
3780
3815
  if (parent === current)
3781
3816
  return;
3782
3817
  suffix.unshift(basename3(current));
@@ -3784,9 +3819,9 @@ function rebaseThroughCanonicalAncestor(path, cwd) {
3784
3819
  }
3785
3820
  }
3786
3821
  function existingDirectoryInsideContext(directory, cwd) {
3787
- if (!existsSync9(directory))
3822
+ if (!existsSync10(directory))
3788
3823
  return;
3789
- const canonical = realpathSync4(directory);
3824
+ const canonical = realpathSync5(directory);
3790
3825
  if (!statSync3(canonical).isDirectory())
3791
3826
  return;
3792
3827
  return isPathInside(cwd, canonical) ? canonical : undefined;
@@ -3799,7 +3834,7 @@ function nearestExistingDirectoryInsideContext(directory, cwd) {
3799
3834
  return canonical;
3800
3835
  if (current === cwd)
3801
3836
  return;
3802
- current = dirname6(current);
3837
+ current = dirname7(current);
3803
3838
  }
3804
3839
  return;
3805
3840
  }
@@ -3917,8 +3952,8 @@ async function withLspClient(filePath, fn, toolName, options = {}) {
3917
3952
  }
3918
3953
 
3919
3954
  // ../lsp-core/src/lsp/directory-diagnostics.ts
3920
- import { existsSync as existsSync10, lstatSync as lstatSync4, readdirSync as readdirSync3 } from "node:fs";
3921
- import { join as join5, resolve as resolve8 } from "node:path";
3955
+ import { existsSync as existsSync11, lstatSync as lstatSync4, readdirSync as readdirSync3 } from "node:fs";
3956
+ import { join as join6, resolve as resolve8 } from "node:path";
3922
3957
 
3923
3958
  // ../lsp-core/src/lsp/formatters.ts
3924
3959
  import { fileURLToPath as fileURLToPath2 } from "node:url";
@@ -4048,7 +4083,7 @@ function collectFilesWithExtension(dir, extension, maxFiles) {
4048
4083
  for (const entry of entries) {
4049
4084
  if (files.length >= maxFiles)
4050
4085
  return;
4051
- const fullPath = join5(currentDir, entry);
4086
+ const fullPath = join6(currentDir, entry);
4052
4087
  let stat;
4053
4088
  try {
4054
4089
  stat = lstatSync4(fullPath);
@@ -4074,7 +4109,7 @@ async function aggregateDiagnosticsForDirectory(directory, extension, severity,
4074
4109
  throw new LspInvalidPathError(`Extension must start with a dot (e.g., ".ts", not "${extension}"). Use ".${extension}" instead.`);
4075
4110
  }
4076
4111
  const absDir = resolve8(options.workspaceRoot ?? contextCwd(), directory);
4077
- if (!existsSync10(absDir)) {
4112
+ if (!existsSync11(absDir)) {
4078
4113
  throw new LspInvalidPathError(`Directory does not exist: ${absDir}`);
4079
4114
  }
4080
4115
  const serverResult = options.server === undefined ? findServerForExtension(extension) : { status: "found", server: options.server };
@@ -4161,7 +4196,7 @@ async function aggregateDiagnosticsForDirectory(directory, extension, severity,
4161
4196
 
4162
4197
  // ../lsp-core/src/lsp/infer-extension.ts
4163
4198
  import { lstatSync as lstatSync5, readdirSync as readdirSync4 } from "node:fs";
4164
- import { join as join6 } from "node:path";
4199
+ import { join as join7 } from "node:path";
4165
4200
  var SKIP_DIRECTORIES2 = new Set(["node_modules", ".git", "dist", "build", ".next", "out"]);
4166
4201
  var MAX_SCAN_ENTRIES = 500;
4167
4202
  function inferExtensionFromDirectory(directory) {
@@ -4179,7 +4214,7 @@ function inferExtensionFromDirectory(directory) {
4179
4214
  for (const entry of entries) {
4180
4215
  if (scanned >= MAX_SCAN_ENTRIES)
4181
4216
  return;
4182
- const fullPath = join6(dir, entry);
4217
+ const fullPath = join7(dir, entry);
4183
4218
  let stat;
4184
4219
  try {
4185
4220
  stat = lstatSync5(fullPath);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omo",
3
- "version": "5.0.0-beta.10",
3
+ "version": "5.0.0-beta.12",
4
4
  "description": "One Codex plugin namespace for Yeongyu's local Codex components.",
5
5
  "author": {
6
6
  "name": "Yeongyu Kim",
@@ -8,7 +8,7 @@
8
8
  "command": "node \"${PLUGIN_ROOT}/components/bootstrap/dist/cli.js\" hook session-start",
9
9
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\bootstrap.ps1\"",
10
10
  "timeout": 30,
11
- "statusMessage": "(OmO 5.0.0-beta.10) Checking Bootstrap Provisioning"
11
+ "statusMessage": "(OmO 5.0.0-beta.12) 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.10",
3
+ "version": "5.0.0-beta.12",
4
4
  "description": "Codex SessionStart bootstrap component that provisions LazyCodex runtime dependencies from a detached worker.",
5
5
  "type": "module",
6
6
  "private": true,
@@ -5593,6 +5593,9 @@ var OmoMemoryPeopleSchema = object({
5593
5593
  var OmoMemorySoulSchema = object({
5594
5594
  edit_notice: boolean2().default(true)
5595
5595
  }).strict();
5596
+ var OmoMemoryWriteNoticeSchema = object({
5597
+ enabled: boolean2().default(true)
5598
+ }).strict();
5596
5599
  var OmoMemoryReflectionTriggerLayerSchema = object({
5597
5600
  step_count: number2().int().nonnegative().optional(),
5598
5601
  on_compaction: boolean2().optional()
@@ -5636,6 +5639,9 @@ var OmoMemoryPeopleLayerSchema = object({
5636
5639
  var OmoMemorySoulLayerSchema = object({
5637
5640
  edit_notice: boolean2().optional()
5638
5641
  }).strict();
5642
+ var OmoMemoryWriteNoticeLayerSchema = object({
5643
+ enabled: boolean2().optional()
5644
+ }).strict();
5639
5645
  var OmoMemoryAgentOverridesSchema = object({
5640
5646
  enabled: boolean2().optional(),
5641
5647
  agent: string2().min(1).optional(),
@@ -5645,6 +5651,7 @@ var OmoMemoryAgentOverridesSchema = object({
5645
5651
  dream: OmoMemoryDreamLayerSchema.optional(),
5646
5652
  people: OmoMemoryPeopleLayerSchema.optional(),
5647
5653
  soul: OmoMemorySoulLayerSchema.optional(),
5654
+ write_notice: OmoMemoryWriteNoticeLayerSchema.optional(),
5648
5655
  sync: OmoMemorySyncLayerSchema.optional(),
5649
5656
  search: OmoMemorySearchLayerSchema.optional(),
5650
5657
  compile_warn_tokens: number2().int().positive().optional()
@@ -5673,6 +5680,7 @@ var OmoMemorySettingsSchema = object({
5673
5680
  }),
5674
5681
  people: OmoMemoryPeopleSchema.default({ enabled: true, max_entries: 40, max_entry_chars: 200 }),
5675
5682
  soul: OmoMemorySoulSchema.default({ edit_notice: true }),
5683
+ write_notice: OmoMemoryWriteNoticeSchema.default({ enabled: true }),
5676
5684
  sync: OmoMemorySyncSchema.default({ enabled: true }),
5677
5685
  search: OmoMemorySearchSchema.default({ enabled: true }),
5678
5686
  compile_warn_tokens: number2().int().positive().default(30000),
@@ -5688,6 +5696,7 @@ var OmoMemorySettingsLayerSchema = object({
5688
5696
  dream: OmoMemoryDreamLayerSchema.optional(),
5689
5697
  people: OmoMemoryPeopleLayerSchema.optional(),
5690
5698
  soul: OmoMemorySoulLayerSchema.optional(),
5699
+ write_notice: OmoMemoryWriteNoticeLayerSchema.optional(),
5691
5700
  sync: OmoMemorySyncLayerSchema.optional(),
5692
5701
  search: OmoMemorySearchLayerSchema.optional(),
5693
5702
  compile_warn_tokens: number2().int().positive().optional(),
@@ -5859,6 +5859,9 @@ var OmoMemoryPeopleSchema = object({
5859
5859
  var OmoMemorySoulSchema = object({
5860
5860
  edit_notice: boolean2().default(true)
5861
5861
  }).strict();
5862
+ var OmoMemoryWriteNoticeSchema = object({
5863
+ enabled: boolean2().default(true)
5864
+ }).strict();
5862
5865
  var OmoMemoryReflectionTriggerLayerSchema = object({
5863
5866
  step_count: number2().int().nonnegative().optional(),
5864
5867
  on_compaction: boolean2().optional()
@@ -5902,6 +5905,9 @@ var OmoMemoryPeopleLayerSchema = object({
5902
5905
  var OmoMemorySoulLayerSchema = object({
5903
5906
  edit_notice: boolean2().optional()
5904
5907
  }).strict();
5908
+ var OmoMemoryWriteNoticeLayerSchema = object({
5909
+ enabled: boolean2().optional()
5910
+ }).strict();
5905
5911
  var OmoMemoryAgentOverridesSchema = object({
5906
5912
  enabled: boolean2().optional(),
5907
5913
  agent: string2().min(1).optional(),
@@ -5911,6 +5917,7 @@ var OmoMemoryAgentOverridesSchema = object({
5911
5917
  dream: OmoMemoryDreamLayerSchema.optional(),
5912
5918
  people: OmoMemoryPeopleLayerSchema.optional(),
5913
5919
  soul: OmoMemorySoulLayerSchema.optional(),
5920
+ write_notice: OmoMemoryWriteNoticeLayerSchema.optional(),
5914
5921
  sync: OmoMemorySyncLayerSchema.optional(),
5915
5922
  search: OmoMemorySearchLayerSchema.optional(),
5916
5923
  compile_warn_tokens: number2().int().positive().optional()
@@ -5939,6 +5946,7 @@ var OmoMemorySettingsSchema = object({
5939
5946
  }),
5940
5947
  people: OmoMemoryPeopleSchema.default({ enabled: true, max_entries: 40, max_entry_chars: 200 }),
5941
5948
  soul: OmoMemorySoulSchema.default({ edit_notice: true }),
5949
+ write_notice: OmoMemoryWriteNoticeSchema.default({ enabled: true }),
5942
5950
  sync: OmoMemorySyncSchema.default({ enabled: true }),
5943
5951
  search: OmoMemorySearchSchema.default({ enabled: true }),
5944
5952
  compile_warn_tokens: number2().int().positive().default(30000),
@@ -5954,6 +5962,7 @@ var OmoMemorySettingsLayerSchema = object({
5954
5962
  dream: OmoMemoryDreamLayerSchema.optional(),
5955
5963
  people: OmoMemoryPeopleLayerSchema.optional(),
5956
5964
  soul: OmoMemorySoulLayerSchema.optional(),
5965
+ write_notice: OmoMemoryWriteNoticeLayerSchema.optional(),
5957
5966
  sync: OmoMemorySyncLayerSchema.optional(),
5958
5967
  search: OmoMemorySearchLayerSchema.optional(),
5959
5968
  compile_warn_tokens: number2().int().positive().optional(),
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sisyphuslabs/codex-codegraph",
3
- "version": "5.0.0-beta.10",
3
+ "version": "5.0.0-beta.12",
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.10) Checking Comments"
11
+ "statusMessage": "(OmO 5.0.0-beta.12) 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.10",
3
+ "version": "5.0.0-beta.12",
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.10) Recommending Git Bash MCP"
11
+ "statusMessage": "(OmO 5.0.0-beta.12) 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.10) Resetting Git Bash MCP Reminder"
23
+ "statusMessage": "(OmO 5.0.0-beta.12) 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.10",
3
+ "version": "5.0.0-beta.12",
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.10) Verifying LazyCodex Executor Evidence"
11
+ "statusMessage": "(OmO 5.0.0-beta.12) 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.10",
3
+ "version": "5.0.0-beta.12",
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.10",
4
- "inputDigest": "sha256:5d8af4d49d78ea8b6e75e04e2bd3f1803b997dfcf0808dd40e1c72a5b1281455",
3
+ "version": "5.0.0-beta.12",
4
+ "inputDigest": "sha256:c75353e569452b53e38c595b527f4593631b35f2e88ed43b7ebe7270512cb62f",
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": "8b31921f00d7333877fa0ba3b50e7318096656ad92249b285148c6fada11459d"
12
+ "sha256": "49e3aaf5a6c6154474618f4845453461f9ce917692c219c8e23323aeb9d3d3ec"
13
13
  },
14
14
  {
15
15
  "path": "codex-hook-cli.d.ts",