@lorrylurui/code-intelligence-mcp 1.1.11 → 1.1.12

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.
@@ -8,34 +8,15 @@
8
8
  * 3. 本地的 .env(最低优先级,提供默认值)
9
9
  */
10
10
  import { resolve } from 'node:path';
11
- import { existsSync, readFileSync } from 'node:fs';
12
11
  import { loadProjectDotenv } from '../config/env.js';
13
12
  import { runReindex } from '../services/reindex.js';
13
+ // dotenv.config();
14
14
  /**
15
15
  * 入口:加载第三方 .env → 校验环境 → 调用 runReindex。
16
16
  * 进度与统计输出到 **stderr**,避免占用 stdout。
17
17
  * 进程退出码:成功 `0`,无 MySQL 或异常 `1`。
18
18
  */
19
19
  async function main() {
20
- // 1️ 先加载本地 .env(提供默认值)
21
- const localEnvPath = resolve(process.cwd(), '.env');
22
- if (existsSync(localEnvPath)) {
23
- const content = readFileSync(localEnvPath, 'utf-8');
24
- for (const line of content.split('\n')) {
25
- const trimmed = line.trim();
26
- if (!trimmed || trimmed.startsWith('#'))
27
- continue;
28
- const eqIdx = trimmed.indexOf('=');
29
- if (eqIdx === -1)
30
- continue;
31
- const key = trimmed.slice(0, eqIdx).trim();
32
- let value = trimmed.slice(eqIdx + 1).trim();
33
- value = value.replace(/^["']|["']$/g, '');
34
- if (key && process.env[key] === undefined) {
35
- process.env[key] = value;
36
- }
37
- }
38
- }
39
20
  // 2️ 确定项目根目录并加载第三方 .env(仅覆盖未定义的变量)
40
21
  const projectRoot = resolve(process.env.INDEX_ROOT ?? process.cwd());
41
22
  loadProjectDotenv(projectRoot);
@@ -43,7 +24,9 @@ async function main() {
43
24
  console.error(`[index] MYSQL_ENABLED=${process.env.MYSQL_ENABLED}, ` +
44
25
  `MYSQL_HOST=${process.env.MYSQL_HOST}`);
45
26
  const globPatterns = process.env.INDEX_GLOB
46
- ? process.env.INDEX_GLOB.split(/\s+/).map((s) => s.trim()).filter(Boolean)
27
+ ? process.env.INDEX_GLOB.split(/\s+/)
28
+ .map((s) => s.trim())
29
+ .filter(Boolean)
47
30
  : undefined;
48
31
  const ignore = process.env.INDEX_IGNORE
49
32
  ? process.env.INDEX_IGNORE.split(',').map((s) => s.trim())
@@ -12,12 +12,12 @@ for (const arg of process.argv) {
12
12
  }
13
13
  }
14
14
  // 加载本地 .env(外部传入的 env 已经在 process.env 中,override: false 不会覆盖它们)
15
- dotenv.config({
16
- path: path.resolve(projectRoot, '.env'),
17
- override: false,
18
- });
15
+ // dotenv.config({
16
+ // path: path.resolve(projectRoot, '.env'),
17
+ // override: false,
18
+ // });
19
19
  // MCP Server 本地 .env 路径(固定指向项目根目录)
20
- const MCP_SERVER_ROOT = path.resolve(__dirname, '..', '..');
20
+ const MCP_SERVER_ROOT = path.resolve(__dirname, '..', '..'); // MCP Server 根目录
21
21
  const MCP_SERVER_ENV_PATH = path.resolve(MCP_SERVER_ROOT, '.env');
22
22
  /**
23
23
  * 从指定项目根目录加载 .env 到 process.env
@@ -25,12 +25,12 @@ const MCP_SERVER_ENV_PATH = path.resolve(MCP_SERVER_ROOT, '.env');
25
25
  */
26
26
  export function loadProjectDotenv(projectRoot) {
27
27
  // 始终确保 MCP Server 本地的 .env 被加载(补充加载,确保有默认值)
28
- if (existsSync(MCP_SERVER_ENV_PATH)) {
29
- dotenv.config({
30
- path: MCP_SERVER_ENV_PATH,
31
- override: false, // 不覆盖已存在的变量
32
- });
33
- }
28
+ // if (existsSync(MCP_SERVER_ENV_PATH)) {
29
+ dotenv.config({
30
+ path: MCP_SERVER_ENV_PATH,
31
+ override: false, // 不覆盖已存在的变量
32
+ });
33
+ // }
34
34
  const envPath = path.resolve(projectRoot, '.env');
35
35
  if (!existsSync(envPath)) {
36
36
  return;
@@ -70,8 +70,8 @@ export function loadProjectDotenv(projectRoot) {
70
70
  }
71
71
  }
72
72
  // 尝试从第三方项目目录加载 .env,按变量维度覆盖(只覆盖第三方明确配置的变量)
73
- const clientProjectRoot = process.env.INDEX_ROOT || process.cwd();
74
- loadProjectDotenv(clientProjectRoot);
73
+ // const clientProjectRoot = process.env.INDEX_ROOT || process.cwd();
74
+ // loadProjectDotenv(clientProjectRoot);
75
75
  // 外部传入的 env 已在上一步保留,这里确保环境变量已正确设置
76
76
  for (const arg of process.argv) {
77
77
  const match = arg.match(/^--([A-Z_][A-Z0-9_]*)=(.+)$/);
package/dist/index.js CHANGED
@@ -1,7 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
3
+ import { validateEnv } from './config/env.js';
3
4
  import { createServer } from './server/createServer.js';
4
5
  async function main() {
6
+ validateEnv();
5
7
  const server = createServer();
6
8
  const transport = new StdioServerTransport();
7
9
  await server.connect(transport);
@@ -1,5 +1,5 @@
1
1
  import { resolve } from 'node:path';
2
- import { loadProjectDotenv, validateEnv } from '../config/env.js';
2
+ import { loadProjectDotenv } from '../config/env.js';
3
3
  import { getMySqlPool } from '../db/mysql.js';
4
4
  import { indexedRowToEmbedText } from '../indexer/embedText.js';
5
5
  import { indexProject } from '../indexer/indexProject.js';
@@ -24,7 +24,6 @@ export async function runReindex(options = {}) {
24
24
  throw new Error(`最新!${JSON.stringify(process.env)}执行 reindex 写入数据库需要 MYSQL_ENABLED=true。' +
25
25
  '第三方项目可在 .env 中配置此变量(未配置则使用 MCP Server 本地配置)。`);
26
26
  }
27
- validateEnv();
28
27
  pool = getMySqlPool();
29
28
  await pool.query('SELECT 1'); // 测试连接
30
29
  console.error('[reindex] MySQL connection successful');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lorrylurui/code-intelligence-mcp",
3
- "version": "1.1.11",
3
+ "version": "1.1.12",
4
4
  "private": false,
5
5
  "description": "MCP server 提供仓库内可复用代码块(ts/tsx/js/jsx/css/less)的索引和查询能力,支持基于代码上下文的智能推荐。",
6
6
  "type": "module",