nexus-agents 2.100.1 → 2.101.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/dist/{child-mcp-config-OWCVT4NN.js → child-mcp-config-NBELOYYZ.js} +2 -2
  2. package/dist/{chunk-TYELRYRO.js → chunk-2ETX4XQW.js} +10 -10
  3. package/dist/{chunk-P453545L.js → chunk-3GF52QPA.js} +4 -4
  4. package/dist/{chunk-AH67WRET.js → chunk-3QFQG5QT.js} +2 -2
  5. package/dist/{chunk-5T6S6HFY.js → chunk-4IWHFMCN.js} +4 -4
  6. package/dist/{chunk-HFNHJZOK.js → chunk-4L7FH53H.js} +2 -2
  7. package/dist/{chunk-A7XUXJWL.js → chunk-4RW6OONY.js} +2 -2
  8. package/dist/{chunk-WYDK6V7W.js → chunk-5PZIMHNA.js} +3 -3
  9. package/dist/{chunk-Q3IFS7UA.js → chunk-ABGRFLJ6.js} +4 -4
  10. package/dist/{chunk-GEXFJOLK.js → chunk-CCWPDHBN.js} +7 -7
  11. package/dist/{chunk-ZPCDZMLK.js → chunk-E47LOV6Y.js} +2 -2
  12. package/dist/{chunk-SU7RKNIZ.js → chunk-EKO6XAAZ.js} +3 -3
  13. package/dist/{chunk-HBZUXO4Q.js → chunk-FLUC27DF.js} +2 -2
  14. package/dist/{chunk-BO6QUVXI.js → chunk-FVWKAEYH.js} +2 -2
  15. package/dist/{chunk-BKUKBOGV.js → chunk-FZCB2P3F.js} +2 -2
  16. package/dist/{chunk-VD4TXDMR.js → chunk-GDY23NDK.js} +2 -2
  17. package/dist/{chunk-JFFI54DW.js → chunk-KAJPY6YZ.js} +548 -298
  18. package/dist/chunk-KAJPY6YZ.js.map +1 -0
  19. package/dist/{chunk-H4LBBFCO.js → chunk-KHEQIB6P.js} +7 -7
  20. package/dist/{chunk-M774MKHE.js → chunk-KLYBJUTK.js} +43 -4
  21. package/dist/chunk-KLYBJUTK.js.map +1 -0
  22. package/dist/{chunk-YREYQSYA.js → chunk-KYONCTIL.js} +3 -3
  23. package/dist/{chunk-CJODZY4U.js → chunk-L2NPJRZZ.js} +2 -2
  24. package/dist/{chunk-XO25FS24.js → chunk-LVGYWJDX.js} +2 -2
  25. package/dist/{chunk-T5KDRR2I.js → chunk-LXBWH5XP.js} +3 -3
  26. package/dist/{chunk-DLNCQO6L.js → chunk-MNFEZIRI.js} +2 -2
  27. package/dist/{chunk-J545CO5K.js → chunk-MNWYIYEZ.js} +2 -2
  28. package/dist/{chunk-VXNN3JKU.js → chunk-MUVRUSQD.js} +31 -623
  29. package/dist/chunk-MUVRUSQD.js.map +1 -0
  30. package/dist/{chunk-V2C2MC6H.js → chunk-NAKDVIXS.js} +3 -3
  31. package/dist/{chunk-UWQ3BALH.js → chunk-S7R72HUB.js} +2 -2
  32. package/dist/{chunk-ZOBDTJNG.js → chunk-TDXLS2TY.js} +4 -4
  33. package/dist/{chunk-NZC5NLUD.js → chunk-UVN6QKCG.js} +5 -5
  34. package/dist/{chunk-3XSEFOI5.js → chunk-VJR46M7L.js} +3 -3
  35. package/dist/{chunk-J76KHBF3.js → chunk-W65C5VVJ.js} +2 -2
  36. package/dist/{chunk-5WY3N7VX.js → chunk-Z7IQUUTZ.js} +2 -2
  37. package/dist/{cli-circuit-breaker-IPNNNVIT.js → cli-circuit-breaker-L647V6BR.js} +4 -4
  38. package/dist/cli.js +39 -39
  39. package/dist/{composite-router-JJNQIHX6.js → composite-router-NOTUOXFI.js} +2 -2
  40. package/dist/{consensus-vote-PGOS5AA6.js → consensus-vote-F5FEDUSU.js} +13 -13
  41. package/dist/{context-retriever-2MOJ446P.js → context-retriever-SHT7J6BT.js} +6 -6
  42. package/dist/{doctor-deep-D6E5IWXB.js → doctor-deep-REMLGFXP.js} +3 -3
  43. package/dist/{expert-bridge-L25WFHQF.js → expert-bridge-Z7XZ7ED5.js} +4 -4
  44. package/dist/{factory-UCRIJY6Y.js → factory-CYUNYEMU.js} +5 -5
  45. package/dist/{factory-PVN7DDNZ.js → factory-PPAK3TVG.js} +5 -5
  46. package/dist/{improvement-review-IWV2BMR7.js → improvement-review-BGFCQV4I.js} +4 -4
  47. package/dist/index.d.ts +1 -45
  48. package/dist/index.js +28 -88
  49. package/dist/index.js.map +1 -1
  50. package/dist/{init-opencode-PB4G7RJR.js → init-opencode-WXY4DUFU.js} +5 -5
  51. package/dist/{issue-triage-EMYHDDTR.js → issue-triage-KGLNAJKH.js} +5 -5
  52. package/dist/{pr-reviewer-helpers-DZQDKMMF.js → pr-reviewer-helpers-2YJG6XJM.js} +4 -4
  53. package/dist/{registry-command-5L7I44JA.js → registry-command-ZFOGLBKF.js} +12 -172
  54. package/dist/registry-command-ZFOGLBKF.js.map +1 -0
  55. package/dist/{repo-security-plan-N2GNWFER.js → repo-security-plan-L47DDTAU.js} +3 -3
  56. package/dist/{research-helpers-synthesize-OKNU245Z.js → research-helpers-synthesize-IABO7LB4.js} +3 -3
  57. package/dist/{routing-memory-3QXWGWB5.js → routing-memory-2YWEWRMQ.js} +2 -2
  58. package/dist/{session-memory-AK4AJXGI.js → session-memory-YWOMPCLZ.js} +3 -3
  59. package/dist/{setup-command-COISAIOH.js → setup-command-IQK73FJ4.js} +11 -11
  60. package/dist/{setup-config-ANAFKZGE.js → setup-config-PYFK2GIC.js} +3 -3
  61. package/dist/{setup-custom-api-FUA2ZUDD.js → setup-custom-api-A4IZQ2Q4.js} +4 -4
  62. package/dist/{tool-memory-ZP3EMUP5.js → tool-memory-ABPSCFIH.js} +5 -5
  63. package/dist/{weather-report-54XDO6GO.js → weather-report-GXD6KGDS.js} +2 -2
  64. package/package.json +1 -1
  65. package/dist/chunk-JFFI54DW.js.map +0 -1
  66. package/dist/chunk-M774MKHE.js.map +0 -1
  67. package/dist/chunk-VXNN3JKU.js.map +0 -1
  68. package/dist/registry-command-5L7I44JA.js.map +0 -1
  69. /package/dist/{child-mcp-config-OWCVT4NN.js.map → child-mcp-config-NBELOYYZ.js.map} +0 -0
  70. /package/dist/{chunk-TYELRYRO.js.map → chunk-2ETX4XQW.js.map} +0 -0
  71. /package/dist/{chunk-P453545L.js.map → chunk-3GF52QPA.js.map} +0 -0
  72. /package/dist/{chunk-AH67WRET.js.map → chunk-3QFQG5QT.js.map} +0 -0
  73. /package/dist/{chunk-5T6S6HFY.js.map → chunk-4IWHFMCN.js.map} +0 -0
  74. /package/dist/{chunk-HFNHJZOK.js.map → chunk-4L7FH53H.js.map} +0 -0
  75. /package/dist/{chunk-A7XUXJWL.js.map → chunk-4RW6OONY.js.map} +0 -0
  76. /package/dist/{chunk-WYDK6V7W.js.map → chunk-5PZIMHNA.js.map} +0 -0
  77. /package/dist/{chunk-Q3IFS7UA.js.map → chunk-ABGRFLJ6.js.map} +0 -0
  78. /package/dist/{chunk-GEXFJOLK.js.map → chunk-CCWPDHBN.js.map} +0 -0
  79. /package/dist/{chunk-ZPCDZMLK.js.map → chunk-E47LOV6Y.js.map} +0 -0
  80. /package/dist/{chunk-SU7RKNIZ.js.map → chunk-EKO6XAAZ.js.map} +0 -0
  81. /package/dist/{chunk-HBZUXO4Q.js.map → chunk-FLUC27DF.js.map} +0 -0
  82. /package/dist/{chunk-BO6QUVXI.js.map → chunk-FVWKAEYH.js.map} +0 -0
  83. /package/dist/{chunk-BKUKBOGV.js.map → chunk-FZCB2P3F.js.map} +0 -0
  84. /package/dist/{chunk-VD4TXDMR.js.map → chunk-GDY23NDK.js.map} +0 -0
  85. /package/dist/{chunk-H4LBBFCO.js.map → chunk-KHEQIB6P.js.map} +0 -0
  86. /package/dist/{chunk-YREYQSYA.js.map → chunk-KYONCTIL.js.map} +0 -0
  87. /package/dist/{chunk-CJODZY4U.js.map → chunk-L2NPJRZZ.js.map} +0 -0
  88. /package/dist/{chunk-XO25FS24.js.map → chunk-LVGYWJDX.js.map} +0 -0
  89. /package/dist/{chunk-T5KDRR2I.js.map → chunk-LXBWH5XP.js.map} +0 -0
  90. /package/dist/{chunk-DLNCQO6L.js.map → chunk-MNFEZIRI.js.map} +0 -0
  91. /package/dist/{chunk-J545CO5K.js.map → chunk-MNWYIYEZ.js.map} +0 -0
  92. /package/dist/{chunk-V2C2MC6H.js.map → chunk-NAKDVIXS.js.map} +0 -0
  93. /package/dist/{chunk-UWQ3BALH.js.map → chunk-S7R72HUB.js.map} +0 -0
  94. /package/dist/{chunk-ZOBDTJNG.js.map → chunk-TDXLS2TY.js.map} +0 -0
  95. /package/dist/{chunk-NZC5NLUD.js.map → chunk-UVN6QKCG.js.map} +0 -0
  96. /package/dist/{chunk-3XSEFOI5.js.map → chunk-VJR46M7L.js.map} +0 -0
  97. /package/dist/{chunk-J76KHBF3.js.map → chunk-W65C5VVJ.js.map} +0 -0
  98. /package/dist/{chunk-5WY3N7VX.js.map → chunk-Z7IQUUTZ.js.map} +0 -0
  99. /package/dist/{cli-circuit-breaker-IPNNNVIT.js.map → cli-circuit-breaker-L647V6BR.js.map} +0 -0
  100. /package/dist/{composite-router-JJNQIHX6.js.map → composite-router-NOTUOXFI.js.map} +0 -0
  101. /package/dist/{consensus-vote-PGOS5AA6.js.map → consensus-vote-F5FEDUSU.js.map} +0 -0
  102. /package/dist/{context-retriever-2MOJ446P.js.map → context-retriever-SHT7J6BT.js.map} +0 -0
  103. /package/dist/{doctor-deep-D6E5IWXB.js.map → doctor-deep-REMLGFXP.js.map} +0 -0
  104. /package/dist/{expert-bridge-L25WFHQF.js.map → expert-bridge-Z7XZ7ED5.js.map} +0 -0
  105. /package/dist/{factory-PVN7DDNZ.js.map → factory-CYUNYEMU.js.map} +0 -0
  106. /package/dist/{factory-UCRIJY6Y.js.map → factory-PPAK3TVG.js.map} +0 -0
  107. /package/dist/{improvement-review-IWV2BMR7.js.map → improvement-review-BGFCQV4I.js.map} +0 -0
  108. /package/dist/{init-opencode-PB4G7RJR.js.map → init-opencode-WXY4DUFU.js.map} +0 -0
  109. /package/dist/{issue-triage-EMYHDDTR.js.map → issue-triage-KGLNAJKH.js.map} +0 -0
  110. /package/dist/{pr-reviewer-helpers-DZQDKMMF.js.map → pr-reviewer-helpers-2YJG6XJM.js.map} +0 -0
  111. /package/dist/{repo-security-plan-N2GNWFER.js.map → repo-security-plan-L47DDTAU.js.map} +0 -0
  112. /package/dist/{research-helpers-synthesize-OKNU245Z.js.map → research-helpers-synthesize-IABO7LB4.js.map} +0 -0
  113. /package/dist/{routing-memory-3QXWGWB5.js.map → routing-memory-2YWEWRMQ.js.map} +0 -0
  114. /package/dist/{session-memory-AK4AJXGI.js.map → session-memory-YWOMPCLZ.js.map} +0 -0
  115. /package/dist/{setup-command-COISAIOH.js.map → setup-command-IQK73FJ4.js.map} +0 -0
  116. /package/dist/{setup-config-ANAFKZGE.js.map → setup-config-PYFK2GIC.js.map} +0 -0
  117. /package/dist/{setup-custom-api-FUA2ZUDD.js.map → setup-custom-api-A4IZQ2Q4.js.map} +0 -0
  118. /package/dist/{tool-memory-ZP3EMUP5.js.map → tool-memory-ABPSCFIH.js.map} +0 -0
  119. /package/dist/{weather-report-54XDO6GO.js.map → weather-report-GXD6KGDS.js.map} +0 -0
