You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Delivers the index layer for the ProjectSession / ProjectIndex
proposal (f00016 S2): file + AST + manifest + workspace cache,
incremental invalidator, and the framework registry hook that
lets the future scanner refactor opt into the index.
packages/core/index/
- project-index.service.ts IProjectIndex facade
- file-cache.service.ts SHA-256 + language + size
- ast-cache.service.ts Babel AST cache (TS/JS/TSX/JSX)
- manifest-reader.service.ts JSON/YAML/TOML manifest cache
- workspace-resolver.service.ts npm/yarn/pnpm/bun/cargo/go/composer/poetry
- incremental-invalidator.service.ts inverse dependency graph
packages/frameworks/framework.registry.ts
- PROJECT_INDEX_SLOT symbol
- defaultOrchestratorWithIndex(index) factory
- projectIndexOf(orchestrator) accessor
No existing scanner changes — the slot is opt-in.
tests/core/project-index.spec.ts 13 unit tests, all green
tests/core/ast-cache-perf.bench.ts hash stability + 100% AST hit rate gate
DoD slice (scoped):
- bun run typecheck:frameworks ✓
- bun run test:core ✓ (84 files / 1255 tests)
- bunx vitest run --project core tests/core/project-index.spec.ts ✓ 13/13
- bun run tests/core/ast-cache-perf.bench.ts --check ✓ green
Notes / known incompatibilities (out of slice scope):
- astFor() returns unknown not ts.Program — the runtime lacks
the 'typescript' dependency; only @babel/parser is installed.
Adding 'typescript' to deps is a follow-up.
- types colocated with services (IProjectIndex, IIndexedFile,
IManifest, etc.) — same pattern as the S1 session layer.
Moving them to packages/contracts/ would touch the lint gate
and is out of scope for the slice's file list.
- lint:naming rejects .bench.ts (the slice explicitly mandates
that filename) and rejects the session/* colocated types
already shipped in S1 — pre-existing baseline issues.
Refs: f00016 S2-ProjectIndex-cache
0 commit comments