diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 79ec02e7..5726a598 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,14 +8,14 @@ on: jobs: build: - runs-on: ubuntu-latest + runs-on: ${{ matrix.os }} strategy: matrix: - # 24는 24.18.0에 묶어둔다. 24.19.0이 node::ObjectWrap에 정리 훅을 붙이면서 - # (nodejs/node#63642) better-sqlite3 11.x의 Database 소멸자가 RemoveEnvironmentCleanupHook - # 어서션에서 abort한다. Node 쪽 수정(nodejs/node#65196)은 아직 미머지고 24.19.0 이후 - # 24.x 릴리즈도 없다. better-sqlite3 13.x(N-API)로 올리면 풀리므로 그때 24로 되돌린다. - node-version: ['22', '24.18.0'] + # macos-latest는 arm64다. better-sqlite3가 네이티브 모듈이라 아키텍처마다 + # 따로 깨진다 — 11.x는 Node 24에서, 13.x는 darwin-arm64에서 사고가 났었다. + # 리눅스만 보면 그걸 못 잡아서 두 아키텍처를 함께 돌린다. + os: [ubuntu-latest, macos-latest] + node-version: ['22', '24'] steps: - uses: actions/checkout@v7 @@ -49,7 +49,7 @@ jobs: run: pnpm test -- --coverage - name: Upload coverage - if: matrix.node-version == '24.18.0' && github.event_name == 'pull_request' + if: matrix.os == 'ubuntu-latest' && matrix.node-version == '24' && github.event_name == 'pull_request' uses: davelosert/vitest-coverage-report-action@v2 with: json-summary-path: coverage/coverage-summary.json diff --git a/package.json b/package.json index a54eebb4..7d97dae4 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", "engines": { - "node": ">=20.0.0" + "node": ">=22.0.0" }, "bin": { "gestalt": "./dist/bin/gestalt.js" @@ -43,7 +43,7 @@ "@anthropic-ai/sdk": "^0.39.0", "@modelcontextprotocol/sdk": "^1.12.1", "@xenova/transformers": "^2.17.2", - "better-sqlite3": "^11.8.2", + "better-sqlite3": "^13.0.3", "chokidar": "^4.0.3", "commander": "^13.1.0", "dotenv": "^17.3.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fae57607..017c8784 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,8 +18,8 @@ importers: specifier: ^2.17.2 version: 2.17.2 better-sqlite3: - specifier: ^11.8.2 - version: 11.10.0 + specifier: ^13.0.3 + version: 13.0.3 chokidar: specifier: ^4.0.3 version: 4.0.3 @@ -787,11 +787,9 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - better-sqlite3@11.10.0: - resolution: {integrity: sha512-EwhOpyXiOEL/lKzHz9AW1msWFNzGc/z+LzeB3/jnFJpxu+th2yqvzsSWas1v9jgs9+xiXJcD5A8CJxAG2TaghQ==} - - bindings@1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + better-sqlite3@13.0.3: + resolution: {integrity: sha512-RbOBxmLBG8uvFUc15X9+9SFemKcQ0WBuISBVkpuiaUB2qblC8UWlHEjdWVoZ8AdhSwmoEgsiXKfopX0CQxaACQ==} + engines: {node: '>=22'} bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} @@ -1122,9 +1120,6 @@ packages: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} - file-uri-to-path@1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - finalhandler@2.1.1: resolution: {integrity: sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==} engines: {node: '>= 18.0.0'} @@ -1488,6 +1483,10 @@ packages: node-addon-api@7.1.1: resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} + node-addon-api@8.9.2: + resolution: {integrity: sha512-VijLXbi3UACN69I0JVXJsX4tjACjNoQDgv2gTF6sx2wWEi8tkSg2eX8p5gSIFi8z2+DL3oHmY6OyKce38SDolg==} + engines: {node: ^18 || ^20 || >= 21} + node-domexception@1.0.0: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} @@ -2679,14 +2678,9 @@ snapshots: base64-js@1.5.1: {} - better-sqlite3@11.10.0: - dependencies: - bindings: 1.5.0 - prebuild-install: 7.1.3 - - bindings@1.5.0: + better-sqlite3@13.0.3: dependencies: - file-uri-to-path: 1.0.0 + node-addon-api: 8.9.2 bl@4.1.0: dependencies: @@ -3051,8 +3045,6 @@ snapshots: dependencies: flat-cache: 4.0.1 - file-uri-to-path@1.0.0: {} - finalhandler@2.1.1: dependencies: debug: 4.4.3 @@ -3376,6 +3368,8 @@ snapshots: node-addon-api@7.1.1: {} + node-addon-api@8.9.2: {} + node-domexception@1.0.0: {} node-fetch@2.7.0: