knodin 0.7.6 → 0.8.2

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.
Files changed (130) hide show
  1. package/README.md +19 -7
  2. package/benchmarks/competitors/SYNTHESIS.md +66 -0
  3. package/dist/bin/cli.js +2164 -108
  4. package/dist/bin/launcher.js +25 -3
  5. package/dist/src/agent-integration.js +304 -0
  6. package/dist/src/artifact-refresh.js +82 -0
  7. package/dist/src/cli-args.js +292 -0
  8. package/dist/src/cli-model.js +384 -0
  9. package/dist/src/codeflow-replay.js +81 -0
  10. package/dist/src/compact-structural.js +96 -0
  11. package/dist/src/compare.js +39 -0
  12. package/dist/src/competitive-cold-mcp.js +40 -0
  13. package/dist/src/competitive-constraints.js +21 -0
  14. package/dist/src/competitive-manifest.js +411 -0
  15. package/dist/src/competitive-measurement.js +183 -0
  16. package/dist/src/competitive-runner.js +487 -0
  17. package/dist/src/competitive-sandbox.js +108 -0
  18. package/dist/src/context-export.js +423 -0
  19. package/dist/src/context.js +102 -0
  20. package/dist/src/deterministic-random.js +34 -0
  21. package/dist/src/diagnostics-write-helper.js +473 -0
  22. package/dist/src/diagnostics.js +1476 -0
  23. package/dist/src/docs-sections.js +141 -0
  24. package/dist/src/doctor.js +382 -0
  25. package/dist/src/engine/ann-hnsw.js +261 -0
  26. package/dist/src/engine/embeddings.js +193 -0
  27. package/dist/src/engine/file-walker.js +49 -0
  28. package/dist/src/engine/git-history.js +289 -0
  29. package/dist/src/engine/index.js +14238 -0
  30. package/dist/src/engine/perf.js +115 -0
  31. package/dist/src/engine/prune.js +112 -0
  32. package/dist/src/engine/sarif-import.js +341 -0
  33. package/dist/src/engine/scip-import.js +423 -0
  34. package/dist/src/engine/source-policy.js +85 -0
  35. package/dist/src/engine/sqlite.js +71 -0
  36. package/dist/src/engine/state-paths.js +175 -0
  37. package/dist/src/engine/symbol-delete.js +58 -0
  38. package/dist/src/execution-profile.js +208 -0
  39. package/dist/src/failure-diagnosis.js +655 -0
  40. package/dist/src/fleet.js +7 -0
  41. package/dist/src/git-executable.js +31 -0
  42. package/dist/src/graph-layout.js +173 -0
  43. package/dist/src/graph-query-health.js +115 -0
  44. package/dist/src/hook-manager-integration.js +156 -0
  45. package/dist/src/index-activity.js +126 -0
  46. package/dist/src/init-progress-worker.js +106 -2
  47. package/dist/src/init-progress.js +155 -0
  48. package/dist/src/init.js +1295 -0
  49. package/dist/src/lifecycle-health.js +282 -0
  50. package/dist/src/lsp-readonly.js +217 -0
  51. package/dist/src/mcp-graph-worker.js +69 -0
  52. package/dist/src/mcp-reliability.js +154 -0
  53. package/dist/src/mcp-worker-supervisor.js +350 -0
  54. package/dist/src/mirror.js +290 -0
  55. package/dist/src/node-runtime.js +157 -0
  56. package/dist/src/output-compression.js +630 -0
  57. package/dist/src/output-telemetry.js +368 -0
  58. package/dist/src/pr-triage.js +638 -0
  59. package/dist/src/progressive-evidence.js +477 -0
  60. package/dist/src/pure-compression-cli.js +102 -0
  61. package/dist/src/relationship-adapters.js +377 -0
  62. package/dist/src/release-attestation.js +533 -0
  63. package/dist/src/release-preflight.js +513 -0
  64. package/dist/src/repair-lease.js +85 -0
  65. package/dist/src/repair-progress-worker.js +120 -2
  66. package/dist/src/repair-progress.js +262 -0
  67. package/dist/src/repository-init-process.js +177 -0
  68. package/dist/src/repository-management.js +1261 -0
  69. package/dist/src/response-budget.js +196 -0
  70. package/dist/src/server.js +217 -0
  71. package/dist/src/structural-fast-path.js +344 -0
  72. package/dist/src/structural-snapshot.js +37 -0
  73. package/dist/src/system-config.js +638 -0
  74. package/dist/src/terminal-help.js +83 -0
  75. package/dist/src/tools/knodin-tools.js +1640 -0
  76. package/dist/src/update-ceremony.js +162 -0
  77. package/dist/src/update-policy.js +944 -0
  78. package/dist/src/update-trust.js +504 -0
  79. package/dist/src/version.js +13 -0
  80. package/dist/src/visualization.js +515 -0
  81. package/dist/src/wait-for-fresh.js +98 -0
  82. package/dist/src/worktree-lifecycle.js +234 -0
  83. package/docs/BEHAVIORAL-CONTRACT.md +72 -0
  84. package/docs/CLI.md +20 -1
  85. package/docs/COMPARISON.md +403 -0
  86. package/docs/COMPETITIVE-LANDSCAPE-2026-08.md +267 -0
  87. package/docs/CONTAINED-EXECUTION.md +77 -0
  88. package/docs/DIAGNOSTICS.md +80 -0
  89. package/docs/GIT-HISTORY-REVIEW.md +39 -0
  90. package/docs/HANDOFF.md +180 -0
  91. package/docs/INSTALLATION.md +21 -18
  92. package/docs/MCP.md +59 -8
  93. package/docs/PROGRESSIVE-EVIDENCE.md +37 -0
  94. package/docs/PT-ACCESS-RECOMMENDATION.md +89 -0
  95. package/docs/RELEASE-0.3-EVIDENCE.md +73 -0
  96. package/docs/REPOSITORIES-AND-WORKTREES.md +18 -6
  97. package/docs/SCIP-IMPORT.md +62 -0
  98. package/docs/SIGNED-UPDATES.md +151 -0
  99. package/docs/TELEMETRY.md +46 -0
  100. package/docs/TOKEN-OPTIMIZER-SCORECARD.md +79 -0
  101. package/docs/assets/knodin-favicon.svg +4 -0
  102. package/docs/releases/0.3.0.md +46 -0
  103. package/docs/releases/0.4.0.md +68 -0
  104. package/docs/releases/0.4.1.md +28 -0
  105. package/docs/releases/0.4.2.md +27 -0
  106. package/docs/releases/0.4.3.md +23 -0
  107. package/docs/releases/0.5.0.md +29 -0
  108. package/docs/releases/0.5.1.md +17 -0
  109. package/docs/releases/0.6.0.md +18 -0
  110. package/docs/releases/0.7.0.md +24 -0
  111. package/docs/releases/0.7.1.md +21 -0
  112. package/docs/releases/0.7.2.md +21 -0
  113. package/docs/releases/0.7.3.md +23 -0
  114. package/docs/releases/0.7.4.md +17 -0
  115. package/docs/releases/0.7.5.md +20 -0
  116. package/docs/releases/0.8.0.md +74 -0
  117. package/docs/releases/0.8.2.md +34 -0
  118. package/package.json +127 -4
  119. package/roadmap/competitive-roadmap.md +3801 -0
  120. package/schemas/release-attestation-v1.schema.json +210 -0
  121. package/schemas/support-bundle-v2.schema.json +212 -0
  122. package/dist/chunks/chunk-DMQAGX77.js +0 -654
  123. package/dist/chunks/chunk-F4Z3Z766.js +0 -4
  124. package/dist/chunks/chunk-SIJAQVSX.js +0 -3
  125. package/dist/chunks/chunk-X6M4HUUE.js +0 -2
  126. package/dist/chunks/chunk-YPRMY2LP.js +0 -8
  127. package/dist/chunks/pure-compression-cli-4TA2TQD5.js +0 -5
  128. package/dist/chunks/server-7EDF4CBY.js +0 -14
  129. package/dist/chunks/structural-fast-path-KD5KQSPX.js +0 -4
  130. package/docs/releases/0.7.6.md +0 -25
@@ -0,0 +1,17 @@
1
+ # knodin 0.7.4
2
+
3
+ This patch release preserves the opt-in diagnostics and support-bundle workflow
4
+ introduced in 0.7.3 while hardening the structural cold-start parser.
5
+
6
+ - Replaces a potentially super-linear declaration-matching expression with a
7
+ bounded, linear parser for typed function declarations.
8
+ - Handles balanced parameter lists without mistaking calls or control-flow
9
+ statements for declarations.
10
+ - Adds regression coverage for typed declarations, nested calls, and negative
11
+ structural matches.
12
+
13
+ Diagnostics remain local and disabled until a user enables them. Knodin never
14
+ uploads a diagnostics bundle automatically; the user must inspect and
15
+ deliberately share it for troubleshooting.
16
+
17
+ This remains an ordinary 0.x release, not a dogfood-only build and not GA.
@@ -0,0 +1,20 @@
1
+ # knodin 0.7.5
2
+
3
+ This patch release makes the one-tool MCP gateway more resilient and corrects
4
+ the immutable-package handoff used by internal Artifactory publication.
5
+
6
+ - Serializes parallel gateway operations so expensive graph requests do not
7
+ compete for the same local engine and database resources.
8
+ - Emits MCP progress notifications for queued and long-running operations when
9
+ the client supplies a progress token.
10
+ - Returns stable, actionable tool-error details while keeping the MCP transport
11
+ available for subsequent requests.
12
+ - On release retries, downloads npm's immutable archive, verifies its registry
13
+ integrity, proves its unpacked content matches the release build, and uses
14
+ those exact bytes for attestations and downstream publication.
15
+
16
+ Diagnostics remain local and disabled until a user enables them. Knodin never
17
+ uploads a diagnostics bundle automatically; the user must inspect and
18
+ deliberately share it for troubleshooting.
19
+
20
+ This remains an ordinary 0.x release, not a dogfood-only build and not GA.
@@ -0,0 +1,74 @@
1
+ # knodin 0.8.0
2
+
3
+ This release makes repository-wide setup more dependable, strengthens the
4
+ one-tool MCP gateway, adds a whole-repository architecture visualization, and
5
+ completes the move to knodin's authoritative source repository.
6
+
7
+ It is a minor rather than a patch release because `knodin visualize` and
8
+ `knodin index` each gain a new user-facing capability. Note that npm published
9
+ 0.7.6 from the previous source repository; 0.7.7 was prepared but never
10
+ released, and its changes are included here.
11
+
12
+ - Repository initialization is uncapped by default, preventing large checkouts
13
+ from being terminated at the former 768 MiB ceiling. Teams that need a bound
14
+ can set `repositoryInitialization.memoryLimitMiB` or pass
15
+ `--memory-limit-mib`; the minimum configured limit is 128 MiB.
16
+ - Multi-repository initialization reports bounded progress and per-repository
17
+ outcomes while continuing to skip linked worktrees by default.
18
+ - `knodin visualize --scope repo` draws the repository's dependency graph as a
19
+ self-contained SVG artifact, with `--granularity file` or `symbol`. It reads
20
+ every recorded dependency rather than a ranked summary, states how much the
21
+ node, edge, and byte budgets withheld, and distinguishes edges backed by a
22
+ narrow source declaration from heuristic or inferred ones. Coordinates are
23
+ computed when the artifact is written, so it contains no script, makes no
24
+ network request, and reproduces byte-identical output from identical
25
+ evidence. The `--max-bytes` ceiling rises to 2097152 to accommodate it.
26
+ - `knodin index --sarif <file>` imports another analyzer's findings from a SARIF
27
+ log. SARIF rather than a specific tool means one importer covers Salesforce
28
+ Code Analyzer, ESLint, Semgrep, CodeQL, PMD and Trivy. Findings are stored
29
+ separately from symbols and references and never merged into them: knodin
30
+ resolves references from source, while a finding is another tool's judgement
31
+ about a location. What the graph adds is ranking, since an analyzer reports
32
+ findings file by file and cannot know which files matter. Locations resolve
33
+ through symlinks, and a finding that cannot be placed inside the repository is
34
+ counted rather than attached to a guessed path.
35
+ - Every import bound is now overridable, for both SARIF and SCIP, and each
36
+ refusal names the flag and a value that would admit the input. A ceiling the
37
+ operator cannot move is just a failure. Two limits remain outside knodin's
38
+ control and are reported as such: a SARIF log is parsed whole, so one beyond
39
+ roughly 512 MiB cannot be read by this runtime at all, and a smaller log can
40
+ still exhaust the default heap.
41
+ - `knodin index --scip <file>` no longer treats the SCIP index itself as a
42
+ source file to index. Command-scoped flag values were being mistaken for
43
+ positional paths.
44
+ - Indexing no longer overflows the call stack on large repositories. Appending
45
+ the file list by spreading it as arguments exceeded the runtime's argument
46
+ limit; observed on a 40,000-file checkout.
47
+ - Independent CLI or MCP processes can no longer run repair concurrently
48
+ against one worktree. A second repair reports the holding process and its
49
+ start time, and a lease left by a crashed process recovers automatically.
50
+ - Invoking knodin from a Node.js 20 project no longer fails. The launcher
51
+ locates a supported Node.js 24 or newer runtime and relaunches into it,
52
+ exiting with that runtime's status or signal. The Node.js 20-to-24 handoff
53
+ is covered by unit tests; the packaged smoke test certifies it on Node.js 26
54
+ only.
55
+ - The MCP gateway enforces documented freshness and diagnostics bounds at the
56
+ schema boundary and resolves Git only from trusted installation locations.
57
+ - Diagnostics documentation now uses `sinceHours` consistently, and repository
58
+ documentation accurately describes the 250 ms memory-enforcement interval.
59
+ - Package metadata, release verification, and mirror policy now point to the
60
+ authoritative `DTS-Productivity-Engineering/knodin` repository. Homebrew
61
+ installs from the `knodin/homebrew-tap` formula, which consumes the published
62
+ npm tarball, and the Enterprise Apps GHES repository remains a read-only
63
+ mirror.
64
+ - Competitive outcome and behavior-contract evaluations remain reproducible
65
+ from checked-in fixtures without turning narrow results into unsupported
66
+ superiority claims.
67
+
68
+ Knodin remains local-first: indexing and diagnostics do not require a hosted
69
+ service, authentication, or source-code upload. Diagnostics bundles are created
70
+ only on explicit request and are never uploaded automatically.
71
+
72
+ This is an ordinary 0.x release, not a GA declaration. External certification
73
+ and enterprise-governance evidence remain outside this release and are not
74
+ claimed by it.
@@ -0,0 +1,34 @@
1
+ # knodin 0.8.2
2
+
3
+ This patch release makes command startup resilient to a deleted working
4
+ directory and completes a full-baseline Sonar audit of the repository.
5
+
6
+ - `knodin --version` no longer crashes with `uv_cwd` when the directory inherited
7
+ by the process has been removed. Cold structural and compression fast paths now
8
+ resolve the working directory only when the selected command actually needs a
9
+ repository. The built launcher is exercised from a deleted directory as part
10
+ of release verification.
11
+ - Fixes inert Terraform indexing code that prepared reference and dependency
12
+ inserts from collections that could only be empty.
13
+ - Makes the impact-query test-file regular expression's alternation explicit,
14
+ preserving its intended matching precedence.
15
+ - Records the disposition of the complete Sonar baseline: 1,351 retained issue
16
+ records were inspected, including 375 that were open at the start. Correctness
17
+ findings were fixed; security and maintainability findings rejected after
18
+ validation now have checked-in, rule-scoped exclusions and rationale.
19
+ - The post-remediation SonarQube scan passes its quality gate with zero open and
20
+ zero unresolved issues. The exclusions do not disable unreviewed rules,
21
+ coverage, duplication analysis, or the quality gate.
22
+
23
+ If Homebrew is invoked from a directory that has already been deleted, change
24
+ to an existing directory before upgrading because Homebrew itself requires a
25
+ valid working directory:
26
+
27
+ ```sh
28
+ cd /
29
+ brew update
30
+ brew upgrade knodin/tap/knodin
31
+ knodin --version
32
+ ```
33
+
34
+ This remains an ordinary 0.x release, not a dogfood-only build and not GA.
package/package.json CHANGED
@@ -1,23 +1,129 @@
1
1
  {
2
2
  "name": "knodin",
3
- "version": "0.7.6",
3
+ "version": "0.8.2",
4
4
  "description": "knodin — source-evidenced local code intelligence with known bounds. Stable identity, fresh evidence, truthful budgets, and recoverable bounded views.",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "type": "git",
8
- "url": "git+https://github.com/knodin/knodin.git"
8
+ "url": "git+https://github.com/DTS-Productivity-Engineering/knodin.git"
9
9
  },
