Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ All notable changes to the TypeScript package will be documented in this file.

## [Unreleased]

## [0.21.0] - 2026-05-11

### Changed

- **Context-pack value scoring and diagnostics**: `selection_strategy: 'value-per-token'` now scores optional candidates with deterministic evidence-aware signals instead of candidate order, and compiled packs can carry `selection_diagnostics` with per-candidate score, density, reasons, and penalties.
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ cd your-project
graphify-ts generate . # builds graphify-out/graph.json (no API key, no cloud)
graphify-ts claude install # wires Claude Code to use it via MCP

# Or use the opt-in v0.20 SPI pipeline for framework-aware metadata + disk cache:
# Or use the opt-in SPI pipeline for framework-aware metadata + disk cache:
graphify-ts generate . --spi
```

Expand Down Expand Up @@ -139,7 +139,7 @@ Full-profile additions: `context_pack`, `context_expand`, `context_prompt`, `con

```bash
graphify-ts generate . # build the graph
graphify-ts generate . --spi # v0.20 SPI pipeline (framework metadata + disk cache)
graphify-ts generate . --spi # opt-in SPI pipeline (framework metadata + disk cache)
graphify-ts watch . # rebuild on file change
graphify-ts pack "how does auth work?" --task explain # compact CLI context payload
graphify-ts prompt "how does auth work?" --provider claude # provider-ready compiled prompt
Expand Down
4 changes: 2 additions & 2 deletions docs/benchmarks/2026-05-11-spi-vs-legacy/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# 2026-05-11 — `graphify-ts generate --spi` vs legacy `extract()`

> **Tracking issues:** [#130](https://github.com/mohanagy/graphify-ts/issues/130) and the v0.20 context-compiler payoff follow-up.
> **Tracking issues:** [#130](https://github.com/mohanagy/graphify-ts/issues/130) and the v0.21 context-compiler payoff follow-up.

## TL;DR (latest measured run: `results/2026-05-11T163843Z/`)

Expand All @@ -12,7 +12,7 @@
| Node count | 29 | 30 | +1 |
| Total explain-pack tokens (7 prompts, budget 2000) | 330 | 378 | **+14.5%** |

The current v0.20 runtime changes do **not** reduce total explain-pack tokens on this bundled fixture. The benchmark still shows two concrete payoffs:
The current v0.21 runtime changes do **not** reduce total explain-pack tokens on this bundled fixture. The benchmark still shows two concrete payoffs:

1. `--spi` keeps returning the structurally correct substrate for framework-shaped prompts (`prisma_client`, `trpc_procedure_*`) while legacy still misroutes some of them.
2. `retrieval_level` is now operational: the same prompt expands from tight seed-only packs at level 1 to materially broader cross-module packs at level 4.
Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@mohammednagy/graphify-ts",
"version": "0.20.0",
"version": "0.21.0",
"description": "Local context plane and context compiler for AI coding agents. Turn TypeScript/Node workspaces and PR diffs into compact, verifiable context packs for Claude Code, Codex, Copilot, Cursor, and other agents.",
"license": "MIT",
"author": "mohanagy",
Expand Down
18 changes: 18 additions & 0 deletions tests/unit/package-metadata.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,22 @@ interface PackageManifest {
keywords?: string[]
license?: string
overrides?: Record<string, string>
version?: string
}

interface PackageLock {
version?: string
packages?: Record<string, { version?: string }>
}

function loadPackageManifest(): PackageManifest {
return JSON.parse(readFileSync(join(process.cwd(), 'package.json'), 'utf8')) as PackageManifest
}

function loadPackageLock(): PackageLock {
return JSON.parse(readFileSync(join(process.cwd(), 'package-lock.json'), 'utf8')) as PackageLock
}

function loadDependabotConfig(): string {
return readFileSync(join(process.cwd(), '.github', 'dependabot.yml'), 'utf8')
}
Expand Down Expand Up @@ -97,6 +107,14 @@ describe('package metadata', () => {
expect(loadContributingGuide()).toContain("licensed under this project's MIT license")
})

it('keeps package.json and package-lock.json on the same release version', () => {
const manifest = loadPackageManifest()
const packageLock = loadPackageLock()

expect(packageLock.version).toBe(manifest.version)
expect(packageLock.packages?.['']?.version).toBe(manifest.version)
})

it('positions package metadata around the context plane and context compiler surface', () => {
const manifest = loadPackageManifest()
const readme = loadReadme().toLowerCase()
Expand Down
Loading