oh-my-opencode 5.0.0-beta.1 → 5.0.0-beta.10
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.
- package/.agents/command/publish.md +44 -16
- package/.agents/skills/publish/SKILL.md +44 -16
- package/.agents/skills/work-with-pr/SKILL.md +37 -23
- package/.opencode/command/publish.md +44 -16
- package/.opencode/skills/work-with-pr/SKILL.md +37 -23
- package/README.md +12 -1
- package/dist/agents/atlas/agent.d.ts +0 -1
- package/dist/agents/sisyphus/grok-4.d.ts +20 -0
- package/dist/agents/sisyphus/index.d.ts +2 -0
- package/dist/agents/sisyphus-agent-config.d.ts +6 -0
- package/dist/agents/sisyphus-agent-factory.d.ts +1 -1
- package/dist/agents/sisyphus-runtime-prompt-reconciler.d.ts +15 -4
- package/dist/agents/types.d.ts +2 -2
- package/dist/cli/index.js +797 -465
- package/dist/cli/run/on-complete-hook.d.ts +2 -0
- package/dist/cli-node/index.js +797 -465
- package/dist/hooks/atlas/final-wave-approval-gate.test-support.d.ts +50 -0
- package/dist/hooks/atlas/system-reminder-templates.d.ts +0 -1
- package/dist/index.js +1511 -1140
- package/dist/shared/normalize-sdk-response.d.ts +1 -0
- package/dist/shared/shell-env.d.ts +1 -1
- package/dist/skills/coding-agent-sessions/SKILL.md +3 -2
- package/dist/skills/coding-agent-sessions/references/all-platforms.md +1 -1
- package/dist/skills/coding-agent-sessions/references/senpi.md +4 -4
- package/dist/skills/coding-agent-sessions/scripts/agent_sessions/pi_family.py +1 -1
- package/dist/skills/frontend/SKILL.md +10 -7
- package/dist/skills/frontend/references/design/_INDEX.md +1 -0
- package/dist/skills/frontend/references/design/stylegallery.md +80 -0
- package/dist/skills/ultimate-browsing/ATTRIBUTION.md +37 -10
- package/dist/skills/ultimate-browsing/engine/AGENTS.md +179 -0
- package/dist/skills/ultimate-browsing/engine/templates/package.json +1 -1
- package/dist/skills/ultimate-browsing/references/chrome-stealth.md +11 -11
- package/dist/skills/ulw-plan/SKILL.md +2 -2
- package/dist/skills/ulw-plan/references/full-workflow.md +27 -3
- package/dist/skills/ulw-plan/references/intent-clear.md +2 -1
- package/dist/skills/ulw-plan/references/intent-unclear.md +3 -3
- package/dist/tui.js +176 -14
- package/package.json +21 -19
- package/packages/lsp-core/src/lsp/client-diagnostics-concurrency.integration.test.ts +44 -0
- package/packages/lsp-core/src/lsp/client-diagnostics-freshness.integration.test.ts +0 -28
- package/packages/lsp-core/src/lsp/client-wrapper.test.ts +60 -7
- package/packages/lsp-core/src/lsp/client-wrapper.ts +69 -16
- package/packages/lsp-core/src/lsp/workspace-edit-adversarial.test.ts +20 -1
- package/packages/lsp-core/src/tools/diagnostics.ts +3 -3
- package/packages/lsp-core/src/tools/navigation.ts +4 -2
- package/packages/lsp-core/src/tools/rename.ts +4 -2
- package/packages/lsp-core/src/tools/symbols.ts +1 -1
- package/packages/lsp-daemon/dist/cli.js +83 -29
- package/packages/lsp-daemon/dist/client.js +76 -22
- package/packages/lsp-daemon/dist/index.js +81 -27
- package/packages/lsp-tools-mcp/dist/cli.js +76 -22
- package/packages/lsp-tools-mcp/dist/mcp.js +76 -22
- package/packages/lsp-tools-mcp/dist/tools.js +76 -22
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
- package/packages/omo-codex/plugin/components/codegraph/dist/cli.js +118 -8
- package/packages/omo-codex/plugin/components/codegraph/dist/serve.js +118 -8
- package/packages/omo-codex/plugin/components/codegraph/package.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
- package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/test/codex-hook.test.ts +3 -17
- package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +3 -3
- package/packages/omo-codex/plugin/components/lsp/dist/cli.js +83 -29
- package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
- package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
- package/packages/omo-codex/plugin/components/rules/package.json +1 -1
- package/packages/omo-codex/plugin/components/rules/test/bundled-rules-priority.test.ts +11 -16
- package/packages/omo-codex/plugin/components/rules/test/bundled-rules.test.ts +16 -23
- package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-budget.test.ts +9 -7
- package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-context.test.ts +0 -6
- package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-dedup.test.ts +6 -4
- package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-directive.test.ts +12 -9
- package/packages/omo-codex/plugin/components/rules/test/codex-hook.test.ts +28 -37
- package/packages/omo-codex/plugin/components/rules/test/formatter.test.ts +37 -69
- package/packages/omo-codex/plugin/components/rules/test/hook-output.test.ts +2 -3
- package/packages/omo-codex/plugin/components/rules/test/windows-git-bash-bundled-rule.test.ts +1 -15
- package/packages/omo-codex/plugin/components/start-work-continuation/AGENTS.md +3 -2
- package/packages/omo-codex/plugin/components/start-work-continuation/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/start-work-continuation/package.json +1 -1
- package/packages/omo-codex/plugin/components/start-work-continuation/test/cli.test.ts +0 -3
- package/packages/omo-codex/plugin/components/start-work-continuation/test/codex-hook.test.ts +2 -16
- package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/test/thread-title-hook.test.ts +3 -9
- package/packages/omo-codex/plugin/components/telemetry/dist/cli.js +24 -12
- package/packages/omo-codex/plugin/components/telemetry/dist/posthog.js +24 -12
- package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/directive.md +6 -0
- package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/skills/ultrawork/SKILL.md +6 -0
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/SKILL.md +2 -2
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/full-workflow.md +27 -3
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/intent-clear.md +2 -1
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/intent-unclear.md +3 -3
- package/packages/omo-codex/plugin/components/ultrawork/test/codex-hook.test.ts +0 -136
- package/packages/omo-codex/plugin/components/ultrawork/test/skill-pointer.test.ts +0 -2
- package/packages/omo-codex/plugin/components/ulw-loop/directive.md +6 -0
- package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +4 -4
- package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/SKILL.md +3 -2
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/define-goal.md +108 -0
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +1 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint-continuation.test.ts +0 -1
- package/packages/omo-codex/plugin/components/ulw-loop/test/codex-goal-instruction.test.ts +2 -2
- package/packages/omo-codex/plugin/components/ulw-loop/test/codex-hook.test.ts +0 -3
- package/packages/omo-codex/plugin/components/ulw-loop/test/package-smoke.test.ts +2 -35
- package/packages/omo-codex/plugin/components/ulw-loop/test/ultrawork-directive.test.ts +4 -5
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-codegraph-init-guidance.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-codegraph-bootstrap.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-start-work-continuation.json +1 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
- package/packages/omo-codex/plugin/hooks/subagent-stop-checking-start-work-continuation.json +1 -1
- package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/package-lock.json +20 -20
- package/packages/omo-codex/plugin/package.json +1 -1
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/SKILL.md +3 -2
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/all-platforms.md +1 -1
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/senpi.md +4 -4
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/pi_family.py +1 -1
- package/packages/omo-codex/plugin/skills/frontend/SKILL.md +10 -7
- package/packages/omo-codex/plugin/skills/frontend/references/design/_INDEX.md +1 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/stylegallery.md +80 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/ATTRIBUTION.md +37 -10
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/AGENTS.md +179 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/templates/package.json +1 -1
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/chrome-stealth.md +11 -11
- package/packages/omo-codex/plugin/skills/ultrawork/SKILL.md +6 -0
- package/packages/omo-codex/plugin/skills/ulw-loop/SKILL.md +3 -2
- package/packages/omo-codex/plugin/skills/ulw-loop/references/define-goal.md +108 -0
- package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +1 -0
- package/packages/omo-codex/plugin/skills/ulw-plan/SKILL.md +2 -2
- package/packages/omo-codex/plugin/skills/ulw-plan/references/full-workflow.md +27 -3
- package/packages/omo-codex/plugin/skills/ulw-plan/references/intent-clear.md +2 -1
- package/packages/omo-codex/plugin/skills/ulw-plan/references/intent-unclear.md +3 -3
- package/packages/omo-codex/plugin/test/aggregate-agents.test.mjs +19 -173
- package/packages/omo-codex/plugin/test/aggregate-hooks.test.mjs +4 -24
- package/packages/omo-codex/plugin/test/aggregate-plugin-fixture.mjs +175 -13
- package/packages/omo-codex/plugin/test/aggregate.test.mjs +78 -2
- package/packages/omo-codex/plugin/test/auto-update-release-notes.test.mjs +19 -33
- package/packages/omo-codex/plugin/test/lcx-contribute-bug-fix-template.test.mjs +21 -27
- package/packages/omo-codex/plugin/test/scaffold-plan.test.mjs +0 -36
- package/packages/omo-codex/plugin/test/sync-skills-codex-compatibility.test.mjs +101 -0
- package/packages/omo-codex/plugin/test/sync-skills.test.mjs +1 -119
- package/packages/omo-codex/plugin/test/teammode-archive-ambiguity.test.mjs +0 -40
- package/packages/omo-codex/plugin/test/teammode-communication.test.mjs +6 -62
- package/packages/omo-codex/plugin/test/teammode-thread-links.test.mjs +3 -36
- package/packages/omo-codex/plugin/test/teammode-transport.test.mjs +0 -44
- package/packages/omo-codex/plugin/test/teammode-worktree.test.mjs +2 -6
- package/packages/omo-codex/plugin/test/ultrawork-skill-pointer.test.mjs +0 -3
- package/packages/omo-codex/plugin/test/ulw-plan-review-state-contract.test.mjs +0 -3
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +57 -19
- package/packages/omo-codex/scripts/install-lazycodex-version-stamp.test.mjs +7 -2
- package/packages/shared-skills/skills/coding-agent-sessions/SKILL.md +3 -2
- package/packages/shared-skills/skills/coding-agent-sessions/references/all-platforms.md +1 -1
- package/packages/shared-skills/skills/coding-agent-sessions/references/senpi.md +4 -4
- package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/pi_family.py +1 -1
- package/packages/shared-skills/skills/frontend/SKILL.md +10 -7
- package/packages/shared-skills/skills/frontend/references/design/_INDEX.md +1 -0
- package/packages/shared-skills/skills/frontend/references/design/stylegallery.md +80 -0
- package/packages/shared-skills/skills/ultimate-browsing/ATTRIBUTION.md +37 -10
- package/packages/shared-skills/skills/ultimate-browsing/engine/AGENTS.md +179 -0
- package/packages/shared-skills/skills/ultimate-browsing/engine/templates/package.json +1 -1
- package/packages/shared-skills/skills/ultimate-browsing/references/chrome-stealth.md +11 -11
- package/packages/shared-skills/skills/ulw-plan/SKILL.md +2 -2
- package/packages/shared-skills/skills/ulw-plan/references/full-workflow.md +27 -3
- package/packages/shared-skills/skills/ulw-plan/references/intent-clear.md +2 -1
- package/packages/shared-skills/skills/ulw-plan/references/intent-unclear.md +3 -3
- package/dist/tools/call-omo-agent/background-agent-executor.d.ts +0 -5
- package/packages/omo-codex/plugin/test/aggregate-skills.test.mjs +0 -92
- package/packages/omo-codex/plugin/test/sync-skills-orchestration.test.mjs +0 -314
- package/packages/omo-codex/plugin/test/ulw-plan-scope-contract.test.mjs +0 -24
|
@@ -306,8 +306,8 @@ function createIdleTimer(idleTimeoutMs, log, onTimeout) {
|
|
|
306
306
|
};
|
|
307
307
|
}
|
|
308
308
|
// ../lsp-core/src/lsp/client-wrapper.ts
|
|
309
|
-
import { existsSync as existsSync9, statSync as statSync3 } from "node:fs";
|
|
310
|
-
import { dirname as dirname6, join as join4, resolve as resolve7 } from "node:path";
|
|
309
|
+
import { existsSync as existsSync9, realpathSync as realpathSync4, statSync as statSync3 } from "node:fs";
|
|
310
|
+
import { basename as basename3, dirname as dirname6, join as join4, resolve as resolve7 } from "node:path";
|
|
311
311
|
|
|
312
312
|
// ../lsp-core/src/request-context.ts
|
|
313
313
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
@@ -4030,32 +4030,86 @@ function isDirectoryPath(filePath) {
|
|
|
4030
4030
|
}
|
|
4031
4031
|
}
|
|
4032
4032
|
function findWorkspaceRoot(filePath) {
|
|
4033
|
-
const
|
|
4033
|
+
const cwd = contextCwd();
|
|
4034
|
+
const abs = resolveReadablePathInsideContext(filePath);
|
|
4034
4035
|
let dir = abs;
|
|
4035
4036
|
if (!isDirectoryPath(dir)) {
|
|
4036
4037
|
dir = dirname6(dir);
|
|
4037
4038
|
}
|
|
4038
|
-
|
|
4039
|
-
while (dir
|
|
4040
|
-
|
|
4041
|
-
|
|
4042
|
-
|
|
4039
|
+
const fallbackRoot = nearestExistingDirectoryInsideContext(dir, cwd) ?? cwd;
|
|
4040
|
+
while (isPathInside(cwd, dir)) {
|
|
4041
|
+
const canonicalDir = existingDirectoryInsideContext(dir, cwd);
|
|
4042
|
+
if (canonicalDir !== undefined) {
|
|
4043
|
+
for (const marker of WORKSPACE_MARKERS) {
|
|
4044
|
+
if (existsSync9(join4(dir, marker))) {
|
|
4045
|
+
return canonicalDir;
|
|
4046
|
+
}
|
|
4043
4047
|
}
|
|
4044
4048
|
}
|
|
4045
|
-
|
|
4049
|
+
if (dir === cwd)
|
|
4050
|
+
break;
|
|
4046
4051
|
dir = dirname6(dir);
|
|
4047
4052
|
}
|
|
4048
|
-
return
|
|
4053
|
+
return fallbackRoot;
|
|
4049
4054
|
}
|
|
4050
|
-
function
|
|
4055
|
+
function resolveReadablePathInsideContext(filePath) {
|
|
4051
4056
|
const cwd = contextCwd();
|
|
4052
4057
|
const abs = resolve7(cwd, filePath);
|
|
4058
|
+
if (isPathInside(cwd, abs))
|
|
4059
|
+
return abs;
|
|
4060
|
+
const rebased = rebaseThroughCanonicalAncestor(abs, cwd);
|
|
4061
|
+
if (rebased !== undefined)
|
|
4062
|
+
return rebased;
|
|
4063
|
+
const canonical = canonicalizeExistingOrNearestAncestor(abs);
|
|
4064
|
+
if (isPathInside(cwd, canonical))
|
|
4065
|
+
return canonical;
|
|
4066
|
+
throw new LspInvalidPathError(`LSP file path must be inside request cwd: ${filePath}`);
|
|
4067
|
+
}
|
|
4068
|
+
function resolvePathInsideContext(filePath) {
|
|
4069
|
+
const cwd = contextCwd();
|
|
4070
|
+
const abs = resolveReadablePathInsideContext(filePath);
|
|
4053
4071
|
const canonical = canonicalizeExistingOrNearestAncestor(abs);
|
|
4054
4072
|
if (!isPathInside(cwd, canonical)) {
|
|
4055
4073
|
throw new LspInvalidPathError(`LSP file path must be inside request cwd: ${filePath}`);
|
|
4056
4074
|
}
|
|
4057
4075
|
return canonical;
|
|
4058
4076
|
}
|
|
4077
|
+
function rebaseThroughCanonicalAncestor(path, cwd) {
|
|
4078
|
+
let current = path;
|
|
4079
|
+
const suffix = [];
|
|
4080
|
+
while (true) {
|
|
4081
|
+
if (existsSync9(current)) {
|
|
4082
|
+
const canonical = realpathSync4(current);
|
|
4083
|
+
if (isPathInside(cwd, canonical))
|
|
4084
|
+
return suffix.length === 0 ? canonical : join4(canonical, ...suffix);
|
|
4085
|
+
}
|
|
4086
|
+
const parent = dirname6(current);
|
|
4087
|
+
if (parent === current)
|
|
4088
|
+
return;
|
|
4089
|
+
suffix.unshift(basename3(current));
|
|
4090
|
+
current = parent;
|
|
4091
|
+
}
|
|
4092
|
+
}
|
|
4093
|
+
function existingDirectoryInsideContext(directory, cwd) {
|
|
4094
|
+
if (!existsSync9(directory))
|
|
4095
|
+
return;
|
|
4096
|
+
const canonical = realpathSync4(directory);
|
|
4097
|
+
if (!statSync3(canonical).isDirectory())
|
|
4098
|
+
return;
|
|
4099
|
+
return isPathInside(cwd, canonical) ? canonical : undefined;
|
|
4100
|
+
}
|
|
4101
|
+
function nearestExistingDirectoryInsideContext(directory, cwd) {
|
|
4102
|
+
let current = directory;
|
|
4103
|
+
while (isPathInside(cwd, current)) {
|
|
4104
|
+
const canonical = existingDirectoryInsideContext(current, cwd);
|
|
4105
|
+
if (canonical !== undefined)
|
|
4106
|
+
return canonical;
|
|
4107
|
+
if (current === cwd)
|
|
4108
|
+
return;
|
|
4109
|
+
current = dirname6(current);
|
|
4110
|
+
}
|
|
4111
|
+
return;
|
|
4112
|
+
}
|
|
4059
4113
|
function formatServerLookupError(result) {
|
|
4060
4114
|
if (result.status === "not_installed") {
|
|
4061
4115
|
return formatNotInstalled(result);
|
|
@@ -4126,7 +4180,7 @@ function formatNotInstalled(result) {
|
|
|
4126
4180
|
].join(`
|
|
4127
4181
|
`);
|
|
4128
4182
|
}
|
|
4129
|
-
var
|
|
4183
|
+
var READ_ONLY_TOOLS = new Set([
|
|
4130
4184
|
"diagnostics",
|
|
4131
4185
|
"definition",
|
|
4132
4186
|
"references",
|
|
@@ -4135,7 +4189,7 @@ var READ_ONLY_RETRY_TOOLS = new Set([
|
|
|
4135
4189
|
"prepareRename"
|
|
4136
4190
|
]);
|
|
4137
4191
|
async function withLspClient(filePath, fn, toolName, options = {}) {
|
|
4138
|
-
const absPath = resolvePathInsideContext(filePath);
|
|
4192
|
+
const absPath = READ_ONLY_TOOLS.has(toolName) ? resolveReadablePathInsideContext(filePath) : resolvePathInsideContext(filePath);
|
|
4139
4193
|
if (isDirectoryPath(absPath)) {
|
|
4140
4194
|
throw new LspInvalidPathError("Directory paths are not supported by this LSP tool. " + "Use lsp.diagnostics with a directory path for directory diagnostics.");
|
|
4141
4195
|
}
|
|
@@ -4150,9 +4204,9 @@ async function withLspClient(filePath, fn, toolName, options = {}) {
|
|
|
4150
4204
|
const acquireAndCall = async (allowRetry) => {
|
|
4151
4205
|
const client = await manager.getClient(root, server2, options.signal);
|
|
4152
4206
|
try {
|
|
4153
|
-
return await fn(client, root);
|
|
4207
|
+
return await fn(client, root, absPath);
|
|
4154
4208
|
} catch (err) {
|
|
4155
|
-
if (allowRetry &&
|
|
4209
|
+
if (allowRetry && READ_ONLY_TOOLS.has(toolName) && isLspDeadConnectionError(err)) {
|
|
4156
4210
|
manager.invalidateClient(root, server2.id, client);
|
|
4157
4211
|
return acquireAndCall(false);
|
|
4158
4212
|
}
|
|
@@ -4607,7 +4661,7 @@ async function executeLspDiagnostics(params, signal) {
|
|
|
4607
4661
|
const filePath = requireString(params, "filePath");
|
|
4608
4662
|
const severity = severityFilter(params);
|
|
4609
4663
|
try {
|
|
4610
|
-
const absPath =
|
|
4664
|
+
const absPath = resolveReadablePathInsideContext(filePath);
|
|
4611
4665
|
if (isDirectoryPath(absPath)) {
|
|
4612
4666
|
const extension = inferExtensionFromDirectory(absPath);
|
|
4613
4667
|
if (!extension) {
|
|
@@ -4636,7 +4690,7 @@ async function executeLspDiagnostics(params, signal) {
|
|
|
4636
4690
|
};
|
|
4637
4691
|
return text(output2.output, details2);
|
|
4638
4692
|
}
|
|
4639
|
-
const result = await withLspClient(filePath, async (client) => client.diagnostics(
|
|
4693
|
+
const result = await withLspClient(filePath, async (client, _workspaceRoot, resolvedFilePath) => client.diagnostics(resolvedFilePath, signal), "diagnostics", clientOptions(signal));
|
|
4640
4694
|
if (result.transientError) {
|
|
4641
4695
|
const message = result.transientError.message;
|
|
4642
4696
|
const details2 = {
|
|
@@ -4711,7 +4765,7 @@ async function executeLspGotoDefinition(params, signal) {
|
|
|
4711
4765
|
const line = requireNumber(params, "line");
|
|
4712
4766
|
const character = requireNumber(params, "character");
|
|
4713
4767
|
try {
|
|
4714
|
-
const result = await withLspClient(filePath, async (client) => client.definition(
|
|
4768
|
+
const result = await withLspClient(filePath, async (client, _workspaceRoot, resolvedFilePath) => client.definition(resolvedFilePath, line, character, signal), "definition", clientOptions(signal));
|
|
4715
4769
|
const locations = !result ? [] : Array.isArray(result) ? result : [result];
|
|
4716
4770
|
const details = { filePath, line, character, locations };
|
|
4717
4771
|
if (locations.length === 0)
|
|
@@ -4736,7 +4790,7 @@ async function executeLspFindReferences(params, signal) {
|
|
|
4736
4790
|
const character = requireNumber(params, "character");
|
|
4737
4791
|
const includeDeclaration = optionalBoolean(params, "includeDeclaration") ?? true;
|
|
4738
4792
|
try {
|
|
4739
|
-
const result = await withLspClient(filePath, async (client) => client.references(
|
|
4793
|
+
const result = await withLspClient(filePath, async (client, _workspaceRoot, resolvedFilePath) => client.references(resolvedFilePath, line, character, includeDeclaration, signal), "references", clientOptions(signal));
|
|
4740
4794
|
const references = Array.isArray(result) ? result : [];
|
|
4741
4795
|
const total = references.length;
|
|
4742
4796
|
const truncated = total > DEFAULT_MAX_REFERENCES;
|
|
@@ -4778,7 +4832,7 @@ async function executeLspPrepareRename(params, signal) {
|
|
|
4778
4832
|
const line = requireNumber(params, "line");
|
|
4779
4833
|
const character = requireNumber(params, "character");
|
|
4780
4834
|
try {
|
|
4781
|
-
const result = await withLspClient(filePath, async (client) => client.prepareRename(
|
|
4835
|
+
const result = await withLspClient(filePath, async (client, _workspaceRoot, resolvedFilePath) => client.prepareRename(resolvedFilePath, line, character, signal), "prepareRename", clientOptions(signal));
|
|
4782
4836
|
const details = { filePath, line, character, result };
|
|
4783
4837
|
return text(formatPrepareRenameResult(result), details);
|
|
4784
4838
|
} catch (error) {
|
|
@@ -4799,7 +4853,7 @@ async function executeLspRename(params, signal) {
|
|
|
4799
4853
|
const character = requireNumber(params, "character");
|
|
4800
4854
|
const newName = requireString(params, "newName");
|
|
4801
4855
|
try {
|
|
4802
|
-
const result = await withLspClient(filePath, async (client) => client.rename(
|
|
4856
|
+
const result = await withLspClient(filePath, async (client, _workspaceRoot, resolvedFilePath) => client.rename(resolvedFilePath, line, character, newName, signal), "rename", clientOptions(signal));
|
|
4803
4857
|
const details = { filePath, line, character, newName, apply: result.apply, edit: result.edit };
|
|
4804
4858
|
return text(formatApplyResult(result.apply), details, !result.apply.success);
|
|
4805
4859
|
} catch (error) {
|
|
@@ -4879,7 +4933,7 @@ async function executeLspSymbols(params, signal) {
|
|
|
4879
4933
|
const symbols2 = await withLspClient(filePath, async (client) => client.workspaceSymbols(query, signal), "workspaceSymbols", clientOptions(signal));
|
|
4880
4934
|
return formatSymbolsResult(filePath, scope, symbols2, limit, query);
|
|
4881
4935
|
}
|
|
4882
|
-
const symbols = await withLspClient(filePath, async (client) => client.documentSymbols(
|
|
4936
|
+
const symbols = await withLspClient(filePath, async (client, _workspaceRoot, resolvedFilePath) => client.documentSymbols(resolvedFilePath, signal), "documentSymbols", clientOptions(signal));
|
|
4883
4937
|
return formatSymbolsResult(filePath, scope, symbols, limit);
|
|
4884
4938
|
} catch (error) {
|
|
4885
4939
|
const query = optionalString(params, "query");
|
|
@@ -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
|
|
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
|
-
|
|
3732
|
-
while (dir
|
|
3733
|
-
|
|
3734
|
-
|
|
3735
|
-
|
|
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
|
-
|
|
3742
|
+
if (dir === cwd)
|
|
3743
|
+
break;
|
|
3739
3744
|
dir = dirname6(dir);
|
|
3740
3745
|
}
|
|
3741
|
-
return
|
|
3746
|
+
return fallbackRoot;
|
|
3742
3747
|
}
|
|
3743
|
-
function
|
|
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
|
|
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 &&
|
|
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 =
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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");
|
|
@@ -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.
|
|
11
|
+
"statusMessage": "(OmO 5.0.0-beta.10) 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.
|
|
3
|
+
"version": "5.0.0-beta.10",
|
|
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") {}
|
|
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
|
-
}
|
|
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(
|
|
5554
|
+
step_count: number2().int().nonnegative().default(25),
|
|
5555
5555
|
on_compaction: boolean2().default(true)
|
|
5556
5556
|
}).strict();
|
|
5557
5557
|
var OmoMemoryReflectionSchema = object({
|
|
5558
|
-
|
|
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
|
-
|
|
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(),
|