Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitb92d442

Browse files
mizchiclaude
andcommitted
feat: implement early diff detection for incremental indexing
- Add early diff detection in `lsmcp index` command to avoid full re-indexing- Implement getAllFiles() and getFileInfo() methods for cache inspection- Add smart incremental indexing that only updates changed files- Setup comprehensive CI/CD pipeline with GitHub Actions- Fix CI-specific test failures with proper timeouts and retry logic- Add CI environment detection in vitest.config.ts- Optimize indexing performance from ~10s to ~20ms for unchanged projects🤖 Generated with [Claude Code](https://claude.ai/code)Co-Authored-By: Claude <noreply@anthropic.com>
1 parentf0284bc commitb92d442

File tree

25 files changed

+1407
-40
lines changed

25 files changed

+1407
-40
lines changed

‎.github/dependabot.yml‎

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
version:2
2+
updates:
3+
# Enable version updates for npm
4+
-package-ecosystem:"npm"
5+
directory:"/"
6+
schedule:
7+
interval:"weekly"
8+
day:"monday"
9+
time:"00:00"
10+
open-pull-requests-limit:10
11+
groups:
12+
development:
13+
patterns:
14+
-"@types/*"
15+
-"vitest*"
16+
-"tsx"
17+
-"tsdown"
18+
-"@biomejs/*"
19+
production:
20+
patterns:
21+
-"@modelcontextprotocol/*"
22+
-"vscode-*"
23+
24+
# Enable version updates for GitHub Actions
25+
-package-ecosystem:"github-actions"
26+
directory:"/"
27+
schedule:
28+
interval:"weekly"
29+
day:"monday"
30+
time:"00:00"
31+
open-pull-requests-limit:5

‎.github/workflows/ci.yml‎

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
name:CI
2+
3+
on:
4+
push:
5+
branches:[main]
6+
pull_request:
7+
branches:[main]
8+
9+
jobs:
10+
test:
11+
runs-on:ubuntu-latest
12+
13+
strategy:
14+
matrix:
15+
node-version:[20.x, 22.x]
16+
17+
steps:
18+
-uses:actions/checkout@v4
19+
20+
-name:Install pnpm
21+
uses:pnpm/action-setup@v4
22+
with:
23+
version:9
24+
25+
-name:Use Node.js ${{ matrix.node-version }}
26+
uses:actions/setup-node@v4
27+
with:
28+
node-version:${{ matrix.node-version }}
29+
cache:'pnpm'
30+
31+
-name:Install dependencies
32+
run:pnpm install --frozen-lockfile
33+
34+
-name:Build
35+
run:pnpm build
36+
37+
-name:Type check
38+
run:pnpm typecheck
39+
40+
-name:Lint
41+
run:pnpm lint
42+
43+
-name:Format check
44+
run:pnpm format:check
45+
46+
-name:Unit tests
47+
run:pnpm test:unit
48+
env:
49+
CI:true
50+
51+
-name:Integration tests
52+
run:pnpm test:integration
53+
timeout-minutes:15
54+
env:
55+
CI:true
56+
57+
-name:Check examples
58+
run:pnpm test:examples
59+
60+
build-and-publish:
61+
needs:test
62+
runs-on:ubuntu-latest
63+
if:github.ref == 'refs/heads/main'
64+
65+
steps:
66+
-uses:actions/checkout@v4
67+
68+
-name:Install pnpm
69+
uses:pnpm/action-setup@v4
70+
with:
71+
version:9
72+
73+
-name:Use Node.js
74+
uses:actions/setup-node@v4
75+
with:
76+
node-version:20
77+
cache:'pnpm'
78+
registry-url:'https://registry.npmjs.org'
79+
80+
-name:Install dependencies
81+
run:pnpm install --frozen-lockfile
82+
83+
-name:Build
84+
run:pnpm build
85+
86+
-name:Check if version changed
87+
id:version
88+
run:|
89+
PACKAGE_VERSION=$(node -p "require('./package.json').version")
90+
echo "version=$PACKAGE_VERSION" >> $GITHUB_OUTPUT
91+
92+
# Check if this version is already published
93+
if npm view @mizchi/lsmcp@$PACKAGE_VERSION version 2>/dev/null; then
94+
echo "Version $PACKAGE_VERSION already published"
95+
echo "should_publish=false" >> $GITHUB_OUTPUT
96+
else
97+
echo "Version $PACKAGE_VERSION not published yet"
98+
echo "should_publish=true" >> $GITHUB_OUTPUT
99+
fi
100+
101+
-name:Publish to npm
102+
if:steps.version.outputs.should_publish == 'true'
103+
run:npm publish --access public
104+
env:
105+
NODE_AUTH_TOKEN:${{ secrets.NPM_TOKEN }}
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
name:Language Server Tests
2+
3+
on:
4+
push:
5+
branches:[main]
6+
pull_request:
7+
branches:[main]
8+
schedule:
9+
# Run at 00:00 UTC every day to catch language server updates
10+
-cron:'0 0 * * *'
11+
12+
jobs:
13+
language-tests:
14+
runs-on:ubuntu-latest
15+
16+
strategy:
17+
fail-fast:false
18+
matrix:
19+
include:
20+
-name:TypeScript
21+
setup:|
22+
npm install -g typescript typescript-language-server
23+
test:pnpm test:languages:tsgo
24+
25+
-name:Python
26+
setup:|
27+
npm install -g pyright
28+
pip install ruff
29+
test:pnpm test:languages:python
30+
31+
-name:Rust
32+
setup:|
33+
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
34+
source $HOME/.cargo/env
35+
rustup component add rust-analyzer
36+
test:pnpm test:languages:rust
37+
38+
-name:Go
39+
setup:|
40+
go install golang.org/x/tools/gopls@latest
41+
echo "$HOME/go/bin" >> $GITHUB_PATH
42+
test:vitest run tests/languages/language-tests/go.test.ts
43+
44+
-name:Deno
45+
setup:|
46+
curl -fsSL https://deno.land/x/install/install.sh | sh
47+
echo "$HOME/.deno/bin" >> $GITHUB_PATH
48+
test:vitest run tests/languages/language-tests/deno.test.ts
49+
50+
steps:
51+
-uses:actions/checkout@v4
52+
53+
-name:Install pnpm
54+
uses:pnpm/action-setup@v4
55+
with:
56+
version:9
57+
58+
-name:Use Node.js
59+
uses:actions/setup-node@v4
60+
with:
61+
node-version:20
62+
cache:'pnpm'
63+
64+
-name:Set up Python
65+
if:matrix.name == 'Python'
66+
uses:actions/setup-python@v5
67+
with:
68+
python-version:'3.11'
69+
70+
-name:Set up Go
71+
if:matrix.name == 'Go'
72+
uses:actions/setup-go@v5
73+
with:
74+
go-version:'1.22'
75+
76+
-name:Install dependencies
77+
run:pnpm install --frozen-lockfile
78+
79+
-name:Build
80+
run:pnpm build
81+
82+
-name:Setup ${{ matrix.name }}
83+
run:${{ matrix.setup }}
84+
85+
-name:Test ${{ matrix.name }}
86+
run:${{ matrix.test }}
87+
timeout-minutes:10
88+
env:
89+
CI:true

‎.github/workflows/release.yml‎

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
name:Release
2+
3+
on:
4+
push:
5+
tags:
6+
-'v*'
7+
8+
jobs:
9+
release:
10+
runs-on:ubuntu-latest
11+
12+
permissions:
13+
contents:write
14+
packages:write
15+
16+
steps:
17+
-uses:actions/checkout@v4
18+
with:
19+
fetch-depth:0
20+
21+
-name:Install pnpm
22+
uses:pnpm/action-setup@v4
23+
with:
24+
version:9
25+
26+
-name:Use Node.js
27+
uses:actions/setup-node@v4
28+
with:
29+
node-version:20
30+
cache:'pnpm'
31+
registry-url:'https://registry.npmjs.org'
32+
33+
-name:Install dependencies
34+
run:pnpm install --frozen-lockfile
35+
36+
-name:Build
37+
run:pnpm build
38+
39+
-name:Run tests
40+
run:pnpm test
41+
42+
-name:Generate changelog
43+
run:pnpm changelog
44+
45+
-name:Publish to npm
46+
run:npm publish --access public
47+
env:
48+
NODE_AUTH_TOKEN:${{ secrets.NPM_TOKEN }}
49+
50+
-name:Create GitHub Release
51+
uses:softprops/action-gh-release@v2
52+
with:
53+
files:|
54+
dist/**
55+
lsmcp.schema.json
56+
body_path:CHANGELOG.md
57+
draft:false
58+
prerelease:${{ contains(github.ref, 'rc') || contains(github.ref, 'beta') || contains(github.ref, 'alpha') }}
59+
env:
60+
GITHUB_TOKEN:${{ secrets.GITHUB_TOKEN }}

‎.github/workflows/security.yml‎

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
name:Security
2+
3+
on:
4+
push:
5+
branches:[main]
6+
pull_request:
7+
branches:[main]
8+
schedule:
9+
# Run at 00:00 UTC every Monday
10+
-cron:'0 0 * * 1'
11+
12+
jobs:
13+
audit:
14+
runs-on:ubuntu-latest
15+
16+
steps:
17+
-uses:actions/checkout@v4
18+
19+
-name:Install pnpm
20+
uses:pnpm/action-setup@v4
21+
with:
22+
version:9
23+
24+
-name:Use Node.js
25+
uses:actions/setup-node@v4
26+
with:
27+
node-version:20
28+
cache:'pnpm'
29+
30+
-name:Install dependencies
31+
run:pnpm install --frozen-lockfile
32+
33+
-name:Run audit
34+
run:pnpm audit
35+
continue-on-error:true
36+
37+
-name:Check for known vulnerabilities
38+
run:|
39+
npx better-npm-audit audit --level high
40+
continue-on-error:true
41+
42+
codeql:
43+
name:CodeQL Analysis
44+
runs-on:ubuntu-latest
45+
46+
permissions:
47+
actions:read
48+
contents:read
49+
security-events:write
50+
51+
strategy:
52+
fail-fast:false
53+
matrix:
54+
language:['javascript', 'typescript']
55+
56+
steps:
57+
-name:Checkout repository
58+
uses:actions/checkout@v4
59+
60+
-name:Initialize CodeQL
61+
uses:github/codeql-action/init@v3
62+
with:
63+
languages:${{ matrix.language }}
64+
65+
-name:Autobuild
66+
uses:github/codeql-action/autobuild@v3
67+
68+
-name:Perform CodeQL Analysis
69+
uses:github/codeql-action/analyze@v3

‎.lsmcp/config.json‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
{
2+
"preset":"typescript",
23
"files": ["**/*.ts","**/*.tsx"],
34
"symbolFilter": {
45
"excludeKinds": ["Variable","Constant","String","Number","Boolean"]

‎README.md‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
#lsmcp - Language Service Protocol MCP
22

3+
[![CI](https://github.com/mizchi/lsmcp/actions/workflows/ci.yml/badge.svg)](https://github.com/mizchi/lsmcp/actions/workflows/ci.yml)
4+
[![Language Server Tests](https://github.com/mizchi/lsmcp/actions/workflows/language-tests.yml/badge.svg)](https://github.com/mizchi/lsmcp/actions/workflows/language-tests.yml)
5+
[![npm version](https://badge.fury.io/js/@mizchi%2Flsmcp.svg)](https://www.npmjs.com/package/@mizchi/lsmcp)
6+
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
7+
38
A unified MCP (Model Context Protocol) server that provides advanced code manipulation and analysis capabilities for multiple programming languages through Language Server Protocol integration.
49

510
- 🌍**Multi-Language Support**

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp