@mhalder/qdrant-mcp-server 3.2.0 → 3.2.1
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/.dagger/.gitattributes +1 -0
- package/.dagger/package.json +6 -0
- package/.dagger/src/index.ts +83 -0
- package/.dagger/tsconfig.json +13 -0
- package/.dagger/yarn.lock +8 -0
- package/.github/workflows/ci.yml +17 -27
- package/.github/workflows/release.yml +16 -19
- package/CHANGELOG.md +7 -0
- package/README.md +12 -1
- package/dagger.json +8 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/sdk/** linguist-generated
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import {
|
|
2
|
+
dag,
|
|
3
|
+
Container,
|
|
4
|
+
Directory,
|
|
5
|
+
object,
|
|
6
|
+
func,
|
|
7
|
+
argument,
|
|
8
|
+
} from "@dagger.io/dagger"
|
|
9
|
+
|
|
10
|
+
const SUPPORTED_NODE_VERSIONS = ["22", "24"]
|
|
11
|
+
|
|
12
|
+
@object()
|
|
13
|
+
export class Ci {
|
|
14
|
+
private base(source: Directory, nodeVersion: string): Container {
|
|
15
|
+
if (!SUPPORTED_NODE_VERSIONS.includes(nodeVersion)) {
|
|
16
|
+
throw new Error(
|
|
17
|
+
`Unsupported Node version "${nodeVersion}". Must be one of: ${SUPPORTED_NODE_VERSIONS.join(", ")}`,
|
|
18
|
+
)
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
let ctr = dag
|
|
22
|
+
.container()
|
|
23
|
+
.from(`node:${nodeVersion}-slim`)
|
|
24
|
+
.withExec(["apt-get", "update"])
|
|
25
|
+
.withExec([
|
|
26
|
+
"apt-get",
|
|
27
|
+
"install",
|
|
28
|
+
"-y",
|
|
29
|
+
"--no-install-recommends",
|
|
30
|
+
"python3",
|
|
31
|
+
"make",
|
|
32
|
+
"g++",
|
|
33
|
+
"git",
|
|
34
|
+
])
|
|
35
|
+
.withMountedDirectory("/app", source)
|
|
36
|
+
.withWorkdir("/app")
|
|
37
|
+
// Dagger context directories exclude .git dirs but may include
|
|
38
|
+
// a .git worktree file pointing to a host path. Remove it and
|
|
39
|
+
// init a fresh repo so integration tests pass.
|
|
40
|
+
.withExec(["rm", "-rf", ".git"])
|
|
41
|
+
.withExec(["git", "init"])
|
|
42
|
+
.withExec(["git", "config", "user.email", "ci@dagger"])
|
|
43
|
+
.withExec(["git", "config", "user.name", "CI"])
|
|
44
|
+
.withExec(["git", "add", "."])
|
|
45
|
+
.withExec(["git", "commit", "-m", "init", "--allow-empty"])
|
|
46
|
+
|
|
47
|
+
if (nodeVersion.startsWith("24")) {
|
|
48
|
+
ctr = ctr.withEnvVariable("CXXFLAGS", "-std=c++20")
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return ctr.withExec(["npm", "ci"])
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
@func()
|
|
55
|
+
check(
|
|
56
|
+
@argument({ defaultPath: "/" }) source: Directory,
|
|
57
|
+
nodeVersion: string = "22",
|
|
58
|
+
): Container {
|
|
59
|
+
return this.base(source, nodeVersion)
|
|
60
|
+
.withExec(["npm", "run", "type-check"])
|
|
61
|
+
.withExec(["npm", "run", "build"])
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
@func()
|
|
65
|
+
async test(
|
|
66
|
+
@argument({ defaultPath: "/" }) source: Directory,
|
|
67
|
+
nodeVersion: string = "22",
|
|
68
|
+
): Promise<Directory> {
|
|
69
|
+
return this.check(source, nodeVersion)
|
|
70
|
+
.withExec(["npm", "run", "test:coverage"])
|
|
71
|
+
.withExec(["npm", "run", "test:providers"])
|
|
72
|
+
.directory("/app/coverage")
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
@func()
|
|
76
|
+
async testAll(
|
|
77
|
+
@argument({ defaultPath: "/" }) source: Directory,
|
|
78
|
+
): Promise<string> {
|
|
79
|
+
const versions = ["22", "24"]
|
|
80
|
+
await Promise.all(versions.map((v) => this.test(source, v)))
|
|
81
|
+
return `All tests passed on Node ${versions.join(", ")}`
|
|
82
|
+
}
|
|
83
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES2022",
|
|
4
|
+
"moduleResolution": "Node",
|
|
5
|
+
"experimentalDecorators": true,
|
|
6
|
+
"strict": true,
|
|
7
|
+
"skipLibCheck": true,
|
|
8
|
+
"paths": {
|
|
9
|
+
"@dagger.io/dagger": ["./sdk/index.ts"],
|
|
10
|
+
"@dagger.io/dagger/telemetry": ["./sdk/telemetry.ts"]
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
|
|
2
|
+
# yarn lockfile v1
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
typescript@5.9.3:
|
|
6
|
+
version "5.9.3"
|
|
7
|
+
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.9.3.tgz#5b4f59e15310ab17a216f5d6cf53ee476ede670f"
|
|
8
|
+
integrity sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==
|
package/.github/workflows/ci.yml
CHANGED
|
@@ -7,43 +7,33 @@ on:
|
|
|
7
7
|
branches: [main]
|
|
8
8
|
|
|
9
9
|
jobs:
|
|
10
|
-
|
|
11
|
-
name:
|
|
10
|
+
test:
|
|
11
|
+
name: Test (Node ${{ matrix.node-version }})
|
|
12
12
|
runs-on: ubuntu-latest
|
|
13
|
-
|
|
14
13
|
strategy:
|
|
15
14
|
matrix:
|
|
16
|
-
node-version: [22
|
|
15
|
+
node-version: ["22", "24"]
|
|
17
16
|
|
|
18
17
|
steps:
|
|
19
|
-
-
|
|
20
|
-
uses: actions/checkout@v4
|
|
18
|
+
- uses: actions/checkout@v4
|
|
21
19
|
|
|
22
|
-
- name:
|
|
23
|
-
uses:
|
|
20
|
+
- name: Run tests via Dagger
|
|
21
|
+
uses: dagger/dagger-for-github@v7
|
|
24
22
|
with:
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
- name: Install dependencies
|
|
29
|
-
run: npm ci
|
|
30
|
-
env:
|
|
31
|
-
# Node 24 requires C++20 for native modules
|
|
32
|
-
CXXFLAGS: ${{ matrix.node-version == '24.x' && '-std=c++20' || '' }}
|
|
33
|
-
|
|
34
|
-
- name: Type check
|
|
35
|
-
run: npm run type-check
|
|
23
|
+
verb: call
|
|
24
|
+
args: test --source=. --node-version=${{ matrix.node-version }}
|
|
25
|
+
version: "0.19.10"
|
|
36
26
|
|
|
37
|
-
- name:
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
run: npm run test:providers
|
|
27
|
+
- name: Export coverage
|
|
28
|
+
if: matrix.node-version == '22'
|
|
29
|
+
uses: dagger/dagger-for-github@v7
|
|
30
|
+
with:
|
|
31
|
+
verb: call
|
|
32
|
+
args: test --source=. --node-version=22 export --path=./coverage
|
|
33
|
+
version: "0.19.10"
|
|
45
34
|
|
|
46
35
|
- name: Upload coverage to Codecov
|
|
36
|
+
if: matrix.node-version == '22'
|
|
47
37
|
uses: codecov/codecov-action@v4
|
|
48
38
|
continue-on-error: true
|
|
49
39
|
with:
|
|
@@ -18,32 +18,29 @@ jobs:
|
|
|
18
18
|
if: "!contains(github.event.head_commit.message, '[skip ci]')"
|
|
19
19
|
|
|
20
20
|
steps:
|
|
21
|
-
-
|
|
22
|
-
uses: actions/checkout@v4
|
|
21
|
+
- uses: actions/checkout@v4
|
|
23
22
|
with:
|
|
24
23
|
fetch-depth: 0
|
|
25
24
|
persist-credentials: false
|
|
26
25
|
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
# Dagger gate: type-check + build validation
|
|
27
|
+
- name: Check via Dagger
|
|
28
|
+
uses: dagger/dagger-for-github@v7
|
|
29
29
|
with:
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
verb: call
|
|
31
|
+
args: check --source=. --node-version=22
|
|
32
|
+
version: "0.19.10"
|
|
32
33
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
- name: Build project
|
|
40
|
-
run: npm run build
|
|
41
|
-
|
|
42
|
-
- name: Run tests
|
|
43
|
-
run: npm test -- --run
|
|
34
|
+
# Native release (needs OIDC token for npm provenance)
|
|
35
|
+
- uses: actions/setup-node@v4
|
|
36
|
+
with:
|
|
37
|
+
node-version: "22.x"
|
|
38
|
+
cache: "npm"
|
|
44
39
|
|
|
45
|
-
-
|
|
46
|
-
|
|
40
|
+
- run: npm ci
|
|
41
|
+
- run: npm run build
|
|
42
|
+
- run: npm test -- --run
|
|
43
|
+
- run: npm run test:providers
|
|
47
44
|
|
|
48
45
|
- name: Release
|
|
49
46
|
env:
|
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
## <small>3.2.1 (2026-01-30)</small>
|
|
2
|
+
|
|
3
|
+
* Merge pull request #52 from mhalder/feat/dagger ([da115bb](https://github.com/mhalder/qdrant-mcp-server/commit/da115bb)), closes [#52](https://github.com/mhalder/qdrant-mcp-server/issues/52)
|
|
4
|
+
* fix(dagger): validate node version and pin engine version ([61625b9](https://github.com/mhalder/qdrant-mcp-server/commit/61625b9))
|
|
5
|
+
* style(dagger): reformat package.json ([c22ca40](https://github.com/mhalder/qdrant-mcp-server/commit/c22ca40))
|
|
6
|
+
* ci(dagger): replace GHA CI with Dagger TypeScript module ([d79a77e](https://github.com/mhalder/qdrant-mcp-server/commit/d79a77e))
|
|
7
|
+
|
|
1
8
|
## 3.2.0 (2026-01-24)
|
|
2
9
|
|
|
3
10
|
* Merge pull request #51 from mhalder/feat/advanced-search ([e99311b](https://github.com/mhalder/qdrant-mcp-server/commit/e99311b)), closes [#51](https://github.com/mhalder/qdrant-mcp-server/issues/51)
|
package/README.md
CHANGED
|
@@ -614,6 +614,17 @@ npm test # Run test suite
|
|
|
614
614
|
npm run test:coverage # Coverage report
|
|
615
615
|
```
|
|
616
616
|
|
|
617
|
+
### Dagger (Portable CI)
|
|
618
|
+
|
|
619
|
+
The CI pipeline is implemented as a [Dagger](https://dagger.io/) TypeScript module, making it runnable locally or in any CI system:
|
|
620
|
+
|
|
621
|
+
```bash
|
|
622
|
+
dagger call check --source=. # Type-check + build (Node 22)
|
|
623
|
+
dagger call check --source=. --node-version=24 # Type-check + build (Node 24)
|
|
624
|
+
dagger call test --source=. # Full test suite + coverage
|
|
625
|
+
dagger call test-all --source=. # Test on Node 22 + 24 in parallel
|
|
626
|
+
```
|
|
627
|
+
|
|
617
628
|
### Testing
|
|
618
629
|
|
|
619
630
|
**748 tests** across 27 test files with **97%+ coverage**:
|
|
@@ -623,7 +634,7 @@ npm run test:coverage # Coverage report
|
|
|
623
634
|
- **Git History Tests**: Git extractor (28), extractor integration (11), chunker (30), indexer (42), synchronizer (18)
|
|
624
635
|
- **Advanced Search Tests**: Federated tools (30) - normalizeScores, calculateRRFScore, buildCorrelations, contextual_search, federated_search
|
|
625
636
|
|
|
626
|
-
**CI/CD**:
|
|
637
|
+
**CI/CD**: [Dagger](https://dagger.io/) module runs build, type-check, and tests on Node.js 22 and 24. GitHub Actions invokes Dagger for CI and uses native `semantic-release` for publishing.
|
|
627
638
|
|
|
628
639
|
## Contributing
|
|
629
640
|
|
package/dagger.json
ADDED
package/package.json
CHANGED