oh-my-opencode 5.0.0-beta.1 → 5.0.0-beta.11

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 (202) hide show
  1. package/.agents/command/publish.md +44 -16
  2. package/.agents/skills/publish/SKILL.md +44 -16
  3. package/.agents/skills/work-with-pr/SKILL.md +37 -23
  4. package/.opencode/command/publish.md +44 -16
  5. package/.opencode/skills/work-with-pr/SKILL.md +37 -23
  6. package/README.md +12 -1
  7. package/dist/agents/atlas/agent.d.ts +0 -1
  8. package/dist/agents/sisyphus/grok-4.d.ts +20 -0
  9. package/dist/agents/sisyphus/index.d.ts +2 -0
  10. package/dist/agents/sisyphus-agent-config.d.ts +6 -0
  11. package/dist/agents/sisyphus-agent-factory.d.ts +1 -1
  12. package/dist/agents/sisyphus-runtime-prompt-reconciler.d.ts +15 -4
  13. package/dist/agents/types.d.ts +2 -2
  14. package/dist/cli/index.js +805 -534
  15. package/dist/cli/run/on-complete-hook.d.ts +2 -0
  16. package/dist/cli-node/index.js +805 -534
  17. package/dist/hooks/atlas/final-wave-approval-gate.test-support.d.ts +50 -0
  18. package/dist/hooks/atlas/system-reminder-templates.d.ts +0 -1
  19. package/dist/index.js +1566 -1217
  20. package/dist/shared/normalize-sdk-response.d.ts +1 -0
  21. package/dist/shared/shell-env.d.ts +1 -1
  22. package/dist/skills/coding-agent-sessions/SKILL.md +3 -2
  23. package/dist/skills/coding-agent-sessions/references/all-platforms.md +1 -1
  24. package/dist/skills/coding-agent-sessions/references/senpi.md +4 -4
  25. package/dist/skills/coding-agent-sessions/scripts/agent_sessions/pi_family.py +1 -1
  26. package/dist/skills/frontend/SKILL.md +10 -7
  27. package/dist/skills/frontend/references/design/_INDEX.md +1 -0
  28. package/dist/skills/frontend/references/design/stylegallery.md +80 -0
  29. package/dist/skills/ultimate-browsing/ATTRIBUTION.md +37 -10
  30. package/dist/skills/ultimate-browsing/engine/AGENTS.md +179 -0
  31. package/dist/skills/ultimate-browsing/engine/templates/package.json +1 -1
  32. package/dist/skills/ultimate-browsing/references/chrome-stealth.md +11 -11
  33. package/dist/skills/ulw-plan/SKILL.md +2 -2
  34. package/dist/skills/ulw-plan/references/full-workflow.md +27 -3
  35. package/dist/skills/ulw-plan/references/intent-clear.md +2 -1
  36. package/dist/skills/ulw-plan/references/intent-unclear.md +3 -3
  37. package/dist/tools/delegate-task/builtin-categories.d.ts +1 -0
  38. package/dist/tools/delegate-task/builtin-category-definition.d.ts +1 -0
  39. package/dist/tools/delegate-task/tool-description.d.ts +3 -1
  40. package/dist/tui.js +184 -83
  41. package/package.json +21 -19
  42. package/packages/lsp-core/src/lsp/client-diagnostics-concurrency.integration.test.ts +44 -0
  43. package/packages/lsp-core/src/lsp/client-diagnostics-freshness.integration.test.ts +0 -28
  44. package/packages/lsp-core/src/lsp/client-wrapper-outside-cwd.test.ts +78 -0
  45. package/packages/lsp-core/src/lsp/client-wrapper.test.ts +66 -13
  46. package/packages/lsp-core/src/lsp/client-wrapper.ts +70 -18
  47. package/packages/lsp-core/src/lsp/outside-context-workspace.ts +33 -0
  48. package/packages/lsp-core/src/lsp/workspace-edit-adversarial.test.ts +20 -1
  49. package/packages/lsp-core/src/lsp/workspace-markers.ts +1 -0
  50. package/packages/lsp-core/src/tools/diagnostics.ts +3 -3
  51. package/packages/lsp-core/src/tools/navigation.ts +4 -2
  52. package/packages/lsp-core/src/tools/rename.ts +4 -2
  53. package/packages/lsp-core/src/tools/symbols.ts +1 -1
  54. package/packages/lsp-daemon/dist/cli.js +160 -71
  55. package/packages/lsp-daemon/dist/client.js +135 -46
  56. package/packages/lsp-daemon/dist/index.js +143 -54
  57. package/packages/lsp-tools-mcp/dist/cli.js +131 -42
  58. package/packages/lsp-tools-mcp/dist/mcp.js +131 -42
  59. package/packages/lsp-tools-mcp/dist/tools.js +131 -42
  60. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  61. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  62. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  63. package/packages/omo-codex/plugin/components/codegraph/dist/cli.js +118 -8
  64. package/packages/omo-codex/plugin/components/codegraph/dist/serve.js +118 -8
  65. package/packages/omo-codex/plugin/components/codegraph/package.json +1 -1
  66. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  67. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  68. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  69. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  70. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  71. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
  72. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/test/codex-hook.test.ts +3 -17
  73. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +3 -3
  74. package/packages/omo-codex/plugin/components/lsp/dist/cli.js +147 -64
  75. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  76. package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
  77. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  78. package/packages/omo-codex/plugin/components/rules/package.json +1 -1
  79. package/packages/omo-codex/plugin/components/rules/test/bundled-rules-priority.test.ts +11 -16
  80. package/packages/omo-codex/plugin/components/rules/test/bundled-rules.test.ts +16 -23
  81. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-budget.test.ts +9 -7
  82. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-context.test.ts +0 -6
  83. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-dedup.test.ts +6 -4
  84. package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-directive.test.ts +12 -9
  85. package/packages/omo-codex/plugin/components/rules/test/codex-hook.test.ts +28 -37
  86. package/packages/omo-codex/plugin/components/rules/test/formatter.test.ts +37 -69
  87. package/packages/omo-codex/plugin/components/rules/test/hook-output.test.ts +2 -3
  88. package/packages/omo-codex/plugin/components/rules/test/windows-git-bash-bundled-rule.test.ts +1 -15
  89. package/packages/omo-codex/plugin/components/start-work-continuation/AGENTS.md +3 -2
  90. package/packages/omo-codex/plugin/components/start-work-continuation/hooks/hooks.json +2 -2
  91. package/packages/omo-codex/plugin/components/start-work-continuation/package.json +1 -1
  92. package/packages/omo-codex/plugin/components/start-work-continuation/test/cli.test.ts +0 -3
  93. package/packages/omo-codex/plugin/components/start-work-continuation/test/codex-hook.test.ts +2 -16
  94. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  95. package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
  96. package/packages/omo-codex/plugin/components/teammode/test/thread-title-hook.test.ts +3 -9
  97. package/packages/omo-codex/plugin/components/telemetry/dist/cli.js +24 -12
  98. package/packages/omo-codex/plugin/components/telemetry/dist/posthog.js +24 -12
  99. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  100. package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
  101. package/packages/omo-codex/plugin/components/ultrawork/directive.md +6 -0
  102. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  103. package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
  104. package/packages/omo-codex/plugin/components/ultrawork/skills/ultrawork/SKILL.md +6 -0
  105. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/SKILL.md +2 -2
  106. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/full-workflow.md +27 -3
  107. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/intent-clear.md +2 -1
  108. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/intent-unclear.md +3 -3
  109. package/packages/omo-codex/plugin/components/ultrawork/test/codex-hook.test.ts +0 -136
  110. package/packages/omo-codex/plugin/components/ultrawork/test/skill-pointer.test.ts +0 -2
  111. package/packages/omo-codex/plugin/components/ulw-loop/directive.md +6 -0
  112. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +4 -4
  113. package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
  114. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/SKILL.md +3 -2
  115. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/define-goal.md +108 -0
  116. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +1 -0
  117. package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint-continuation.test.ts +0 -1
  118. package/packages/omo-codex/plugin/components/ulw-loop/test/codex-goal-instruction.test.ts +2 -2
  119. package/packages/omo-codex/plugin/components/ulw-loop/test/codex-hook.test.ts +0 -3
  120. package/packages/omo-codex/plugin/components/ulw-loop/test/package-smoke.test.ts +2 -35
  121. package/packages/omo-codex/plugin/components/ulw-loop/test/ultrawork-directive.test.ts +4 -5
  122. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  123. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  124. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  125. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-codegraph-init-guidance.json +1 -1
  126. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  127. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  128. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  129. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  130. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  131. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  132. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  133. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  134. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  135. package/packages/omo-codex/plugin/hooks/session-start-checking-codegraph-bootstrap.json +1 -1
  136. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  137. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  138. package/packages/omo-codex/plugin/hooks/stop-checking-start-work-continuation.json +1 -1
  139. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  140. package/packages/omo-codex/plugin/hooks/subagent-stop-checking-start-work-continuation.json +1 -1
  141. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  142. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  143. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  144. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  145. package/packages/omo-codex/plugin/package-lock.json +20 -20
  146. package/packages/omo-codex/plugin/package.json +1 -1
  147. package/packages/omo-codex/plugin/skills/coding-agent-sessions/SKILL.md +3 -2
  148. package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/all-platforms.md +1 -1
  149. package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/senpi.md +4 -4
  150. package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/pi_family.py +1 -1
  151. package/packages/omo-codex/plugin/skills/frontend/SKILL.md +10 -7
  152. package/packages/omo-codex/plugin/skills/frontend/references/design/_INDEX.md +1 -0
  153. package/packages/omo-codex/plugin/skills/frontend/references/design/stylegallery.md +80 -0
  154. package/packages/omo-codex/plugin/skills/ultimate-browsing/ATTRIBUTION.md +37 -10
  155. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/AGENTS.md +179 -0
  156. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/templates/package.json +1 -1
  157. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/chrome-stealth.md +11 -11
  158. package/packages/omo-codex/plugin/skills/ultrawork/SKILL.md +6 -0
  159. package/packages/omo-codex/plugin/skills/ulw-loop/SKILL.md +3 -2
  160. package/packages/omo-codex/plugin/skills/ulw-loop/references/define-goal.md +108 -0
  161. package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +1 -0
  162. package/packages/omo-codex/plugin/skills/ulw-plan/SKILL.md +2 -2
  163. package/packages/omo-codex/plugin/skills/ulw-plan/references/full-workflow.md +27 -3
  164. package/packages/omo-codex/plugin/skills/ulw-plan/references/intent-clear.md +2 -1
  165. package/packages/omo-codex/plugin/skills/ulw-plan/references/intent-unclear.md +3 -3
  166. package/packages/omo-codex/plugin/test/aggregate-agents.test.mjs +19 -173
  167. package/packages/omo-codex/plugin/test/aggregate-hooks.test.mjs +4 -24
  168. package/packages/omo-codex/plugin/test/aggregate-plugin-fixture.mjs +175 -13
  169. package/packages/omo-codex/plugin/test/aggregate.test.mjs +78 -2
  170. package/packages/omo-codex/plugin/test/auto-update-release-notes.test.mjs +19 -33
  171. package/packages/omo-codex/plugin/test/lcx-contribute-bug-fix-template.test.mjs +21 -27
  172. package/packages/omo-codex/plugin/test/scaffold-plan.test.mjs +0 -36
  173. package/packages/omo-codex/plugin/test/sync-skills-codex-compatibility.test.mjs +101 -0
  174. package/packages/omo-codex/plugin/test/sync-skills.test.mjs +1 -119
  175. package/packages/omo-codex/plugin/test/teammode-archive-ambiguity.test.mjs +0 -40
  176. package/packages/omo-codex/plugin/test/teammode-communication.test.mjs +6 -62
  177. package/packages/omo-codex/plugin/test/teammode-thread-links.test.mjs +3 -36
  178. package/packages/omo-codex/plugin/test/teammode-transport.test.mjs +0 -44
  179. package/packages/omo-codex/plugin/test/teammode-worktree.test.mjs +2 -6
  180. package/packages/omo-codex/plugin/test/ultrawork-skill-pointer.test.mjs +0 -3
  181. package/packages/omo-codex/plugin/test/ulw-plan-review-state-contract.test.mjs +0 -3
  182. package/packages/omo-codex/scripts/install-dist/install-local.mjs +57 -19
  183. package/packages/omo-codex/scripts/install-lazycodex-version-stamp.test.mjs +7 -2
  184. package/packages/shared-skills/skills/coding-agent-sessions/SKILL.md +3 -2
  185. package/packages/shared-skills/skills/coding-agent-sessions/references/all-platforms.md +1 -1
  186. package/packages/shared-skills/skills/coding-agent-sessions/references/senpi.md +4 -4
  187. package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/pi_family.py +1 -1
  188. package/packages/shared-skills/skills/frontend/SKILL.md +10 -7
  189. package/packages/shared-skills/skills/frontend/references/design/_INDEX.md +1 -0
  190. package/packages/shared-skills/skills/frontend/references/design/stylegallery.md +80 -0
  191. package/packages/shared-skills/skills/ultimate-browsing/ATTRIBUTION.md +37 -10
  192. package/packages/shared-skills/skills/ultimate-browsing/engine/AGENTS.md +179 -0
  193. package/packages/shared-skills/skills/ultimate-browsing/engine/templates/package.json +1 -1
  194. package/packages/shared-skills/skills/ultimate-browsing/references/chrome-stealth.md +11 -11
  195. package/packages/shared-skills/skills/ulw-plan/SKILL.md +2 -2
  196. package/packages/shared-skills/skills/ulw-plan/references/full-workflow.md +27 -3
  197. package/packages/shared-skills/skills/ulw-plan/references/intent-clear.md +2 -1
  198. package/packages/shared-skills/skills/ulw-plan/references/intent-unclear.md +3 -3
  199. package/dist/tools/call-omo-agent/background-agent-executor.d.ts +0 -5
  200. package/packages/omo-codex/plugin/test/aggregate-skills.test.mjs +0 -92
  201. package/packages/omo-codex/plugin/test/sync-skills-orchestration.test.mjs +0 -314
  202. package/packages/omo-codex/plugin/test/ulw-plan-scope-contract.test.mjs +0 -24