@@ -11,7 +11,7 @@ import {
11
11
  getErrorMessage,
12
12
  getTimeProvider,
13
13
  ok
14
- } from "./chunk-M774MKHE.js";
14
+ } from "./chunk-KLYBJUTK.js";
15
15
  import {
16
16
  getNexusDataDir
17
17
  } from "./chunk-CH7QIDHQ.js";
@@ -1751,359 +1751,608 @@ function toSdkCallbackWithBudgetCheck(handler, toolName, configuredTimeoutMs, lo
1751
1751
  };
1752
1752
  }
1753
1753
 
1754
- // src/mcp/tool-annotations.ts
1754
+ // src/mcp/tools/tool-annotations.ts
1755
1755
  var TOOL_ANNOTATIONS = {
1756
- // ============================================================================
1757
- // Orchestration & expert lifecycle
1758
- // ============================================================================
1759
- /** Orchestrator coordinates expert agents; spawns workers that may mutate state. */
1756
+ delegate_to_model: {
1757
+ annotations: {
1758
+ title: "Delegate to Model",
1759
+ readOnlyHint: true,
1760
+ destructiveHint: false,
1761
+ idempotentHint: true,
1762
+ openWorldHint: false
1763
+ },
1764
+ sideEffects: [{ category: "implicit", description: "Consumes rate limit quota" }]
1765
+ },
1760
1766
  orchestrate: {
1761
- readOnlyHint: false,
1762
- destructiveHint: false,
1763
- idempotentHint: false,
1764
- openWorldHint: true
1767
+ annotations: {
1768
+ title: "Orchestrate Task",
1769
+ readOnlyHint: false,
1770
+ destructiveHint: false,
1771
+ idempotentHint: false,
1772
+ openWorldHint: true
1773
+ },
1774
+ sideEffects: [
1775
+ { category: "explicit", description: "Creates and executes expert agents" },
1776
+ { category: "implicit", description: "Consumes API tokens from configured provider" },
1777
+ { category: "coupling", description: "May trigger rate limiting on model adapter" },
1778
+ { category: "coupling", description: "Records task outcome in OutcomeFeedbackCollector" }
1779
+ ]
1765
1780
  },
1766
- /** Creates an expert and adds it to the in-memory expert registry. */
1767
1781
  create_expert: {
1768
- readOnlyHint: false,
1769
- destructiveHint: false,
1770
- idempotentHint: false,
1771
- openWorldHint: false
1782
+ annotations: {
1783
+ title: "Create Expert",
1784
+ readOnlyHint: false,
1785
+ destructiveHint: false,
1786
+ idempotentHint: false,
1787
+ openWorldHint: false
1788
+ },
1789
+ sideEffects: [
1790
+ { category: "explicit", description: "Creates expert agent in shared registry" },
1791
+ { category: "coupling", description: "Expert ID required by execute_expert" }
1792
+ ]
1772
1793
  },
1773
- /** Executes a previously created expert; invokes external CLIs. */
1774
1794
  execute_expert: {
1775
- readOnlyHint: false,
1776
- destructiveHint: false,
1777
- idempotentHint: false,
1778
- openWorldHint: true
1795
+ annotations: {
1796
+ title: "Execute Expert",
1797
+ readOnlyHint: false,
1798
+ destructiveHint: false,
1799
+ idempotentHint: false,
1800
+ openWorldHint: true
1801
+ },
1802
+ sideEffects: [
1803
+ { category: "explicit", description: "Executes expert agent task via model adapter" },
1804
+ { category: "implicit", description: "Consumes API tokens from configured provider" },
1805
+ { category: "coupling", description: "Requires expert created by create_expert" },
1806
+ { category: "coupling", description: "May trigger rate limiting on model adapter" }
1807
+ ]
1779
1808
  },
1780
- // ============================================================================
1781
- // Workflow / pipeline execution
1782
- // ============================================================================
1783
- /** Runs a workflow template; steps may write to the registry or filesystem. */
1784
1809
  run_workflow: {
1785
- readOnlyHint: false,
1786
- destructiveHint: false,
1787
- idempotentHint: false,
1788
- openWorldHint: true
1789
- },
1790
- /** Runs a graph-based workflow with checkpointing. */
1791
- run_graph_workflow: {
1792
- readOnlyHint: false,
1793
- destructiveHint: false,
1794
- idempotentHint: false,
1795
- openWorldHint: true
1796
- },
1797
- /** Runs a pipeline plugin by name. */
1798
- run_pipeline: {
1799
- readOnlyHint: false,
1800
- destructiveHint: false,
1801
- idempotentHint: false,
1802
- openWorldHint: true
1803
- },
1804
- /** Full dev pipeline: research → plan → vote → implement → QA. */
1805
- run_dev_pipeline: {
1806
- readOnlyHint: false,
1807
- destructiveHint: false,
1808
- idempotentHint: false,
1809
- openWorldHint: true
1810
- },
1811
- /** Executes an AI-software-factory spec pipeline. */
1812
- execute_spec: {
1813
- readOnlyHint: false,
1814
- destructiveHint: false,
1815
- idempotentHint: false,
1816
- openWorldHint: true
1817
- },
1818
- // ============================================================================
1819
- // Voting / decision
1820
- // ============================================================================
1821
- /** Records vote outcomes to the audit log; doesn't write to repo state. */
1822
- consensus_vote: {
1823
- readOnlyHint: false,
1824
- destructiveHint: false,
1825
- idempotentHint: false,
1826
- openWorldHint: true
1827
- },
1828
- /** Per-axis tradeoff vote; records outcome to the store. */
1829
- supply_chain_tradeoff_panel: {
1830
- readOnlyHint: false,
1831
- destructiveHint: false,
1832
- idempotentHint: false,
1833
- openWorldHint: true
1834
- },
1835
- /** Multi-voter PR review; may write review comments. */
1836
- pr_review: {
1837
- readOnlyHint: false,
1838
- destructiveHint: false,
1839
- idempotentHint: false,
1840
- openWorldHint: true
1841
- },
1842
- // ============================================================================
1843
- // Routing & introspection (read-only)
1844
- // ============================================================================
1845
- /** Returns a routing recommendation; doesn't execute. */
1846
- delegate_to_model: {
1847
- readOnlyHint: true,
1848
- destructiveHint: false,
1849
- idempotentHint: true,
1850
- openWorldHint: false
1810
+ annotations: {
1811
+ title: "Run Workflow",
1812
+ readOnlyHint: false,
1813
+ destructiveHint: false,
1814
+ idempotentHint: false,
1815
+ openWorldHint: true
1816
+ },
1817
+ sideEffects: [
1818
+ { category: "explicit", description: "Executes multi-step workflow template" },
1819
+ { category: "implicit", description: "Consumes API tokens if workflow uses model adapter" },
1820
+ { category: "coupling", description: "May trigger rate limiting on model adapter" }
1821
+ ]
1851
1822
  },
1852
- /** Lists registered expert types. */
1853
1823
  list_experts: {
1854
- readOnlyHint: true,
1855
- destructiveHint: false,
1856
- idempotentHint: true,
1857
- openWorldHint: false
1824
+ annotations: {
1825
+ title: "List Experts",
1826
+ readOnlyHint: true,
1827
+ destructiveHint: false,
1828
+ idempotentHint: true,
1829
+ openWorldHint: false
1830
+ },
1831
+ sideEffects: [{ category: "implicit", description: "Consumes rate limit quota" }]
1858
1832
  },
1859
- /** Lists registered workflow templates. */
1860
1833
  list_workflows: {
1861
- readOnlyHint: true,
1862
- destructiveHint: false,
1863
- idempotentHint: true,
1864
- openWorldHint: false
1865
- },
1866
- // ============================================================================
1867
- // Research registry — reads
1868
- // ============================================================================
1869
- /** Queries the research registry. */
1870
- research_query: {
1871
- readOnlyHint: true,
1872
- destructiveHint: false,
1873
- idempotentHint: true,
1874
- openWorldHint: false
1875
- },
1876
- /** Analyzes registry for gaps, trends, coverage. */
1877
- research_analyze: {
1878
- readOnlyHint: true,
1879
- destructiveHint: false,
1880
- idempotentHint: true,
1881
- openWorldHint: false
1834
+ annotations: {
1835
+ title: "List Workflows",
1836
+ readOnlyHint: true,
1837
+ destructiveHint: false,
1838
+ idempotentHint: true,
1839
+ openWorldHint: false
1840
+ },
1841
+ sideEffects: [{ category: "implicit", description: "Consumes rate limit quota" }]
1882
1842
  },
1883
- /** Synthesizes registry into topic clusters. */
1884
- research_synthesize: {
1885
- readOnlyHint: true,
1886
- destructiveHint: false,
1887
- idempotentHint: true,
1888
- openWorldHint: false
1843
+ consensus_vote: {
1844
+ annotations: {
1845
+ title: "Consensus Vote",
1846
+ readOnlyHint: false,
1847
+ destructiveHint: false,
1848
+ idempotentHint: false,
1849
+ openWorldHint: true
1850
+ },
1851
+ sideEffects: [
1852
+ { category: "explicit", description: "Executes multi-agent voting across CLIs" },
1853
+ { category: "implicit", description: "Consumes API tokens from multiple providers" },
1854
+ { category: "coupling", description: "Records vote outcomes for weather report" }
1855
+ ]
1889
1856
  },
1890
- /** Discovers research items via external APIs; doesn't mutate registry. */
1891
- research_discover: {
1892
- readOnlyHint: true,
1893
- destructiveHint: false,
1894
- idempotentHint: true,
1895
- openWorldHint: true
1857
+ research_query: {
1858
+ annotations: {
1859
+ title: "Research Query",
1860
+ readOnlyHint: true,
1861
+ destructiveHint: false,
1862
+ idempotentHint: true,
1863
+ openWorldHint: false
1864
+ },
1865
+ sideEffects: [{ category: "implicit", description: "Consumes rate limit quota" }]
1896
1866
  },
1897
- // ============================================================================
1898
- // Research registry — mutations
1899
- // ============================================================================
1900
- /** Adds an arXiv paper to the registry. Dedup-checked but first call has effects. */
1901
1867
  research_add: {
1902
- readOnlyHint: false,
1903
- destructiveHint: false,
1904
- idempotentHint: false,
1905
- openWorldHint: true
1906
- },
1907
- /** Adds a non-paper source to the registry. */
1908
- research_add_source: {
1909
- readOnlyHint: false,
1910
- destructiveHint: false,
1911
- idempotentHint: false,
1912
- openWorldHint: true
1868
+ annotations: {
1869
+ title: "Research Add",
1870
+ readOnlyHint: false,
1871
+ destructiveHint: false,
1872
+ idempotentHint: true,
1873
+ openWorldHint: true
1874
+ },
1875
+ sideEffects: [
1876
+ { category: "explicit", description: "Adds paper to research registry on disk" },
1877
+ { category: "implicit", description: "Fetches metadata from arXiv API" }
1878
+ ]
1913
1879
  },
1914
- /** Reviews auto-cataloged research references; may approve/dismiss. */
1915
- research_catalog_review: {
1916
- readOnlyHint: false,
1917
- destructiveHint: false,
1918
- idempotentHint: false,
1919
- openWorldHint: false
1880
+ research_discover: {
1881
+ annotations: {
1882
+ title: "Research Discover",
1883
+ readOnlyHint: true,
1884
+ destructiveHint: false,
1885
+ idempotentHint: false,
1886
+ openWorldHint: true
1887
+ },
1888
+ sideEffects: [
1889
+ { category: "implicit", description: "Queries external APIs (arXiv, GitHub, etc.)" },
1890
+ { category: "coupling", description: "Auto-catalogs discovered references" }
1891
+ ]
1920
1892
  },
1921
- // ============================================================================
1922
- // Transient lookups (no registry persistence)
1923
- // ============================================================================
1924
- /** Transient OSS search via GitHub API; no persistence. */
1925
1893
  survey_oss_landscape: {
1926
- readOnlyHint: true,
1927
- destructiveHint: false,
1928
- idempotentHint: true,
1929
- openWorldHint: true
1894
+ annotations: {
1895
+ title: "Survey OSS Landscape",
1896
+ readOnlyHint: true,
1897
+ destructiveHint: false,
1898
+ // Same query may return different results day-to-day as star counts
1899
+ // and last-commit dates evolve; idempotentHint=false matches reality.
1900
+ idempotentHint: false,
1901
+ openWorldHint: true
1902
+ },
1903
+ sideEffects: [{ category: "implicit", description: "Queries the GitHub search API" }]
1930
1904
  },
1931
- /** Static lookup against curated vendor seed data. */
1932
1905
  vendor_publishing_audit: {
1933
- readOnlyHint: true,
1934
- destructiveHint: false,
1935
- idempotentHint: true,
1936
- openWorldHint: false
1906
+ annotations: {
1907
+ title: "Vendor Publishing Audit",
1908
+ readOnlyHint: true,
1909
+ destructiveHint: false,
1910
+ // Pure static lookup against the in-process seed dataset.
1911
+ idempotentHint: true,
1912
+ openWorldHint: false
1913
+ },
1914
+ sideEffects: [{ category: "implicit", description: "Consumes rate limit quota" }]
1937
1915
  },
1938
- /** Diffs two YAML/JSON files; local-only. */
1939
1916
  compare_data_feeds: {
1940
- readOnlyHint: true,
1941
- destructiveHint: false,
1942
- idempotentHint: true,
1943
- openWorldHint: false
1917
+ annotations: {
1918
+ title: "Compare Data Feeds",
1919
+ readOnlyHint: true,
1920
+ destructiveHint: false,
1921
+ // Same input → same output; pure file diff with no external calls.
1922
+ idempotentHint: true,
1923
+ openWorldHint: false
1924
+ },
1925
+ sideEffects: [{ category: "implicit", description: "Reads two files from the workspace" }]
1926
+ },
1927
+ research_analyze: {
1928
+ annotations: {
1929
+ title: "Research Analyze",
1930
+ readOnlyHint: true,
1931
+ destructiveHint: false,
1932
+ idempotentHint: true,
1933
+ openWorldHint: false
1934
+ },
1935
+ sideEffects: [{ category: "implicit", description: "Consumes rate limit quota" }]
1936
+ },
1937
+ research_catalog_review: {
1938
+ annotations: {
1939
+ title: "Research Catalog Review",
1940
+ readOnlyHint: false,
1941
+ destructiveHint: false,
1942
+ idempotentHint: false,
1943
+ openWorldHint: false
1944
+ },
1945
+ sideEffects: [
1946
+ { category: "explicit", description: "Approves or dismisses cataloged references" },
1947
+ { category: "coupling", description: "Approved items added to research registry" }
1948
+ ]
1944
1949
  },
1945
- // ============================================================================
1946
- // Memory
1947
- // ============================================================================
1948
- /** Reads from memory backends. */
1949
1950
  memory_query: {
1950
- readOnlyHint: true,
1951
- destructiveHint: false,
1952
- idempotentHint: true,
1953
- openWorldHint: false
1951
+ annotations: {
1952
+ title: "Memory Query",
1953
+ readOnlyHint: true,
1954
+ destructiveHint: false,
1955
+ idempotentHint: false,
1956
+ openWorldHint: false
1957
+ },
1958
+ sideEffects: [
1959
+ { category: "implicit", description: "Consumes rate limit quota" },
1960
+ { category: "implicit", description: "May trigger reflective retrieval (MemR3)" }
1961
+ ]
1954
1962
  },
1955
- /** Returns memory statistics. */
1956
1963
  memory_stats: {
1957
- readOnlyHint: true,
1958
- destructiveHint: false,
1959
- idempotentHint: true,
1960
- openWorldHint: false
1964
+ annotations: {
1965
+ title: "Memory Stats",
1966
+ readOnlyHint: true,
1967
+ destructiveHint: false,
1968
+ idempotentHint: true,
1969
+ openWorldHint: false
1970
+ },
1971
+ sideEffects: [{ category: "implicit", description: "Consumes rate limit quota" }]
1961
1972
  },
1962
- /** Writes to a memory backend. */
1963
1973
  memory_write: {
1964
- readOnlyHint: false,
1965
- destructiveHint: false,
1966
- idempotentHint: false,
1967
- openWorldHint: false
1974
+ annotations: {
1975
+ title: "Memory Write",
1976
+ readOnlyHint: false,
1977
+ destructiveHint: false,
1978
+ idempotentHint: false,
1979
+ openWorldHint: false
1980
+ },
1981
+ sideEffects: [
1982
+ { category: "explicit", description: "Writes data to memory backend" },
1983
+ { category: "implicit", description: "Consumes rate limit quota" }
1984
+ ]
1968
1985
  },
1969
- // ============================================================================
1970
- // Observability
1971
- // ============================================================================
1972
- /** Multi-CLI performance weather report; reads outcome store. */
1973
1986
  weather_report: {
1974
- readOnlyHint: true,
1975
- destructiveHint: false,
1976
- idempotentHint: true,
1977
- openWorldHint: false
1987
+ annotations: {
1988
+ title: "Weather Report",
1989
+ readOnlyHint: true,
1990
+ destructiveHint: false,
1991
+ idempotentHint: false,
1992
+ openWorldHint: false
1993
+ },
1994
+ sideEffects: [{ category: "implicit", description: "Consumes rate limit quota" }]
1995
+ },
1996
+ improvement_review: {
1997
+ annotations: {
1998
+ title: "Improvement Review",
1999
+ readOnlyHint: false,
2000
+ destructiveHint: false,
2001
+ // When fileIssues=true, creates GitHub issues — not idempotent.
2002
+ idempotentHint: false,
2003
+ openWorldHint: true
2004
+ },
2005
+ sideEffects: [
2006
+ { category: "implicit", description: "Reads OutcomeStore and runs fitness audit" },
2007
+ {
2008
+ category: "explicit",
2009
+ description: "When fileIssues=true, files candidate GitHub issues via gh CLI"
2010
+ },
2011
+ { category: "implicit", description: "Consumes rate limit quota" }
2012
+ ]
2013
+ },
2014
+ run_quality_gate: {
2015
+ annotations: {
2016
+ title: "Run Quality Gate",
2017
+ // Spawns build/test toolchains which can write artifacts — not read-only.
2018
+ readOnlyHint: false,
2019
+ destructiveHint: false,
2020
+ // Same checks against the same code yield the same verdict.
2021
+ idempotentHint: true,
2022
+ // build/test/security invoke local toolchains and may reach the network.
2023
+ openWorldHint: true
2024
+ },
2025
+ sideEffects: [
2026
+ {
2027
+ category: "implicit",
2028
+ description: "Spawns local toolchain processes (tsc/eslint/vitest/build) in the target project dir"
2029
+ },
2030
+ {
2031
+ category: "implicit",
2032
+ description: "build/test checks may write build artifacts and coverage output to disk"
2033
+ }
2034
+ ]
2035
+ },
2036
+ issue_triage: {
2037
+ annotations: {
2038
+ title: "Issue Triage",
2039
+ readOnlyHint: true,
2040
+ destructiveHint: false,
2041
+ idempotentHint: true,
2042
+ openWorldHint: true
2043
+ },
2044
+ sideEffects: [
2045
+ { category: "implicit", description: "Fetches issue data from GitHub API" },
2046
+ { category: "implicit", description: "Consumes rate limit quota" }
2047
+ ]
2048
+ },
2049
+ run_graph_workflow: {
2050
+ annotations: {
2051
+ title: "Run Graph Workflow",
2052
+ readOnlyHint: false,
2053
+ destructiveHint: false,
2054
+ idempotentHint: false,
2055
+ openWorldHint: true
2056
+ },
2057
+ sideEffects: [
2058
+ { category: "explicit", description: "Executes graph-based workflow with checkpointing" },
2059
+ { category: "implicit", description: "Writes checkpoint files to disk" },
2060
+ { category: "coupling", description: "May trigger rate limiting on model adapters" }
2061
+ ]
2062
+ },
2063
+ execute_spec: {
2064
+ annotations: {
2065
+ title: "Execute Spec",
2066
+ readOnlyHint: false,
2067
+ destructiveHint: false,
2068
+ idempotentHint: false,
2069
+ openWorldHint: true
2070
+ },
2071
+ sideEffects: [
2072
+ { category: "explicit", description: "Parses and executes markdown specification" },
2073
+ { category: "implicit", description: "Consumes API tokens from configured provider" },
2074
+ { category: "implicit", description: "Writes execution trace to disk" }
2075
+ ]
2076
+ },
2077
+ registry_import: {
2078
+ annotations: {
2079
+ title: "Registry Import",
2080
+ readOnlyHint: false,
2081
+ destructiveHint: false,
2082
+ idempotentHint: true,
2083
+ openWorldHint: false
2084
+ },
2085
+ sideEffects: [{ category: "explicit", description: "Generates draft model registry entry" }]
1978
2086
  },
1979
- /** Queries execution traces from disk. */
1980
2087
  query_trace: {
1981
- readOnlyHint: true,
1982
- destructiveHint: false,
1983
- idempotentHint: true,
1984
- openWorldHint: false
2088
+ annotations: {
2089
+ title: "Query Trace",
2090
+ readOnlyHint: true,
2091
+ destructiveHint: false,
2092
+ idempotentHint: true,
2093
+ openWorldHint: false
2094
+ },
2095
+ sideEffects: [
2096
+ { category: "implicit", description: "Reads execution trace JSONL files from disk" }
2097
+ ]
2098
+ },
2099
+ repo_analyze: {
2100
+ annotations: {
2101
+ title: "Repo Analyze",
2102
+ readOnlyHint: true,
2103
+ destructiveHint: false,
2104
+ idempotentHint: true,
2105
+ openWorldHint: true
2106
+ },
2107
+ sideEffects: [
2108
+ {
2109
+ category: "implicit",
2110
+ description: "Fetches repository metadata from GitHub API via gh CLI"
2111
+ },
2112
+ { category: "implicit", description: "Consumes rate limit quota" }
2113
+ ]
2114
+ },
2115
+ repo_security_plan: {
2116
+ annotations: {
2117
+ title: "Repo Security Plan",
2118
+ readOnlyHint: true,
2119
+ destructiveHint: false,
2120
+ idempotentHint: true,
2121
+ openWorldHint: true
2122
+ },
2123
+ sideEffects: [
2124
+ {
2125
+ category: "implicit",
2126
+ description: "Fetches repository metadata from GitHub API via gh CLI"
2127
+ },
2128
+ { category: "implicit", description: "Consumes rate limit quota" }
2129
+ ]
2130
+ },
2131
+ research_add_source: {
2132
+ annotations: {
2133
+ title: "Research Add Source",
2134
+ readOnlyHint: false,
2135
+ destructiveHint: false,
2136
+ idempotentHint: false,
2137
+ openWorldHint: true
2138
+ },
2139
+ sideEffects: [
2140
+ { category: "explicit", description: "Adds a non-paper source to the research registry" },
2141
+ { category: "coupling", description: "New entries affect research_discover/research_query" }
2142
+ ]
2143
+ },
2144
+ research_synthesize: {
2145
+ annotations: {
2146
+ title: "Research Synthesize",
2147
+ readOnlyHint: true,
2148
+ destructiveHint: false,
2149
+ idempotentHint: true,
2150
+ openWorldHint: false
2151
+ },
2152
+ sideEffects: [{ category: "implicit", description: "Reads research catalog + alignment map" }]
1985
2153
  },
1986
- /** Queries structured task-state log. */
1987
2154
  query_task_state: {
1988
- readOnlyHint: true,
1989
- destructiveHint: false,
1990
- idempotentHint: true,
1991
- openWorldHint: false
2155
+ annotations: {
2156
+ title: "Query Task State",
2157
+ readOnlyHint: true,
2158
+ destructiveHint: false,
2159
+ idempotentHint: true,
2160
+ openWorldHint: false
2161
+ },
2162
+ sideEffects: [
2163
+ { category: "implicit", description: "Reads the structured task-state log (#2278)" }
2164
+ ]
1992
2165
  },
1993
- /** Reads job-result sidecar file for an async-mode dispatch (#3042 / #2631). */
1994
2166
  get_job_result: {
1995
- readOnlyHint: true,
1996
- destructiveHint: false,
1997
- idempotentHint: true,
1998
- openWorldHint: false
2167
+ annotations: {
2168
+ title: "Get Job Result",
2169
+ readOnlyHint: true,
2170
+ destructiveHint: false,
2171
+ idempotentHint: true,
2172
+ openWorldHint: false
2173
+ },
2174
+ sideEffects: [
2175
+ {
2176
+ category: "implicit",
2177
+ description: "Reads the async-mode job-result sidecar (#3042 / epic #2631)"
2178
+ }
2179
+ ]
1999
2180
  },
2000
- /** Lists async-mode job summaries from the sidecar dir (#3046 / #2631 Stage 5). */
2001
2181
  list_jobs: {
2002
- readOnlyHint: true,
2003
- destructiveHint: false,
2004
- idempotentHint: true,
2005
- openWorldHint: false
2182
+ annotations: {
2183
+ title: "List Jobs",
2184
+ readOnlyHint: true,
2185
+ destructiveHint: false,
2186
+ idempotentHint: true,
2187
+ openWorldHint: false
2188
+ },
2189
+ sideEffects: [
2190
+ {
2191
+ category: "implicit",
2192
+ description: "Lists async-mode job summaries from the sidecar dir (#3046 / epic #2631 Stage 5)"
2193
+ }
2194
+ ]
2006
2195
  },
2007
- /** Cancels an in-flight async-mode job (#3042 Stage 1b / #2631). */
2008
2196
  cancel_job: {
2009
- // Mutates the sidecar record — NOT read-only.
2010
- readOnlyHint: false,
2011
- // Reversibility: cancel writes a new state, but doesn't delete data —
2012
- // not destructive in the OWASP sense (no irreversible data loss).
2013
- destructiveHint: false,
2014
- // Idempotent: repeat cancels are no-ops with explicit outcome envelope.
2015
- idempotentHint: true,
2016
- openWorldHint: false
2197
+ annotations: {
2198
+ title: "Cancel Job",
2199
+ readOnlyHint: false,
2200
+ destructiveHint: false,
2201
+ idempotentHint: true,
2202
+ openWorldHint: false
2203
+ },
2204
+ sideEffects: [
2205
+ {
2206
+ category: "explicit",
2207
+ description: "Writes cancellation record to the async-mode sidecar (#3042 Stage 1b)"
2208
+ },
2209
+ {
2210
+ category: "coupling",
2211
+ description: "Triggers AbortSignal unwind in same-process dispatcher (cross-process workers must poll)"
2212
+ }
2213
+ ]
2017
2214
  },
2018
- /** Verifies hash chain of audit log files. */
2019
2215
  verify_audit_chain: {
2020
- readOnlyHint: true,
2021
- destructiveHint: false,
2022
- idempotentHint: true,
2023
- openWorldHint: false
2216
+ annotations: {
2217
+ title: "Verify Audit Chain",
2218
+ readOnlyHint: true,
2219
+ destructiveHint: false,
2220
+ idempotentHint: true,
2221
+ openWorldHint: false
2222
+ },
2223
+ sideEffects: [
2224
+ {
2225
+ category: "implicit",
2226
+ description: "Reads the immutable audit log and verifies the hash chain"
2227
+ }
2228
+ ]
2024
2229
  },
2025
- /** CI infrastructure health check — composes status-page + recent-runs signals (#3076). */
2026
2230
  ci_health_check: {
2027
- readOnlyHint: true,
2028
- destructiveHint: false,
2029
- idempotentHint: true,
2030
- // Hits external services (githubstatus.com + GitHub API) — `openWorldHint`.
2031
- openWorldHint: true
2032
- },
2033
- /** Threshold-gated observability loop; may file GitHub issues when fileIssues=true. */
2034
- improvement_review: {
2035
- readOnlyHint: false,
2036
- destructiveHint: false,
2037
- idempotentHint: false,
2038
- openWorldHint: true
2039
- },
2040
- /** Runs the QA quality gate (typecheck/lint/tests/build/security) over a project dir (#3356). */
2041
- run_quality_gate: {
2042
- // Spawns build/test toolchains which can write artifacts — not read-only.
2043
- readOnlyHint: false,
2044
- destructiveHint: false,
2045
- // Re-running the same checks against the same code yields the same verdict.
2046
- idempotentHint: true,
2047
- // `security` check can hit OSV; build/test invoke local toolchains — treat as open-world.
2048
- openWorldHint: true
2049
- },
2050
- // ============================================================================
2051
- // Repository analysis
2052
- // ============================================================================
2053
- /** Analyzes a GitHub repository structure; doesn't write. */
2054
- repo_analyze: {
2055
- readOnlyHint: true,
2056
- destructiveHint: false,
2057
- idempotentHint: true,
2058
- openWorldHint: true
2059
- },
2060
- /** Generates a security-scanning pipeline plan; returns plan, doesn't write it. */
2061
- repo_security_plan: {
2062
- readOnlyHint: true,
2063
- destructiveHint: false,
2064
- idempotentHint: true,
2065
- openWorldHint: true
2231
+ annotations: {
2232
+ title: "CI Health Check",
2233
+ readOnlyHint: true,
2234
+ destructiveHint: false,
2235
+ idempotentHint: true,
2236
+ // Outbound network to githubstatus.com + GitHub API.
2237
+ openWorldHint: true
2238
+ },
2239
+ sideEffects: [
2240
+ {
2241
+ category: "implicit",
2242
+ description: "Fetches GitHub status-page + repo actions/runs to assess CI infrastructure health (#3076)"
2243
+ }
2244
+ ]
2066
2245
  },
2067
- /** Extracts code symbols from source files. */
2068
2246
  extract_symbols: {
2069
- readOnlyHint: true,
2070
- destructiveHint: false,
2071
- idempotentHint: true,
2072
- openWorldHint: false
2247
+ annotations: {
2248
+ title: "Extract Symbols",
2249
+ readOnlyHint: true,
2250
+ destructiveHint: false,
2251
+ idempotentHint: true,
2252
+ openWorldHint: false
2253
+ },
2254
+ sideEffects: [{ category: "implicit", description: "Reads source files and walks their ASTs" }]
2073
2255
  },
2074
- /** Searches codebase for patterns or symbols. */
2075
2256
  search_codebase: {
2076
- readOnlyHint: true,
2077
- destructiveHint: false,
2078
- idempotentHint: true,
2079
- openWorldHint: false
2257
+ annotations: {
2258
+ title: "Search Codebase",
2259
+ readOnlyHint: true,
2260
+ destructiveHint: false,
2261
+ idempotentHint: true,
2262
+ openWorldHint: false
2263
+ },
2264
+ sideEffects: [
2265
+ {
2266
+ category: "implicit",
2267
+ description: "Reads source files and builds an in-memory symbol index"
2268
+ }
2269
+ ]
2080
2270
  },
2081
- // ============================================================================
2082
- // Issue triage & registry imports
2083
- // ============================================================================
2084
- /** Triages a GitHub issue; may write labels/comments when authorized. */
2085
- issue_triage: {
2086
- readOnlyHint: false,
2087
- destructiveHint: false,
2088
- idempotentHint: false,
2089
- openWorldHint: true
2271
+ run_dev_pipeline: {
2272
+ annotations: {
2273
+ title: "Run Dev Pipeline",
2274
+ readOnlyHint: false,
2275
+ destructiveHint: false,
2276
+ idempotentHint: false,
2277
+ openWorldHint: true
2278
+ },
2279
+ sideEffects: [
2280
+ {
2281
+ category: "explicit",
2282
+ description: "Executes the V2 dev pipeline (delegates to CLI adapters)"
2283
+ },
2284
+ {
2285
+ category: "implicit",
2286
+ description: "Consumes API tokens; persists outcomes and checkpoints"
2287
+ },
2288
+ {
2289
+ category: "coupling",
2290
+ description: "Writes routing/learning state consumed by future runs"
2291
+ }
2292
+ ]
2090
2293
  },
2091
- /** Generates a draft model-registry entry; doesn't write. */
2092
- registry_import: {
2093
- readOnlyHint: true,
2094
- destructiveHint: false,
2095
- idempotentHint: true,
2096
- openWorldHint: true
2294
+ run_pipeline: {
2295
+ annotations: {
2296
+ title: "Run Pipeline",
2297
+ readOnlyHint: false,
2298
+ destructiveHint: false,
2299
+ idempotentHint: false,
2300
+ openWorldHint: true
2301
+ },
2302
+ sideEffects: [
2303
+ { category: "explicit", description: "Executes a generic V2 pipeline TaskContract" },
2304
+ { category: "implicit", description: "Consumes API tokens; emits pipeline events" },
2305
+ { category: "coupling", description: "Writes policy/audit state consumed by other tools" }
2306
+ ]
2307
+ },
2308
+ pr_review: {
2309
+ annotations: {
2310
+ title: "PR Review",
2311
+ readOnlyHint: false,
2312
+ destructiveHint: false,
2313
+ idempotentHint: false,
2314
+ openWorldHint: true
2315
+ },
2316
+ sideEffects: [
2317
+ {
2318
+ category: "explicit",
2319
+ description: "Runs multi-voter PR review with verification gate (#2233)"
2320
+ },
2321
+ { category: "implicit", description: "Consumes API tokens across voter CLIs" },
2322
+ { category: "coupling", description: "Records voter outcomes for weather report" }
2323
+ ]
2324
+ },
2325
+ supply_chain_tradeoff_panel: {
2326
+ annotations: {
2327
+ title: "Supply-chain Tradeoff Panel",
2328
+ readOnlyHint: false,
2329
+ destructiveHint: false,
2330
+ idempotentHint: false,
2331
+ openWorldHint: true
2332
+ },
2333
+ sideEffects: [
2334
+ {
2335
+ category: "explicit",
2336
+ description: "Runs per-axis tradeoff vote (build_time_determinism / supply_chain_risk / update_cadence) (#2294)"
2337
+ },
2338
+ { category: "implicit", description: "Consumes API tokens across voter CLIs" },
2339
+ { category: "coupling", description: "Records voter outcomes for weather report" }
2340
+ ]
2097
2341
  }
2098
2342
  };
2343
+ function getMcpAnnotations(toolName) {
2344
+ return TOOL_ANNOTATIONS[toolName]?.annotations;
2345
+ }
2346
+
2347
+ // src/mcp/tool-annotations.ts
2099
2348
  function getToolAnnotations(name) {
2100
- const a = TOOL_ANNOTATIONS[name];
2101
- if (a === void 0) {
2349
+ const entry = TOOL_ANNOTATIONS[name];
2350
+ if (entry === void 0) {
2102
2351
  throw new Error(
2103
- `getToolAnnotations: no entry for tool "${name}". Add it to TOOL_ANNOTATIONS in src/mcp/tool-annotations.ts (#2648).`
2352
+ `getToolAnnotations: no entry for tool "${name}". Add it to TOOL_ANNOTATIONS in src/mcp/tools/tool-annotations.ts (#2648/#3358).`
2104
2353
  );
2105
2354
  }
2106
- return a;
2355
+ return entry.annotations;
2107
2356
  }
2108
2357
 
2109
2358
  export {
@@ -2138,6 +2387,7 @@ export {
2138
2387
  wrapToolWithTimeout,
2139
2388
  toSdkCallback,
2140
2389
  toSdkCallbackWithBudgetCheck,
2390
+ getMcpAnnotations,
2141
2391
  getToolAnnotations
2142
2392
  };
2143
- //# sourceMappingURL=chunk-JFFI54DW.js.map
2393
+ //# sourceMappingURL=chunk-KAJPY6YZ.js.map