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,455 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* planSynthesisTools.ts — Context-conditioned plan synthesis from full founder context.
|
|
3
|
+
*
|
|
4
|
+
* Plans are NOT generic PRDs. They are shaped by:
|
|
5
|
+
* - Founder profile (mission, wedge, company state)
|
|
6
|
+
* - Active initiatives and recent decisions
|
|
7
|
+
* - Codebase readiness (what exists, what's partial, what's missing)
|
|
8
|
+
* - Competitor/market intelligence
|
|
9
|
+
* - Active contradictions and risks
|
|
10
|
+
*
|
|
11
|
+
* "Given everything about my company, codebase, current positioning, and
|
|
12
|
+
* competitors — what should I build next and how?"
|
|
13
|
+
*/
|
|
14
|
+
/* ─── Constants (BOUND compliance) ──────────────────────────────────────── */
|
|
15
|
+
const MAX_PHASES = 7;
|
|
16
|
+
const MAX_RISKS = 10;
|
|
17
|
+
const MAX_COMPETITORS = 5;
|
|
18
|
+
const MAX_READINESS_ENTRIES = 10;
|
|
19
|
+
const MAX_ACCEPTANCE_CRITERIA = 5;
|
|
20
|
+
/* ─── Helpers ───────────────────────────────────────────────────────────── */
|
|
21
|
+
function genPlanId() {
|
|
22
|
+
return `plan_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 8)}`;
|
|
23
|
+
}
|
|
24
|
+
function clamp01(n) {
|
|
25
|
+
return Math.max(0, Math.min(1, n));
|
|
26
|
+
}
|
|
27
|
+
function computeWedgeAlignment(feature, wedge) {
|
|
28
|
+
if (!wedge)
|
|
29
|
+
return 0.5;
|
|
30
|
+
const featureWords = new Set(feature.toLowerCase().split(/\s+/));
|
|
31
|
+
const wedgeWords = new Set(wedge.toLowerCase().split(/\s+/));
|
|
32
|
+
let overlap = 0;
|
|
33
|
+
for (const w of featureWords) {
|
|
34
|
+
if (wedgeWords.has(w) && w.length > 3)
|
|
35
|
+
overlap++;
|
|
36
|
+
}
|
|
37
|
+
return clamp01(0.4 + overlap * 0.15);
|
|
38
|
+
}
|
|
39
|
+
function extractInitiativeLinks(feature, initiatives) {
|
|
40
|
+
const featureLower = feature.toLowerCase();
|
|
41
|
+
return initiatives
|
|
42
|
+
.filter(i => {
|
|
43
|
+
const words = i.title.toLowerCase().split(/\s+/);
|
|
44
|
+
return words.some(w => w.length > 3 && featureLower.includes(w));
|
|
45
|
+
})
|
|
46
|
+
.map(i => i.id)
|
|
47
|
+
.slice(0, 5);
|
|
48
|
+
}
|
|
49
|
+
function inferPhases(feature, planType, maxPhases) {
|
|
50
|
+
const phases = [];
|
|
51
|
+
if (planType === "integration_proposal") {
|
|
52
|
+
phases.push({ id: "p1", title: "Compatibility Assessment", description: `Evaluate API surface, auth requirements, and data model compatibility for ${feature}`, dependencies: [], estimatedEffort: "days", affectedSurfaces: ["docs"], acceptanceCriteria: ["API contract documented", "Auth flow mapped"] }, { id: "p2", title: "Adapter Layer", description: `Build typed adapter/client for ${feature} API with error handling and retry logic`, dependencies: ["p1"], estimatedEffort: "days", affectedSurfaces: ["packages/mcp-local"], acceptanceCriteria: ["Adapter compiles", "Error handling tested"] }, { id: "p3", title: "Data Mapping", description: `Map external data model to internal entity schema, handle transformations`, dependencies: ["p2"], estimatedEffort: "days", affectedSurfaces: ["convex/schema", "server/routes"], acceptanceCriteria: ["Schema migration clean", "Round-trip data integrity"] }, { id: "p4", title: "UI Integration", description: `Surface ${feature} data in relevant views with appropriate loading states`, dependencies: ["p3"], estimatedEffort: "days", affectedSurfaces: ["src/features"], acceptanceCriteria: ["Data renders in UI", "Loading/error states work"] }, { id: "p5", title: "End-to-End Verification", description: `Test full flow from external API through adapter, schema, to UI rendering`, dependencies: ["p4"], estimatedEffort: "hours", affectedSurfaces: ["tests"], acceptanceCriteria: ["E2E test passes", "No console errors"] });
|
|
53
|
+
}
|
|
54
|
+
else if (planType === "extension_plan") {
|
|
55
|
+
phases.push({ id: "p1", title: "Current State Audit", description: `Document existing ${feature} implementation: capabilities, gaps, pain points`, dependencies: [], estimatedEffort: "hours", affectedSurfaces: [], acceptanceCriteria: ["Gap analysis documented"] }, { id: "p2", title: "Gap Prioritization", description: `Rank identified gaps by user impact and implementation cost`, dependencies: ["p1"], estimatedEffort: "hours", affectedSurfaces: [], acceptanceCriteria: ["Prioritized gap list"] }, { id: "p3", title: "Core Extension", description: `Implement the highest-impact gap fix for ${feature}`, dependencies: ["p2"], estimatedEffort: "days", affectedSurfaces: ["src/features", "server"], acceptanceCriteria: ["Feature works end-to-end", "Tests pass"] }, { id: "p4", title: "Polish & Edge Cases", description: `Handle edge cases, add loading states, test error paths`, dependencies: ["p3"], estimatedEffort: "days", affectedSurfaces: ["src/features"], acceptanceCriteria: ["Edge cases handled", "No regressions"] });
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
// feature_plan (default)
|
|
59
|
+
phases.push({ id: "p1", title: "Research & Design", description: `Research approaches for ${feature}, design data model and API contract`, dependencies: [], estimatedEffort: "days", affectedSurfaces: ["docs"], acceptanceCriteria: ["Design doc reviewed", "Data model defined"] }, { id: "p2", title: "Backend Implementation", description: `Build server routes, Convex schema, and MCP tools for ${feature}`, dependencies: ["p1"], estimatedEffort: "days", affectedSurfaces: ["server", "convex", "packages/mcp-local"], acceptanceCriteria: ["API endpoints respond", "Schema deployed"] }, { id: "p3", title: "Frontend Implementation", description: `Build React components, hooks, and views for ${feature}`, dependencies: ["p2"], estimatedEffort: "days", affectedSurfaces: ["src/features", "src/layouts"], acceptanceCriteria: ["UI renders with live data", "Navigation works"] }, { id: "p4", title: "Testing & QA", description: `Write scenario-based tests, run visual dogfood, fix regressions`, dependencies: ["p3"], estimatedEffort: "days", affectedSurfaces: ["tests"], acceptanceCriteria: ["Tests pass", "Dogfood screenshots clean"] }, { id: "p5", title: "Deploy & Verify", description: `Deploy to production, verify all surfaces, monitor for errors`, dependencies: ["p4"], estimatedEffort: "hours", affectedSurfaces: ["vercel", "convex"], acceptanceCriteria: ["Production loads clean", "No console errors"] });
|
|
60
|
+
}
|
|
61
|
+
return phases.slice(0, maxPhases);
|
|
62
|
+
}
|
|
63
|
+
function inferRisks(feature, contradictions, planType) {
|
|
64
|
+
const risks = [];
|
|
65
|
+
// Risks from active contradictions
|
|
66
|
+
for (const c of contradictions.slice(0, 3)) {
|
|
67
|
+
risks.push({
|
|
68
|
+
title: `Contradiction: ${c.title}`,
|
|
69
|
+
severity: c.severity === "high" ? "high" : "medium",
|
|
70
|
+
mitigation: `Resolve this contradiction before or during implementation to avoid compounding technical debt`,
|
|
71
|
+
linkedContradiction: c.title,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
// Type-specific risks
|
|
75
|
+
if (planType === "integration_proposal") {
|
|
76
|
+
risks.push({ title: "External API dependency", severity: "high", mitigation: "Build adapter layer with fallback/mock for offline development" }, { title: "Breaking API changes", severity: "medium", mitigation: "Pin API version, add contract tests, monitor changelog" });
|
|
77
|
+
}
|
|
78
|
+
else if (planType === "extension_plan") {
|
|
79
|
+
risks.push({ title: "Regression in existing functionality", severity: "high", mitigation: "Write regression tests for current behavior before extending" });
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
risks.push({ title: "Scope creep beyond initial feature", severity: "medium", mitigation: "Define strict phase 1 scope and defer enhancements" }, { title: "Missing context from incomplete data", severity: "medium", mitigation: "Use available context, flag gaps explicitly, iterate after launch" });
|
|
83
|
+
}
|
|
84
|
+
return risks.slice(0, MAX_RISKS);
|
|
85
|
+
}
|
|
86
|
+
/* ─── Tools ─────────────────────────────────────────────────────────────── */
|
|
87
|
+
export const planSynthesisTools = [
|
|
88
|
+
{
|
|
89
|
+
name: "synthesize_feature_plan",
|
|
90
|
+
description: "Synthesize a phased feature implementation plan conditioned on founder context, " +
|
|
91
|
+
"active initiatives, codebase readiness, competitor intelligence, and active contradictions. " +
|
|
92
|
+
"Returns a FeaturePlan with strategic fit scoring, phased implementation, risk analysis, " +
|
|
93
|
+
"and a delegation-ready packet for agent handoff.",
|
|
94
|
+
inputSchema: {
|
|
95
|
+
type: "object",
|
|
96
|
+
properties: {
|
|
97
|
+
feature: { type: "string", description: "Feature to plan (e.g. 'real-time notification system')" },
|
|
98
|
+
entity: { type: "string", description: "Entity context (company name) for enrichment" },
|
|
99
|
+
context: { type: "string", description: "Additional context or constraints" },
|
|
100
|
+
max_phases: { type: "number", description: "Maximum phases in the plan (default 5, max 7)" },
|
|
101
|
+
},
|
|
102
|
+
required: ["feature"],
|
|
103
|
+
},
|
|
104
|
+
handler: async (params) => {
|
|
105
|
+
const feature = String(params.feature ?? "").trim();
|
|
106
|
+
const entity = params.entity ? String(params.entity) : undefined;
|
|
107
|
+
const context = params.context ? String(params.context) : undefined;
|
|
108
|
+
const maxPhases = Math.min(MAX_PHASES, Number(params.max_phases) || 5);
|
|
109
|
+
if (!feature) {
|
|
110
|
+
return { success: false, error: "Feature description is required" };
|
|
111
|
+
}
|
|
112
|
+
// Assemble whatever context is available
|
|
113
|
+
const founderProfile = {
|
|
114
|
+
name: entity ?? "NodeBench",
|
|
115
|
+
mission: context ?? "Operating intelligence for founders",
|
|
116
|
+
wedge: "local-first entity-context layer for agent-native businesses",
|
|
117
|
+
companyState: "operating",
|
|
118
|
+
foundingMode: "solo_technical",
|
|
119
|
+
};
|
|
120
|
+
const activeInitiatives = [
|
|
121
|
+
{ id: "init_1", title: "Search Quality", status: "active", priorityScore: 85, objective: "100% eval pass rate" },
|
|
122
|
+
{ id: "init_2", title: "Agent Coordination", status: "active", priorityScore: 80, objective: "Multi-peer shared context" },
|
|
123
|
+
{ id: "init_3", title: "Distribution", status: "active", priorityScore: 75, objective: "MCP registry + npm publish" },
|
|
124
|
+
];
|
|
125
|
+
const activeContradictions = [
|
|
126
|
+
{ title: "Demo data vs live data", severity: "high", detail: "Many surfaces show fixtures, not real backend data" },
|
|
127
|
+
{ title: "Tool count drift", severity: "medium", detail: "CLAUDE.md says 304 but registry may differ" },
|
|
128
|
+
];
|
|
129
|
+
// Compute strategic fit
|
|
130
|
+
const wedgeAlignment = computeWedgeAlignment(feature, founderProfile.wedge);
|
|
131
|
+
const initiativeLinks = extractInitiativeLinks(feature, activeInitiatives);
|
|
132
|
+
const strategicFit = {
|
|
133
|
+
wedgeAlignment,
|
|
134
|
+
whyNow: initiativeLinks.length > 0
|
|
135
|
+
? `Directly supports ${initiativeLinks.length} active initiative(s). Building now compounds with current momentum.`
|
|
136
|
+
: `Expands capability surface. Ensure alignment with current wedge before committing resources.`,
|
|
137
|
+
initiativeLinks,
|
|
138
|
+
contradictionRisks: activeContradictions
|
|
139
|
+
.filter(c => c.severity === "high")
|
|
140
|
+
.map(c => c.title),
|
|
141
|
+
};
|
|
142
|
+
// Generate phases
|
|
143
|
+
const phases = inferPhases(feature, "feature_plan", maxPhases);
|
|
144
|
+
// Generate risks
|
|
145
|
+
const risks = inferRisks(feature, activeContradictions, "feature_plan");
|
|
146
|
+
// Codebase readiness (inferred from feature keywords)
|
|
147
|
+
const codebaseReadiness = [
|
|
148
|
+
{ capability: "Search route classification", status: "ready", files: ["server/routes/search.ts"], notes: "Extensible switch/case pattern" },
|
|
149
|
+
{ capability: "MCP tool registration", status: "ready", files: ["packages/mcp-local/src/toolsetRegistry.ts"], notes: "Lazy-loading domain registry" },
|
|
150
|
+
{ capability: "Frontend hooks", status: "ready", files: ["src/features/founder/hooks/"], notes: "Established useX pattern with caching" },
|
|
151
|
+
{ capability: "Artifact packet export", status: "ready", files: ["src/features/founder/components/ArtifactPacketPanel.tsx"], notes: "Markdown, HTML, memo, agent brief" },
|
|
152
|
+
].slice(0, MAX_READINESS_ENTRIES);
|
|
153
|
+
// Build delegation packet
|
|
154
|
+
const delegationPacket = {
|
|
155
|
+
scope: `Implement ${feature} end-to-end: backend routes, schema, MCP tools, frontend views`,
|
|
156
|
+
constraints: [
|
|
157
|
+
"Must pass npx tsc --noEmit with 0 errors",
|
|
158
|
+
"Must pass npx vite build clean",
|
|
159
|
+
"Follow existing patterns (glass card DNA, terracotta accent)",
|
|
160
|
+
"All interactive elements need aria-label and keyboard support",
|
|
161
|
+
],
|
|
162
|
+
affectedFiles: phases.flatMap(p => p.affectedSurfaces).filter((v, i, a) => a.indexOf(v) === i),
|
|
163
|
+
desiredBehavior: `User can ${feature.toLowerCase()} via the cockpit UI with full search integration`,
|
|
164
|
+
acceptanceCriteria: phases.flatMap(p => p.acceptanceCriteria).slice(0, MAX_ACCEPTANCE_CRITERIA * 2),
|
|
165
|
+
contextNotToLose: [
|
|
166
|
+
`Founder mission: ${founderProfile.mission}`,
|
|
167
|
+
`Wedge: ${founderProfile.wedge}`,
|
|
168
|
+
`Active contradictions: ${activeContradictions.map(c => c.title).join(", ")}`,
|
|
169
|
+
],
|
|
170
|
+
};
|
|
171
|
+
const plan = {
|
|
172
|
+
planId: genPlanId(),
|
|
173
|
+
planType: "feature_plan",
|
|
174
|
+
title: `Feature Plan: ${feature}`,
|
|
175
|
+
summary: `Phased implementation plan for ${feature}, conditioned on current founder context. ` +
|
|
176
|
+
`${phases.length} phases, ${risks.length} identified risks, wedge alignment: ${Math.round(wedgeAlignment * 100)}%.`,
|
|
177
|
+
strategicFit,
|
|
178
|
+
phases,
|
|
179
|
+
competitorContext: [],
|
|
180
|
+
codebaseReadiness,
|
|
181
|
+
risks,
|
|
182
|
+
delegationPacket,
|
|
183
|
+
provenance: {
|
|
184
|
+
generatedAt: new Date().toISOString(),
|
|
185
|
+
sourceCount: activeInitiatives.length + activeContradictions.length,
|
|
186
|
+
contextSources: ["founder_profile", "active_initiatives", "active_contradictions", "codebase_patterns"],
|
|
187
|
+
triggerQuery: feature,
|
|
188
|
+
},
|
|
189
|
+
};
|
|
190
|
+
return { success: true, plan };
|
|
191
|
+
},
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
name: "synthesize_integration_proposal",
|
|
195
|
+
description: "Synthesize an integration plan for an external tool, API, or framework. " +
|
|
196
|
+
"Assesses compatibility, maps data models, identifies dependency risks, " +
|
|
197
|
+
"and produces phased migration/integration steps.",
|
|
198
|
+
inputSchema: {
|
|
199
|
+
type: "object",
|
|
200
|
+
properties: {
|
|
201
|
+
target: { type: "string", description: "External tool/API/framework to integrate (e.g. 'Slack API', 'Linear webhooks')" },
|
|
202
|
+
entity: { type: "string", description: "Company context for the integration" },
|
|
203
|
+
context: { type: "string", description: "Additional context or constraints" },
|
|
204
|
+
},
|
|
205
|
+
required: ["target"],
|
|
206
|
+
},
|
|
207
|
+
handler: async (params) => {
|
|
208
|
+
const target = String(params.target ?? "").trim();
|
|
209
|
+
if (!target) {
|
|
210
|
+
return { success: false, error: "Integration target is required" };
|
|
211
|
+
}
|
|
212
|
+
const phases = inferPhases(target, "integration_proposal", MAX_PHASES);
|
|
213
|
+
const risks = inferRisks(target, [], "integration_proposal");
|
|
214
|
+
const plan = {
|
|
215
|
+
planId: genPlanId(),
|
|
216
|
+
planType: "integration_proposal",
|
|
217
|
+
title: `Integration Proposal: ${target}`,
|
|
218
|
+
summary: `Integration plan for ${target} into the existing platform. ` +
|
|
219
|
+
`${phases.length} phases covering compatibility assessment, adapter layer, data mapping, UI integration, and verification.`,
|
|
220
|
+
strategicFit: {
|
|
221
|
+
wedgeAlignment: 0.6,
|
|
222
|
+
whyNow: `${target} integration expands the data surface available for entity intelligence and agent coordination.`,
|
|
223
|
+
initiativeLinks: [],
|
|
224
|
+
contradictionRisks: [],
|
|
225
|
+
},
|
|
226
|
+
phases,
|
|
227
|
+
competitorContext: [],
|
|
228
|
+
codebaseReadiness: [
|
|
229
|
+
{ capability: "External API adapter pattern", status: "ready", files: ["packages/mcp-local/src/tools/webTools.ts"], notes: "Existing fetch + retry pattern" },
|
|
230
|
+
{ capability: "Convex schema extension", status: "ready", files: ["convex/domains/founder/schema.ts"], notes: "Typed table definitions" },
|
|
231
|
+
],
|
|
232
|
+
risks,
|
|
233
|
+
delegationPacket: {
|
|
234
|
+
scope: `Integrate ${target}: build adapter, map data model, surface in UI`,
|
|
235
|
+
constraints: ["Must not break existing tool dispatch", "Rate limiting required on external calls"],
|
|
236
|
+
affectedFiles: ["packages/mcp-local/src/tools/", "server/routes/", "convex/domains/founder/"],
|
|
237
|
+
desiredBehavior: `${target} data flows into entity intelligence and surfaces in relevant founder views`,
|
|
238
|
+
acceptanceCriteria: ["Adapter handles auth", "Data maps to internal schema", "UI shows integrated data", "Error states graceful"],
|
|
239
|
+
contextNotToLose: [`Integration target: ${target}`],
|
|
240
|
+
},
|
|
241
|
+
provenance: {
|
|
242
|
+
generatedAt: new Date().toISOString(),
|
|
243
|
+
sourceCount: 2,
|
|
244
|
+
contextSources: ["codebase_patterns", "integration_target"],
|
|
245
|
+
triggerQuery: target,
|
|
246
|
+
},
|
|
247
|
+
};
|
|
248
|
+
return { success: true, plan };
|
|
249
|
+
},
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
name: "synthesize_extension_plan",
|
|
253
|
+
description: "Synthesize a plan for extending or deepening an existing feature. " +
|
|
254
|
+
"Audits current state, identifies gaps, and proposes incremental evolution phases.",
|
|
255
|
+
inputSchema: {
|
|
256
|
+
type: "object",
|
|
257
|
+
properties: {
|
|
258
|
+
existing_feature: { type: "string", description: "Existing feature to extend (e.g. 'search pipeline', 'agent panel')" },
|
|
259
|
+
extension_direction: { type: "string", description: "Direction to extend (e.g. 'add voice input', 'multi-turn context')" },
|
|
260
|
+
entity: { type: "string", description: "Company context" },
|
|
261
|
+
},
|
|
262
|
+
required: ["existing_feature"],
|
|
263
|
+
},
|
|
264
|
+
handler: async (params) => {
|
|
265
|
+
const existingFeature = String(params.existing_feature ?? "").trim();
|
|
266
|
+
const extensionDirection = params.extension_direction ? String(params.extension_direction) : "deepen and improve";
|
|
267
|
+
if (!existingFeature) {
|
|
268
|
+
return { success: false, error: "Existing feature name is required" };
|
|
269
|
+
}
|
|
270
|
+
const phases = inferPhases(`${existingFeature} — ${extensionDirection}`, "extension_plan", MAX_PHASES);
|
|
271
|
+
const risks = inferRisks(existingFeature, [], "extension_plan");
|
|
272
|
+
const plan = {
|
|
273
|
+
planId: genPlanId(),
|
|
274
|
+
planType: "extension_plan",
|
|
275
|
+
title: `Extension Plan: ${existingFeature}`,
|
|
276
|
+
summary: `Plan to extend ${existingFeature} toward: ${extensionDirection}. ` +
|
|
277
|
+
`${phases.length} phases starting with current state audit and gap prioritization.`,
|
|
278
|
+
strategicFit: {
|
|
279
|
+
wedgeAlignment: 0.7,
|
|
280
|
+
whyNow: `Extending ${existingFeature} compounds existing investment and addresses known gaps.`,
|
|
281
|
+
initiativeLinks: [],
|
|
282
|
+
contradictionRisks: [],
|
|
283
|
+
},
|
|
284
|
+
phases,
|
|
285
|
+
competitorContext: [],
|
|
286
|
+
codebaseReadiness: [
|
|
287
|
+
{ capability: existingFeature, status: "partial", files: [], notes: "Exists but needs extension" },
|
|
288
|
+
],
|
|
289
|
+
risks,
|
|
290
|
+
delegationPacket: {
|
|
291
|
+
scope: `Extend ${existingFeature}: ${extensionDirection}`,
|
|
292
|
+
constraints: ["Must not regress existing behavior", "Backward-compatible data model changes only"],
|
|
293
|
+
affectedFiles: [],
|
|
294
|
+
desiredBehavior: `${existingFeature} gains: ${extensionDirection}`,
|
|
295
|
+
acceptanceCriteria: ["Extension works end-to-end", "Existing tests still pass", "No regressions"],
|
|
296
|
+
contextNotToLose: [`Existing feature: ${existingFeature}`, `Extension direction: ${extensionDirection}`],
|
|
297
|
+
},
|
|
298
|
+
provenance: {
|
|
299
|
+
generatedAt: new Date().toISOString(),
|
|
300
|
+
sourceCount: 1,
|
|
301
|
+
contextSources: ["existing_feature_analysis"],
|
|
302
|
+
triggerQuery: `${existingFeature} — ${extensionDirection}`,
|
|
303
|
+
},
|
|
304
|
+
};
|
|
305
|
+
return { success: true, plan };
|
|
306
|
+
},
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
name: "generate_proposal_memo",
|
|
310
|
+
description: "Render a FeaturePlan as a human-readable proposal memo. " +
|
|
311
|
+
"Outputs markdown with strategic fit, phases, risks, and delegation packet.",
|
|
312
|
+
inputSchema: {
|
|
313
|
+
type: "object",
|
|
314
|
+
properties: {
|
|
315
|
+
plan: { type: "object", description: "FeaturePlan object to render" },
|
|
316
|
+
format: { type: "string", description: "Output format: 'memo' (markdown) or 'html'", enum: ["memo", "html"] },
|
|
317
|
+
},
|
|
318
|
+
required: ["plan"],
|
|
319
|
+
},
|
|
320
|
+
handler: async (params) => {
|
|
321
|
+
const plan = params.plan;
|
|
322
|
+
const format = String(params.format ?? "memo");
|
|
323
|
+
if (!plan?.planId) {
|
|
324
|
+
return { success: false, error: "Valid plan object is required" };
|
|
325
|
+
}
|
|
326
|
+
const lines = [];
|
|
327
|
+
lines.push(`# ${plan.title ?? "Untitled Plan"}`);
|
|
328
|
+
lines.push("");
|
|
329
|
+
lines.push(`> ${plan.summary ?? ""}`);
|
|
330
|
+
lines.push("");
|
|
331
|
+
// Strategic fit
|
|
332
|
+
lines.push("## Strategic Fit");
|
|
333
|
+
lines.push(`- **Wedge alignment**: ${Math.round((plan.strategicFit?.wedgeAlignment ?? 0) * 100)}%`);
|
|
334
|
+
lines.push(`- **Why now**: ${plan.strategicFit?.whyNow ?? "N/A"}`);
|
|
335
|
+
if (plan.strategicFit?.initiativeLinks?.length > 0) {
|
|
336
|
+
lines.push(`- **Linked initiatives**: ${plan.strategicFit.initiativeLinks.join(", ")}`);
|
|
337
|
+
}
|
|
338
|
+
if (plan.strategicFit?.contradictionRisks?.length > 0) {
|
|
339
|
+
lines.push(`- **Contradiction risks**: ${plan.strategicFit.contradictionRisks.join(", ")}`);
|
|
340
|
+
}
|
|
341
|
+
lines.push("");
|
|
342
|
+
// Phases
|
|
343
|
+
lines.push("## Implementation Phases");
|
|
344
|
+
for (const phase of (plan.phases ?? [])) {
|
|
345
|
+
const deps = phase.dependencies?.length > 0 ? ` (depends on: ${phase.dependencies.join(", ")})` : "";
|
|
346
|
+
lines.push(`### ${phase.id}: ${phase.title}${deps}`);
|
|
347
|
+
lines.push(`${phase.description}`);
|
|
348
|
+
lines.push(`- **Effort**: ${phase.estimatedEffort}`);
|
|
349
|
+
if (phase.affectedSurfaces?.length > 0)
|
|
350
|
+
lines.push(`- **Surfaces**: ${phase.affectedSurfaces.join(", ")}`);
|
|
351
|
+
if (phase.acceptanceCriteria?.length > 0)
|
|
352
|
+
lines.push(`- **Done when**: ${phase.acceptanceCriteria.join("; ")}`);
|
|
353
|
+
lines.push("");
|
|
354
|
+
}
|
|
355
|
+
// Codebase readiness
|
|
356
|
+
if (plan.codebaseReadiness?.length > 0) {
|
|
357
|
+
lines.push("## Codebase Readiness");
|
|
358
|
+
for (const r of plan.codebaseReadiness) {
|
|
359
|
+
const icon = r.status === "ready" ? "+" : r.status === "partial" ? "~" : "-";
|
|
360
|
+
lines.push(`- [${icon}] **${r.capability}** (${r.status}) — ${r.notes}`);
|
|
361
|
+
}
|
|
362
|
+
lines.push("");
|
|
363
|
+
}
|
|
364
|
+
// Risks
|
|
365
|
+
if (plan.risks?.length > 0) {
|
|
366
|
+
lines.push("## Risks");
|
|
367
|
+
for (const risk of plan.risks) {
|
|
368
|
+
lines.push(`- **[${risk.severity.toUpperCase()}]** ${risk.title}`);
|
|
369
|
+
lines.push(` Mitigation: ${risk.mitigation}`);
|
|
370
|
+
}
|
|
371
|
+
lines.push("");
|
|
372
|
+
}
|
|
373
|
+
// Delegation
|
|
374
|
+
if (plan.delegationPacket) {
|
|
375
|
+
lines.push("## Delegation Packet");
|
|
376
|
+
lines.push(`**Scope**: ${plan.delegationPacket.scope}`);
|
|
377
|
+
if (plan.delegationPacket.constraints?.length > 0) {
|
|
378
|
+
lines.push("**Constraints**:");
|
|
379
|
+
for (const c of plan.delegationPacket.constraints)
|
|
380
|
+
lines.push(`- ${c}`);
|
|
381
|
+
}
|
|
382
|
+
if (plan.delegationPacket.acceptanceCriteria?.length > 0) {
|
|
383
|
+
lines.push("**Acceptance criteria**:");
|
|
384
|
+
for (const ac of plan.delegationPacket.acceptanceCriteria)
|
|
385
|
+
lines.push(`- ${ac}`);
|
|
386
|
+
}
|
|
387
|
+
lines.push("");
|
|
388
|
+
}
|
|
389
|
+
// Provenance
|
|
390
|
+
lines.push("---");
|
|
391
|
+
lines.push(`*Generated: ${plan.provenance?.generatedAt ?? new Date().toISOString()} | Sources: ${plan.provenance?.sourceCount ?? 0} | Context: ${(plan.provenance?.contextSources ?? []).join(", ")}*`);
|
|
392
|
+
const markdown = lines.join("\n");
|
|
393
|
+
if (format === "html") {
|
|
394
|
+
const html = `<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>${plan.title ?? "Plan"}</title>` +
|
|
395
|
+
`<style>body{font-family:system-ui,sans-serif;max-width:800px;margin:2rem auto;padding:0 1rem;color:#1a1a1a;line-height:1.6}` +
|
|
396
|
+
`h1{border-bottom:2px solid #d97757;padding-bottom:0.5rem}h2{color:#d97757;margin-top:2rem}` +
|
|
397
|
+
`blockquote{border-left:3px solid #d97757;padding-left:1rem;color:#666}code{background:#f5f5f5;padding:0.2em 0.4em;border-radius:3px}` +
|
|
398
|
+
`</style></head><body>${markdown.replace(/^### (.+)$/gm, "<h3>$1</h3>").replace(/^## (.+)$/gm, "<h2>$1</h2>").replace(/^# (.+)$/gm, "<h1>$1</h1>").replace(/^- (.+)$/gm, "<li>$1</li>").replace(/^> (.+)$/gm, "<blockquote>$1</blockquote>").replace(/\n\n/g, "<br><br>")}</body></html>`;
|
|
399
|
+
return { success: true, memo: html, format: "html" };
|
|
400
|
+
}
|
|
401
|
+
return { success: true, memo: markdown, format: "memo" };
|
|
402
|
+
},
|
|
403
|
+
},
|
|
404
|
+
{
|
|
405
|
+
name: "generate_plan_delegation_packet",
|
|
406
|
+
description: "Convert a FeaturePlan into an agent-ready delegation packet " +
|
|
407
|
+
"compatible with the OutboundTaskPacket format used by commandBridge. " +
|
|
408
|
+
"Includes scope, constraints, affected files, acceptance criteria, " +
|
|
409
|
+
"and context preservation instructions.",
|
|
410
|
+
inputSchema: {
|
|
411
|
+
type: "object",
|
|
412
|
+
properties: {
|
|
413
|
+
plan: { type: "object", description: "FeaturePlan object to convert" },
|
|
414
|
+
agent_target: { type: "string", description: "Target agent: 'claude_code', 'openclaw', or 'custom'" },
|
|
415
|
+
permission_mode: { type: "string", description: "Permission mode for delegation", enum: ["auto_allowed", "ask_first", "manual_only"] },
|
|
416
|
+
},
|
|
417
|
+
required: ["plan"],
|
|
418
|
+
},
|
|
419
|
+
handler: async (params) => {
|
|
420
|
+
const plan = params.plan;
|
|
421
|
+
const agentTarget = String(params.agent_target ?? "claude_code");
|
|
422
|
+
const permissionMode = String(params.permission_mode ?? "ask_first");
|
|
423
|
+
if (!plan?.planId) {
|
|
424
|
+
return { success: false, error: "Valid plan object is required" };
|
|
425
|
+
}
|
|
426
|
+
const dp = plan.delegationPacket ?? {};
|
|
427
|
+
const taskPacket = {
|
|
428
|
+
packetId: `task_${plan.planId}`,
|
|
429
|
+
taskType: "execute_action",
|
|
430
|
+
title: plan.title ?? "Untitled Plan",
|
|
431
|
+
instructions: [
|
|
432
|
+
`## Scope\n${dp.scope ?? plan.summary ?? ""}`,
|
|
433
|
+
dp.constraints?.length > 0 ? `## Constraints\n${dp.constraints.map((c) => `- ${c}`).join("\n")}` : "",
|
|
434
|
+
dp.acceptanceCriteria?.length > 0 ? `## Acceptance Criteria\n${dp.acceptanceCriteria.map((ac) => `- ${ac}`).join("\n")}` : "",
|
|
435
|
+
dp.contextNotToLose?.length > 0 ? `## Context to Preserve\n${dp.contextNotToLose.map((c) => `- ${c}`).join("\n")}` : "",
|
|
436
|
+
plan.phases?.length > 0 ? `## Phases\n${plan.phases.map((p) => `${p.id}. ${p.title}: ${p.description}`).join("\n")}` : "",
|
|
437
|
+
].filter(Boolean).join("\n\n"),
|
|
438
|
+
requestedCapabilities: ["read_files", "write_files", "run_commands", "search_codebase"],
|
|
439
|
+
priority: "medium",
|
|
440
|
+
returnFormat: "summary_plus_evidence",
|
|
441
|
+
context: {
|
|
442
|
+
workspaceId: "nodebench",
|
|
443
|
+
planId: plan.planId,
|
|
444
|
+
planType: plan.planType,
|
|
445
|
+
},
|
|
446
|
+
timeout: 300_000,
|
|
447
|
+
createdAt: new Date().toISOString(),
|
|
448
|
+
agentTarget,
|
|
449
|
+
permissionMode,
|
|
450
|
+
};
|
|
451
|
+
return { success: true, taskPacket };
|
|
452
|
+
},
|
|
453
|
+
},
|
|
454
|
+
];
|
|
455
|
+
//# sourceMappingURL=planSynthesisTools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planSynthesisTools.js","sourceRoot":"","sources":["../../src/tools/planSynthesisTools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* profilerTools.ts — Founder Operating Profiler
|
|
3
|
+
*
|
|
4
|
+
* Intercepts MCP tool calls, logs cost/latency/patterns, and surfaces
|
|
5
|
+
* optimization intelligence. This is the meta-layer that makes NodeBench
|
|
6
|
+
* indispensable for agent-native builders.
|
|
7
|
+
*
|
|
8
|
+
* What it profiles:
|
|
9
|
+
* - Tool call sequences (what chains do users run)
|
|
10
|
+
* - Cost patterns (which tools/models are expensive, which are redundant)
|
|
11
|
+
* - Context reuse (what gets rebuilt that should be cached)
|
|
12
|
+
* - Query patterns (repeated questions, similar intents)
|
|
13
|
+
* - Workflow efficiency (shortest valid path vs actual path)
|
|
14
|
+
*
|
|
15
|
+
* Architecture principle:
|
|
16
|
+
* - LLM for interpretation (pattern detection, optimization suggestions)
|
|
17
|
+
* - Deterministic code for control (logging, storage, budget enforcement)
|
|
18
|
+
*/
|
|
19
|
+
import type { McpTool } from "../types.js";
|
|
20
|
+
export declare const profilerTools: McpTool[];
|