@@ -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 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();
@@ -3723,32 +3759,85 @@ function isDirectoryPath(filePath) {
3723
3759
  }
3724
3760
  }
3725
3761
  function findWorkspaceRoot(filePath) {
3726
- const abs = resolvePathInsideContext(filePath);
3762
+ const cwd = contextCwd();
3763
+ const abs = resolveReadablePathInsideContext(filePath);
3727
3764
  let dir = abs;
3728
3765
  if (!isDirectoryPath(dir)) {
3729
- dir = dirname6(dir);
3730
- }
3731
- let prevDir = "";
3732
- while (dir !== prevDir) {
3733
- for (const marker of WORKSPACE_MARKERS) {
3734
- if (existsSync9(join4(dir, marker))) {
3735
- return dir;
3766
+ dir = dirname7(dir);
3767
+ }
3768
+ if (!isPathInside(cwd, abs))
3769
+ return findWorkspaceRootOutsideContext(dir);
3770
+ const fallbackRoot = nearestExistingDirectoryInsideContext(dir, cwd) ?? cwd;
3771
+ while (isPathInside(cwd, dir)) {
3772
+ const canonicalDir = existingDirectoryInsideContext(dir, cwd);
3773
+ if (canonicalDir !== undefined) {
3774
+ for (const marker of WORKSPACE_MARKERS) {
3775
+ if (existsSync10(join5(dir, marker))) {
3776
+ return canonicalDir;
3777
+ }
3736
3778
  }
3737
3779
  }
3738
- prevDir = dir;
3739
- dir = dirname6(dir);
3780
+ if (dir === cwd)
3781
+ break;
3782
+ dir = dirname7(dir);
3740
3783
  }
3741
- return dirname6(abs);
3784
+ return fallbackRoot;
3742
3785
  }
3743
- function resolvePathInsideContext(filePath) {
3786
+ function resolveReadablePathInsideContext(filePath) {
3744
3787
  const cwd = contextCwd();
3745
3788
  const abs = resolve7(cwd, filePath);
3789
+ if (isPathInside(cwd, abs))
3790
+ return abs;
3791
+ const rebased = rebaseThroughCanonicalAncestor(abs, cwd);
3792
+ if (rebased !== undefined)
3793
+ return rebased;
3794
+ return canonicalizeExistingOrNearestAncestor(abs);
3795
+ }
3796
+ function resolvePathInsideContext(filePath) {
3797
+ const cwd = contextCwd();
3798
+ const abs = resolveReadablePathInsideContext(filePath);
3746
3799
  const canonical = canonicalizeExistingOrNearestAncestor(abs);
3747
3800
  if (!isPathInside(cwd, canonical)) {
3748
3801
  throw new LspInvalidPathError(`LSP file path must be inside request cwd: ${filePath}`);
3749
3802
  }
3750
3803
  return canonical;
3751
3804
  }
3805
+ function rebaseThroughCanonicalAncestor(path, cwd) {
3806
+ let current = path;
3807
+ const suffix = [];
3808
+ while (true) {
3809
+ if (existsSync10(current)) {
3810
+ const canonical = realpathSync5(current);
3811
+ if (isPathInside(cwd, canonical))
3812
+ return suffix.length === 0 ? canonical : join5(canonical, ...suffix);
3813
+ }
3814
+ const parent = dirname7(current);
3815
+ if (parent === current)
3816
+ return;
3817
+ suffix.unshift(basename3(current));
3818
+ current = parent;
3819
+ }
3820
+ }
3821
+ function existingDirectoryInsideContext(directory, cwd) {
3822
+ if (!existsSync10(directory))
3823
+ return;
3824
+ const canonical = realpathSync5(directory);
3825
+ if (!statSync3(canonical).isDirectory())
3826
+ return;
3827
+ return isPathInside(cwd, canonical) ? canonical : undefined;
3828
+ }
3829
+ function nearestExistingDirectoryInsideContext(directory, cwd) {
3830
+ let current = directory;
3831
+ while (isPathInside(cwd, current)) {
3832
+ const canonical = existingDirectoryInsideContext(current, cwd);
3833
+ if (canonical !== undefined)
3834
+ return canonical;
3835
+ if (current === cwd)
3836
+ return;
3837
+ current = dirname7(current);
3838
+ }
3839
+ return;
3840
+ }
3752
3841
  function formatServerLookupError(result) {
3753
3842
  if (result.status === "not_installed") {
3754
3843
  return formatNotInstalled(result);
@@ -3819,7 +3908,7 @@ function formatNotInstalled(result) {
3819
3908
  ].join(`
3820
3909
  `);
3821
3910
  }
3822
- var READ_ONLY_RETRY_TOOLS = new Set([
3911
+ var READ_ONLY_TOOLS = new Set([
3823
3912
  "diagnostics",
3824
3913
  "definition",
3825
3914
  "references",
@@ -3828,7 +3917,7 @@ var READ_ONLY_RETRY_TOOLS = new Set([
3828
3917
  "prepareRename"
3829
3918
  ]);
3830
3919
  async function withLspClient(filePath, fn, toolName, options = {}) {
3831
- const absPath = resolvePathInsideContext(filePath);
3920
+ const absPath = READ_ONLY_TOOLS.has(toolName) ? resolveReadablePathInsideContext(filePath) : resolvePathInsideContext(filePath);
3832
3921
  if (isDirectoryPath(absPath)) {
3833
3922
  throw new LspInvalidPathError("Directory paths are not supported by this LSP tool. " + "Use lsp.diagnostics with a directory path for directory diagnostics.");
3834
3923
  }
@@ -3843,9 +3932,9 @@ async function withLspClient(filePath, fn, toolName, options = {}) {
3843
3932
  const acquireAndCall = async (allowRetry) => {
3844
3933
  const client = await manager.getClient(root, server, options.signal);
3845
3934
  try {
3846
- return await fn(client, root);
3935
+ return await fn(client, root, absPath);
3847
3936
  } catch (err) {
3848
- if (allowRetry && READ_ONLY_RETRY_TOOLS.has(toolName) && isLspDeadConnectionError(err)) {
3937
+ if (allowRetry && READ_ONLY_TOOLS.has(toolName) && isLspDeadConnectionError(err)) {
3849
3938
  manager.invalidateClient(root, server.id, client);
3850
3939
  return acquireAndCall(false);
3851
3940
  }
@@ -3863,8 +3952,8 @@ async function withLspClient(filePath, fn, toolName, options = {}) {
3863
3952
  }
3864
3953
 
3865
3954
  // ../lsp-core/src/lsp/directory-diagnostics.ts
3866
- import { existsSync as existsSync10, lstatSync as lstatSync4, readdirSync as readdirSync3 } from "node:fs";
3867
- 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";
3868
3957
 
3869
3958
  // ../lsp-core/src/lsp/formatters.ts
3870
3959
  import { fileURLToPath as fileURLToPath2 } from "node:url";
@@ -3994,7 +4083,7 @@ function collectFilesWithExtension(dir, extension, maxFiles) {
3994
4083
  for (const entry of entries) {
3995
4084
  if (files.length >= maxFiles)
3996
4085
  return;
3997
- const fullPath = join5(currentDir, entry);
4086
+ const fullPath = join6(currentDir, entry);
3998
4087
  let stat;
3999
4088
  try {
4000
4089
  stat = lstatSync4(fullPath);
@@ -4020,7 +4109,7 @@ async function aggregateDiagnosticsForDirectory(directory, extension, severity,
4020
4109
  throw new LspInvalidPathError(`Extension must start with a dot (e.g., ".ts", not "${extension}"). Use ".${extension}" instead.`);
4021
4110
  }
4022
4111
  const absDir = resolve8(options.workspaceRoot ?? contextCwd(), directory);
4023
- if (!existsSync10(absDir)) {
4112
+ if (!existsSync11(absDir)) {
4024
4113
  throw new LspInvalidPathError(`Directory does not exist: ${absDir}`);
4025
4114
  }
4026
4115
  const serverResult = options.server === undefined ? findServerForExtension(extension) : { status: "found", server: options.server };
@@ -4107,7 +4196,7 @@ async function aggregateDiagnosticsForDirectory(directory, extension, severity,
4107
4196
 
4108
4197
  // ../lsp-core/src/lsp/infer-extension.ts
4109
4198
  import { lstatSync as lstatSync5, readdirSync as readdirSync4 } from "node:fs";
4110
- import { join as join6 } from "node:path";
4199
+ import { join as join7 } from "node:path";
4111
4200
  var SKIP_DIRECTORIES2 = new Set(["node_modules", ".git", "dist", "build", ".next", "out"]);
4112
4201
  var MAX_SCAN_ENTRIES = 500;
4113
4202
  function inferExtensionFromDirectory(directory) {
@@ -4125,7 +4214,7 @@ function inferExtensionFromDirectory(directory) {
4125
4214
  for (const entry of entries) {
4126
4215
  if (scanned >= MAX_SCAN_ENTRIES)
4127
4216
  return;
4128
- const fullPath = join6(dir, entry);
4217
+ const fullPath = join7(dir, entry);
4129
4218
  let stat;
4130
4219
  try {
4131
4220
  stat = lstatSync5(fullPath);
@@ -4300,7 +4389,7 @@ async function executeLspDiagnostics(params, signal) {
4300
4389
  const filePath = requireString(params, "filePath");
4301
4390
  const severity = severityFilter(params);
4302
4391
  try {
4303
- const absPath = resolvePathInsideContext(filePath);
4392
+ const absPath = resolveReadablePathInsideContext(filePath);
4304
4393
  if (isDirectoryPath(absPath)) {
4305
4394
  const extension = inferExtensionFromDirectory(absPath);
4306
4395
  if (!extension) {
@@ -4329,7 +4418,7 @@ async function executeLspDiagnostics(params, signal) {
4329
4418
  };
4330
4419
  return text(output2.output, details2);
4331
4420
  }
4332
- const result = await withLspClient(filePath, async (client) => client.diagnostics(filePath, signal), "diagnostics", clientOptions(signal));
4421
+ const result = await withLspClient(filePath, async (client, _workspaceRoot, resolvedFilePath) => client.diagnostics(resolvedFilePath, signal), "diagnostics", clientOptions(signal));
4333
4422
  if (result.transientError) {
4334
4423
  const message = result.transientError.message;
4335
4424
  const details2 = {
@@ -4404,7 +4493,7 @@ async function executeLspGotoDefinition(params, signal) {
4404
4493
  const line = requireNumber(params, "line");
4405
4494
  const character = requireNumber(params, "character");
4406
4495
  try {
4407
- const result = await withLspClient(filePath, async (client) => client.definition(filePath, line, character, signal), "definition", clientOptions(signal));
4496
+ const result = await withLspClient(filePath, async (client, _workspaceRoot, resolvedFilePath) => client.definition(resolvedFilePath, line, character, signal), "definition", clientOptions(signal));
4408
4497
  const locations = !result ? [] : Array.isArray(result) ? result : [result];
4409
4498
  const details = { filePath, line, character, locations };
4410
4499
  if (locations.length === 0)
@@ -4429,7 +4518,7 @@ async function executeLspFindReferences(params, signal) {
4429
4518
  const character = requireNumber(params, "character");
4430
4519
  const includeDeclaration = optionalBoolean(params, "includeDeclaration") ?? true;
4431
4520
  try {
4432
- const result = await withLspClient(filePath, async (client) => client.references(filePath, line, character, includeDeclaration, signal), "references", clientOptions(signal));
4521
+ const result = await withLspClient(filePath, async (client, _workspaceRoot, resolvedFilePath) => client.references(resolvedFilePath, line, character, includeDeclaration, signal), "references", clientOptions(signal));
4433
4522
  const references = Array.isArray(result) ? result : [];
4434
4523
  const total = references.length;
4435
4524
  const truncated = total > DEFAULT_MAX_REFERENCES;
@@ -4471,7 +4560,7 @@ async function executeLspPrepareRename(params, signal) {
4471
4560
  const line = requireNumber(params, "line");
4472
4561
  const character = requireNumber(params, "character");
4473
4562
  try {
4474
- const result = await withLspClient(filePath, async (client) => client.prepareRename(filePath, line, character, signal), "prepareRename", clientOptions(signal));
4563
+ const result = await withLspClient(filePath, async (client, _workspaceRoot, resolvedFilePath) => client.prepareRename(resolvedFilePath, line, character, signal), "prepareRename", clientOptions(signal));
4475
4564
  const details = { filePath, line, character, result };
4476
4565
  return text(formatPrepareRenameResult(result), details);
4477
4566
  } catch (error) {
@@ -4492,7 +4581,7 @@ async function executeLspRename(params, signal) {
4492
4581
  const character = requireNumber(params, "character");
4493
4582
  const newName = requireString(params, "newName");
4494
4583
  try {
4495
- const result = await withLspClient(filePath, async (client) => client.rename(filePath, line, character, newName, signal), "rename", clientOptions(signal));
4584
+ const result = await withLspClient(filePath, async (client, _workspaceRoot, resolvedFilePath) => client.rename(resolvedFilePath, line, character, newName, signal), "rename", clientOptions(signal));
4496
4585
  const details = { filePath, line, character, newName, apply: result.apply, edit: result.edit };
4497
4586
  return text(formatApplyResult(result.apply), details, !result.apply.success);
4498
4587
  } catch (error) {
@@ -4572,7 +4661,7 @@ async function executeLspSymbols(params, signal) {
4572
4661
  const symbols2 = await withLspClient(filePath, async (client) => client.workspaceSymbols(query, signal), "workspaceSymbols", clientOptions(signal));
4573
4662
  return formatSymbolsResult(filePath, scope, symbols2, limit, query);
4574
4663
  }
4575
- const symbols = await withLspClient(filePath, async (client) => client.documentSymbols(filePath, signal), "documentSymbols", clientOptions(signal));
4664
+ const symbols = await withLspClient(filePath, async (client, _workspaceRoot, resolvedFilePath) => client.documentSymbols(resolvedFilePath, signal), "documentSymbols", clientOptions(signal));
4576
4665
  return formatSymbolsResult(filePath, scope, symbols, limit);
4577
4666
  } catch (error) {
4578
4667
  const query = optionalString(params, "query");
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omo",
3
- "version": "5.0.0-beta.1",
3
+ "version": "5.0.0-beta.11",
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.1) Checking Bootstrap Provisioning"
11
+ "statusMessage": "(OmO 5.0.0-beta.11) 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.1",
3
+ "version": "5.0.0-beta.11",
4
4
  "description": "Codex SessionStart bootstrap component that provisions LazyCodex runtime dependencies from a detached worker.",
5
5
  "type": "module",
6
6
  "private": true,
@@ -4003,7 +4003,7 @@ function finalize(ctx, schema) {
4003
4003
  result.$schema = "http://json-schema.org/draft-07/schema#";
4004
4004
  } else if (ctx.target === "draft-04") {
4005
4005
  result.$schema = "http://json-schema.org/draft-04/schema#";
4006
- } else if (ctx.target === "openapi-3.0") {} else {}
4006
+ } else if (ctx.target === "openapi-3.0") {}
4007
4007
  if (ctx.external?.uri) {
4008
4008
  const id = ctx.external.registry.get(schema)?.id;
4009
4009
  if (!id)
@@ -4212,7 +4212,7 @@ var literalProcessor = (schema, ctx, json, _params) => {
4212
4212
  if (val === undefined) {
4213
4213
  if (ctx.unrepresentable === "throw") {
4214
4214
  throw new Error("Literal `undefined` cannot be represented in JSON Schema");
4215
- } else {}
4215
+ }
4216
4216
  } else if (typeof val === "bigint") {
4217
4217
  if (ctx.unrepresentable === "throw") {
4218
4218
  throw new Error("BigInt literals cannot be represented in JSON Schema");
@@ -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()
@@ -5597,13 +5652,27 @@ var OmoMemoryAgentOverridesSchema = object({
5597
5652
  var OmoMemorySettingsSchema = object({
5598
5653
  enabled: boolean2().default(true),
5599
5654
  agent: string2().min(1).default("auto"),
5655
+ tool_exposure: _enum(["direct", "search"]).default("direct"),
5600
5656
  reflection: OmoMemoryReflectionSchema.default({
5601
- trigger: { step_count: 0, on_compaction: true },
5657
+ enabled: true,
5658
+ trigger: { step_count: 25, on_compaction: true },
5602
5659
  merge: "auto",
5603
5660
  category: "quick",
5604
5661
  timeout_minutes: 15,
5605
5662
  sandbox: "auto"
5606
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 }),
5607
5676
  sync: OmoMemorySyncSchema.default({ enabled: true }),
5608
5677
  search: OmoMemorySearchSchema.default({ enabled: true }),
5609
5678
  compile_warn_tokens: number2().int().positive().default(30000),
@@ -5612,7 +5681,13 @@ var OmoMemorySettingsSchema = object({
5612
5681
  var OmoMemorySettingsLayerSchema = object({
5613
5682
  enabled: boolean2().optional(),
5614
5683
  agent: string2().min(1).optional(),
5684
+ tool_exposure: _enum(["direct", "search"]).optional(),
5615
5685
  reflection: OmoMemoryReflectionLayerSchema.optional(),
5686
+ nudge: OmoMemoryNudgeLayerSchema.optional(),
5687
+ facts: OmoMemoryFactsLayerSchema.optional(),
5688
+ dream: OmoMemoryDreamLayerSchema.optional(),
5689
+ people: OmoMemoryPeopleLayerSchema.optional(),
5690
+ soul: OmoMemorySoulLayerSchema.optional(),
5616
5691
  sync: OmoMemorySyncLayerSchema.optional(),
5617
5692
  search: OmoMemorySearchLayerSchema.optional(),
5618
5693
  compile_warn_tokens: number2().int().positive().optional(),
@@ -5651,6 +5726,16 @@ var OmoTaskTeamSettingsSchema = object({
5651
5726
  var OmoTaskWarningsSchema = object({
5652
5727
  unavailable_categories: boolean2().default(true)
5653
5728
  }).strict();
5729
+ var OmoTaskDagSettingsSchema = object({
5730
+ max_nodes_per_run: number2().int().positive().default(64),
5731
+ max_runs_per_session: number2().int().positive().default(16),
5732
+ subscriber_ring: number2().int().positive().default(1000),
5733
+ heartbeat_ms: number2().int().positive().default(15000),
5734
+ history_default_limit: number2().int().positive().default(256),
5735
+ history_max_limit: number2().int().positive().default(1000),
5736
+ retention_days: number2().int().positive().default(7),
5737
+ max_prompt_bytes: number2().int().positive().default(262144)
5738
+ }).strict();
5654
5739
  var OmoTaskSettingsSchema = object({
5655
5740
  default_execution_mode: _enum(["in-process", "process"]).default("in-process"),
5656
5741
  default_concurrency: number2().int().positive().default(5),
@@ -5668,7 +5753,18 @@ var OmoTaskSettingsSchema = object({
5668
5753
  max_members: 8,
5669
5754
  max_parallel_members: 4,
5670
5755
  max_wall_clock_minutes: 120
5671
- })
5756
+ }),
5757
+ dag: OmoTaskDagSettingsSchema.optional()
5758
+ }).strict();
5759
+ var OmoTaskDagSettingsLayerSchema = object({
5760
+ max_nodes_per_run: number2().int().positive().optional(),
5761
+ max_runs_per_session: number2().int().positive().optional(),
5762
+ subscriber_ring: number2().int().positive().optional(),
5763
+ heartbeat_ms: number2().int().positive().optional(),
5764
+ history_default_limit: number2().int().positive().optional(),
5765
+ history_max_limit: number2().int().positive().optional(),
5766
+ retention_days: number2().int().positive().optional(),
5767
+ max_prompt_bytes: number2().int().positive().optional()
5672
5768
  }).strict();
5673
5769
  var OmoTaskWaitLayerSchema = object({
5674
5770
  min_ms: number2().int().positive().optional(),
@@ -5696,7 +5792,8 @@ var OmoTaskSettingsLayerSchema = object({
5696
5792
  resume_children: boolean2().optional(),
5697
5793
  warnings: OmoTaskWarningsLayerSchema.optional(),
5698
5794
  wait: OmoTaskWaitLayerSchema.optional(),
5699
- team: OmoTaskTeamSettingsLayerSchema.optional()
5795
+ team: OmoTaskTeamSettingsLayerSchema.optional(),
5796
+ dag: OmoTaskDagSettingsLayerSchema.optional()
5700
5797
  }).strict();
5701
5798
  function resolveOmoTaskSettings(input, resolveParallelism = availableParallelism) {
5702
5799
  const record2 = record(string2(), unknown()).parse(input);
@@ -5753,6 +5850,15 @@ var OmoTeamSpecLayerSchema = OmoTeamSpecBaseSchema.partial();
5753
5850
  var OmoTeamsConfigSchema = record(string2(), OmoTeamSpecSchema);
5754
5851
  var OmoTeamsConfigLayerSchema = record(string2(), OmoTeamSpecLayerSchema);
5755
5852
 
5853
+ // ../../omo-config-core/src/schema/telemetry.ts
5854
+ var OmoTelemetrySettingsShape = {
5855
+ enabled: boolean2()
5856
+ };
5857
+ var OmoTelemetrySettingsLayerSchema = object(OmoTelemetrySettingsShape).partial().strict();
5858
+ var OmoTelemetrySettingsSchema = OmoTelemetrySettingsLayerSchema.extend({
5859
+ enabled: boolean2().default(true)
5860
+ }).strict();
5861
+
5756
5862
  // ../../omo-config-core/src/schema/config.ts
5757
5863
  var OmoOpenCodeHarnessConfigSchema = record(string2(), unknown());
5758
5864
  var OmoTypedHarnessConfigSchema = object({
@@ -5762,7 +5868,8 @@ var OmoTypedHarnessConfigSchema = object({
5762
5868
  task: OmoTaskSettingsLayerSchema.optional(),
5763
5869
  teams: OmoTeamsConfigLayerSchema.optional(),
5764
5870
  models: OmoModelCatalogLayerSchema.optional(),
5765
- memory: OmoMemorySettingsLayerSchema.optional()
5871
+ memory: OmoMemorySettingsLayerSchema.optional(),
5872
+ telemetry: OmoTelemetrySettingsLayerSchema.optional()
5766
5873
  }).strict();
5767
5874
  var OmoConfigProfileSchema = object({
5768
5875
  categories: OmoCategoriesConfigSchema.optional(),
@@ -5772,6 +5879,7 @@ var OmoConfigProfileSchema = object({
5772
5879
  teams: OmoTeamsConfigLayerSchema.optional(),
5773
5880
  models: OmoModelCatalogLayerSchema.optional(),
5774
5881
  memory: OmoMemorySettingsLayerSchema.optional(),
5882
+ telemetry: OmoTelemetrySettingsLayerSchema.optional(),
5775
5883
  "[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
5776
5884
  "[senpi]": OmoTypedHarnessConfigSchema.optional(),
5777
5885
  "[codex]": OmoTypedHarnessConfigSchema.optional()
@@ -5785,6 +5893,7 @@ var OmoConfigSchema = object({
5785
5893
  teams: OmoTeamsConfigSchema.optional(),
5786
5894
  models: OmoModelCatalogSchema.optional(),
5787
5895
  memory: OmoMemorySettingsSchema.optional(),
5896
+ telemetry: OmoTelemetrySettingsSchema.optional(),
5788
5897
  "[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
5789
5898
  "[senpi]": OmoTypedHarnessConfigSchema.optional(),
5790
5899
  "[codex]": OmoTypedHarnessConfigSchema.optional(),
@@ -5801,6 +5910,7 @@ var OmoConfigLayerSchema = object({
5801
5910
  teams: OmoTeamsConfigLayerSchema.optional(),
5802
5911
  models: OmoModelCatalogLayerSchema.optional(),
5803
5912
  memory: OmoMemorySettingsLayerSchema.optional(),
5913
+ telemetry: OmoTelemetrySettingsLayerSchema.optional(),
5804
5914
  "[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
5805
5915
  "[senpi]": OmoTypedHarnessConfigSchema.optional(),
5806
5916
  "[codex]": OmoTypedHarnessConfigSchema.optional(),