nodebench-mcp 2.70.0 → 3.0.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 +95 -41
- package/dist/agents/alertRouter.d.ts +38 -0
- package/dist/agents/alertRouter.js +151 -0
- package/dist/agents/alertRouter.js.map +1 -0
- package/dist/agents/entityMemory.d.ts +40 -0
- package/dist/agents/entityMemory.js +64 -0
- package/dist/agents/entityMemory.js.map +1 -0
- package/dist/agents/subAgents.d.ts +35 -0
- package/dist/agents/subAgents.js +62 -0
- package/dist/agents/subAgents.js.map +1 -0
- package/dist/benchmarks/benchmarkRunner.js +14 -0
- package/dist/benchmarks/benchmarkRunner.js.map +1 -1
- package/dist/benchmarks/chainEval.js +107 -0
- package/dist/benchmarks/chainEval.js.map +1 -1
- package/dist/benchmarks/llmJudgeEval.js +85 -0
- package/dist/benchmarks/llmJudgeEval.js.map +1 -1
- package/dist/benchmarks/searchQualityEval.js +118 -5
- package/dist/benchmarks/searchQualityEval.js.map +1 -1
- package/dist/cli/search.d.ts +13 -0
- package/dist/cli/search.js +130 -0
- package/dist/cli/search.js.map +1 -0
- package/dist/db.d.ts +6 -2
- package/dist/db.js +470 -3
- package/dist/db.js.map +1 -1
- package/dist/index.js +349 -64
- package/dist/index.js.map +1 -1
- package/dist/profiler/behaviorStore.d.ts +97 -0
- package/dist/profiler/behaviorStore.js +276 -0
- package/dist/profiler/behaviorStore.js.map +1 -0
- package/dist/profiler/eventCollector.d.ts +119 -0
- package/dist/profiler/eventCollector.js +267 -0
- package/dist/profiler/eventCollector.js.map +1 -0
- package/dist/profiler/index.d.ts +15 -0
- package/dist/profiler/index.js +16 -0
- package/dist/profiler/index.js.map +1 -0
- package/dist/profiler/mcpProxy.d.ts +49 -0
- package/dist/profiler/mcpProxy.js +123 -0
- package/dist/profiler/mcpProxy.js.map +1 -0
- package/dist/profiler/modelRouter.d.ts +30 -0
- package/dist/profiler/modelRouter.js +99 -0
- package/dist/profiler/modelRouter.js.map +1 -0
- package/dist/profiler/otelReceiver.d.ts +17 -0
- package/dist/profiler/otelReceiver.js +62 -0
- package/dist/profiler/otelReceiver.js.map +1 -0
- package/dist/profiler/proofEngine.d.ts +41 -0
- package/dist/profiler/proofEngine.js +93 -0
- package/dist/profiler/proofEngine.js.map +1 -0
- package/dist/profiler/workflowTemplates.d.ts +41 -0
- package/dist/profiler/workflowTemplates.js +95 -0
- package/dist/profiler/workflowTemplates.js.map +1 -0
- package/dist/providers/localMemoryProvider.js +3 -2
- package/dist/providers/localMemoryProvider.js.map +1 -1
- package/dist/runtimeConfig.d.ts +11 -0
- package/dist/runtimeConfig.js +27 -0
- package/dist/runtimeConfig.js.map +1 -0
- package/dist/security/auditLog.js +8 -3
- package/dist/security/auditLog.js.map +1 -1
- package/dist/subconscious/blocks.d.ts +43 -0
- package/dist/subconscious/blocks.js +158 -0
- package/dist/subconscious/blocks.js.map +1 -0
- package/dist/subconscious/classifier.d.ts +22 -0
- package/dist/subconscious/classifier.js +118 -0
- package/dist/subconscious/classifier.js.map +1 -0
- package/dist/subconscious/graphEngine.d.ts +65 -0
- package/dist/subconscious/graphEngine.js +234 -0
- package/dist/subconscious/graphEngine.js.map +1 -0
- package/dist/subconscious/index.d.ts +19 -0
- package/dist/subconscious/index.js +20 -0
- package/dist/subconscious/index.js.map +1 -0
- package/dist/subconscious/tools.d.ts +5 -0
- package/dist/subconscious/tools.js +255 -0
- package/dist/subconscious/tools.js.map +1 -0
- package/dist/subconscious/whisperPolicy.d.ts +20 -0
- package/dist/subconscious/whisperPolicy.js +171 -0
- package/dist/subconscious/whisperPolicy.js.map +1 -0
- package/dist/sweep/engine.d.ts +27 -0
- package/dist/sweep/engine.js +244 -0
- package/dist/sweep/engine.js.map +1 -0
- package/dist/sweep/index.d.ts +9 -0
- package/dist/sweep/index.js +8 -0
- package/dist/sweep/index.js.map +1 -0
- package/dist/sweep/sources/github_trending.d.ts +6 -0
- package/dist/sweep/sources/github_trending.js +37 -0
- package/dist/sweep/sources/github_trending.js.map +1 -0
- package/dist/sweep/sources/hackernews.d.ts +7 -0
- package/dist/sweep/sources/hackernews.js +57 -0
- package/dist/sweep/sources/hackernews.js.map +1 -0
- package/dist/sweep/sources/openbb_finance.d.ts +9 -0
- package/dist/sweep/sources/openbb_finance.js +46 -0
- package/dist/sweep/sources/openbb_finance.js.map +1 -0
- package/dist/sweep/sources/producthunt.d.ts +6 -0
- package/dist/sweep/sources/producthunt.js +41 -0
- package/dist/sweep/sources/producthunt.js.map +1 -0
- package/dist/sweep/sources/web_signals.d.ts +7 -0
- package/dist/sweep/sources/web_signals.js +63 -0
- package/dist/sweep/sources/web_signals.js.map +1 -0
- package/dist/sweep/sources/yahoo_finance.d.ts +6 -0
- package/dist/sweep/sources/yahoo_finance.js +47 -0
- package/dist/sweep/sources/yahoo_finance.js.map +1 -0
- package/dist/sweep/types.d.ts +50 -0
- package/dist/sweep/types.js +9 -0
- package/dist/sweep/types.js.map +1 -0
- package/dist/sync/founderEpisodeStore.d.ts +98 -0
- package/dist/sync/founderEpisodeStore.js +230 -0
- package/dist/sync/founderEpisodeStore.js.map +1 -0
- package/dist/sync/hyperloopArchive.d.ts +51 -0
- package/dist/sync/hyperloopArchive.js +153 -0
- package/dist/sync/hyperloopArchive.js.map +1 -0
- package/dist/sync/hyperloopEval.d.ts +123 -0
- package/dist/sync/hyperloopEval.js +389 -0
- package/dist/sync/hyperloopEval.js.map +1 -0
- package/dist/sync/hyperloopEval.test.d.ts +4 -0
- package/dist/sync/hyperloopEval.test.js +60 -0
- package/dist/sync/hyperloopEval.test.js.map +1 -0
- package/dist/sync/protocol.d.ts +172 -0
- package/dist/sync/protocol.js +9 -0
- package/dist/sync/protocol.js.map +1 -0
- package/dist/sync/sessionMemory.d.ts +47 -0
- package/dist/sync/sessionMemory.js +138 -0
- package/dist/sync/sessionMemory.js.map +1 -0
- package/dist/sync/store.d.ts +384 -0
- package/dist/sync/store.js +1435 -0
- package/dist/sync/store.js.map +1 -0
- package/dist/sync/store.test.d.ts +4 -0
- package/dist/sync/store.test.js +43 -0
- package/dist/sync/store.test.js.map +1 -0
- package/dist/sync/syncBridgeClient.d.ts +30 -0
- package/dist/sync/syncBridgeClient.js +172 -0
- package/dist/sync/syncBridgeClient.js.map +1 -0
- package/dist/tools/autonomousDeliveryTools.d.ts +2 -0
- package/dist/tools/autonomousDeliveryTools.js +1104 -0
- package/dist/tools/autonomousDeliveryTools.js.map +1 -0
- package/dist/tools/claudeCodeIngestTools.d.ts +10 -0
- package/dist/tools/claudeCodeIngestTools.js +347 -0
- package/dist/tools/claudeCodeIngestTools.js.map +1 -0
- package/dist/tools/coreWorkflowTools.d.ts +2 -0
- package/dist/tools/coreWorkflowTools.js +488 -0
- package/dist/tools/coreWorkflowTools.js.map +1 -0
- package/dist/tools/deltaTools.d.ts +15 -0
- package/dist/tools/deltaTools.js +1522 -0
- package/dist/tools/deltaTools.js.map +1 -0
- package/dist/tools/entityLookupTools.d.ts +14 -0
- package/dist/tools/entityLookupTools.js +159 -0
- package/dist/tools/entityLookupTools.js.map +1 -0
- package/dist/tools/entityTemporalTools.d.ts +12 -0
- package/dist/tools/entityTemporalTools.js +330 -0
- package/dist/tools/entityTemporalTools.js.map +1 -0
- package/dist/tools/founderLocalPipeline.d.ts +215 -0
- package/dist/tools/founderLocalPipeline.js +1516 -2
- package/dist/tools/founderLocalPipeline.js.map +1 -1
- package/dist/tools/founderOperatingModel.d.ts +120 -0
- package/dist/tools/founderOperatingModel.js +469 -0
- package/dist/tools/founderOperatingModel.js.map +1 -0
- package/dist/tools/founderOperatingModelTools.d.ts +2 -0
- package/dist/tools/founderOperatingModelTools.js +169 -0
- package/dist/tools/founderOperatingModelTools.js.map +1 -0
- package/dist/tools/founderStrategicOpsTools.d.ts +2 -0
- package/dist/tools/founderStrategicOpsTools.js +1310 -0
- package/dist/tools/founderStrategicOpsTools.js.map +1 -0
- package/dist/tools/graphifyTools.d.ts +19 -0
- package/dist/tools/graphifyTools.js +375 -0
- package/dist/tools/graphifyTools.js.map +1 -0
- package/dist/tools/index.d.ts +3 -0
- package/dist/tools/index.js +4 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/monteCarloTools.d.ts +16 -0
- package/dist/tools/monteCarloTools.js +225 -0
- package/dist/tools/monteCarloTools.js.map +1 -0
- package/dist/tools/packetCompilerTools.d.ts +12 -0
- package/dist/tools/packetCompilerTools.js +322 -0
- package/dist/tools/packetCompilerTools.js.map +1 -0
- package/dist/tools/planSynthesisTools.d.ts +15 -0
- package/dist/tools/planSynthesisTools.js +455 -0
- package/dist/tools/planSynthesisTools.js.map +1 -0
- package/dist/tools/profilerTools.d.ts +20 -0
- package/dist/tools/profilerTools.js +364 -0
- package/dist/tools/profilerTools.js.map +1 -0
- package/dist/tools/savingsTools.d.ts +11 -0
- package/dist/tools/savingsTools.js +155 -0
- package/dist/tools/savingsTools.js.map +1 -0
- package/dist/tools/scenarioCompilerTools.d.ts +14 -0
- package/dist/tools/scenarioCompilerTools.js +290 -0
- package/dist/tools/scenarioCompilerTools.js.map +1 -0
- package/dist/tools/sharedContextTools.d.ts +2 -0
- package/dist/tools/sharedContextTools.js +423 -0
- package/dist/tools/sharedContextTools.js.map +1 -0
- package/dist/tools/sitemapTools.d.ts +15 -0
- package/dist/tools/sitemapTools.js +560 -0
- package/dist/tools/sitemapTools.js.map +1 -0
- package/dist/tools/sweepTools.d.ts +9 -0
- package/dist/tools/sweepTools.js +112 -0
- package/dist/tools/sweepTools.js.map +1 -0
- package/dist/tools/syncBridgeTools.d.ts +2 -0
- package/dist/tools/syncBridgeTools.js +258 -0
- package/dist/tools/syncBridgeTools.js.map +1 -0
- package/dist/tools/toolRegistry.js +1216 -49
- package/dist/tools/toolRegistry.js.map +1 -1
- package/dist/tools/workspaceTools.d.ts +19 -0
- package/dist/tools/workspaceTools.js +762 -0
- package/dist/tools/workspaceTools.js.map +1 -0
- package/dist/toolsetRegistry.js +88 -2
- package/dist/toolsetRegistry.js.map +1 -1
- package/package.json +36 -36
- package/rules/nodebench-agentic-reliability.md +32 -0
- package/rules/nodebench-analyst-diagnostic.md +25 -0
- package/rules/nodebench-auto-qa.md +31 -0
- package/rules/nodebench-completion-traceability.md +22 -0
- package/rules/nodebench-flywheel-continuous.md +25 -0
- package/rules/nodebench-pre-release-review.md +24 -0
- package/rules/nodebench-qa-dogfood.md +26 -0
- package/rules/nodebench-scenario-testing.md +30 -0
- package/rules/nodebench-self-direction.md +23 -0
- package/rules/nodebench-self-judge-loop.md +24 -0
- package/scripts/install.sh +215 -0
|
@@ -0,0 +1,488 @@
|
|
|
1
|
+
import { genId } from "../db.js";
|
|
2
|
+
import { entityLookupTools } from "./entityLookupTools.js";
|
|
3
|
+
import { webTools } from "./webTools.js";
|
|
4
|
+
import { reconTools } from "./reconTools.js";
|
|
5
|
+
import { sessionMemoryTools } from "./sessionMemoryTools.js";
|
|
6
|
+
import { createDeltaTools } from "./deltaTools.js";
|
|
7
|
+
function findTool(tools, name) {
|
|
8
|
+
const tool = tools.find((entry) => entry.name === name);
|
|
9
|
+
if (!tool) {
|
|
10
|
+
throw new Error(`Required tool "${name}" is not available.`);
|
|
11
|
+
}
|
|
12
|
+
return tool;
|
|
13
|
+
}
|
|
14
|
+
async function callTool(tools, name, args) {
|
|
15
|
+
return findTool(tools, name).handler(args);
|
|
16
|
+
}
|
|
17
|
+
function unwrapToolResult(result) {
|
|
18
|
+
if (result && typeof result === "object" && Array.isArray(result.content)) {
|
|
19
|
+
const firstText = result.content.find((entry) => entry?.type === "text")?.text;
|
|
20
|
+
if (typeof firstText === "string") {
|
|
21
|
+
try {
|
|
22
|
+
return JSON.parse(firstText);
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return { rawText: firstText };
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
if (result && typeof result === "object") {
|
|
30
|
+
return result;
|
|
31
|
+
}
|
|
32
|
+
return { value: result };
|
|
33
|
+
}
|
|
34
|
+
function toStringArray(values) {
|
|
35
|
+
return [...new Set(values.filter((value) => typeof value === "string" && value.trim().length > 0))];
|
|
36
|
+
}
|
|
37
|
+
function formatBulletList(values, fallback, limit = 6) {
|
|
38
|
+
if (values.length === 0)
|
|
39
|
+
return `- ${fallback}`;
|
|
40
|
+
return values.slice(0, limit).map((value) => `- ${value}`).join("\n");
|
|
41
|
+
}
|
|
42
|
+
function unmeteredCost(reason) {
|
|
43
|
+
return {
|
|
44
|
+
measured: false,
|
|
45
|
+
amountUsd: null,
|
|
46
|
+
currency: "USD",
|
|
47
|
+
reason,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
function createEnvelope(workflow, artifactId, markdown, structuredData, sourcesUsed, latencyMs, actualCost = unmeteredCost("Real provider billing is not wired into the v3 core workflow facade yet.")) {
|
|
51
|
+
return {
|
|
52
|
+
workflow,
|
|
53
|
+
artifactId,
|
|
54
|
+
artifactHandle: `${workflow}:${artifactId}`,
|
|
55
|
+
markdown,
|
|
56
|
+
structuredData,
|
|
57
|
+
sourcesUsed: toStringArray(sourcesUsed),
|
|
58
|
+
latencyMs,
|
|
59
|
+
actualCost,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
function extractSearchSources(results) {
|
|
63
|
+
if (!Array.isArray(results))
|
|
64
|
+
return [];
|
|
65
|
+
return toStringArray(results.map((entry) => entry.url));
|
|
66
|
+
}
|
|
67
|
+
function summarizeContext(text) {
|
|
68
|
+
const normalized = text.replace(/\r\n/g, "\n").trim();
|
|
69
|
+
if (!normalized) {
|
|
70
|
+
return {
|
|
71
|
+
summary: "No context supplied.",
|
|
72
|
+
keyPoints: [],
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
const lines = normalized
|
|
76
|
+
.split("\n")
|
|
77
|
+
.map((line) => line.trim())
|
|
78
|
+
.filter(Boolean);
|
|
79
|
+
const bulletLike = lines
|
|
80
|
+
.map((line) => line.replace(/^[-*]\s*/, "").trim())
|
|
81
|
+
.filter(Boolean);
|
|
82
|
+
const sentences = normalized
|
|
83
|
+
.split(/(?<=[.!?])\s+/)
|
|
84
|
+
.map((line) => line.trim())
|
|
85
|
+
.filter(Boolean);
|
|
86
|
+
const summary = sentences[0] ?? bulletLike[0] ?? normalized.slice(0, 240);
|
|
87
|
+
const keyPoints = [...new Set((bulletLike.length > 0 ? bulletLike : sentences).slice(0, 5))];
|
|
88
|
+
return { summary, keyPoints };
|
|
89
|
+
}
|
|
90
|
+
async function runInvestigation(args) {
|
|
91
|
+
const deltaTools = createDeltaTools();
|
|
92
|
+
const [lookupRaw, knowledgeRaw, diligenceRaw] = await Promise.all([
|
|
93
|
+
callTool(entityLookupTools, "entity_lookup", {
|
|
94
|
+
name: args.subject,
|
|
95
|
+
depth: args.depth === "deep" ? "deep" : args.depth === "quick" ? "quick" : "standard",
|
|
96
|
+
}),
|
|
97
|
+
callTool(reconTools, "search_all_knowledge", {
|
|
98
|
+
query: args.subject,
|
|
99
|
+
limit: 5,
|
|
100
|
+
}),
|
|
101
|
+
callTool(deltaTools, "delta_diligence", {
|
|
102
|
+
entity: args.subject,
|
|
103
|
+
depth: args.depth === "deep" ? "deep" : "quick",
|
|
104
|
+
persona: args.persona ?? "founder",
|
|
105
|
+
focus: args.focus,
|
|
106
|
+
}),
|
|
107
|
+
]);
|
|
108
|
+
const lookup = unwrapToolResult(lookupRaw);
|
|
109
|
+
const knowledge = unwrapToolResult(knowledgeRaw);
|
|
110
|
+
const diligence = unwrapToolResult(diligenceRaw);
|
|
111
|
+
const packet = diligence.packet;
|
|
112
|
+
const facts = Array.isArray(lookup.facts) ? lookup.facts : [];
|
|
113
|
+
const signals = Array.isArray(lookup.signals) ? lookup.signals : [];
|
|
114
|
+
const learnings = Array.isArray(knowledge.learnings) ? knowledge.learnings : [];
|
|
115
|
+
const reconFindings = Array.isArray(knowledge.reconFindings) ? knowledge.reconFindings : [];
|
|
116
|
+
const gaps = Array.isArray(knowledge.gaps) ? knowledge.gaps : [];
|
|
117
|
+
const sourcesUsed = toStringArray([
|
|
118
|
+
...(Array.isArray(lookup.sources) ? lookup.sources : []),
|
|
119
|
+
...reconFindings.map((entry) => entry.sourceUrl),
|
|
120
|
+
]);
|
|
121
|
+
const markdown = [
|
|
122
|
+
`# Investigate: ${args.subject}`,
|
|
123
|
+
"",
|
|
124
|
+
"## Summary",
|
|
125
|
+
lookup.summary ?? packet?.summary ?? `Investigation packet created for ${args.subject}.`,
|
|
126
|
+
"",
|
|
127
|
+
"## Key Facts",
|
|
128
|
+
formatBulletList(facts, "No immediate external facts were available."),
|
|
129
|
+
"",
|
|
130
|
+
"## Signals",
|
|
131
|
+
formatBulletList(signals, "No high-confidence live signals surfaced in the quick pass."),
|
|
132
|
+
"",
|
|
133
|
+
"## Stored Context",
|
|
134
|
+
`- Learnings: ${learnings.length}`,
|
|
135
|
+
`- Recon findings: ${reconFindings.length}`,
|
|
136
|
+
`- Resolved gaps: ${gaps.length}`,
|
|
137
|
+
packet?.id ? `- Packet: ${packet.id}` : "- Packet: not created",
|
|
138
|
+
].join("\n");
|
|
139
|
+
return {
|
|
140
|
+
artifactId: String(packet?.id ?? genId("investigate")),
|
|
141
|
+
markdown,
|
|
142
|
+
structuredData: {
|
|
143
|
+
lookup,
|
|
144
|
+
knowledge,
|
|
145
|
+
packet,
|
|
146
|
+
},
|
|
147
|
+
sourcesUsed,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
export const coreWorkflowTools = [
|
|
151
|
+
{
|
|
152
|
+
name: "investigate",
|
|
153
|
+
description: "Investigate a company, person, or topic and return a concise sourced artifact. This is the default v3 entry point: one ask in, one report-shaped output out.",
|
|
154
|
+
inputSchema: {
|
|
155
|
+
type: "object",
|
|
156
|
+
properties: {
|
|
157
|
+
subject: { type: "string", description: "Company, person, or topic to investigate." },
|
|
158
|
+
depth: { type: "string", enum: ["quick", "standard", "deep"] },
|
|
159
|
+
persona: { type: "string", enum: ["founder", "banker", "researcher", "operator", "ceo"] },
|
|
160
|
+
focus: { type: "string", description: "Optional angle such as pricing, product, or market position." },
|
|
161
|
+
},
|
|
162
|
+
required: ["subject"],
|
|
163
|
+
},
|
|
164
|
+
annotations: { readOnlyHint: true, destructiveHint: false, openWorldHint: true },
|
|
165
|
+
handler: async (args) => {
|
|
166
|
+
const startedAt = Date.now();
|
|
167
|
+
const result = await runInvestigation(args);
|
|
168
|
+
return createEnvelope("investigate", result.artifactId, result.markdown, result.structuredData, result.sourcesUsed, Date.now() - startedAt);
|
|
169
|
+
},
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
name: "compare",
|
|
173
|
+
description: "Compare 2-4 entities using the same report-shaped output. The tool backfills quick diligence packets first so the comparison result is usable immediately.",
|
|
174
|
+
inputSchema: {
|
|
175
|
+
type: "object",
|
|
176
|
+
properties: {
|
|
177
|
+
entities: { type: "array", items: { type: "string" }, minItems: 2, maxItems: 4 },
|
|
178
|
+
metrics: { type: "array", items: { type: "string" } },
|
|
179
|
+
persona: { type: "string", enum: ["founder", "banker", "researcher", "operator", "ceo"] },
|
|
180
|
+
},
|
|
181
|
+
required: ["entities"],
|
|
182
|
+
},
|
|
183
|
+
annotations: { readOnlyHint: true, destructiveHint: false, openWorldHint: true },
|
|
184
|
+
handler: async (args) => {
|
|
185
|
+
const startedAt = Date.now();
|
|
186
|
+
const deltaTools = createDeltaTools();
|
|
187
|
+
const entities = args.entities ?? [];
|
|
188
|
+
const diligencePackets = await Promise.all(entities.map(async (entity) => {
|
|
189
|
+
const result = unwrapToolResult(await callTool(deltaTools, "delta_diligence", {
|
|
190
|
+
entity,
|
|
191
|
+
depth: "quick",
|
|
192
|
+
persona: args.persona ?? "founder",
|
|
193
|
+
}));
|
|
194
|
+
return result.packet;
|
|
195
|
+
}));
|
|
196
|
+
const compareResult = unwrapToolResult(await callTool(deltaTools, "delta_compare", {
|
|
197
|
+
entities,
|
|
198
|
+
metrics: args.metrics,
|
|
199
|
+
persona: args.persona ?? "founder",
|
|
200
|
+
}));
|
|
201
|
+
const packet = compareResult.packet;
|
|
202
|
+
const comparisonGrid = Array.isArray(compareResult.comparisonGrid)
|
|
203
|
+
? compareResult.comparisonGrid
|
|
204
|
+
: [];
|
|
205
|
+
const markdown = [
|
|
206
|
+
`# Compare: ${entities.join(" vs ")}`,
|
|
207
|
+
"",
|
|
208
|
+
"## Metrics",
|
|
209
|
+
formatBulletList(args.metrics ?? ["market position", "strengths", "weaknesses", "recent changes"], "No metrics supplied."),
|
|
210
|
+
"",
|
|
211
|
+
"## Coverage",
|
|
212
|
+
...comparisonGrid.map((entry) => `- ${entry.entity}: ${Array.isArray(entry.metrics) ? entry.metrics.length : 0} comparison rows`),
|
|
213
|
+
"",
|
|
214
|
+
"## Artifacts",
|
|
215
|
+
...diligencePackets.map((entry, index) => `- ${entities[index]} diligence packet: ${String(entry?.id ?? "not created")}`),
|
|
216
|
+
`- Comparison packet: ${String(packet?.id ?? "not created")}`,
|
|
217
|
+
].join("\n");
|
|
218
|
+
return createEnvelope("compare", String(packet?.id ?? genId("compare")), markdown, {
|
|
219
|
+
compare: compareResult,
|
|
220
|
+
diligencePackets,
|
|
221
|
+
}, toStringArray(diligencePackets.map((entry) => entry?.id)), Date.now() - startedAt);
|
|
222
|
+
},
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
name: "track",
|
|
226
|
+
description: "Add, check, remove, or list tracked entities with one workflow tool. The default path optimizes for watched entities that can feed future nudges and brief artifacts.",
|
|
227
|
+
inputSchema: {
|
|
228
|
+
type: "object",
|
|
229
|
+
properties: {
|
|
230
|
+
entity: { type: "string", description: "Entity to track." },
|
|
231
|
+
action: { type: "string", enum: ["add", "check", "remove", "list"], description: "Tracking action. Defaults to add." },
|
|
232
|
+
alertOn: { type: "array", items: { type: "string" } },
|
|
233
|
+
note: { type: "string", description: "Optional note saved alongside the tracking change." },
|
|
234
|
+
},
|
|
235
|
+
},
|
|
236
|
+
annotations: { readOnlyHint: false, destructiveHint: false, openWorldHint: true },
|
|
237
|
+
handler: async (args) => {
|
|
238
|
+
const startedAt = Date.now();
|
|
239
|
+
const deltaTools = createDeltaTools();
|
|
240
|
+
const action = args.action ?? "add";
|
|
241
|
+
const watchResult = unwrapToolResult(await callTool(deltaTools, "delta_watch", {
|
|
242
|
+
action,
|
|
243
|
+
entity: args.entity,
|
|
244
|
+
alert_on: args.alertOn,
|
|
245
|
+
}));
|
|
246
|
+
let searchResult = null;
|
|
247
|
+
if (action === "check" && args.entity) {
|
|
248
|
+
searchResult = unwrapToolResult(await callTool(webTools, "web_search", {
|
|
249
|
+
query: `${args.entity} latest news`,
|
|
250
|
+
maxResults: 5,
|
|
251
|
+
provider: "auto",
|
|
252
|
+
}));
|
|
253
|
+
}
|
|
254
|
+
let noteResult = null;
|
|
255
|
+
if (args.note && args.entity) {
|
|
256
|
+
noteResult = unwrapToolResult(await callTool(sessionMemoryTools, "save_session_note", {
|
|
257
|
+
title: `Tracking ${args.entity}`,
|
|
258
|
+
content: args.note,
|
|
259
|
+
category: "progress",
|
|
260
|
+
tags: ["track", args.entity],
|
|
261
|
+
}));
|
|
262
|
+
}
|
|
263
|
+
const searchSources = extractSearchSources(searchResult?.results);
|
|
264
|
+
const artifactId = noteResult?.filename ??
|
|
265
|
+
(typeof args.entity === "string" ? `watch:${args.entity}` : genId("track"));
|
|
266
|
+
const markdown = [
|
|
267
|
+
`# Track${args.entity ? `: ${args.entity}` : ""}`,
|
|
268
|
+
"",
|
|
269
|
+
`- Action: ${action}`,
|
|
270
|
+
args.entity ? `- Entity: ${args.entity}` : "- Entity: watchlist overview",
|
|
271
|
+
watchResult?.status ? `- Status: ${watchResult.status}` : null,
|
|
272
|
+
Array.isArray(watchResult?.watchlist) ? `- Watchlist count: ${watchResult.watchlist.length}` : null,
|
|
273
|
+
noteResult?.filePath ? `- Note saved: ${noteResult.filePath}` : null,
|
|
274
|
+
"",
|
|
275
|
+
"## Latest Signals",
|
|
276
|
+
...(Array.isArray(searchResult?.results) && searchResult.results.length > 0
|
|
277
|
+
? searchResult.results.slice(0, 5).map((entry) => `- ${entry.title} (${entry.url})`)
|
|
278
|
+
: ["- No live search results were fetched for this action."]),
|
|
279
|
+
]
|
|
280
|
+
.filter((line) => typeof line === "string")
|
|
281
|
+
.join("\n");
|
|
282
|
+
return createEnvelope("track", artifactId, markdown, {
|
|
283
|
+
watch: watchResult,
|
|
284
|
+
search: searchResult,
|
|
285
|
+
note: noteResult,
|
|
286
|
+
}, searchSources, Date.now() - startedAt);
|
|
287
|
+
},
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
name: "summarize",
|
|
291
|
+
description: "Turn raw context into a compact brief with key points and optional persistence. This is the fast human-readable artifact when you do not need a full diligence packet.",
|
|
292
|
+
inputSchema: {
|
|
293
|
+
type: "object",
|
|
294
|
+
properties: {
|
|
295
|
+
title: { type: "string", description: "Artifact title. Defaults to Summary." },
|
|
296
|
+
context: { type: "string", description: "Text to summarize." },
|
|
297
|
+
save: { type: "boolean", description: "Persist the summary into session memory. Defaults to true." },
|
|
298
|
+
},
|
|
299
|
+
required: ["context"],
|
|
300
|
+
},
|
|
301
|
+
annotations: { readOnlyHint: false, destructiveHint: false, openWorldHint: false },
|
|
302
|
+
handler: async (args) => {
|
|
303
|
+
const startedAt = Date.now();
|
|
304
|
+
const title = args.title ?? "Summary";
|
|
305
|
+
const summary = summarizeContext(args.context);
|
|
306
|
+
let noteResult = null;
|
|
307
|
+
if (args.save !== false) {
|
|
308
|
+
noteResult = unwrapToolResult(await callTool(sessionMemoryTools, "save_session_note", {
|
|
309
|
+
title,
|
|
310
|
+
content: [summary.summary, "", ...summary.keyPoints.map((point) => `- ${point}`)].join("\n"),
|
|
311
|
+
category: "progress",
|
|
312
|
+
tags: ["summary"],
|
|
313
|
+
}));
|
|
314
|
+
}
|
|
315
|
+
const markdown = [
|
|
316
|
+
`# ${title}`,
|
|
317
|
+
"",
|
|
318
|
+
"## Summary",
|
|
319
|
+
summary.summary,
|
|
320
|
+
"",
|
|
321
|
+
"## Key Points",
|
|
322
|
+
formatBulletList(summary.keyPoints, "No additional key points extracted."),
|
|
323
|
+
noteResult?.filePath ? `\n## Saved\n- ${noteResult.filePath}` : "",
|
|
324
|
+
]
|
|
325
|
+
.filter(Boolean)
|
|
326
|
+
.join("\n");
|
|
327
|
+
return createEnvelope("summarize", String(noteResult?.filename ?? genId("summary")), markdown, {
|
|
328
|
+
summary,
|
|
329
|
+
note: noteResult,
|
|
330
|
+
}, [], Date.now() - startedAt);
|
|
331
|
+
},
|
|
332
|
+
},
|
|
333
|
+
{
|
|
334
|
+
name: "search",
|
|
335
|
+
description: "Search across live web results and stored NodeBench knowledge in one call. Use this instead of deciding between external search and internal memory first.",
|
|
336
|
+
inputSchema: {
|
|
337
|
+
type: "object",
|
|
338
|
+
properties: {
|
|
339
|
+
query: { type: "string" },
|
|
340
|
+
maxResults: { type: "number" },
|
|
341
|
+
provider: { type: "string", enum: ["auto", "gemini", "openai", "perplexity"] },
|
|
342
|
+
},
|
|
343
|
+
required: ["query"],
|
|
344
|
+
},
|
|
345
|
+
annotations: { readOnlyHint: true, destructiveHint: false, openWorldHint: true },
|
|
346
|
+
handler: async (args) => {
|
|
347
|
+
const startedAt = Date.now();
|
|
348
|
+
const [webRaw, knowledgeRaw] = await Promise.all([
|
|
349
|
+
callTool(webTools, "web_search", {
|
|
350
|
+
query: args.query,
|
|
351
|
+
maxResults: args.maxResults ?? 5,
|
|
352
|
+
provider: args.provider ?? "auto",
|
|
353
|
+
}),
|
|
354
|
+
callTool(reconTools, "search_all_knowledge", {
|
|
355
|
+
query: args.query,
|
|
356
|
+
limit: Math.min(args.maxResults ?? 5, 10),
|
|
357
|
+
}),
|
|
358
|
+
]);
|
|
359
|
+
const web = unwrapToolResult(webRaw);
|
|
360
|
+
const knowledge = unwrapToolResult(knowledgeRaw);
|
|
361
|
+
const results = Array.isArray(web.results) ? web.results : [];
|
|
362
|
+
const learnings = Array.isArray(knowledge.learnings) ? knowledge.learnings : [];
|
|
363
|
+
const reconFindings = Array.isArray(knowledge.reconFindings) ? knowledge.reconFindings : [];
|
|
364
|
+
const markdown = [
|
|
365
|
+
`# Search: ${args.query}`,
|
|
366
|
+
"",
|
|
367
|
+
"## Live Results",
|
|
368
|
+
...(results.length > 0
|
|
369
|
+
? results.slice(0, 5).map((entry) => `- [${entry.title}](${entry.url})${entry.snippet ? ` — ${entry.snippet}` : ""}`)
|
|
370
|
+
: ["- No live provider results."]),
|
|
371
|
+
"",
|
|
372
|
+
"## Stored Context",
|
|
373
|
+
`- Learnings: ${learnings.length}`,
|
|
374
|
+
`- Recon findings: ${reconFindings.length}`,
|
|
375
|
+
].join("\n");
|
|
376
|
+
return createEnvelope("search", genId("search"), markdown, { web, knowledge }, toStringArray([
|
|
377
|
+
...extractSearchSources(results),
|
|
378
|
+
...reconFindings.map((entry) => entry.sourceUrl),
|
|
379
|
+
]), Date.now() - startedAt);
|
|
380
|
+
},
|
|
381
|
+
},
|
|
382
|
+
{
|
|
383
|
+
name: "report",
|
|
384
|
+
description: "Produce a human-readable artifact for either a research topic or a decision. If recommendation inputs are provided, this emits a memo. Otherwise it emits a diligence-style report.",
|
|
385
|
+
inputSchema: {
|
|
386
|
+
type: "object",
|
|
387
|
+
properties: {
|
|
388
|
+
topic: { type: "string", description: "Topic or entity to report on." },
|
|
389
|
+
decision: { type: "string", description: "Decision question for memo mode." },
|
|
390
|
+
recommendation: { type: "string" },
|
|
391
|
+
evidence: { type: "array", items: { type: "string" } },
|
|
392
|
+
risks: { type: "array", items: { type: "string" } },
|
|
393
|
+
alternatives: { type: "array", items: { type: "string" } },
|
|
394
|
+
persona: { type: "string", enum: ["founder", "banker", "researcher", "operator", "ceo"] },
|
|
395
|
+
focus: { type: "string" },
|
|
396
|
+
},
|
|
397
|
+
},
|
|
398
|
+
annotations: { readOnlyHint: false, destructiveHint: false, openWorldHint: true },
|
|
399
|
+
handler: async (args) => {
|
|
400
|
+
const startedAt = Date.now();
|
|
401
|
+
const deltaTools = createDeltaTools();
|
|
402
|
+
const isMemoMode = Boolean(args.decision || args.recommendation || (args.evidence && args.evidence.length > 0));
|
|
403
|
+
if (isMemoMode) {
|
|
404
|
+
const memo = unwrapToolResult(await callTool(deltaTools, "delta_memo", {
|
|
405
|
+
decision: args.decision ?? args.topic ?? "Decision memo",
|
|
406
|
+
recommendation: args.recommendation,
|
|
407
|
+
evidence: args.evidence,
|
|
408
|
+
risks: args.risks,
|
|
409
|
+
alternatives: args.alternatives,
|
|
410
|
+
persona: args.persona ?? "founder",
|
|
411
|
+
}));
|
|
412
|
+
const packet = memo.packet;
|
|
413
|
+
const markdown = [
|
|
414
|
+
`# Memo: ${args.decision ?? args.topic ?? "Decision memo"}`,
|
|
415
|
+
"",
|
|
416
|
+
"## Recommendation",
|
|
417
|
+
args.recommendation ?? "Pending recommendation.",
|
|
418
|
+
"",
|
|
419
|
+
"## Evidence",
|
|
420
|
+
formatBulletList(args.evidence ?? [], "No explicit evidence provided."),
|
|
421
|
+
"",
|
|
422
|
+
"## Risks",
|
|
423
|
+
formatBulletList(args.risks ?? [], "No explicit risks provided."),
|
|
424
|
+
packet?.id ? `\n## Artifact\n- Packet: ${packet.id}` : "",
|
|
425
|
+
]
|
|
426
|
+
.filter(Boolean)
|
|
427
|
+
.join("\n");
|
|
428
|
+
return createEnvelope("report", String(packet?.id ?? genId("report")), markdown, { memo, packet }, args.evidence ?? [], Date.now() - startedAt);
|
|
429
|
+
}
|
|
430
|
+
const subject = args.topic ?? "Untitled report";
|
|
431
|
+
const investigation = await runInvestigation({
|
|
432
|
+
subject,
|
|
433
|
+
depth: "deep",
|
|
434
|
+
persona: args.persona,
|
|
435
|
+
focus: args.focus,
|
|
436
|
+
});
|
|
437
|
+
return createEnvelope("report", investigation.artifactId, investigation.markdown.replace("# Investigate:", "# Report:"), investigation.structuredData, investigation.sourcesUsed, Date.now() - startedAt);
|
|
438
|
+
},
|
|
439
|
+
},
|
|
440
|
+
{
|
|
441
|
+
name: "ask_context",
|
|
442
|
+
description: "Ask against saved NodeBench context first. This searches session memory and the accumulated knowledge base so repeated setup and rediscovery costs stop compounding.",
|
|
443
|
+
inputSchema: {
|
|
444
|
+
type: "object",
|
|
445
|
+
properties: {
|
|
446
|
+
question: { type: "string", description: "Question to ask against saved context." },
|
|
447
|
+
limit: { type: "number", description: "Maximum note/knowledge matches to return." },
|
|
448
|
+
},
|
|
449
|
+
required: ["question"],
|
|
450
|
+
},
|
|
451
|
+
annotations: { readOnlyHint: true, destructiveHint: false, openWorldHint: false },
|
|
452
|
+
handler: async (args) => {
|
|
453
|
+
const startedAt = Date.now();
|
|
454
|
+
const limit = args.limit ?? 5;
|
|
455
|
+
const [notesRaw, knowledgeRaw] = await Promise.all([
|
|
456
|
+
callTool(sessionMemoryTools, "load_session_notes", {
|
|
457
|
+
date: "all",
|
|
458
|
+
keyword: args.question,
|
|
459
|
+
limit,
|
|
460
|
+
includeArchived: true,
|
|
461
|
+
}),
|
|
462
|
+
callTool(reconTools, "search_all_knowledge", {
|
|
463
|
+
query: args.question,
|
|
464
|
+
limit,
|
|
465
|
+
}),
|
|
466
|
+
]);
|
|
467
|
+
const notes = unwrapToolResult(notesRaw);
|
|
468
|
+
const knowledge = unwrapToolResult(knowledgeRaw);
|
|
469
|
+
const noteEntries = Array.isArray(notes.notes) ? notes.notes : [];
|
|
470
|
+
const learnings = Array.isArray(knowledge.learnings) ? knowledge.learnings : [];
|
|
471
|
+
const reconFindings = Array.isArray(knowledge.reconFindings) ? knowledge.reconFindings : [];
|
|
472
|
+
const markdown = [
|
|
473
|
+
`# Ask Context: ${args.question}`,
|
|
474
|
+
"",
|
|
475
|
+
"## Session Notes",
|
|
476
|
+
...(noteEntries.length > 0
|
|
477
|
+
? noteEntries.slice(0, limit).map((entry) => `- ${entry.title ?? entry.filename} (${entry.date ?? "unknown date"})`)
|
|
478
|
+
: ["- No matching session notes."]),
|
|
479
|
+
"",
|
|
480
|
+
"## Knowledge Base",
|
|
481
|
+
`- Learnings: ${learnings.length}`,
|
|
482
|
+
`- Recon findings: ${reconFindings.length}`,
|
|
483
|
+
].join("\n");
|
|
484
|
+
return createEnvelope("ask_context", genId("context"), markdown, { notes, knowledge }, toStringArray(reconFindings.map((entry) => entry.sourceUrl)), Date.now() - startedAt);
|
|
485
|
+
},
|
|
486
|
+
},
|
|
487
|
+
];
|
|
488
|
+
//# sourceMappingURL=coreWorkflowTools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coreWorkflowTools.js","sourceRoot":"","sources":["../../src/tools/coreWorkflowTools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Delta Tools — Operating-intelligence packet tools for NodeBench Delta
|
|
3
|
+
*
|
|
4
|
+
* 8 packet types following banking convention:
|
|
5
|
+
* delta.brief — What changed since last session
|
|
6
|
+
* delta.diligence — Deep entity teardown
|
|
7
|
+
* delta.handoff — Delegation packet for agents/teammates
|
|
8
|
+
* delta.watch — Entities to monitor + alert triggers
|
|
9
|
+
* delta.memo — Decision-ready artifact with evidence
|
|
10
|
+
* delta.scan — Self-diligence market coverage scan
|
|
11
|
+
* delta.compare — Side-by-side entity comparison
|
|
12
|
+
* delta.retain — Context preservation across sessions
|
|
13
|
+
*/
|
|
14
|
+
import type { McpTool } from "../types.js";
|
|
15
|
+
export declare function createDeltaTools(): McpTool[];
|