10
- "homepage": "https://github.com/knodin/knodin#readme",
10
+ "homepage": "https://github.com/DTS-Productivity-Engineering/knodin#readme",
11
11
  "bugs": {
12
- "url": "https://github.com/knodin/knodin/issues"
12
+ "url": "https://github.com/DTS-Productivity-Engineering/knodin/issues"
13
+ },
14
+ "publishConfig": {
15
+ "access": "public",
16
+ "registry": "https://registry.npmjs.org/"
13
17
  },
14
18
  "type": "module",
15
19
  "bin": {
16
20
  "knodin": "dist/bin/launcher.js"
17
21
  },
22
+ "files": [
23
+ "dist",
24
+ "docs/DEAD-CODE-AND-IMPACT.md",
25
+ "docs/DOCTOR-AND-UPDATES.md",
26
+ "docs/DIAGNOSTICS.md",
27
+ "docs/BEHAVIORAL-CONTRACT.md",
28
+ "docs/COMPARISON.md",
29
+ "docs/COMPETITIVE-LANDSCAPE-2026-08.md",
30
+ "docs/INDEXING-POLICY-AND-PROVENANCE.md",
31
+ "docs/HANDOFF.md",
32
+ "docs/INSTALLATION.md",
33
+ "docs/MCP.md",
34
+ "docs/COMMAND-OUTPUT-COMPRESSION.md",
35
+ "docs/CONTAINED-EXECUTION.md",
36
+ "docs/PROGRESSIVE-EVIDENCE.md",
37
+ "docs/GIT-HISTORY-REVIEW.md",
38
+ "docs/SCIP-IMPORT.md",
39
+ "docs/CLI.md",
40
+ "docs/PT-ACCESS-RECOMMENDATION.md",
41
+ "docs/REPOSITORIES-AND-WORKTREES.md",
42
+ "docs/RELEASE-0.3-EVIDENCE.md",
43
+ "docs/SIGNED-UPDATES.md",
44
+ "docs/releases/0.3.0.md",
45
+ "docs/releases/0.4.0.md",
46
+ "docs/releases/0.4.1.md",
47
+ "docs/releases/0.4.2.md",
48
+ "docs/releases/0.4.3.md",
49
+ "docs/releases/0.5.0.md",
50
+ "docs/releases/0.5.1.md",
51
+ "docs/releases/0.6.0.md",
52
+ "docs/releases/0.7.0.md",
53
+ "docs/releases/0.7.1.md",
54
+ "docs/releases/0.7.2.md",
55
+ "docs/releases/0.7.3.md",
56
+ "docs/releases/0.7.4.md",
57
+ "docs/releases/0.7.5.md",
58
+ "docs/releases/0.8.0.md",
59
+ "docs/releases/0.8.2.md",
60
+ "docs/assets/knodin-favicon.svg",
61
+ "docs/SYSTEMS-AND-RELATIONSHIPS.md",
62
+ "docs/TELEMETRY.md",
63
+ "docs/TOKEN-OPTIMIZER-SCORECARD.md",
64
+ "benchmarks/competitors/SYNTHESIS.md",
65
+ "roadmap/competitive-roadmap.md",
66
+ "schemas/release-attestation-v1.schema.json",
67
+ "schemas/support-bundle-v2.schema.json",
68
+ "*.wasm"
69
+ ],
18
70
  "engines": {
19
71
  "node": ">=24.0.0"
20
72
  },
