Fix jiti alias resolution in dev mode with tsx

When running from source with tsx, the jiti aliases pointed to .js files
that don't exist (only .ts files exist). This caused jiti to fall back to
different module resolution, loading a separate instance of theme.ts where
initTheme() was never called, resulting in undefined theme.

Now checks if .js exists and falls back to .ts for dev mode compatibility.
This commit is contained in:
Mario Zechner 2026-01-12 17:38:31 +01:00
parent a46c4aab4f
commit c7aa2c97a9
2 changed files with 17 additions and 23 deletions

View file

@ -4359,23 +4359,6 @@ export const MODELS = {
contextWindow: 256000,
maxTokens: 128000,
} satisfies Model<"openai-completions">,
"kwaipilot/kat-coder-pro:free": {
id: "kwaipilot/kat-coder-pro:free",
name: "Kwaipilot: KAT-Coder-Pro V1 (free)",
api: "openai-completions",
provider: "openrouter",
baseUrl: "https://openrouter.ai/api/v1",
reasoning: false,
input: ["text"],
cost: {
input: 0,
output: 0,
cacheRead: 0,
cacheWrite: 0,
},
contextWindow: 256000,
maxTokens: 128000,
} satisfies Model<"openai-completions">,
"meta-llama/llama-3-70b-instruct": {
id: "meta-llama/llama-3-70b-instruct",
name: "Meta: Llama 3 70B Instruct",
@ -4589,13 +4572,13 @@ export const MODELS = {
reasoning: true,
input: ["text"],
cost: {
input: 0.28,
output: 1.2,
cacheRead: 0.14,
input: 0.27,
output: 1.12,
cacheRead: 0,
cacheWrite: 0,
},
contextWindow: 196608,
maxTokens: 4096,
maxTokens: 65536,
} satisfies Model<"openai-completions">,
"mistralai/codestral-2508": {
id: "mistralai/codestral-2508",

View file

@ -31,14 +31,25 @@ function getAliases(): Record<string, string> {
if (_aliases) return _aliases;
const __dirname = path.dirname(fileURLToPath(import.meta.url));
const packageIndex = path.resolve(__dirname, "../..", "index.js");
// Use .js extension but check if .ts exists (dev mode with tsx)
let packageIndex = path.resolve(__dirname, "../..", "index.js");
if (!fs.existsSync(packageIndex)) {
const tsPath = packageIndex.replace(/\.js$/, ".ts");
if (fs.existsSync(tsPath)) packageIndex = tsPath;
}
let extensionsIndex = path.resolve(__dirname, "index.js");
if (!fs.existsSync(extensionsIndex)) {
const tsPath = extensionsIndex.replace(/\.js$/, ".ts");
if (fs.existsSync(tsPath)) extensionsIndex = tsPath;
}
const typeboxEntry = require.resolve("@sinclair/typebox");
const typeboxRoot = typeboxEntry.replace(/\/build\/cjs\/index\.js$/, "");
_aliases = {
"@mariozechner/pi-coding-agent": packageIndex,
"@mariozechner/pi-coding-agent/extensions": path.resolve(__dirname, "index.js"),
"@mariozechner/pi-coding-agent/extensions": extensionsIndex,
"@mariozechner/pi-tui": require.resolve("@mariozechner/pi-tui"),
"@mariozechner/pi-ai": require.resolve("@mariozechner/pi-ai"),
"@sinclair/typebox": typeboxRoot,