lazycodex-ai 5.0.0-beta.43 → 5.0.0-beta.45
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/dist/cli/index.js +236 -247
- package/dist/cli-node/index.js +236 -247
- package/package.json +3 -1
- 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/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/lsp/dist/.omo-runtime-manifest.json +2 -2
- 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/teammode/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
- 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/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
- 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/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-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-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-ulw-execute-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-ulw-execute-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 +12 -12
- package/packages/omo-codex/plugin/package.json +1 -1
- package/packages/omo-codex/plugin/test/sync-skills-codex-compatibility.test.mjs +47 -2
- package/packages/omo-codex/plugin/test/sync-skills.test.mjs +4 -0
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +32 -50
- package/packages/shared-skills/skill-source-filter.d.ts +16 -0
- package/packages/shared-skills/skill-source-filter.mjs +44 -0
package/dist/cli-node/index.js
CHANGED
|
@@ -55,7 +55,7 @@ var package_default;
|
|
|
55
55
|
var init_package = __esm(() => {
|
|
56
56
|
package_default = {
|
|
57
57
|
name: "oh-my-opencode",
|
|
58
|
-
version: "5.0.0-beta.
|
|
58
|
+
version: "5.0.0-beta.45",
|
|
59
59
|
description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
|
|
60
60
|
main: "./dist/index.js",
|
|
61
61
|
types: "dist/index.d.ts",
|
|
@@ -145,6 +145,7 @@ var init_package = __esm(() => {
|
|
|
145
145
|
"packages/omo-codex/plugin/components/telemetry/dist/cli.js",
|
|
146
146
|
"packages/omo-codex/plugin/components/ultrawork/dist/cli.js",
|
|
147
147
|
"packages/omo-codex/plugin/components/ulw-loop/dist/cli.js",
|
|
148
|
+
"packages/prompts-core/prompts/ultrawork/codex.md",
|
|
148
149
|
"packages/omo-codex/plugin/.codex-plugin",
|
|
149
150
|
"!packages/omo-codex/plugin/node_modules",
|
|
150
151
|
"!packages/omo-codex/plugin/**/node_modules",
|
|
@@ -238,7 +239,7 @@ var init_package = __esm(() => {
|
|
|
238
239
|
zod: "^4.4.3"
|
|
239
240
|
},
|
|
240
241
|
devDependencies: {
|
|
241
|
-
"@code-yeongyu/senpi": "2026.9.
|
|
242
|
+
"@code-yeongyu/senpi": "2026.9.6",
|
|
242
243
|
"@oh-my-opencode/agents-md-core": "workspace:*",
|
|
243
244
|
"@oh-my-opencode/ast-grep-mcp": "workspace:*",
|
|
244
245
|
"@oh-my-opencode/boulder-state": "workspace:*",
|
|
@@ -279,18 +280,18 @@ var init_package = __esm(() => {
|
|
|
279
280
|
typescript: "^7.0.2"
|
|
280
281
|
},
|
|
281
282
|
optionalDependencies: {
|
|
282
|
-
"oh-my-opencode-darwin-arm64": "5.0.0-beta.
|
|
283
|
-
"oh-my-opencode-darwin-x64": "5.0.0-beta.
|
|
284
|
-
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.
|
|
285
|
-
"oh-my-opencode-linux-arm64": "5.0.0-beta.
|
|
286
|
-
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.
|
|
287
|
-
"oh-my-opencode-linux-x64": "5.0.0-beta.
|
|
288
|
-
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.
|
|
289
|
-
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.
|
|
290
|
-
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.
|
|
291
|
-
"oh-my-opencode-windows-arm64": "5.0.0-beta.
|
|
292
|
-
"oh-my-opencode-windows-x64": "5.0.0-beta.
|
|
293
|
-
"oh-my-opencode-windows-x64-baseline": "5.0.0-beta.
|
|
283
|
+
"oh-my-opencode-darwin-arm64": "5.0.0-beta.45",
|
|
284
|
+
"oh-my-opencode-darwin-x64": "5.0.0-beta.45",
|
|
285
|
+
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.45",
|
|
286
|
+
"oh-my-opencode-linux-arm64": "5.0.0-beta.45",
|
|
287
|
+
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.45",
|
|
288
|
+
"oh-my-opencode-linux-x64": "5.0.0-beta.45",
|
|
289
|
+
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.45",
|
|
290
|
+
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.45",
|
|
291
|
+
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.45",
|
|
292
|
+
"oh-my-opencode-windows-arm64": "5.0.0-beta.45",
|
|
293
|
+
"oh-my-opencode-windows-x64": "5.0.0-beta.45",
|
|
294
|
+
"oh-my-opencode-windows-x64-baseline": "5.0.0-beta.45"
|
|
294
295
|
},
|
|
295
296
|
overrides: {
|
|
296
297
|
"@earendil-works/pi-agent-core": "0.84.2",
|
|
@@ -7253,7 +7254,7 @@ var init_category_model_requirements = __esm(() => {
|
|
|
7253
7254
|
{
|
|
7254
7255
|
providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
|
|
7255
7256
|
model: "claude-fable-5-1",
|
|
7256
|
-
variant: "
|
|
7257
|
+
variant: "max"
|
|
7257
7258
|
},
|
|
7258
7259
|
{
|
|
7259
7260
|
providers: ["kimi-for-coding", "moonshotai", "opencode-go", "opencode"],
|
|
@@ -8066,8 +8067,8 @@ var init_supplemental_entries = __esm(() => {
|
|
|
8066
8067
|
output: ["text"]
|
|
8067
8068
|
},
|
|
8068
8069
|
limit: {
|
|
8069
|
-
context:
|
|
8070
|
-
input:
|
|
8070
|
+
context: 1050000,
|
|
8071
|
+
input: 922000,
|
|
8071
8072
|
output: 128000
|
|
8072
8073
|
}
|
|
8073
8074
|
},
|
|
@@ -8492,6 +8493,9 @@ var init_model_capabilities = __esm(() => {
|
|
|
8492
8493
|
// packages/model-core/src/context-limit-resolver.ts
|
|
8493
8494
|
var init_context_limit_resolver = () => {};
|
|
8494
8495
|
|
|
8496
|
+
// packages/model-core/src/context-overflow.ts
|
|
8497
|
+
var init_context_overflow = () => {};
|
|
8498
|
+
|
|
8495
8499
|
// packages/model-core/src/model-capabilities-snapshot.ts
|
|
8496
8500
|
function isRecord3(value) {
|
|
8497
8501
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
@@ -8628,6 +8632,7 @@ var init_src2 = __esm(() => {
|
|
|
8628
8632
|
init_runtime_fallback_model();
|
|
8629
8633
|
init_model_capabilities();
|
|
8630
8634
|
init_context_limit_resolver();
|
|
8635
|
+
init_context_overflow();
|
|
8631
8636
|
});
|
|
8632
8637
|
|
|
8633
8638
|
// packages/omo-opencode/src/shared/model-sanitizer.ts
|
|
@@ -12690,8 +12695,8 @@ var init_model_capabilities_generated = __esm(() => {
|
|
|
12690
12695
|
]
|
|
12691
12696
|
},
|
|
12692
12697
|
limit: {
|
|
12693
|
-
context:
|
|
12694
|
-
input:
|
|
12698
|
+
context: 1050000,
|
|
12699
|
+
input: 922000,
|
|
12695
12700
|
output: 128000
|
|
12696
12701
|
}
|
|
12697
12702
|
},
|
|
@@ -86656,20 +86661,20 @@ var init_config_manager = __esm(() => {
|
|
|
86656
86661
|
|
|
86657
86662
|
// packages/telemetry-core/src/activity-state.ts
|
|
86658
86663
|
import { existsSync as existsSync25, mkdirSync as mkdirSync8, readFileSync as readFileSync12 } from "node:fs";
|
|
86659
|
-
import { basename as basename8, join as
|
|
86664
|
+
import { basename as basename8, join as join51 } from "node:path";
|
|
86660
86665
|
function resolveTelemetryStateDir(product, options = {}) {
|
|
86661
86666
|
const dataDir = resolveXdgDataDir(product.cacheDirName, {
|
|
86662
86667
|
env: options.env,
|
|
86663
86668
|
osProvider: options.osProvider
|
|
86664
86669
|
});
|
|
86665
|
-
const xdgStateDir = options.env?.XDG_DATA_HOME === undefined ? undefined :
|
|
86670
|
+
const xdgStateDir = options.env?.XDG_DATA_HOME === undefined ? undefined : join51(options.env.XDG_DATA_HOME, product.cacheDirName);
|
|
86666
86671
|
if (dataDir === xdgStateDir || xdgStateDir === undefined && basename8(dataDir) === product.cacheDirName) {
|
|
86667
86672
|
return dataDir;
|
|
86668
86673
|
}
|
|
86669
|
-
return
|
|
86674
|
+
return join51(dataDir, product.cacheDirName);
|
|
86670
86675
|
}
|
|
86671
86676
|
function getTelemetryActivityStateFilePath(stateDir) {
|
|
86672
|
-
return
|
|
86677
|
+
return join51(stateDir, POSTHOG_ACTIVITY_STATE_FILE);
|
|
86673
86678
|
}
|
|
86674
86679
|
function getDailyActiveCaptureState(input) {
|
|
86675
86680
|
const state = readPostHogActivityState(input.stateDir, input.diagnostics);
|
|
@@ -86740,9 +86745,9 @@ var DEFAULT_POSTHOG_HOST = "https://us.i.posthog.com", DEFAULT_POSTHOG_API_KEY =
|
|
|
86740
86745
|
|
|
86741
86746
|
// packages/telemetry-core/src/diagnostics.ts
|
|
86742
86747
|
import { appendFileSync as appendFileSync2, existsSync as existsSync26, mkdirSync as mkdirSync9, readFileSync as readFileSync13 } from "node:fs";
|
|
86743
|
-
import { join as
|
|
86748
|
+
import { join as join52 } from "node:path";
|
|
86744
86749
|
function getTelemetryDiagnosticsFilePath(diagnosticsDir) {
|
|
86745
|
-
return
|
|
86750
|
+
return join52(diagnosticsDir, DIAGNOSTICS_FILE_NAME);
|
|
86746
86751
|
}
|
|
86747
86752
|
function writeTelemetryDiagnostic(input, options) {
|
|
86748
86753
|
const now = options.now ?? new Date;
|
|
@@ -94521,7 +94526,7 @@ var package_default2;
|
|
|
94521
94526
|
var init_package2 = __esm(() => {
|
|
94522
94527
|
package_default2 = {
|
|
94523
94528
|
name: "@oh-my-opencode/omo-codex",
|
|
94524
|
-
version: "5.0.0-beta.
|
|
94529
|
+
version: "5.0.0-beta.45",
|
|
94525
94530
|
type: "module",
|
|
94526
94531
|
private: true,
|
|
94527
94532
|
description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
|
|
@@ -95489,7 +95494,7 @@ var init_update_toasts = __esm(() => {
|
|
|
95489
95494
|
|
|
95490
95495
|
// packages/omo-opencode/src/hooks/auto-update-checker/hook/background-update-check.ts
|
|
95491
95496
|
import { existsSync as existsSync47 } from "node:fs";
|
|
95492
|
-
import { dirname as dirname30, join as
|
|
95497
|
+
import { dirname as dirname30, join as join74 } from "node:path";
|
|
95493
95498
|
import { fileURLToPath as fileURLToPath5 } from "node:url";
|
|
95494
95499
|
function defaultGetModuleHostingWorkspace() {
|
|
95495
95500
|
try {
|
|
@@ -95643,7 +95648,7 @@ var init_background_update_check = __esm(() => {
|
|
|
95643
95648
|
init_update_toasts();
|
|
95644
95649
|
defaultDeps4 = {
|
|
95645
95650
|
existsSync: existsSync47,
|
|
95646
|
-
join:
|
|
95651
|
+
join: join74,
|
|
95647
95652
|
runBunInstallWithDetails,
|
|
95648
95653
|
log: log2,
|
|
95649
95654
|
getOpenCodeCacheDir,
|
|
@@ -98280,7 +98285,7 @@ function getUnsupportedOpenCodeVersionMessage(openCodeVersion) {
|
|
|
98280
98285
|
}
|
|
98281
98286
|
|
|
98282
98287
|
// packages/omo-codex/src/install/install-codex.ts
|
|
98283
|
-
import { join as
|
|
98288
|
+
import { join as join53, resolve as resolve12 } from "node:path";
|
|
98284
98289
|
import { existsSync as existsSync27 } from "node:fs";
|
|
98285
98290
|
import { homedir as homedir6 } from "node:os";
|
|
98286
98291
|
|
|
@@ -102586,26 +102591,9 @@ async function removeGitBashHooksOffWindows(input) {
|
|
|
102586
102591
|
`);
|
|
102587
102592
|
}
|
|
102588
102593
|
|
|
102589
|
-
// packages/omo-codex/src/install/omo-sot-migration.ts
|
|
102590
|
-
import { join as join50 } from "node:path";
|
|
102591
|
-
async function seedAndMigrateOmoSot(input) {
|
|
102592
|
-
const commandEnv = { ...input.env };
|
|
102593
|
-
const scriptPath = join50(input.repoRoot, "packages", "omo-codex", "plugin", "scripts", "migrate-omo-sot.mjs");
|
|
102594
|
-
try {
|
|
102595
|
-
await input.runCommand(process.execPath, [scriptPath, "--seed"], {
|
|
102596
|
-
cwd: input.repoRoot,
|
|
102597
|
-
env: commandEnv
|
|
102598
|
-
});
|
|
102599
|
-
} catch (error51) {
|
|
102600
|
-
if (!(error51 instanceof Error))
|
|
102601
|
-
throw error51;
|
|
102602
|
-
input.log(`Warning: skipped OMO SOT seed/migration: ${error51.message}`);
|
|
102603
|
-
}
|
|
102604
|
-
}
|
|
102605
|
-
|
|
102606
102594
|
// packages/omo-codex/src/install/install-ast-grep-sg.ts
|
|
102607
102595
|
init_src();
|
|
102608
|
-
import { join as
|
|
102596
|
+
import { join as join50 } from "node:path";
|
|
102609
102597
|
function describeResult(result) {
|
|
102610
102598
|
if (result.kind === "succeeded")
|
|
102611
102599
|
return null;
|
|
@@ -102619,7 +102607,7 @@ async function installAstGrepForCodex(options) {
|
|
|
102619
102607
|
return;
|
|
102620
102608
|
const platform = options.platform ?? process.platform;
|
|
102621
102609
|
const targetDir = astGrepRuntimeDir(options.codexHome, platform, options.arch ?? process.arch);
|
|
102622
|
-
const skillDir =
|
|
102610
|
+
const skillDir = join50(plugin.path, "skills", "ast-grep");
|
|
102623
102611
|
const installer = options.installer ?? runAstGrepSkillInstall;
|
|
102624
102612
|
try {
|
|
102625
102613
|
const result = await installer({ platform, skillDir, targetDir });
|
|
@@ -102652,7 +102640,7 @@ async function runCodexInstaller(options = {}) {
|
|
|
102652
102640
|
const env2 = options.env ?? process.env;
|
|
102653
102641
|
const platform = options.platform ?? process.platform;
|
|
102654
102642
|
const repoRoot = resolve12(options.repoRoot ?? findRepoRoot({ importerDir: import.meta.dir, env: env2 }));
|
|
102655
|
-
const codexHome = resolve12(options.codexHome ?? env2.CODEX_HOME ??
|
|
102643
|
+
const codexHome = resolve12(options.codexHome ?? env2.CODEX_HOME ?? join53(homedir6(), ".codex"));
|
|
102656
102644
|
const projectDirectory = resolve12(options.projectDirectory ?? env2.OMO_CODEX_PROJECT ?? process.cwd());
|
|
102657
102645
|
const binDir = resolveCodexInstallerBinDir({ binDir: options.binDir, codexHome, env: env2 });
|
|
102658
102646
|
const runCommand = options.runCommand ?? defaultRunCommand;
|
|
@@ -102669,9 +102657,9 @@ async function runCodexInstaller(options = {}) {
|
|
|
102669
102657
|
if (!gitBashResolution.found) {
|
|
102670
102658
|
throw new Error(gitBashResolution.installHint);
|
|
102671
102659
|
}
|
|
102672
|
-
const codexPackageRoot =
|
|
102660
|
+
const codexPackageRoot = join53(repoRoot, "packages", "omo-codex");
|
|
102673
102661
|
const marketplace = await readMarketplace(repoRoot, {
|
|
102674
|
-
marketplacePath:
|
|
102662
|
+
marketplacePath: join53(codexPackageRoot, "marketplace.json")
|
|
102675
102663
|
});
|
|
102676
102664
|
const distributionManifest = await readDistributionManifest(repoRoot);
|
|
102677
102665
|
const installed = [];
|
|
@@ -102717,7 +102705,7 @@ async function runCodexInstaller(options = {}) {
|
|
|
102717
102705
|
if (runtimeLink !== null)
|
|
102718
102706
|
log4(`Linked ${runtimeLink.name} -> ${runtimeLink.target}`);
|
|
102719
102707
|
else
|
|
102720
|
-
log4(`Warning: skipped the omo-agent-toolkit runtime wrapper because ${
|
|
102708
|
+
log4(`Warning: skipped the omo-agent-toolkit runtime wrapper because ${join53(repoRoot, "dist", "cli", "index.js")} is missing; omo-agent-toolkit ulw-loop commands will be unavailable until a package shipping dist/cli is installed`);
|
|
102721
102709
|
}
|
|
102722
102710
|
pluginSources.push({ name: entry.name, sourcePath });
|
|
102723
102711
|
installed.push(plugin);
|
|
@@ -102780,13 +102768,13 @@ async function runCodexInstaller(options = {}) {
|
|
|
102780
102768
|
continue;
|
|
102781
102769
|
log4(`Warning: deferred legacy Codex LSP daemon cleanup for v${cleanup.version}: ${cleanup.reason}`);
|
|
102782
102770
|
}
|
|
102783
|
-
const marketplaceRoot =
|
|
102771
|
+
const marketplaceRoot = join53(codexHome, "plugins", "cache", marketplace.name);
|
|
102784
102772
|
await writeCachedMarketplaceManifest({
|
|
102785
102773
|
marketplaceName: marketplace.name,
|
|
102786
102774
|
marketplaceRoot,
|
|
102787
102775
|
plugins: installed
|
|
102788
102776
|
});
|
|
102789
|
-
const configPath =
|
|
102777
|
+
const configPath = join53(codexHome, "config.toml");
|
|
102790
102778
|
await updateCodexConfig({
|
|
102791
102779
|
configPath,
|
|
102792
102780
|
repoRoot: codexPackageRoot,
|
|
@@ -102800,7 +102788,6 @@ async function runCodexInstaller(options = {}) {
|
|
|
102800
102788
|
autonomousPermissions: options.autonomousPermissions !== false,
|
|
102801
102789
|
...options.reasoning === undefined ? {} : { reasoning: options.reasoning }
|
|
102802
102790
|
});
|
|
102803
|
-
await seedAndMigrateOmoSot({ env: env2, log: log4, repoRoot, runCommand });
|
|
102804
102791
|
const projectCleanup = await repairProjectLocalCodexArtifactsBestEffort({
|
|
102805
102792
|
startDirectory: projectDirectory,
|
|
102806
102793
|
codexHome,
|
|
@@ -102846,7 +102833,7 @@ function findRepoRootFromImporter(importerDir) {
|
|
|
102846
102833
|
for (let depth = 0;depth <= 7; depth += 1) {
|
|
102847
102834
|
if (isRepoRootWithCodexPlugin(current))
|
|
102848
102835
|
return current;
|
|
102849
|
-
for (const wrapperPackageRoot of [
|
|
102836
|
+
for (const wrapperPackageRoot of [join53(current, "node_modules", "oh-my-openagent"), join53(current, "oh-my-openagent")]) {
|
|
102850
102837
|
if (isRepoRootWithCodexPlugin(wrapperPackageRoot))
|
|
102851
102838
|
return wrapperPackageRoot;
|
|
102852
102839
|
}
|
|
@@ -102864,7 +102851,7 @@ function findRepoRoot(input) {
|
|
|
102864
102851
|
return findRepoRootFromImporter(input.importerDir);
|
|
102865
102852
|
}
|
|
102866
102853
|
function isRepoRootWithCodexPlugin(repoRoot) {
|
|
102867
|
-
return existsSync27(
|
|
102854
|
+
return existsSync27(join53(repoRoot, "packages", "omo-codex", "plugin", ".codex-plugin", "plugin.json"));
|
|
102868
102855
|
}
|
|
102869
102856
|
function codexMarketplaceSource(marketplaceRoot) {
|
|
102870
102857
|
return { sourceType: "local", source: marketplaceRoot };
|
|
@@ -103001,11 +102988,11 @@ function defaultRunCommand2(command, args) {
|
|
|
103001
102988
|
// packages/omo-codex/src/install/codex-cleanup.ts
|
|
103002
102989
|
import { lstat as lstat14, readFile as readFile24, readdir as readdir13, rm as rm12, rmdir } from "node:fs/promises";
|
|
103003
102990
|
import { homedir as homedir8 } from "node:os";
|
|
103004
|
-
import { isAbsolute as isAbsolute11, join as
|
|
102991
|
+
import { isAbsolute as isAbsolute11, join as join56, relative as relative6, resolve as resolve15 } from "node:path";
|
|
103005
102992
|
|
|
103006
102993
|
// packages/omo-codex/src/install/codex-cleanup-bins.ts
|
|
103007
102994
|
import { lstat as lstat12, readFile as readFile22, readdir as readdir12, readlink as readlink6, rm as rm11 } from "node:fs/promises";
|
|
103008
|
-
import { dirname as dirname18, isAbsolute as isAbsolute9, join as
|
|
102995
|
+
import { dirname as dirname18, isAbsolute as isAbsolute9, join as join54, resolve as resolve13 } from "node:path";
|
|
103009
102996
|
var ROOT_RUNTIME_BIN_NAME = "omo";
|
|
103010
102997
|
var MANAGED_CODEX_BIN_NAMES = new Set([
|
|
103011
102998
|
ROOT_RUNTIME_BIN_NAME,
|
|
@@ -103035,7 +103022,7 @@ async function removeManagedCodexBins(binDir, platform) {
|
|
|
103035
103022
|
const binName = managedBinNameForEntry2(entry.name, platform);
|
|
103036
103023
|
if (binName === null || !MANAGED_CODEX_BIN_NAMES.has(binName))
|
|
103037
103024
|
continue;
|
|
103038
|
-
const linkPath =
|
|
103025
|
+
const linkPath = join54(binDir, entry.name);
|
|
103039
103026
|
if (await isManagedCodexBin(linkPath, platform, binName)) {
|
|
103040
103027
|
await rm11(linkPath, { force: true });
|
|
103041
103028
|
removed2.push(linkPath);
|
|
@@ -103188,7 +103175,7 @@ function nodeErrorCode5(error51) {
|
|
|
103188
103175
|
}
|
|
103189
103176
|
|
|
103190
103177
|
// packages/omo-codex/src/install/codex-cleanup-safety.ts
|
|
103191
|
-
import { dirname as dirname20, isAbsolute as isAbsolute10, join as
|
|
103178
|
+
import { dirname as dirname20, isAbsolute as isAbsolute10, join as join55, relative as relative5, resolve as resolve14 } from "node:path";
|
|
103192
103179
|
function codexHomeResolvesToFilesystemRoot(codexHome) {
|
|
103193
103180
|
const resolved = resolve14(codexHome);
|
|
103194
103181
|
return dirname20(resolved) === resolved;
|
|
@@ -103205,11 +103192,11 @@ function validateManagedCleanupTarget(input) {
|
|
|
103205
103192
|
if (target === codexHome)
|
|
103206
103193
|
return skipped(input.path, "outside managed Codex cleanup scope");
|
|
103207
103194
|
const exactManagedRoots = new Set([
|
|
103208
|
-
resolve14(
|
|
103209
|
-
resolve14(
|
|
103210
|
-
resolve14(
|
|
103211
|
-
resolve14(
|
|
103212
|
-
resolve14(
|
|
103195
|
+
resolve14(join55(codexHome, "plugins", "cache", "sisyphuslabs")),
|
|
103196
|
+
resolve14(join55(codexHome, ".tmp", "marketplaces", "sisyphuslabs")),
|
|
103197
|
+
resolve14(join55(codexHome, "runtime", "ast-grep")),
|
|
103198
|
+
resolve14(join55(codexHome, "runtime", "node")),
|
|
103199
|
+
resolve14(join55(codexHome, "plugins", "data", "omo-sisyphuslabs", "bootstrap"))
|
|
103213
103200
|
]);
|
|
103214
103201
|
if (exactManagedRoots.has(target))
|
|
103215
103202
|
return null;
|
|
@@ -103239,8 +103226,8 @@ function skipped(path7, reason) {
|
|
|
103239
103226
|
var INSTALLED_AGENTS_MANIFEST = ".installed-agents.json";
|
|
103240
103227
|
async function cleanupCodexLight(input = {}) {
|
|
103241
103228
|
const env2 = input.env ?? process.env;
|
|
103242
|
-
const codexHome = resolve15(input.codexHome ?? env2.CODEX_HOME ??
|
|
103243
|
-
const configPath =
|
|
103229
|
+
const codexHome = resolve15(input.codexHome ?? env2.CODEX_HOME ?? join56(homedir8(), ".codex"));
|
|
103230
|
+
const configPath = join56(codexHome, "config.toml");
|
|
103244
103231
|
const installedBinDir = await readInstalledCodexBinDir(codexHome);
|
|
103245
103232
|
const agentPaths = await collectInstalledAgentPaths(codexHome, configPath);
|
|
103246
103233
|
const configCleanup = await cleanupCodexConfig(configPath, input.now);
|
|
@@ -103294,17 +103281,17 @@ function firstConfiguredPath(...values) {
|
|
|
103294
103281
|
}
|
|
103295
103282
|
function managedGlobalStatePaths(codexHome) {
|
|
103296
103283
|
return [
|
|
103297
|
-
|
|
103298
|
-
|
|
103299
|
-
|
|
103300
|
-
|
|
103301
|
-
|
|
103284
|
+
join56(codexHome, "plugins", "cache", "sisyphuslabs"),
|
|
103285
|
+
join56(codexHome, ".tmp", "marketplaces", "sisyphuslabs"),
|
|
103286
|
+
join56(codexHome, "runtime", "ast-grep"),
|
|
103287
|
+
join56(codexHome, "runtime", "node"),
|
|
103288
|
+
join56(codexHome, "plugins", "data", "omo-sisyphuslabs", "bootstrap")
|
|
103302
103289
|
];
|
|
103303
103290
|
}
|
|
103304
103291
|
var BOOTSTRAP_DATA_GLOB_MAX_DEPTH = 5;
|
|
103305
103292
|
async function collectBootstrapDataDirsByGlob(codexHome) {
|
|
103306
103293
|
const results = [];
|
|
103307
|
-
await walkForManagedBootstrapDirs(
|
|
103294
|
+
await walkForManagedBootstrapDirs(join56(codexHome, "plugins"), 0, results);
|
|
103308
103295
|
return results;
|
|
103309
103296
|
}
|
|
103310
103297
|
async function walkForManagedBootstrapDirs(directory, depth, results) {
|
|
@@ -103316,9 +103303,9 @@ async function walkForManagedBootstrapDirs(directory, depth, results) {
|
|
|
103316
103303
|
for (const entry of entries) {
|
|
103317
103304
|
if (!entry.isDirectory())
|
|
103318
103305
|
continue;
|
|
103319
|
-
const childPath =
|
|
103306
|
+
const childPath = join56(directory, entry.name);
|
|
103320
103307
|
if (isManagedBootstrapOwnerName(entry.name)) {
|
|
103321
|
-
const bootstrapDir =
|
|
103308
|
+
const bootstrapDir = join56(childPath, "bootstrap");
|
|
103322
103309
|
if (await exists6(bootstrapDir))
|
|
103323
103310
|
results.push(bootstrapDir);
|
|
103324
103311
|
continue;
|
|
@@ -103352,7 +103339,7 @@ async function attemptRemove(path7) {
|
|
|
103352
103339
|
}
|
|
103353
103340
|
async function pruneEmptyRuntimeDirBestEffort(codexHome) {
|
|
103354
103341
|
try {
|
|
103355
|
-
await rmdir(
|
|
103342
|
+
await rmdir(join56(codexHome, "runtime"));
|
|
103356
103343
|
} catch (error51) {
|
|
103357
103344
|
if (isExpectedRuntimePruneFailure(error51))
|
|
103358
103345
|
return;
|
|
@@ -103364,14 +103351,14 @@ function isExpectedRuntimePruneFailure(error51) {
|
|
|
103364
103351
|
}
|
|
103365
103352
|
async function collectInstalledAgentPaths(codexHome, configPath) {
|
|
103366
103353
|
const manifestPaths = [
|
|
103367
|
-
|
|
103354
|
+
join56(codexHome, ".tmp", "marketplaces", "sisyphuslabs", "plugins", "omo", INSTALLED_AGENTS_MANIFEST)
|
|
103368
103355
|
];
|
|
103369
|
-
const versionRoot =
|
|
103356
|
+
const versionRoot = join56(codexHome, "plugins", "cache", "sisyphuslabs", "omo");
|
|
103370
103357
|
if (await exists6(versionRoot)) {
|
|
103371
103358
|
const entries = await readdir13(versionRoot, { withFileTypes: true });
|
|
103372
103359
|
for (const entry of entries) {
|
|
103373
103360
|
if (entry.isDirectory())
|
|
103374
|
-
manifestPaths.push(
|
|
103361
|
+
manifestPaths.push(join56(versionRoot, entry.name, INSTALLED_AGENTS_MANIFEST));
|
|
103375
103362
|
}
|
|
103376
103363
|
}
|
|
103377
103364
|
const paths2 = new Set;
|
|
@@ -103389,7 +103376,7 @@ async function readManagedAgentPathsFromConfig(codexHome, configPath) {
|
|
|
103389
103376
|
if (!await exists6(configPath))
|
|
103390
103377
|
return [];
|
|
103391
103378
|
const config3 = await readFile24(configPath, "utf8");
|
|
103392
|
-
return MANAGED_CODEX_AGENT_NAMES2.filter((agentName) => config3.includes(`config_file = ${JSON.stringify(`./agents/${agentName}.toml`)}`)).map((agentName) =>
|
|
103379
|
+
return MANAGED_CODEX_AGENT_NAMES2.filter((agentName) => config3.includes(`config_file = ${JSON.stringify(`./agents/${agentName}.toml`)}`)).map((agentName) => join56(codexHome, "agents", `${agentName}.toml`));
|
|
103393
103380
|
}
|
|
103394
103381
|
async function readInstalledAgentManifest(manifestPath) {
|
|
103395
103382
|
if (!await exists6(manifestPath))
|
|
@@ -103400,7 +103387,7 @@ async function readInstalledAgentManifest(manifestPath) {
|
|
|
103400
103387
|
return parsed.agents.filter((path7) => typeof path7 === "string");
|
|
103401
103388
|
}
|
|
103402
103389
|
async function removeManifestListedAgentLinks(codexHome, paths2) {
|
|
103403
|
-
const agentsDir =
|
|
103390
|
+
const agentsDir = join56(codexHome, "agents");
|
|
103404
103391
|
const removed2 = [];
|
|
103405
103392
|
const skipped2 = [];
|
|
103406
103393
|
for (const path7 of paths2) {
|
|
@@ -103452,14 +103439,14 @@ function nodeErrorCode6(error51) {
|
|
|
103452
103439
|
import { execFile as execFile3 } from "node:child_process";
|
|
103453
103440
|
import { existsSync as existsSync31 } from "node:fs";
|
|
103454
103441
|
import { homedir as homedir11 } from "node:os";
|
|
103455
|
-
import { dirname as dirname24, join as
|
|
103442
|
+
import { dirname as dirname24, join as join61, resolve as resolve19 } from "node:path";
|
|
103456
103443
|
import { fileURLToPath } from "node:url";
|
|
103457
103444
|
import { promisify as promisify2 } from "node:util";
|
|
103458
103445
|
|
|
103459
103446
|
// packages/omo-senpi/src/components/agent-home/resolve-agent-home.ts
|
|
103460
103447
|
import { existsSync as existsSync29 } from "node:fs";
|
|
103461
103448
|
import { homedir as homedir9 } from "node:os";
|
|
103462
|
-
import { join as
|
|
103449
|
+
import { join as join57, resolve as resolve16 } from "node:path";
|
|
103463
103450
|
var AGENT_DIR_ENV_NAMES = [
|
|
103464
103451
|
"OMO_CODING_AGENT_DIR",
|
|
103465
103452
|
"SENPI_CODING_AGENT_DIR",
|
|
@@ -103473,25 +103460,25 @@ function resolveAgentHome(options) {
|
|
|
103473
103460
|
if (configured)
|
|
103474
103461
|
return resolve16(configured);
|
|
103475
103462
|
}
|
|
103476
|
-
const brandedHome =
|
|
103477
|
-
const canonical =
|
|
103478
|
-
if (exists7(
|
|
103463
|
+
const brandedHome = join57(homeDir, ".omo");
|
|
103464
|
+
const canonical = join57(brandedHome, "agent");
|
|
103465
|
+
if (exists7(join57(canonical, AGENT_HOME_SENTINEL)))
|
|
103479
103466
|
return canonical;
|
|
103480
|
-
if (exists7(
|
|
103467
|
+
if (exists7(join57(brandedHome, AGENT_HOME_SENTINEL)))
|
|
103481
103468
|
return brandedHome;
|
|
103482
|
-
return
|
|
103469
|
+
return join57(homeDir, ".senpi", "agent");
|
|
103483
103470
|
}
|
|
103484
103471
|
|
|
103485
103472
|
// packages/omo-senpi/src/install/local-launcher.ts
|
|
103486
103473
|
import { chmodSync as chmodSync3, existsSync as existsSync30, mkdirSync as mkdirSync10, readFileSync as readFileSync14, rmSync as rmSync2, writeFileSync as writeFileSync6 } from "node:fs";
|
|
103487
103474
|
import { homedir as homedir10 } from "node:os";
|
|
103488
|
-
import { dirname as dirname21, join as
|
|
103475
|
+
import { dirname as dirname21, join as join58, resolve as resolve17 } from "node:path";
|
|
103489
103476
|
var MARKER = "omo-local-launcher";
|
|
103490
103477
|
function localLauncherPath(homeDir = homedir10()) {
|
|
103491
|
-
return
|
|
103478
|
+
return join58(homeDir, ".local", "bin", "omo");
|
|
103492
103479
|
}
|
|
103493
103480
|
function localLauncherCmdPath(homeDir = homedir10()) {
|
|
103494
|
-
return
|
|
103481
|
+
return join58(homeDir, ".local", "bin", "omo.cmd");
|
|
103495
103482
|
}
|
|
103496
103483
|
function renderLocalLauncher(options) {
|
|
103497
103484
|
const brand = {
|
|
@@ -103571,16 +103558,16 @@ node "%~dp0omo" %*\r
|
|
|
103571
103558
|
import { createHash as createHash5 } from "node:crypto";
|
|
103572
103559
|
import { constants as constants9 } from "node:fs";
|
|
103573
103560
|
import { access as access2, readFile as readFile26, stat as stat6 } from "node:fs/promises";
|
|
103574
|
-
import { dirname as dirname23, join as
|
|
103561
|
+
import { dirname as dirname23, join as join60 } from "node:path";
|
|
103575
103562
|
|
|
103576
103563
|
// packages/omo-senpi/src/install/senpi-settings.ts
|
|
103577
103564
|
import { constants as constants8 } from "node:fs";
|
|
103578
103565
|
import { access, copyFile as copyFile3, mkdir as mkdir9, readFile as readFile25, rename as rename5, writeFile as writeFile14 } from "node:fs/promises";
|
|
103579
|
-
import { dirname as dirname22, join as
|
|
103566
|
+
import { dirname as dirname22, join as join59, resolve as resolve18 } from "node:path";
|
|
103580
103567
|
var OMO_SENPI_PACKAGE_NAME = "@code-yeongyu/omo-senpi";
|
|
103581
103568
|
var LEGACY_BUILTIN_SHADOW_PACKAGES = [
|
|
103582
|
-
|
|
103583
|
-
|
|
103569
|
+
join59("packages", "pi-goal"),
|
|
103570
|
+
join59("packages", "pi-webfetch")
|
|
103584
103571
|
];
|
|
103585
103572
|
async function readSettings(settingsPath) {
|
|
103586
103573
|
let raw;
|
|
@@ -103655,7 +103642,7 @@ function isRecord12(value) {
|
|
|
103655
103642
|
async function readPackageName(packagePath) {
|
|
103656
103643
|
let raw;
|
|
103657
103644
|
try {
|
|
103658
|
-
raw = await readFile25(
|
|
103645
|
+
raw = await readFile25(join59(packagePath, "package.json"), "utf8");
|
|
103659
103646
|
} catch (error51) {
|
|
103660
103647
|
if (isErrno(error51, "ENOENT") || isErrno(error51, "ENOTDIR"))
|
|
103661
103648
|
return;
|
|
@@ -103680,57 +103667,57 @@ function isErrno(error51, code) {
|
|
|
103680
103667
|
|
|
103681
103668
|
// packages/omo-senpi/src/install/plugin-artifacts.ts
|
|
103682
103669
|
var REQUIRED_PLUGIN_ARTIFACTS = [
|
|
103683
|
-
|
|
103684
|
-
|
|
103685
|
-
|
|
103686
|
-
|
|
103687
|
-
|
|
103688
|
-
|
|
103689
|
-
|
|
103690
|
-
|
|
103691
|
-
|
|
103692
|
-
|
|
103693
|
-
|
|
103694
|
-
|
|
103695
|
-
|
|
103696
|
-
|
|
103697
|
-
|
|
103698
|
-
|
|
103699
|
-
|
|
103700
|
-
|
|
103701
|
-
|
|
103702
|
-
|
|
103703
|
-
|
|
103704
|
-
|
|
103705
|
-
|
|
103706
|
-
|
|
103707
|
-
|
|
103708
|
-
|
|
103709
|
-
|
|
103710
|
-
|
|
103711
|
-
|
|
103712
|
-
|
|
103713
|
-
|
|
103714
|
-
|
|
103715
|
-
|
|
103716
|
-
|
|
103717
|
-
|
|
103718
|
-
|
|
103719
|
-
|
|
103720
|
-
|
|
103721
|
-
|
|
103722
|
-
|
|
103670
|
+
join60("extensions", "omo.js"),
|
|
103671
|
+
join60("extensions", "omo-task.js"),
|
|
103672
|
+
join60("extensions", "omo-member.js"),
|
|
103673
|
+
join60("extensions", "memory-run-supervisor.mjs"),
|
|
103674
|
+
join60("extensions", "reflection-persona.md"),
|
|
103675
|
+
join60("extensions", "dream-persona.md"),
|
|
103676
|
+
join60("extensions", "facts-persona.md"),
|
|
103677
|
+
join60("extensions", "memorian-persona.md"),
|
|
103678
|
+
join60("skills", "ast-grep", "SKILL.md"),
|
|
103679
|
+
join60("skills", "coding-agent-sessions", "SKILL.md"),
|
|
103680
|
+
join60("skills", "debugging", "SKILL.md"),
|
|
103681
|
+
join60("skills", "frontend", "SKILL.md"),
|
|
103682
|
+
join60("skills", "git-master", "SKILL.md"),
|
|
103683
|
+
join60("skills", "init-deep", "SKILL.md"),
|
|
103684
|
+
join60("skills", "lsp-setup", "SKILL.md"),
|
|
103685
|
+
join60("skills", "programming", "SKILL.md"),
|
|
103686
|
+
join60("skills", "refactor", "SKILL.md"),
|
|
103687
|
+
join60("skills", "remove-ai-slops", "SKILL.md"),
|
|
103688
|
+
join60("skills", "review-work", "SKILL.md"),
|
|
103689
|
+
join60("skills", "ultimate-browsing", "SKILL.md"),
|
|
103690
|
+
join60("skills", "ultrawork", "SKILL.md"),
|
|
103691
|
+
join60("skills", "ulw-execute", "SKILL.md"),
|
|
103692
|
+
join60("skills", "ulw-loop", "SKILL.md"),
|
|
103693
|
+
join60("skills", "ulw-plan", "SKILL.md"),
|
|
103694
|
+
join60("skills", "ulw-research", "SKILL.md"),
|
|
103695
|
+
join60("skills", "visual-qa", "SKILL.md"),
|
|
103696
|
+
join60("skills-conditional", "x-search", "SKILL.md"),
|
|
103697
|
+
join60("runtime", "ast-grep-mcp", "cli.js"),
|
|
103698
|
+
join60("runtime", "agent-toolkit", "cli.js"),
|
|
103699
|
+
join60("runtime", "agent-toolkit", "ulw-loop", "cli.js"),
|
|
103700
|
+
join60("runtime", "agent-toolkit", "omo-agent-toolkit"),
|
|
103701
|
+
join60("runtime", "agent-toolkit", "omo-agent-toolkit.cmd"),
|
|
103702
|
+
join60("runtime", "lsp-daemon", "dist", "cli.js"),
|
|
103703
|
+
join60("runtime", "lsp-daemon", "dist", "index.js"),
|
|
103704
|
+
join60("runtime", "lsp-daemon", "dist", "index.d.ts"),
|
|
103705
|
+
join60("runtime", "lsp-daemon", "dist", "daemon-client.js"),
|
|
103706
|
+
join60("runtime", "lsp-daemon", "dist", "daemon-client.d.ts"),
|
|
103707
|
+
join60("runtime", "lsp-daemon", "dist", "package.json"),
|
|
103708
|
+
join60("runtime", "lsp-daemon", "dist", ".omo-runtime-manifest.json"),
|
|
103709
|
+
join60("scripts", "install.mjs")
|
|
103723
103710
|
];
|
|
103724
103711
|
async function ensurePluginArtifacts(context) {
|
|
103725
103712
|
if (context.allowBuild) {
|
|
103726
|
-
await context.runCommand("node", [
|
|
103727
|
-
await context.runCommand("node", [
|
|
103728
|
-
await context.runCommand("node", [
|
|
103729
|
-
await context.runCommand("node", [
|
|
103730
|
-
await context.runCommand("node", [
|
|
103731
|
-
await context.runCommand("node", [
|
|
103732
|
-
await context.runCommand("node", [
|
|
103733
|
-
await context.runCommand("node", [
|
|
103713
|
+
await context.runCommand("node", [join60(context.pluginPath, "scripts", "build-extension.mjs")], { cwd: context.repoRoot });
|
|
103714
|
+
await context.runCommand("node", [join60("packages", "omo-codex", "plugin", "scripts", "materialize-shared-upstreams.mjs")], { cwd: context.repoRoot });
|
|
103715
|
+
await context.runCommand("node", [join60(context.pluginPath, "scripts", "sync-skills.mjs")], { cwd: context.repoRoot });
|
|
103716
|
+
await context.runCommand("node", [join60(context.pluginPath, "scripts", "build-install.mjs")], { cwd: context.repoRoot });
|
|
103717
|
+
await context.runCommand("node", [join60(context.pluginPath, "scripts", "stage-lsp-daemon-runtime.mjs")], { cwd: context.repoRoot });
|
|
103718
|
+
await context.runCommand("node", [join60(context.pluginPath, "scripts", "stage-ast-grep-mcp-runtime.mjs")], { cwd: context.repoRoot });
|
|
103719
|
+
await context.runCommand("node", [join60(context.pluginPath, "scripts", "stage-agent-toolkit.mjs")], { cwd: context.repoRoot });
|
|
103720
|
+
await context.runCommand("node", [join60(context.pluginPath, "scripts", "stage-x-search-skill.mjs")], { cwd: context.repoRoot });
|
|
103734
103721
|
}
|
|
103735
103722
|
if (await hasMissingPluginArtifact(context.pluginPath)) {
|
|
103736
103723
|
throw new Error(`Packed omo-senpi plugin is missing required runtime artifacts at ${context.pluginPath}`);
|
|
@@ -103739,14 +103726,14 @@ async function ensurePluginArtifacts(context) {
|
|
|
103739
103726
|
}
|
|
103740
103727
|
async function hasMissingPluginArtifact(pluginPath) {
|
|
103741
103728
|
for (const artifact of REQUIRED_PLUGIN_ARTIFACTS) {
|
|
103742
|
-
if (!await fileExists2(
|
|
103729
|
+
if (!await fileExists2(join60(pluginPath, artifact)))
|
|
103743
103730
|
return true;
|
|
103744
103731
|
}
|
|
103745
103732
|
return false;
|
|
103746
103733
|
}
|
|
103747
103734
|
async function verifyAstGrepRuntimeIntegrity(pluginPath, platform) {
|
|
103748
|
-
const runtimeEntry =
|
|
103749
|
-
const manifestPath =
|
|
103735
|
+
const runtimeEntry = join60(pluginPath, "runtime", "ast-grep-mcp", "cli.js");
|
|
103736
|
+
const manifestPath = join60(dirname23(runtimeEntry), "manifest.json");
|
|
103750
103737
|
let runtimeStat;
|
|
103751
103738
|
try {
|
|
103752
103739
|
runtimeStat = await stat6(runtimeEntry);
|
|
@@ -103821,7 +103808,7 @@ async function runSenpiInstaller(options = {}) {
|
|
|
103821
103808
|
const backupPath = await writeSettingsAtomically(context.settingsPath, settings);
|
|
103822
103809
|
installLocalLauncher({
|
|
103823
103810
|
pluginPath: context.pluginPath,
|
|
103824
|
-
senpiCliPath:
|
|
103811
|
+
senpiCliPath: join61(context.repoRoot, "packages", "coding-agent", "dist", "cli.js")
|
|
103825
103812
|
});
|
|
103826
103813
|
return {
|
|
103827
103814
|
ok: true,
|
|
@@ -103838,12 +103825,12 @@ function resolveInstallContext(options) {
|
|
|
103838
103825
|
const allowBuild = options.pluginPath === undefined;
|
|
103839
103826
|
const repoRoot = resolve19(options.repoRoot ?? (allowBuild ? findRepoRoot2(dirname24(fileURLToPath(import.meta.url))) : dirname24(resolve19(options.pluginPath))));
|
|
103840
103827
|
const agentDir = resolve19(options.agentDir ?? resolveAgentHome({ env: env2, homeDir: env2.HOME ?? homedir11() }));
|
|
103841
|
-
const pluginPath = resolve19(options.pluginPath ??
|
|
103828
|
+
const pluginPath = resolve19(options.pluginPath ?? join61(repoRoot, "packages", "omo-senpi", "plugin"));
|
|
103842
103829
|
return {
|
|
103843
103830
|
env: env2,
|
|
103844
103831
|
repoRoot,
|
|
103845
103832
|
agentDir,
|
|
103846
|
-
settingsPath:
|
|
103833
|
+
settingsPath: join61(agentDir, "settings.json"),
|
|
103847
103834
|
pluginPath,
|
|
103848
103835
|
platform: options.platform ?? process.platform,
|
|
103849
103836
|
allowBuild,
|
|
@@ -103860,7 +103847,7 @@ async function defaultRunCommand3(command, args, options) {
|
|
|
103860
103847
|
function findRepoRoot2(importerDir) {
|
|
103861
103848
|
let current = importerDir;
|
|
103862
103849
|
for (let depth = 0;depth <= 7; depth += 1) {
|
|
103863
|
-
if (fileExistsSync(
|
|
103850
|
+
if (fileExistsSync(join61(current, "packages", "omo-senpi", "plugin", "package.json")))
|
|
103864
103851
|
return current;
|
|
103865
103852
|
current = resolve19(current, "..");
|
|
103866
103853
|
}
|
|
@@ -103904,19 +103891,19 @@ init_provider_availability();
|
|
|
103904
103891
|
|
|
103905
103892
|
// packages/omo-opencode/src/cli/config-manager/add-tui-plugin-to-tui-config.ts
|
|
103906
103893
|
import { existsSync as existsSync33, mkdirSync as mkdirSync11, readFileSync as readFileSync16 } from "node:fs";
|
|
103907
|
-
import { join as
|
|
103894
|
+
import { join as join63 } from "node:path";
|
|
103908
103895
|
|
|
103909
103896
|
// packages/omo-opencode/src/cli/doctor/checks/tui-plugin-config.ts
|
|
103910
103897
|
init_shared();
|
|
103911
103898
|
import { existsSync as existsSync32, readFileSync as readFileSync15 } from "node:fs";
|
|
103912
|
-
import { join as
|
|
103899
|
+
import { join as join62 } from "node:path";
|
|
103913
103900
|
var TUI_SUBPATH = "tui";
|
|
103914
103901
|
var TUI_EXPORT_SUBPATH = `./${TUI_SUBPATH}`;
|
|
103915
103902
|
function fileEntryPackageJsonPath(entry) {
|
|
103916
103903
|
let path7 = entry.slice("file:".length);
|
|
103917
103904
|
if (path7.startsWith("//"))
|
|
103918
103905
|
path7 = path7.slice(2);
|
|
103919
|
-
return
|
|
103906
|
+
return join62(path7, "package.json");
|
|
103920
103907
|
}
|
|
103921
103908
|
function packageJsonExportsTui(pkgJsonPath) {
|
|
103922
103909
|
if (!existsSync32(pkgJsonPath))
|
|
@@ -103954,7 +103941,7 @@ function packageExportsTuiForServerEntry(entry) {
|
|
|
103954
103941
|
const packageName = packageNameFromServerEntry(entry);
|
|
103955
103942
|
if (packageName === null)
|
|
103956
103943
|
return null;
|
|
103957
|
-
return packageJsonExportsTui(
|
|
103944
|
+
return packageJsonExportsTui(join62(getOpenCodeConfigDir({ binary: "opencode" }), "node_modules", packageName, "package.json"));
|
|
103958
103945
|
}
|
|
103959
103946
|
function isOurFilePluginEntry(entry) {
|
|
103960
103947
|
if (typeof entry !== "string" || !entry.startsWith("file:"))
|
|
@@ -104019,7 +104006,7 @@ function detectServerPluginRegistration() {
|
|
|
104019
104006
|
}
|
|
104020
104007
|
}
|
|
104021
104008
|
function detectTuiPluginRegistration() {
|
|
104022
|
-
const tuiJsonPath =
|
|
104009
|
+
const tuiJsonPath = join62(getOpenCodeConfigDir({ binary: "opencode" }), "tui.json");
|
|
104023
104010
|
if (!existsSync32(tuiJsonPath)) {
|
|
104024
104011
|
return {
|
|
104025
104012
|
registered: false,
|
|
@@ -104175,10 +104162,10 @@ function readConfig(path7) {
|
|
|
104175
104162
|
return null;
|
|
104176
104163
|
}
|
|
104177
104164
|
function readServerConfig(configDir) {
|
|
104178
|
-
const jsoncPath =
|
|
104165
|
+
const jsoncPath = join63(configDir, "opencode.jsonc");
|
|
104179
104166
|
if (existsSync33(jsoncPath))
|
|
104180
104167
|
return readConfig(jsoncPath);
|
|
104181
|
-
const jsonPath =
|
|
104168
|
+
const jsonPath = join63(configDir, "opencode.json");
|
|
104182
104169
|
if (existsSync33(jsonPath))
|
|
104183
104170
|
return readConfig(jsonPath);
|
|
104184
104171
|
return null;
|
|
@@ -104220,7 +104207,7 @@ function ensureTuiPluginEntry(opts = {}) {
|
|
|
104220
104207
|
if (!desiredEntry) {
|
|
104221
104208
|
return { changed: false, reason: "no-server-entry" };
|
|
104222
104209
|
}
|
|
104223
|
-
const tuiJsonPath =
|
|
104210
|
+
const tuiJsonPath = join63(configDir, "tui.json");
|
|
104224
104211
|
const { config: config3, malformed } = readTuiConfig(tuiJsonPath);
|
|
104225
104212
|
if (malformed) {
|
|
104226
104213
|
return { changed: false, reason: "malformed" };
|
|
@@ -104236,7 +104223,7 @@ function ensureTuiPluginEntry(opts = {}) {
|
|
|
104236
104223
|
|
|
104237
104224
|
// packages/omo-opencode/src/cli/install-ast-grep-sg.ts
|
|
104238
104225
|
import { homedir as homedir12 } from "node:os";
|
|
104239
|
-
import { join as
|
|
104226
|
+
import { join as join64 } from "node:path";
|
|
104240
104227
|
|
|
104241
104228
|
// packages/shared-skills/index.mjs
|
|
104242
104229
|
import { existsSync as existsSync34 } from "node:fs";
|
|
@@ -104258,9 +104245,9 @@ function describeResult2(result) {
|
|
|
104258
104245
|
}
|
|
104259
104246
|
async function installAstGrepForOpenCode(options = {}) {
|
|
104260
104247
|
const platform = options.platform ?? process.platform;
|
|
104261
|
-
const baseDir =
|
|
104248
|
+
const baseDir = join64(options.homeDir ?? homedir12(), ".omo");
|
|
104262
104249
|
const targetDir = astGrepRuntimeDir(baseDir, platform, options.arch ?? process.arch);
|
|
104263
|
-
const skillDir =
|
|
104250
|
+
const skillDir = join64(options.sharedSkillsRoot ?? sharedSkillsRootPath(), "ast-grep");
|
|
104264
104251
|
const installer = options.installer ?? runAstGrepSkillInstall;
|
|
104265
104252
|
try {
|
|
104266
104253
|
const result = await installer({ platform, skillDir, targetDir });
|
|
@@ -104378,6 +104365,7 @@ async function runCliInstaller(args, version3) {
|
|
|
104378
104365
|
return 1;
|
|
104379
104366
|
}
|
|
104380
104367
|
printWarning(`Codex install failed (OpenCode install is still complete): ${message}`);
|
|
104368
|
+
printInfo(`The Codex harness is NOT installed. Fix the error above, then re-run: ${import_picocolors3.default.cyan("bunx oh-my-openagent install --platform=codex")}`);
|
|
104381
104369
|
}
|
|
104382
104370
|
console.log();
|
|
104383
104371
|
}
|
|
@@ -105850,6 +105838,7 @@ async function runTuiInstaller(args, version3) {
|
|
|
105850
105838
|
return 1;
|
|
105851
105839
|
}
|
|
105852
105840
|
log4.warn(`Codex install failed (OpenCode install remains successful): ${message}`);
|
|
105841
|
+
log4.info("The Codex harness is NOT installed. Fix the error above, then re-run: bunx oh-my-openagent install --platform=codex");
|
|
105853
105842
|
}
|
|
105854
105843
|
}
|
|
105855
105844
|
if (config3.hasSenpi) {
|
|
@@ -108479,9 +108468,9 @@ function readCurrentTopLevelTask(planPath) {
|
|
|
108479
108468
|
}
|
|
108480
108469
|
// packages/boulder-state/src/storage/path.ts
|
|
108481
108470
|
import { existsSync as existsSync36 } from "node:fs";
|
|
108482
|
-
import { isAbsolute as isAbsolute12, join as
|
|
108471
|
+
import { isAbsolute as isAbsolute12, join as join65, relative as relative8, resolve as resolve20 } from "node:path";
|
|
108483
108472
|
function getBoulderFilePath(directory) {
|
|
108484
|
-
return
|
|
108473
|
+
return join65(directory, BOULDER_DIR, BOULDER_FILE);
|
|
108485
108474
|
}
|
|
108486
108475
|
function resolveTrackedPath(baseDirectory, trackedPath) {
|
|
108487
108476
|
return isAbsolute12(trackedPath) ? resolve20(trackedPath) : resolve20(baseDirectory, trackedPath);
|
|
@@ -108664,9 +108653,9 @@ init_state();
|
|
|
108664
108653
|
var CONTINUATION_MARKER_DIR = ".omo/run-continuation";
|
|
108665
108654
|
// packages/omo-opencode/src/features/run-continuation-state/storage.ts
|
|
108666
108655
|
import { existsSync as existsSync39, mkdirSync as mkdirSync12, readFileSync as readFileSync20, rmSync as rmSync3, writeFileSync as writeFileSync7 } from "node:fs";
|
|
108667
|
-
import { join as
|
|
108656
|
+
import { join as join66 } from "node:path";
|
|
108668
108657
|
function getMarkerPath(directory, sessionID) {
|
|
108669
|
-
return
|
|
108658
|
+
return join66(directory, CONTINUATION_MARKER_DIR, `${sessionID}.json`);
|
|
108670
108659
|
}
|
|
108671
108660
|
function readContinuationMarker(directory, sessionID) {
|
|
108672
108661
|
const markerPath = getMarkerPath(directory, sessionID);
|
|
@@ -108739,7 +108728,7 @@ async function isSessionInBoulderLineage(input) {
|
|
|
108739
108728
|
init_shared();
|
|
108740
108729
|
init_compaction_marker();
|
|
108741
108730
|
import { readFileSync as readFileSync21, readdirSync as readdirSync8 } from "node:fs";
|
|
108742
|
-
import { join as
|
|
108731
|
+
import { join as join67 } from "node:path";
|
|
108743
108732
|
var defaultSessionLastAgentDeps = {
|
|
108744
108733
|
getMessageDir,
|
|
108745
108734
|
isSqliteBackend,
|
|
@@ -108799,7 +108788,7 @@ async function getLastAgentFromSession(sessionID, client3, deps = {}) {
|
|
|
108799
108788
|
try {
|
|
108800
108789
|
const messages = readdirSync8(messageDir).filter((fileName) => fileName.endsWith(".json")).map((fileName) => {
|
|
108801
108790
|
try {
|
|
108802
|
-
const content = readFileSync21(
|
|
108791
|
+
const content = readFileSync21(join67(messageDir, fileName), "utf-8");
|
|
108803
108792
|
const parsed = JSON.parse(content);
|
|
108804
108793
|
return {
|
|
108805
108794
|
fileName,
|
|
@@ -108843,7 +108832,7 @@ init_agent_display_names();
|
|
|
108843
108832
|
// packages/omo-opencode/src/hooks/ralph-loop/storage.ts
|
|
108844
108833
|
init_frontmatter2();
|
|
108845
108834
|
import { existsSync as existsSync40, readFileSync as readFileSync22, writeFileSync as writeFileSync8, unlinkSync as unlinkSync6, mkdirSync as mkdirSync13 } from "node:fs";
|
|
108846
|
-
import { dirname as dirname26, join as
|
|
108835
|
+
import { dirname as dirname26, join as join68 } from "node:path";
|
|
108847
108836
|
|
|
108848
108837
|
// packages/omo-opencode/src/hooks/ralph-loop/constants.ts
|
|
108849
108838
|
var DEFAULT_STATE_FILE = ".omo/ralph-loop.local.md";
|
|
@@ -108852,7 +108841,7 @@ var DEFAULT_COMPLETION_PROMISE = "DONE";
|
|
|
108852
108841
|
|
|
108853
108842
|
// packages/omo-opencode/src/hooks/ralph-loop/storage.ts
|
|
108854
108843
|
function getStateFilePath(directory, customPath) {
|
|
108855
|
-
return customPath ?
|
|
108844
|
+
return customPath ? join68(directory, customPath) : join68(directory, DEFAULT_STATE_FILE);
|
|
108856
108845
|
}
|
|
108857
108846
|
function readState(directory, customPath) {
|
|
108858
108847
|
const filePath = getStateFilePath(directory, customPath);
|
|
@@ -109959,7 +109948,7 @@ init_extract_semver();
|
|
|
109959
109948
|
init_bun_which_shim();
|
|
109960
109949
|
import { existsSync as existsSync48, accessSync as accessSync4, constants as constants12 } from "node:fs";
|
|
109961
109950
|
import { homedir as homedir15 } from "node:os";
|
|
109962
|
-
import { join as
|
|
109951
|
+
import { join as join75 } from "node:path";
|
|
109963
109952
|
|
|
109964
109953
|
// packages/omo-opencode/src/cli/doctor/framework/spawn-with-timeout.ts
|
|
109965
109954
|
init_spawn_with_windows_hide();
|
|
@@ -110051,17 +110040,17 @@ function getDesktopAppPaths(platform) {
|
|
|
110051
110040
|
case "darwin":
|
|
110052
110041
|
return [
|
|
110053
110042
|
"/Applications/OpenCode.app/Contents/MacOS/OpenCode",
|
|
110054
|
-
|
|
110043
|
+
join75(home, "Applications", "OpenCode.app", "Contents", "MacOS", "OpenCode")
|
|
110055
110044
|
];
|
|
110056
110045
|
case "win32": {
|
|
110057
110046
|
const programFiles = process.env.ProgramFiles;
|
|
110058
110047
|
const localAppData = process.env.LOCALAPPDATA;
|
|
110059
110048
|
const paths2 = [];
|
|
110060
110049
|
if (programFiles) {
|
|
110061
|
-
paths2.push(
|
|
110050
|
+
paths2.push(join75(programFiles, "OpenCode", "OpenCode.exe"));
|
|
110062
110051
|
}
|
|
110063
110052
|
if (localAppData) {
|
|
110064
|
-
paths2.push(
|
|
110053
|
+
paths2.push(join75(localAppData, "OpenCode", "OpenCode.exe"));
|
|
110065
110054
|
}
|
|
110066
110055
|
return paths2;
|
|
110067
110056
|
}
|
|
@@ -110069,8 +110058,8 @@ function getDesktopAppPaths(platform) {
|
|
|
110069
110058
|
return [
|
|
110070
110059
|
"/usr/bin/opencode",
|
|
110071
110060
|
"/usr/lib/opencode/opencode",
|
|
110072
|
-
|
|
110073
|
-
|
|
110061
|
+
join75(home, "Applications", "opencode-desktop-linux-x86_64.AppImage"),
|
|
110062
|
+
join75(home, "Applications", "opencode-desktop-linux-aarch64.AppImage")
|
|
110074
110063
|
];
|
|
110075
110064
|
default:
|
|
110076
110065
|
return [];
|
|
@@ -110102,7 +110091,7 @@ async function findOpenCodeBinary(platform = process.platform, checkExists = exi
|
|
|
110102
110091
|
const candidates = getCommandCandidates2(platform);
|
|
110103
110092
|
for (const entry of pathEnv.split(delimiter3).filter(Boolean)) {
|
|
110104
110093
|
for (const command of candidates) {
|
|
110105
|
-
const fullPath =
|
|
110094
|
+
const fullPath = join75(entry, command);
|
|
110106
110095
|
if (checkExists(fullPath) && isExecutable2(fullPath)) {
|
|
110107
110096
|
return { binary: command, path: fullPath };
|
|
110108
110097
|
}
|
|
@@ -110246,22 +110235,22 @@ init_package_json_locator();
|
|
|
110246
110235
|
import { existsSync as existsSync50, readFileSync as readFileSync31, readdirSync as readdirSync10 } from "node:fs";
|
|
110247
110236
|
import { createRequire as createRequire2 } from "node:module";
|
|
110248
110237
|
import { homedir as homedir16 } from "node:os";
|
|
110249
|
-
import { join as
|
|
110238
|
+
import { join as join76 } from "node:path";
|
|
110250
110239
|
import { fileURLToPath as fileURLToPath6 } from "node:url";
|
|
110251
110240
|
init_shared();
|
|
110252
110241
|
function getPlatformDefaultCacheDir(platform = process.platform) {
|
|
110253
110242
|
if (platform === "darwin")
|
|
110254
|
-
return
|
|
110243
|
+
return join76(homedir16(), "Library", "Caches");
|
|
110255
110244
|
if (platform === "win32")
|
|
110256
|
-
return process.env.LOCALAPPDATA ??
|
|
110257
|
-
return
|
|
110245
|
+
return process.env.LOCALAPPDATA ?? join76(homedir16(), "AppData", "Local");
|
|
110246
|
+
return join76(homedir16(), ".cache");
|
|
110258
110247
|
}
|
|
110259
110248
|
function resolveOpenCodeCacheDir() {
|
|
110260
110249
|
const xdgCacheHome = process.env.XDG_CACHE_HOME;
|
|
110261
110250
|
if (xdgCacheHome)
|
|
110262
|
-
return
|
|
110251
|
+
return join76(xdgCacheHome, "opencode");
|
|
110263
110252
|
const fromShared = getOpenCodeCacheDir();
|
|
110264
|
-
const platformDefault =
|
|
110253
|
+
const platformDefault = join76(getPlatformDefaultCacheDir(), "opencode");
|
|
110265
110254
|
if (existsSync50(fromShared) || !existsSync50(platformDefault))
|
|
110266
110255
|
return fromShared;
|
|
110267
110256
|
return platformDefault;
|
|
@@ -110293,11 +110282,11 @@ function normalizeVersion(value) {
|
|
|
110293
110282
|
function createPackageCandidates(rootDir) {
|
|
110294
110283
|
return ACCEPTED_PACKAGE_NAMES.map((packageName) => ({
|
|
110295
110284
|
packageName,
|
|
110296
|
-
installedPackagePath:
|
|
110285
|
+
installedPackagePath: join76(rootDir, "node_modules", packageName, "package.json")
|
|
110297
110286
|
}));
|
|
110298
110287
|
}
|
|
110299
110288
|
function createTaggedInstallCandidates(rootDir) {
|
|
110300
|
-
const packagesDir =
|
|
110289
|
+
const packagesDir = join76(rootDir, "packages");
|
|
110301
110290
|
if (!existsSync50(packagesDir))
|
|
110302
110291
|
return [];
|
|
110303
110292
|
const candidates = [];
|
|
@@ -110305,14 +110294,14 @@ function createTaggedInstallCandidates(rootDir) {
|
|
|
110305
110294
|
const packageName = ACCEPTED_PACKAGE_NAMES.find((name) => entryName.startsWith(`${name}@`));
|
|
110306
110295
|
if (packageName === undefined)
|
|
110307
110296
|
continue;
|
|
110308
|
-
const installDir =
|
|
110297
|
+
const installDir = join76(packagesDir, entryName);
|
|
110309
110298
|
candidates.push({
|
|
110310
110299
|
cacheDir: installDir,
|
|
110311
|
-
cachePackagePath:
|
|
110300
|
+
cachePackagePath: join76(installDir, "package.json"),
|
|
110312
110301
|
packageCandidates: [
|
|
110313
110302
|
{
|
|
110314
110303
|
packageName,
|
|
110315
|
-
installedPackagePath:
|
|
110304
|
+
installedPackagePath: join76(installDir, "node_modules", packageName, "package.json")
|
|
110316
110305
|
}
|
|
110317
110306
|
]
|
|
110318
110307
|
});
|
|
@@ -110357,13 +110346,13 @@ function getLoadedPluginVersion() {
|
|
|
110357
110346
|
const candidates = [
|
|
110358
110347
|
{
|
|
110359
110348
|
cacheDir: configDir,
|
|
110360
|
-
cachePackagePath:
|
|
110349
|
+
cachePackagePath: join76(configDir, "package.json"),
|
|
110361
110350
|
packageCandidates: createPackageCandidates(configDir)
|
|
110362
110351
|
},
|
|
110363
110352
|
...createTaggedInstallCandidates(configDir),
|
|
110364
110353
|
{
|
|
110365
110354
|
cacheDir,
|
|
110366
|
-
cachePackagePath:
|
|
110355
|
+
cachePackagePath: join76(cacheDir, "package.json"),
|
|
110367
110356
|
packageCandidates: createPackageCandidates(cacheDir)
|
|
110368
110357
|
},
|
|
110369
110358
|
...createTaggedInstallCandidates(cacheDir)
|
|
@@ -110557,18 +110546,18 @@ async function checkSystem(deps = defaultDeps6) {
|
|
|
110557
110546
|
init_shared();
|
|
110558
110547
|
import { existsSync as existsSync52, readFileSync as readFileSync33 } from "node:fs";
|
|
110559
110548
|
import { homedir as homedir17 } from "node:os";
|
|
110560
|
-
import { join as
|
|
110549
|
+
import { join as join77 } from "node:path";
|
|
110561
110550
|
function getUserConfigDir2() {
|
|
110562
110551
|
const xdgConfig = process.env.XDG_CONFIG_HOME;
|
|
110563
110552
|
if (xdgConfig)
|
|
110564
|
-
return
|
|
110565
|
-
return
|
|
110553
|
+
return join77(xdgConfig, "opencode");
|
|
110554
|
+
return join77(homedir17(), ".config", "opencode");
|
|
110566
110555
|
}
|
|
110567
110556
|
function loadCustomProviderNames() {
|
|
110568
110557
|
const configDir = getUserConfigDir2();
|
|
110569
110558
|
const candidatePaths = [
|
|
110570
|
-
|
|
110571
|
-
|
|
110559
|
+
join77(configDir, "opencode.json"),
|
|
110560
|
+
join77(configDir, "opencode.jsonc")
|
|
110572
110561
|
];
|
|
110573
110562
|
for (const configPath of candidatePaths) {
|
|
110574
110563
|
if (!existsSync52(configPath))
|
|
@@ -110589,7 +110578,7 @@ function loadCustomProviderNames() {
|
|
|
110589
110578
|
return [];
|
|
110590
110579
|
}
|
|
110591
110580
|
function loadAvailableModelsFromCache() {
|
|
110592
|
-
const cacheFile =
|
|
110581
|
+
const cacheFile = join77(getOpenCodeCacheDir(), "models.json");
|
|
110593
110582
|
const customProviders = loadCustomProviderNames();
|
|
110594
110583
|
if (!existsSync52(cacheFile)) {
|
|
110595
110584
|
if (customProviders.length > 0) {
|
|
@@ -110651,7 +110640,7 @@ function loadOmoConfig2() {
|
|
|
110651
110640
|
|
|
110652
110641
|
// packages/omo-opencode/src/cli/doctor/checks/model-resolution-details.ts
|
|
110653
110642
|
init_shared();
|
|
110654
|
-
import { join as
|
|
110643
|
+
import { join as join78 } from "node:path";
|
|
110655
110644
|
|
|
110656
110645
|
// packages/omo-opencode/src/cli/doctor/checks/model-resolution-variant.ts
|
|
110657
110646
|
function formatModelWithVariant(model, variant) {
|
|
@@ -110693,7 +110682,7 @@ function formatCapabilityResolutionLabel(mode2) {
|
|
|
110693
110682
|
}
|
|
110694
110683
|
function buildModelResolutionDetails(options) {
|
|
110695
110684
|
const details = [];
|
|
110696
|
-
const cacheFile =
|
|
110685
|
+
const cacheFile = join78(getOpenCodeCacheDir(), "models.json");
|
|
110697
110686
|
details.push("═══ Available Models (from cache) ═══");
|
|
110698
110687
|
details.push("");
|
|
110699
110688
|
if (options.available.cacheExists) {
|
|
@@ -111003,7 +110992,7 @@ async function checkConfig() {
|
|
|
111003
110992
|
// packages/omo-opencode/src/cli/doctor/checks/deprecated-reasoning-keys.ts
|
|
111004
110993
|
init_main();
|
|
111005
110994
|
import { existsSync as existsSync53, readFileSync as readFileSync34 } from "node:fs";
|
|
111006
|
-
import { join as
|
|
110995
|
+
import { join as join79 } from "node:path";
|
|
111007
110996
|
var CANONICAL_REPLACEMENT = new Map([
|
|
111008
110997
|
["variant", "reasoning"],
|
|
111009
110998
|
["reasoningEffort", "reasoning"],
|
|
@@ -111058,7 +111047,7 @@ function userConfigPaths() {
|
|
|
111058
111047
|
const home = process.env.HOME ?? process.env.USERPROFILE;
|
|
111059
111048
|
if (home === undefined || home.length === 0)
|
|
111060
111049
|
return [];
|
|
111061
|
-
return [
|
|
111050
|
+
return [join79(home, ".omo", "omo.jsonc"), join79(home, ".omo", "omo.json")];
|
|
111062
111051
|
}
|
|
111063
111052
|
async function checkDeprecatedReasoningKeys() {
|
|
111064
111053
|
const issues = [];
|
|
@@ -111084,25 +111073,25 @@ init_src();
|
|
|
111084
111073
|
import { existsSync as existsSync54 } from "node:fs";
|
|
111085
111074
|
import { createRequire as createRequire3 } from "node:module";
|
|
111086
111075
|
import { homedir as homedir19 } from "node:os";
|
|
111087
|
-
import { dirname as dirname31, join as
|
|
111076
|
+
import { dirname as dirname31, join as join81 } from "node:path";
|
|
111088
111077
|
|
|
111089
111078
|
// packages/omo-opencode/src/hooks/comment-checker/downloader.ts
|
|
111090
|
-
import { join as
|
|
111079
|
+
import { join as join80 } from "path";
|
|
111091
111080
|
import { homedir as homedir18, tmpdir as tmpdir4 } from "os";
|
|
111092
111081
|
init_binary_downloader();
|
|
111093
111082
|
init_logger2();
|
|
111094
111083
|
init_plugin_identity();
|
|
111095
111084
|
var DEBUG = process.env.COMMENT_CHECKER_DEBUG === "1";
|
|
111096
|
-
var DEBUG_FILE =
|
|
111085
|
+
var DEBUG_FILE = join80(tmpdir4(), "comment-checker-debug.log");
|
|
111097
111086
|
function getCacheDir2() {
|
|
111098
111087
|
if (process.platform === "win32") {
|
|
111099
111088
|
const localAppData = process.env.LOCALAPPDATA || process.env.APPDATA;
|
|
111100
|
-
const base2 = localAppData ||
|
|
111101
|
-
return
|
|
111089
|
+
const base2 = localAppData || join80(homedir18(), "AppData", "Local");
|
|
111090
|
+
return join80(base2, CACHE_DIR_NAME, "bin");
|
|
111102
111091
|
}
|
|
111103
111092
|
const xdgCache = process.env.XDG_CACHE_HOME;
|
|
111104
|
-
const base = xdgCache ||
|
|
111105
|
-
return
|
|
111093
|
+
const base = xdgCache || join80(homedir18(), ".cache");
|
|
111094
|
+
return join80(base, CACHE_DIR_NAME, "bin");
|
|
111106
111095
|
}
|
|
111107
111096
|
function getBinaryName() {
|
|
111108
111097
|
return process.platform === "win32" ? "comment-checker.exe" : "comment-checker";
|
|
@@ -111152,7 +111141,7 @@ async function getBinaryVersion(binary) {
|
|
|
111152
111141
|
}
|
|
111153
111142
|
}
|
|
111154
111143
|
async function checkAstGrepCli() {
|
|
111155
|
-
const runtimeDir = astGrepRuntimeDir(
|
|
111144
|
+
const runtimeDir = astGrepRuntimeDir(join81(homedir19(), ".omo"));
|
|
111156
111145
|
const sgPath = findSgBinarySync({ runtimeDir });
|
|
111157
111146
|
if (sgPath === null) {
|
|
111158
111147
|
return {
|
|
@@ -111182,10 +111171,10 @@ function findCommentCheckerPackageBinary(baseDirOverride, resolvePackageJsonPath
|
|
|
111182
111171
|
const platformKey = `${process.platform}-${process.arch === "x64" ? "x64" : process.arch}`;
|
|
111183
111172
|
try {
|
|
111184
111173
|
const packageDir = baseDirOverride ?? dirname31(resolvePackageJsonPath());
|
|
111185
|
-
const vendorPath =
|
|
111174
|
+
const vendorPath = join81(packageDir, "vendor", platformKey, binaryName);
|
|
111186
111175
|
if (existsSync54(vendorPath))
|
|
111187
111176
|
return vendorPath;
|
|
111188
|
-
const binPath =
|
|
111177
|
+
const binPath = join81(packageDir, "bin", binaryName);
|
|
111189
111178
|
if (existsSync54(binPath))
|
|
111190
111179
|
return binPath;
|
|
111191
111180
|
} catch (error51) {
|
|
@@ -111561,13 +111550,13 @@ function getInstalledLspServers(options = {}) {
|
|
|
111561
111550
|
init_shared();
|
|
111562
111551
|
import { existsSync as existsSync56, readFileSync as readFileSync36 } from "node:fs";
|
|
111563
111552
|
import { homedir as homedir20 } from "node:os";
|
|
111564
|
-
import { join as
|
|
111553
|
+
import { join as join82 } from "node:path";
|
|
111565
111554
|
var BUILTIN_MCP_SERVERS = ["websearch", "context7", "grep_app", "lsp"];
|
|
111566
111555
|
function getMcpConfigPaths() {
|
|
111567
111556
|
return [
|
|
111568
|
-
|
|
111569
|
-
|
|
111570
|
-
|
|
111557
|
+
join82(homedir20(), ".claude", ".mcp.json"),
|
|
111558
|
+
join82(process.cwd(), ".mcp.json"),
|
|
111559
|
+
join82(process.cwd(), ".claude", ".mcp.json")
|
|
111571
111560
|
];
|
|
111572
111561
|
}
|
|
111573
111562
|
function loadUserMcpConfig() {
|
|
@@ -111849,7 +111838,7 @@ init_src();
|
|
|
111849
111838
|
import { existsSync as existsSync58 } from "node:fs";
|
|
111850
111839
|
import { lstat as lstat15, readdir as readdir14, readFile as readFile27 } from "node:fs/promises";
|
|
111851
111840
|
import { homedir as homedir22 } from "node:os";
|
|
111852
|
-
import { basename as basename10, join as
|
|
111841
|
+
import { basename as basename10, join as join83, resolve as resolve23 } from "node:path";
|
|
111853
111842
|
// packages/omo-opencode/package.json
|
|
111854
111843
|
var package_default3 = {
|
|
111855
111844
|
name: "@oh-my-opencode/omo-opencode",
|
|
@@ -111915,13 +111904,13 @@ var CODEX_BIN_NAMES = [
|
|
|
111915
111904
|
"omo-git-bash-hook"
|
|
111916
111905
|
];
|
|
111917
111906
|
async function gatherCodexSummary(deps = {}) {
|
|
111918
|
-
const codexHome = resolve23(deps.codexHome ?? process.env.CODEX_HOME ??
|
|
111907
|
+
const codexHome = resolve23(deps.codexHome ?? process.env.CODEX_HOME ?? join83(homedir22(), ".codex"));
|
|
111919
111908
|
const binDir = resolveCodexInstallerBinDir({ binDir: deps.binDir, codexHome, env: process.env });
|
|
111920
111909
|
const detection = await (deps.detectCodexInstallation ?? detectCodexInstallation)();
|
|
111921
111910
|
const pluginRoot = await resolveInstalledPluginRoot(codexHome);
|
|
111922
|
-
const manifest = pluginRoot === null ? null : await readJson(
|
|
111923
|
-
const installSnapshot = pluginRoot === null ? null : await readJson(
|
|
111924
|
-
const configPath =
|
|
111911
|
+
const manifest = pluginRoot === null ? null : await readJson(join83(pluginRoot, ".codex-plugin", "plugin.json"));
|
|
111912
|
+
const installSnapshot = pluginRoot === null ? null : await readJson(join83(pluginRoot, "lazycodex-install.json"));
|
|
111913
|
+
const configPath = join83(codexHome, "config.toml");
|
|
111925
111914
|
const pluginVersion = stringField(manifest, "version");
|
|
111926
111915
|
return {
|
|
111927
111916
|
codexPath: detection.found && "path" in detection ? detection.path : null,
|
|
@@ -111978,7 +111967,7 @@ function buildCodexIssues(summary) {
|
|
|
111978
111967
|
if (summary.pluginRoot === null) {
|
|
111979
111968
|
issues.push({
|
|
111980
111969
|
title: "OMO Codex plugin is not installed",
|
|
111981
|
-
description: `Expected cached plugin at ${
|
|
111970
|
+
description: `Expected cached plugin at ${join83("plugins", "cache", MARKETPLACE_NAME, PLUGIN_NAME2, DEFAULT_PLUGIN_VERSION)} under CODEX_HOME.`,
|
|
111982
111971
|
fix: "Run: npx lazycodex-ai install",
|
|
111983
111972
|
severity: "error",
|
|
111984
111973
|
affects: ["plugin loading"]
|
|
@@ -112043,12 +112032,12 @@ function buildCodexIssues(summary) {
|
|
|
112043
112032
|
return issues;
|
|
112044
112033
|
}
|
|
112045
112034
|
async function resolveInstalledPluginRoot(codexHome) {
|
|
112046
|
-
const pluginRoot =
|
|
112035
|
+
const pluginRoot = join83(codexHome, "plugins", "cache", MARKETPLACE_NAME, PLUGIN_NAME2);
|
|
112047
112036
|
if (!existsSync58(pluginRoot))
|
|
112048
112037
|
return null;
|
|
112049
112038
|
const versions2 = await readdir14(pluginRoot, { withFileTypes: true });
|
|
112050
112039
|
const candidates = versions2.filter((entry) => entry.isDirectory()).map((entry) => entry.name).sort(compareVersionsDescending);
|
|
112051
|
-
return candidates.length === 0 ? null :
|
|
112040
|
+
return candidates.length === 0 ? null : join83(pluginRoot, candidates[0] ?? DEFAULT_PLUGIN_VERSION);
|
|
112052
112041
|
}
|
|
112053
112042
|
async function readCodexConfigSummary(configPath) {
|
|
112054
112043
|
if (!existsSync58(configPath)) {
|
|
@@ -112076,13 +112065,13 @@ async function readCodexConfigSummary(configPath) {
|
|
|
112076
112065
|
async function readLinkedBins(binDir) {
|
|
112077
112066
|
const linked = [];
|
|
112078
112067
|
for (const name of CODEX_BIN_NAMES) {
|
|
112079
|
-
if (await pathExists2(
|
|
112068
|
+
if (await pathExists2(join83(binDir, process.platform === "win32" ? `${name}.cmd` : name)))
|
|
112080
112069
|
linked.push(name);
|
|
112081
112070
|
}
|
|
112082
112071
|
return linked;
|
|
112083
112072
|
}
|
|
112084
112073
|
async function readLinkedAgents(codexHome) {
|
|
112085
|
-
const agentsDir =
|
|
112074
|
+
const agentsDir = join83(codexHome, "agents");
|
|
112086
112075
|
if (!existsSync58(agentsDir))
|
|
112087
112076
|
return [];
|
|
112088
112077
|
const entries = await readdir14(agentsDir, { withFileTypes: true });
|
|
@@ -112198,7 +112187,7 @@ async function pathExists2(path15) {
|
|
|
112198
112187
|
init_src();
|
|
112199
112188
|
import { readdir as readdir15, readFile as readFile28, stat as stat7 } from "node:fs/promises";
|
|
112200
112189
|
import { homedir as homedir23 } from "node:os";
|
|
112201
|
-
import { dirname as dirname33, isAbsolute as isAbsolute13, join as
|
|
112190
|
+
import { dirname as dirname33, isAbsolute as isAbsolute13, join as join84, relative as relative9, resolve as resolve24, sep as sep9 } from "node:path";
|
|
112202
112191
|
var CODEX_COMPONENTS_CHECK_ID = "codex-components";
|
|
112203
112192
|
var CODEX_COMPONENTS_CHECK_NAME = "codex-components";
|
|
112204
112193
|
var PLUGIN_DATA_DIR_NAME = "omo-sisyphuslabs";
|
|
@@ -112208,7 +112197,7 @@ async function checkCodexComponents(deps = {}) {
|
|
|
112208
112197
|
const env2 = deps.env ?? process.env;
|
|
112209
112198
|
const platform = deps.platform ?? process.platform;
|
|
112210
112199
|
const arch = deps.arch ?? process.arch;
|
|
112211
|
-
const codexHome = resolve24(deps.codexHome ?? env2["CODEX_HOME"] ??
|
|
112200
|
+
const codexHome = resolve24(deps.codexHome ?? env2["CODEX_HOME"] ?? join84(homedir23(), ".codex"));
|
|
112212
112201
|
const summary = await gatherCodexSummary({ ...deps, codexHome });
|
|
112213
112202
|
if (summary.pluginRoot === null) {
|
|
112214
112203
|
return {
|
|
@@ -112233,7 +112222,7 @@ async function checkCodexComponents(deps = {}) {
|
|
|
112233
112222
|
});
|
|
112234
112223
|
}
|
|
112235
112224
|
const runtimeSgDir = runtimeSgDirectory(codexHome, platform, arch);
|
|
112236
|
-
const runtimeSgPath =
|
|
112225
|
+
const runtimeSgPath = join84(runtimeSgDir, sgBinaryName(platform));
|
|
112237
112226
|
const sg = findSgBinarySync({
|
|
112238
112227
|
arch,
|
|
112239
112228
|
env: env2,
|
|
@@ -112345,7 +112334,7 @@ async function findManifestPaths(root, manifestName) {
|
|
|
112345
112334
|
for (const entry of entries) {
|
|
112346
112335
|
if (entry.name === "node_modules" || entry.name === ".git")
|
|
112347
112336
|
continue;
|
|
112348
|
-
const entryPath =
|
|
112337
|
+
const entryPath = join84(root, entry.name);
|
|
112349
112338
|
if (entry.isDirectory()) {
|
|
112350
112339
|
paths3.push(...await findManifestPaths(entryPath, manifestName));
|
|
112351
112340
|
continue;
|
|
@@ -112389,18 +112378,18 @@ function isPluginRuntimePathArg(arg) {
|
|
|
112389
112378
|
return normalized.endsWith(".js") && normalized.includes("/dist/") && (normalized.startsWith("./") || normalized.startsWith("../") || normalized.startsWith("components/") || normalized.startsWith("/") || isAbsolute13(arg));
|
|
112390
112379
|
}
|
|
112391
112380
|
function runtimeSgDirectory(codexHome, platform, arch) {
|
|
112392
|
-
return
|
|
112381
|
+
return join84(codexHome, "runtime", "ast-grep", runtimeSlug(platform, arch));
|
|
112393
112382
|
}
|
|
112394
112383
|
function describeSgSource(sgPath, env2, runtimeSgDir, platform) {
|
|
112395
112384
|
const override = env2[SG_PATH_ENV_KEY]?.trim();
|
|
112396
112385
|
if (override !== undefined && override.length > 0 && sgPath === override)
|
|
112397
112386
|
return `env override ${SG_PATH_ENV_KEY}`;
|
|
112398
|
-
if (sgPath ===
|
|
112387
|
+
if (sgPath === join84(runtimeSgDir, sgBinaryName(platform)))
|
|
112399
112388
|
return "runtime dir";
|
|
112400
112389
|
return "PATH";
|
|
112401
112390
|
}
|
|
112402
112391
|
async function readBootstrapStateSummary(codexHome) {
|
|
112403
|
-
const statePath =
|
|
112392
|
+
const statePath = join84(codexHome, "plugins", "data", PLUGIN_DATA_DIR_NAME, "bootstrap", "state.json");
|
|
112404
112393
|
const raw = await readJson2(statePath);
|
|
112405
112394
|
if (raw === null)
|
|
112406
112395
|
return null;
|
|
@@ -112479,16 +112468,16 @@ function isRecord14(value) {
|
|
|
112479
112468
|
import { existsSync as existsSync59 } from "node:fs";
|
|
112480
112469
|
import { readFile as readFile29 } from "node:fs/promises";
|
|
112481
112470
|
import { homedir as homedir24 } from "node:os";
|
|
112482
|
-
import { join as
|
|
112471
|
+
import { join as join85, resolve as resolve25 } from "node:path";
|
|
112483
112472
|
var RUNTIME_WRAPPER_MARKER2 = "OMO_GENERATED_RUNTIME_WRAPPER";
|
|
112484
112473
|
var CHECK_NAME = "codex-runtime-wrapper";
|
|
112485
112474
|
var REINSTALL_COMMAND = "npx --yes lazycodex-ai@latest install --no-tui";
|
|
112486
112475
|
async function checkCodexRuntimeWrapper(deps = {}) {
|
|
112487
|
-
const codexHome = resolve25(deps.codexHome ?? process.env.CODEX_HOME ??
|
|
112476
|
+
const codexHome = resolve25(deps.codexHome ?? process.env.CODEX_HOME ?? join85(homedir24(), ".codex"));
|
|
112488
112477
|
const binDir = resolveCodexInstallerBinDir({ binDir: deps.binDir, codexHome, env: process.env });
|
|
112489
112478
|
const platform = deps.platform ?? process.platform;
|
|
112490
|
-
const wrapperPath =
|
|
112491
|
-
const legacyWrapperPath =
|
|
112479
|
+
const wrapperPath = join85(binDir, platform === "win32" ? "omo-agent-toolkit.cmd" : "omo-agent-toolkit");
|
|
112480
|
+
const legacyWrapperPath = join85(binDir, platform === "win32" ? "omo.cmd" : "omo");
|
|
112492
112481
|
const [wrapper, legacyWrapper] = await Promise.all([readRuntimeWrapper(wrapperPath), readRuntimeWrapper(legacyWrapperPath)]);
|
|
112493
112482
|
const issues = [];
|
|
112494
112483
|
if (wrapper?.includes(RUNTIME_WRAPPER_MARKER2) === true) {
|
|
@@ -113016,12 +113005,12 @@ import {
|
|
|
113016
113005
|
unlinkSync as unlinkSync9,
|
|
113017
113006
|
writeFileSync as writeFileSync12
|
|
113018
113007
|
} from "node:fs";
|
|
113019
|
-
import { basename as basename11, dirname as dirname34, join as
|
|
113008
|
+
import { basename as basename11, dirname as dirname34, join as join88 } from "node:path";
|
|
113020
113009
|
|
|
113021
113010
|
// packages/mcp-client-core/src/config-dir.ts
|
|
113022
113011
|
import { existsSync as existsSync60, realpathSync as realpathSync8 } from "node:fs";
|
|
113023
113012
|
import { homedir as homedir25 } from "node:os";
|
|
113024
|
-
import { join as
|
|
113013
|
+
import { join as join86, resolve as resolve26 } from "node:path";
|
|
113025
113014
|
function resolveConfigPath2(pathValue) {
|
|
113026
113015
|
const resolvedPath = resolve26(pathValue);
|
|
113027
113016
|
if (!existsSync60(resolvedPath))
|
|
@@ -113039,13 +113028,13 @@ function getOpenCodeCliConfigDir(env2 = process.env) {
|
|
|
113039
113028
|
if (customConfigDir) {
|
|
113040
113029
|
return resolveConfigPath2(customConfigDir);
|
|
113041
113030
|
}
|
|
113042
|
-
const xdgConfigDir = env2["XDG_CONFIG_HOME"]?.trim() ||
|
|
113043
|
-
return resolveConfigPath2(
|
|
113031
|
+
const xdgConfigDir = env2["XDG_CONFIG_HOME"]?.trim() || join86(homedir25(), ".config");
|
|
113032
|
+
return resolveConfigPath2(join86(xdgConfigDir, "opencode"));
|
|
113044
113033
|
}
|
|
113045
113034
|
|
|
113046
113035
|
// packages/mcp-client-core/src/mcp-oauth/storage-index.ts
|
|
113047
113036
|
import { chmodSync as chmodSync4, existsSync as existsSync61, readFileSync as readFileSync38, renameSync as renameSync6, writeFileSync as writeFileSync11 } from "node:fs";
|
|
113048
|
-
import { join as
|
|
113037
|
+
import { join as join87 } from "node:path";
|
|
113049
113038
|
var INDEX_FILE_NAME = "index.json";
|
|
113050
113039
|
function isTokenIndex(value) {
|
|
113051
113040
|
if (typeof value !== "object" || value === null || Array.isArray(value))
|
|
@@ -113053,7 +113042,7 @@ function isTokenIndex(value) {
|
|
|
113053
113042
|
return Object.values(value).every((entry) => typeof entry === "string");
|
|
113054
113043
|
}
|
|
113055
113044
|
function getIndexPath(storageDir) {
|
|
113056
|
-
return
|
|
113045
|
+
return join87(storageDir, INDEX_FILE_NAME);
|
|
113057
113046
|
}
|
|
113058
113047
|
function readTokenIndex(storageDir) {
|
|
113059
113048
|
const indexPath = getIndexPath(storageDir);
|
|
@@ -113097,16 +113086,16 @@ function deleteTokenIndexEntry(storageDir, hash2) {
|
|
|
113097
113086
|
var STORAGE_DIR_NAME = "mcp-oauth";
|
|
113098
113087
|
var LEGACY_STORAGE_FILE_NAME = "mcp-oauth.json";
|
|
113099
113088
|
function getMcpOauthStorageDir() {
|
|
113100
|
-
return
|
|
113089
|
+
return join88(getOpenCodeCliConfigDir(), STORAGE_DIR_NAME);
|
|
113101
113090
|
}
|
|
113102
113091
|
function getMcpOauthServerHash(serverHost, resource) {
|
|
113103
113092
|
return createHash6("sha256").update(buildKey(serverHost, resource)).digest("hex").slice(0, 32);
|
|
113104
113093
|
}
|
|
113105
113094
|
function getMcpOauthStoragePath(serverHost, resource) {
|
|
113106
|
-
return
|
|
113095
|
+
return join88(getMcpOauthStorageDir(), `${getMcpOauthServerHash(serverHost, resource)}.json`);
|
|
113107
113096
|
}
|
|
113108
113097
|
function getLegacyStoragePath() {
|
|
113109
|
-
return
|
|
113098
|
+
return join88(getOpenCodeCliConfigDir(), LEGACY_STORAGE_FILE_NAME);
|
|
113110
113099
|
}
|
|
113111
113100
|
function normalizeHost2(serverHost) {
|
|
113112
113101
|
let host = serverHost.trim();
|
|
@@ -113285,7 +113274,7 @@ function listTokensByHost(serverHost) {
|
|
|
113285
113274
|
for (const [hash2, indexedKey] of Object.entries(index)) {
|
|
113286
113275
|
if (!indexedKey.startsWith(prefix))
|
|
113287
113276
|
continue;
|
|
113288
|
-
const indexedToken = readTokenFile(
|
|
113277
|
+
const indexedToken = readTokenFile(join88(getMcpOauthStorageDir(), `${hash2}.json`));
|
|
113289
113278
|
if (indexedToken)
|
|
113290
113279
|
result[indexedKey] = indexedToken;
|
|
113291
113280
|
}
|
|
@@ -113300,7 +113289,7 @@ function listAllTokens() {
|
|
|
113300
113289
|
for (const entry of readdirSync11(dir, { withFileTypes: true })) {
|
|
113301
113290
|
if (!entry.isFile() || !entry.name.endsWith(".json") || entry.name === "index.json")
|
|
113302
113291
|
continue;
|
|
113303
|
-
const token = readTokenFile(
|
|
113292
|
+
const token = readTokenFile(join88(dir, entry.name));
|
|
113304
113293
|
const hash2 = basename11(entry.name, ".json");
|
|
113305
113294
|
if (token)
|
|
113306
113295
|
result[index[hash2] ?? hash2] = token;
|