oh-my-opencode 5.0.0-beta.5 → 5.0.0-beta.7

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 (97) hide show
  1. package/README.md +12 -1
  2. package/dist/cli/index.js +341 -214
  3. package/dist/cli-node/index.js +341 -214
  4. package/dist/index.js +1217 -1112
  5. package/dist/skills/coding-agent-sessions/SKILL.md +3 -2
  6. package/dist/skills/coding-agent-sessions/references/all-platforms.md +1 -1
  7. package/dist/skills/coding-agent-sessions/references/senpi.md +4 -4
  8. package/dist/skills/coding-agent-sessions/scripts/agent_sessions/pi_family.py +1 -1
  9. package/dist/tui.js +97 -5
  10. package/package.json +15 -14
  11. package/packages/lsp-core/src/lsp/client-wrapper.test.ts +60 -7
  12. package/packages/lsp-core/src/lsp/client-wrapper.ts +69 -16
  13. package/packages/lsp-core/src/lsp/workspace-edit-adversarial.test.ts +20 -1
  14. package/packages/lsp-core/src/tools/diagnostics.ts +3 -3
  15. package/packages/lsp-core/src/tools/navigation.ts +4 -2
  16. package/packages/lsp-core/src/tools/rename.ts +4 -2
  17. package/packages/lsp-core/src/tools/symbols.ts +1 -1
  18. package/packages/lsp-daemon/dist/cli.js +83 -29
  19. package/packages/lsp-daemon/dist/client.js +76 -22
  20. package/packages/lsp-daemon/dist/index.js +81 -27
  21. package/packages/lsp-tools-mcp/dist/cli.js +76 -22
  22. package/packages/lsp-tools-mcp/dist/mcp.js +76 -22
  23. package/packages/lsp-tools-mcp/dist/tools.js +76 -22
  24. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  25. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  26. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  27. package/packages/omo-codex/plugin/components/codegraph/dist/cli.js +90 -4
  28. package/packages/omo-codex/plugin/components/codegraph/dist/serve.js +90 -4
  29. package/packages/omo-codex/plugin/components/codegraph/package.json +1 -1
  30. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  31. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  32. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  33. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  34. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  35. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
  36. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +3 -3
  37. package/packages/omo-codex/plugin/components/lsp/dist/cli.js +83 -29
  38. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  39. package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
  40. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  41. package/packages/omo-codex/plugin/components/rules/package.json +1 -1
  42. package/packages/omo-codex/plugin/components/start-work-continuation/hooks/hooks.json +2 -2
  43. package/packages/omo-codex/plugin/components/start-work-continuation/package.json +1 -1
  44. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  45. package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
  46. package/packages/omo-codex/plugin/components/telemetry/dist/cli.js +24 -12
  47. package/packages/omo-codex/plugin/components/telemetry/dist/posthog.js +24 -12
  48. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  49. package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
  50. package/packages/omo-codex/plugin/components/ultrawork/directive.md +6 -0
  51. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  52. package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
  53. package/packages/omo-codex/plugin/components/ultrawork/skills/ultrawork/SKILL.md +6 -0
  54. package/packages/omo-codex/plugin/components/ulw-loop/directive.md +6 -0
  55. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +4 -4
  56. package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
  57. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/SKILL.md +3 -2
  58. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/define-goal.md +106 -0
  59. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +1 -0
  60. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  61. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  62. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  63. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-codegraph-init-guidance.json +1 -1
  64. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  65. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  66. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  67. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  68. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  69. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  70. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  71. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  72. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  73. package/packages/omo-codex/plugin/hooks/session-start-checking-codegraph-bootstrap.json +1 -1
  74. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  75. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  76. package/packages/omo-codex/plugin/hooks/stop-checking-start-work-continuation.json +1 -1
  77. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  78. package/packages/omo-codex/plugin/hooks/subagent-stop-checking-start-work-continuation.json +1 -1
  79. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  80. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  81. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  82. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  83. package/packages/omo-codex/plugin/package-lock.json +13 -13
  84. package/packages/omo-codex/plugin/package.json +1 -1
  85. package/packages/omo-codex/plugin/skills/coding-agent-sessions/SKILL.md +3 -2
  86. package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/all-platforms.md +1 -1
  87. package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/senpi.md +4 -4
  88. package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/pi_family.py +1 -1
  89. package/packages/omo-codex/plugin/skills/ultrawork/SKILL.md +6 -0
  90. package/packages/omo-codex/plugin/skills/ulw-loop/SKILL.md +3 -2
  91. package/packages/omo-codex/plugin/skills/ulw-loop/references/define-goal.md +106 -0
  92. package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +1 -0
  93. package/packages/omo-codex/scripts/install-dist/install-local.mjs +39 -16
  94. package/packages/shared-skills/skills/coding-agent-sessions/SKILL.md +3 -2
  95. package/packages/shared-skills/skills/coding-agent-sessions/references/all-platforms.md +1 -1
  96. package/packages/shared-skills/skills/coding-agent-sessions/references/senpi.md +4 -4
  97. package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/pi_family.py +1 -1
@@ -1,6 +1,6 @@
1
1
  // ../lsp-core/src/lsp/client-wrapper.ts
