@beingmartinbmc/ojas 0.2.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/LICENSE +21 -0
- package/README.md +308 -0
- package/dist/aahar/index.d.ts +179 -0
- package/dist/aahar/index.d.ts.map +1 -0
- package/dist/aahar/index.js +657 -0
- package/dist/aahar/index.js.map +1 -0
- package/dist/aahar/scoring.d.ts +85 -0
- package/dist/aahar/scoring.d.ts.map +1 -0
- package/dist/aahar/scoring.js +268 -0
- package/dist/aahar/scoring.js.map +1 -0
- package/dist/agni/index.d.ts +113 -0
- package/dist/agni/index.d.ts.map +1 -0
- package/dist/agni/index.js +328 -0
- package/dist/agni/index.js.map +1 -0
- package/dist/agni/model-router.d.ts +77 -0
- package/dist/agni/model-router.d.ts.map +1 -0
- package/dist/agni/model-router.js +163 -0
- package/dist/agni/model-router.js.map +1 -0
- package/dist/agni/response-distiller.d.ts +37 -0
- package/dist/agni/response-distiller.d.ts.map +1 -0
- package/dist/agni/response-distiller.js +193 -0
- package/dist/agni/response-distiller.js.map +1 -0
- package/dist/agni/tiktoken-adapter.d.ts +55 -0
- package/dist/agni/tiktoken-adapter.d.ts.map +1 -0
- package/dist/agni/tiktoken-adapter.js +113 -0
- package/dist/agni/tiktoken-adapter.js.map +1 -0
- package/dist/chikitsa/index.d.ts +130 -0
- package/dist/chikitsa/index.d.ts.map +1 -0
- package/dist/chikitsa/index.js +565 -0
- package/dist/chikitsa/index.js.map +1 -0
- package/dist/demo.d.ts +15 -0
- package/dist/demo.d.ts.map +1 -0
- package/dist/demo.js +278 -0
- package/dist/demo.js.map +1 -0
- package/dist/index.d.ts +201 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +588 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/audit.d.ts +39 -0
- package/dist/mcp/audit.d.ts.map +1 -0
- package/dist/mcp/audit.js +73 -0
- package/dist/mcp/audit.js.map +1 -0
- package/dist/mcp/contracts.d.ts +76 -0
- package/dist/mcp/contracts.d.ts.map +1 -0
- package/dist/mcp/contracts.js +44 -0
- package/dist/mcp/contracts.js.map +1 -0
- package/dist/mcp/envelope.d.ts +107 -0
- package/dist/mcp/envelope.d.ts.map +1 -0
- package/dist/mcp/envelope.js +162 -0
- package/dist/mcp/envelope.js.map +1 -0
- package/dist/mcp/registry.d.ts +110 -0
- package/dist/mcp/registry.d.ts.map +1 -0
- package/dist/mcp/registry.js +258 -0
- package/dist/mcp/registry.js.map +1 -0
- package/dist/mcp/server.d.ts +26 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +107 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools/agent.d.ts +4 -0
- package/dist/mcp/tools/agent.d.ts.map +1 -0
- package/dist/mcp/tools/agent.js +300 -0
- package/dist/mcp/tools/agent.js.map +1 -0
- package/dist/mcp/tools/context.d.ts +4 -0
- package/dist/mcp/tools/context.d.ts.map +1 -0
- package/dist/mcp/tools/context.js +261 -0
- package/dist/mcp/tools/context.js.map +1 -0
- package/dist/mcp/tools/index.d.ts +5 -0
- package/dist/mcp/tools/index.d.ts.map +1 -0
- package/dist/mcp/tools/index.js +20 -0
- package/dist/mcp/tools/index.js.map +1 -0
- package/dist/mcp/tools/memory.d.ts +4 -0
- package/dist/mcp/tools/memory.d.ts.map +1 -0
- package/dist/mcp/tools/memory.js +220 -0
- package/dist/mcp/tools/memory.js.map +1 -0
- package/dist/mcp/tools/output.d.ts +4 -0
- package/dist/mcp/tools/output.d.ts.map +1 -0
- package/dist/mcp/tools/output.js +206 -0
- package/dist/mcp/tools/output.js.map +1 -0
- package/dist/mcp/tools/recovery.d.ts +4 -0
- package/dist/mcp/tools/recovery.d.ts.map +1 -0
- package/dist/mcp/tools/recovery.js +165 -0
- package/dist/mcp/tools/recovery.js.map +1 -0
- package/dist/mcp/tools/registrar.d.ts +4 -0
- package/dist/mcp/tools/registrar.d.ts.map +1 -0
- package/dist/mcp/tools/registrar.js +17 -0
- package/dist/mcp/tools/registrar.js.map +1 -0
- package/dist/mcp/tools/report.d.ts +4 -0
- package/dist/mcp/tools/report.d.ts.map +1 -0
- package/dist/mcp/tools/report.js +68 -0
- package/dist/mcp/tools/report.js.map +1 -0
- package/dist/mcp/tools/shared.d.ts +37 -0
- package/dist/mcp/tools/shared.d.ts.map +1 -0
- package/dist/mcp/tools/shared.js +214 -0
- package/dist/mcp/tools/shared.js.map +1 -0
- package/dist/mcp/trace.d.ts +47 -0
- package/dist/mcp/trace.d.ts.map +1 -0
- package/dist/mcp/trace.js +216 -0
- package/dist/mcp/trace.js.map +1 -0
- package/dist/nidra/index.d.ts +275 -0
- package/dist/nidra/index.d.ts.map +1 -0
- package/dist/nidra/index.js +889 -0
- package/dist/nidra/index.js.map +1 -0
- package/dist/persistence/migrations.d.ts +10 -0
- package/dist/persistence/migrations.d.ts.map +1 -0
- package/dist/persistence/migrations.js +77 -0
- package/dist/persistence/migrations.js.map +1 -0
- package/dist/persistence/sqlite.d.ts +30 -0
- package/dist/persistence/sqlite.d.ts.map +1 -0
- package/dist/persistence/sqlite.js +209 -0
- package/dist/persistence/sqlite.js.map +1 -0
- package/dist/persistence/types.d.ts +104 -0
- package/dist/persistence/types.d.ts.map +1 -0
- package/dist/persistence/types.js +5 -0
- package/dist/persistence/types.js.map +1 -0
- package/dist/pulse/index.d.ts +144 -0
- package/dist/pulse/index.d.ts.map +1 -0
- package/dist/pulse/index.js +453 -0
- package/dist/pulse/index.js.map +1 -0
- package/dist/raksha/classifiers/http-classifier.d.ts +26 -0
- package/dist/raksha/classifiers/http-classifier.d.ts.map +1 -0
- package/dist/raksha/classifiers/http-classifier.js +62 -0
- package/dist/raksha/classifiers/http-classifier.js.map +1 -0
- package/dist/raksha/classifiers/index.d.ts +5 -0
- package/dist/raksha/classifiers/index.d.ts.map +1 -0
- package/dist/raksha/classifiers/index.js +8 -0
- package/dist/raksha/classifiers/index.js.map +1 -0
- package/dist/raksha/classifiers/onnx-classifier.d.ts +41 -0
- package/dist/raksha/classifiers/onnx-classifier.d.ts.map +1 -0
- package/dist/raksha/classifiers/onnx-classifier.js +99 -0
- package/dist/raksha/classifiers/onnx-classifier.js.map +1 -0
- package/dist/raksha/hallucination-detectors.d.ts +106 -0
- package/dist/raksha/hallucination-detectors.d.ts.map +1 -0
- package/dist/raksha/hallucination-detectors.js +327 -0
- package/dist/raksha/hallucination-detectors.js.map +1 -0
- package/dist/raksha/index.d.ts +168 -0
- package/dist/raksha/index.d.ts.map +1 -0
- package/dist/raksha/index.js +597 -0
- package/dist/raksha/index.js.map +1 -0
- package/dist/raksha/prompt-injection-detectors.d.ts +30 -0
- package/dist/raksha/prompt-injection-detectors.d.ts.map +1 -0
- package/dist/raksha/prompt-injection-detectors.js +153 -0
- package/dist/raksha/prompt-injection-detectors.js.map +1 -0
- package/dist/types.d.ts +1115 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +71 -0
- package/dist/types.js.map +1 -0
- package/dist/util/calibration.d.ts +32 -0
- package/dist/util/calibration.d.ts.map +1 -0
- package/dist/util/calibration.js +108 -0
- package/dist/util/calibration.js.map +1 -0
- package/dist/util/id.d.ts +2 -0
- package/dist/util/id.d.ts.map +1 -0
- package/dist/util/id.js +9 -0
- package/dist/util/id.js.map +1 -0
- package/dist/vyayam/index.d.ts +76 -0
- package/dist/vyayam/index.d.ts.map +1 -0
- package/dist/vyayam/index.js +528 -0
- package/dist/vyayam/index.js.map +1 -0
- package/dist/vyayam/tool-fault-proxy.d.ts +95 -0
- package/dist/vyayam/tool-fault-proxy.d.ts.map +1 -0
- package/dist/vyayam/tool-fault-proxy.js +170 -0
- package/dist/vyayam/tool-fault-proxy.js.map +1 -0
- package/docs/ARCHITECTURE.md +162 -0
- package/docs/BACKLOG.md +342 -0
- package/docs/CONFIGURATION.md +305 -0
- package/docs/EVIDENCE.md +232 -0
- package/docs/EVIDENCE_MATRIX.md +293 -0
- package/docs/KNOWN_FAILURES.md +367 -0
- package/docs/MCP.md +614 -0
- package/docs/MODULES.md +368 -0
- package/docs/SECURITY.md +251 -0
- package/docs/TRUST.md +88 -0
- package/docs/assets/ojas-hero.png +0 -0
- package/package.json +101 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/aahar/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Aahar — internal scoring helpers.
|
|
3
|
+
*
|
|
4
|
+
* Pure deterministic utilities used by `Aahar.filter` / `Aahar.prioritize`
|
|
5
|
+
* when:
|
|
6
|
+
* - the caller supplies a query (BM25 + entity-overlap + Reciprocal Rank
|
|
7
|
+
* Fusion against the caller-supplied relevance signal), or
|
|
8
|
+
* - dedup is enabled (5-shingle Jaccard), or
|
|
9
|
+
* - diversity-aware MMR packing is enabled (cosine over token bags).
|
|
10
|
+
*
|
|
11
|
+
* Everything here is intentionally LLM-free, embedding-free, and dep-free:
|
|
12
|
+
* Aahar runs on the hot filter path and must stay deterministic + fast.
|
|
13
|
+
* Worst-case complexity is O(N·M) for tokenisation and O(N²) for the MMR
|
|
14
|
+
* inner loop, which is acceptable for N ≈ low hundreds of context items.
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Lowercase + split on non-alphanumeric runs, drop tokens shorter than 2.
|
|
18
|
+
* Deliberately not language-aware — the goal is cheap lexical recall, not
|
|
19
|
+
* linguistic correctness. Stop-words are kept because BM25's IDF already
|
|
20
|
+
* down-weights very common terms in the local corpus.
|
|
21
|
+
*/
|
|
22
|
+
export declare function tokenize(text: string): string[];
|
|
23
|
+
/**
|
|
24
|
+
* Standard Okapi BM25 over a local corpus of `docs` (already-tokenised).
|
|
25
|
+
* Uses `k1=1.5`, `b=0.75` — the canonical defaults; the goal is a robust
|
|
26
|
+
* lexical signal, not a per-corpus-tuned ranker. Returns one raw BM25
|
|
27
|
+
* score per doc (higher = better match for `queryTokens`).
|
|
28
|
+
*
|
|
29
|
+
* Notes for callers:
|
|
30
|
+
* - Empty `queryTokens` or `docs` returns an array of zeros.
|
|
31
|
+
* - The IDF formula adds `+1` inside the log to keep IDF non-negative
|
|
32
|
+
* for terms that appear in most docs (avoids accidental score sign
|
|
33
|
+
* flips on tiny local corpora).
|
|
34
|
+
*/
|
|
35
|
+
export declare function bm25Scores(queryTokens: string[], docs: string[][]): number[];
|
|
36
|
+
/**
|
|
37
|
+
* Extract proper-noun-ish and quoted entities from `text`. Intentionally
|
|
38
|
+
* crude — we want a deterministic, LLM-free signal that captures named
|
|
39
|
+
* things (product names, people, places, code identifiers, quoted spans).
|
|
40
|
+
* Returns a lowercased Set so overlap is case-insensitive.
|
|
41
|
+
*/
|
|
42
|
+
export declare function extractEntities(text: string): Set<string>;
|
|
43
|
+
/**
|
|
44
|
+
* Convert raw scores (higher = better) to 1-indexed ranks where ties get
|
|
45
|
+
* the same rank (standard competition ranking). Used as input to RRF.
|
|
46
|
+
*/
|
|
47
|
+
export declare function scoresToRanks(scores: number[]): number[];
|
|
48
|
+
/**
|
|
49
|
+
* Reciprocal Rank Fusion. `signalRanks` is one rank-array per signal (each
|
|
50
|
+
* the output of `scoresToRanks`). Returns one fused score per item
|
|
51
|
+
* (higher = better). The standard constant `k=60` damps very-top-ranked
|
|
52
|
+
* outliers from dominating the fusion.
|
|
53
|
+
*
|
|
54
|
+
* RRF is scale-invariant across signals — a BM25 score of 12.3 and a
|
|
55
|
+
* relevanceScore of 0.92 can be fused without normalisation, which is the
|
|
56
|
+
* whole point of preferring it over weighted-sum approaches.
|
|
57
|
+
*/
|
|
58
|
+
export declare function rrfFuse(signalRanks: number[][], k?: number): number[];
|
|
59
|
+
/**
|
|
60
|
+
* Generate w-token shingles for `text` (default w=5). Falls back to
|
|
61
|
+
* single tokens for very short docs so dedup still has something to
|
|
62
|
+
* compare. Returns a Set for O(1) intersection.
|
|
63
|
+
*/
|
|
64
|
+
export declare function shingles(text: string, w?: number): Set<string>;
|
|
65
|
+
/**
|
|
66
|
+
* Jaccard similarity in [0, 1] over two Sets of shingles. Both empty
|
|
67
|
+
* collapse to 1 (defensible: nothing-vs-nothing carries no information,
|
|
68
|
+
* but for dedup purposes treating it as identical is the safer call —
|
|
69
|
+
* we prefer to over-collapse two empty inputs than to keep both).
|
|
70
|
+
*/
|
|
71
|
+
export declare function jaccard<T>(a: Set<T>, b: Set<T>): number;
|
|
72
|
+
/**
|
|
73
|
+
* Cosine similarity over multiset token bags. Returns [0, 1]. We use this
|
|
74
|
+
* for MMR's diversity penalty rather than embeddings — it's free, stable,
|
|
75
|
+
* and good enough to separate "Pinecone offers scaling" from "Random
|
|
76
|
+
* stack-overflow comment".
|
|
77
|
+
*
|
|
78
|
+
* Implementation pre-builds the bag once on the caller side (see
|
|
79
|
+
* `aahar/index.ts`) so repeated comparisons against an accumulating
|
|
80
|
+
* accepted list don't re-tokenise N² times.
|
|
81
|
+
*/
|
|
82
|
+
export declare function bagCosine(a: Map<string, number>, b: Map<string, number>): number;
|
|
83
|
+
/** Build a token-bag (Map<token, count>) from a pre-tokenised array. */
|
|
84
|
+
export declare function buildBag(tokens: string[]): Map<string, number>;
|
|
85
|
+
//# sourceMappingURL=scoring.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scoring.d.ts","sourceRoot":"","sources":["../../src/aahar/scoring.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAO/C;AAID;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,CA6C5E;AAID;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAmBzD;AAID;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAsBxD;AAED;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,SAAK,GAAG,MAAM,EAAE,CAcjE;AAID;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,SAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAWzD;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CASvD;AAID;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAchF;AAED,wEAAwE;AACxE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAI9D"}
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Aahar — internal scoring helpers.
|
|
4
|
+
*
|
|
5
|
+
* Pure deterministic utilities used by `Aahar.filter` / `Aahar.prioritize`
|
|
6
|
+
* when:
|
|
7
|
+
* - the caller supplies a query (BM25 + entity-overlap + Reciprocal Rank
|
|
8
|
+
* Fusion against the caller-supplied relevance signal), or
|
|
9
|
+
* - dedup is enabled (5-shingle Jaccard), or
|
|
10
|
+
* - diversity-aware MMR packing is enabled (cosine over token bags).
|
|
11
|
+
*
|
|
12
|
+
* Everything here is intentionally LLM-free, embedding-free, and dep-free:
|
|
13
|
+
* Aahar runs on the hot filter path and must stay deterministic + fast.
|
|
14
|
+
* Worst-case complexity is O(N·M) for tokenisation and O(N²) for the MMR
|
|
15
|
+
* inner loop, which is acceptable for N ≈ low hundreds of context items.
|
|
16
|
+
*/
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.tokenize = tokenize;
|
|
19
|
+
exports.bm25Scores = bm25Scores;
|
|
20
|
+
exports.extractEntities = extractEntities;
|
|
21
|
+
exports.scoresToRanks = scoresToRanks;
|
|
22
|
+
exports.rrfFuse = rrfFuse;
|
|
23
|
+
exports.shingles = shingles;
|
|
24
|
+
exports.jaccard = jaccard;
|
|
25
|
+
exports.bagCosine = bagCosine;
|
|
26
|
+
exports.buildBag = buildBag;
|
|
27
|
+
// ─── Tokenisation ─────────────────────────────────────────────────────────────
|
|
28
|
+
/**
|
|
29
|
+
* Lowercase + split on non-alphanumeric runs, drop tokens shorter than 2.
|
|
30
|
+
* Deliberately not language-aware — the goal is cheap lexical recall, not
|
|
31
|
+
* linguistic correctness. Stop-words are kept because BM25's IDF already
|
|
32
|
+
* down-weights very common terms in the local corpus.
|
|
33
|
+
*/
|
|
34
|
+
function tokenize(text) {
|
|
35
|
+
if (!text)
|
|
36
|
+
return [];
|
|
37
|
+
const tokens = [];
|
|
38
|
+
for (const t of text.toLowerCase().split(/[^a-z0-9]+/)) {
|
|
39
|
+
if (t.length >= 2)
|
|
40
|
+
tokens.push(t);
|
|
41
|
+
}
|
|
42
|
+
return tokens;
|
|
43
|
+
}
|
|
44
|
+
// ─── BM25 ─────────────────────────────────────────────────────────────────────
|
|
45
|
+
/**
|
|
46
|
+
* Standard Okapi BM25 over a local corpus of `docs` (already-tokenised).
|
|
47
|
+
* Uses `k1=1.5`, `b=0.75` — the canonical defaults; the goal is a robust
|
|
48
|
+
* lexical signal, not a per-corpus-tuned ranker. Returns one raw BM25
|
|
49
|
+
* score per doc (higher = better match for `queryTokens`).
|
|
50
|
+
*
|
|
51
|
+
* Notes for callers:
|
|
52
|
+
* - Empty `queryTokens` or `docs` returns an array of zeros.
|
|
53
|
+
* - The IDF formula adds `+1` inside the log to keep IDF non-negative
|
|
54
|
+
* for terms that appear in most docs (avoids accidental score sign
|
|
55
|
+
* flips on tiny local corpora).
|
|
56
|
+
*/
|
|
57
|
+
function bm25Scores(queryTokens, docs) {
|
|
58
|
+
const n = docs.length;
|
|
59
|
+
if (n === 0)
|
|
60
|
+
return [];
|
|
61
|
+
if (queryTokens.length === 0)
|
|
62
|
+
return new Array(n).fill(0);
|
|
63
|
+
const k1 = 1.5;
|
|
64
|
+
const b = 0.75;
|
|
65
|
+
const docLens = docs.map((d) => d.length);
|
|
66
|
+
const avgLen = docLens.reduce((s, l) => s + l, 0) / n || 1;
|
|
67
|
+
// Pre-compute document term frequencies and document-as-Sets for df lookups.
|
|
68
|
+
const tfs = docs.map((d) => {
|
|
69
|
+
const m = new Map();
|
|
70
|
+
for (const t of d)
|
|
71
|
+
m.set(t, (m.get(t) ?? 0) + 1);
|
|
72
|
+
return m;
|
|
73
|
+
});
|
|
74
|
+
// Unique query terms only — duplicating a term in the query shouldn't
|
|
75
|
+
// multiply its weight (that's what `tf` is for).
|
|
76
|
+
const uniqueQuery = Array.from(new Set(queryTokens));
|
|
77
|
+
// Document frequencies for each unique query term.
|
|
78
|
+
const df = new Map();
|
|
79
|
+
for (const qt of uniqueQuery) {
|
|
80
|
+
let count = 0;
|
|
81
|
+
for (const tf of tfs)
|
|
82
|
+
if (tf.has(qt))
|
|
83
|
+
count++;
|
|
84
|
+
df.set(qt, count);
|
|
85
|
+
}
|
|
86
|
+
const scores = new Array(n).fill(0);
|
|
87
|
+
for (let i = 0; i < n; i++) {
|
|
88
|
+
const tf = tfs[i];
|
|
89
|
+
const dl = docLens[i];
|
|
90
|
+
let s = 0;
|
|
91
|
+
for (const qt of uniqueQuery) {
|
|
92
|
+
const f = tf.get(qt) ?? 0;
|
|
93
|
+
if (f === 0)
|
|
94
|
+
continue;
|
|
95
|
+
const dfi = df.get(qt) ?? 0;
|
|
96
|
+
const idf = Math.log(((n - dfi + 0.5) / (dfi + 0.5)) + 1);
|
|
97
|
+
const denom = f + k1 * (1 - b + (b * dl) / avgLen);
|
|
98
|
+
s += idf * ((f * (k1 + 1)) / denom);
|
|
99
|
+
}
|
|
100
|
+
scores[i] = s;
|
|
101
|
+
}
|
|
102
|
+
return scores;
|
|
103
|
+
}
|
|
104
|
+
// ─── Entity extraction (cheap, no NER) ────────────────────────────────────────
|
|
105
|
+
/**
|
|
106
|
+
* Extract proper-noun-ish and quoted entities from `text`. Intentionally
|
|
107
|
+
* crude — we want a deterministic, LLM-free signal that captures named
|
|
108
|
+
* things (product names, people, places, code identifiers, quoted spans).
|
|
109
|
+
* Returns a lowercased Set so overlap is case-insensitive.
|
|
110
|
+
*/
|
|
111
|
+
function extractEntities(text) {
|
|
112
|
+
const out = new Set();
|
|
113
|
+
if (!text)
|
|
114
|
+
return out;
|
|
115
|
+
// CapWord (with optional internal camel-case): Pinecone, OpenAI, MyService.
|
|
116
|
+
const reCap = /\b[A-Z][a-z0-9]+(?:[A-Z][a-z0-9]*)*\b/g;
|
|
117
|
+
// Code-ish identifiers: snake_case, kebab-case, dotted.path, things with digits.
|
|
118
|
+
const reIdent = /\b[a-z][a-z0-9]+(?:[._-][a-z0-9]+)+\b/gi;
|
|
119
|
+
// Double-quoted spans (2–80 chars to skip giant pasted blocks).
|
|
120
|
+
const reQuoted = /"([^"\n]{2,80})"/g;
|
|
121
|
+
// 4-digit years and dates as crude temporal entities.
|
|
122
|
+
const reYear = /\b(19|20)\d{2}\b/g;
|
|
123
|
+
let m;
|
|
124
|
+
while ((m = reCap.exec(text)) !== null)
|
|
125
|
+
out.add(m[0].toLowerCase());
|
|
126
|
+
while ((m = reIdent.exec(text)) !== null)
|
|
127
|
+
out.add(m[0].toLowerCase());
|
|
128
|
+
while ((m = reQuoted.exec(text)) !== null)
|
|
129
|
+
out.add(m[1].toLowerCase());
|
|
130
|
+
while ((m = reYear.exec(text)) !== null)
|
|
131
|
+
out.add(m[0]);
|
|
132
|
+
return out;
|
|
133
|
+
}
|
|
134
|
+
// ─── Reciprocal Rank Fusion ───────────────────────────────────────────────────
|
|
135
|
+
/**
|
|
136
|
+
* Convert raw scores (higher = better) to 1-indexed ranks where ties get
|
|
137
|
+
* the same rank (standard competition ranking). Used as input to RRF.
|
|
138
|
+
*/
|
|
139
|
+
function scoresToRanks(scores) {
|
|
140
|
+
const n = scores.length;
|
|
141
|
+
if (n === 0)
|
|
142
|
+
return [];
|
|
143
|
+
const sorted = scores
|
|
144
|
+
.map((s, i) => ({ s, i }))
|
|
145
|
+
.sort((a, b) => b.s - a.s);
|
|
146
|
+
const ranks = new Array(n);
|
|
147
|
+
let curRank = 1;
|
|
148
|
+
let lastScore = Number.POSITIVE_INFINITY;
|
|
149
|
+
let groupStart = 1;
|
|
150
|
+
for (let pos = 0; pos < n; pos++) {
|
|
151
|
+
const entry = sorted[pos];
|
|
152
|
+
if (entry.s !== lastScore) {
|
|
153
|
+
curRank = pos + 1;
|
|
154
|
+
groupStart = curRank;
|
|
155
|
+
lastScore = entry.s;
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
curRank = groupStart;
|
|
159
|
+
}
|
|
160
|
+
ranks[entry.i] = curRank;
|
|
161
|
+
}
|
|
162
|
+
return ranks;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Reciprocal Rank Fusion. `signalRanks` is one rank-array per signal (each
|
|
166
|
+
* the output of `scoresToRanks`). Returns one fused score per item
|
|
167
|
+
* (higher = better). The standard constant `k=60` damps very-top-ranked
|
|
168
|
+
* outliers from dominating the fusion.
|
|
169
|
+
*
|
|
170
|
+
* RRF is scale-invariant across signals — a BM25 score of 12.3 and a
|
|
171
|
+
* relevanceScore of 0.92 can be fused without normalisation, which is the
|
|
172
|
+
* whole point of preferring it over weighted-sum approaches.
|
|
173
|
+
*/
|
|
174
|
+
function rrfFuse(signalRanks, k = 60) {
|
|
175
|
+
if (signalRanks.length === 0)
|
|
176
|
+
return [];
|
|
177
|
+
const n = signalRanks[0].length;
|
|
178
|
+
if (n === 0)
|
|
179
|
+
return [];
|
|
180
|
+
const out = new Array(n).fill(0);
|
|
181
|
+
for (const ranks of signalRanks) {
|
|
182
|
+
if (ranks.length !== n) {
|
|
183
|
+
throw new Error('rrfFuse: all signal-rank arrays must have the same length');
|
|
184
|
+
}
|
|
185
|
+
for (let i = 0; i < n; i++) {
|
|
186
|
+
out[i] += 1 / (k + ranks[i]);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
return out;
|
|
190
|
+
}
|
|
191
|
+
// ─── Shingles + Jaccard (for near-duplicate detection) ───────────────────────
|
|
192
|
+
/**
|
|
193
|
+
* Generate w-token shingles for `text` (default w=5). Falls back to
|
|
194
|
+
* single tokens for very short docs so dedup still has something to
|
|
195
|
+
* compare. Returns a Set for O(1) intersection.
|
|
196
|
+
*/
|
|
197
|
+
function shingles(text, w = 5) {
|
|
198
|
+
const tokens = tokenize(text);
|
|
199
|
+
const out = new Set();
|
|
200
|
+
if (tokens.length < w) {
|
|
201
|
+
for (const t of tokens)
|
|
202
|
+
out.add(t);
|
|
203
|
+
return out;
|
|
204
|
+
}
|
|
205
|
+
for (let i = 0; i <= tokens.length - w; i++) {
|
|
206
|
+
out.add(tokens.slice(i, i + w).join(' '));
|
|
207
|
+
}
|
|
208
|
+
return out;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Jaccard similarity in [0, 1] over two Sets of shingles. Both empty
|
|
212
|
+
* collapse to 1 (defensible: nothing-vs-nothing carries no information,
|
|
213
|
+
* but for dedup purposes treating it as identical is the safer call —
|
|
214
|
+
* we prefer to over-collapse two empty inputs than to keep both).
|
|
215
|
+
*/
|
|
216
|
+
function jaccard(a, b) {
|
|
217
|
+
if (a.size === 0 && b.size === 0)
|
|
218
|
+
return 1;
|
|
219
|
+
if (a.size === 0 || b.size === 0)
|
|
220
|
+
return 0;
|
|
221
|
+
// Iterate the smaller set for the intersection.
|
|
222
|
+
const [small, large] = a.size <= b.size ? [a, b] : [b, a];
|
|
223
|
+
let inter = 0;
|
|
224
|
+
for (const t of small)
|
|
225
|
+
if (large.has(t))
|
|
226
|
+
inter++;
|
|
227
|
+
const union = a.size + b.size - inter;
|
|
228
|
+
return union === 0 ? 0 : inter / union;
|
|
229
|
+
}
|
|
230
|
+
// ─── Cosine over token bags (for MMR diversity) ───────────────────────────────
|
|
231
|
+
/**
|
|
232
|
+
* Cosine similarity over multiset token bags. Returns [0, 1]. We use this
|
|
233
|
+
* for MMR's diversity penalty rather than embeddings — it's free, stable,
|
|
234
|
+
* and good enough to separate "Pinecone offers scaling" from "Random
|
|
235
|
+
* stack-overflow comment".
|
|
236
|
+
*
|
|
237
|
+
* Implementation pre-builds the bag once on the caller side (see
|
|
238
|
+
* `aahar/index.ts`) so repeated comparisons against an accumulating
|
|
239
|
+
* accepted list don't re-tokenise N² times.
|
|
240
|
+
*/
|
|
241
|
+
function bagCosine(a, b) {
|
|
242
|
+
if (a.size === 0 || b.size === 0)
|
|
243
|
+
return 0;
|
|
244
|
+
let dot = 0;
|
|
245
|
+
const [small, large] = a.size <= b.size ? [a, b] : [b, a];
|
|
246
|
+
for (const [t, v] of small) {
|
|
247
|
+
const lv = large.get(t);
|
|
248
|
+
if (lv !== undefined)
|
|
249
|
+
dot += v * lv;
|
|
250
|
+
}
|
|
251
|
+
let normA = 0;
|
|
252
|
+
for (const v of a.values())
|
|
253
|
+
normA += v * v;
|
|
254
|
+
let normB = 0;
|
|
255
|
+
for (const v of b.values())
|
|
256
|
+
normB += v * v;
|
|
257
|
+
if (normA === 0 || normB === 0)
|
|
258
|
+
return 0;
|
|
259
|
+
return dot / (Math.sqrt(normA) * Math.sqrt(normB));
|
|
260
|
+
}
|
|
261
|
+
/** Build a token-bag (Map<token, count>) from a pre-tokenised array. */
|
|
262
|
+
function buildBag(tokens) {
|
|
263
|
+
const m = new Map();
|
|
264
|
+
for (const t of tokens)
|
|
265
|
+
m.set(t, (m.get(t) ?? 0) + 1);
|
|
266
|
+
return m;
|
|
267
|
+
}
|
|
268
|
+
//# sourceMappingURL=scoring.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scoring.js","sourceRoot":"","sources":["../../src/aahar/scoring.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ojas Agni (ओजस अग्नि) — AI Cognitive Metabolism System
|
|
3
|
+
*
|
|
4
|
+
* Regulates token budgets, tool economy, latency, and reasoning effort.
|
|
5
|
+
*/
|
|
6
|
+
import { ExecutionTrace, HealthRecommendation, MetabolismHealth, MetabolismPolicy, ModelRouter, ModelRouterDecision, ResponseDistiller, ResponseDistillResult, TokenEstimator } from '../types';
|
|
7
|
+
import type { AgniStateSnapshot } from '../persistence/types';
|
|
8
|
+
/**
|
|
9
|
+
* Default token estimator: `Math.ceil(text.length / 4)`. Conservative,
|
|
10
|
+
* platform-stable, no external dependency. Off by up to ~25% from real
|
|
11
|
+
* tokenizers (`cl100k_base`, `o200k_base`) on natural-language English,
|
|
12
|
+
* and worse on code, JSON, and non-English text. The number is
|
|
13
|
+
* *directionally* correct but not a model-billing prediction.
|
|
14
|
+
*
|
|
15
|
+
* Plug in a real tokenizer via `new Agni({}, { tokenEstimator: ... })`.
|
|
16
|
+
* The optional `createTiktokenEstimator()` adapter in
|
|
17
|
+
* `src/agni/tiktoken-adapter.ts` wraps OpenAI's `tiktoken` if installed.
|
|
18
|
+
*/
|
|
19
|
+
export declare const charBasedTokenEstimator: TokenEstimator;
|
|
20
|
+
export interface AgniOptions {
|
|
21
|
+
/**
|
|
22
|
+
* Token estimator used when a trace did not supply explicit
|
|
23
|
+
* `tokensUsed` / `inputTokens` / `outputTokens`. Defaults to
|
|
24
|
+
* `charBasedTokenEstimator` (char/4). Pass a real tokenizer (e.g.
|
|
25
|
+
* `createTiktokenEstimator('cl100k_base')`) for production cost claims.
|
|
26
|
+
*/
|
|
27
|
+
tokenEstimator?: TokenEstimator;
|
|
28
|
+
/**
|
|
29
|
+
* Model router for `Agni.recommendRoute(taskClass)`. Defaults to a
|
|
30
|
+
* fresh `ConfidenceRoutingTable` (Wilson 95% CI, threshold 0.80,
|
|
31
|
+
* minObs 10, fail-closed). Plug in your own to integrate with an
|
|
32
|
+
* external policy engine.
|
|
33
|
+
*/
|
|
34
|
+
modelRouter?: ModelRouter;
|
|
35
|
+
/**
|
|
36
|
+
* Response distiller for `Agni.distillResponse(text)`. Defaults to
|
|
37
|
+
* the project's rule-based `defaultResponseDistiller` at `full`
|
|
38
|
+
* intensity. Code blocks are always preserved.
|
|
39
|
+
*/
|
|
40
|
+
responseDistiller?: ResponseDistiller;
|
|
41
|
+
}
|
|
42
|
+
export declare class Agni {
|
|
43
|
+
private policy;
|
|
44
|
+
private traces;
|
|
45
|
+
private readonly tokenEstimator;
|
|
46
|
+
private readonly modelRouter;
|
|
47
|
+
private readonly responseDistiller;
|
|
48
|
+
/**
|
|
49
|
+
* Running sum of estimated tokens removed by `distillResponse`.
|
|
50
|
+
* Used by the token-negative learning-budget invariant in
|
|
51
|
+
* `lifetimeOutputTokensSaved()`.
|
|
52
|
+
*/
|
|
53
|
+
private outputTokensSaved;
|
|
54
|
+
constructor(policy?: Partial<MetabolismPolicy>, options?: AgniOptions);
|
|
55
|
+
/**
|
|
56
|
+
* Identifier of the token estimator Agni is using. Useful for stamping on
|
|
57
|
+
* reports / benchmarks so the reader knows whether numbers are char/4 or
|
|
58
|
+
* a real tokenizer. Stable across calls.
|
|
59
|
+
*/
|
|
60
|
+
getTokenEstimatorName(): string;
|
|
61
|
+
/** Identifier of the model router currently wired in. */
|
|
62
|
+
getModelRouterName(): string;
|
|
63
|
+
/** Identifier of the response distiller currently wired in. */
|
|
64
|
+
getResponseDistillerName(): string;
|
|
65
|
+
/**
|
|
66
|
+
* Record an observed pass/fail outcome for a task class so the model
|
|
67
|
+
* router can build a confidence interval. Delegates to the configured
|
|
68
|
+
* `ModelRouter` — see `ConfidenceRoutingTable` for the default.
|
|
69
|
+
*/
|
|
70
|
+
recordTaskOutcome(taskClass: string, succeeded: boolean): void;
|
|
71
|
+
/**
|
|
72
|
+
* Recommend a routing decision (`'cheap'` vs `'flagship'`) for a task
|
|
73
|
+
* class. The router never calls an LLM itself — the caller wires the
|
|
74
|
+
* decision to their own provider gateway. Fail-closed: on insufficient
|
|
75
|
+
* data, low CI lower bound, or a configured safety class, returns
|
|
76
|
+
* `flagship`.
|
|
77
|
+
*/
|
|
78
|
+
recommendRoute(taskClass: string): ModelRouterDecision;
|
|
79
|
+
/**
|
|
80
|
+
* Snapshot of what the router has learned, sorted by observation
|
|
81
|
+
* count (most-observed task classes first). Useful for debugging or
|
|
82
|
+
* for an operator dashboard.
|
|
83
|
+
*/
|
|
84
|
+
getRouterReport(): ReturnType<ModelRouter['report']>;
|
|
85
|
+
/**
|
|
86
|
+
* Distill an agent **output** to remove non-load-bearing filler
|
|
87
|
+
* (preserves code blocks). Updates the lifetime
|
|
88
|
+
* `outputTokensSaved` counter so callers can audit the
|
|
89
|
+
* token-negative invariant.
|
|
90
|
+
*/
|
|
91
|
+
distillResponse(text: string): ResponseDistillResult;
|
|
92
|
+
/**
|
|
93
|
+
* Lifetime estimated tokens saved by `distillResponse` since this
|
|
94
|
+
* Agni was constructed. Used by callers (or downstream tooling) to
|
|
95
|
+
* enforce a token-negative learning-budget invariant — i.e. a
|
|
96
|
+
* self-improvement loop should never spend more than a small fraction
|
|
97
|
+
* of lifetime savings on its own learning.
|
|
98
|
+
*/
|
|
99
|
+
lifetimeOutputTokensSaved(): number;
|
|
100
|
+
private validatePolicy;
|
|
101
|
+
private enforceTraceLimit;
|
|
102
|
+
recordTrace(trace: ExecutionTrace): void;
|
|
103
|
+
estimateReasoningEffort(riskScore: number, ambiguityScore: number): 'light' | 'standard' | 'deep';
|
|
104
|
+
assess(traces?: ExecutionTrace[]): MetabolismHealth;
|
|
105
|
+
recommend(traces?: ExecutionTrace[]): HealthRecommendation[];
|
|
106
|
+
getPolicy(): MetabolismPolicy;
|
|
107
|
+
/** Defensive copy of retained traces. Useful for introspecting retention. */
|
|
108
|
+
getTraces(): readonly Readonly<ExecutionTrace>[];
|
|
109
|
+
exportState(): AgniStateSnapshot;
|
|
110
|
+
importState(snapshot: Partial<AgniStateSnapshot> | undefined): void;
|
|
111
|
+
updatePolicy(updates: Partial<MetabolismPolicy>): void;
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agni/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAEL,cAAc,EACd,oBAAoB,EAEpB,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,cAAc,EACf,MAAM,UAAU,CAAC;AAGlB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D;;;;;;;;;;GAUG;AACH,eAAO,MAAM,uBAAuB,EAAE,cAMrC,CAAC;AA+BF,MAAM,WAAW,WAAW;IAC1B;;;;;OAKG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC;;;;;OAKG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACvC;AAED,qBAAa,IAAI;IACf,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;IAEtD;;;;OAIG;IACH,OAAO,CAAC,iBAAiB,CAAK;gBAElB,MAAM,GAAE,OAAO,CAAC,gBAAgB,CAAM,EAAE,OAAO,GAAE,WAAgB;IAO7E;;;;OAIG;IACH,qBAAqB,IAAI,MAAM;IAI/B,yDAAyD;IACzD,kBAAkB,IAAI,MAAM;IAI5B,+DAA+D;IAC/D,wBAAwB,IAAI,MAAM;IAIlC;;;;OAIG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,IAAI;IAI9D;;;;;;OAMG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,mBAAmB;IAItD;;;;OAIG;IACH,eAAe,IAAI,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAIpD;;;;;OAKG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB;IAMpD;;;;;;OAMG;IACH,yBAAyB,IAAI,MAAM;IAInC,OAAO,CAAC,cAAc;IAuBtB,OAAO,CAAC,iBAAiB;IAOzB,WAAW,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAKxC,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM;IAOjG,MAAM,CAAC,MAAM,GAAE,cAAc,EAAgB,GAAG,gBAAgB;IAgFhE,SAAS,CAAC,MAAM,GAAE,cAAc,EAAgB,GAAG,oBAAoB,EAAE;IAsCzE,SAAS,IAAI,gBAAgB;IAI7B,6EAA6E;IAC7E,SAAS,IAAI,SAAS,QAAQ,CAAC,cAAc,CAAC,EAAE;IAOhD,WAAW,IAAI,iBAAiB;IAYhC,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,SAAS,GAAG,IAAI;IAcnE,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI;CAIvD"}
|