import { defineConfig } from "vitest/config"; import path from "path"; export default defineConfig({ resolve: { alias: { // Map contracts subpath exports to their actual dist paths for vitest resolution // These aliases work for both source files and bundled code in node_modules "@kya-os/contracts/proof": path.resolve(__dirname, "../contracts/dist/proof/index.js"), "@kya-os/contracts/delegation": path.resolve(__dirname, "../contracts/dist/delegation/index.js"), "@kya-os/contracts/agentshield-api": path.resolve(__dirname, "../contracts/dist/agentshield-api/index.js"), "@kya-os/contracts/config": path.resolve(__dirname, "../contracts/dist/config/index.js"), "@kya-os/contracts/tool-protection": path.resolve(__dirname, "../contracts/dist/tool-protection/index.js"), "@kya-os/contracts/well-known": path.resolve(__dirname, "../contracts/dist/well-known/index.js"), "@kya-os/contracts/runtime": path.resolve(__dirname, "../contracts/dist/runtime/index.js"), "@kya-os/contracts/handshake": path.resolve(__dirname, "../contracts/dist/handshake.js"), "@kya-os/contracts/test": path.resolve(__dirname, "../contracts/dist/test.js"), "@kya-os/contracts": path.resolve(__dirname, "../contracts/dist/index.js"), }, // Ensure aliases are resolved before node_modules dedupe: ["@kya-os/contracts"], // Force resolution to use workspace contracts conditions: ["node", "import", "require"], }, // Force vitest to inline contracts and mcp-i-core packages so aliases work // This ensures that bundled code in node_modules can resolve contracts subpath exports server: { deps: { inline: ["@kya-os/contracts", "@kya-os/mcp-i-core"], }, }, test: { globals: true, environment: "node", coverage: { provider: "v8", reporter: ["json", "text-summary"], include: ["src/**/*.ts"], exclude: [ "src/**/__tests__/**", "src/**/*.test.ts", "dist/**", "node_modules/**", ], reportsDirectory: "./coverage", clean: true, // Coverage thresholds set conservatively — tighten as coverage improves // Current coverage (Feb 2026): Lines 79%, Branches 69%, Functions 79%, Statements 79% thresholds: { lines: 75, branches: 65, functions: 75, statements: 75, }, }, }, });