73
+ "scripts": {
74
+ "prepack": "npm run build",
75
+ "hooks:install": "tsx scripts/prepare-hooks.ts",
76
+ "dev": "tsx watch src/server.ts",
77
+ "start": "tsx src/server.ts",
78
+ "cli": "tsx bin/cli.ts",
79
+ "clean": "node scripts/clean-dist.mjs",
80
+ "build": "npm run clean && tsc -p tsconfig.build.json",
81
+ "typecheck": "tsc --noEmit",
82
+ "test": "tsx scripts/run-vitest-shards.ts",
83
+ "test:handles": "vitest run --reporter=verbose --reporter=hanging-process",
84
+ "test:watch": "vitest --watch",
85
+ "test:coverage": "tsx scripts/run-vitest-shards.ts --coverage",
86
+ "scan:sonar": "npm run test:coverage && sh scripts/run-sonar-scan.sh",
87
+ "mirror:sync": "sh tools/hooks/sync-ghes-mirror.sh",
88
+ "test:pack-install": "tsx scripts/pack-install-smoke.ts",
89
+ "test:package-managers": "tsx scripts/package-manager-smoke.ts",
90
+ "test:naming-screen": "node --test scripts/naming-screen.test.js",
91
+ "measure:schema": "tsx scripts/measure-tool-schema.ts",
92
+ "check:dependency-deprecations": "tsx scripts/check-dependency-deprecations.ts",
93
+ "check:hygiene": "node scripts/check-repository-hygiene.mjs",
94
+ "check:roadmap": "tsx scripts/check-roadmap.ts",
95
+ "verify:c79": "tsx scripts/verify-c79.ts",
96
+ "bench:c80": "tsx benchmarks/evaluations/c80-structural-routing/runner.ts",
97
+ "verify:c80": "tsx scripts/verify-c80.ts",
98
+ "bench:c81": "tsx benchmarks/evaluations/c81-powered-benchmark/runner.ts",
99
+ "verify:c81": "tsx scripts/verify-c81.ts",
100
+ "bench:c82": "tsx benchmarks/evaluations/c82-compress-diagnose/runner.ts",
101
+ "verify:c82": "tsx scripts/verify-c82.ts",
102
+ "bench:c83": "tsx benchmarks/evaluations/c83-progressive-evidence/runner.ts",
103
+ "verify:c83": "tsx scripts/verify-c83.ts",
104
+ "bench:c84": "tsx benchmarks/evaluations/c84-scip-import/runner.ts",
105
+ "verify:c84": "tsx scripts/verify-c84.ts",
106
+ "bench:c85": "tsx benchmarks/evaluations/c85-git-history/runner.ts",
107
+ "verify:c85": "tsx scripts/verify-c85.ts",
108
+ "bench:c86": "tsx benchmarks/evaluations/c86-static-embeddings/runner.ts",
109
+ "verify:c86": "tsx scripts/verify-c86.ts",
110
+ "bench:c87": "tsx benchmarks/evaluations/c87-structural-cold-start/runner.ts",
111
+ "verify:c87": "tsx scripts/verify-c87.ts",
112
+ "bench:c88": "tsx benchmarks/evaluations/c88-contained-execution/runner.ts",
113
+ "verify:c88": "tsx scripts/verify-c88.ts",
114
+ "bench:c93": "tsx benchmarks/evaluations/c93-engineering-outcomes/runner.ts",
115
+ "verify:c93": "tsx scripts/verify-c93.ts",
116
+ "verify:c95": "tsx scripts/verify-c95.ts && vitest run src/__tests__/unit/behavior-contract.spec.ts src/__tests__/unit/failure-diagnosis.spec.ts src/__tests__/unit/impact.spec.ts src/__tests__/unit/freshness.spec.ts",
117
+ "bench:ann": "bun scripts/ann-bench.ts",
118
+ "bench:perf": "tsx scripts/perf-bench.ts",
119
+ "bench:competitive": "tsx scripts/competitive-bakeoff.ts",
120
+ "bench:token-optimizer": "tsx benchmarks/evaluations/token-optimizer-20260730/runner.ts",
121
+ "audit:token-optimizer": "tsx scripts/token-optimizer-source-audit.ts",
122
+ "release:attestation": "tsx scripts/release-attestation.ts",
123
+ "release:preflight": "tsx scripts/release-preflight.ts",
124
+ "lint": "biome check .",
125
+ "lint:fix": "biome check --write ."
126
+ },
21
127
  "dependencies": {
22
128
  "@huggingface/transformers": "^4.2.0",
23
129
  "@modelcontextprotocol/sdk": "^1.30.0",
@@ -31,5 +137,22 @@
31
137
  "web-tree-sitter-sfapex": "2.4.1",
32
138
  "yaml": "2.9.0",
33
139
  "zod": "^4.3.6"
140
+ },
141
+ "overrides": {
142
+ "@hono/node-server": "^2.0.5",
143
+ "adm-zip": "^0.6.0",
144
+ "fast-uri": "^4.1.1",
145
+ "sharp": "^0.35.3"
146
+ },
147
+ "devDependencies": {
148
+ "@biomejs/biome": "2.4.6",
149
+ "@types/bun": "^1.3.14",
150
+ "@types/node": "^24.10.0",
151
+ "@vitest/coverage-v8": "^4.1.10",
152
+ "ajv": "8.20.0",
153
+ "lefthook": "^2.1.5",
154
+ "tsx": "^4.21.0",
155
+ "typescript": "^5.9.3",
156
+ "vitest": "^4.1.3"
34
157
  }
35
158
  }