nodebench-mcp 2.25.0 → 2.26.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/NODEBENCH_AGENTS.md +5 -4
- package/README.md +145 -16
- package/dist/__tests__/architectComplex.test.js +3 -5
- package/dist/__tests__/architectComplex.test.js.map +1 -1
- package/dist/__tests__/batchAutopilot.test.d.ts +8 -0
- package/dist/__tests__/batchAutopilot.test.js +218 -0
- package/dist/__tests__/batchAutopilot.test.js.map +1 -0
- package/dist/__tests__/cliSubcommands.test.d.ts +1 -0
- package/dist/__tests__/cliSubcommands.test.js +138 -0
- package/dist/__tests__/cliSubcommands.test.js.map +1 -0
- package/dist/__tests__/evalHarness.test.js +1 -1
- package/dist/__tests__/forecastingDogfood.test.d.ts +9 -0
- package/dist/__tests__/forecastingDogfood.test.js +284 -0
- package/dist/__tests__/forecastingDogfood.test.js.map +1 -0
- package/dist/__tests__/forecastingScoring.test.d.ts +9 -0
- package/dist/__tests__/forecastingScoring.test.js +202 -0
- package/dist/__tests__/forecastingScoring.test.js.map +1 -0
- package/dist/__tests__/localDashboard.test.d.ts +1 -0
- package/dist/__tests__/localDashboard.test.js +226 -0
- package/dist/__tests__/localDashboard.test.js.map +1 -0
- package/dist/__tests__/multiHopDogfood.test.js +11 -11
- package/dist/__tests__/multiHopDogfood.test.js.map +1 -1
- package/dist/__tests__/openclawDogfood.test.d.ts +23 -0
- package/dist/__tests__/openclawDogfood.test.js +535 -0
- package/dist/__tests__/openclawDogfood.test.js.map +1 -0
- package/dist/__tests__/openclawMessaging.test.d.ts +14 -0
- package/dist/__tests__/openclawMessaging.test.js +232 -0
- package/dist/__tests__/openclawMessaging.test.js.map +1 -0
- package/dist/__tests__/presetRealWorldBench.test.js +0 -2
- package/dist/__tests__/presetRealWorldBench.test.js.map +1 -1
- package/dist/__tests__/tools.test.js +9 -157
- package/dist/__tests__/tools.test.js.map +1 -1
- package/dist/__tests__/toolsetGatingEval.test.js +0 -2
- package/dist/__tests__/toolsetGatingEval.test.js.map +1 -1
- package/dist/__tests__/traceabilityDogfood.test.d.ts +12 -0
- package/dist/__tests__/traceabilityDogfood.test.js +241 -0
- package/dist/__tests__/traceabilityDogfood.test.js.map +1 -0
- package/dist/__tests__/webmcpTools.test.d.ts +7 -0
- package/dist/__tests__/webmcpTools.test.js +195 -0
- package/dist/__tests__/webmcpTools.test.js.map +1 -0
- package/dist/dashboard/briefHtml.d.ts +20 -0
- package/dist/dashboard/briefHtml.js +1000 -0
- package/dist/dashboard/briefHtml.js.map +1 -0
- package/dist/dashboard/briefServer.d.ts +18 -0
- package/dist/dashboard/briefServer.js +320 -0
- package/dist/dashboard/briefServer.js.map +1 -0
- package/dist/dashboard/html.js +1470 -1230
- package/dist/dashboard/html.js.map +1 -1
- package/dist/dashboard/server.js +166 -41
- package/dist/dashboard/server.js.map +1 -1
- package/dist/index.js +208 -12
- package/dist/index.js.map +1 -1
- package/dist/tools/critterTools.js +4 -0
- package/dist/tools/critterTools.js.map +1 -1
- package/dist/tools/forecastingTools.d.ts +11 -0
- package/dist/tools/forecastingTools.js +616 -0
- package/dist/tools/forecastingTools.js.map +1 -0
- package/dist/tools/localDashboardTools.d.ts +8 -0
- package/dist/tools/localDashboardTools.js +332 -0
- package/dist/tools/localDashboardTools.js.map +1 -0
- package/dist/tools/metaTools.js +170 -1
- package/dist/tools/metaTools.js.map +1 -1
- package/dist/tools/openclawTools.d.ts +11 -0
- package/dist/tools/openclawTools.js +1017 -0
- package/dist/tools/openclawTools.js.map +1 -0
- package/dist/tools/overstoryTools.d.ts +14 -0
- package/dist/tools/overstoryTools.js +426 -0
- package/dist/tools/overstoryTools.js.map +1 -0
- package/dist/tools/progressiveDiscoveryTools.js +45 -113
- package/dist/tools/progressiveDiscoveryTools.js.map +1 -1
- package/dist/tools/selfEvalTools.js +8 -1
- package/dist/tools/selfEvalTools.js.map +1 -1
- package/dist/tools/sessionMemoryTools.js +14 -2
- package/dist/tools/sessionMemoryTools.js.map +1 -1
- package/dist/tools/toolRegistry.d.ts +1 -15
- package/dist/tools/toolRegistry.js +102 -228
- package/dist/tools/toolRegistry.js.map +1 -1
- package/dist/tools/visualQaTools.d.ts +2 -0
- package/dist/tools/visualQaTools.js +1088 -0
- package/dist/tools/visualQaTools.js.map +1 -0
- package/dist/tools/webmcpTools.d.ts +16 -0
- package/dist/tools/webmcpTools.js +703 -0
- package/dist/tools/webmcpTools.js.map +1 -0
- package/dist/toolsetRegistry.js +2 -2
- package/dist/toolsetRegistry.js.map +1 -1
- package/package.json +2 -2
|
@@ -55,12 +55,16 @@ export const sessionMemoryTools = [
|
|
|
55
55
|
items: { type: "string" },
|
|
56
56
|
description: "Tags for searchability (e.g. ['auth', 'jwt', 'security'])",
|
|
57
57
|
},
|
|
58
|
+
citedFrom: {
|
|
59
|
+
type: "string",
|
|
60
|
+
description: "Quote or paraphrase the specific part of the user's original request this note fulfills. Enables completion traceability — links deliverables back to asks.",
|
|
61
|
+
},
|
|
58
62
|
},
|
|
59
63
|
required: ["title", "content"],
|
|
60
64
|
},
|
|
61
65
|
handler: async (args) => {
|
|
62
66
|
ensureNotesDir();
|
|
63
|
-
const { title, content, category = "finding", tags = [], } = args;
|
|
67
|
+
const { title, content, category = "finding", tags = [], citedFrom, } = args;
|
|
64
68
|
const now = new Date();
|
|
65
69
|
const dateStr = now.toISOString().slice(0, 10);
|
|
66
70
|
const timeStr = now.toISOString().slice(11, 19).replace(/:/g, "");
|
|
@@ -76,6 +80,7 @@ export const sessionMemoryTools = [
|
|
|
76
80
|
`**Category:** ${category}`,
|
|
77
81
|
`**Date:** ${now.toISOString()}`,
|
|
78
82
|
tags.length > 0 ? `**Tags:** ${tags.join(", ")}` : "",
|
|
83
|
+
citedFrom ? `**Cited From:** ${citedFrom}` : "",
|
|
79
84
|
"",
|
|
80
85
|
"---",
|
|
81
86
|
"",
|
|
@@ -221,11 +226,15 @@ export const sessionMemoryTools = [
|
|
|
221
226
|
type: "boolean",
|
|
222
227
|
description: "Include recent relevant learnings (default: true)",
|
|
223
228
|
},
|
|
229
|
+
originalRequest: {
|
|
230
|
+
type: "string",
|
|
231
|
+
description: "The original user request verbatim or paraphrased. Returned in context to anchor traceability between asks and deliverables.",
|
|
232
|
+
},
|
|
224
233
|
},
|
|
225
234
|
required: [],
|
|
226
235
|
},
|
|
227
236
|
handler: async (args) => {
|
|
228
|
-
const { taskDescription = "", includeNotes = true, includeGaps = true, includeLearnings = true, } = args;
|
|
237
|
+
const { taskDescription = "", includeNotes = true, includeGaps = true, includeLearnings = true, originalRequest, } = args;
|
|
229
238
|
const db = getDb();
|
|
230
239
|
const context = {};
|
|
231
240
|
// 1. Active verification cycle
|
|
@@ -329,6 +338,9 @@ export const sessionMemoryTools = [
|
|
|
329
338
|
catch {
|
|
330
339
|
/* table may not exist yet */
|
|
331
340
|
}
|
|
341
|
+
if (originalRequest) {
|
|
342
|
+
context.originalRequest = originalRequest;
|
|
343
|
+
}
|
|
332
344
|
return {
|
|
333
345
|
taskDescription: taskDescription ||
|
|
334
346
|
"(Not specified — re-state your original goal to anchor attention)",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessionMemoryTools.js","sourceRoot":"","sources":["../../src/tools/sessionMemoryTools.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"sessionMemoryTools.js","sourceRoot":"","sources":["../../src/tools/sessionMemoryTools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAExC,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAEzB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;AAEjE,SAAS,cAAc;IACrB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAc;IAC3C,4EAA4E;IAC5E;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EACT,6OAA6O;QAC/O,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,mGAAmG;iBACtG;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,oIAAoI;iBACvI;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE;wBACJ,SAAS;wBACT,UAAU;wBACV,UAAU;wBACV,SAAS;wBACT,UAAU;wBACV,cAAc;wBACd,WAAW;qBACZ;oBACD,WAAW,EAAE,iCAAiC;iBAC/C;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACzB,WAAW,EACT,2DAA2D;iBAC9D;gBACD,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,6JAA6J;iBAChK;aACF;YACD,QAAQ,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;SAC/B;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,cAAc,EAAE,CAAC;YACjB,MAAM,EACJ,KAAK,EACL,OAAO,EACP,QAAQ,GAAG,SAAS,EACpB,IAAI,GAAG,EAAE,EACT,SAAS,GACV,GAAG,IAAI,CAAC;YACT,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/C,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAClE,MAAM,SAAS,GAAG,KAAK;iBACpB,WAAW,EAAE;iBACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;iBAC3B,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAChB,MAAM,QAAQ,GAAG,GAAG,OAAO,IAAI,OAAO,IAAI,SAAS,KAAK,CAAC;YACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAEhD,MAAM,QAAQ,GAAG;gBACf,KAAK,KAAK,EAAE;gBACZ,EAAE;gBACF,iBAAiB,QAAQ,EAAE;gBAC3B,aAAa,GAAG,CAAC,WAAW,EAAE,EAAE;gBAChC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;gBACrD,SAAS,CAAC,CAAC,CAAC,mBAAmB,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE;gBAC/C,EAAE;gBACF,KAAK;gBACL,EAAE;gBACF,OAAO;gBACP,EAAE;aACH;iBACE,MAAM,CAAC,OAAO,CAAC;iBACf,IAAI,CAAC,IAAI,CAAC,CAAC;YAEd,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YAE9C,kDAAkD;YAClD,IAAI,CAAC;gBACH,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;gBACnB,EAAE,CAAC,OAAO,CACR;sDAC4C,CAC7C,CAAC,GAAG,CACH,KAAK,CAAC,MAAM,CAAC,EACb,gBAAgB,SAAS,EAAE,EAC3B,kBAAkB,KAAK,OAAO,OAAO,EAAE,EACvC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,EACvF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EACpB,IAAI,CACL,CAAC;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,kCAAkC;YACpC,CAAC;YAED,OAAO;gBACL,KAAK,EAAE,IAAI;gBACX,QAAQ;gBACR,QAAQ;gBACR,KAAK;gBACL,QAAQ;gBACR,GAAG,EAAE,2HAA2H;aACjI,CAAC;QACJ,CAAC;KACF;IAED,4EAA4E;IAC5E;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EACT,sMAAsM;QACxM,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,uEAAuE;iBAC1E;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE;wBACJ,SAAS;wBACT,UAAU;wBACV,UAAU;wBACV,SAAS;wBACT,UAAU;wBACV,cAAc;wBACd,WAAW;qBACZ;oBACD,WAAW,EAAE,oCAAoC;iBAClD;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,yDAAyD;iBAC5D;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,mCAAmC;iBACjD;aACF;YACD,QAAQ,EAAE,EAAE;SACb;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,cAAc,EAAE,CAAC;YACjB,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC;YAErD,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;YAEzE,qEAAqE;YACrE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;YAEzC,iBAAiB;YACjB,IAAI,QAAQ,GAAG,KAAK,CAAC;YACrB,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;gBAC3B,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;YACxD,CAAC;iBAAM,IAAI,CAAC,IAAI,EAAE,CAAC;gBACjB,iBAAiB;gBACjB,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACpD,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;YACzD,CAAC;YAED,uCAAuC;YACvC,MAAM,KAAK,GAMN,EAAE,CAAC;YAER,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;gBAC5B,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK;oBAAE,MAAM;gBAEjC,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;gBAErE,iCAAiC;gBACjC,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBAC9C,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;gBAChE,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;gBAExD,MAAM,YAAY,GAAG,aAAa,EAAE,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;gBACrD,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;gBAC1C,MAAM,QAAQ,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAEtC,kBAAkB;gBAClB,IAAI,QAAQ,IAAI,YAAY,KAAK,QAAQ;oBAAE,SAAS;gBAEpD,iBAAiB;gBACjB,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;oBACnE,SAAS;gBAEX,KAAK,CAAC,IAAI,CAAC;oBACT,QAAQ,EAAE,IAAI;oBACd,KAAK,EAAE,SAAS;oBAChB,QAAQ,EAAE,YAAY;oBACtB,OAAO;oBACP,IAAI,EAAE,QAAQ;iBACf,CAAC,CAAC;YACL,CAAC;YAED,OAAO;gBACL,SAAS,EAAE,KAAK,CAAC,MAAM;gBACvB,UAAU,EAAE,KAAK,CAAC,MAAM;gBACxB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACvB,QAAQ,EAAE,CAAC,CAAC,QAAQ;oBACpB,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,QAAQ,EAAE,CAAC,CAAC,QAAQ;oBACpB,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;oBAChC,WAAW,EAAE,CAAC,CAAC,OAAO;iBACvB,CAAC,CAAC;gBACH,GAAG,EACD,KAAK,CAAC,MAAM,KAAK,CAAC;oBAChB,CAAC,CAAC,gFAAgF;oBAClF,CAAC,CAAC,gEAAgE;aACvE,CAAC;QACJ,CAAC;KACF;IAED,4EAA4E;IAC5E;QACE,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EACT,0VAA0V;QAC5V,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,eAAe,EAAE;oBACf,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,mFAAmF;iBACtF;gBACD,YAAY,EAAE;oBACZ,IAAI,EAAE,SAAS;oBACf,WAAW,EACT,gEAAgE;iBACnE;gBACD,WAAW,EAAE;oBACX,IAAI,EAAE,SAAS;oBACf,WAAW,EACT,gDAAgD;iBACnD;gBACD,gBAAgB,EAAE;oBAChB,IAAI,EAAE,SAAS;oBACf,WAAW,EACT,mDAAmD;iBACtD;gBACD,eAAe,EAAE;oBACf,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,8HAA8H;iBACjI;aACF;YACD,QAAQ,EAAE,EAAE;SACb;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,EACJ,eAAe,GAAG,EAAE,EACpB,YAAY,GAAG,IAAI,EACnB,WAAW,GAAG,IAAI,EAClB,gBAAgB,GAAG,IAAI,EACvB,eAAe,GAChB,GAAG,IAAI,CAAC;YACT,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;YACnB,MAAM,OAAO,GAA4B,EAAE,CAAC;YAE5C,+BAA+B;YAC/B,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,EAAE;qBACnB,OAAO,CACN,4FAA4F,CAC7F;qBACA,GAAG,EAAS,CAAC;gBAChB,IAAI,WAAW,EAAE,CAAC;oBAChB,MAAM,MAAM,GAAG,EAAE;yBACd,OAAO,CACN,yFAAyF,CAC1F;yBACA,GAAG,CAAC,WAAW,CAAC,EAAE,CAAU,CAAC;oBAChC,OAAO,CAAC,WAAW,GAAG;wBACpB,EAAE,EAAE,WAAW,CAAC,EAAE;wBAClB,KAAK,EAAE,WAAW,CAAC,KAAK;wBACxB,YAAY,EAAE,WAAW,CAAC,aAAa;wBACvC,MAAM,EAAE,WAAW,CAAC,MAAM;wBAC1B,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;4BAC9B,KAAK,EAAE,CAAC,CAAC,KAAK;4BACd,MAAM,EAAE,CAAC,CAAC,MAAM;4BAChB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;yBAClC,CAAC,CAAC;qBACJ,CAAC;gBACJ,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,6BAA6B;YAC/B,CAAC;YAED,eAAe;YACf,IAAI,WAAW,EAAE,CAAC;gBAChB,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,EAAE;yBACZ,OAAO,CACN,oLAAoL,CACrL;yBACA,GAAG,EAAW,CAAC;oBAClB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACpB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;4BACvC,EAAE,EAAE,CAAC,CAAC,EAAE;4BACR,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;4BACzC,QAAQ,EAAE,CAAC,CAAC,QAAQ;yBACrB,CAAC,CAAC,CAAC;oBACN,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,6BAA6B;gBAC/B,CAAC;YACH,CAAC;YAED,sBAAsB;YACtB,IAAI,gBAAgB,EAAE,CAAC;gBACrB,IAAI,CAAC;oBACH,MAAM,SAAS,GAAG,EAAE;yBACjB,OAAO,CACN,+EAA+E,CAChF;yBACA,GAAG,EAAW,CAAC;oBAClB,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACzB,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;4BACnD,GAAG,EAAE,CAAC,CAAC,GAAG;4BACV,QAAQ,EAAE,CAAC,CAAC,QAAQ;4BACpB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;yBAClC,CAAC,CAAC,CAAC;oBACN,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,6BAA6B;gBAC/B,CAAC;YACH,CAAC;YAED,2BAA2B;YAC3B,IAAI,YAAY,EAAE,CAAC;gBACjB,cAAc,EAAE,CAAC;gBACjB,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACpD,MAAM,KAAK,GAAG,EAAE;qBACb,WAAW,CAAC,SAAS,CAAC;qBACtB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;qBACvD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;qBAClC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAEf,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACrB,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;wBACnC,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAC7B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,EACvB,OAAO,CACR,CAAC;wBACF,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;wBAC9C,OAAO;4BACL,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;4BAC3B,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;yBAC/B,CAAC;oBACJ,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,sCAAsC;YACtC,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,EAAE;qBACb,OAAO,CACN,4MAA4M,CAC7M;qBACA,GAAG,EAAS,CAAC;gBAChB,IAAI,KAAK,EAAE,CAAC;oBACV,OAAO,CAAC,YAAY,GAAG;wBACrB,cAAc,EAAE,KAAK,CAAC,KAAK;wBAC3B,MAAM,EAAE,KAAK,CAAC,MAAM;wBACpB,gBAAgB,EACd,KAAK,CAAC,KAAK,GAAG,EAAE;4BACd,CAAC,CAAC,+EAA+E;4BACjF,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE;gCAChB,CAAC,CAAC,+DAA+D;gCACjE,CAAC,CAAC,uCAAuC;qBAChD,CAAC;gBACJ,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,6BAA6B;YAC/B,CAAC;YAED,IAAI,eAAe,EAAE,CAAC;gBACpB,OAAO,CAAC,eAAe,GAAG,eAAe,CAAC;YAC5C,CAAC;YAED,OAAO;gBACL,eAAe,EACb,eAAe;oBACf,mEAAmE;gBACrE,OAAO;gBACP,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACrC,SAAS,EACP,iKAAiK;gBACnK,SAAS,EAAE;oBACT,iDAAiD;oBACjD,2CAA2C;oBAC3C,+CAA+C;oBAC/C,4CAA4C;iBAC7C;aACF,CAAC;QACJ,CAAC;KACF;CACF,CAAC"}
|
|
@@ -12,13 +12,8 @@
|
|
|
12
12
|
export interface ToolQuickRef {
|
|
13
13
|
/** 1-2 sentence guidance on what to do after calling this tool */
|
|
14
14
|
nextAction: string;
|
|
15
|
-
/** Tools commonly used after this one
|
|
15
|
+
/** Tools commonly used after this one */
|
|
16
16
|
nextTools: string[];
|
|
17
|
-
/** Conceptually related tools — same problem domain but different workflow paths.
|
|
18
|
-
* Unlike nextTools (sequential: "do X then Y"), relatedTools is associative:
|
|
19
|
-
* "if you're doing X, you might also want Y". Auto-derived from category siblings,
|
|
20
|
-
* domain clusters, and tag overlap. Enables multi-hop graph traversal. */
|
|
21
|
-
relatedTools?: string[];
|
|
22
17
|
/** Which methodology to consult for full guidance */
|
|
23
18
|
methodology?: string;
|
|
24
19
|
/** Short tip for effective use */
|
|
@@ -38,9 +33,6 @@ export interface ToolRegistryEntry {
|
|
|
38
33
|
export declare const TOOL_REGISTRY: Map<string, ToolRegistryEntry>;
|
|
39
34
|
/** All registry entries as array */
|
|
40
35
|
export declare const ALL_REGISTRY_ENTRIES: ToolRegistryEntry[];
|
|
41
|
-
export declare function _setDomainClustersRef(clusters: Record<string, string[]>): void;
|
|
42
|
-
/** Populate relatedTools for all registry entries. Called once at module load after DOMAIN_CLUSTERS exists. */
|
|
43
|
-
export declare function _populateRelatedTools(): void;
|
|
44
36
|
/** Get quick ref for a tool, with fallback for unregistered tools */
|
|
45
37
|
export declare function getQuickRef(toolName: string): ToolQuickRef | null;
|
|
46
38
|
/** Get all tools in a category */
|
|
@@ -59,10 +51,6 @@ export interface SearchResult {
|
|
|
59
51
|
quickRef: ToolQuickRef;
|
|
60
52
|
phase: string;
|
|
61
53
|
tags: string[];
|
|
62
|
-
/** Depth at which this result was found (0 = direct match, 1+ = expansion hop) */
|
|
63
|
-
depth?: number;
|
|
64
|
-
/** Tools that led to this result being included via relatedTools expansion */
|
|
65
|
-
expandedFrom?: string[];
|
|
66
54
|
}
|
|
67
55
|
export type SearchMode = "hybrid" | "fuzzy" | "regex" | "prefix" | "semantic" | "exact" | "dense" | "embedding";
|
|
68
56
|
/** Tokenize text into lowercase words (alpha + underscore only) */
|
|
@@ -120,8 +108,6 @@ export declare function hybridSearch(query: string, tools: Array<{
|
|
|
120
108
|
/** If true, search ALL_REGISTRY_ENTRIES (full 175-tool registry) regardless of loaded preset.
|
|
121
109
|
* Needed for dynamic loading: discover_tools must find unloaded tools to suggest load_toolset. */
|
|
122
110
|
searchFullRegistry?: boolean;
|
|
123
|
-
/** Number of results to skip for cursor-based pagination. Default: 0. */
|
|
124
|
-
offset?: number;
|
|
125
111
|
/** Ablation flags: disable individual strategies to measure their contribution */
|
|
126
112
|
ablation?: {
|
|
127
113
|
disableSynonyms?: boolean;
|
|
@@ -2073,14 +2073,14 @@ const REGISTRY_ENTRIES = [
|
|
|
2073
2073
|
{
|
|
2074
2074
|
name: "ingest_dive_screenshots",
|
|
2075
2075
|
category: "ui_ux_dive",
|
|
2076
|
-
tags: ["ui", "screenshot", "ingest", "import", "bulk", "
|
|
2076
|
+
tags: ["ui", "screenshot", "ingest", "import", "bulk", "disk", "gallery", "dive", "png", "jpg"],
|
|
2077
2077
|
quickRef: {
|
|
2078
|
-
nextAction: "Screenshots ingested into session
|
|
2079
|
-
nextTools: ["
|
|
2078
|
+
nextAction: "Screenshots ingested into dive session. View them in the dashboard or use dive_screenshot to capture new ones.",
|
|
2079
|
+
nextTools: ["dive_screenshot", "tag_ui_bug", "end_component_flow", "get_dive_tree"],
|
|
2080
2080
|
methodology: "agentic_vision",
|
|
2081
|
-
tip: "
|
|
2081
|
+
tip: "Scans a directory for PNG/JPG files and bulk-imports them into a dive session's screenshot gallery. Use after external Playwright captures.",
|
|
2082
2082
|
},
|
|
2083
|
-
phase: "
|
|
2083
|
+
phase: "test",
|
|
2084
2084
|
},
|
|
2085
2085
|
// ═══════════════════════════════════════════
|
|
2086
2086
|
// UI/UX DIVE V2 — Deep interaction testing,
|
|
@@ -2266,7 +2266,7 @@ const REGISTRY_ENTRIES = [
|
|
|
2266
2266
|
{
|
|
2267
2267
|
name: "register_skill",
|
|
2268
2268
|
category: "skill_update",
|
|
2269
|
-
tags: ["skill", "rule", "register", "source", "hash", "frontmatter", "provenance", "memory", "agents-md", "cursor", "windsurf", "update"
|
|
2269
|
+
tags: ["skill", "rule", "register", "source", "hash", "frontmatter", "provenance", "memory", "agents-md", "cursor", "windsurf", "update"],
|
|
2270
2270
|
quickRef: {
|
|
2271
2271
|
nextAction: "Skill registered. Use check_skill_freshness periodically to detect when source files change.",
|
|
2272
2272
|
nextTools: ["check_skill_freshness", "list_skills"],
|
|
@@ -2312,28 +2312,6 @@ const REGISTRY_ENTRIES = [
|
|
|
2312
2312
|
phase: "utility",
|
|
2313
2313
|
},
|
|
2314
2314
|
// ═══════════════════════════════════════════
|
|
2315
|
-
// RE-EXAMINE 11/10 — Fresh-eyes quality pass
|
|
2316
|
-
// Modular rules: reexamine_process → a11y,
|
|
2317
|
-
// resilience, polish, keyboard, performance
|
|
2318
|
-
// Cross-ref via related_ frontmatter hops
|
|
2319
|
-
// ═══════════════════════════════════════════
|
|
2320
|
-
// NOTE: These are not MCP tools — they are rule
|
|
2321
|
-
// files in .cursor/rules/ and .windsurf/rules/.
|
|
2322
|
-
// The skill_update tools above (register_skill,
|
|
2323
|
-
// check_skill_freshness) track their freshness.
|
|
2324
|
-
// The related_ field in each rule's frontmatter
|
|
2325
|
-
// enables one-hop and two-hop cross-referencing:
|
|
2326
|
-
//
|
|
2327
|
-
// reexamine_process
|
|
2328
|
-
// └─ related_: [a11y, resilience, polish, keyboard, performance]
|
|
2329
|
-
// └─ reexamine_a11y.related_: [keyboard, polish, process]
|
|
2330
|
-
// └─ reexamine_resilience.related_: [performance, process, polish]
|
|
2331
|
-
// └─ reexamine_polish.related_: [a11y, performance, process]
|
|
2332
|
-
// └─ reexamine_keyboard.related_: [a11y, process]
|
|
2333
|
-
// └─ reexamine_performance.related_: [resilience, polish, process]
|
|
2334
|
-
//
|
|
2335
|
-
// Two-hop example: process → a11y → keyboard (discovers keyboard via a11y)
|
|
2336
|
-
// ═══════════════════════════════════════════
|
|
2337
2315
|
// MCP BRIDGE — Connect external MCP servers
|
|
2338
2316
|
// ═══════════════════════════════════════════
|
|
2339
2317
|
{
|
|
@@ -2432,43 +2410,55 @@ const REGISTRY_ENTRIES = [
|
|
|
2432
2410
|
phase: "implement",
|
|
2433
2411
|
},
|
|
2434
2412
|
// ═══════════════════════════════════════════
|
|
2435
|
-
//
|
|
2413
|
+
// QA ORCHESTRATION — Overstory multi-agent QA
|
|
2436
2414
|
// ═══════════════════════════════════════════
|
|
2437
2415
|
{
|
|
2438
|
-
name: "
|
|
2439
|
-
category: "
|
|
2440
|
-
tags: ["
|
|
2416
|
+
name: "overstory_fleet_status",
|
|
2417
|
+
category: "qa_orchestration",
|
|
2418
|
+
tags: ["overstory", "agent", "fleet", "status", "health", "multi-agent", "orchestration", "qa", "dogfood", "worktree"],
|
|
2441
2419
|
quickRef: {
|
|
2442
|
-
nextAction: "
|
|
2443
|
-
nextTools: ["
|
|
2444
|
-
methodology: "
|
|
2445
|
-
tip: "
|
|
2420
|
+
nextAction: "Review agent states. If agents are idle, run dogfood:overstory to start a QA session.",
|
|
2421
|
+
nextTools: ["overstory_qa_summary", "overstory_mail_log", "run_visual_qa_suite"],
|
|
2422
|
+
methodology: "ai_flywheel",
|
|
2423
|
+
tip: "Reads .overstory/agent-manifest.json and overstory.db. Shows configured agents, capabilities, gate policy, and live agent health.",
|
|
2446
2424
|
},
|
|
2447
|
-
phase: "
|
|
2425
|
+
phase: "utility",
|
|
2448
2426
|
},
|
|
2449
2427
|
{
|
|
2450
|
-
name: "
|
|
2451
|
-
category: "
|
|
2452
|
-
tags: ["
|
|
2428
|
+
name: "overstory_qa_summary",
|
|
2429
|
+
category: "qa_orchestration",
|
|
2430
|
+
tags: ["overstory", "qa", "gate", "summary", "stability", "grade", "ssim", "triage", "p0", "p1", "dogfood"],
|
|
2453
2431
|
quickRef: {
|
|
2454
|
-
nextAction: "
|
|
2455
|
-
nextTools: ["
|
|
2456
|
-
methodology: "
|
|
2457
|
-
tip: "
|
|
2432
|
+
nextAction: "If gate fails, check failing routes and fix p0/p1 issues. If gate passes, proceed to merge.",
|
|
2433
|
+
nextTools: ["overstory_mail_log", "overstory_fleet_status", "run_visual_qa_suite", "burst_capture"],
|
|
2434
|
+
methodology: "ai_flywheel",
|
|
2435
|
+
tip: "Aggregates SSIM stability grades from visual_qa_runs and Gemini QA triage from Overstory mail. Returns gate pass/fail verdict.",
|
|
2458
2436
|
},
|
|
2459
|
-
phase: "
|
|
2437
|
+
phase: "verify",
|
|
2460
2438
|
},
|
|
2461
2439
|
{
|
|
2462
|
-
name: "
|
|
2463
|
-
category: "
|
|
2464
|
-
tags: ["
|
|
2440
|
+
name: "overstory_mail_log",
|
|
2441
|
+
category: "qa_orchestration",
|
|
2442
|
+
tags: ["overstory", "mail", "log", "message", "route", "triage", "dispatch", "agent", "coordination"],
|
|
2465
2443
|
quickRef: {
|
|
2466
|
-
nextAction: "
|
|
2467
|
-
nextTools: ["
|
|
2468
|
-
methodology: "
|
|
2469
|
-
tip: "
|
|
2444
|
+
nextAction: "Review messages to understand QA session state. Filter by type or agent for focused view.",
|
|
2445
|
+
nextTools: ["overstory_qa_summary", "overstory_fleet_status", "overstory_merge_queue"],
|
|
2446
|
+
methodology: "ai_flywheel",
|
|
2447
|
+
tip: "Supports type_filter (result/dispatch/worker_done/escalation) and agent_filter. Shows structured mail payloads from the QA agent fleet.",
|
|
2470
2448
|
},
|
|
2471
|
-
phase: "
|
|
2449
|
+
phase: "utility",
|
|
2450
|
+
},
|
|
2451
|
+
{
|
|
2452
|
+
name: "overstory_merge_queue",
|
|
2453
|
+
category: "qa_orchestration",
|
|
2454
|
+
tags: ["overstory", "merge", "queue", "branch", "conflict", "gate", "builder", "qa", "resolution"],
|
|
2455
|
+
quickRef: {
|
|
2456
|
+
nextAction: "If branches are blocked, check QA gate failures. If pending, trigger merge with overstory merge --all.",
|
|
2457
|
+
nextTools: ["overstory_qa_summary", "overstory_mail_log", "overstory_fleet_status"],
|
|
2458
|
+
methodology: "ai_flywheel",
|
|
2459
|
+
tip: "Shows FIFO merge queue with conflict resolution tiers. Use include_completed:true to see merge history.",
|
|
2460
|
+
},
|
|
2461
|
+
phase: "utility",
|
|
2472
2462
|
},
|
|
2473
2463
|
];
|
|
2474
2464
|
// ── Exported lookup structures ───────────────────────────────────────────
|
|
@@ -2476,110 +2466,6 @@ const REGISTRY_ENTRIES = [
|
|
|
2476
2466
|
export const TOOL_REGISTRY = new Map(REGISTRY_ENTRIES.map((e) => [e.name, e]));
|
|
2477
2467
|
/** All registry entries as array */
|
|
2478
2468
|
export const ALL_REGISTRY_ENTRIES = REGISTRY_ENTRIES;
|
|
2479
|
-
// ── Auto-derive relatedTools for entries that don't have manual overrides ──
|
|
2480
|
-
// Uses 3 signals: same-category siblings, DOMAIN_CLUSTERS neighbors, tag overlap.
|
|
2481
|
-
// Must run after REGISTRY_ENTRIES is fully built. Forward-reference to DOMAIN_CLUSTERS
|
|
2482
|
-
// is fine because this runs at module load time (DOMAIN_CLUSTERS is defined below).
|
|
2483
|
-
/** Late-init: populated by _populateRelatedTools() at bottom of file */
|
|
2484
|
-
let _domainClusters = null;
|
|
2485
|
-
export function _setDomainClustersRef(clusters) {
|
|
2486
|
-
_domainClusters = clusters;
|
|
2487
|
-
}
|
|
2488
|
-
function computeRelatedTools(entry) {
|
|
2489
|
-
// If manually specified, use that
|
|
2490
|
-
if (entry.quickRef.relatedTools && entry.quickRef.relatedTools.length > 0) {
|
|
2491
|
-
return entry.quickRef.relatedTools;
|
|
2492
|
-
}
|
|
2493
|
-
const related = new Set();
|
|
2494
|
-
const nextToolsSet = new Set(entry.quickRef.nextTools);
|
|
2495
|
-
// 1. Same-category siblings (excluding self and nextTools), up to 3
|
|
2496
|
-
let sibCount = 0;
|
|
2497
|
-
for (const e of REGISTRY_ENTRIES) {
|
|
2498
|
-
if (sibCount >= 3)
|
|
2499
|
-
break;
|
|
2500
|
-
if (e.category === entry.category && e.name !== entry.name && !nextToolsSet.has(e.name)) {
|
|
2501
|
-
related.add(e.name);
|
|
2502
|
-
sibCount++;
|
|
2503
|
-
}
|
|
2504
|
-
}
|
|
2505
|
-
// 2. DOMAIN_CLUSTERS neighbors: tools from related categories, up to 2
|
|
2506
|
-
if (_domainClusters) {
|
|
2507
|
-
let clusterCount = 0;
|
|
2508
|
-
for (const cluster of Object.values(_domainClusters)) {
|
|
2509
|
-
if (clusterCount >= 2)
|
|
2510
|
-
break;
|
|
2511
|
-
if (cluster.includes(entry.category)) {
|
|
2512
|
-
for (const neighborCat of cluster) {
|
|
2513
|
-
if (clusterCount >= 2)
|
|
2514
|
-
break;
|
|
2515
|
-
if (neighborCat === entry.category)
|
|
2516
|
-
continue;
|
|
2517
|
-
for (const e of REGISTRY_ENTRIES) {
|
|
2518
|
-
if (e.category === neighborCat && !nextToolsSet.has(e.name) && !related.has(e.name)) {
|
|
2519
|
-
related.add(e.name);
|
|
2520
|
-
clusterCount++;
|
|
2521
|
-
break; // one tool per neighbor category
|
|
2522
|
-
}
|
|
2523
|
-
}
|
|
2524
|
-
}
|
|
2525
|
-
}
|
|
2526
|
-
}
|
|
2527
|
-
}
|
|
2528
|
-
// 3. Tag overlap: tools sharing 2+ tags (not in nextTools or already related), up to 2
|
|
2529
|
-
const myTags = new Set(entry.tags);
|
|
2530
|
-
let tagCount = 0;
|
|
2531
|
-
for (const other of REGISTRY_ENTRIES) {
|
|
2532
|
-
if (tagCount >= 2)
|
|
2533
|
-
break;
|
|
2534
|
-
if (other.name === entry.name || nextToolsSet.has(other.name) || related.has(other.name))
|
|
2535
|
-
continue;
|
|
2536
|
-
let overlap = 0;
|
|
2537
|
-
for (const t of other.tags) {
|
|
2538
|
-
if (myTags.has(t))
|
|
2539
|
-
overlap++;
|
|
2540
|
-
if (overlap >= 2)
|
|
2541
|
-
break;
|
|
2542
|
-
}
|
|
2543
|
-
if (overlap >= 2) {
|
|
2544
|
-
related.add(other.name);
|
|
2545
|
-
tagCount++;
|
|
2546
|
-
}
|
|
2547
|
-
}
|
|
2548
|
-
// 4. Fallback: if still empty (small category, all siblings in nextTools), accept 1-tag overlap
|
|
2549
|
-
if (related.size === 0) {
|
|
2550
|
-
for (const other of REGISTRY_ENTRIES) {
|
|
2551
|
-
if (related.size >= 3)
|
|
2552
|
-
break;
|
|
2553
|
-
if (other.name === entry.name || nextToolsSet.has(other.name))
|
|
2554
|
-
continue;
|
|
2555
|
-
const hasTagOverlap = other.tags.some((t) => myTags.has(t));
|
|
2556
|
-
if (hasTagOverlap) {
|
|
2557
|
-
related.add(other.name);
|
|
2558
|
-
}
|
|
2559
|
-
}
|
|
2560
|
-
}
|
|
2561
|
-
// 5. Last resort: if STILL empty, pick tools from the same phase (workflow adjacency)
|
|
2562
|
-
if (related.size === 0) {
|
|
2563
|
-
for (const other of REGISTRY_ENTRIES) {
|
|
2564
|
-
if (related.size >= 3)
|
|
2565
|
-
break;
|
|
2566
|
-
if (other.name === entry.name || nextToolsSet.has(other.name))
|
|
2567
|
-
continue;
|
|
2568
|
-
if (other.phase === entry.phase) {
|
|
2569
|
-
related.add(other.name);
|
|
2570
|
-
}
|
|
2571
|
-
}
|
|
2572
|
-
}
|
|
2573
|
-
return [...related].slice(0, 7); // hard cap at 7
|
|
2574
|
-
}
|
|
2575
|
-
/** Populate relatedTools for all registry entries. Called once at module load after DOMAIN_CLUSTERS exists. */
|
|
2576
|
-
export function _populateRelatedTools() {
|
|
2577
|
-
for (const entry of REGISTRY_ENTRIES) {
|
|
2578
|
-
if (!entry.quickRef.relatedTools || entry.quickRef.relatedTools.length === 0) {
|
|
2579
|
-
entry.quickRef.relatedTools = computeRelatedTools(entry);
|
|
2580
|
-
}
|
|
2581
|
-
}
|
|
2582
|
-
}
|
|
2583
2469
|
/** Get quick ref for a tool, with fallback for unregistered tools */
|
|
2584
2470
|
export function getQuickRef(toolName) {
|
|
2585
2471
|
return TOOL_REGISTRY.get(toolName)?.quickRef ?? null;
|
|
@@ -2631,7 +2517,7 @@ const CATEGORY_COMPLEXITY = {
|
|
|
2631
2517
|
email: "medium",
|
|
2632
2518
|
rss: "low",
|
|
2633
2519
|
architect: "low",
|
|
2634
|
-
|
|
2520
|
+
qa_orchestration: "low",
|
|
2635
2521
|
};
|
|
2636
2522
|
/** Per-tool complexity overrides (when category default is wrong) */
|
|
2637
2523
|
const TOOL_COMPLEXITY_OVERRIDES = {
|
|
@@ -2910,9 +2796,6 @@ const DOMAIN_CLUSTERS = {
|
|
|
2910
2796
|
writing: ["research_writing", "documentation"],
|
|
2911
2797
|
measurement: ["eval", "benchmark", "self_eval"],
|
|
2912
2798
|
};
|
|
2913
|
-
// Wire up domain clusters and auto-populate relatedTools for all registry entries
|
|
2914
|
-
_setDomainClustersRef(DOMAIN_CLUSTERS);
|
|
2915
|
-
_populateRelatedTools();
|
|
2916
2799
|
// ── Execution trace edges — co-occurrence mining from tool_call_log ────────
|
|
2917
2800
|
// Based on Agent-as-a-Graph (arxiv:2511.18194): execution trace edges
|
|
2918
2801
|
// mine sequential co-occurrence patterns to discover implicit tool relationships.
|
|
@@ -2953,36 +2836,17 @@ export function _setDbAccessor(accessor) {
|
|
|
2953
2836
|
*
|
|
2954
2837
|
* Approach: for each session, pull the ordered tool sequence, then count
|
|
2955
2838
|
* pairs within a sliding window of 5 calls. O(n) per session, no self-join.
|
|
2956
|
-
*
|
|
2957
|
-
* When transitive=true, infer A→C via A→B + B→C (two-hop co-occurrence).
|
|
2958
|
-
* Extended cap of 15 edges/tool (vs 10 for direct-only).
|
|
2959
2839
|
*/
|
|
2960
|
-
|
|
2961
|
-
let _transitiveCooccurrenceCacheTime = 0;
|
|
2962
|
-
function getCooccurrenceEdges(options) {
|
|
2963
|
-
const transitive = options?.transitive ?? false;
|
|
2840
|
+
function getCooccurrenceEdges() {
|
|
2964
2841
|
const now = Date.now();
|
|
2965
|
-
|
|
2966
|
-
|
|
2967
|
-
if (_transitiveCooccurrenceCache && now - _transitiveCooccurrenceCacheTime < COOCCURRENCE_TTL_MS) {
|
|
2968
|
-
return _transitiveCooccurrenceCache;
|
|
2969
|
-
}
|
|
2970
|
-
}
|
|
2971
|
-
else {
|
|
2972
|
-
if (_cooccurrenceCache && now - _cooccurrenceCacheTime < COOCCURRENCE_TTL_MS) {
|
|
2973
|
-
return _cooccurrenceCache;
|
|
2974
|
-
}
|
|
2842
|
+
if (_cooccurrenceCache && now - _cooccurrenceCacheTime < COOCCURRENCE_TTL_MS) {
|
|
2843
|
+
return _cooccurrenceCache;
|
|
2975
2844
|
}
|
|
2976
|
-
|
|
2977
|
-
const directEdges = new Map();
|
|
2845
|
+
const edges = new Map();
|
|
2978
2846
|
if (!_dbAccessor) {
|
|
2979
|
-
_cooccurrenceCache =
|
|
2847
|
+
_cooccurrenceCache = edges;
|
|
2980
2848
|
_cooccurrenceCacheTime = now;
|
|
2981
|
-
|
|
2982
|
-
_transitiveCooccurrenceCache = directEdges;
|
|
2983
|
-
_transitiveCooccurrenceCacheTime = now;
|
|
2984
|
-
}
|
|
2985
|
-
return directEdges;
|
|
2849
|
+
return edges;
|
|
2986
2850
|
}
|
|
2987
2851
|
try {
|
|
2988
2852
|
const db = _dbAccessor();
|
|
@@ -3023,51 +2887,24 @@ function getCooccurrenceEdges(options) {
|
|
|
3023
2887
|
.sort((a, b) => b[1] - a[1]);
|
|
3024
2888
|
for (const [key] of sorted) {
|
|
3025
2889
|
const [toolA, toolB] = key.split("\0");
|
|
3026
|
-
const list =
|
|
2890
|
+
const list = edges.get(toolA) ?? [];
|
|
3027
2891
|
if (list.length < 10) {
|
|
3028
2892
|
list.push(toolB);
|
|
3029
|
-
|
|
2893
|
+
edges.set(toolA, list);
|
|
3030
2894
|
}
|
|
3031
2895
|
}
|
|
3032
2896
|
}
|
|
3033
2897
|
catch {
|
|
3034
2898
|
// No DB or table not yet created — return empty (graceful degradation)
|
|
3035
2899
|
}
|
|
3036
|
-
|
|
3037
|
-
_cooccurrenceCache = directEdges;
|
|
2900
|
+
_cooccurrenceCache = edges;
|
|
3038
2901
|
_cooccurrenceCacheTime = now;
|
|
3039
|
-
|
|
3040
|
-
return directEdges;
|
|
3041
|
-
// Transitive inference: A→B and B→C ⟹ A→C (two-hop)
|
|
3042
|
-
const transitiveEdges = new Map([...directEdges.entries()].map(([k, v]) => [k, [...v]]));
|
|
3043
|
-
for (const [toolA, directNeighbors] of directEdges) {
|
|
3044
|
-
const existingSet = new Set(directNeighbors);
|
|
3045
|
-
existingSet.add(toolA); // avoid self-loops
|
|
3046
|
-
for (const toolB of directNeighbors) {
|
|
3047
|
-
const bNeighbors = directEdges.get(toolB);
|
|
3048
|
-
if (!bNeighbors)
|
|
3049
|
-
continue;
|
|
3050
|
-
const list = transitiveEdges.get(toolA);
|
|
3051
|
-
for (const toolC of bNeighbors) {
|
|
3052
|
-
if (existingSet.has(toolC))
|
|
3053
|
-
continue;
|
|
3054
|
-
if (list.length >= 15)
|
|
3055
|
-
break; // extended cap for transitive
|
|
3056
|
-
list.push(toolC);
|
|
3057
|
-
existingSet.add(toolC);
|
|
3058
|
-
}
|
|
3059
|
-
}
|
|
3060
|
-
}
|
|
3061
|
-
_transitiveCooccurrenceCache = transitiveEdges;
|
|
3062
|
-
_transitiveCooccurrenceCacheTime = now;
|
|
3063
|
-
return transitiveEdges;
|
|
2902
|
+
return edges;
|
|
3064
2903
|
}
|
|
3065
2904
|
/** Reset co-occurrence cache — for testing only. */
|
|
3066
2905
|
export function _resetCooccurrenceCache() {
|
|
3067
2906
|
_cooccurrenceCache = null;
|
|
3068
2907
|
_cooccurrenceCacheTime = 0;
|
|
3069
|
-
_transitiveCooccurrenceCache = null;
|
|
3070
|
-
_transitiveCooccurrenceCacheTime = 0;
|
|
3071
2908
|
}
|
|
3072
2909
|
/** Inject co-occurrence edges directly — for testing only. */
|
|
3073
2910
|
export function _setCooccurrenceForTesting(edges) {
|
|
@@ -3459,8 +3296,7 @@ export function hybridSearch(query, tools, options) {
|
|
|
3459
3296
|
});
|
|
3460
3297
|
}
|
|
3461
3298
|
results.sort((a, b) => b.score - a.score);
|
|
3462
|
-
|
|
3463
|
-
return results.slice(offset, offset + limit);
|
|
3299
|
+
return results.slice(0, limit);
|
|
3464
3300
|
}
|
|
3465
3301
|
/** Available search modes for discover_tools */
|
|
3466
3302
|
export const SEARCH_MODES = ["hybrid", "fuzzy", "regex", "prefix", "semantic", "exact", "dense", "embedding"];
|
|
@@ -3482,6 +3318,7 @@ export const WORKFLOW_CHAINS = {
|
|
|
3482
3318
|
{ tool: "run_mandatory_flywheel", action: "6-step final verification" },
|
|
3483
3319
|
{ tool: "record_learning", action: "Capture what you learned" },
|
|
3484
3320
|
{ tool: "promote_to_eval", action: "Feed into eval batch" },
|
|
3321
|
+
{ tool: "save_session_note", action: "Save traceability note — cite original request, summarize what was delivered" },
|
|
3485
3322
|
],
|
|
3486
3323
|
},
|
|
3487
3324
|
fix_bug: {
|
|
@@ -3494,6 +3331,7 @@ export const WORKFLOW_CHAINS = {
|
|
|
3494
3331
|
{ tool: "log_test_result", action: "Record regression test" },
|
|
3495
3332
|
{ tool: "run_mandatory_flywheel", action: "6-step verification" },
|
|
3496
3333
|
{ tool: "record_learning", action: "Record the gotcha/pattern" },
|
|
3334
|
+
{ tool: "save_session_note", action: "Save traceability note — cite original request, record root cause and fix" },
|
|
3497
3335
|
],
|
|
3498
3336
|
},
|
|
3499
3337
|
ui_change: {
|
|
@@ -3507,6 +3345,7 @@ export const WORKFLOW_CHAINS = {
|
|
|
3507
3345
|
{ tool: "run_quality_gate", action: "Run ui_ux_qa gate" },
|
|
3508
3346
|
{ tool: "run_mandatory_flywheel", action: "Final verification" },
|
|
3509
3347
|
{ tool: "record_learning", action: "Record UI patterns" },
|
|
3348
|
+
{ tool: "save_session_note", action: "Save traceability note — cite original request, record visual evidence path" },
|
|
3510
3349
|
],
|
|
3511
3350
|
},
|
|
3512
3351
|
parallel_project: {
|
|
@@ -3824,16 +3663,51 @@ export const WORKFLOW_CHAINS = {
|
|
|
3824
3663
|
{ tool: "save_session_note", action: "Log sent emails so you have an audit trail that survives compaction" },
|
|
3825
3664
|
],
|
|
3826
3665
|
},
|
|
3827
|
-
|
|
3828
|
-
name: "
|
|
3829
|
-
description: "
|
|
3666
|
+
webmcp_discovery: {
|
|
3667
|
+
name: "WebMCP Origin Discovery",
|
|
3668
|
+
description: "Connect to a WebMCP-enabled origin, discover its tools, and invoke them from the agent",
|
|
3669
|
+
steps: [
|
|
3670
|
+
{ tool: "connect_webmcp_origin", action: "Connect to the target origin URL and establish a WebMCP session" },
|
|
3671
|
+
{ tool: "list_webmcp_tools", action: "List all tools exposed by the origin with schemas and annotations" },
|
|
3672
|
+
{ tool: "call_webmcp_tool", action: "Invoke a specific tool on the remote origin with arguments" },
|
|
3673
|
+
{ tool: "disconnect_webmcp_origin", action: "Clean up the WebMCP session when done" },
|
|
3674
|
+
],
|
|
3675
|
+
},
|
|
3676
|
+
batch_autopilot: {
|
|
3677
|
+
name: "Batch Autopilot Run",
|
|
3678
|
+
description: "Set up an operator profile and run a batch autopilot session for autonomous agent tasks",
|
|
3679
|
+
steps: [
|
|
3680
|
+
{ tool: "setup_operator_profile", action: "Create or update USER.md and operator profile for autopilot context" },
|
|
3681
|
+
{ tool: "get_autopilot_status", action: "Check current autopilot readiness, profile completeness, and last run status" },
|
|
3682
|
+
{ tool: "trigger_batch_run", action: "Start a batch autopilot run using the operator profile as context" },
|
|
3683
|
+
{ tool: "get_batch_run_history", action: "Review history of past batch runs, outcomes, and timing" },
|
|
3684
|
+
{ tool: "sync_operator_profile", action: "Sync operator profile state from disk after manual edits" },
|
|
3685
|
+
],
|
|
3686
|
+
},
|
|
3687
|
+
daily_review: {
|
|
3688
|
+
name: "Daily Brief Review",
|
|
3689
|
+
description: "Pull the latest daily brief, review narrative threads, check ops dashboard, and sync to local storage",
|
|
3690
|
+
steps: [
|
|
3691
|
+
{ tool: "sync_daily_brief", action: "Pull today's brief and narrative from Convex into local SQLite" },
|
|
3692
|
+
{ tool: "get_daily_brief_summary", action: "Get the full brief summary with key signals and insights" },
|
|
3693
|
+
{ tool: "get_narrative_status", action: "Check narrative thread status — dominant story, under-reported angle, evidence scores" },
|
|
3694
|
+
{ tool: "get_ops_dashboard", action: "Review pipeline health: posting status, tool usage, active workflows" },
|
|
3695
|
+
{ tool: "open_local_dashboard", action: "Open the local HTML dashboard in the browser for visual review" },
|
|
3696
|
+
],
|
|
3697
|
+
},
|
|
3698
|
+
gemini_qa: {
|
|
3699
|
+
name: "Gemini Vision QA Loop",
|
|
3700
|
+
description: "Automated UI/UX quality gate — capture screenshots (dark/light × desktop/mobile), send to Gemini Flash for Jony Ive product design review, fix issues, loop until 100/100",
|
|
3830
3701
|
steps: [
|
|
3831
|
-
{ tool: "
|
|
3832
|
-
{ tool: "
|
|
3833
|
-
{ tool: "
|
|
3834
|
-
{ tool: "
|
|
3835
|
-
{ tool: "
|
|
3836
|
-
{ tool: "
|
|
3702
|
+
{ tool: "check_mcp_setup", action: "Verify Gemini API key (GOOGLE_AI_KEY) and vision domain are ready" },
|
|
3703
|
+
{ tool: "start_verification_cycle", action: "Open a verification cycle titled 'Gemini QA Loop' to track progress" },
|
|
3704
|
+
{ tool: "save_session_note", action: "Shell: `npx vite build` then `npx playwright test tests/e2e/full-ui-dogfood.spec.ts --project=chromium --workers=1` — capture 4-variant screenshots" },
|
|
3705
|
+
{ tool: "save_session_note", action: "Shell: `npm run dogfood:publish` — copy screenshots to public/dogfood/ with variant metadata manifest" },
|
|
3706
|
+
{ tool: "save_session_note", action: "Shell: `npx vite build && node scripts/ui/runDogfoodGeminiQa.mjs` — rebuild, launch preview, trigger Gemini QA" },
|
|
3707
|
+
{ tool: "log_test_result", action: "Log QA score from public/dogfood/qa-results.json — formula: 100 - P1×6 - P2×2 - P3×1" },
|
|
3708
|
+
{ tool: "save_session_note", action: "Fix P1 issues (6pts each) then P2 (2pts) then P3 (1pt) — root-cause each before fixing" },
|
|
3709
|
+
{ tool: "get_overstory_qa_gate", action: "Check QA gate for per-route stability grades and issue counts" },
|
|
3710
|
+
{ tool: "record_learning", action: "Record QA trajectory and Gemini finding patterns for regression tracking" },
|
|
3837
3711
|
],
|
|
3838
3712
|
},
|
|
3839
3713
|
};
|