2
- import { existsSync as existsSync9, statSync as statSync3 } from "node:fs";
3
- import { dirname as dirname6, join as join4, resolve as resolve7 } from "node:path";
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";
4
4
 
5
5
  // ../lsp-core/src/request-context.ts
6
6
  import { AsyncLocalStorage } from "node:async_hooks";
@@ -3723,32 +3723,86 @@ function isDirectoryPath(filePath) {
3723
3723
  }
3724
3724
  }
3725
3725
  function findWorkspaceRoot(filePath) {
3726
- const abs = resolvePathInsideContext(filePath);
3726
+ const cwd = contextCwd();
3727
+ const abs = resolveReadablePathInsideContext(filePath);
3727
3728
  let dir = abs;
3728
3729
  if (!isDirectoryPath(dir)) {
3729
3730
  dir = dirname6(dir);
3730
3731
  }
3731
- let prevDir = "";
3732
- while (dir !== prevDir) {
3733
- for (const marker of WORKSPACE_MARKERS) {
3734
- if (existsSync9(join4(dir, marker))) {
3735
- return dir;
3732
+ const fallbackRoot = nearestExistingDirectoryInsideContext(dir, cwd) ?? cwd;
3733
+ while (isPathInside(cwd, dir)) {
3734
+ const canonicalDir = existingDirectoryInsideContext(dir, cwd);
3735
+ if (canonicalDir !== undefined) {
3736
+ for (const marker of WORKSPACE_MARKERS) {
3737
+ if (existsSync9(join4(dir, marker))) {
3738
+ return canonicalDir;
3739
+ }
3736
3740
  }
3737
3741
  }
3738
- prevDir = dir;
3742
+ if (dir === cwd)
3743
+ break;
3739
3744
  dir = dirname6(dir);
3740
3745
  }
3741
- return dirname6(abs);
3746
+ return fallbackRoot;
3742
3747
  }
3743
- function resolvePathInsideContext(filePath) {
3748
+ function resolveReadablePathInsideContext(filePath) {
3744
3749
  const cwd = contextCwd();
3745
3750
  const abs = resolve7(cwd, filePath);
3751
+ if (isPathInside(cwd, abs))
3752
+ return abs;
3753
+ const rebased = rebaseThroughCanonicalAncestor(abs, cwd);
3754
+ if (rebased !== undefined)
3755
+ 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}`);
3760
+ }
3761
+ function resolvePathInsideContext(filePath) {
3762
+ const cwd = contextCwd();
3763
+ const abs = resolveReadablePathInsideContext(filePath);
3746
3764
  const canonical = canonicalizeExistingOrNearestAncestor(abs);
3747
3765
  if (!isPathInside(cwd, canonical)) {
3748
3766
  throw new LspInvalidPathError(`LSP file path must be inside request cwd: ${filePath}`);
3749
3767
  }
3750
3768
  return canonical;
3751
3769
  }
3770
+ function rebaseThroughCanonicalAncestor(path, cwd) {
3771
+ let current = path;
3772
+ const suffix = [];
3773
+ while (true) {
3774
+ if (existsSync9(current)) {
3775
+ const canonical = realpathSync4(current);
3776
+ if (isPathInside(cwd, canonical))
3777
+ return suffix.length === 0 ? canonical : join4(canonical, ...suffix);
3778
+ }
3779
+ const parent = dirname6(current);
3780
+ if (parent === current)
3781
+ return;
3782
+ suffix.unshift(basename3(current));
3783
+ current = parent;
3784
+ }
3785
+ }
3786
+ function existingDirectoryInsideContext(directory, cwd) {
3787
+ if (!existsSync9(directory))
3788
+ return;
3789
+ const canonical = realpathSync4(directory);
3790
+ if (!statSync3(canonical).isDirectory())
3791
+ return;
3792
+ return isPathInside(cwd, canonical) ? canonical : undefined;
3793
+ }
3794
+ function nearestExistingDirectoryInsideContext(directory, cwd) {
3795
+ let current = directory;
3796
+ while (isPathInside(cwd, current)) {
3797
+ const canonical = existingDirectoryInsideContext(current, cwd);
3798
+ if (canonical !== undefined)
3799
+ return canonical;
3800
+ if (current === cwd)
3801
+ return;
3802
+ current = dirname6(current);
3803
+ }
3804
+ return;
3805
+ }
3752
3806
  function formatServerLookupError(result) {
3753
3807
  if (result.status === "not_installed") {
3754
3808
  return formatNotInstalled(result);
@@ -3819,7 +3873,7 @@ function formatNotInstalled(result) {
3819
3873
  ].join(`
3820
3874
  `);
3821
3875
  }
3822
- var READ_ONLY_RETRY_TOOLS = new Set([
3876
+ var READ_ONLY_TOOLS = new Set([
3823
3877
  "diagnostics",
3824
3878
  "definition",
3825
3879
  "references",
@@ -3828,7 +3882,7 @@ var READ_ONLY_RETRY_TOOLS = new Set([
3828
3882
  "prepareRename"
3829
3883
  ]);
3830
3884
  async function withLspClient(filePath, fn, toolName, options = {}) {
3831
- const absPath = resolvePathInsideContext(filePath);
3885
+ const absPath = READ_ONLY_TOOLS.has(toolName) ? resolveReadablePathInsideContext(filePath) : resolvePathInsideContext(filePath);
3832
3886
  if (isDirectoryPath(absPath)) {
3833
3887
  throw new LspInvalidPathError("Directory paths are not supported by this LSP tool. " + "Use lsp.diagnostics with a directory path for directory diagnostics.");
3834
3888
  }
@@ -3843,9 +3897,9 @@ async function withLspClient(filePath, fn, toolName, options = {}) {
3843
3897
  const acquireAndCall = async (allowRetry) => {
3844
3898
  const client = await manager.getClient(root, server, options.signal);
3845
3899
  try {
3846
- return await fn(client, root);
3900
+ return await fn(client, root, absPath);
3847
3901
  } catch (err) {
3848
- if (allowRetry && READ_ONLY_RETRY_TOOLS.has(toolName) && isLspDeadConnectionError(err)) {
3902
+ if (allowRetry && READ_ONLY_TOOLS.has(toolName) && isLspDeadConnectionError(err)) {
3849
3903
  manager.invalidateClient(root, server.id, client);
3850
3904
  return acquireAndCall(false);
3851
3905
  }
@@ -4300,7 +4354,7 @@ async function executeLspDiagnostics(params, signal) {
4300
4354
  const filePath = requireString(params, "filePath");
4301
4355
  const severity = severityFilter(params);
4302
4356
  try {
4303
- const absPath = resolvePathInsideContext(filePath);
4357
+ const absPath = resolveReadablePathInsideContext(filePath);
4304
4358
  if (isDirectoryPath(absPath)) {
4305
4359
  const extension = inferExtensionFromDirectory(absPath);
4306
4360
  if (!extension) {
@@ -4329,7 +4383,7 @@ async function executeLspDiagnostics(params, signal) {
4329
4383
  };
4330
4384
  return text(output2.output, details2);
4331
4385
  }
4332
- const result = await withLspClient(filePath, async (client) => client.diagnostics(filePath, signal), "diagnostics", clientOptions(signal));
4386
+ const result = await withLspClient(filePath, async (client, _workspaceRoot, resolvedFilePath) => client.diagnostics(resolvedFilePath, signal), "diagnostics", clientOptions(signal));
4333
4387
  if (result.transientError) {
4334
4388
  const message = result.transientError.message;
4335
4389
  const details2 = {
@@ -4404,7 +4458,7 @@ async function executeLspGotoDefinition(params, signal) {
4404
4458
  const line = requireNumber(params, "line");
4405
4459
  const character = requireNumber(params, "character");
4406
4460
  try {
4407
- const result = await withLspClient(filePath, async (client) => client.definition(filePath, line, character, signal), "definition", clientOptions(signal));
4461
+ const result = await withLspClient(filePath, async (client, _workspaceRoot, resolvedFilePath) => client.definition(resolvedFilePath, line, character, signal), "definition", clientOptions(signal));
4408
4462
  const locations = !result ? [] : Array.isArray(result) ? result : [result];
4409
4463
  const details = { filePath, line, character, locations };
4410
4464
  if (locations.length === 0)
@@ -4429,7 +4483,7 @@ async function executeLspFindReferences(params, signal) {
4429
4483
  const character = requireNumber(params, "character");
4430
4484
  const includeDeclaration = optionalBoolean(params, "includeDeclaration") ?? true;
4431
4485
  try {
4432
- const result = await withLspClient(filePath, async (client) => client.references(filePath, line, character, includeDeclaration, signal), "references", clientOptions(signal));
4486
+ const result = await withLspClient(filePath, async (client, _workspaceRoot, resolvedFilePath) => client.references(resolvedFilePath, line, character, includeDeclaration, signal), "references", clientOptions(signal));
4433
4487
  const references = Array.isArray(result) ? result : [];
4434
4488
  const total = references.length;
4435
4489
  const truncated = total > DEFAULT_MAX_REFERENCES;
@@ -4471,7 +4525,7 @@ async function executeLspPrepareRename(params, signal) {
4471
4525
  const line = requireNumber(params, "line");
4472
4526
  const character = requireNumber(params, "character");
4473
4527
  try {
4474
- const result = await withLspClient(filePath, async (client) => client.prepareRename(filePath, line, character, signal), "prepareRename", clientOptions(signal));
4528
+ const result = await withLspClient(filePath, async (client, _workspaceRoot, resolvedFilePath) => client.prepareRename(resolvedFilePath, line, character, signal), "prepareRename", clientOptions(signal));
4475
4529
  const details = { filePath, line, character, result };
4476
4530
  return text(formatPrepareRenameResult(result), details);
4477
4531
  } catch (error) {
@@ -4492,7 +4546,7 @@ async function executeLspRename(params, signal) {
4492
4546
  const character = requireNumber(params, "character");
4493
4547
  const newName = requireString(params, "newName");
4494
4548
  try {
4495
- const result = await withLspClient(filePath, async (client) => client.rename(filePath, line, character, newName, signal), "rename", clientOptions(signal));
4549
+ const result = await withLspClient(filePath, async (client, _workspaceRoot, resolvedFilePath) => client.rename(resolvedFilePath, line, character, newName, signal), "rename", clientOptions(signal));
4496
4550
  const details = { filePath, line, character, newName, apply: result.apply, edit: result.edit };
4497
4551
  return text(formatApplyResult(result.apply), details, !result.apply.success);
4498
4552
  } catch (error) {
@@ -4572,7 +4626,7 @@ async function executeLspSymbols(params, signal) {
4572
4626
  const symbols2 = await withLspClient(filePath, async (client) => client.workspaceSymbols(query, signal), "workspaceSymbols", clientOptions(signal));
4573
4627
  return formatSymbolsResult(filePath, scope, symbols2, limit, query);
4574
4628
  }
4575
- const symbols = await withLspClient(filePath, async (client) => client.documentSymbols(filePath, signal), "documentSymbols", clientOptions(signal));
4629
+ const symbols = await withLspClient(filePath, async (client, _workspaceRoot, resolvedFilePath) => client.documentSymbols(resolvedFilePath, signal), "documentSymbols", clientOptions(signal));
4576
4630
  return formatSymbolsResult(filePath, scope, symbols, limit);
4577
4631
  } catch (error) {
4578
4632
  const query = optionalString(params, "query");
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omo",
3
- "version": "5.0.0-beta.5",
3
+ "version": "5.0.0-beta.7",
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.5) Checking Bootstrap Provisioning"
11
+ "statusMessage": "(OmO 5.0.0-beta.7) 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.5",
3
+ "version": "5.0.0-beta.7",
4
4
  "description": "Codex SessionStart bootstrap component that provisions LazyCodex runtime dependencies from a detached worker.",
5
5
  "type": "module",
6
6
  "private": true,
@@ -5551,11 +5551,12 @@ var OmoCodegraphSettingsSchema = OmoCodegraphSettingsLayerSchema.extend({
5551
5551
 
5552
5552
  // ../../omo-config-core/src/schema/memory.ts
5553
5553
  var OmoMemoryReflectionTriggerSchema = object({
5554
- step_count: number2().int().nonnegative().default(0),
5554
+ step_count: number2().int().nonnegative().default(25),
5555
5555
  on_compaction: boolean2().default(true)
5556
5556
  }).strict();
5557
5557
  var OmoMemoryReflectionSchema = object({
5558
- trigger: OmoMemoryReflectionTriggerSchema.default({ step_count: 0, on_compaction: true }),
5558
+ enabled: boolean2().default(true),
5559
+ trigger: OmoMemoryReflectionTriggerSchema.default({ step_count: 25, on_compaction: true }),
5559
5560
  merge: _enum(["auto", "integration"]).default("auto"),
5560
5561
  category: string2().min(1).default("quick"),
5561
5562
  timeout_minutes: number2().int().positive().default(15),
@@ -5568,11 +5569,36 @@ var OmoMemorySyncSchema = object({
5568
5569
  var OmoMemorySearchSchema = object({
5569
5570
  enabled: boolean2().default(true)
5570
5571
  }).strict();
5572
+ var OmoMemoryNudgeSchema = object({
5573
+ enabled: boolean2().default(true),
5574
+ every_user_turns: number2().int().min(1).default(10)
5575
+ }).strict();
5576
+ var OmoMemoryFactsSchema = object({
5577
+ enabled: boolean2().default(true),
5578
+ debounce_settles: number2().int().min(1).default(4)
5579
+ }).strict();
5580
+ var OmoMemoryDreamSchema = object({
5581
+ enabled: boolean2().default(true),
5582
+ idle_minutes: number2().int().min(0).default(30),
5583
+ min_hours_between: number2().int().min(1).default(24),
5584
+ shutdown_launch: boolean2().default(true),
5585
+ auto_select_max: number2().int().min(1).max(10).default(5),
5586
+ auto_select_max_chars: number2().int().min(1e4).default(150000)
5587
+ }).strict();
5588
+ var OmoMemoryPeopleSchema = object({
5589
+ enabled: boolean2().default(true),
5590
+ max_entries: number2().int().min(1).max(100).default(40),
5591
+ max_entry_chars: number2().int().min(50).max(500).default(200)
5592
+ }).strict();
5593
+ var OmoMemorySoulSchema = object({
5594
+ edit_notice: boolean2().default(true)
5595
+ }).strict();
5571
5596
  var OmoMemoryReflectionTriggerLayerSchema = object({
5572
5597
  step_count: number2().int().nonnegative().optional(),
5573
5598
  on_compaction: boolean2().optional()
5574
5599
  }).strict();
5575
5600
  var OmoMemoryReflectionLayerSchema = object({
5601
+ enabled: boolean2().optional(),
5576
5602
  trigger: OmoMemoryReflectionTriggerLayerSchema.optional(),
5577
5603
  merge: _enum(["auto", "integration"]).optional(),
5578
5604
  category: string2().min(1).optional(),
@@ -5586,10 +5612,39 @@ var OmoMemorySyncLayerSchema = object({
5586
5612
  var OmoMemorySearchLayerSchema = object({
5587
5613
  enabled: boolean2().optional()
5588
5614
  }).strict();
5615
+ var OmoMemoryNudgeLayerSchema = object({
5616
+ enabled: boolean2().optional(),
5617
+ every_user_turns: number2().int().min(1).optional()
5618
+ }).strict();
5619
+ var OmoMemoryFactsLayerSchema = object({
5620
+ enabled: boolean2().optional(),
5621
+ debounce_settles: number2().int().min(1).optional()
5622
+ }).strict();
5623
+ var OmoMemoryDreamLayerSchema = object({
5624
+ enabled: boolean2().optional(),
5625
+ idle_minutes: number2().int().min(0).optional(),
5626
+ min_hours_between: number2().int().min(1).optional(),
5627
+ shutdown_launch: boolean2().optional(),
5628
+ auto_select_max: number2().int().min(1).max(10).optional(),
5629
+ auto_select_max_chars: number2().int().min(1e4).optional()
5630
+ }).strict();
5631
+ var OmoMemoryPeopleLayerSchema = object({
5632
+ enabled: boolean2().optional(),
5633
+ max_entries: number2().int().min(1).max(100).optional(),
5634
+ max_entry_chars: number2().int().min(50).max(500).optional()
5635
+ }).strict();
5636
+ var OmoMemorySoulLayerSchema = object({
5637
+ edit_notice: boolean2().optional()
5638
+ }).strict();
5589
5639
  var OmoMemoryAgentOverridesSchema = object({
5590
5640
  enabled: boolean2().optional(),
5591
5641
  agent: string2().min(1).optional(),
5592
5642
  reflection: OmoMemoryReflectionLayerSchema.optional(),
5643
+ nudge: OmoMemoryNudgeLayerSchema.optional(),
5644
+ facts: OmoMemoryFactsLayerSchema.optional(),
5645
+ dream: OmoMemoryDreamLayerSchema.optional(),
5646
+ people: OmoMemoryPeopleLayerSchema.optional(),
5647
+ soul: OmoMemorySoulLayerSchema.optional(),
5593
5648
  sync: OmoMemorySyncLayerSchema.optional(),
5594
5649
  search: OmoMemorySearchLayerSchema.optional(),
5595
5650
  compile_warn_tokens: number2().int().positive().optional()
@@ -5599,12 +5654,25 @@ var OmoMemorySettingsSchema = object({
5599
5654
  agent: string2().min(1).default("auto"),
5600
5655
  tool_exposure: _enum(["direct", "search"]).default("direct"),
5601
5656
  reflection: OmoMemoryReflectionSchema.default({
5602
- trigger: { step_count: 0, on_compaction: true },
5657
+ enabled: true,
5658
+ trigger: { step_count: 25, on_compaction: true },
5603
5659
  merge: "auto",
5604
5660
  category: "quick",
5605
5661
  timeout_minutes: 15,
5606
5662
  sandbox: "auto"
5607
5663
  }),
5664
+ nudge: OmoMemoryNudgeSchema.default({ enabled: true, every_user_turns: 10 }),
5665
+ facts: OmoMemoryFactsSchema.default({ enabled: true, debounce_settles: 4 }),
5666
+ dream: OmoMemoryDreamSchema.default({
5667
+ enabled: true,
5668
+ idle_minutes: 30,
5669
+ min_hours_between: 24,
5670
+ shutdown_launch: true,
5671
+ auto_select_max: 5,
5672
+ auto_select_max_chars: 150000
5673
+ }),
5674
+ people: OmoMemoryPeopleSchema.default({ enabled: true, max_entries: 40, max_entry_chars: 200 }),
5675
+ soul: OmoMemorySoulSchema.default({ edit_notice: true }),
5608
5676
  sync: OmoMemorySyncSchema.default({ enabled: true }),
5609
5677
  search: OmoMemorySearchSchema.default({ enabled: true }),
5610
5678
  compile_warn_tokens: number2().int().positive().default(30000),
@@ -5615,6 +5683,11 @@ var OmoMemorySettingsLayerSchema = object({
5615
5683
  agent: string2().min(1).optional(),
5616
5684
  tool_exposure: _enum(["direct", "search"]).optional(),
5617
5685
  reflection: OmoMemoryReflectionLayerSchema.optional(),
5686
+ nudge: OmoMemoryNudgeLayerSchema.optional(),
5687
+ facts: OmoMemoryFactsLayerSchema.optional(),
5688
+ dream: OmoMemoryDreamLayerSchema.optional(),
5689
+ people: OmoMemoryPeopleLayerSchema.optional(),
5690
+ soul: OmoMemorySoulLayerSchema.optional(),
5618
5691
  sync: OmoMemorySyncLayerSchema.optional(),
5619
5692
  search: OmoMemorySearchLayerSchema.optional(),
5620
5693
  compile_warn_tokens: number2().int().positive().optional(),
@@ -5755,6 +5828,15 @@ var OmoTeamSpecLayerSchema = OmoTeamSpecBaseSchema.partial();
5755
5828
  var OmoTeamsConfigSchema = record(string2(), OmoTeamSpecSchema);
5756
5829
  var OmoTeamsConfigLayerSchema = record(string2(), OmoTeamSpecLayerSchema);
5757
5830
 
5831
+ // ../../omo-config-core/src/schema/telemetry.ts
5832
+ var OmoTelemetrySettingsShape = {
5833
+ enabled: boolean2()
5834
+ };
5835
+ var OmoTelemetrySettingsLayerSchema = object(OmoTelemetrySettingsShape).partial().strict();
5836
+ var OmoTelemetrySettingsSchema = OmoTelemetrySettingsLayerSchema.extend({
5837
+ enabled: boolean2().default(true)
5838
+ }).strict();
5839
+
5758
5840
  // ../../omo-config-core/src/schema/config.ts
5759
5841
  var OmoOpenCodeHarnessConfigSchema = record(string2(), unknown());
5760
5842
  var OmoTypedHarnessConfigSchema = object({
@@ -5764,7 +5846,8 @@ var OmoTypedHarnessConfigSchema = object({
5764
5846
  task: OmoTaskSettingsLayerSchema.optional(),
5765
5847
  teams: OmoTeamsConfigLayerSchema.optional(),
5766
5848
  models: OmoModelCatalogLayerSchema.optional(),
5767
- memory: OmoMemorySettingsLayerSchema.optional()
5849
+ memory: OmoMemorySettingsLayerSchema.optional(),
5850
+ telemetry: OmoTelemetrySettingsLayerSchema.optional()
5768
5851
  }).strict();
5769
5852
  var OmoConfigProfileSchema = object({
5770
5853
  categories: OmoCategoriesConfigSchema.optional(),
@@ -5774,6 +5857,7 @@ var OmoConfigProfileSchema = object({
5774
5857
  teams: OmoTeamsConfigLayerSchema.optional(),
5775
5858
  models: OmoModelCatalogLayerSchema.optional(),
5776
5859
  memory: OmoMemorySettingsLayerSchema.optional(),
5860
+ telemetry: OmoTelemetrySettingsLayerSchema.optional(),
5777
5861
  "[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
5778
5862
  "[senpi]": OmoTypedHarnessConfigSchema.optional(),
5779
5863
  "[codex]": OmoTypedHarnessConfigSchema.optional()
@@ -5787,6 +5871,7 @@ var OmoConfigSchema = object({
5787
5871
  teams: OmoTeamsConfigSchema.optional(),
5788
5872
  models: OmoModelCatalogSchema.optional(),
5789
5873
  memory: OmoMemorySettingsSchema.optional(),
5874
+ telemetry: OmoTelemetrySettingsSchema.optional(),
5790
5875
  "[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
5791
5876
  "[senpi]": OmoTypedHarnessConfigSchema.optional(),
5792
5877
  "[codex]": OmoTypedHarnessConfigSchema.optional(),
@@ -5803,6 +5888,7 @@ var OmoConfigLayerSchema = object({
5803
5888
  teams: OmoTeamsConfigLayerSchema.optional(),
5804
5889
  models: OmoModelCatalogLayerSchema.optional(),
5805
5890
  memory: OmoMemorySettingsLayerSchema.optional(),
5891
+ telemetry: OmoTelemetrySettingsLayerSchema.optional(),
5806
5892
  "[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
5807
5893
  "[senpi]": OmoTypedHarnessConfigSchema.optional(),
5808
5894
  "[codex]": OmoTypedHarnessConfigSchema.optional(),
@@ -5817,11 +5817,12 @@ var OmoCodegraphSettingsSchema = OmoCodegraphSettingsLayerSchema.extend({
5817
5817
 
5818
5818
  // ../../../../omo-config-core/src/schema/memory.ts
5819
5819
  var OmoMemoryReflectionTriggerSchema = object({
5820
- step_count: number2().int().nonnegative().default(0),
5820
+ step_count: number2().int().nonnegative().default(25),
5821
5821
  on_compaction: boolean2().default(true)
5822
5822
  }).strict();
5823
5823
  var OmoMemoryReflectionSchema = object({
5824
- trigger: OmoMemoryReflectionTriggerSchema.default({ step_count: 0, on_compaction: true }),
5824
+ enabled: boolean2().default(true),
5825
+ trigger: OmoMemoryReflectionTriggerSchema.default({ step_count: 25, on_compaction: true }),
5825
5826
  merge: _enum(["auto", "integration"]).default("auto"),
5826
5827
  category: string2().min(1).default("quick"),
5827
5828
  timeout_minutes: number2().int().positive().default(15),
@@ -5834,11 +5835,36 @@ var OmoMemorySyncSchema = object({
5834
5835
  var OmoMemorySearchSchema = object({
5835
5836
  enabled: boolean2().default(true)
5836
5837
  }).strict();
5838
+ var OmoMemoryNudgeSchema = object({
5839
+ enabled: boolean2().default(true),
5840
+ every_user_turns: number2().int().min(1).default(10)
5841
+ }).strict();
5842
+ var OmoMemoryFactsSchema = object({
5843
+ enabled: boolean2().default(true),
5844
+ debounce_settles: number2().int().min(1).default(4)
5845
+ }).strict();
5846
+ var OmoMemoryDreamSchema = object({
5847
+ enabled: boolean2().default(true),
5848
+ idle_minutes: number2().int().min(0).default(30),
5849
+ min_hours_between: number2().int().min(1).default(24),
5850
+ shutdown_launch: boolean2().default(true),
5851
+ auto_select_max: number2().int().min(1).max(10).default(5),
5852
+ auto_select_max_chars: number2().int().min(1e4).default(150000)
5853
+ }).strict();
5854
+ var OmoMemoryPeopleSchema = object({
5855
+ enabled: boolean2().default(true),
5856
+ max_entries: number2().int().min(1).max(100).default(40),
5857
+ max_entry_chars: number2().int().min(50).max(500).default(200)
5858
+ }).strict();
5859
+ var OmoMemorySoulSchema = object({
5860
+ edit_notice: boolean2().default(true)
5861
+ }).strict();
5837
5862
  var OmoMemoryReflectionTriggerLayerSchema = object({
5838
5863
  step_count: number2().int().nonnegative().optional(),
5839
5864
  on_compaction: boolean2().optional()
5840
5865
  }).strict();
5841
5866
  var OmoMemoryReflectionLayerSchema = object({
5867
+ enabled: boolean2().optional(),
5842
5868
  trigger: OmoMemoryReflectionTriggerLayerSchema.optional(),
5843
5869
  merge: _enum(["auto", "integration"]).optional(),
5844
5870
  category: string2().min(1).optional(),
@@ -5852,10 +5878,39 @@ var OmoMemorySyncLayerSchema = object({
5852
5878
  var OmoMemorySearchLayerSchema = object({
5853
5879
  enabled: boolean2().optional()
5854
5880
  }).strict();
5881
+ var OmoMemoryNudgeLayerSchema = object({
5882
+ enabled: boolean2().optional(),
5883
+ every_user_turns: number2().int().min(1).optional()
5884
+ }).strict();
5885
+ var OmoMemoryFactsLayerSchema = object({
5886
+ enabled: boolean2().optional(),
5887
+ debounce_settles: number2().int().min(1).optional()
5888
+ }).strict();
5889
+ var OmoMemoryDreamLayerSchema = object({
5890
+ enabled: boolean2().optional(),
5891
+ idle_minutes: number2().int().min(0).optional(),
5892
+ min_hours_between: number2().int().min(1).optional(),
5893
+ shutdown_launch: boolean2().optional(),
5894
+ auto_select_max: number2().int().min(1).max(10).optional(),
5895
+ auto_select_max_chars: number2().int().min(1e4).optional()
5896
+ }).strict();
5897
+ var OmoMemoryPeopleLayerSchema = object({
5898
+ enabled: boolean2().optional(),
5899
+ max_entries: number2().int().min(1).max(100).optional(),
5900
+ max_entry_chars: number2().int().min(50).max(500).optional()
5901
+ }).strict();
5902
+ var OmoMemorySoulLayerSchema = object({
5903
+ edit_notice: boolean2().optional()
5904
+ }).strict();
5855
5905
  var OmoMemoryAgentOverridesSchema = object({
5856
5906
  enabled: boolean2().optional(),
5857
5907
  agent: string2().min(1).optional(),
5858
5908
  reflection: OmoMemoryReflectionLayerSchema.optional(),
5909
+ nudge: OmoMemoryNudgeLayerSchema.optional(),
5910
+ facts: OmoMemoryFactsLayerSchema.optional(),
5911
+ dream: OmoMemoryDreamLayerSchema.optional(),
5912
+ people: OmoMemoryPeopleLayerSchema.optional(),
5913
+ soul: OmoMemorySoulLayerSchema.optional(),
5859
5914
  sync: OmoMemorySyncLayerSchema.optional(),
5860
5915
  search: OmoMemorySearchLayerSchema.optional(),
5861
5916
  compile_warn_tokens: number2().int().positive().optional()
@@ -5865,12 +5920,25 @@ var OmoMemorySettingsSchema = object({
5865
5920
  agent: string2().min(1).default("auto"),
5866
5921
  tool_exposure: _enum(["direct", "search"]).default("direct"),
5867
5922
  reflection: OmoMemoryReflectionSchema.default({
5868
- trigger: { step_count: 0, on_compaction: true },
5923
+ enabled: true,
5924
+ trigger: { step_count: 25, on_compaction: true },
5869
5925
  merge: "auto",
5870
5926
  category: "quick",
5871
5927
  timeout_minutes: 15,
5872
5928
  sandbox: "auto"
5873
5929
  }),
5930
+ nudge: OmoMemoryNudgeSchema.default({ enabled: true, every_user_turns: 10 }),
5931
+ facts: OmoMemoryFactsSchema.default({ enabled: true, debounce_settles: 4 }),
5932
+ dream: OmoMemoryDreamSchema.default({
5933
+ enabled: true,
5934
+ idle_minutes: 30,
5935
+ min_hours_between: 24,
5936
+ shutdown_launch: true,
5937
+ auto_select_max: 5,
5938
+ auto_select_max_chars: 150000
5939
+ }),
5940
+ people: OmoMemoryPeopleSchema.default({ enabled: true, max_entries: 40, max_entry_chars: 200 }),
5941
+ soul: OmoMemorySoulSchema.default({ edit_notice: true }),
5874
5942
  sync: OmoMemorySyncSchema.default({ enabled: true }),
5875
5943
  search: OmoMemorySearchSchema.default({ enabled: true }),
5876
5944
  compile_warn_tokens: number2().int().positive().default(30000),
@@ -5881,6 +5949,11 @@ var OmoMemorySettingsLayerSchema = object({
5881
5949
  agent: string2().min(1).optional(),
5882
5950
  tool_exposure: _enum(["direct", "search"]).optional(),
5883
5951
  reflection: OmoMemoryReflectionLayerSchema.optional(),
5952
+ nudge: OmoMemoryNudgeLayerSchema.optional(),
5953
+ facts: OmoMemoryFactsLayerSchema.optional(),
5954
+ dream: OmoMemoryDreamLayerSchema.optional(),
5955
+ people: OmoMemoryPeopleLayerSchema.optional(),
5956
+ soul: OmoMemorySoulLayerSchema.optional(),
5884
5957
  sync: OmoMemorySyncLayerSchema.optional(),
5885
5958
  search: OmoMemorySearchLayerSchema.optional(),
5886
5959
  compile_warn_tokens: number2().int().positive().optional(),
@@ -6021,6 +6094,15 @@ var OmoTeamSpecLayerSchema = OmoTeamSpecBaseSchema.partial();
6021
6094
  var OmoTeamsConfigSchema = record(string2(), OmoTeamSpecSchema);
6022
6095
  var OmoTeamsConfigLayerSchema = record(string2(), OmoTeamSpecLayerSchema);
6023
6096
 
6097
+ // ../../../../omo-config-core/src/schema/telemetry.ts
6098
+ var OmoTelemetrySettingsShape = {
6099
+ enabled: boolean2()
6100
+ };
6101
+ var OmoTelemetrySettingsLayerSchema = object(OmoTelemetrySettingsShape).partial().strict();
6102
+ var OmoTelemetrySettingsSchema = OmoTelemetrySettingsLayerSchema.extend({
6103
+ enabled: boolean2().default(true)
6104
+ }).strict();
6105
+
6024
6106
  // ../../../../omo-config-core/src/schema/config.ts
6025
6107
  var OmoOpenCodeHarnessConfigSchema = record(string2(), unknown());
6026
6108
  var OmoTypedHarnessConfigSchema = object({
@@ -6030,7 +6112,8 @@ var OmoTypedHarnessConfigSchema = object({
6030
6112
  task: OmoTaskSettingsLayerSchema.optional(),
6031
6113
  teams: OmoTeamsConfigLayerSchema.optional(),
6032
6114
  models: OmoModelCatalogLayerSchema.optional(),
6033
- memory: OmoMemorySettingsLayerSchema.optional()
6115
+ memory: OmoMemorySettingsLayerSchema.optional(),
6116
+ telemetry: OmoTelemetrySettingsLayerSchema.optional()
6034
6117
  }).strict();
6035
6118
  var OmoConfigProfileSchema = object({
6036
6119
  categories: OmoCategoriesConfigSchema.optional(),
@@ -6040,6 +6123,7 @@ var OmoConfigProfileSchema = object({
6040
6123
  teams: OmoTeamsConfigLayerSchema.optional(),
6041
6124
  models: OmoModelCatalogLayerSchema.optional(),
6042
6125
  memory: OmoMemorySettingsLayerSchema.optional(),
6126
+ telemetry: OmoTelemetrySettingsLayerSchema.optional(),
6043
6127
  "[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
6044
6128
  "[senpi]": OmoTypedHarnessConfigSchema.optional(),
6045
6129
  "[codex]": OmoTypedHarnessConfigSchema.optional()
@@ -6053,6 +6137,7 @@ var OmoConfigSchema = object({
6053
6137
  teams: OmoTeamsConfigSchema.optional(),
6054
6138
  models: OmoModelCatalogSchema.optional(),
6055
6139
  memory: OmoMemorySettingsSchema.optional(),
6140
+ telemetry: OmoTelemetrySettingsSchema.optional(),
6056
6141
  "[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
6057
6142
  "[senpi]": OmoTypedHarnessConfigSchema.optional(),
6058
6143
  "[codex]": OmoTypedHarnessConfigSchema.optional(),
@@ -6069,6 +6154,7 @@ var OmoConfigLayerSchema = object({
6069
6154
  teams: OmoTeamsConfigLayerSchema.optional(),
6070
6155
  models: OmoModelCatalogLayerSchema.optional(),
6071
6156
  memory: OmoMemorySettingsLayerSchema.optional(),
6157
+ telemetry: OmoTelemetrySettingsLayerSchema.optional(),
6072
6158
  "[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
6073
6159
  "[senpi]": OmoTypedHarnessConfigSchema.optional(),
6074
6160
  "[codex]": OmoTypedHarnessConfigSchema.optional(),
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sisyphuslabs/codex-codegraph",
3
- "version": "5.0.0-beta.5",
3
+ "version": "5.0.0-beta.7",
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.5) Checking Comments"
11
+ "statusMessage": "(OmO 5.0.0-beta.7) 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.5",
3
+ "version": "5.0.0-beta.7",
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.5) Recommending Git Bash MCP"
11
+ "statusMessage": "(OmO 5.0.0-beta.7) 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.5) Resetting Git Bash MCP Reminder"
23
+ "statusMessage": "(OmO 5.0.0-beta.7) 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.5",
3
+ "version": "5.0.0-beta.7",
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.5) Verifying LazyCodex Executor Evidence"
11
+ "statusMessage": "(OmO 5.0.0-beta.7) 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.5",
3
+ "version": "5.0.0-beta.7",
4
4
  "description": "Codex SubagentStop evidence verifier for LazyCodex executor completions.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",