agent-nuvira 1.45.4 → 1.49.0
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.
- package/README.md +149 -0
- package/dist/agents/agents/writer.d.ts.map +1 -1
- package/dist/agents/agents/writer.js +26 -4
- package/dist/agents/agents/writer.js.map +1 -1
- package/dist/agents/orchestrator.d.ts.map +1 -1
- package/dist/agents/orchestrator.js +70 -1
- package/dist/agents/orchestrator.js.map +1 -1
- package/dist/cli/chat.d.ts.map +1 -1
- package/dist/cli/chat.js +84 -17
- package/dist/cli/chat.js.map +1 -1
- package/dist/cli/failover-prompt.d.ts +40 -0
- package/dist/cli/failover-prompt.d.ts.map +1 -0
- package/dist/cli/failover-prompt.js +56 -0
- package/dist/cli/failover-prompt.js.map +1 -0
- package/dist/cli/memory.d.ts.map +1 -1
- package/dist/cli/memory.js +3 -1
- package/dist/cli/memory.js.map +1 -1
- package/dist/cli/retrieval.d.ts +20 -0
- package/dist/cli/retrieval.d.ts.map +1 -0
- package/dist/cli/retrieval.js +143 -0
- package/dist/cli/retrieval.js.map +1 -0
- package/dist/cli/router.d.ts.map +1 -1
- package/dist/cli/router.js +4 -0
- package/dist/cli/router.js.map +1 -1
- package/dist/config/manager.d.ts.map +1 -1
- package/dist/config/manager.js +5 -0
- package/dist/config/manager.js.map +1 -1
- package/dist/config/types.d.ts +54 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/learning/pattern-extractor.d.ts.map +1 -1
- package/dist/learning/pattern-extractor.js +19 -7
- package/dist/learning/pattern-extractor.js.map +1 -1
- package/dist/learning/retrieval.d.ts +174 -0
- package/dist/learning/retrieval.d.ts.map +1 -0
- package/dist/learning/retrieval.js +394 -0
- package/dist/learning/retrieval.js.map +1 -0
- package/dist/memory/embedder.d.ts +8 -1
- package/dist/memory/embedder.d.ts.map +1 -1
- package/dist/memory/embedder.js +16 -7
- package/dist/memory/embedder.js.map +1 -1
- package/dist/memory/faiss-backend.d.ts +142 -0
- package/dist/memory/faiss-backend.d.ts.map +1 -0
- package/dist/memory/faiss-backend.js +549 -0
- package/dist/memory/faiss-backend.js.map +1 -0
- package/dist/memory/trajectory-store.d.ts.map +1 -1
- package/dist/memory/trajectory-store.js +19 -7
- package/dist/memory/trajectory-store.js.map +1 -1
- package/dist/memory/vector-store.d.ts +97 -14
- package/dist/memory/vector-store.d.ts.map +1 -1
- package/dist/memory/vector-store.js +270 -61
- package/dist/memory/vector-store.js.map +1 -1
- package/dist/web-dashboard/server.d.ts +4 -0
- package/dist/web-dashboard/server.d.ts.map +1 -1
- package/dist/web-dashboard/server.js +103 -1
- package/dist/web-dashboard/server.js.map +1 -1
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -50,6 +50,7 @@ agent-nuvira config list
|
|
|
50
50
|
- **Startup progress feedback** — first launch never looks like a silent hang: a live spinner reports each startup phase (plugins → history & search → semantic index) as it runs
|
|
51
51
|
- **Auto-mode session failover** — in Auto routing, a provider whose API key/token expires or rate-limits mid-session is automatically swapped for the next-best provider (auth failures excluded for the session, rate-limit failures for a 120s cooldown, 5xx/network through the circuit breaker) — no more stuck sessions on a dead key
|
|
52
52
|
- **Central quota ledger** — tokens/requests per provider × model with calendar-aware reset windows; exhausted providers are **parked** until the window rolls (auto re-enable, no timers), and Auto routing sinks parked providers below healthy candidates **before** a call — plus an optional free/local-first `allowPaid` gate and a `buff model quota` CLI with a cost summary (free vs paid tokens + estimated $ saved)
|
|
53
|
+
- **Vector retrieval (token-efficient context)** — large gathered contexts are chunked, embedded locally (`bge-small-en-v1.5` via @huggingface/transformers, zero new deps) and reduced to the top-k semantically-relevant chunks before the LLM call — saving tokens so free quotas stretch further. Complements the quota ledger: **retrieval saves tokens, the ledger manages quotas**. Small contexts pass through untouched (zero overhead); any retrieval failure fails over to full context. `buff retrieval index/query/stats/clear` + a dashboard Retrieval card show the savings
|
|
53
54
|
- **Checkpoint / resume** — `buff execute "<goal>" --checkpoint` saves a resume-able snapshot after every task batch; `--resume [id]` rehydrates the plan and continues from the first pending step (a crash / quota kill / token expiry mid-pipeline no longer restarts the whole plan); `--checkpoint-list` shows saved pipelines
|
|
54
55
|
- **Security scan CLI** — `buff security scan` detects PII, prompt injections, and dangerous code patterns
|
|
55
56
|
- **Feedback & rating system** — `buff feedback record/list/stats/clear` drives self-improvement scoring
|
|
@@ -109,6 +110,37 @@ npm run build
|
|
|
109
110
|
npm link
|
|
110
111
|
```
|
|
111
112
|
|
|
113
|
+
### Native FAISS acceleration (optional, recommended)
|
|
114
|
+
|
|
115
|
+
Agent-Nuvira includes an optional native FAISS backend for faster semantic retrieval. The runtime now prefers this backend automatically when the native addon can build successfully; if that path is unavailable, it falls back to the pure-JS IVF implementation and then the exact JSON backend so your workflow stays reliable.
|
|
116
|
+
|
|
117
|
+
For npm-installed users, the setup is:
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
# 1) Install the CLI
|
|
121
|
+
npm install -g agent-nuvira
|
|
122
|
+
|
|
123
|
+
# 2) Install the native build prerequisites (macOS example)
|
|
124
|
+
brew install faiss libomp openblas
|
|
125
|
+
|
|
126
|
+
# 3) Rebuild the optional native addon
|
|
127
|
+
npm rebuild @faiss-node/native
|
|
128
|
+
|
|
129
|
+
# 4) Enable the FAISS-style backend (or leave it on 'auto' to prefer it automatically)
|
|
130
|
+
agent-nuvira config set memory.vectorBackend auto
|
|
131
|
+
# or force it explicitly:
|
|
132
|
+
# agent-nuvira config set memory.vectorBackend faiss
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
If you want to confirm the backend in use:
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
agent-nuvira memory
|
|
139
|
+
# or: buff memory
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
If the native addon cannot be built on your machine, Agent-Nuvira will continue to work using the pure-JS fallback path.
|
|
143
|
+
|
|
112
144
|
### Verify
|
|
113
145
|
|
|
114
146
|
```bash
|
|
@@ -823,6 +855,123 @@ agent-nuvira model quota
|
|
|
823
855
|
The timeline is also **live**: the dashboard watches `quota-events.jsonl` /
|
|
824
856
|
`quota-ledger.json` on disk and pushes a `quota` SSE event the moment a failover
|
|
825
857
|
or park lands — so the card updates in real time, no page refresh or 10s wait.
|
|
858
|
+
(The watcher arms while a dashboard is connected and disarms when the last one
|
|
859
|
+
disconnects.) To keep it armed from server start — so the timeline is already
|
|
860
|
+
current the moment a dashboard connects, even after the server sat idle between
|
|
861
|
+
viewing sessions — enable always-on mode:
|
|
862
|
+
|
|
863
|
+
```bash
|
|
864
|
+
# Keep the quota watcher armed from server start (never disarms on client count)
|
|
865
|
+
agent-nuvira config set routing.alwaysWatchQuota true
|
|
866
|
+
```
|
|
867
|
+
|
|
868
|
+
Always-on trades a tiny idle fs watch for instant-up-to-date quota state.
|
|
869
|
+
|
|
870
|
+
#### Vector retrieval — token-efficient context (saves tokens, complements the quota ledger)
|
|
871
|
+
|
|
872
|
+
Agent-Nuvira can **vectorize large context** with a local embedding model + the
|
|
873
|
+
pure-JS vector store — no FAISS/native deps, no server. The retrieval layer
|
|
874
|
+
saves tokens (stretching free quotas), while the quota ledger manages limits:
|
|
875
|
+
|
|
876
|
+
| Piece | What it does |
|
|
877
|
+
|---|---|
|
|
878
|
+
| **Chunking** | Large files split into ~512-token chunks (64-token overlap, paragraph-aware) |
|
|
879
|
+
| **Embedding** | `bge-small-en-v1.5` (384-dim) via @huggingface/transformers — local, free, offline, cached |
|
|
880
|
+
| **Vector store** | Pure-JS cosine-similarity index in `~/.buff/memory/vectors-repo.json` (honors `BUFF_MEMORY_DIR`), isolated from memory/history vectors |
|
|
881
|
+
| **Retrieval** | Goal/subtask embedded → top-k chunks (default 5) → reduced context |
|
|
882
|
+
| **Router policy** | Context ≤ threshold (12k tokens) → **direct call, zero overhead**; larger → embed + retrieve; any failure → **failover to full context** (never breaks the LLM call) |
|
|
883
|
+
| **Transparency** | `🧠 Retrieved 5 chunks — reduced context 20k → 3k tokens` + `buff retrieval stats` + dashboard Retrieval card |
|
|
884
|
+
|
|
885
|
+
```bash
|
|
886
|
+
# Pre-index a repo so Auto runs are instant (first run downloads the ~130MB
|
|
887
|
+
# model once, then cached locally)
|
|
888
|
+
agent-nuvira retrieval index .
|
|
889
|
+
|
|
890
|
+
# Semantic search over the indexed repo
|
|
891
|
+
agent-nuvira retrieval query "how does login with JWT work?"
|
|
892
|
+
|
|
893
|
+
# Token-savings transparency
|
|
894
|
+
agent-nuvira retrieval stats
|
|
895
|
+
|
|
896
|
+
# Wipe index + stats
|
|
897
|
+
agent-nuvira retrieval clear
|
|
898
|
+
```
|
|
899
|
+
|
|
900
|
+
Where retrieval applies (honest split):
|
|
901
|
+
- **`buff chat --file <large-file>`** — the file is chunked, embedded, and
|
|
902
|
+
reduced to the top-k relevant chunks before the LLM call (big token savings).
|
|
903
|
+
- **`buff execute` pipelines** — after the context-gatherer collects files, the
|
|
904
|
+
orchestrator indexes them and produces a **semantic file ranking** for the
|
|
905
|
+
writer (relevance over size when selecting which files fit the token budget),
|
|
906
|
+
and records the retrieval into the token-savings stats.
|
|
907
|
+
|
|
908
|
+
**Config** (`routing.retrieval`):
|
|
909
|
+
|
|
910
|
+
```bash
|
|
911
|
+
# Master switch (default true)
|
|
912
|
+
agent-nuvira config set routing.retrieval.enabled false
|
|
913
|
+
|
|
914
|
+
# Top-k chunks (default 5), chunk size (default 512 tokens), vectorize threshold (default 12000 tokens)
|
|
915
|
+
agent-nuvira config set routing.retrieval.topK 8
|
|
916
|
+
agent-nuvira config set routing.retrieval.chunkTokens 640
|
|
917
|
+
agent-nuvira config set routing.retrieval.thresholdTokens 20000
|
|
918
|
+
```
|
|
919
|
+
|
|
920
|
+
**Vector search backend** (`memory.vectorBackend`):
|
|
921
|
+
|
|
922
|
+
```bash
|
|
923
|
+
# Show which backend is active
|
|
924
|
+
agent-nuvira memory stats # ... Backend: faiss-ivf (FAISS-style IVF-flat ANN)
|
|
925
|
+
|
|
926
|
+
# Choose the backend explicitly
|
|
927
|
+
agent-nuvira config set memory.vectorBackend auto # default: native FAISS when built, else pure-JS IVF
|
|
928
|
+
agent-nuvira config set memory.vectorBackend faiss # prefer FAISS-style; JSON fallback on native failure
|
|
929
|
+
agent-nuvira config set memory.vectorBackend json # exact flat cosine (the original behavior)
|
|
930
|
+
```
|
|
931
|
+
|
|
932
|
+
- **`auto` (default)** — uses the **FAISS-style backend**: real `@faiss-node/native`
|
|
933
|
+
bindings when the user has installed AND built them (smoke-tested at load),
|
|
934
|
+
otherwise a **pure-JS IVF-flat ANN** — a faithful TypeScript port of FAISS's
|
|
935
|
+
`IndexIVFFlat` (nlist inverted lists via deterministic k-means++, nprobe
|
|
936
|
+
probe lists, cosine = inner product of L2-normalized vectors). Small indexes
|
|
937
|
+
(≤ 512 entries) use an EXACT scan so results are identical to the JSON
|
|
938
|
+
backend; large indexes get sub-linear approximate search with filter-aware
|
|
939
|
+
probe expansion. Any native failure falls back gracefully — semantic search
|
|
940
|
+
never breaks.
|
|
941
|
+
- **Why native FAISS is not the hard default (decision):** `@faiss-node/native`
|
|
942
|
+
ships no prebuilt binaries and requires compiling FAISS from source
|
|
943
|
+
(cmake + OpenBLAS + libomp) at install time — verified to fail on a stock
|
|
944
|
+
macOS dev box. Making it a required dependency would break zero-setup
|
|
945
|
+
`npx agent-nuvira`. The pure-JS IVF-flat backend provides the same
|
|
946
|
+
FAISS-style approximate-NN behavior with zero native deps; users who build
|
|
947
|
+
the native package automatically get the real thing.
|
|
948
|
+
|
|
949
|
+
**Roadmap (Step 6 — future enhancements):**
|
|
950
|
+
1. **Hybrid retrieval** — combine embeddings with keyword/BM25 scoring for
|
|
951
|
+
exact-match-sensitive queries.
|
|
952
|
+
2. **Embedding caching** — the embedder already caches in-memory; a persistent
|
|
953
|
+
on-disk embedding cache would skip re-embedding unchanged chunks across
|
|
954
|
+
sessions.
|
|
955
|
+
3. **Multi-vector routing** — different embedding models for code vs natural
|
|
956
|
+
language (the store already supports namespaced indexes, so this is a
|
|
957
|
+
config-level addition).
|
|
958
|
+
|
|
959
|
+
**Opt-in failover confirmation.** By default Auto mode fails over silently
|
|
960
|
+
(never get stuck). If you'd rather approve each mid-session swap, enable:
|
|
961
|
+
|
|
962
|
+
```bash
|
|
963
|
+
# Ask before Auto mode switches providers mid-session
|
|
964
|
+
agent-nuvira config set routing.promptOnFailover true
|
|
965
|
+
```
|
|
966
|
+
|
|
967
|
+
With this on, a failed provider shows the next-ranked candidate and lets you
|
|
968
|
+
choose "switch (recommended)" or "pick a provider myself" — so every swap is
|
|
969
|
+
an informed decision, not a silent surprise.
|
|
970
|
+
|
|
971
|
+
This also applies to **single-shot Auto prompts** (`buff chat "ask something"`
|
|
972
|
+
with `-m auto`): before Auto mode silently hops to the next candidate, the CLI
|
|
973
|
+
asks; picking "manual" surfaces the original provider error instead of
|
|
974
|
+
switching behind your back.
|
|
826
975
|
|
|
827
976
|
#### Checkpoint / resume — crash-proof multi-agent pipelines
|
|
828
977
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../../src/agents/agents/writer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,EAAE,KAAK,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAmB,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAiH1G;;;;;;;;;;;GAWG;AACH,qBAAa,WAAY,SAAQ,KAAK;IACpC,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,WAAW,0DAA0D;IAExE,OAAO,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;IAwH9E;;;OAGG;YACW,YAAY;IAkF1B;;;;OAIG;IACH,OAAO,CAAC,WAAW;
|
|
1
|
+
{"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../../src/agents/agents/writer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,EAAE,KAAK,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAmB,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAiH1G;;;;;;;;;;;GAWG;AACH,qBAAa,WAAY,SAAQ,KAAK;IACpC,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,WAAW,0DAA0D;IAExE,OAAO,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;IAwH9E;;;OAGG;YACW,YAAY;IAkF1B;;;;OAIG;IACH,OAAO,CAAC,WAAW;IA+DnB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAsBxB;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAyC/B,OAAO,CAAC,aAAa;CA0BtB"}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* The orchestrator decides whether to apply them (based on dry-run mode).
|
|
11
11
|
*/
|
|
12
12
|
import { existsSync, readFileSync } from 'node:fs';
|
|
13
|
-
import { isAbsolute, join } from 'node:path';
|
|
13
|
+
import { basename, isAbsolute, join } from 'node:path';
|
|
14
14
|
import { Agent } from '../agent.js';
|
|
15
15
|
import { logger } from '../../utils/logger.js';
|
|
16
16
|
import { detectLanguage } from '../../editing/types.js';
|
|
@@ -312,7 +312,25 @@ export class WriterAgent extends Agent {
|
|
|
312
312
|
const taskDescription = writerTask?.description || context.goal;
|
|
313
313
|
// Use token-budget-aware file selection: show as many files as possible
|
|
314
314
|
// within MAX_CONTEXT_CHARS, prioritizing smaller files to max context.
|
|
315
|
-
|
|
315
|
+
// When the orchestrator's vector-retrieval hook produced a semantic file
|
|
316
|
+
// ranking for this goal (retrievalRanking metadata), prefer those files
|
|
317
|
+
// first so the LLM sees the most RELEVANT code within the token budget
|
|
318
|
+
// (relevance over size — the retrieval layer complements the quota ledger
|
|
319
|
+
// by saving tokens while keeping the important context).
|
|
320
|
+
const retrievalRanking = context.metadata.retrievalRanking || [];
|
|
321
|
+
// Match by BOTH exact path and basename so ranking still works whether the
|
|
322
|
+
// gatherer produced relative or absolute artifact paths (the retrieval
|
|
323
|
+
// index keys may differ in normalization from the artifact path form).
|
|
324
|
+
const rankedPaths = new Set(retrievalRanking.map((r) => r.filePath));
|
|
325
|
+
const rankedBaseNames = new Set(retrievalRanking.map((r) => basename(r.filePath)));
|
|
326
|
+
const isRanked = (p) => rankedPaths.has(p) || rankedBaseNames.has(basename(p));
|
|
327
|
+
const filesToSend = this.selectFilesWithinBudget(context.artifacts, MAX_CONTEXT_CHARS, (a, b) => {
|
|
328
|
+
const ra = isRanked(a.path) ? 0 : 1;
|
|
329
|
+
const rb = isRanked(b.path) ? 0 : 1;
|
|
330
|
+
if (ra !== rb)
|
|
331
|
+
return ra - rb;
|
|
332
|
+
return 0; // keep the size-first tiebreak inside selectFilesWithinBudget
|
|
333
|
+
});
|
|
316
334
|
const fileContext = filesToSend.length > 0
|
|
317
335
|
? filesToSend
|
|
318
336
|
.map(({ artifact, truncated }) => `--- ${artifact.path} ---${truncated ? ` (truncated, ${artifact.content.length}\u2192${truncated.length} chars)` : ''}\n${truncated || artifact.content}`)
|
|
@@ -363,10 +381,14 @@ export class WriterAgent extends Agent {
|
|
|
363
381
|
* Select files within the given character budget.
|
|
364
382
|
* Prioritizes smaller files first so the LLM sees as much complete context as possible.
|
|
365
383
|
*/
|
|
366
|
-
selectFilesWithinBudget(artifacts, budget) {
|
|
384
|
+
selectFilesWithinBudget(artifacts, budget, priorityComparator) {
|
|
367
385
|
const sorted = [...artifacts]
|
|
368
386
|
.map((a) => ({ artifact: a, size: a.content.length }))
|
|
369
|
-
.sort((a, b) =>
|
|
387
|
+
.sort((a, b) => {
|
|
388
|
+
// Optional priority pass (e.g. retrieval-ranking first), then size-first.
|
|
389
|
+
const cmp = priorityComparator ? priorityComparator(a.artifact, b.artifact) : 0;
|
|
390
|
+
return cmp !== 0 ? cmp : a.size - b.size;
|
|
391
|
+
});
|
|
370
392
|
const result = [];
|
|
371
393
|
let used = 0;
|
|
372
394
|
const OVERHEAD_PER_FILE = 50;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writer.js","sourceRoot":"","sources":["../../../src/agents/agents/writer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"writer.js","sourceRoot":"","sources":["../../../src/agents/agents/writer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/agents/orchestrator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAOH,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAQrD,OAAO,KAAK,EAA0B,QAAQ,EAAe,MAAM,YAAY,CAAC;AAOhF,OAAO,EAAqB,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE9E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAuB,KAAK,YAAY,EAAqB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/agents/orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
*
|
|
17
17
|
* Called by the `agent-nuvira execute` CLI command.
|
|
18
18
|
*/
|
|
19
|
-
import { existsSync, writeFileSync, mkdirSync } from 'node:fs';
|
|
19
|
+
import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
|
|
20
20
|
import { dirname, isAbsolute, resolve } from 'node:path';
|
|
21
21
|
import inquirer from 'inquirer';
|
|
22
22
|
import { ProviderFactory } from '../inference/factory.js';
|
|
@@ -42,6 +42,7 @@ import { getQuotaLedger } from '../learning/quota-ledger.js';
|
|
|
42
42
|
import { resolveWorkingModel } from '../inference/model-validator.js';
|
|
43
43
|
import { recordRoutingDecision } from '../learning/routing-history.js';
|
|
44
44
|
import { createReviewFromResult } from '../team/review.js';
|
|
45
|
+
import { indexFiles, retrieve, recordRetrievalStats, retrievalOptionsFromConfig, estimateTokens as retrievalEstimateTokens } from '../learning/retrieval.js';
|
|
45
46
|
// ─── DAG Integration (optional — dashboard may not be built) ─────────────────
|
|
46
47
|
/**
|
|
47
48
|
* Push a DAG update to the live dashboard, if the server is running.
|
|
@@ -305,6 +306,16 @@ export class Orchestrator {
|
|
|
305
306
|
else {
|
|
306
307
|
logger.info(' No similar past tasks found in memory');
|
|
307
308
|
}
|
|
309
|
+
// Transparency: surface which vector backend served the cross-session
|
|
310
|
+
// semantic search (faiss-native / faiss-ivf / json) so users can see
|
|
311
|
+
// the FAISS-style backend is active for trajectory memory.
|
|
312
|
+
try {
|
|
313
|
+
const { getVectorStore } = await import('../memory/vector-store.js');
|
|
314
|
+
logger.info(` 🧠 Cross-session memory backend: ${await getVectorStore().backendName()}`);
|
|
315
|
+
}
|
|
316
|
+
catch {
|
|
317
|
+
// Best-effort — backend name is diagnostics-only.
|
|
318
|
+
}
|
|
308
319
|
}
|
|
309
320
|
}
|
|
310
321
|
catch (err) {
|
|
@@ -1042,6 +1053,64 @@ export class Orchestrator {
|
|
|
1042
1053
|
}
|
|
1043
1054
|
}
|
|
1044
1055
|
}
|
|
1056
|
+
// ── Vector retrieval hook (post-gather) ───────────────────────────
|
|
1057
|
+
// Once the gatherer has collected the relevant files, index them into
|
|
1058
|
+
// the repo vector store (idempotent) and retrieve the top-k chunks for
|
|
1059
|
+
// the goal. This gives the writer a SEMANTIC file ranking (relevance
|
|
1060
|
+
// over size) and records token-savings transparency for the dashboard.
|
|
1061
|
+
// Best-effort: any retrieval failure falls through silently — the
|
|
1062
|
+
// pipeline must never break on an embedding/indexing error.
|
|
1063
|
+
if (effectiveAgentType === 'context-gatherer' && result.success && contextFiles.length > 0) {
|
|
1064
|
+
try {
|
|
1065
|
+
const retrievalOpts = retrievalOptionsFromConfig(this.configManager);
|
|
1066
|
+
if (retrievalOpts.enabled) {
|
|
1067
|
+
const { files, chunks } = await indexFiles(contextFiles, retrievalOpts);
|
|
1068
|
+
if (chunks > 0) {
|
|
1069
|
+
const hits = await retrieve(vault.context.goal, retrievalOpts);
|
|
1070
|
+
if (hits.length > 0) {
|
|
1071
|
+
vault.setMeta('retrievalRanking', hits.map((h) => ({
|
|
1072
|
+
filePath: h.chunk.filePath,
|
|
1073
|
+
similarity: h.similarity,
|
|
1074
|
+
})));
|
|
1075
|
+
}
|
|
1076
|
+
// Token-savings transparency (Step 5): record the retrieval into
|
|
1077
|
+
// retrieval-stats.json so `buff retrieval stats` and the dashboard
|
|
1078
|
+
// Retrieval card reflect pipeline retrieval too (not just chat).
|
|
1079
|
+
try {
|
|
1080
|
+
const originalTokens = contextFiles.reduce((sum, f) => {
|
|
1081
|
+
try {
|
|
1082
|
+
return sum + retrievalEstimateTokens(readFileSync(f, 'utf-8'));
|
|
1083
|
+
}
|
|
1084
|
+
catch {
|
|
1085
|
+
return sum;
|
|
1086
|
+
}
|
|
1087
|
+
}, 0);
|
|
1088
|
+
const reducedTokens = hits.reduce((sum, h) => sum + h.chunk.tokenCount, 0);
|
|
1089
|
+
recordRetrievalStats({
|
|
1090
|
+
used: hits.length > 0,
|
|
1091
|
+
originalTokens,
|
|
1092
|
+
reducedTokens,
|
|
1093
|
+
savedTokens: Math.max(0, originalTokens - reducedTokens),
|
|
1094
|
+
pctReduced: originalTokens > 0 ? Math.round((1 - reducedTokens / originalTokens) * 1000) / 10 : 0,
|
|
1095
|
+
chunksRetrieved: hits.length,
|
|
1096
|
+
failover: false,
|
|
1097
|
+
hits: hits.map((h) => ({ filePath: h.chunk.filePath, similarity: h.similarity })),
|
|
1098
|
+
timestamp: Date.now(),
|
|
1099
|
+
});
|
|
1100
|
+
}
|
|
1101
|
+
catch {
|
|
1102
|
+
// Best-effort — stats must never break the pipeline.
|
|
1103
|
+
}
|
|
1104
|
+
if (options.verbose) {
|
|
1105
|
+
logger.info(`🧠 Indexed ${files} file(s) into ${chunks} retrieval chunk(s)`);
|
|
1106
|
+
}
|
|
1107
|
+
}
|
|
1108
|
+
}
|
|
1109
|
+
}
|
|
1110
|
+
catch (err) {
|
|
1111
|
+
logger.debug(`Vector retrieval hook skipped: ${err instanceof Error ? err.message : err}`);
|
|
1112
|
+
}
|
|
1113
|
+
}
|
|
1045
1114
|
// Prune context after each agent step to keep the context bus within limits
|
|
1046
1115
|
this.pruneContext(vault, options);
|
|
1047
1116
|
if (options.verbose) {
|