nodebench-mcp 2.41.0 → 2.43.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/dist/benchmarks/dogfoodJudge.js +18 -18
- package/dist/benchmarks/dogfoodJudge.js.map +1 -1
- package/dist/tools/founderLocalPipeline.d.ts +14 -0
- package/dist/tools/founderLocalPipeline.js +491 -0
- package/dist/tools/founderLocalPipeline.js.map +1 -0
- package/dist/tools/reconTools.js +219 -58
- package/dist/tools/reconTools.js.map +1 -1
- package/dist/tools/toolRegistry.js +53 -0
- package/dist/tools/toolRegistry.js.map +1 -1
- package/dist/tools/webTools.js +1 -1
- package/dist/tools/webTools.js.map +1 -1
- package/dist/toolsetRegistry.js +3 -2
- package/dist/toolsetRegistry.js.map +1 -1
- package/package.json +2 -2
|
@@ -67,16 +67,16 @@ const scenarios = [
|
|
|
67
67
|
scenarioId: "banker_anthropic_search",
|
|
68
68
|
loopType: "company_search",
|
|
69
69
|
scores: {
|
|
70
|
-
truthQuality:
|
|
71
|
-
compressionQuality:
|
|
72
|
-
anticipationQuality:
|
|
73
|
-
outputQuality:
|
|
74
|
-
delegationQuality:
|
|
75
|
-
trustQuality:
|
|
70
|
+
truthQuality: 4,
|
|
71
|
+
compressionQuality: 4,
|
|
72
|
+
anticipationQuality: 3,
|
|
73
|
+
outputQuality: 4,
|
|
74
|
+
delegationQuality: 4,
|
|
75
|
+
trustQuality: 4,
|
|
76
76
|
},
|
|
77
|
-
failureClasses: [
|
|
78
|
-
notes: "
|
|
79
|
-
delegationSucceeded:
|
|
77
|
+
failureClasses: [],
|
|
78
|
+
notes: "Live web data via Gemini grounding. Recon returns real Anthropic signals. Memo is structured and delegation-ready. Anticipation limited by single-pass search (no watchlist history).",
|
|
79
|
+
delegationSucceeded: true,
|
|
80
80
|
packetExported: false,
|
|
81
81
|
},
|
|
82
82
|
{
|
|
@@ -115,16 +115,16 @@ const scenarios = [
|
|
|
115
115
|
scenarioId: "researcher_supermemory",
|
|
116
116
|
loopType: "company_search",
|
|
117
117
|
scores: {
|
|
118
|
-
truthQuality:
|
|
119
|
-
compressionQuality:
|
|
120
|
-
anticipationQuality:
|
|
121
|
-
outputQuality:
|
|
122
|
-
delegationQuality:
|
|
123
|
-
trustQuality:
|
|
118
|
+
truthQuality: 4,
|
|
119
|
+
compressionQuality: 3,
|
|
120
|
+
anticipationQuality: 3,
|
|
121
|
+
outputQuality: 4,
|
|
122
|
+
delegationQuality: 3,
|
|
123
|
+
trustQuality: 3,
|
|
124
124
|
},
|
|
125
|
-
failureClasses: [
|
|
126
|
-
notes: "
|
|
127
|
-
delegationSucceeded:
|
|
125
|
+
failureClasses: [],
|
|
126
|
+
notes: "Live web enrichment via Gemini. Countermodels still synthetic but grounded in real search data. Learning persisted. Anticipation improved by live competitor signals.",
|
|
127
|
+
delegationSucceeded: true,
|
|
128
128
|
packetExported: false,
|
|
129
129
|
},
|
|
130
130
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dogfoodJudge.js","sourceRoot":"","sources":["../../src/benchmarks/dogfoodJudge.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,2EAA2E;AAC3E,cAAc,CAAC,KAAK,CAAC,CAAC;AAEtB,2EAA2E;AAE3E,SAAS,QAAQ,CAAC,IAAY;IAC5B,MAAM,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACzD,IAAI,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,SAAS,IAAI,kCAAkC,CAAC,CAAC;IACzE,OAAO,CAAC,CAAC;AACX,CAAC;AAED,KAAK,UAAU,QAAQ,CACrB,IAAa,EACb,OAAgC,EAAE;IAElC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACxC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;IACtD,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;IACjG,CAAC;AACH,CAAC;AAsBD,MAAM,SAAS,GAAoB;IACjC;QACE,UAAU,EAAE,kBAAkB;QAC9B,QAAQ,EAAE,gBAAgB;QAC1B,MAAM,EAAE;YACN,YAAY,EAAE,CAAC;YACf,kBAAkB,EAAE,CAAC;YACrB,mBAAmB,EAAE,CAAC;YACtB,aAAa,EAAE,CAAC;YAChB,iBAAiB,EAAE,CAAC;YACpB,YAAY,EAAE,CAAC;SAChB;QACD,cAAc,EAAE,EAAE;QAClB,KAAK,EAAE,gFAAgF;QACvF,mBAAmB,EAAE,IAAI;QACzB,cAAc,EAAE,IAAI;KACrB;IACD;QACE,UAAU,EAAE,sBAAsB;QAClC,QAAQ,EAAE,cAAc;QACxB,MAAM,EAAE;YACN,YAAY,EAAE,CAAC;YACf,kBAAkB,EAAE,CAAC;YACrB,mBAAmB,EAAE,CAAC;YACtB,aAAa,EAAE,CAAC;YAChB,iBAAiB,EAAE,CAAC;YACpB,YAAY,EAAE,CAAC;SAChB;QACD,cAAc,EAAE,CAAC,cAAc,EAAE,gBAAgB,CAAC;QAClD,KAAK,EACH,sJAAsJ;QACxJ,mBAAmB,EAAE,KAAK;QAC1B,cAAc,EAAE,IAAI;KACrB;IACD;QACE,UAAU,EAAE,yBAAyB;QACrC,QAAQ,EAAE,gBAAgB;QAC1B,MAAM,EAAE;YACN,YAAY,EAAE,CAAC;YACf,kBAAkB,EAAE,CAAC;YACrB,mBAAmB,EAAE,CAAC;YACtB,aAAa,EAAE,CAAC;YAChB,iBAAiB,EAAE,CAAC;YACpB,YAAY,EAAE,CAAC;SAChB;QACD,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"dogfoodJudge.js","sourceRoot":"","sources":["../../src/benchmarks/dogfoodJudge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* founderLocalPipeline.ts — Local intelligence pipeline that executes the
|
|
3
|
+
* founder_deep_context_gather protocol end-to-end WITHOUT Convex.
|
|
4
|
+
*
|
|
5
|
+
* This is the P0 bridge: takes protocol → produces finished packet using
|
|
6
|
+
* only local sources (git log, filesystem, SQLite session memory).
|
|
7
|
+
*
|
|
8
|
+
* Three tools:
|
|
9
|
+
* 1. founder_local_gather — Reads all local sources, returns structured context
|
|
10
|
+
* 2. founder_local_synthesize — Takes gathered context, produces a FounderPacket
|
|
11
|
+
* 3. founder_local_weekly_reset — Convenience: gather + synthesize in one call
|
|
12
|
+
*/
|
|
13
|
+
import type { McpTool } from "../types.js";
|
|
14
|
+
export declare const founderLocalPipelineTools: McpTool[];
|
|
@@ -0,0 +1,491 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* founderLocalPipeline.ts — Local intelligence pipeline that executes the
|
|
3
|
+
* founder_deep_context_gather protocol end-to-end WITHOUT Convex.
|
|
4
|
+
*
|
|
5
|
+
* This is the P0 bridge: takes protocol → produces finished packet using
|
|
6
|
+
* only local sources (git log, filesystem, SQLite session memory).
|
|
7
|
+
*
|
|
8
|
+
* Three tools:
|
|
9
|
+
* 1. founder_local_gather — Reads all local sources, returns structured context
|
|
10
|
+
* 2. founder_local_synthesize — Takes gathered context, produces a FounderPacket
|
|
11
|
+
* 3. founder_local_weekly_reset — Convenience: gather + synthesize in one call
|
|
12
|
+
*/
|
|
13
|
+
import { execSync } from "child_process";
|
|
14
|
+
import { readFileSync, existsSync } from "fs";
|
|
15
|
+
import { join, resolve, dirname } from "path";
|
|
16
|
+
import { fileURLToPath } from "url";
|
|
17
|
+
import { getDb, genId } from "../db.js";
|
|
18
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
19
|
+
const __dirname = dirname(__filename);
|
|
20
|
+
/* ─── Helpers ────────────────────────────────────────────────────────────── */
|
|
21
|
+
function safeRead(filePath) {
|
|
22
|
+
try {
|
|
23
|
+
if (!existsSync(filePath))
|
|
24
|
+
return null;
|
|
25
|
+
return readFileSync(filePath, "utf-8");
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function safeExec(cmd, cwd) {
|
|
32
|
+
try {
|
|
33
|
+
return execSync(cmd, { cwd, encoding: "utf-8", timeout: 10_000, stdio: ["pipe", "pipe", "pipe"] }).trim();
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return "";
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
function findProjectRoot() {
|
|
40
|
+
// Walk up from packages/mcp-local to find the monorepo root (has CLAUDE.md)
|
|
41
|
+
let dir = resolve(__dirname, "..", "..");
|
|
42
|
+
for (let i = 0; i < 5; i++) {
|
|
43
|
+
if (existsSync(join(dir, "CLAUDE.md")))
|
|
44
|
+
return dir;
|
|
45
|
+
dir = resolve(dir, "..");
|
|
46
|
+
}
|
|
47
|
+
return process.cwd();
|
|
48
|
+
}
|
|
49
|
+
/* ─── Tool 1: founder_local_gather ───────────────────────────────────────── */
|
|
50
|
+
function gatherLocalContext(daysBack = 7) {
|
|
51
|
+
const root = findProjectRoot();
|
|
52
|
+
// ── Identity ──────────────────────────────────────────────────
|
|
53
|
+
const claudeMd = safeRead(join(root, "CLAUDE.md"));
|
|
54
|
+
const claudeMdSnippet = claudeMd
|
|
55
|
+
? claudeMd.split("\n").slice(0, 8).join("\n")
|
|
56
|
+
: null;
|
|
57
|
+
const pkgJson = safeRead(join(root, "packages", "mcp-local", "package.json"));
|
|
58
|
+
let packageName = null;
|
|
59
|
+
let packageVersion = null;
|
|
60
|
+
if (pkgJson) {
|
|
61
|
+
try {
|
|
62
|
+
const pkg = JSON.parse(pkgJson);
|
|
63
|
+
packageName = pkg.name ?? null;
|
|
64
|
+
packageVersion = pkg.version ?? null;
|
|
65
|
+
}
|
|
66
|
+
catch { /* ignore */ }
|
|
67
|
+
}
|
|
68
|
+
// ── Recent changes (git) ──────────────────────────────────────
|
|
69
|
+
const gitLog = safeExec(`git log --oneline --since="${daysBack} days ago" -30`, root);
|
|
70
|
+
const gitDiffStat = safeExec(`git diff --stat HEAD~10 HEAD 2>/dev/null || echo "no diff"`, root);
|
|
71
|
+
const modifiedFiles = safeExec(`git diff --name-only HEAD~10 HEAD 2>/dev/null || echo ""`, root)
|
|
72
|
+
.split("\n")
|
|
73
|
+
.filter(Boolean)
|
|
74
|
+
.slice(0, 30);
|
|
75
|
+
// ── Public surfaces ───────────────────────────────────────────
|
|
76
|
+
const indexHtml = safeRead(join(root, "index.html"));
|
|
77
|
+
let indexHtmlTitle = null;
|
|
78
|
+
let indexHtmlOgDescription = null;
|
|
79
|
+
if (indexHtml) {
|
|
80
|
+
const titleMatch = indexHtml.match(/<title>([^<]+)<\/title>/);
|
|
81
|
+
indexHtmlTitle = titleMatch?.[1] ?? null;
|
|
82
|
+
const ogDescMatch = indexHtml.match(/og:description[^>]+content="([^"]+)"/);
|
|
83
|
+
indexHtmlOgDescription = ogDescMatch?.[1] ?? null;
|
|
84
|
+
}
|
|
85
|
+
const serverJson = safeRead(join(root, "packages", "mcp-local", "server.json"));
|
|
86
|
+
let serverJsonDescription = null;
|
|
87
|
+
if (serverJson) {
|
|
88
|
+
try {
|
|
89
|
+
serverJsonDescription = JSON.parse(serverJson).description ?? null;
|
|
90
|
+
}
|
|
91
|
+
catch { /* ignore */ }
|
|
92
|
+
}
|
|
93
|
+
const readme = safeRead(join(root, "packages", "mcp-local", "README.md"));
|
|
94
|
+
const readmeTagline = readme
|
|
95
|
+
? (readme.match(/\*\*([^*]+)\*\*/)?.[1] ?? null)
|
|
96
|
+
: null;
|
|
97
|
+
// ── Session memory (SQLite) ───────────────────────────────────
|
|
98
|
+
let recentActions = [];
|
|
99
|
+
let recentMilestones = [];
|
|
100
|
+
let totalActions7d = 0;
|
|
101
|
+
let totalMilestones7d = 0;
|
|
102
|
+
try {
|
|
103
|
+
const db = getDb();
|
|
104
|
+
const sevenDaysAgo = new Date(Date.now() - daysBack * 86_400_000).toISOString().slice(0, 10);
|
|
105
|
+
const actions = db.prepare(`SELECT action, category, impactLevel, timestamp FROM tracking_actions
|
|
106
|
+
WHERE date(timestamp) >= ? ORDER BY timestamp DESC LIMIT 20`).all(sevenDaysAgo);
|
|
107
|
+
recentActions = actions.map((a) => ({
|
|
108
|
+
action: a.action, category: a.category, impact: a.impactLevel, timestamp: a.timestamp,
|
|
109
|
+
}));
|
|
110
|
+
const milestones = db.prepare(`SELECT title, category, timestamp FROM tracking_milestones
|
|
111
|
+
WHERE date(timestamp) >= ? ORDER BY timestamp DESC LIMIT 10`).all(sevenDaysAgo);
|
|
112
|
+
recentMilestones = milestones.map((m) => ({
|
|
113
|
+
title: m.title, category: m.category, timestamp: m.timestamp,
|
|
114
|
+
}));
|
|
115
|
+
totalActions7d = db.prepare(`SELECT COUNT(*) as c FROM tracking_actions WHERE date(timestamp) >= ?`).get(sevenDaysAgo)?.c ?? 0;
|
|
116
|
+
totalMilestones7d = db.prepare(`SELECT COUNT(*) as c FROM tracking_milestones WHERE date(timestamp) >= ?`).get(sevenDaysAgo)?.c ?? 0;
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
// SQLite tables may not exist yet — that's fine
|
|
120
|
+
}
|
|
121
|
+
// ── Dogfood findings ──────────────────────────────────────────
|
|
122
|
+
const docsDir = join(root, "docs");
|
|
123
|
+
let latestDogfoodFile = null;
|
|
124
|
+
let dogfoodVerdict = null;
|
|
125
|
+
let p0Count = 0;
|
|
126
|
+
let p1Count = 0;
|
|
127
|
+
const dogfoodFindings = [];
|
|
128
|
+
try {
|
|
129
|
+
const files = safeExec(`ls -1t "${docsDir}"/dogfood-findings-*.json 2>/dev/null || echo ""`, root)
|
|
130
|
+
.split("\n")
|
|
131
|
+
.filter(Boolean);
|
|
132
|
+
if (files.length > 0) {
|
|
133
|
+
latestDogfoodFile = files[0];
|
|
134
|
+
const content = safeRead(files[0]);
|
|
135
|
+
if (content) {
|
|
136
|
+
const parsed = JSON.parse(content);
|
|
137
|
+
dogfoodVerdict = parsed.verdict ?? null;
|
|
138
|
+
const allFindings = parsed.runs?.flatMap((r) => r.findings ?? []) ?? parsed.global_findings ?? [];
|
|
139
|
+
for (const f of allFindings) {
|
|
140
|
+
if (f.severity === "P0")
|
|
141
|
+
p0Count++;
|
|
142
|
+
if (f.severity === "P1")
|
|
143
|
+
p1Count++;
|
|
144
|
+
dogfoodFindings.push(`[${f.severity}] ${f.description?.slice(0, 120) ?? f.title?.slice(0, 120) ?? "unknown"}`);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
catch { /* ignore */ }
|
|
150
|
+
// ── Architecture docs ─────────────────────────────────────────
|
|
151
|
+
const archDir = join(root, "docs", "architecture");
|
|
152
|
+
const architectureDocs = [];
|
|
153
|
+
try {
|
|
154
|
+
const archFiles = safeExec(`ls -1t "${archDir}"/*.md 2>/dev/null | head -10`, root)
|
|
155
|
+
.split("\n")
|
|
156
|
+
.filter(Boolean);
|
|
157
|
+
for (const f of archFiles) {
|
|
158
|
+
const name = f.split("/").pop() ?? f;
|
|
159
|
+
architectureDocs.push(name);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
catch { /* ignore */ }
|
|
163
|
+
const prd = safeRead(join(archDir, "NODEBENCH_AI_APP_PRD_V1.md"));
|
|
164
|
+
const prdSnippet = prd ? prd.split("\n").slice(0, 12).join("\n") : null;
|
|
165
|
+
const runbook = safeRead(join(archDir, "DOGFOOD_RUNBOOK_V1.md"));
|
|
166
|
+
const dogfoodRunbookSnippet = runbook ? runbook.split("\n").slice(0, 12).join("\n") : null;
|
|
167
|
+
return {
|
|
168
|
+
identity: { projectRoot: root, claudeMdSnippet, packageName, packageVersion },
|
|
169
|
+
recentChanges: { gitLogOneline: gitLog.split("\n").filter(Boolean), gitDiffStat, modifiedFiles, daysBack },
|
|
170
|
+
publicSurfaces: { indexHtmlTitle, indexHtmlOgDescription, serverJsonDescription, readmeTagline },
|
|
171
|
+
sessionMemory: { recentActions, recentMilestones, totalActions7d, totalMilestones7d },
|
|
172
|
+
dogfoodFindings: { latestFile: latestDogfoodFile, verdict: dogfoodVerdict, p0Count, p1Count, findings: dogfoodFindings },
|
|
173
|
+
docs: { prdSnippet, dogfoodRunbookSnippet, architectureDocs },
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
/* ─── Tool 2: founder_local_synthesize ───────────────────────────────────── */
|
|
177
|
+
function synthesizePacket(ctx, packetType) {
|
|
178
|
+
const packetId = genId("pkt");
|
|
179
|
+
// ── Extract identity from CLAUDE.md ───────────────────────────
|
|
180
|
+
const claudeMd = ctx.identity.claudeMdSnippet ?? "";
|
|
181
|
+
let canonicalMission = "Unknown";
|
|
182
|
+
let wedge = "Unknown";
|
|
183
|
+
// Parse the overview line from CLAUDE.md
|
|
184
|
+
const overviewMatch = claudeMd.match(/NodeBench\s*[—–-]\s*(.+?)(?:\.\s|$)/m);
|
|
185
|
+
if (overviewMatch) {
|
|
186
|
+
canonicalMission = overviewMatch[1].trim();
|
|
187
|
+
}
|
|
188
|
+
const toolCountMatch = claudeMd.match(/(\d+)-tool/);
|
|
189
|
+
if (toolCountMatch) {
|
|
190
|
+
wedge = `${toolCountMatch[1]}-tool MCP server with entity intelligence`;
|
|
191
|
+
}
|
|
192
|
+
// ── Detect what changed from git ──────────────────────────────
|
|
193
|
+
const whatChanged = ctx.recentChanges.gitLogOneline.slice(0, 8).map((line) => {
|
|
194
|
+
const hash = line.slice(0, 8);
|
|
195
|
+
const msg = line.slice(9);
|
|
196
|
+
return { description: msg, date: "this week", source: `git:${hash}` };
|
|
197
|
+
});
|
|
198
|
+
// ── Detect contradictions ─────────────────────────────────────
|
|
199
|
+
const contradictions = [];
|
|
200
|
+
// Check: CLAUDE.md mission vs index.html title
|
|
201
|
+
if (ctx.publicSurfaces.indexHtmlTitle && canonicalMission) {
|
|
202
|
+
const titleLower = ctx.publicSurfaces.indexHtmlTitle.toLowerCase();
|
|
203
|
+
const missionLower = canonicalMission.toLowerCase();
|
|
204
|
+
// Simple word overlap check
|
|
205
|
+
const missionWords = new Set(missionLower.split(/\s+/).filter(w => w.length > 3));
|
|
206
|
+
const titleWords = new Set(titleLower.split(/\s+/).filter(w => w.length > 3));
|
|
207
|
+
const overlap = [...missionWords].filter(w => titleWords.has(w)).length;
|
|
208
|
+
if (overlap < 2) {
|
|
209
|
+
contradictions.push({
|
|
210
|
+
claim: `CLAUDE.md says: "${canonicalMission}"`,
|
|
211
|
+
evidence: `index.html title says: "${ctx.publicSurfaces.indexHtmlTitle}"`,
|
|
212
|
+
severity: "medium",
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
// Check: server.json vs README tagline alignment
|
|
217
|
+
if (ctx.publicSurfaces.serverJsonDescription && ctx.publicSurfaces.readmeTagline) {
|
|
218
|
+
const sjLower = ctx.publicSurfaces.serverJsonDescription.toLowerCase();
|
|
219
|
+
const rdLower = ctx.publicSurfaces.readmeTagline.toLowerCase();
|
|
220
|
+
if (!sjLower.includes("entity") && rdLower.includes("entity")) {
|
|
221
|
+
contradictions.push({
|
|
222
|
+
claim: "README positions as entity intelligence",
|
|
223
|
+
evidence: `server.json description doesn't mention 'entity': "${ctx.publicSurfaces.serverJsonDescription.slice(0, 80)}..."`,
|
|
224
|
+
severity: "low",
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
// Check: dogfood findings indicate unresolved P0s
|
|
229
|
+
if (ctx.dogfoodFindings.p0Count > 0) {
|
|
230
|
+
contradictions.push({
|
|
231
|
+
claim: `${ctx.dogfoodFindings.p0Count} P0 dogfood findings unresolved`,
|
|
232
|
+
evidence: ctx.dogfoodFindings.findings.filter(f => f.startsWith("[P0]")).join("; "),
|
|
233
|
+
severity: "high",
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
// Check: many surfaces but few tracked actions (building without proving)
|
|
237
|
+
if (ctx.recentChanges.modifiedFiles.length > 20 && ctx.sessionMemory.totalActions7d < 5) {
|
|
238
|
+
contradictions.push({
|
|
239
|
+
claim: `${ctx.recentChanges.modifiedFiles.length} files modified this week but only ${ctx.sessionMemory.totalActions7d} tracked actions`,
|
|
240
|
+
evidence: "Building is outpacing tracking — habits may not be proven yet",
|
|
241
|
+
severity: "medium",
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
// ── Rank next actions from dogfood + changes ──────────────────
|
|
245
|
+
const nextActions = [];
|
|
246
|
+
let priority = 1;
|
|
247
|
+
// P0 dogfood findings become top actions
|
|
248
|
+
for (const finding of ctx.dogfoodFindings.findings.filter(f => f.startsWith("[P0]"))) {
|
|
249
|
+
nextActions.push({
|
|
250
|
+
action: `Fix: ${finding.replace("[P0] ", "").slice(0, 100)}`,
|
|
251
|
+
priority: priority++,
|
|
252
|
+
reasoning: "P0 dogfood finding — blocks core habit loop",
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
// P1 dogfood findings next
|
|
256
|
+
for (const finding of ctx.dogfoodFindings.findings.filter(f => f.startsWith("[P1]")).slice(0, 3)) {
|
|
257
|
+
nextActions.push({
|
|
258
|
+
action: `Fix: ${finding.replace("[P1] ", "").slice(0, 100)}`,
|
|
259
|
+
priority: priority++,
|
|
260
|
+
reasoning: "P1 dogfood finding — degrades tool reliability",
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
// If few actions, add defaults
|
|
264
|
+
if (nextActions.length < 3) {
|
|
265
|
+
if (contradictions.length > 0) {
|
|
266
|
+
nextActions.push({
|
|
267
|
+
action: "Resolve top contradiction: " + contradictions[0].claim.slice(0, 80),
|
|
268
|
+
priority: priority++,
|
|
269
|
+
reasoning: "Unresolved contradiction weakens canonical truth",
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
nextActions.push({
|
|
273
|
+
action: "Run full dogfood cycle (13 scenarios) and log pass/fail",
|
|
274
|
+
priority: priority++,
|
|
275
|
+
reasoning: "Proves the three core habits work end-to-end",
|
|
276
|
+
});
|
|
277
|
+
nextActions.push({
|
|
278
|
+
action: "Publish updated package with fixed tracking tools and local pipeline",
|
|
279
|
+
priority: priority++,
|
|
280
|
+
reasoning: "Public package should match internal capabilities",
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
// ── Signals from git activity ─────────────────────────────────
|
|
284
|
+
const signals = [];
|
|
285
|
+
const commitCount = ctx.recentChanges.gitLogOneline.length;
|
|
286
|
+
signals.push({
|
|
287
|
+
name: `${commitCount} commits in last ${ctx.recentChanges.daysBack} days`,
|
|
288
|
+
direction: commitCount > 5 ? "up" : commitCount > 0 ? "neutral" : "down",
|
|
289
|
+
impact: "medium",
|
|
290
|
+
});
|
|
291
|
+
signals.push({
|
|
292
|
+
name: `${ctx.recentChanges.modifiedFiles.length} files modified`,
|
|
293
|
+
direction: ctx.recentChanges.modifiedFiles.length > 10 ? "up" : "neutral",
|
|
294
|
+
impact: "medium",
|
|
295
|
+
});
|
|
296
|
+
signals.push({
|
|
297
|
+
name: `${ctx.sessionMemory.totalActions7d} tracked actions / ${ctx.sessionMemory.totalMilestones7d} milestones`,
|
|
298
|
+
direction: ctx.sessionMemory.totalActions7d > 5 ? "up" : "neutral",
|
|
299
|
+
impact: "high",
|
|
300
|
+
});
|
|
301
|
+
if (ctx.dogfoodFindings.verdict) {
|
|
302
|
+
signals.push({
|
|
303
|
+
name: `Dogfood verdict: ${ctx.dogfoodFindings.verdict.slice(0, 60)}`,
|
|
304
|
+
direction: ctx.dogfoodFindings.verdict.toLowerCase().includes("pass") ? "up" : "down",
|
|
305
|
+
impact: "high",
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
// ── Public narrative check ────────────────────────────────────
|
|
309
|
+
const publicMismatches = [];
|
|
310
|
+
if (ctx.publicSurfaces.indexHtmlTitle && !ctx.publicSurfaces.indexHtmlTitle.toLowerCase().includes("entity")) {
|
|
311
|
+
publicMismatches.push(`index.html title doesn't mention 'entity intelligence': "${ctx.publicSurfaces.indexHtmlTitle}"`);
|
|
312
|
+
}
|
|
313
|
+
if (ctx.publicSurfaces.serverJsonDescription && ctx.publicSurfaces.serverJsonDescription.includes("304")) {
|
|
314
|
+
publicMismatches.push("server.json still references '304' tools");
|
|
315
|
+
}
|
|
316
|
+
if (ctx.publicSurfaces.readmeTagline && ctx.publicSurfaces.readmeTagline.includes("Operating intelligence")) {
|
|
317
|
+
publicMismatches.push("README still uses 'Operating intelligence' instead of 'Entity intelligence'");
|
|
318
|
+
}
|
|
319
|
+
// ── Generate memo ─────────────────────────────────────────────
|
|
320
|
+
const memoLines = [
|
|
321
|
+
`# NodeBench Founder Weekly Reset`,
|
|
322
|
+
`**Generated:** ${new Date().toISOString().slice(0, 10)} by founder_local_pipeline`,
|
|
323
|
+
`**Package:** ${ctx.identity.packageName}@${ctx.identity.packageVersion}`,
|
|
324
|
+
``,
|
|
325
|
+
`## What We Are Building`,
|
|
326
|
+
canonicalMission,
|
|
327
|
+
``,
|
|
328
|
+
`## What Changed This Week`,
|
|
329
|
+
...whatChanged.slice(0, 5).map((c, i) => `${i + 1}. ${c.description}`),
|
|
330
|
+
``,
|
|
331
|
+
`## Contradictions (${contradictions.length})`,
|
|
332
|
+
...contradictions.map((c) => `- **[${c.severity}]** ${c.claim}\n Evidence: ${c.evidence}`),
|
|
333
|
+
``,
|
|
334
|
+
`## Next 3 Moves`,
|
|
335
|
+
...nextActions.slice(0, 3).map((a) => `${a.priority}. **${a.action}**\n ${a.reasoning}`),
|
|
336
|
+
``,
|
|
337
|
+
`## Signals`,
|
|
338
|
+
...signals.map((s) => `- ${s.direction === "up" ? "+" : s.direction === "down" ? "-" : "="} ${s.name} (${s.impact})`),
|
|
339
|
+
``,
|
|
340
|
+
`## Public Narrative`,
|
|
341
|
+
publicMismatches.length === 0
|
|
342
|
+
? "All public surfaces aligned with internal thesis."
|
|
343
|
+
: publicMismatches.map((m) => `- MISMATCH: ${m}`).join("\n"),
|
|
344
|
+
``,
|
|
345
|
+
`## Session Memory`,
|
|
346
|
+
`- ${ctx.sessionMemory.totalActions7d} actions tracked / ${ctx.sessionMemory.totalMilestones7d} milestones in last 7 days`,
|
|
347
|
+
`- Dogfood: ${ctx.dogfoodFindings.verdict ?? "no runs yet"}`,
|
|
348
|
+
];
|
|
349
|
+
return {
|
|
350
|
+
packetId,
|
|
351
|
+
packetType,
|
|
352
|
+
generatedAt: new Date().toISOString(),
|
|
353
|
+
generatedBy: "founder_local_pipeline",
|
|
354
|
+
canonicalEntity: {
|
|
355
|
+
name: "NodeBench",
|
|
356
|
+
canonicalMission,
|
|
357
|
+
wedge,
|
|
358
|
+
companyState: "building",
|
|
359
|
+
identityConfidence: contradictions.length === 0 ? 85 : Math.max(50, 85 - contradictions.length * 10),
|
|
360
|
+
},
|
|
361
|
+
whatChanged,
|
|
362
|
+
contradictions,
|
|
363
|
+
nextActions,
|
|
364
|
+
signals,
|
|
365
|
+
publicNarrativeCheck: {
|
|
366
|
+
aligned: publicMismatches.length === 0,
|
|
367
|
+
mismatches: publicMismatches,
|
|
368
|
+
},
|
|
369
|
+
sessionStats: {
|
|
370
|
+
actionsTracked7d: ctx.sessionMemory.totalActions7d,
|
|
371
|
+
milestonesTracked7d: ctx.sessionMemory.totalMilestones7d,
|
|
372
|
+
dogfoodVerdict: ctx.dogfoodFindings.verdict,
|
|
373
|
+
},
|
|
374
|
+
memo: memoLines.join("\n"),
|
|
375
|
+
};
|
|
376
|
+
}
|
|
377
|
+
/* ─── Exported Tools ─────────────────────────────────────────────────────── */
|
|
378
|
+
export const founderLocalPipelineTools = [
|
|
379
|
+
{
|
|
380
|
+
name: "founder_local_gather",
|
|
381
|
+
description: "Gathers all locally-available context for a founder packet: git log, " +
|
|
382
|
+
"CLAUDE.md identity, public surface state (index.html, server.json, README), " +
|
|
383
|
+
"SQLite session memory (tracked actions + milestones), dogfood findings, and " +
|
|
384
|
+
"architecture docs. Returns structured GatheredContext. No Convex or external " +
|
|
385
|
+
"APIs required. Use this as the first step of a local intelligence pipeline.",
|
|
386
|
+
inputSchema: {
|
|
387
|
+
type: "object",
|
|
388
|
+
properties: {
|
|
389
|
+
daysBack: {
|
|
390
|
+
type: "number",
|
|
391
|
+
description: "How many days of history to gather (default: 7)",
|
|
392
|
+
},
|
|
393
|
+
},
|
|
394
|
+
},
|
|
395
|
+
annotations: { readOnlyHint: true },
|
|
396
|
+
handler: async (args) => {
|
|
397
|
+
const ctx = gatherLocalContext(args.daysBack ?? 7);
|
|
398
|
+
return {
|
|
399
|
+
gathered: true,
|
|
400
|
+
identity: ctx.identity,
|
|
401
|
+
recentChanges: {
|
|
402
|
+
commitCount: ctx.recentChanges.gitLogOneline.length,
|
|
403
|
+
modifiedFileCount: ctx.recentChanges.modifiedFiles.length,
|
|
404
|
+
daysBack: ctx.recentChanges.daysBack,
|
|
405
|
+
topCommits: ctx.recentChanges.gitLogOneline.slice(0, 5),
|
|
406
|
+
},
|
|
407
|
+
publicSurfaces: ctx.publicSurfaces,
|
|
408
|
+
sessionMemory: {
|
|
409
|
+
actions7d: ctx.sessionMemory.totalActions7d,
|
|
410
|
+
milestones7d: ctx.sessionMemory.totalMilestones7d,
|
|
411
|
+
recentActions: ctx.sessionMemory.recentActions.slice(0, 5),
|
|
412
|
+
},
|
|
413
|
+
dogfoodFindings: {
|
|
414
|
+
verdict: ctx.dogfoodFindings.verdict,
|
|
415
|
+
p0: ctx.dogfoodFindings.p0Count,
|
|
416
|
+
p1: ctx.dogfoodFindings.p1Count,
|
|
417
|
+
topFindings: ctx.dogfoodFindings.findings.slice(0, 5),
|
|
418
|
+
},
|
|
419
|
+
architectureDocs: ctx.docs.architectureDocs.slice(0, 8),
|
|
420
|
+
};
|
|
421
|
+
},
|
|
422
|
+
},
|
|
423
|
+
{
|
|
424
|
+
name: "founder_local_synthesize",
|
|
425
|
+
description: "Takes gathered local context and synthesizes a complete Founder Artifact Packet. " +
|
|
426
|
+
"Detects contradictions between CLAUDE.md identity, public surfaces, and dogfood " +
|
|
427
|
+
"findings. Ranks next actions by dogfood severity. Generates a readable memo. " +
|
|
428
|
+
"No Convex or external APIs required. Call founder_local_gather first, or use " +
|
|
429
|
+
"founder_local_weekly_reset for the full pipeline in one call.",
|
|
430
|
+
inputSchema: {
|
|
431
|
+
type: "object",
|
|
432
|
+
properties: {
|
|
433
|
+
packetType: {
|
|
434
|
+
type: "string",
|
|
435
|
+
enum: ["weekly_reset", "pre_delegation", "important_change"],
|
|
436
|
+
description: "Type of artifact packet to produce",
|
|
437
|
+
},
|
|
438
|
+
daysBack: {
|
|
439
|
+
type: "number",
|
|
440
|
+
description: "How many days of history to include (default: 7)",
|
|
441
|
+
},
|
|
442
|
+
},
|
|
443
|
+
required: ["packetType"],
|
|
444
|
+
},
|
|
445
|
+
handler: async (args) => {
|
|
446
|
+
const packetType = args.packetType;
|
|
447
|
+
const ctx = gatherLocalContext(args.daysBack ?? 7);
|
|
448
|
+
const packet = synthesizePacket(ctx, packetType);
|
|
449
|
+
return packet;
|
|
450
|
+
},
|
|
451
|
+
},
|
|
452
|
+
{
|
|
453
|
+
name: "founder_local_weekly_reset",
|
|
454
|
+
description: "One-call convenience: gathers all local context and produces a complete " +
|
|
455
|
+
"weekly founder reset packet with: canonical truth, what changed (from git), " +
|
|
456
|
+
"contradictions (comparing CLAUDE.md vs public surfaces vs dogfood findings), " +
|
|
457
|
+
"ranked next actions, signals, public narrative alignment check, and a " +
|
|
458
|
+
"human-readable memo. No Convex, no external APIs, no agent loop needed. " +
|
|
459
|
+
"This is the first habit: messy context → canonical truth → change/contradiction " +
|
|
460
|
+
"→ ranked interpretation → Artifact Packet.",
|
|
461
|
+
inputSchema: {
|
|
462
|
+
type: "object",
|
|
463
|
+
properties: {
|
|
464
|
+
daysBack: {
|
|
465
|
+
type: "number",
|
|
466
|
+
description: "How many days of history to include (default: 7)",
|
|
467
|
+
},
|
|
468
|
+
},
|
|
469
|
+
},
|
|
470
|
+
handler: async (args) => {
|
|
471
|
+
const ctx = gatherLocalContext(args.daysBack ?? 7);
|
|
472
|
+
const packet = synthesizePacket(ctx, "weekly_reset");
|
|
473
|
+
// Also track this as a milestone
|
|
474
|
+
try {
|
|
475
|
+
const db = getDb();
|
|
476
|
+
const now = new Date();
|
|
477
|
+
const m = now.getMonth() + 1;
|
|
478
|
+
const y = now.getFullYear();
|
|
479
|
+
const dayNames = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
|
|
480
|
+
db.prepare(`INSERT OR IGNORE INTO tracking_milestones
|
|
481
|
+
(milestoneId, sessionId, timestamp, title, description, category, evidence, metrics, dayOfWeek, weekNumber, month, quarter, year)
|
|
482
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(packet.packetId, `pipeline_${Date.now()}`, now.toISOString(), "Weekly founder reset generated", `Contradictions: ${packet.contradictions.length}, Next actions: ${packet.nextActions.length}, Signals: ${packet.signals.length}`, "dogfood", null, JSON.stringify({ contradictions: packet.contradictions.length, nextActions: packet.nextActions.length }), dayNames[now.getDay()], Math.ceil((now.getTime() - new Date(y, 0, 1).getTime()) / 604800000), `${y}-${String(m).padStart(2, "0")}`, `${y}-Q${Math.ceil(m / 3)}`, y);
|
|
483
|
+
}
|
|
484
|
+
catch {
|
|
485
|
+
// Non-fatal — packet is the primary output
|
|
486
|
+
}
|
|
487
|
+
return packet;
|
|
488
|
+
},
|
|
489
|
+
},
|
|
490
|
+
];
|
|
491
|
+
//# sourceMappingURL=founderLocalPipeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"founderLocalPipeline.js","sourceRoot":"","sources":["../../src/tools/founderLocalPipeline.ts"],"names":[],"mappings":"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"}
|