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.
Files changed (214) hide show
  1. package/README.md +95 -41
  2. package/dist/agents/alertRouter.d.ts +38 -0
  3. package/dist/agents/alertRouter.js +151 -0
  4. package/dist/agents/alertRouter.js.map +1 -0
  5. package/dist/agents/entityMemory.d.ts +40 -0
  6. package/dist/agents/entityMemory.js +64 -0
  7. package/dist/agents/entityMemory.js.map +1 -0
  8. package/dist/agents/subAgents.d.ts +35 -0
  9. package/dist/agents/subAgents.js +62 -0
  10. package/dist/agents/subAgents.js.map +1 -0
  11. package/dist/benchmarks/benchmarkRunner.js +14 -0
  12. package/dist/benchmarks/benchmarkRunner.js.map +1 -1
  13. package/dist/benchmarks/chainEval.js +107 -0
  14. package/dist/benchmarks/chainEval.js.map +1 -1
  15. package/dist/benchmarks/llmJudgeEval.js +85 -0
  16. package/dist/benchmarks/llmJudgeEval.js.map +1 -1
  17. package/dist/benchmarks/searchQualityEval.js +118 -5
  18. package/dist/benchmarks/searchQualityEval.js.map +1 -1
  19. package/dist/cli/search.d.ts +13 -0
  20. package/dist/cli/search.js +130 -0
  21. package/dist/cli/search.js.map +1 -0
  22. package/dist/db.d.ts +6 -2
  23. package/dist/db.js +470 -3
  24. package/dist/db.js.map +1 -1
  25. package/dist/index.js +349 -64
  26. package/dist/index.js.map +1 -1
  27. package/dist/profiler/behaviorStore.d.ts +97 -0
  28. package/dist/profiler/behaviorStore.js +276 -0
  29. package/dist/profiler/behaviorStore.js.map +1 -0
  30. package/dist/profiler/eventCollector.d.ts +119 -0
  31. package/dist/profiler/eventCollector.js +267 -0
  32. package/dist/profiler/eventCollector.js.map +1 -0
  33. package/dist/profiler/index.d.ts +15 -0
  34. package/dist/profiler/index.js +16 -0
  35. package/dist/profiler/index.js.map +1 -0
  36. package/dist/profiler/mcpProxy.d.ts +49 -0
  37. package/dist/profiler/mcpProxy.js +123 -0
  38. package/dist/profiler/mcpProxy.js.map +1 -0
  39. package/dist/profiler/modelRouter.d.ts +30 -0
  40. package/dist/profiler/modelRouter.js +99 -0
  41. package/dist/profiler/modelRouter.js.map +1 -0
  42. package/dist/profiler/otelReceiver.d.ts +17 -0
  43. package/dist/profiler/otelReceiver.js +62 -0
  44. package/dist/profiler/otelReceiver.js.map +1 -0
  45. package/dist/profiler/proofEngine.d.ts +41 -0
  46. package/dist/profiler/proofEngine.js +93 -0
  47. package/dist/profiler/proofEngine.js.map +1 -0
  48. package/dist/profiler/workflowTemplates.d.ts +41 -0
  49. package/dist/profiler/workflowTemplates.js +95 -0
  50. package/dist/profiler/workflowTemplates.js.map +1 -0
  51. package/dist/providers/localMemoryProvider.js +3 -2
  52. package/dist/providers/localMemoryProvider.js.map +1 -1
  53. package/dist/runtimeConfig.d.ts +11 -0
  54. package/dist/runtimeConfig.js +27 -0
  55. package/dist/runtimeConfig.js.map +1 -0
  56. package/dist/security/auditLog.js +8 -3
  57. package/dist/security/auditLog.js.map +1 -1
  58. package/dist/subconscious/blocks.d.ts +43 -0
  59. package/dist/subconscious/blocks.js +158 -0
  60. package/dist/subconscious/blocks.js.map +1 -0
  61. package/dist/subconscious/classifier.d.ts +22 -0
  62. package/dist/subconscious/classifier.js +118 -0
  63. package/dist/subconscious/classifier.js.map +1 -0
  64. package/dist/subconscious/graphEngine.d.ts +65 -0
  65. package/dist/subconscious/graphEngine.js +234 -0
  66. package/dist/subconscious/graphEngine.js.map +1 -0
  67. package/dist/subconscious/index.d.ts +19 -0
  68. package/dist/subconscious/index.js +20 -0
  69. package/dist/subconscious/index.js.map +1 -0
  70. package/dist/subconscious/tools.d.ts +5 -0
  71. package/dist/subconscious/tools.js +255 -0
  72. package/dist/subconscious/tools.js.map +1 -0
  73. package/dist/subconscious/whisperPolicy.d.ts +20 -0
  74. package/dist/subconscious/whisperPolicy.js +171 -0
  75. package/dist/subconscious/whisperPolicy.js.map +1 -0
  76. package/dist/sweep/engine.d.ts +27 -0
  77. package/dist/sweep/engine.js +244 -0
  78. package/dist/sweep/engine.js.map +1 -0
  79. package/dist/sweep/index.d.ts +9 -0
  80. package/dist/sweep/index.js +8 -0
  81. package/dist/sweep/index.js.map +1 -0
  82. package/dist/sweep/sources/github_trending.d.ts +6 -0
  83. package/dist/sweep/sources/github_trending.js +37 -0
  84. package/dist/sweep/sources/github_trending.js.map +1 -0
  85. package/dist/sweep/sources/hackernews.d.ts +7 -0
  86. package/dist/sweep/sources/hackernews.js +57 -0
  87. package/dist/sweep/sources/hackernews.js.map +1 -0
  88. package/dist/sweep/sources/openbb_finance.d.ts +9 -0
  89. package/dist/sweep/sources/openbb_finance.js +46 -0
  90. package/dist/sweep/sources/openbb_finance.js.map +1 -0
  91. package/dist/sweep/sources/producthunt.d.ts +6 -0
  92. package/dist/sweep/sources/producthunt.js +41 -0
  93. package/dist/sweep/sources/producthunt.js.map +1 -0
  94. package/dist/sweep/sources/web_signals.d.ts +7 -0
  95. package/dist/sweep/sources/web_signals.js +63 -0
  96. package/dist/sweep/sources/web_signals.js.map +1 -0
  97. package/dist/sweep/sources/yahoo_finance.d.ts +6 -0
  98. package/dist/sweep/sources/yahoo_finance.js +47 -0
  99. package/dist/sweep/sources/yahoo_finance.js.map +1 -0
  100. package/dist/sweep/types.d.ts +50 -0
  101. package/dist/sweep/types.js +9 -0
  102. package/dist/sweep/types.js.map +1 -0
  103. package/dist/sync/founderEpisodeStore.d.ts +98 -0
  104. package/dist/sync/founderEpisodeStore.js +230 -0
  105. package/dist/sync/founderEpisodeStore.js.map +1 -0
  106. package/dist/sync/hyperloopArchive.d.ts +51 -0
  107. package/dist/sync/hyperloopArchive.js +153 -0
  108. package/dist/sync/hyperloopArchive.js.map +1 -0
  109. package/dist/sync/hyperloopEval.d.ts +123 -0
  110. package/dist/sync/hyperloopEval.js +389 -0
  111. package/dist/sync/hyperloopEval.js.map +1 -0
  112. package/dist/sync/hyperloopEval.test.d.ts +4 -0
  113. package/dist/sync/hyperloopEval.test.js +60 -0
  114. package/dist/sync/hyperloopEval.test.js.map +1 -0
  115. package/dist/sync/protocol.d.ts +172 -0
  116. package/dist/sync/protocol.js +9 -0
  117. package/dist/sync/protocol.js.map +1 -0
  118. package/dist/sync/sessionMemory.d.ts +47 -0
  119. package/dist/sync/sessionMemory.js +138 -0
  120. package/dist/sync/sessionMemory.js.map +1 -0
  121. package/dist/sync/store.d.ts +384 -0
  122. package/dist/sync/store.js +1435 -0
  123. package/dist/sync/store.js.map +1 -0
  124. package/dist/sync/store.test.d.ts +4 -0
  125. package/dist/sync/store.test.js +43 -0
  126. package/dist/sync/store.test.js.map +1 -0
  127. package/dist/sync/syncBridgeClient.d.ts +30 -0
  128. package/dist/sync/syncBridgeClient.js +172 -0
  129. package/dist/sync/syncBridgeClient.js.map +1 -0
  130. package/dist/tools/autonomousDeliveryTools.d.ts +2 -0
  131. package/dist/tools/autonomousDeliveryTools.js +1104 -0
  132. package/dist/tools/autonomousDeliveryTools.js.map +1 -0
  133. package/dist/tools/claudeCodeIngestTools.d.ts +10 -0
  134. package/dist/tools/claudeCodeIngestTools.js +347 -0
  135. package/dist/tools/claudeCodeIngestTools.js.map +1 -0
  136. package/dist/tools/coreWorkflowTools.d.ts +2 -0
  137. package/dist/tools/coreWorkflowTools.js +488 -0
  138. package/dist/tools/coreWorkflowTools.js.map +1 -0
  139. package/dist/tools/deltaTools.d.ts +15 -0
  140. package/dist/tools/deltaTools.js +1522 -0
  141. package/dist/tools/deltaTools.js.map +1 -0
  142. package/dist/tools/entityLookupTools.d.ts +14 -0
  143. package/dist/tools/entityLookupTools.js +159 -0
  144. package/dist/tools/entityLookupTools.js.map +1 -0
  145. package/dist/tools/entityTemporalTools.d.ts +12 -0
  146. package/dist/tools/entityTemporalTools.js +330 -0
  147. package/dist/tools/entityTemporalTools.js.map +1 -0
  148. package/dist/tools/founderLocalPipeline.d.ts +215 -0
  149. package/dist/tools/founderLocalPipeline.js +1516 -2
  150. package/dist/tools/founderLocalPipeline.js.map +1 -1
  151. package/dist/tools/founderOperatingModel.d.ts +120 -0
  152. package/dist/tools/founderOperatingModel.js +469 -0
  153. package/dist/tools/founderOperatingModel.js.map +1 -0
  154. package/dist/tools/founderOperatingModelTools.d.ts +2 -0
  155. package/dist/tools/founderOperatingModelTools.js +169 -0
  156. package/dist/tools/founderOperatingModelTools.js.map +1 -0
  157. package/dist/tools/founderStrategicOpsTools.d.ts +2 -0
  158. package/dist/tools/founderStrategicOpsTools.js +1310 -0
  159. package/dist/tools/founderStrategicOpsTools.js.map +1 -0
  160. package/dist/tools/graphifyTools.d.ts +19 -0
  161. package/dist/tools/graphifyTools.js +375 -0
  162. package/dist/tools/graphifyTools.js.map +1 -0
  163. package/dist/tools/index.d.ts +3 -0
  164. package/dist/tools/index.js +4 -0
  165. package/dist/tools/index.js.map +1 -1
  166. package/dist/tools/monteCarloTools.d.ts +16 -0
  167. package/dist/tools/monteCarloTools.js +225 -0
  168. package/dist/tools/monteCarloTools.js.map +1 -0
  169. package/dist/tools/packetCompilerTools.d.ts +12 -0
  170. package/dist/tools/packetCompilerTools.js +322 -0
  171. package/dist/tools/packetCompilerTools.js.map +1 -0
  172. package/dist/tools/planSynthesisTools.d.ts +15 -0
  173. package/dist/tools/planSynthesisTools.js +455 -0
  174. package/dist/tools/planSynthesisTools.js.map +1 -0
  175. package/dist/tools/profilerTools.d.ts +20 -0
  176. package/dist/tools/profilerTools.js +364 -0
  177. package/dist/tools/profilerTools.js.map +1 -0
  178. package/dist/tools/savingsTools.d.ts +11 -0
  179. package/dist/tools/savingsTools.js +155 -0
  180. package/dist/tools/savingsTools.js.map +1 -0
  181. package/dist/tools/scenarioCompilerTools.d.ts +14 -0
  182. package/dist/tools/scenarioCompilerTools.js +290 -0
  183. package/dist/tools/scenarioCompilerTools.js.map +1 -0
  184. package/dist/tools/sharedContextTools.d.ts +2 -0
  185. package/dist/tools/sharedContextTools.js +423 -0
  186. package/dist/tools/sharedContextTools.js.map +1 -0
  187. package/dist/tools/sitemapTools.d.ts +15 -0
  188. package/dist/tools/sitemapTools.js +560 -0
  189. package/dist/tools/sitemapTools.js.map +1 -0
  190. package/dist/tools/sweepTools.d.ts +9 -0
  191. package/dist/tools/sweepTools.js +112 -0
  192. package/dist/tools/sweepTools.js.map +1 -0
  193. package/dist/tools/syncBridgeTools.d.ts +2 -0
  194. package/dist/tools/syncBridgeTools.js +258 -0
  195. package/dist/tools/syncBridgeTools.js.map +1 -0
  196. package/dist/tools/toolRegistry.js +1216 -49
  197. package/dist/tools/toolRegistry.js.map +1 -1
  198. package/dist/tools/workspaceTools.d.ts +19 -0
  199. package/dist/tools/workspaceTools.js +762 -0
  200. package/dist/tools/workspaceTools.js.map +1 -0
  201. package/dist/toolsetRegistry.js +88 -2
  202. package/dist/toolsetRegistry.js.map +1 -1
  203. package/package.json +36 -36
  204. package/rules/nodebench-agentic-reliability.md +32 -0
  205. package/rules/nodebench-analyst-diagnostic.md +25 -0
  206. package/rules/nodebench-auto-qa.md +31 -0
  207. package/rules/nodebench-completion-traceability.md +22 -0
  208. package/rules/nodebench-flywheel-continuous.md +25 -0
  209. package/rules/nodebench-pre-release-review.md +24 -0
  210. package/rules/nodebench-qa-dogfood.md +26 -0
  211. package/rules/nodebench-scenario-testing.md +30 -0
  212. package/rules/nodebench-self-direction.md +23 -0
  213. package/rules/nodebench-self-judge-loop.md +24 -0
  214. 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[];