network-ai 5.14.0 → 5.15.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.
@@ -0,0 +1,266 @@
1
+ "use strict";
2
+ /**
3
+ * MCP Context Tools — signal-over-noise retrieval for MCP agents.
4
+ *
5
+ * Two tools that let any MCP client (Claude Code, Codex, Gemini CLI, Cursor)
6
+ * pull *curated* shared state instead of dumping the whole blackboard into
7
+ * its own context window:
8
+ *
9
+ * - `context_pack` — "give me everything relevant to task X in
10
+ * ≤ N tokens": a token-budgeted, relevance-ranked, position-aware
11
+ * context brief assembled by {@link ContextComposer} from the agent's
12
+ * scoped blackboard snapshot.
13
+ * - `blackboard_search` — ranked top-K search over blackboard entries.
14
+ * Uses a semantic ranker when one is wired (BYOE `SemanticMemory`),
15
+ * falling back to deterministic lexical overlap scoring otherwise —
16
+ * always works out of the box.
17
+ *
18
+ * Implements the same `McpToolProvider` contract as the other tool modules,
19
+ * so it registers directly on `McpCombinedBridge`.
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * const contextTools = new ContextMcpTools({ blackboard });
24
+ * combined.register(contextTools);
25
+ * // MCP client: context_pack { task: "fix the parser bug", budget_tokens: 1500, agent_id: "claude-code" }
26
+ * ```
27
+ *
28
+ * @module mcp-tools-context
29
+ * @version 1.0.0
30
+ */
31
+ Object.defineProperty(exports, "__esModule", { value: true });
32
+ exports.ContextMcpTools = exports.CONTEXT_TOOL_DEFINITIONS = void 0;
33
+ const context_composer_1 = require("./context-composer");
34
+ // ============================================================================
35
+ // TOOL DEFINITIONS
36
+ // ============================================================================
37
+ /** MCP tool definitions for the two context tools. */
38
+ exports.CONTEXT_TOOL_DEFINITIONS = [
39
+ {
40
+ name: 'context_pack',
41
+ description: 'Assemble a token-budgeted, relevance-ranked context brief from the shared blackboard for a given task. ' +
42
+ 'Use this INSTEAD of blackboard_list + many blackboard_read calls: it returns only the entries most relevant ' +
43
+ 'to your task, ranked by semantic/lexical relevance, recency (half-life decay), and namespace affinity, ' +
44
+ 'assembled position-aware (strongest items first and last) under a hard token budget. ' +
45
+ 'Read-only — never modifies the blackboard. Returns {ok:true, text, used_tokens, budget_tokens, utilization, ' +
46
+ 'included:[{key,score,tokens}], excluded:[{key,reason}]}. The `text` field is ready to use as working context. ' +
47
+ 'Entries past their TTL are excluded automatically.',
48
+ inputSchema: {
49
+ type: 'object',
50
+ properties: {
51
+ task: {
52
+ type: 'string',
53
+ description: 'The task or question driving relevance ranking (e.g. "diagnose the failing payment webhook")',
54
+ },
55
+ agent_id: {
56
+ type: 'string',
57
+ description: 'The agent requesting the pack (used for scoped access checks and audit)',
58
+ },
59
+ budget_tokens: {
60
+ type: 'number',
61
+ description: 'Hard token budget for the returned context text (default 2000)',
62
+ },
63
+ scope_tags: {
64
+ type: 'string',
65
+ description: 'Optional comma-separated scope tags for namespace affinity (e.g. "task,analytics")',
66
+ },
67
+ max_items: {
68
+ type: 'number',
69
+ description: 'Optional hard cap on the number of included entries (0 = unlimited)',
70
+ },
71
+ },
72
+ required: ['task', 'agent_id'],
73
+ },
74
+ },
75
+ {
76
+ name: 'blackboard_search',
77
+ description: 'Search the shared blackboard for entries relevant to a query and return the top-K ranked matches. ' +
78
+ 'Use this instead of blackboard_list when you need *relevant* keys rather than *all* keys — it keeps noise ' +
79
+ 'out of your context window. Read-only. Ranks semantically when the server has an embedding provider wired, ' +
80
+ 'otherwise by deterministic lexical overlap (response includes which mode was used). ' +
81
+ 'Returns {ok:true, mode, results:[{key, score, snippet, sourceAgent}], count}. ' +
82
+ 'Follow up with blackboard_read for the full value of a specific key.',
83
+ inputSchema: {
84
+ type: 'object',
85
+ properties: {
86
+ query: {
87
+ type: 'string',
88
+ description: 'Natural-language search query (e.g. "budget decisions for Q3")',
89
+ },
90
+ agent_id: {
91
+ type: 'string',
92
+ description: 'The agent performing the search (used for scoped access checks)',
93
+ },
94
+ top_k: {
95
+ type: 'number',
96
+ description: 'Maximum number of results to return (default 5, max 50)',
97
+ },
98
+ min_score: {
99
+ type: 'number',
100
+ description: 'Minimum relevance score 0-1 (default 0)',
101
+ },
102
+ },
103
+ required: ['query', 'agent_id'],
104
+ },
105
+ },
106
+ ];
107
+ // ============================================================================
108
+ // CONTEXT MCP TOOLS
109
+ // ============================================================================
110
+ /**
111
+ * `McpToolProvider` exposing `context_pack` and `blackboard_search`.
112
+ * Register on a `McpCombinedBridge` alongside the other tool providers.
113
+ */
114
+ class ContextMcpTools {
115
+ blackboard;
116
+ composer;
117
+ ranker;
118
+ semantic;
119
+ defaultBudgetTokens;
120
+ maxBudgetTokens;
121
+ constructor(options) {
122
+ if (!options || !options.blackboard) {
123
+ throw new Error('ContextMcpTools: options.blackboard is required');
124
+ }
125
+ this.blackboard = options.blackboard;
126
+ this.semantic = Boolean(options.memory);
127
+ this.ranker = options.memory ? (0, context_composer_1.createSemanticMemoryRanker)(options.memory) : undefined;
128
+ this.composer = options.composer
129
+ ?? new context_composer_1.ContextComposer(this.ranker ? { ranker: this.ranker } : {});
130
+ this.defaultBudgetTokens = options.defaultBudgetTokens ?? 2000;
131
+ this.maxBudgetTokens = options.maxBudgetTokens ?? 32_000;
132
+ if (this.defaultBudgetTokens <= 0 || this.maxBudgetTokens <= 0) {
133
+ throw new Error('ContextMcpTools: token budgets must be > 0');
134
+ }
135
+ }
136
+ /** Returns the MCP tool definitions provided by this module. */
137
+ getDefinitions() {
138
+ return exports.CONTEXT_TOOL_DEFINITIONS;
139
+ }
140
+ /**
141
+ * Dispatch a tool call by name. All errors are caught and returned as
142
+ * `{ ok: false, error }`.
143
+ */
144
+ async call(toolName, args) {
145
+ try {
146
+ switch (toolName) {
147
+ case 'context_pack': return await this._pack(args);
148
+ case 'blackboard_search': return await this._search(args);
149
+ default:
150
+ return { ok: false, tool: toolName, error: `Unknown tool: "${toolName}"` };
151
+ }
152
+ }
153
+ catch (err) {
154
+ return {
155
+ ok: false,
156
+ tool: toolName,
157
+ error: err instanceof Error ? err.message : String(err),
158
+ };
159
+ }
160
+ }
161
+ // --------------------------------------------------------------------------
162
+ // Tool implementations
163
+ // --------------------------------------------------------------------------
164
+ async _pack(args) {
165
+ const task = this._requireString(args, 'task');
166
+ const agentId = this._requireString(args, 'agent_id');
167
+ const budget = this._clampNumber(args['budget_tokens'], this.defaultBudgetTokens, 1, this.maxBudgetTokens);
168
+ const maxItems = this._clampNumber(args['max_items'], 0, 0, 10_000);
169
+ const scopeTags = typeof args['scope_tags'] === 'string' && args['scope_tags'].trim() !== ''
170
+ ? args['scope_tags'].split(',').map((t) => t.trim()).filter(Boolean)
171
+ : undefined;
172
+ const sources = context_composer_1.ContextComposer.fromSnapshot(this._snapshot(agentId));
173
+ const pack = await this.composer.compose(sources, {
174
+ task,
175
+ budgetTokens: budget,
176
+ ...(scopeTags ? { scopeTags } : {}),
177
+ ...(maxItems > 0 ? { maxItems } : {}),
178
+ });
179
+ return {
180
+ ok: true,
181
+ tool: 'context_pack',
182
+ data: {
183
+ text: pack.text,
184
+ used_tokens: pack.usedTokens,
185
+ budget_tokens: pack.budgetTokens,
186
+ utilization: Number(pack.utilization.toFixed(3)),
187
+ mode: this.semantic ? 'semantic' : 'lexical',
188
+ included: pack.included.map((i) => ({
189
+ key: i.key,
190
+ score: Number(i.score.toFixed(3)),
191
+ tokens: i.tokens,
192
+ })),
193
+ excluded: pack.excluded.map((e) => ({
194
+ key: e.key,
195
+ reason: e.reason,
196
+ ...(e.score !== undefined ? { score: Number(e.score.toFixed(3)) } : {}),
197
+ })),
198
+ },
199
+ };
200
+ }
201
+ async _search(args) {
202
+ const query = this._requireString(args, 'query');
203
+ const agentId = this._requireString(args, 'agent_id');
204
+ const topK = this._clampNumber(args['top_k'], 5, 1, 50);
205
+ const minScore = this._clampNumber(args['min_score'], 0, 0, 1);
206
+ const sources = context_composer_1.ContextComposer.fromSnapshot(this._snapshot(agentId));
207
+ // Rank purely by relevance: reuse the composer with relevance-only
208
+ // weights and an unbounded budget, then take the top-K.
209
+ const ranked = await this.composer.compose(sources, {
210
+ task: query,
211
+ budgetTokens: this.maxBudgetTokens,
212
+ weights: { relevance: 1, recency: 0, affinity: 0 },
213
+ minScore: Math.max(minScore, 0.000_001), // drop zero-relevance items
214
+ positionAware: false,
215
+ });
216
+ const results = ranked.included
217
+ .slice(0, topK)
218
+ .map((i) => ({
219
+ key: i.key,
220
+ score: Number(i.relevance.toFixed(3)),
221
+ snippet: i.text.length > 240 ? `${i.text.slice(0, 240)}…` : i.text,
222
+ ...(i.sourceAgent ? { sourceAgent: i.sourceAgent } : {}),
223
+ }));
224
+ return {
225
+ ok: true,
226
+ tool: 'blackboard_search',
227
+ data: {
228
+ mode: this.semantic ? 'semantic' : 'lexical',
229
+ results,
230
+ count: results.length,
231
+ query_tokens: (0, context_composer_1.estimateTokens)(query),
232
+ },
233
+ };
234
+ }
235
+ // --------------------------------------------------------------------------
236
+ // Helpers
237
+ // --------------------------------------------------------------------------
238
+ _snapshot(agentId) {
239
+ if (this.blackboard.getScopedSnapshot) {
240
+ return this.blackboard.getScopedSnapshot(agentId);
241
+ }
242
+ return this.blackboard.getSnapshot();
243
+ }
244
+ _requireString(args, field) {
245
+ const val = args[field];
246
+ if (typeof val !== 'string' || val.trim() === '') {
247
+ throw new Error(`Missing required field "${field}" (must be a non-empty string)`);
248
+ }
249
+ return val;
250
+ }
251
+ /** Accept number or numeric string; clamp into [min, max]; fall back to a default. */
252
+ _clampNumber(raw, fallback, min, max) {
253
+ let n;
254
+ if (typeof raw === 'number')
255
+ n = raw;
256
+ else if (typeof raw === 'string' && raw.trim() !== '')
257
+ n = Number(raw);
258
+ else
259
+ return fallback;
260
+ if (!Number.isFinite(n))
261
+ return fallback;
262
+ return Math.min(max, Math.max(min, Math.floor(n)));
263
+ }
264
+ }
265
+ exports.ContextMcpTools = ContextMcpTools;
266
+ //# sourceMappingURL=mcp-tools-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-tools-context.js","sourceRoot":"","sources":["../../lib/mcp-tools-context.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "network-ai",
3
- "version": "5.14.0",
3
+ "version": "5.15.0",
4
4
  "description": "AI agent orchestration framework for TypeScript/Node.js - 32 adapters (LangChain, AutoGen, CrewAI, OpenAI Assistants, OpenAI Responses, LlamaIndex, Semantic Kernel, Haystack, DSPy, Agno, MCP, OpenClaw, A2A, Codex, MiniMax, NemoClaw, APS, Copilot, LangGraph, Anthropic Computer Use, Claude Agent SDK, OpenAI Agents SDK, Vertex AI, Gemini, Pydantic AI, Browser Agent, Hermes, Orchestrator, RLM + streaming variants). Built-in CLI, security, swarm intelligence, real-time streaming, and agentic workflow patterns.",
5
5
  "homepage": "https://network-ai.org",
6
6
  "main": "dist/index.js",