Skip to content

Commit d78356a

Browse files
authored
feat(v3.0): implement multi-adapter architecture (#28)
- Add packages/adapters/ with 6 adapters: copilot, claude, cursor, windsurf, openai, gemini - Add packages/adapters/index.js registry with getAdapter(), listAdapters(), adapt(), outputsToAdapters() - Add adapt() to packages/core/index.js public API - Add --adapter <name> CLI flag to gen-context.js - Add bundled adapter factories in gen-context.js for zero-dep compatibility - Backward compat: existing 'outputs' config key continues to work - Bump all versions to 3.0.0 - Add 20 integration tests (test/integration/adapters.test.js) - Update CHANGELOG, README, all docs/*.html pages
1 parent 7d3e288 commit d78356a

30 files changed

Lines changed: 1074 additions & 39 deletions

.vscode/settings.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"java.configuration.updateBuildConfiguration": "interactive"
3+
}

CHANGELOG.md

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,29 @@ Format: [Semantic Versioning](https://semver.org/)
66

77
---
88

9-
## [2.10.0] — upcoming · [#25](https://github.com/manojmallick/sigmap/issues/25) · branch: `feat/v2.10-reporting-charts-advanced-metrics`
9+
## [3.0.0] — 2026-04-06 — Platform: Multi-Adapter Architecture
10+
11+
### Added
12+
- **Multi-adapter platform**`packages/adapters/` with 6 output adapters: `copilot`, `claude`, `cursor`, `windsurf`, `openai`, `gemini`
13+
- **`--adapter <name>` CLI flag** — generate output for a specific adapter only (e.g. `node gen-context.js --adapter openai`)
14+
- **`adapt()` in packages/core** — programmatic API: `const { adapt } = require('sigmap'); adapt(context, 'openai')`
15+
- **New config key `adapters`** — replaces `outputs`; old `outputs` key is silently mapped for full backward compatibility
16+
- **OpenAI adapter** — formats context as an OpenAI system prompt, writes `.github/openai-context.md`
17+
- **Gemini adapter** — formats context as a Gemini system instruction, writes `.github/gemini-context.md`
18+
- **API stability guarantee**`packages/core` API is now semver-stable; breaking changes require v4.0
19+
- **20 new integration tests** in `test/integration/adapters.test.js`
20+
21+
### Changed
22+
- `packages/core/index.js` — adds `adapt()` export alongside existing `extract`, `rank`, `scan`, `score`, `buildSigIndex`
23+
- `writeOutputs()` in `gen-context.js` — now routes `openai`, `gemini` through adapter pipeline
24+
25+
### Backward compat
26+
- `outputs: ["copilot","claude"]` config still works — automatically mirrored to `adapters`
27+
- All existing CLI flags unchanged
28+
29+
---
30+
31+
## [2.10.0] — 2026-04-06 · [#25](https://github.com/manojmallick/sigmap/issues/25)
1032

1133
### Planned additions
1234
- **Report charts** — add chart-ready output for token reduction, signatures per file, and budget utilization trends.

README.md

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -123,20 +123,38 @@ AI agent session starts with full context
123123
| **Evaluation dashboard output** | Generate shareable HTML/JSON benchmark summaries from CLI runs |
124124
| **CI-friendly metrics export** | Persist machine-readable metrics for release gates and regression tracking |
125125
| **Release quality gates** | Add pass/fail thresholds for hit@5 and precision before publish |
126+
## 🔌 v3.0 — Platform: Multi-Adapter Architecture
126127

127-
---
128-
| **`get_impact` MCP tool** | 9th MCP tool — `{ file, depth? }` → impacted files + signatures |
129-
| **`src/map/dep-graph.js`** | Reverse-dependency graph built from the import analysis; circular deps handled safely |
130-
| **15 new tests** | `impact.test.js` — direct deps, transitive deps, depth limit, JSON output |
128+
SigMap is now an **adapter platform**. Any AI assistant — Copilot, Claude, Cursor, Windsurf, OpenAI, or Gemini — plugs in through a standard interface.
131129

132-
---
130+
```bash
131+
# Generate for a specific AI assistant
132+
node gen-context.js --adapter copilot # → .github/copilot-instructions.md
133+
node gen-context.js --adapter openai # → .github/openai-context.md
134+
node gen-context.js --adapter gemini # → .github/gemini-context.md
135+
node gen-context.js --adapter claude # → CLAUDE.md (append)
136+
```
133137

134-
## 🚀 Quick start
138+
```js
139+
// Programmatic API — fully semver-stable from v3.0
140+
const { adapt } = require('sigmap');
141+
const systemPrompt = adapt(context, 'openai', { version: '3.0.0' });
142+
```
135143

136-
**No install required — just Node.js 18+.**
144+
| Adapter | Output file | AI assistant |
145+
|---|---|---|
146+
| `copilot` | `.github/copilot-instructions.md` | GitHub Copilot |
147+
| `claude` | `CLAUDE.md` (append) | Claude / Claude Code |
148+
| `cursor` | `.cursorrules` | Cursor |
149+
| `windsurf` | `.windsurfrules` | Windsurf |
150+
| `openai` | `.github/openai-context.md` | Any OpenAI model |
151+
| `gemini` | `.github/gemini-context.md` | Google Gemini |
137152

138-
```bash
139-
# 1. Copy gen-context.js into your project root
153+
**Backward compat:** existing `outputs` config key silently maps to `adapters` — no migration needed.
154+
155+
See full roadmap: [manojmallick.github.io/sigmap/roadmap.html](https://manojmallick.github.io/sigmap/roadmap.html)
156+
157+
---
140158
curl -O https://raw.githubusercontent.com/manojmallick/sigmap/main/gen-context.js
141159

142160
# 2. Generate your context file

docs/cli.html

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ <h2>All flags at a glance</h2>
185185
<span class="term-title">node gen-context.js --help</span>
186186
</div>
187187
<div class="term-body">
188-
<div><span class="tp">SigMap v2.10.0</span></div>
188+
<div><span class="tp">SigMap v3.0.0</span></div>
189189
<div>&nbsp;</div>
190190
<div><span class="tc">Usage:</span> <span class="tw">node gen-context.js [flag]</span></div>
191191
<div>&nbsp;</div>
@@ -205,6 +205,8 @@ <h2>All flags at a glance</h2>
205205
<div><span class="ts"> --benchmark </span><span class="tc">Run retrieval quality benchmark (hit@5 / MRR)</span></div>
206206
<div><span class="ts"> --benchmark --json </span><span class="tc">Benchmark results as JSON</span></div>
207207
<div><span class="ts"> --eval </span><span class="tc">Alias for --benchmark</span></div>
208+
<div><span class="ts"> --adapter &lt;name&gt; </span><span class="tc">Generate for one adapter: copilot|claude|cursor|windsurf|openai|gemini (v3.0+)</span></div>
209+
<div><span class="ts"> --adapter &lt;name&gt; --json </span><span class="tc">Show adapter output path as JSON</span></div>
208210
<div><span class="ts"> --report </span><span class="tc">Token reduction stats</span></div>
209211
<div><span class="ts"> --report --json </span><span class="tc">Token report as JSON (CI-compatible, exits 1 if over budget)</span></div>
210212
<div><span class="ts"> --report --history </span><span class="tc">Historical usage trends</span></div>
@@ -609,7 +611,7 @@ <h2>Explore further</h2>
609611

610612
<footer>
611613
<div class="footer-inner">
612-
<span class="footer-logo">sigmap v2.10.0</span>
614+
<span class="footer-logo">sigmap v3.0.0</span>
613615
<div class="footer-links">
614616
<a href="quick-start.html">Quick start</a>
615617
<a href="cli.html">CLI reference</a>

docs/config.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -472,7 +472,7 @@ <h2>Explore further</h2>
472472

473473
<footer>
474474
<div class="footer-inner">
475-
<span class="footer-logo">sigmap v2.10.0</span>
475+
<span class="footer-logo">sigmap v3.0.0</span>
476476
<div class="footer-links">
477477
<a href="quick-start.html">Quick start</a>
478478
<a href="cli.html">CLI reference</a>

docs/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -438,7 +438,7 @@ <h2>Built for the community</h2>
438438
<!-- FOOTER -->
439439
<footer>
440440
<div class="footer-inner">
441-
<span class="footer-logo">sigmap v2.10.0 &middot; <a href="roadmap.html#v2.10" style="color:var(--gd);text-decoration:none">Latest</a></span>
441+
<span class="footer-logo">sigmap v3.0.0 &middot; <a href="roadmap.html#v3.0" style="color:var(--gd);text-decoration:none">Latest</a></span>
442442
<div class="footer-links">
443443
<a href="quick-start.html">Quick start</a>
444444
<a href="cli.html">CLI reference</a>

docs/languages.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -619,7 +619,7 @@ <h2>Contributing is simple</h2>
619619

620620
<footer>
621621
<div class="footer-inner">
622-
<span class="footer-logo">sigmap v2.10.0 &middot; <a href="roadmap.html#v2.10" style="color:var(--gd);text-decoration:none">Latest</a></span>
622+
<span class="footer-logo">sigmap v3.0.0 &middot; <a href="roadmap.html#v3.0" style="color:var(--gd);text-decoration:none">Latest</a></span>
623623
<div class="footer-links">
624624
<a href="quick-start.html">Quick start</a>
625625
<a href="cli.html">CLI reference</a>

docs/mcp.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -512,7 +512,7 @@ <h2>Explore further</h2>
512512

513513
<footer>
514514
<div class="footer-inner">
515-
<span class="footer-logo">sigmap v2.10.0</span>
515+
<span class="footer-logo">sigmap v3.0.0</span>
516516
<div class="footer-links">
517517
<a href="quick-start.html">Quick start</a>
518518
<a href="cli.html">CLI reference</a>

docs/quick-start.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -442,7 +442,7 @@ <h2>Command reference</h2>
442442
<span class="term-title">node gen-context.js --help</span>
443443
</div>
444444
<div class="term-body">
445-
<div><span class="tp">SigMap v2.10.0 &middot; <a href="roadmap.html#v2.10" style="color:var(--gd);text-decoration:none">Latest</a></span></div>
445+
<div><span class="tp">SigMap v3.0.0 &middot; <a href="roadmap.html#v3.0" style="color:var(--gd);text-decoration:none">Latest</a></span></div>
446446
<div>&nbsp;</div>
447447
<div><span class="tc">Usage:</span> <span class="tw">node gen-context.js [flag]</span></div>
448448
<div>&nbsp;</div>
@@ -486,7 +486,7 @@ <h2>Explore further</h2>
486486
<div class="next-card-desc">Stack both tools for the two-layer caching strategy. SigMap for daily; Repomix for deep sessions.</div>
487487
</a>
488488
<a class="next-card" href="roadmap.html">
489-
<div class="next-card-ey">v0.1 → v2.10</div>
489+
<div class="next-card-ey">v0.1 → v3.0</div>
490490
<div class="next-card-title">Full roadmap</div>
491491
<div class="next-card-desc">All major versions shipped. 97% token reduction. 340 tests. MIT license.</div>
492492
</a>
@@ -495,7 +495,7 @@ <h2>Explore further</h2>
495495

496496
<footer>
497497
<div class="footer-inner">
498-
<span class="footer-logo">sigmap v2.10.0 &middot; <a href="roadmap.html#v2.10" style="color:var(--gd);text-decoration:none">Latest</a></span>
498+
<span class="footer-logo">sigmap v3.0.0 &middot; <a href="roadmap.html#v3.0" style="color:var(--gd);text-decoration:none">Latest</a></span>
499499
<div class="footer-links">
500500
<a href="quick-start.html">Quick start</a>
501501
<a href="cli.html">CLI reference</a>

docs/roadmap.html

Lines changed: 31 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<meta charset="UTF-8">
55
<meta name="viewport" content="width=device-width,initial-scale=1.0">
66
<title>Roadmap — SigMap</title>
7-
<meta name="description" content="SigMap shipped v0.1 through v2.10 — 97% token reduction, 340+ tests. Reporting charts and advanced metrics are the current milestone. Full visual timeline from baseline to complete system.">
7+
<meta name="description" content="SigMap shipped v0.1 through v3.0 — 97% token reduction, 360+ tests. Multi-adapter platform (Copilot, Claude, Cursor, Windsurf, OpenAI, Gemini) is the current milestone. Full visual timeline from baseline to complete system.">
88
<meta property="og:title" content="SigMap Roadmap — v0.1 to v2.10 · 97% token reduction">
99
<meta property="og:description" content="25 versions shipped/planned. 97% token reduction. 340 tests. MIT license. See how SigMap evolved from first extractor to full context platform.">
1010
<meta property="og:url" content="https://manojmallick.github.io/sigmap/roadmap.html">
@@ -145,8 +145,8 @@
145145

146146
<div class="page-hero">
147147
<div class="hero-inner">
148-
<div class="hero-badge"><span class="dot" style="background:var(--g)"></span>v2.10 in progress</div>
149-
<h1>v0.0 → v2.10</h1>
148+
<div class="hero-badge"><span class="dot" style="background:var(--g)"></span>v3.0.0 released</div>
149+
<h1>v0.0 → v3.0</h1>
150150
<p class="hero-sub">Twenty-five versions shipped/planned. Reporting charts and advanced metrics are now the active milestone. MIT open source from day one.</p>
151151
<div class="hero-stats">
152152
<div class="hstat"><span class="hstat-val p">97%</span><span class="hstat-lbl">Token reduction</span></div>
@@ -908,7 +908,7 @@ <h2>Every version, every feature</h2>
908908
<div class="tl-header">
909909
<span class="tl-version">v2.10</span>
910910
<span class="tl-name">Reporting — Charts + Advanced Metrics</span>
911-
<span class="tl-badge done">● In progress</span>
911+
<span class="tl-badge done">✓ Complete — tagged v2.10.0</span>
912912
</div>
913913
<div class="tl-desc">Adds chart-ready reporting for token reduction and signature coverage, plus advanced benchmark metrics such as precision@K, recall@K, and MRR trends. Includes richer CLI report output and CI-friendly JSON artifacts for release quality gates.</div>
914914
<div class="tl-tags">
@@ -923,22 +923,46 @@ <h2>Every version, every feature</h2>
923923
</div>
924924
</div>
925925

926+
<!-- v3.0 -->
927+
<div id="v3.0" class="tl-item">
928+
<div class="tl-rail">
929+
<div class="tl-dot done">v3.0</div>
930+
</div>
931+
<div class="tl-content">
932+
<div class="tl-header">
933+
<span class="tl-version">v3.0</span>
934+
<span class="tl-name">Platform — Multi-Adapter Architecture</span>
935+
<span class="tl-badge done">✓ Complete — tagged v3.0.0</span>
936+
</div>
937+
<div class="tl-desc">SigMap becomes an adapter platform. Six output adapters ship: <code>copilot</code>, <code>claude</code>, <code>cursor</code>, <code>windsurf</code>, <code>openai</code>, and <code>gemini</code>. New <code>--adapter &lt;name&gt;</code> CLI flag generates output for a specific adapter. <code>packages/core</code> gains <code>adapt(context, adapterName)</code> for programmatic use. Old <code>outputs</code> config key silently maps to <code>adapters</code> — full backward compatibility. API stability guarantee: breaking changes require v4.0.</div>
938+
<div class="tl-tags">
939+
<span class="tl-tag">6 adapters</span>
940+
<span class="tl-tag">openai</span>
941+
<span class="tl-tag">gemini</span>
942+
<span class="tl-tag">adapt() API</span>
943+
<span class="tl-tag">backward compat</span>
944+
<span class="tl-tag">semver-stable core</span>
945+
</div>
946+
<div class="tl-impact">Platform milestone — SigMap works with any AI assistant, not just Copilot</div>
947+
</div>
948+
</div>
949+
926950
</div>
927951
</section>
928952

929953
<hr class="divider">
930954

931955
<section class="section">
932956
<p class="section-ey">Final numbers</p>
933-
<h2>v2.10.0 — Current milestone</h2>
957+
<h2>v3.0.0 — Current milestone</h2>
934958

935959
<div class="final-grid">
936960
<div class="final-stat">
937961
<span class="final-stat-val p">97%</span>
938962
<div class="final-stat-lbl">Token reduction</div>
939963
</div>
940964
<div class="final-stat">
941-
<span class="final-stat-val g">340</span>
965+
<span class="final-stat-val g">360</span>
942966
<div class="final-stat-lbl">Tests passing</div>
943967
</div>
944968
<div class="final-stat">
@@ -959,7 +983,7 @@ <h2>v2.10.0 — Current milestone</h2>
959983

960984
<footer>
961985
<div class="footer-inner">
962-
<span class="footer-logo">sigmap v2.10.0 &middot; <span style="color:var(--gd)">Latest</span></span>
986+
<span class="footer-logo">sigmap v3.0.0 &middot; <span style="color:var(--gd)">Latest</span></span>
963987
<div class="footer-links">
964988
<a href="quick-start.html">Quick start</a>
965989
<a href="cli.html">CLI reference</a>

0 commit comments

Comments
 (0)