The Nix build now runs the installed-binary facet of the packaging tier against the binary it has just produced, via an `installCheckPhase` that sets `GITEA_AXI_INSTALLED_BIN` to `$out/bin/gitea-axi` and runs the new `test:installed` script. Running after `fixupPhase` means the binary under test is the wrapped one an operator actually gets, and naming it is all the phase does — the assertions stay in the shared tier, so the npm and Nix installation paths cannot drift apart in what they guarantee. `npmInstallHook` prunes dev dependencies out of the build tree before the check runs, so `preInstall` snapshots `node_modules` with `cp -al` and the check restores it by copying, leaving the snapshot intact for a replayed phase. Two defects fixed in passing, both surfaced by review: `test:installed` pins a test file by path while the packaging runner sets `passWithNoTests: true`, so moving that file would have taken the build green having asserted nothing — the same silently-inert trap `doCheck` sprang in task 0037. The script now passes `--passWithNoTests=false`. `checkPhase`'s vitest left a timestamped run cache under `node_modules/.vite`, which `npmInstallHook` copied into `$out`, shipping a stray cache and making the derivation non-reproducible. It is now removed before the install phase; `nix build --rebuild` passes.
65 lines
1.8 KiB
JSON
65 lines
1.8 KiB
JSON
{
|
|
"name": "gitea-axi",
|
|
"version": "0.1.0",
|
|
"description": "Agent-ergonomic CLI for Gitea issues and pull requests",
|
|
"type": "module",
|
|
"license": "MIT",
|
|
"engines": {
|
|
"node": ">=20"
|
|
},
|
|
"bin": {
|
|
"gitea-axi": "dist/main.js"
|
|
},
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "git+https://git.alexion.dev/alexion/gitea-axi.git"
|
|
},
|
|
"homepage": "https://git.alexion.dev/alexion/gitea-axi",
|
|
"bugs": {
|
|
"url": "https://git.alexion.dev/alexion/gitea-axi/issues"
|
|
},
|
|
"publishConfig": {
|
|
"access": "public",
|
|
"registry": "https://registry.npmjs.org/"
|
|
},
|
|
"files": [
|
|
"dist",
|
|
"skills"
|
|
],
|
|
"scripts": {
|
|
"build": "tsc -p tsconfig.build.json",
|
|
"prepack": "npm run build",
|
|
"typecheck": "tsc --noEmit",
|
|
"test": "vitest run",
|
|
"test:watch": "vitest",
|
|
"test:coverage": "vitest run --coverage",
|
|
"test:e2e": "vitest run --config vitest.e2e.config.ts",
|
|
"test:pack": "vitest run --config vitest.packaging.config.ts",
|
|
"test:installed": "vitest run --config vitest.packaging.config.ts --passWithNoTests=false test/packaging/installed-binary.test.ts",
|
|
"test:bench": "vitest run --config vitest.bench.config.ts",
|
|
"test:bench:smoke": "vitest run --config vitest.bench-smoke.config.ts",
|
|
"bench:run": "tsx bench/run.ts",
|
|
"bench:report": "tsx bench/report.ts"
|
|
},
|
|
"dependencies": {
|
|
"@toon-format/toon": "^2.3.0",
|
|
"axi-sdk-js": "^0.1.8",
|
|
"gitea-js": "^1.23.0"
|
|
},
|
|
"devDependencies": {
|
|
"@types/node": "^20.19.0",
|
|
"@vitest/coverage-v8": "^3.2.7",
|
|
"tsx": "^4.23.1",
|
|
"typescript": "^5.8.0",
|
|
"vitest": "^3.2.0"
|
|
},
|
|
"peerDependencies": {
|
|
"@anthropic-ai/claude-agent-sdk": ">=0.3.0"
|
|
},
|
|
"peerDependenciesMeta": {
|
|
"@anthropic-ai/claude-agent-sdk": {
|
|
"optional": true
|
|
}
|
|
}
|
|
}
|