nodebench-mcp 2.11.0 → 2.14.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 +809 -809
- package/README.md +443 -431
- package/STYLE_GUIDE.md +477 -477
- package/dist/__tests__/evalHarness.test.js +1 -1
- package/dist/__tests__/gaiaCapabilityAudioEval.test.js +9 -14
- package/dist/__tests__/gaiaCapabilityAudioEval.test.js.map +1 -1
- package/dist/__tests__/gaiaCapabilityEval.test.js +88 -14
- package/dist/__tests__/gaiaCapabilityEval.test.js.map +1 -1
- package/dist/__tests__/gaiaCapabilityFilesEval.test.js +9 -5
- package/dist/__tests__/gaiaCapabilityFilesEval.test.js.map +1 -1
- package/dist/__tests__/gaiaCapabilityMediaEval.test.js +165 -17
- package/dist/__tests__/gaiaCapabilityMediaEval.test.js.map +1 -1
- package/dist/__tests__/helpers/answerMatch.d.ts +36 -7
- package/dist/__tests__/helpers/answerMatch.js +224 -35
- package/dist/__tests__/helpers/answerMatch.js.map +1 -1
- package/dist/__tests__/helpers/textLlm.d.ts +1 -1
- package/dist/__tests__/presetRealWorldBench.test.d.ts +1 -0
- package/dist/__tests__/presetRealWorldBench.test.js +850 -0
- package/dist/__tests__/presetRealWorldBench.test.js.map +1 -0
- package/dist/__tests__/tools.test.js +20 -7
- package/dist/__tests__/tools.test.js.map +1 -1
- package/dist/__tests__/toolsetGatingEval.test.js +21 -11
- package/dist/__tests__/toolsetGatingEval.test.js.map +1 -1
- package/dist/db.js +21 -0
- package/dist/db.js.map +1 -1
- package/dist/index.js +424 -327
- package/dist/index.js.map +1 -1
- package/dist/tools/agentBootstrapTools.js +258 -258
- package/dist/tools/boilerplateTools.js +144 -144
- package/dist/tools/cCompilerBenchmarkTools.js +33 -33
- package/dist/tools/documentationTools.js +59 -59
- package/dist/tools/flywheelTools.js +6 -6
- package/dist/tools/gitWorkflowTools.d.ts +11 -0
- package/dist/tools/gitWorkflowTools.js +580 -0
- package/dist/tools/gitWorkflowTools.js.map +1 -0
- package/dist/tools/learningTools.js +26 -26
- package/dist/tools/localFileTools.d.ts +3 -0
- package/dist/tools/localFileTools.js +3164 -125
- package/dist/tools/localFileTools.js.map +1 -1
- package/dist/tools/metaTools.js +82 -0
- package/dist/tools/metaTools.js.map +1 -1
- package/dist/tools/parallelAgentTools.js +228 -0
- package/dist/tools/parallelAgentTools.js.map +1 -1
- package/dist/tools/patternTools.d.ts +13 -0
- package/dist/tools/patternTools.js +456 -0
- package/dist/tools/patternTools.js.map +1 -0
- package/dist/tools/reconTools.js +31 -31
- package/dist/tools/selfEvalTools.js +44 -44
- package/dist/tools/seoTools.d.ts +16 -0
- package/dist/tools/seoTools.js +866 -0
- package/dist/tools/seoTools.js.map +1 -0
- package/dist/tools/sessionMemoryTools.d.ts +15 -0
- package/dist/tools/sessionMemoryTools.js +348 -0
- package/dist/tools/sessionMemoryTools.js.map +1 -0
- package/dist/tools/toolRegistry.d.ts +4 -0
- package/dist/tools/toolRegistry.js +489 -0
- package/dist/tools/toolRegistry.js.map +1 -1
- package/dist/tools/toonTools.d.ts +15 -0
- package/dist/tools/toonTools.js +94 -0
- package/dist/tools/toonTools.js.map +1 -0
- package/dist/tools/verificationTools.js +41 -41
- package/dist/tools/visionTools.js +17 -17
- package/dist/tools/voiceBridgeTools.d.ts +15 -0
- package/dist/tools/voiceBridgeTools.js +1427 -0
- package/dist/tools/voiceBridgeTools.js.map +1 -0
- package/dist/tools/webTools.js +18 -18
- package/package.json +102 -101
|
@@ -1494,6 +1494,336 @@ const REGISTRY_ENTRIES = [
|
|
|
1494
1494
|
},
|
|
1495
1495
|
phase: "meta",
|
|
1496
1496
|
},
|
|
1497
|
+
// ── Image solver tools (GAIA media lane) ──────────────────────────────
|
|
1498
|
+
{
|
|
1499
|
+
name: "solve_red_green_deviation_average_from_image",
|
|
1500
|
+
category: "gaia_solvers",
|
|
1501
|
+
tags: ["image", "ocr", "statistics", "deviation", "red", "green", "color", "pixel", "media"],
|
|
1502
|
+
quickRef: {
|
|
1503
|
+
nextAction: "Pass the image path. Tool extracts red/green numbers via color masking, computes population/sample std-dev, returns average.",
|
|
1504
|
+
nextTools: ["read_image_ocr_text", "log_test_result"],
|
|
1505
|
+
methodology: "gaia_media_solve",
|
|
1506
|
+
tip: "Specify decimals parameter for precision control (default 2).",
|
|
1507
|
+
},
|
|
1508
|
+
phase: "utility",
|
|
1509
|
+
},
|
|
1510
|
+
{
|
|
1511
|
+
name: "solve_green_polygon_area_from_image",
|
|
1512
|
+
category: "gaia_solvers",
|
|
1513
|
+
tags: ["image", "polygon", "area", "green", "geometry", "pixel", "ocr", "media"],
|
|
1514
|
+
quickRef: {
|
|
1515
|
+
nextAction: "Pass the image path. Tool segments green pixels, traces boundary, reads purple labels for scale, computes area via Shoelace formula.",
|
|
1516
|
+
nextTools: ["read_image_ocr_text", "log_test_result"],
|
|
1517
|
+
methodology: "gaia_media_solve",
|
|
1518
|
+
tip: "Works best on clean diagrams with distinct green fill and purple numeric labels.",
|
|
1519
|
+
},
|
|
1520
|
+
phase: "utility",
|
|
1521
|
+
},
|
|
1522
|
+
{
|
|
1523
|
+
name: "grade_fraction_quiz_from_image",
|
|
1524
|
+
category: "gaia_solvers",
|
|
1525
|
+
tags: ["image", "ocr", "fractions", "quiz", "grading", "math", "score", "media"],
|
|
1526
|
+
quickRef: {
|
|
1527
|
+
nextAction: "Pass image path and scoring params (bonusPoints, pointsAddSubtract, etc.). Tool OCRs problems, computes correct answers, grades each.",
|
|
1528
|
+
nextTools: ["read_image_ocr_text", "log_test_result"],
|
|
1529
|
+
methodology: "gaia_media_solve",
|
|
1530
|
+
tip: "Extracts problem types (add/sub, mul/div, improper, mixed) and scores per type.",
|
|
1531
|
+
},
|
|
1532
|
+
phase: "utility",
|
|
1533
|
+
},
|
|
1534
|
+
{
|
|
1535
|
+
name: "extract_fractions_and_simplify_from_image",
|
|
1536
|
+
category: "gaia_solvers",
|
|
1537
|
+
tags: ["image", "ocr", "fractions", "simplify", "math", "worksheet", "media"],
|
|
1538
|
+
quickRef: {
|
|
1539
|
+
nextAction: "Pass image path. Tool detects slash fractions in body text and stacked fractions in worksheet region, simplifies all via GCD.",
|
|
1540
|
+
nextTools: ["read_image_ocr_text", "log_test_result"],
|
|
1541
|
+
methodology: "gaia_media_solve",
|
|
1542
|
+
tip: "Returns comma-separated simplified fractions. Handles both 3/4 and stacked numerator-over-denominator formats.",
|
|
1543
|
+
},
|
|
1544
|
+
phase: "utility",
|
|
1545
|
+
},
|
|
1546
|
+
{
|
|
1547
|
+
name: "solve_bass_clef_age_from_image",
|
|
1548
|
+
category: "gaia_solvers",
|
|
1549
|
+
tags: ["image", "ocr", "music", "bass-clef", "notes", "staff", "media"],
|
|
1550
|
+
quickRef: {
|
|
1551
|
+
nextAction: "Pass image path. Tool detects staff lines, maps note positions to bass-clef letters, forms a word, and derives the age value.",
|
|
1552
|
+
nextTools: ["read_image_ocr_text", "log_test_result"],
|
|
1553
|
+
methodology: "gaia_media_solve",
|
|
1554
|
+
tip: "Works on simple single-staff bass-clef images. Upscales small images for robust detection.",
|
|
1555
|
+
},
|
|
1556
|
+
phase: "utility",
|
|
1557
|
+
},
|
|
1558
|
+
{
|
|
1559
|
+
name: "solve_storage_upgrade_cost_per_file_from_image",
|
|
1560
|
+
category: "gaia_solvers",
|
|
1561
|
+
tags: ["image", "ocr", "storage", "pricing", "cost", "upgrade", "media"],
|
|
1562
|
+
quickRef: {
|
|
1563
|
+
nextAction: "Pass image path and plan params (currentPlanName, filesUploaded, overLimitGb, additionalFiles). Tool OCRs pricing table and computes cost/file.",
|
|
1564
|
+
nextTools: ["read_image_ocr_text", "log_test_result"],
|
|
1565
|
+
methodology: "gaia_media_solve",
|
|
1566
|
+
tip: "Detects plan tiers (Standard/Plus/Premium) and their storage limits from the image.",
|
|
1567
|
+
},
|
|
1568
|
+
phase: "utility",
|
|
1569
|
+
},
|
|
1570
|
+
// ═══ SESSION MEMORY (inspired by claude-mem, planning-with-files, oh-my-claudecode) ═══
|
|
1571
|
+
{
|
|
1572
|
+
name: "save_session_note",
|
|
1573
|
+
category: "session_memory",
|
|
1574
|
+
tags: ["note", "save", "persist", "compaction", "memory", "finding", "decision", "progress", "filesystem"],
|
|
1575
|
+
quickRef: {
|
|
1576
|
+
nextAction: "Note saved to filesystem. Continue working — it survives context compaction. Use load_session_notes after /clear to recover.",
|
|
1577
|
+
nextTools: ["load_session_notes", "refresh_task_context", "record_learning"],
|
|
1578
|
+
methodology: "session_recovery",
|
|
1579
|
+
tip: "Call after every major finding or decision. 2-action save rule: save after every 2 web searches.",
|
|
1580
|
+
},
|
|
1581
|
+
phase: "utility",
|
|
1582
|
+
},
|
|
1583
|
+
{
|
|
1584
|
+
name: "load_session_notes",
|
|
1585
|
+
category: "session_memory",
|
|
1586
|
+
tags: ["note", "load", "recover", "compaction", "resume", "session", "filesystem", "context"],
|
|
1587
|
+
quickRef: {
|
|
1588
|
+
nextAction: "Notes loaded. Review findings and decisions, then continue where you left off. Use refresh_task_context for a full context refresher.",
|
|
1589
|
+
nextTools: ["refresh_task_context", "search_all_knowledge", "save_session_note"],
|
|
1590
|
+
methodology: "session_recovery",
|
|
1591
|
+
tip: "Use date='all' to search across sessions. Use keyword filter to find specific topics.",
|
|
1592
|
+
},
|
|
1593
|
+
phase: "research",
|
|
1594
|
+
},
|
|
1595
|
+
{
|
|
1596
|
+
name: "refresh_task_context",
|
|
1597
|
+
category: "session_memory",
|
|
1598
|
+
tags: ["refresh", "context", "attention", "drift", "goal", "focus", "recite", "mid-session", "compaction"],
|
|
1599
|
+
quickRef: {
|
|
1600
|
+
nextAction: "Context refreshed. Re-read the taskDescription and open gaps. Focus on the highest-severity gap first.",
|
|
1601
|
+
nextTools: ["save_session_note", "get_verification_status", "search_all_knowledge"],
|
|
1602
|
+
methodology: "session_recovery",
|
|
1603
|
+
tip: "Call after 30+ tool calls to prevent attention drift. Re-state your original goal in taskDescription.",
|
|
1604
|
+
},
|
|
1605
|
+
phase: "meta",
|
|
1606
|
+
},
|
|
1607
|
+
// ═══ TOON FORMAT ═══
|
|
1608
|
+
{
|
|
1609
|
+
name: "toon_encode",
|
|
1610
|
+
category: "toon",
|
|
1611
|
+
tags: ["toon", "encode", "token", "compress", "serialize", "format", "json", "optimize"],
|
|
1612
|
+
quickRef: {
|
|
1613
|
+
nextAction: "Data encoded to TOON. Pass the toon string to another LLM call or agent for ~40% token savings.",
|
|
1614
|
+
nextTools: ["toon_decode", "save_session_note"],
|
|
1615
|
+
methodology: "toon_format",
|
|
1616
|
+
tip: "Use for large data payloads before LLM calls. Savings compound in iterative workflows.",
|
|
1617
|
+
},
|
|
1618
|
+
phase: "utility",
|
|
1619
|
+
},
|
|
1620
|
+
{
|
|
1621
|
+
name: "toon_decode",
|
|
1622
|
+
category: "toon",
|
|
1623
|
+
tags: ["toon", "decode", "parse", "deserialize", "format", "json"],
|
|
1624
|
+
quickRef: {
|
|
1625
|
+
nextAction: "Data decoded to JSON. Process the result with any standard tool.",
|
|
1626
|
+
nextTools: ["toon_encode"],
|
|
1627
|
+
methodology: "toon_format",
|
|
1628
|
+
},
|
|
1629
|
+
phase: "utility",
|
|
1630
|
+
},
|
|
1631
|
+
// ═══ PATTERN MINING ═══
|
|
1632
|
+
{
|
|
1633
|
+
name: "mine_session_patterns",
|
|
1634
|
+
category: "pattern",
|
|
1635
|
+
tags: ["pattern", "mine", "session", "trajectory", "bigram", "trigram", "sequence", "analytics"],
|
|
1636
|
+
quickRef: {
|
|
1637
|
+
nextAction: "Patterns extracted. Review success rates — high-failure sequences indicate workflow issues. Use predict_risks_from_patterns before your next task.",
|
|
1638
|
+
nextTools: ["predict_risks_from_patterns", "record_learning"],
|
|
1639
|
+
methodology: "self_reinforced_learning",
|
|
1640
|
+
tip: "Run periodically to discover which tool sequences reliably succeed vs fail.",
|
|
1641
|
+
},
|
|
1642
|
+
phase: "meta",
|
|
1643
|
+
},
|
|
1644
|
+
{
|
|
1645
|
+
name: "predict_risks_from_patterns",
|
|
1646
|
+
category: "pattern",
|
|
1647
|
+
tags: ["predict", "risk", "pattern", "failure", "session", "forecast", "gap"],
|
|
1648
|
+
quickRef: {
|
|
1649
|
+
nextAction: "Risk predictions generated. Address high-confidence risks before starting. Use assess_risk for formal risk assessment.",
|
|
1650
|
+
nextTools: ["assess_risk", "search_all_knowledge", "mine_session_patterns"],
|
|
1651
|
+
methodology: "self_reinforced_learning",
|
|
1652
|
+
tip: "Run at the start of every task to catch known failure modes before they bite.",
|
|
1653
|
+
},
|
|
1654
|
+
phase: "research",
|
|
1655
|
+
},
|
|
1656
|
+
// ═══ AGENT MAILBOX ═══
|
|
1657
|
+
{
|
|
1658
|
+
name: "send_agent_message",
|
|
1659
|
+
category: "parallel_agents",
|
|
1660
|
+
tags: ["message", "send", "mailbox", "agent", "handoff", "communication", "blocker"],
|
|
1661
|
+
quickRef: {
|
|
1662
|
+
nextAction: "Message sent. The recipient will see it when they call check_agent_inbox. For urgent blockers, use broadcast_agent_update instead.",
|
|
1663
|
+
nextTools: ["check_agent_inbox", "broadcast_agent_update", "get_parallel_status"],
|
|
1664
|
+
methodology: "parallel_agent_teams",
|
|
1665
|
+
},
|
|
1666
|
+
phase: "implement",
|
|
1667
|
+
},
|
|
1668
|
+
{
|
|
1669
|
+
name: "check_agent_inbox",
|
|
1670
|
+
category: "parallel_agents",
|
|
1671
|
+
tags: ["inbox", "check", "message", "mailbox", "agent", "read", "handoff"],
|
|
1672
|
+
quickRef: {
|
|
1673
|
+
nextAction: "Messages retrieved. Handle blockers first (CRITICAL priority). Task assignments should be claimed with claim_agent_task.",
|
|
1674
|
+
nextTools: ["claim_agent_task", "send_agent_message", "get_parallel_status"],
|
|
1675
|
+
methodology: "parallel_agent_teams",
|
|
1676
|
+
tip: "Call at session start to pick up handoffs and blockers from other agents.",
|
|
1677
|
+
},
|
|
1678
|
+
phase: "research",
|
|
1679
|
+
},
|
|
1680
|
+
{
|
|
1681
|
+
name: "broadcast_agent_update",
|
|
1682
|
+
category: "parallel_agents",
|
|
1683
|
+
tags: ["broadcast", "update", "agent", "status", "announce", "milestone"],
|
|
1684
|
+
quickRef: {
|
|
1685
|
+
nextAction: "Broadcast sent to all agents. Continue your work — others will see it in their inbox.",
|
|
1686
|
+
nextTools: ["get_parallel_status", "send_agent_message"],
|
|
1687
|
+
methodology: "parallel_agent_teams",
|
|
1688
|
+
},
|
|
1689
|
+
phase: "implement",
|
|
1690
|
+
},
|
|
1691
|
+
// ═══ GIT WORKFLOW ═══
|
|
1692
|
+
{
|
|
1693
|
+
name: "check_git_compliance",
|
|
1694
|
+
category: "git_workflow",
|
|
1695
|
+
tags: ["git", "compliance", "branch", "commit", "conventional", "protected"],
|
|
1696
|
+
quickRef: {
|
|
1697
|
+
nextAction: "Git compliance checked. Fix any warnings before proceeding. If on a protected branch, create a feature branch first.",
|
|
1698
|
+
nextTools: ["review_pr_checklist", "enforce_merge_gate", "assess_risk"],
|
|
1699
|
+
methodology: "verification",
|
|
1700
|
+
tip: "Run before starting work to ensure you're on the right branch with clean state.",
|
|
1701
|
+
},
|
|
1702
|
+
phase: "verify",
|
|
1703
|
+
},
|
|
1704
|
+
{
|
|
1705
|
+
name: "review_pr_checklist",
|
|
1706
|
+
category: "git_workflow",
|
|
1707
|
+
tags: ["pr", "pull-request", "review", "checklist", "merge", "code-review"],
|
|
1708
|
+
quickRef: {
|
|
1709
|
+
nextAction: "PR checklist evaluated. Address failing items. If verificationCycleId provided, cross-references NodeBench verification status.",
|
|
1710
|
+
nextTools: ["enforce_merge_gate", "run_quality_gate", "record_learning"],
|
|
1711
|
+
},
|
|
1712
|
+
phase: "verify",
|
|
1713
|
+
},
|
|
1714
|
+
{
|
|
1715
|
+
name: "enforce_merge_gate",
|
|
1716
|
+
category: "git_workflow",
|
|
1717
|
+
tags: ["merge", "gate", "pre-merge", "validation", "branch", "deploy"],
|
|
1718
|
+
quickRef: {
|
|
1719
|
+
nextAction: "Merge gate evaluated. If canMerge=false, resolve all blockingIssues before merging.",
|
|
1720
|
+
nextTools: ["check_git_compliance", "run_quality_gate", "run_mandatory_flywheel"],
|
|
1721
|
+
methodology: "verification",
|
|
1722
|
+
tip: "Enable requireVerification and requireTests for maximum safety.",
|
|
1723
|
+
},
|
|
1724
|
+
phase: "ship",
|
|
1725
|
+
},
|
|
1726
|
+
// ═══ SEO ═══
|
|
1727
|
+
{
|
|
1728
|
+
name: "seo_audit_url",
|
|
1729
|
+
category: "seo",
|
|
1730
|
+
tags: ["seo", "audit", "meta", "title", "description", "og", "heading", "structured-data"],
|
|
1731
|
+
quickRef: {
|
|
1732
|
+
nextAction: "SEO audit complete. Address low-scoring elements first. Use analyze_seo_content for deeper content analysis.",
|
|
1733
|
+
nextTools: ["analyze_seo_content", "check_page_performance", "check_wordpress_site"],
|
|
1734
|
+
methodology: "seo_audit",
|
|
1735
|
+
},
|
|
1736
|
+
phase: "verify",
|
|
1737
|
+
},
|
|
1738
|
+
{
|
|
1739
|
+
name: "check_page_performance",
|
|
1740
|
+
category: "seo",
|
|
1741
|
+
tags: ["performance", "speed", "response-time", "compression", "cache", "lighthouse"],
|
|
1742
|
+
quickRef: {
|
|
1743
|
+
nextAction: "Performance checked. Enable compression and caching if missing. For deeper analysis, use browser dev tools.",
|
|
1744
|
+
nextTools: ["seo_audit_url", "record_learning"],
|
|
1745
|
+
methodology: "seo_audit",
|
|
1746
|
+
},
|
|
1747
|
+
phase: "verify",
|
|
1748
|
+
},
|
|
1749
|
+
{
|
|
1750
|
+
name: "analyze_seo_content",
|
|
1751
|
+
category: "seo",
|
|
1752
|
+
tags: ["content", "readability", "keyword", "density", "flesch-kincaid", "headings", "links"],
|
|
1753
|
+
quickRef: {
|
|
1754
|
+
nextAction: "Content analyzed. Target readability score 60-80. Keyword density 0.5-3% is optimal.",
|
|
1755
|
+
nextTools: ["seo_audit_url", "record_learning"],
|
|
1756
|
+
methodology: "seo_audit",
|
|
1757
|
+
},
|
|
1758
|
+
phase: "verify",
|
|
1759
|
+
},
|
|
1760
|
+
{
|
|
1761
|
+
name: "check_wordpress_site",
|
|
1762
|
+
category: "seo",
|
|
1763
|
+
tags: ["wordpress", "wp", "security", "login", "xmlrpc", "plugin", "theme"],
|
|
1764
|
+
quickRef: {
|
|
1765
|
+
nextAction: "WordPress check complete. Address security risks (xmlrpc, exposed login) immediately. Use scan_wordpress_updates for vulnerability details.",
|
|
1766
|
+
nextTools: ["scan_wordpress_updates", "seo_audit_url", "record_learning"],
|
|
1767
|
+
methodology: "seo_audit",
|
|
1768
|
+
},
|
|
1769
|
+
phase: "verify",
|
|
1770
|
+
},
|
|
1771
|
+
{
|
|
1772
|
+
name: "scan_wordpress_updates",
|
|
1773
|
+
category: "seo",
|
|
1774
|
+
tags: ["wordpress", "plugin", "theme", "vulnerability", "wpscan", "update", "cve"],
|
|
1775
|
+
quickRef: {
|
|
1776
|
+
nextAction: "WordPress scan complete. Update plugins with known vulnerabilities immediately. Provide wpscanApiToken for full vulnerability data.",
|
|
1777
|
+
nextTools: ["check_wordpress_site", "record_learning"],
|
|
1778
|
+
methodology: "seo_audit",
|
|
1779
|
+
},
|
|
1780
|
+
phase: "verify",
|
|
1781
|
+
},
|
|
1782
|
+
// ═══ VOICE BRIDGE ═══
|
|
1783
|
+
{
|
|
1784
|
+
name: "design_voice_pipeline",
|
|
1785
|
+
category: "voice_bridge",
|
|
1786
|
+
tags: ["voice", "pipeline", "stt", "tts", "architecture", "design", "latency", "whisper", "deepgram"],
|
|
1787
|
+
quickRef: {
|
|
1788
|
+
nextAction: "Pipeline designed. Review the recommended stack. Use analyze_voice_config to validate compatibility, then generate_voice_scaffold for starter code.",
|
|
1789
|
+
nextTools: ["analyze_voice_config", "generate_voice_scaffold", "benchmark_voice_latency"],
|
|
1790
|
+
methodology: "voice_bridge",
|
|
1791
|
+
},
|
|
1792
|
+
phase: "research",
|
|
1793
|
+
},
|
|
1794
|
+
{
|
|
1795
|
+
name: "analyze_voice_config",
|
|
1796
|
+
category: "voice_bridge",
|
|
1797
|
+
tags: ["voice", "config", "validate", "compatibility", "cost", "bottleneck"],
|
|
1798
|
+
quickRef: {
|
|
1799
|
+
nextAction: "Config analyzed. Address compatibility issues and bottlenecks. Use benchmark_voice_latency to compare alternatives.",
|
|
1800
|
+
nextTools: ["benchmark_voice_latency", "generate_voice_scaffold", "design_voice_pipeline"],
|
|
1801
|
+
methodology: "voice_bridge",
|
|
1802
|
+
},
|
|
1803
|
+
phase: "research",
|
|
1804
|
+
},
|
|
1805
|
+
{
|
|
1806
|
+
name: "generate_voice_scaffold",
|
|
1807
|
+
category: "voice_bridge",
|
|
1808
|
+
tags: ["voice", "scaffold", "code", "template", "whisper", "deepgram", "webspeech", "piper"],
|
|
1809
|
+
quickRef: {
|
|
1810
|
+
nextAction: "Scaffold generated. Write files to disk, install dependencies, and test the pipeline. Use run_closed_loop for build verification.",
|
|
1811
|
+
nextTools: ["run_closed_loop", "log_test_result", "record_learning"],
|
|
1812
|
+
methodology: "voice_bridge",
|
|
1813
|
+
},
|
|
1814
|
+
phase: "implement",
|
|
1815
|
+
},
|
|
1816
|
+
{
|
|
1817
|
+
name: "benchmark_voice_latency",
|
|
1818
|
+
category: "voice_bridge",
|
|
1819
|
+
tags: ["voice", "benchmark", "latency", "comparison", "performance", "streaming"],
|
|
1820
|
+
quickRef: {
|
|
1821
|
+
nextAction: "Latency benchmarked. Pick the config rated 'excellent' or 'good'. Use generate_voice_scaffold with the winning stack.",
|
|
1822
|
+
nextTools: ["generate_voice_scaffold", "design_voice_pipeline", "record_learning"],
|
|
1823
|
+
methodology: "voice_bridge",
|
|
1824
|
+
},
|
|
1825
|
+
phase: "research",
|
|
1826
|
+
},
|
|
1497
1827
|
];
|
|
1498
1828
|
// ── Exported lookup structures ───────────────────────────────────────────
|
|
1499
1829
|
/** Map of tool name → registry entry for O(1) lookup */
|
|
@@ -1512,6 +1842,108 @@ export function getToolsByCategory(category) {
|
|
|
1512
1842
|
export function getToolsByPhase(phase) {
|
|
1513
1843
|
return REGISTRY_ENTRIES.filter((e) => e.phase === phase);
|
|
1514
1844
|
}
|
|
1845
|
+
// ── Model-tier complexity routing ─────────────────────────────────────────
|
|
1846
|
+
/** Default complexity by category (tools can override via the complexity field) */
|
|
1847
|
+
const CATEGORY_COMPLEXITY = {
|
|
1848
|
+
verification: "medium",
|
|
1849
|
+
eval: "medium",
|
|
1850
|
+
quality_gate: "medium",
|
|
1851
|
+
learning: "low",
|
|
1852
|
+
flywheel: "medium",
|
|
1853
|
+
reconnaissance: "medium",
|
|
1854
|
+
ui_capture: "medium",
|
|
1855
|
+
vision: "high",
|
|
1856
|
+
local_file: "low",
|
|
1857
|
+
web: "medium",
|
|
1858
|
+
github: "medium",
|
|
1859
|
+
documentation: "medium",
|
|
1860
|
+
bootstrap: "medium",
|
|
1861
|
+
self_eval: "high",
|
|
1862
|
+
parallel_agents: "medium",
|
|
1863
|
+
llm: "high",
|
|
1864
|
+
security: "medium",
|
|
1865
|
+
platform: "medium",
|
|
1866
|
+
research_writing: "high",
|
|
1867
|
+
flicker_detection: "high",
|
|
1868
|
+
figma_flow: "high",
|
|
1869
|
+
boilerplate: "low",
|
|
1870
|
+
benchmark: "high",
|
|
1871
|
+
progressive_discovery: "low",
|
|
1872
|
+
meta: "low",
|
|
1873
|
+
session_memory: "low",
|
|
1874
|
+
gaia_solvers: "high",
|
|
1875
|
+
toon: "low",
|
|
1876
|
+
pattern: "medium",
|
|
1877
|
+
git_workflow: "medium",
|
|
1878
|
+
seo: "medium",
|
|
1879
|
+
voice_bridge: "medium",
|
|
1880
|
+
};
|
|
1881
|
+
/** Per-tool complexity overrides (when category default is wrong) */
|
|
1882
|
+
const TOOL_COMPLEXITY_OVERRIDES = {
|
|
1883
|
+
// Verification: logging is low
|
|
1884
|
+
log_phase_findings: "low",
|
|
1885
|
+
log_gap: "low",
|
|
1886
|
+
resolve_gap: "low",
|
|
1887
|
+
log_test_result: "low",
|
|
1888
|
+
get_verification_status: "low",
|
|
1889
|
+
list_verification_cycles: "low",
|
|
1890
|
+
// Eval: recording is low, comparison is high
|
|
1891
|
+
record_eval_result: "low",
|
|
1892
|
+
list_eval_runs: "low",
|
|
1893
|
+
compare_eval_runs: "high",
|
|
1894
|
+
// Quality gate
|
|
1895
|
+
get_gate_history: "low",
|
|
1896
|
+
get_gate_preset: "low",
|
|
1897
|
+
// Flywheel
|
|
1898
|
+
get_flywheel_status: "low",
|
|
1899
|
+
// Recon
|
|
1900
|
+
log_recon_finding: "low",
|
|
1901
|
+
get_recon_summary: "low",
|
|
1902
|
+
// Self-eval: logging is low
|
|
1903
|
+
log_tool_call: "low",
|
|
1904
|
+
cleanup_stale_runs: "low",
|
|
1905
|
+
// Parallel: simple operations are low
|
|
1906
|
+
claim_agent_task: "low",
|
|
1907
|
+
release_agent_task: "low",
|
|
1908
|
+
get_parallel_status: "low",
|
|
1909
|
+
get_agent_role: "low",
|
|
1910
|
+
log_context_budget: "low",
|
|
1911
|
+
list_agent_tasks: "low",
|
|
1912
|
+
// Bootstrap
|
|
1913
|
+
get_project_context: "low",
|
|
1914
|
+
// Local file: image/audio processing is medium/high
|
|
1915
|
+
read_image_ocr_text: "medium",
|
|
1916
|
+
transcribe_audio_file: "medium",
|
|
1917
|
+
extract_structured_data: "medium",
|
|
1918
|
+
solve_red_green_deviation_average_from_image: "high",
|
|
1919
|
+
solve_green_polygon_area_from_image: "high",
|
|
1920
|
+
grade_fraction_quiz_from_image: "high",
|
|
1921
|
+
extract_fractions_and_simplify_from_image: "high",
|
|
1922
|
+
solve_bass_clef_age_from_image: "high",
|
|
1923
|
+
solve_storage_upgrade_cost_per_file_from_image: "high",
|
|
1924
|
+
// Web
|
|
1925
|
+
fetch_url: "low",
|
|
1926
|
+
// GitHub
|
|
1927
|
+
search_github: "low",
|
|
1928
|
+
// Boilerplate
|
|
1929
|
+
get_boilerplate_status: "low",
|
|
1930
|
+
// Benchmark
|
|
1931
|
+
log_benchmark_milestone: "low",
|
|
1932
|
+
};
|
|
1933
|
+
/** Get the recommended model complexity tier for a tool */
|
|
1934
|
+
export function getToolComplexity(toolName) {
|
|
1935
|
+
// 1. Check per-tool override
|
|
1936
|
+
if (TOOL_COMPLEXITY_OVERRIDES[toolName])
|
|
1937
|
+
return TOOL_COMPLEXITY_OVERRIDES[toolName];
|
|
1938
|
+
// 2. Check explicit field on registry entry
|
|
1939
|
+
const entry = TOOL_REGISTRY.get(toolName);
|
|
1940
|
+
if (entry?.complexity)
|
|
1941
|
+
return entry.complexity;
|
|
1942
|
+
// 3. Fall back to category default
|
|
1943
|
+
if (entry)
|
|
1944
|
+
return CATEGORY_COMPLEXITY[entry.category] ?? "medium";
|
|
1945
|
+
return "medium";
|
|
1946
|
+
}
|
|
1515
1947
|
// ── Synonym / semantic expansion map ──────────────────────────────────────
|
|
1516
1948
|
const SYNONYM_MAP = {
|
|
1517
1949
|
verify: ["validate", "check", "confirm", "test", "assert", "ensure"],
|
|
@@ -2232,6 +2664,28 @@ export const WORKFLOW_CHAINS = {
|
|
|
2232
2664
|
{ tool: "record_learning", action: "Step 10: Bank findings — which tools, gates, and knowledge types contributed most" },
|
|
2233
2665
|
],
|
|
2234
2666
|
},
|
|
2667
|
+
session_recovery: {
|
|
2668
|
+
name: "Session Recovery (Post-Compaction)",
|
|
2669
|
+
description: "Recover state after context compaction, /clear, or session resume. Loads filesystem notes, refreshes task context, and continues where you left off.",
|
|
2670
|
+
steps: [
|
|
2671
|
+
{ tool: "load_session_notes", action: "Step 1: Load today's session notes from filesystem" },
|
|
2672
|
+
{ tool: "refresh_task_context", action: "Step 2: Re-inject active verification cycle, open gaps, and recent learnings" },
|
|
2673
|
+
{ tool: "search_all_knowledge", action: "Step 3: Search for relevant prior findings" },
|
|
2674
|
+
{ tool: "get_verification_status", action: "Step 4: Check progress on active verification cycle" },
|
|
2675
|
+
{ tool: "get_parallel_status", action: "Step 5: Check if other agents are working (parallel scenarios)" },
|
|
2676
|
+
{ tool: "save_session_note", action: "Step 6: Save a 'session resumed' note with current state" },
|
|
2677
|
+
],
|
|
2678
|
+
},
|
|
2679
|
+
attention_refresh: {
|
|
2680
|
+
name: "Attention Refresh (Mid-Session)",
|
|
2681
|
+
description: "Combat attention drift after 30+ tool calls. Re-injects original goals, checks for drift, and re-anchors focus. Based on Manus 'Manipulate Attention Through Recitation' principle.",
|
|
2682
|
+
steps: [
|
|
2683
|
+
{ tool: "refresh_task_context", action: "Step 1: Re-inject current goals, open gaps, and session stats" },
|
|
2684
|
+
{ tool: "save_session_note", action: "Step 2: Save progress checkpoint before continuing" },
|
|
2685
|
+
{ tool: "get_verification_status", action: "Step 3: Check which phases remain" },
|
|
2686
|
+
{ tool: "search_all_knowledge", action: "Step 4: Re-check learnings for current phase" },
|
|
2687
|
+
],
|
|
2688
|
+
},
|
|
2235
2689
|
task_bank_setup: {
|
|
2236
2690
|
name: "Task Bank Setup (50-Task Starter Kit)",
|
|
2237
2691
|
description: "Build a statistically meaningful task bank for agent evaluation. Covers 7 categories (bugfix/refactor/integration/ui/security/performance/migration) × 4 difficulty levels with deterministic grading criteria.",
|
|
@@ -2247,5 +2701,40 @@ export const WORKFLOW_CHAINS = {
|
|
|
2247
2701
|
{ tool: "record_learning", action: "Step 9: Record task bank design patterns for future expansion" },
|
|
2248
2702
|
],
|
|
2249
2703
|
},
|
|
2704
|
+
pr_review: {
|
|
2705
|
+
name: "Pull Request Review",
|
|
2706
|
+
description: "Structured PR review with git compliance, verification cross-reference, and merge gate",
|
|
2707
|
+
steps: [
|
|
2708
|
+
{ tool: "check_git_compliance", action: "Verify branch state and commit conventions" },
|
|
2709
|
+
{ tool: "review_pr_checklist", action: "Run structured PR checklist with verification cross-reference" },
|
|
2710
|
+
{ tool: "run_quality_gate", action: "Validate against quality rules" },
|
|
2711
|
+
{ tool: "enforce_merge_gate", action: "Pre-merge validation combining all checks" },
|
|
2712
|
+
{ tool: "record_learning", action: "Record PR patterns and review feedback" },
|
|
2713
|
+
],
|
|
2714
|
+
},
|
|
2715
|
+
seo_audit: {
|
|
2716
|
+
name: "Full SEO Audit",
|
|
2717
|
+
description: "End-to-end SEO audit: technical SEO, content analysis, performance, WordPress security",
|
|
2718
|
+
steps: [
|
|
2719
|
+
{ tool: "seo_audit_url", action: "Analyze meta tags, headings, images, structured data" },
|
|
2720
|
+
{ tool: "analyze_seo_content", action: "Check readability, keyword density, link ratios" },
|
|
2721
|
+
{ tool: "check_page_performance", action: "Measure response time, compression, caching" },
|
|
2722
|
+
{ tool: "check_wordpress_site", action: "Detect WordPress, assess security posture" },
|
|
2723
|
+
{ tool: "scan_wordpress_updates", action: "Check plugins/themes for known vulnerabilities" },
|
|
2724
|
+
{ tool: "record_learning", action: "Record SEO patterns and findings" },
|
|
2725
|
+
],
|
|
2726
|
+
},
|
|
2727
|
+
voice_pipeline: {
|
|
2728
|
+
name: "Voice Pipeline Implementation",
|
|
2729
|
+
description: "Design, validate, scaffold, and benchmark a voice interface",
|
|
2730
|
+
steps: [
|
|
2731
|
+
{ tool: "design_voice_pipeline", action: "Get architecture recommendation based on requirements" },
|
|
2732
|
+
{ tool: "analyze_voice_config", action: "Validate component compatibility and estimate costs" },
|
|
2733
|
+
{ tool: "benchmark_voice_latency", action: "Compare pipeline configurations side-by-side" },
|
|
2734
|
+
{ tool: "generate_voice_scaffold", action: "Generate starter code for chosen stack" },
|
|
2735
|
+
{ tool: "run_closed_loop", action: "Build and test the scaffold" },
|
|
2736
|
+
{ tool: "record_learning", action: "Record voice pipeline implementation patterns" },
|
|
2737
|
+
],
|
|
2738
|
+
},
|
|
2250
2739
|
};
|
|
2251
2740
|
//# sourceMappingURL=toolRegistry.js.map
|