agenthub-multiagent-mcp 1.38.1 → 1.38.2
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/dist/grounding.d.ts +1 -0
- package/dist/grounding.d.ts.map +1 -1
- package/dist/grounding.js +45 -7
- package/dist/grounding.js.map +1 -1
- package/dist/grounding.test.js +21 -5
- package/dist/grounding.test.js.map +1 -1
- package/package.json +1 -1
package/dist/grounding.d.ts
CHANGED
|
@@ -24,6 +24,7 @@ export interface GroundingParams {
|
|
|
24
24
|
k: number;
|
|
25
25
|
timeoutMs: number;
|
|
26
26
|
}
|
|
27
|
+
export declare function searchTerms(query: string): string;
|
|
27
28
|
/**
|
|
28
29
|
* retrieveContext queries all three knowledge sources in parallel and returns a
|
|
29
30
|
* single formatted context block, capped to MAX_CONTEXT_CHARS. Returns "" when
|
package/dist/grounding.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grounding.d.ts","sourceRoot":"","sources":["../src/grounding.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,CAAC,EAAE,MAAM,CAAC;IACV,SAAS,EAAE,MAAM,CAAC;CACnB;
|
|
1
|
+
{"version":3,"file":"grounding.d.ts","sourceRoot":"","sources":["../src/grounding.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,CAAC,EAAE,MAAM,CAAC;IACV,SAAS,EAAE,MAAM,CAAC;CACnB;AAiCD,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOjD;AA2FD;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAgBzE"}
|
package/dist/grounding.js
CHANGED
|
@@ -19,6 +19,33 @@ function authHeaders(p) {
|
|
|
19
19
|
// Caps so the grounded prompt never balloons: per-snippet and total.
|
|
20
20
|
const MAX_SNIPPET_CHARS = 600;
|
|
21
21
|
const MAX_CONTEXT_CHARS = 6000;
|
|
22
|
+
// The brain/code/knowledge endpoints are substring/keyword matchers, NOT
|
|
23
|
+
// semantic — a full natural-language question ("what does X do?") matches
|
|
24
|
+
// nothing. searchTerms strips question boilerplate + domain framing words and
|
|
25
|
+
// keeps the meaningful tokens IN ORDER (substring match needs original order),
|
|
26
|
+
// so "In the AgentHub codebase what does the requireOrg middleware do" →
|
|
27
|
+
// "requireOrg middleware", which hits. Identifier-like tokens survive intact.
|
|
28
|
+
const STOPWORDS = new Set([
|
|
29
|
+
"the", "a", "an", "is", "are", "was", "were", "be", "been", "do", "does", "did", "done",
|
|
30
|
+
"what", "which", "who", "whom", "whose", "how", "why", "when", "where", "whether",
|
|
31
|
+
"in", "on", "of", "for", "to", "and", "or", "but", "with", "without", "this", "that",
|
|
32
|
+
"these", "those", "it", "its", "as", "at", "by", "from", "into", "about", "over", "up",
|
|
33
|
+
"can", "could", "should", "would", "will", "shall", "may", "might", "must", "not",
|
|
34
|
+
"i", "you", "we", "they", "he", "she", "me", "us", "them", "your", "our", "their", "my",
|
|
35
|
+
"please", "tell", "explain", "describe", "give", "answer", "summarize", "summarise",
|
|
36
|
+
"sentence", "sentences", "one", "two", "three", "word", "words", "line", "lines",
|
|
37
|
+
"use", "using", "used", "get", "got", "there", "here", "also", "just", "like", "does",
|
|
38
|
+
// domain framing noise users add around the real question
|
|
39
|
+
"agenthub", "codebase", "code", "repo", "repository", "platform", "system", "project",
|
|
40
|
+
]);
|
|
41
|
+
export function searchTerms(query) {
|
|
42
|
+
const toks = query.replace(/[^A-Za-z0-9_\-]+/g, " ").split(/\s+/).filter(Boolean);
|
|
43
|
+
const kept = toks.filter((t) => t.length > 2 && !STOPWORDS.has(t.toLowerCase()));
|
|
44
|
+
// Order preserved (substring match is position-sensitive); cap to keep the
|
|
45
|
+
// residual short enough that a contiguous match is plausible.
|
|
46
|
+
const out = kept.slice(0, 4).join(" ");
|
|
47
|
+
return out || query.trim();
|
|
48
|
+
}
|
|
22
49
|
/** Fetch + parse JSON, bounded by an abort timeout. Returns null on any failure. */
|
|
23
50
|
async function fetchJson(url, init, timeoutMs) {
|
|
24
51
|
const controller = new AbortController();
|
|
@@ -73,16 +100,24 @@ async function fromIntel(p) {
|
|
|
73
100
|
})
|
|
74
101
|
.filter(Boolean);
|
|
75
102
|
}
|
|
76
|
-
/**
|
|
103
|
+
/**
|
|
104
|
+
* Code brain — GET /api/brain/code/search?q&k → { hits: [{ Snippet,
|
|
105
|
+
* TitleOrSymbol, Path, Kind }] }. The Go handler serializes these fields
|
|
106
|
+
* PascalCase (no json tags), so read both casings defensively.
|
|
107
|
+
*/
|
|
77
108
|
async function fromCodeRecall(p) {
|
|
78
109
|
const url = `${p.apiUrl}/api/brain/code/search?q=${encodeURIComponent(p.query)}&k=${p.k}`;
|
|
79
110
|
const data = (await fetchJson(url, { headers: authHeaders(p) }, p.timeoutMs));
|
|
80
111
|
return (data?.hits ?? [])
|
|
81
112
|
.slice(0, p.k)
|
|
82
113
|
.map((it) => {
|
|
83
|
-
const
|
|
84
|
-
const
|
|
85
|
-
|
|
114
|
+
const snippet = (it.Snippet ?? it.snippet);
|
|
115
|
+
const sym = (it.TitleOrSymbol ?? it.title_or_symbol);
|
|
116
|
+
const path = (it.Path ?? it.path);
|
|
117
|
+
const kind = (it.Kind ?? it.kind);
|
|
118
|
+
const body = (snippet ?? sym ?? "").trim();
|
|
119
|
+
const loc = path ? ` (${path})` : "";
|
|
120
|
+
return body ? clip(`[code${kind ? `/${kind}` : ""}${loc}] ${body}`) : "";
|
|
86
121
|
})
|
|
87
122
|
.filter(Boolean);
|
|
88
123
|
}
|
|
@@ -92,10 +127,13 @@ async function fromCodeRecall(p) {
|
|
|
92
127
|
* nothing useful comes back; the caller then answers ungrounded. Never throws.
|
|
93
128
|
*/
|
|
94
129
|
export async function retrieveContext(p) {
|
|
130
|
+
// Refine the natural-language question into keyword terms the substring/
|
|
131
|
+
// keyword endpoints can actually match.
|
|
132
|
+
const refined = { ...p, query: searchTerms(p.query) };
|
|
95
133
|
const [brain, intel, code] = await Promise.all([
|
|
96
|
-
fromOrgBrain(
|
|
97
|
-
fromIntel(
|
|
98
|
-
fromCodeRecall(
|
|
134
|
+
fromOrgBrain(refined).catch(() => []),
|
|
135
|
+
fromIntel(refined).catch(() => []),
|
|
136
|
+
fromCodeRecall(refined).catch(() => []),
|
|
99
137
|
]);
|
|
100
138
|
let block = "";
|
|
101
139
|
for (const line of [...brain, ...intel, ...code]) {
|
package/dist/grounding.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grounding.js","sourceRoot":"","sources":["../src/grounding.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAkBH,gFAAgF;AAChF,SAAS,WAAW,CAAC,CAAkB;IACrC,MAAM,CAAC,GAA2B,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;IAC5D,IAAI,CAAC,CAAC,YAAY;QAAE,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC;IAC1D,OAAO,CAAC,CAAC;AACX,CAAC;AAED,qEAAqE;AACrE,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAC9B,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAE/B,oFAAoF;AACpF,KAAK,UAAU,SAAS,CACtB,GAAW,EACX,IAAiB,EACjB,SAAiB;IAEjB,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;IAC9D,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QACtE,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QAC1B,OAAO,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED,SAAS,IAAI,CAAC,CAAS;IACrB,OAAO,CAAC,CAAC,MAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,kGAAkG;AAClG,KAAK,UAAU,YAAY,CAAC,CAAkB;IAC5C,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,MAAM,0BAA0B,kBAAkB,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5F,MAAM,IAAI,GAAG,CAAC,MAAM,SAAS,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAEpE,CAAC;IACT,OAAO,CAAC,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC;SAC3B,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SACb,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;QACV,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7F,CAAC,CAAC;SACD,MAAM,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC;AAED,+EAA+E;AAC/E,KAAK,UAAU,SAAS,CAAC,CAAkB;IACzC,MAAM,IAAI,GAAG,CAAC,MAAM,SAAS,CAC3B,GAAG,CAAC,CAAC,MAAM,mBAAmB,EAC9B;QACE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE;QAClE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,CAAC,EAAE,CAAC,CAAC,CAAC;YACN,gBAAgB,EAAE,IAAI;YACtB,UAAU,EAAE,CAAC,CAAC,SAAS;SACxB,CAAC;KACH,EACD,CAAC,CAAC,SAAS,CACZ,CAAmF,CAAC;IACrF,OAAO,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC;SACzB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SACb,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;QACV,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACvC,MAAM,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAClF,CAAC,CAAC;SACD,MAAM,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"grounding.js","sourceRoot":"","sources":["../src/grounding.ts"],"names":[],"mappings":"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"}
|
package/dist/grounding.test.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { describe, it, expect, vi, afterEach } from "vitest";
|
|
2
|
-
import { retrieveContext } from "./grounding.js";
|
|
2
|
+
import { retrieveContext, searchTerms } from "./grounding.js";
|
|
3
3
|
// add-employee-fastpath-cliproxy Phase 2 — Expert RAG grounding.
|
|
4
4
|
const params = {
|
|
5
5
|
apiUrl: "https://agenthub.test",
|
|
@@ -32,7 +32,8 @@ describe("retrieveContext", () => {
|
|
|
32
32
|
vi.stubGlobal("fetch", routeFetch({
|
|
33
33
|
brain: { knowledge: [{ fact: "Drip runs on a 30-min cycle", detail: "per zone", category: "decision" }] },
|
|
34
34
|
intel: { results: [{ snippet: "scheduler.go computes the cycle", path: "server/sched.go", kind: "code" }] },
|
|
35
|
-
|
|
35
|
+
// Code endpoint serializes PascalCase (Go struct, no json tags).
|
|
36
|
+
code: { hits: [{ Snippet: "func NextCycle()", TitleOrSymbol: "NextCycle", Path: "sched.go", Kind: "symbols" }] },
|
|
36
37
|
}));
|
|
37
38
|
const ctx = await retrieveContext(params);
|
|
38
39
|
expect(ctx).toContain("[brain/decision] Drip runs on a 30-min cycle — per zone");
|
|
@@ -62,16 +63,31 @@ describe("retrieveContext", () => {
|
|
|
62
63
|
});
|
|
63
64
|
vi.stubGlobal("fetch", fetchMock);
|
|
64
65
|
await retrieveContext(params);
|
|
66
|
+
// retrieveContext refines "how does drip irrigation scheduling work" →
|
|
67
|
+
// "drip irrigation scheduling work" before querying (keyword endpoints).
|
|
65
68
|
const urls = fetchMock.mock.calls.map((c) => c[0]);
|
|
66
|
-
expect(urls.some((u) => u.includes("/api/brain/knowledge?q=
|
|
69
|
+
expect(urls.some((u) => u.includes("/api/brain/knowledge?q=drip"))).toBe(true);
|
|
67
70
|
expect(urls.some((u) => u.includes("/api/intel/search"))).toBe(true);
|
|
68
|
-
expect(urls.some((u) => u.includes("/api/brain/code/search?q=
|
|
71
|
+
expect(urls.some((u) => u.includes("/api/brain/code/search?q=drip"))).toBe(true);
|
|
69
72
|
const intelCall = fetchMock.mock.calls.find((c) => c[0].includes("/intel/search"));
|
|
70
73
|
const body = JSON.parse(intelCall[1].body);
|
|
71
|
-
expect(body.query).toBe(
|
|
74
|
+
expect(body.query).toBe("drip irrigation scheduling work");
|
|
72
75
|
expect(body.k).toBe(4);
|
|
73
76
|
expect(body.include_snippets).toBe(true);
|
|
74
77
|
});
|
|
78
|
+
});
|
|
79
|
+
describe("searchTerms", () => {
|
|
80
|
+
it("strips question boilerplate + domain noise, keeps order", () => {
|
|
81
|
+
expect(searchTerms("In the AgentHub codebase what does the requireOrg middleware do"))
|
|
82
|
+
.toBe("requireOrg middleware");
|
|
83
|
+
});
|
|
84
|
+
it("keeps identifier tokens and caps to 4 terms", () => {
|
|
85
|
+
expect(searchTerms("what is the employee daemon identity bootstrap and which MCP version"))
|
|
86
|
+
.toBe("employee daemon identity bootstrap");
|
|
87
|
+
});
|
|
88
|
+
it("falls back to the raw query when everything is a stopword", () => {
|
|
89
|
+
expect(searchTerms("what is it")).toBe("what is it");
|
|
90
|
+
});
|
|
75
91
|
it("sends X-Connect-Token (org context) on all three calls when provided", async () => {
|
|
76
92
|
const fetchMock = routeFetch({ brain: { knowledge: [{ fact: "f" }] } });
|
|
77
93
|
vi.stubGlobal("fetch", fetchMock);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grounding.test.js","sourceRoot":"","sources":["../src/grounding.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAwB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"grounding.test.js","sourceRoot":"","sources":["../src/grounding.test.ts"],"names":[],"mappings":"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"}
|