@vibesdotdev/mcp 0.0.0-stage → 1.0.0-rc.1

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 (602) hide show
  1. package/LICENSE +18 -0
  2. package/README.md +96 -2
  3. package/dist/adapters/auth-middleware.d.ts +68 -0
  4. package/dist/adapters/auth-middleware.d.ts.map +1 -0
  5. package/dist/adapters/auth-middleware.js +161 -0
  6. package/dist/adapters/auth-middleware.js.map +1 -0
  7. package/dist/adapters/compatibility.d.ts +20 -0
  8. package/dist/adapters/compatibility.d.ts.map +1 -0
  9. package/dist/adapters/compatibility.js +57 -0
  10. package/dist/adapters/compatibility.js.map +1 -0
  11. package/dist/adapters/host-context.consumer.d.ts +12 -0
  12. package/dist/adapters/host-context.consumer.d.ts.map +1 -0
  13. package/dist/adapters/host-context.consumer.js +10 -0
  14. package/dist/adapters/host-context.consumer.js.map +1 -0
  15. package/dist/adapters/host-context.d.ts +32 -0
  16. package/dist/adapters/host-context.d.ts.map +1 -0
  17. package/dist/adapters/host-context.js +17 -0
  18. package/dist/adapters/host-context.js.map +1 -0
  19. package/dist/adapters/index.d.ts +12 -0
  20. package/dist/adapters/index.d.ts.map +1 -0
  21. package/dist/adapters/index.js +13 -0
  22. package/dist/adapters/index.js.map +1 -0
  23. package/dist/adapters/mcp/ambient-envelope.d.ts +26 -0
  24. package/dist/adapters/mcp/ambient-envelope.d.ts.map +1 -0
  25. package/dist/adapters/mcp/ambient-envelope.js +70 -0
  26. package/dist/adapters/mcp/ambient-envelope.js.map +1 -0
  27. package/dist/adapters/mcp/catalog.d.ts +15 -0
  28. package/dist/adapters/mcp/catalog.d.ts.map +1 -0
  29. package/dist/adapters/mcp/catalog.js +26 -0
  30. package/dist/adapters/mcp/catalog.js.map +1 -0
  31. package/dist/adapters/mcp/connection-identity.d.ts +81 -0
  32. package/dist/adapters/mcp/connection-identity.d.ts.map +1 -0
  33. package/dist/adapters/mcp/connection-identity.js +114 -0
  34. package/dist/adapters/mcp/connection-identity.js.map +1 -0
  35. package/dist/adapters/mcp/context.d.ts +137 -0
  36. package/dist/adapters/mcp/context.d.ts.map +1 -0
  37. package/dist/adapters/mcp/context.js +230 -0
  38. package/dist/adapters/mcp/context.js.map +1 -0
  39. package/dist/adapters/mcp/formatters.d.ts +41 -0
  40. package/dist/adapters/mcp/formatters.d.ts.map +1 -0
  41. package/dist/adapters/mcp/formatters.js +102 -0
  42. package/dist/adapters/mcp/formatters.js.map +1 -0
  43. package/dist/adapters/mcp/from-api-endpoint.d.ts +59 -0
  44. package/dist/adapters/mcp/from-api-endpoint.d.ts.map +1 -0
  45. package/dist/adapters/mcp/from-api-endpoint.js +206 -0
  46. package/dist/adapters/mcp/from-api-endpoint.js.map +1 -0
  47. package/dist/adapters/mcp/generation-contract.d.ts +5 -0
  48. package/dist/adapters/mcp/generation-contract.d.ts.map +1 -0
  49. package/dist/adapters/mcp/generation-contract.js +34 -0
  50. package/dist/adapters/mcp/generation-contract.js.map +1 -0
  51. package/dist/adapters/mcp/host-registry.d.ts +159 -0
  52. package/dist/adapters/mcp/host-registry.d.ts.map +1 -0
  53. package/dist/adapters/mcp/host-registry.js +237 -0
  54. package/dist/adapters/mcp/host-registry.js.map +1 -0
  55. package/dist/adapters/mcp/index.d.ts +12 -0
  56. package/dist/adapters/mcp/index.d.ts.map +1 -0
  57. package/dist/adapters/mcp/index.js +17 -0
  58. package/dist/adapters/mcp/index.js.map +1 -0
  59. package/dist/adapters/mcp/isolated-notice.d.ts +111 -0
  60. package/dist/adapters/mcp/isolated-notice.d.ts.map +1 -0
  61. package/dist/adapters/mcp/isolated-notice.js +217 -0
  62. package/dist/adapters/mcp/isolated-notice.js.map +1 -0
  63. package/dist/adapters/mcp/json-rpc.d.ts +16 -0
  64. package/dist/adapters/mcp/json-rpc.d.ts.map +1 -0
  65. package/dist/adapters/mcp/json-rpc.js +32 -0
  66. package/dist/adapters/mcp/json-rpc.js.map +1 -0
  67. package/dist/adapters/mcp/local-origin.d.ts +18 -0
  68. package/dist/adapters/mcp/local-origin.d.ts.map +1 -0
  69. package/dist/adapters/mcp/local-origin.js +37 -0
  70. package/dist/adapters/mcp/local-origin.js.map +1 -0
  71. package/dist/adapters/mcp/logging/mcp-cloud.descriptor.d.ts +11 -0
  72. package/dist/adapters/mcp/logging/mcp-cloud.descriptor.d.ts.map +1 -0
  73. package/dist/adapters/mcp/logging/mcp-cloud.descriptor.js +21 -0
  74. package/dist/adapters/mcp/logging/mcp-cloud.descriptor.js.map +1 -0
  75. package/dist/adapters/mcp/logging/mcp-http.descriptor.d.ts +10 -0
  76. package/dist/adapters/mcp/logging/mcp-http.descriptor.d.ts.map +1 -0
  77. package/dist/adapters/mcp/logging/mcp-http.descriptor.js +20 -0
  78. package/dist/adapters/mcp/logging/mcp-http.descriptor.js.map +1 -0
  79. package/dist/adapters/mcp/logging/mcp-server.descriptor.d.ts +9 -0
  80. package/dist/adapters/mcp/logging/mcp-server.descriptor.d.ts.map +1 -0
  81. package/dist/adapters/mcp/logging/mcp-server.descriptor.js +25 -0
  82. package/dist/adapters/mcp/logging/mcp-server.descriptor.js.map +1 -0
  83. package/dist/adapters/mcp/logging/mcp-stdio.descriptor.d.ts +10 -0
  84. package/dist/adapters/mcp/logging/mcp-stdio.descriptor.d.ts.map +1 -0
  85. package/dist/adapters/mcp/logging/mcp-stdio.descriptor.js +20 -0
  86. package/dist/adapters/mcp/logging/mcp-stdio.descriptor.js.map +1 -0
  87. package/dist/adapters/mcp/mcp-http-session.d.ts +140 -0
  88. package/dist/adapters/mcp/mcp-http-session.d.ts.map +1 -0
  89. package/dist/adapters/mcp/mcp-http-session.js +797 -0
  90. package/dist/adapters/mcp/mcp-http-session.js.map +1 -0
  91. package/dist/adapters/mcp/mcp-wire-name.d.ts +9 -0
  92. package/dist/adapters/mcp/mcp-wire-name.d.ts.map +1 -0
  93. package/dist/adapters/mcp/mcp-wire-name.js +52 -0
  94. package/dist/adapters/mcp/mcp-wire-name.js.map +1 -0
  95. package/dist/adapters/mcp/projection-doctor.d.ts +101 -0
  96. package/dist/adapters/mcp/projection-doctor.d.ts.map +1 -0
  97. package/dist/adapters/mcp/projection-doctor.js +285 -0
  98. package/dist/adapters/mcp/projection-doctor.js.map +1 -0
  99. package/dist/adapters/mcp/projection.d.ts +36 -0
  100. package/dist/adapters/mcp/projection.d.ts.map +1 -0
  101. package/dist/adapters/mcp/projection.js +136 -0
  102. package/dist/adapters/mcp/projection.js.map +1 -0
  103. package/dist/adapters/mcp/prompts/continuity-wake.prompt.descriptor.d.ts +113 -0
  104. package/dist/adapters/mcp/prompts/continuity-wake.prompt.descriptor.d.ts.map +1 -0
  105. package/dist/adapters/mcp/prompts/continuity-wake.prompt.descriptor.js +15 -0
  106. package/dist/adapters/mcp/prompts/continuity-wake.prompt.descriptor.js.map +1 -0
  107. package/dist/adapters/mcp/prompts/empty-tool-kind.prompt.descriptor.d.ts +113 -0
  108. package/dist/adapters/mcp/prompts/empty-tool-kind.prompt.descriptor.d.ts.map +1 -0
  109. package/dist/adapters/mcp/prompts/empty-tool-kind.prompt.descriptor.js +18 -0
  110. package/dist/adapters/mcp/prompts/empty-tool-kind.prompt.descriptor.js.map +1 -0
  111. package/dist/adapters/mcp/prompts/index.d.ts +113 -0
  112. package/dist/adapters/mcp/prompts/index.d.ts.map +1 -0
  113. package/dist/adapters/mcp/prompts/index.js +24 -0
  114. package/dist/adapters/mcp/prompts/index.js.map +1 -0
  115. package/dist/adapters/mcp/prompts/isolated-runtime.prompt.descriptor.d.ts +114 -0
  116. package/dist/adapters/mcp/prompts/isolated-runtime.prompt.descriptor.d.ts.map +1 -0
  117. package/dist/adapters/mcp/prompts/isolated-runtime.prompt.descriptor.js +37 -0
  118. package/dist/adapters/mcp/prompts/isolated-runtime.prompt.descriptor.js.map +1 -0
  119. package/dist/adapters/mcp/prompts/local-tools.prompt.descriptor.d.ts +113 -0
  120. package/dist/adapters/mcp/prompts/local-tools.prompt.descriptor.d.ts.map +1 -0
  121. package/dist/adapters/mcp/prompts/local-tools.prompt.descriptor.js +20 -0
  122. package/dist/adapters/mcp/prompts/local-tools.prompt.descriptor.js.map +1 -0
  123. package/dist/adapters/mcp/prompts/max-tools.prompt.descriptor.d.ts +113 -0
  124. package/dist/adapters/mcp/prompts/max-tools.prompt.descriptor.d.ts.map +1 -0
  125. package/dist/adapters/mcp/prompts/max-tools.prompt.descriptor.js +20 -0
  126. package/dist/adapters/mcp/prompts/max-tools.prompt.descriptor.js.map +1 -0
  127. package/dist/adapters/mcp/prompts/private-runtime.prompt.descriptor.d.ts +114 -0
  128. package/dist/adapters/mcp/prompts/private-runtime.prompt.descriptor.d.ts.map +1 -0
  129. package/dist/adapters/mcp/prompts/private-runtime.prompt.descriptor.js +21 -0
  130. package/dist/adapters/mcp/prompts/private-runtime.prompt.descriptor.js.map +1 -0
  131. package/dist/adapters/mcp/prompts/registration-failure.prompt.descriptor.d.ts +113 -0
  132. package/dist/adapters/mcp/prompts/registration-failure.prompt.descriptor.d.ts.map +1 -0
  133. package/dist/adapters/mcp/prompts/registration-failure.prompt.descriptor.js +19 -0
  134. package/dist/adapters/mcp/prompts/registration-failure.prompt.descriptor.js.map +1 -0
  135. package/dist/adapters/mcp/prompts/required-checklist.prompt.descriptor.d.ts +113 -0
  136. package/dist/adapters/mcp/prompts/required-checklist.prompt.descriptor.d.ts.map +1 -0
  137. package/dist/adapters/mcp/prompts/required-checklist.prompt.descriptor.js +18 -0
  138. package/dist/adapters/mcp/prompts/required-checklist.prompt.descriptor.js.map +1 -0
  139. package/dist/adapters/mcp/prompts/required-tools-missing.prompt.descriptor.d.ts +113 -0
  140. package/dist/adapters/mcp/prompts/required-tools-missing.prompt.descriptor.d.ts.map +1 -0
  141. package/dist/adapters/mcp/prompts/required-tools-missing.prompt.descriptor.js +19 -0
  142. package/dist/adapters/mcp/prompts/required-tools-missing.prompt.descriptor.js.map +1 -0
  143. package/dist/adapters/mcp/prompts/unknown-client.prompt.descriptor.d.ts +113 -0
  144. package/dist/adapters/mcp/prompts/unknown-client.prompt.descriptor.d.ts.map +1 -0
  145. package/dist/adapters/mcp/prompts/unknown-client.prompt.descriptor.js +18 -0
  146. package/dist/adapters/mcp/prompts/unknown-client.prompt.descriptor.js.map +1 -0
  147. package/dist/adapters/mcp/request-context.d.ts +28 -0
  148. package/dist/adapters/mcp/request-context.d.ts.map +1 -0
  149. package/dist/adapters/mcp/request-context.js +49 -0
  150. package/dist/adapters/mcp/request-context.js.map +1 -0
  151. package/dist/adapters/mcp/roster-announcer.d.ts +3 -0
  152. package/dist/adapters/mcp/roster-announcer.d.ts.map +1 -0
  153. package/dist/adapters/mcp/roster-announcer.js +22 -0
  154. package/dist/adapters/mcp/roster-announcer.js.map +1 -0
  155. package/dist/adapters/mcp/sampling-context.d.ts +12 -0
  156. package/dist/adapters/mcp/sampling-context.d.ts.map +1 -0
  157. package/dist/adapters/mcp/sampling-context.js +30 -0
  158. package/dist/adapters/mcp/sampling-context.js.map +1 -0
  159. package/dist/adapters/mcp/sampling.d.ts +17 -0
  160. package/dist/adapters/mcp/sampling.d.ts.map +1 -0
  161. package/dist/adapters/mcp/sampling.js +43 -0
  162. package/dist/adapters/mcp/sampling.js.map +1 -0
  163. package/dist/adapters/mcp/schemas/index.d.ts +37 -0
  164. package/dist/adapters/mcp/schemas/index.d.ts.map +1 -0
  165. package/dist/adapters/mcp/schemas/index.js +5 -0
  166. package/dist/adapters/mcp/schemas/index.js.map +1 -0
  167. package/dist/adapters/mcp/schemas/tool-selection.d.ts +12 -0
  168. package/dist/adapters/mcp/schemas/tool-selection.d.ts.map +1 -0
  169. package/dist/adapters/mcp/schemas/tool-selection.js +2 -0
  170. package/dist/adapters/mcp/schemas/tool-selection.js.map +1 -0
  171. package/dist/adapters/mcp/serve-identity.d.ts +64 -0
  172. package/dist/adapters/mcp/serve-identity.d.ts.map +1 -0
  173. package/dist/adapters/mcp/serve-identity.js +220 -0
  174. package/dist/adapters/mcp/serve-identity.js.map +1 -0
  175. package/dist/adapters/mcp/server.consumer.d.ts +5 -0
  176. package/dist/adapters/mcp/server.consumer.d.ts.map +1 -0
  177. package/dist/adapters/mcp/server.consumer.js +300 -0
  178. package/dist/adapters/mcp/server.consumer.js.map +1 -0
  179. package/dist/adapters/mcp/server.d.ts +56 -0
  180. package/dist/adapters/mcp/server.d.ts.map +1 -0
  181. package/dist/adapters/mcp/server.js +1423 -0
  182. package/dist/adapters/mcp/server.js.map +1 -0
  183. package/dist/adapters/mcp/stale-body.consumer.d.ts +85 -0
  184. package/dist/adapters/mcp/stale-body.consumer.d.ts.map +1 -0
  185. package/dist/adapters/mcp/stale-body.consumer.js +183 -0
  186. package/dist/adapters/mcp/stale-body.consumer.js.map +1 -0
  187. package/dist/adapters/mcp/startup-refusal.d.ts +8 -0
  188. package/dist/adapters/mcp/startup-refusal.d.ts.map +1 -0
  189. package/dist/adapters/mcp/startup-refusal.js +141 -0
  190. package/dist/adapters/mcp/startup-refusal.js.map +1 -0
  191. package/dist/adapters/mcp/stdio-relay.d.ts +232 -0
  192. package/dist/adapters/mcp/stdio-relay.d.ts.map +1 -0
  193. package/dist/adapters/mcp/stdio-relay.js +1169 -0
  194. package/dist/adapters/mcp/stdio-relay.js.map +1 -0
  195. package/dist/adapters/mcp/tool-audit-live.d.ts +109 -0
  196. package/dist/adapters/mcp/tool-audit-live.d.ts.map +1 -0
  197. package/dist/adapters/mcp/tool-audit-live.js +538 -0
  198. package/dist/adapters/mcp/tool-audit-live.js.map +1 -0
  199. package/dist/adapters/mcp/tool-audit.d.ts +44 -0
  200. package/dist/adapters/mcp/tool-audit.d.ts.map +1 -0
  201. package/dist/adapters/mcp/tool-audit.js +168 -0
  202. package/dist/adapters/mcp/tool-audit.js.map +1 -0
  203. package/dist/adapters/mcp/tool-catalog.d.ts +179 -0
  204. package/dist/adapters/mcp/tool-catalog.d.ts.map +1 -0
  205. package/dist/adapters/mcp/tool-catalog.js +330 -0
  206. package/dist/adapters/mcp/tool-catalog.js.map +1 -0
  207. package/dist/adapters/mcp/tool-selection.d.ts +77 -0
  208. package/dist/adapters/mcp/tool-selection.d.ts.map +1 -0
  209. package/dist/adapters/mcp/tool-selection.js +266 -0
  210. package/dist/adapters/mcp/tool-selection.js.map +1 -0
  211. package/dist/adapters/mcp/transport-registry.d.ts +5 -0
  212. package/dist/adapters/mcp/transport-registry.d.ts.map +1 -0
  213. package/dist/adapters/mcp/transport-registry.js +13 -0
  214. package/dist/adapters/mcp/transport-registry.js.map +1 -0
  215. package/dist/adapters/mcp/trust-tag.d.ts +69 -0
  216. package/dist/adapters/mcp/trust-tag.d.ts.map +1 -0
  217. package/dist/adapters/mcp/trust-tag.js +120 -0
  218. package/dist/adapters/mcp/trust-tag.js.map +1 -0
  219. package/dist/adapters/mcp/vibes-types.d.ts +115 -0
  220. package/dist/adapters/mcp/vibes-types.d.ts.map +1 -0
  221. package/dist/adapters/mcp/vibes-types.js +7 -0
  222. package/dist/adapters/mcp/vibes-types.js.map +1 -0
  223. package/dist/adapters/mcp/web-handler.d.ts +49 -0
  224. package/dist/adapters/mcp/web-handler.d.ts.map +1 -0
  225. package/dist/adapters/mcp/web-handler.js +129 -0
  226. package/dist/adapters/mcp/web-handler.js.map +1 -0
  227. package/dist/adapters/session-id.d.ts +3 -0
  228. package/dist/adapters/session-id.d.ts.map +1 -0
  229. package/dist/adapters/session-id.js +42 -0
  230. package/dist/adapters/session-id.js.map +1 -0
  231. package/dist/adapters/transport-bun-http.d.ts +39 -0
  232. package/dist/adapters/transport-bun-http.d.ts.map +1 -0
  233. package/dist/adapters/transport-bun-http.js +42 -0
  234. package/dist/adapters/transport-bun-http.js.map +1 -0
  235. package/dist/adapters/types.d.ts +135 -0
  236. package/dist/adapters/types.d.ts.map +1 -0
  237. package/dist/adapters/types.js +2 -0
  238. package/dist/adapters/types.js.map +1 -0
  239. package/dist/adapters/web-compatibility.d.ts +6 -0
  240. package/dist/adapters/web-compatibility.d.ts.map +1 -0
  241. package/dist/adapters/web-compatibility.js +13 -0
  242. package/dist/adapters/web-compatibility.js.map +1 -0
  243. package/dist/adapters/zod-mcp.d.ts +139 -0
  244. package/dist/adapters/zod-mcp.d.ts.map +1 -0
  245. package/dist/adapters/zod-mcp.js +617 -0
  246. package/dist/adapters/zod-mcp.js.map +1 -0
  247. package/dist/cli/mcp/audit/dev.audit.tools.descriptor.d.ts +15 -0
  248. package/dist/cli/mcp/audit/dev.audit.tools.descriptor.d.ts.map +1 -0
  249. package/dist/cli/mcp/audit/dev.audit.tools.descriptor.js +58 -0
  250. package/dist/cli/mcp/audit/dev.audit.tools.descriptor.js.map +1 -0
  251. package/dist/cli/mcp/audit/dev.audit.tools.impl.consumer.d.ts +6 -0
  252. package/dist/cli/mcp/audit/dev.audit.tools.impl.consumer.d.ts.map +1 -0
  253. package/dist/cli/mcp/audit/dev.audit.tools.impl.consumer.js +180 -0
  254. package/dist/cli/mcp/audit/dev.audit.tools.impl.consumer.js.map +1 -0
  255. package/dist/cli/mcp/lifecycle/dev.mcp.restart.descriptor.d.ts +22 -0
  256. package/dist/cli/mcp/lifecycle/dev.mcp.restart.descriptor.d.ts.map +1 -0
  257. package/dist/cli/mcp/lifecycle/dev.mcp.restart.descriptor.js +19 -0
  258. package/dist/cli/mcp/lifecycle/dev.mcp.restart.descriptor.js.map +1 -0
  259. package/dist/cli/mcp/lifecycle/dev.mcp.restart.impl.consumer.d.ts +23 -0
  260. package/dist/cli/mcp/lifecycle/dev.mcp.restart.impl.consumer.d.ts.map +1 -0
  261. package/dist/cli/mcp/lifecycle/dev.mcp.restart.impl.consumer.js +41 -0
  262. package/dist/cli/mcp/lifecycle/dev.mcp.restart.impl.consumer.js.map +1 -0
  263. package/dist/cli/mcp/lifecycle/dev.mcp.serve.descriptor.d.ts +75 -0
  264. package/dist/cli/mcp/lifecycle/dev.mcp.serve.descriptor.d.ts.map +1 -0
  265. package/dist/cli/mcp/lifecycle/dev.mcp.serve.descriptor.js +84 -0
  266. package/dist/cli/mcp/lifecycle/dev.mcp.serve.descriptor.js.map +1 -0
  267. package/dist/cli/mcp/lifecycle/dev.mcp.start.descriptor.d.ts +35 -0
  268. package/dist/cli/mcp/lifecycle/dev.mcp.start.descriptor.d.ts.map +1 -0
  269. package/dist/cli/mcp/lifecycle/dev.mcp.start.descriptor.js +28 -0
  270. package/dist/cli/mcp/lifecycle/dev.mcp.start.descriptor.js.map +1 -0
  271. package/dist/cli/mcp/lifecycle/dev.mcp.start.impl.consumer.d.ts +11 -0
  272. package/dist/cli/mcp/lifecycle/dev.mcp.start.impl.consumer.d.ts.map +1 -0
  273. package/dist/cli/mcp/lifecycle/dev.mcp.start.impl.consumer.js +47 -0
  274. package/dist/cli/mcp/lifecycle/dev.mcp.start.impl.consumer.js.map +1 -0
  275. package/dist/cli/mcp/lifecycle/dev.mcp.stop.descriptor.d.ts +18 -0
  276. package/dist/cli/mcp/lifecycle/dev.mcp.stop.descriptor.d.ts.map +1 -0
  277. package/dist/cli/mcp/lifecycle/dev.mcp.stop.descriptor.js +18 -0
  278. package/dist/cli/mcp/lifecycle/dev.mcp.stop.descriptor.js.map +1 -0
  279. package/dist/cli/mcp/lifecycle/dev.mcp.stop.impl.consumer.d.ts +12 -0
  280. package/dist/cli/mcp/lifecycle/dev.mcp.stop.impl.consumer.d.ts.map +1 -0
  281. package/dist/cli/mcp/lifecycle/dev.mcp.stop.impl.consumer.js +17 -0
  282. package/dist/cli/mcp/lifecycle/dev.mcp.stop.impl.consumer.js.map +1 -0
  283. package/dist/cli/mcp/management/dev.mcp.install.descriptor.d.ts +41 -0
  284. package/dist/cli/mcp/management/dev.mcp.install.descriptor.d.ts.map +1 -0
  285. package/dist/cli/mcp/management/dev.mcp.install.descriptor.js +49 -0
  286. package/dist/cli/mcp/management/dev.mcp.install.descriptor.js.map +1 -0
  287. package/dist/cli/mcp/management/dev.mcp.install.impl.consumer.d.ts +16 -0
  288. package/dist/cli/mcp/management/dev.mcp.install.impl.consumer.d.ts.map +1 -0
  289. package/dist/cli/mcp/management/dev.mcp.install.impl.consumer.js +244 -0
  290. package/dist/cli/mcp/management/dev.mcp.install.impl.consumer.js.map +1 -0
  291. package/dist/cli/mcp/management/dev.mcp.list.descriptor.d.ts +22 -0
  292. package/dist/cli/mcp/management/dev.mcp.list.descriptor.d.ts.map +1 -0
  293. package/dist/cli/mcp/management/dev.mcp.list.descriptor.js +24 -0
  294. package/dist/cli/mcp/management/dev.mcp.list.descriptor.js.map +1 -0
  295. package/dist/cli/mcp/management/dev.mcp.list.impl.consumer.d.ts +29 -0
  296. package/dist/cli/mcp/management/dev.mcp.list.impl.consumer.d.ts.map +1 -0
  297. package/dist/cli/mcp/management/dev.mcp.list.impl.consumer.js +127 -0
  298. package/dist/cli/mcp/management/dev.mcp.list.impl.consumer.js.map +1 -0
  299. package/dist/cli/mcp/management/dev.mcp.status.descriptor.d.ts +48 -0
  300. package/dist/cli/mcp/management/dev.mcp.status.descriptor.d.ts.map +1 -0
  301. package/dist/cli/mcp/management/dev.mcp.status.descriptor.js +56 -0
  302. package/dist/cli/mcp/management/dev.mcp.status.descriptor.js.map +1 -0
  303. package/dist/cli/mcp/management/dev.mcp.status.impl.consumer.d.ts +9 -0
  304. package/dist/cli/mcp/management/dev.mcp.status.impl.consumer.d.ts.map +1 -0
  305. package/dist/cli/mcp/management/dev.mcp.status.impl.consumer.js +253 -0
  306. package/dist/cli/mcp/management/dev.mcp.status.impl.consumer.js.map +1 -0
  307. package/dist/cli/mcp/management/install-helpers.d.ts +26 -0
  308. package/dist/cli/mcp/management/install-helpers.d.ts.map +1 -0
  309. package/dist/cli/mcp/management/install-helpers.js +95 -0
  310. package/dist/cli/mcp/management/install-helpers.js.map +1 -0
  311. package/dist/cli/mcp/management/process-audit.impl.consumer.d.ts +38 -0
  312. package/dist/cli/mcp/management/process-audit.impl.consumer.d.ts.map +1 -0
  313. package/dist/cli/mcp/management/process-audit.impl.consumer.js +145 -0
  314. package/dist/cli/mcp/management/process-audit.impl.consumer.js.map +1 -0
  315. package/dist/cli/mcp/management/rules-debt-summary.impl.consumer.d.ts +21 -0
  316. package/dist/cli/mcp/management/rules-debt-summary.impl.consumer.d.ts.map +1 -0
  317. package/dist/cli/mcp/management/rules-debt-summary.impl.consumer.js +82 -0
  318. package/dist/cli/mcp/management/rules-debt-summary.impl.consumer.js.map +1 -0
  319. package/dist/cli/mcp/management/status-doctor.d.ts +22 -0
  320. package/dist/cli/mcp/management/status-doctor.d.ts.map +1 -0
  321. package/dist/cli/mcp/management/status-doctor.js +153 -0
  322. package/dist/cli/mcp/management/status-doctor.js.map +1 -0
  323. package/dist/cli/mcp/schemas/status-doctor.d.ts +75 -0
  324. package/dist/cli/mcp/schemas/status-doctor.d.ts.map +1 -0
  325. package/dist/cli/mcp/schemas/status-doctor.js +2 -0
  326. package/dist/cli/mcp/schemas/status-doctor.js.map +1 -0
  327. package/dist/cli/mcp/support/host-port.d.ts +31 -0
  328. package/dist/cli/mcp/support/host-port.d.ts.map +1 -0
  329. package/dist/cli/mcp/support/host-port.js +31 -0
  330. package/dist/cli/mcp/support/host-port.js.map +1 -0
  331. package/dist/cli/mcp/support/server-process.impl.consumer.d.ts +24 -0
  332. package/dist/cli/mcp/support/server-process.impl.consumer.d.ts.map +1 -0
  333. package/dist/cli/mcp/support/server-process.impl.consumer.js +86 -0
  334. package/dist/cli/mcp/support/server-process.impl.consumer.js.map +1 -0
  335. package/dist/cli/mcp/support/status-doctor.d.ts +33 -0
  336. package/dist/cli/mcp/support/status-doctor.d.ts.map +1 -0
  337. package/dist/cli/mcp/support/status-doctor.js +104 -0
  338. package/dist/cli/mcp/support/status-doctor.js.map +1 -0
  339. package/dist/cli/print.d.ts +12 -0
  340. package/dist/cli/print.d.ts.map +1 -0
  341. package/dist/cli/print.js +25 -0
  342. package/dist/cli/print.js.map +1 -0
  343. package/dist/cli/surface-mcp/client-connection-identity.consumer.d.ts +19 -0
  344. package/dist/cli/surface-mcp/client-connection-identity.consumer.d.ts.map +1 -0
  345. package/dist/cli/surface-mcp/client-connection-identity.consumer.js +53 -0
  346. package/dist/cli/surface-mcp/client-connection-identity.consumer.js.map +1 -0
  347. package/dist/cli/surface-mcp/dev.mcp.serve.impl.cloud.d.ts +7 -0
  348. package/dist/cli/surface-mcp/dev.mcp.serve.impl.cloud.d.ts.map +1 -0
  349. package/dist/cli/surface-mcp/dev.mcp.serve.impl.cloud.js +345 -0
  350. package/dist/cli/surface-mcp/dev.mcp.serve.impl.cloud.js.map +1 -0
  351. package/dist/cli/surface-mcp/dev.mcp.serve.impl.consumer.d.ts +12 -0
  352. package/dist/cli/surface-mcp/dev.mcp.serve.impl.consumer.d.ts.map +1 -0
  353. package/dist/cli/surface-mcp/dev.mcp.serve.impl.consumer.js +657 -0
  354. package/dist/cli/surface-mcp/dev.mcp.serve.impl.consumer.js.map +1 -0
  355. package/dist/cli/surface-mcp/local-dev-flag.d.ts +24 -0
  356. package/dist/cli/surface-mcp/local-dev-flag.d.ts.map +1 -0
  357. package/dist/cli/surface-mcp/local-dev-flag.js +37 -0
  358. package/dist/cli/surface-mcp/local-dev-flag.js.map +1 -0
  359. package/dist/cli/surface-mcp/shared-host-startup.d.ts +14 -0
  360. package/dist/cli/surface-mcp/shared-host-startup.d.ts.map +1 -0
  361. package/dist/cli/surface-mcp/shared-host-startup.js +46 -0
  362. package/dist/cli/surface-mcp/shared-host-startup.js.map +1 -0
  363. package/dist/cli/surface-mcp/stdio-relay-transport.d.ts +2 -0
  364. package/dist/cli/surface-mcp/stdio-relay-transport.d.ts.map +1 -0
  365. package/dist/cli/surface-mcp/stdio-relay-transport.js +21 -0
  366. package/dist/cli/surface-mcp/stdio-relay-transport.js.map +1 -0
  367. package/dist/cli/surface-mcp/teardown.d.ts +17 -0
  368. package/dist/cli/surface-mcp/teardown.d.ts.map +1 -0
  369. package/dist/cli/surface-mcp/teardown.js +28 -0
  370. package/dist/cli/surface-mcp/teardown.js.map +1 -0
  371. package/dist/client.d.ts +49 -0
  372. package/dist/client.d.ts.map +1 -0
  373. package/dist/client.js +131 -0
  374. package/dist/client.js.map +1 -0
  375. package/dist/config/load.d.ts +6 -0
  376. package/dist/config/load.d.ts.map +1 -0
  377. package/dist/config/load.js +18 -0
  378. package/dist/config/load.js.map +1 -0
  379. package/dist/config/mcp.config.descriptor.d.ts +108 -0
  380. package/dist/config/mcp.config.descriptor.d.ts.map +1 -0
  381. package/dist/config/mcp.config.descriptor.js +63 -0
  382. package/dist/config/mcp.config.descriptor.js.map +1 -0
  383. package/dist/docs/mcp.docs.descriptor.d.ts +4 -0
  384. package/dist/docs/mcp.docs.descriptor.d.ts.map +1 -0
  385. package/dist/docs/mcp.docs.descriptor.js +44 -0
  386. package/dist/docs/mcp.docs.descriptor.js.map +1 -0
  387. package/dist/docs/prompts.docs.descriptor.d.ts +4 -0
  388. package/dist/docs/prompts.docs.descriptor.d.ts.map +1 -0
  389. package/dist/docs/prompts.docs.descriptor.js +130 -0
  390. package/dist/docs/prompts.docs.descriptor.js.map +1 -0
  391. package/dist/docs/resources.docs.descriptor.d.ts +4 -0
  392. package/dist/docs/resources.docs.descriptor.d.ts.map +1 -0
  393. package/dist/docs/resources.docs.descriptor.js +390 -0
  394. package/dist/docs/resources.docs.descriptor.js.map +1 -0
  395. package/dist/docs/server.docs.descriptor.d.ts +4 -0
  396. package/dist/docs/server.docs.descriptor.d.ts.map +1 -0
  397. package/dist/docs/server.docs.descriptor.js +383 -0
  398. package/dist/docs/server.docs.descriptor.js.map +1 -0
  399. package/dist/docs/tools.docs.descriptor.d.ts +4 -0
  400. package/dist/docs/tools.docs.descriptor.d.ts.map +1 -0
  401. package/dist/docs/tools.docs.descriptor.js +316 -0
  402. package/dist/docs/tools.docs.descriptor.js.map +1 -0
  403. package/dist/harness-identity.descriptors.d.ts +11 -0
  404. package/dist/harness-identity.descriptors.d.ts.map +1 -0
  405. package/dist/harness-identity.descriptors.js +41 -0
  406. package/dist/harness-identity.descriptors.js.map +1 -0
  407. package/dist/index.d.ts +36 -0
  408. package/dist/index.d.ts.map +1 -0
  409. package/dist/index.js +36 -0
  410. package/dist/index.js.map +1 -0
  411. package/dist/kinds/harness-identity.kind.d.ts +3 -0
  412. package/dist/kinds/harness-identity.kind.d.ts.map +1 -0
  413. package/dist/kinds/harness-identity.kind.js +16 -0
  414. package/dist/kinds/harness-identity.kind.js.map +1 -0
  415. package/dist/kinds/sampling.kind.d.ts +15 -0
  416. package/dist/kinds/sampling.kind.d.ts.map +1 -0
  417. package/dist/kinds/sampling.kind.js +24 -0
  418. package/dist/kinds/sampling.kind.js.map +1 -0
  419. package/dist/lifecycle-repeat.d.ts +23 -0
  420. package/dist/lifecycle-repeat.d.ts.map +1 -0
  421. package/dist/lifecycle-repeat.js +21 -0
  422. package/dist/lifecycle-repeat.js.map +1 -0
  423. package/dist/mcp/dev.mcp.descriptor.d.ts +18 -0
  424. package/dist/mcp/dev.mcp.descriptor.d.ts.map +1 -0
  425. package/dist/mcp/dev.mcp.descriptor.js +18 -0
  426. package/dist/mcp/dev.mcp.descriptor.js.map +1 -0
  427. package/dist/mcp/index.d.ts +20 -0
  428. package/dist/mcp/index.d.ts.map +1 -0
  429. package/dist/mcp/index.js +19 -0
  430. package/dist/mcp/index.js.map +1 -0
  431. package/dist/mcp/mcp.plugin.d.ts +9 -0
  432. package/dist/mcp/mcp.plugin.d.ts.map +1 -0
  433. package/dist/mcp/mcp.plugin.js +59 -0
  434. package/dist/mcp/mcp.plugin.js.map +1 -0
  435. package/dist/mcp-client.plugin.d.ts +4 -0
  436. package/dist/mcp-client.plugin.d.ts.map +1 -0
  437. package/dist/mcp-client.plugin.js +13 -0
  438. package/dist/mcp-client.plugin.js.map +1 -0
  439. package/dist/mcp.client.descriptor.d.ts +27 -0
  440. package/dist/mcp.client.descriptor.d.ts.map +1 -0
  441. package/dist/mcp.client.descriptor.js +7 -0
  442. package/dist/mcp.client.descriptor.js.map +1 -0
  443. package/dist/mcp.consumer.plugin.d.ts +4 -0
  444. package/dist/mcp.consumer.plugin.d.ts.map +1 -0
  445. package/dist/mcp.consumer.plugin.js +19 -0
  446. package/dist/mcp.consumer.plugin.js.map +1 -0
  447. package/dist/mcp.runtime.plugin.d.ts +10 -0
  448. package/dist/mcp.runtime.plugin.d.ts.map +1 -0
  449. package/dist/mcp.runtime.plugin.js +40 -0
  450. package/dist/mcp.runtime.plugin.js.map +1 -0
  451. package/dist/root-state.d.ts +3 -0
  452. package/dist/root-state.d.ts.map +1 -0
  453. package/dist/root-state.js +3 -0
  454. package/dist/root-state.js.map +1 -0
  455. package/dist/schemas/api-endpoint.d.ts +12 -0
  456. package/dist/schemas/api-endpoint.d.ts.map +1 -0
  457. package/dist/schemas/api-endpoint.js +11 -0
  458. package/dist/schemas/api-endpoint.js.map +1 -0
  459. package/dist/schemas/audit.d.ts +172 -0
  460. package/dist/schemas/audit.d.ts.map +1 -0
  461. package/dist/schemas/audit.js +82 -0
  462. package/dist/schemas/audit.js.map +1 -0
  463. package/dist/schemas/harness-identity.d.ts +41 -0
  464. package/dist/schemas/harness-identity.d.ts.map +1 -0
  465. package/dist/schemas/harness-identity.js +19 -0
  466. package/dist/schemas/harness-identity.js.map +1 -0
  467. package/dist/schemas/host-adapters.d.ts +14 -0
  468. package/dist/schemas/host-adapters.d.ts.map +1 -0
  469. package/dist/schemas/host-adapters.js +7 -0
  470. package/dist/schemas/host-adapters.js.map +1 -0
  471. package/dist/schemas/projection.d.ts +10 -0
  472. package/dist/schemas/projection.d.ts.map +1 -0
  473. package/dist/schemas/projection.js +9 -0
  474. package/dist/schemas/projection.js.map +1 -0
  475. package/dist/schemas/tool.d.ts +8 -0
  476. package/dist/schemas/tool.d.ts.map +1 -0
  477. package/dist/schemas/tool.js +8 -0
  478. package/dist/schemas/tool.js.map +1 -0
  479. package/dist/surface-mcp/build-provenance.d.ts +67 -0
  480. package/dist/surface-mcp/build-provenance.d.ts.map +1 -0
  481. package/dist/surface-mcp/build-provenance.js +287 -0
  482. package/dist/surface-mcp/build-provenance.js.map +1 -0
  483. package/dist/surface-mcp/crash-reporting.d.ts +28 -0
  484. package/dist/surface-mcp/crash-reporting.d.ts.map +1 -0
  485. package/dist/surface-mcp/crash-reporting.js +41 -0
  486. package/dist/surface-mcp/crash-reporting.js.map +1 -0
  487. package/dist/surface-mcp/executable-freshness-watch.d.ts +89 -0
  488. package/dist/surface-mcp/executable-freshness-watch.d.ts.map +1 -0
  489. package/dist/surface-mcp/executable-freshness-watch.js +225 -0
  490. package/dist/surface-mcp/executable-freshness-watch.js.map +1 -0
  491. package/dist/surface-mcp/host-provenance-banner.d.ts +49 -0
  492. package/dist/surface-mcp/host-provenance-banner.d.ts.map +1 -0
  493. package/dist/surface-mcp/host-provenance-banner.js +135 -0
  494. package/dist/surface-mcp/host-provenance-banner.js.map +1 -0
  495. package/dist/surface-mcp/index.d.ts +51 -0
  496. package/dist/surface-mcp/index.d.ts.map +1 -0
  497. package/dist/surface-mcp/index.js +92 -0
  498. package/dist/surface-mcp/index.js.map +1 -0
  499. package/dist/surface-mcp/local-tools-bootstrap.d.ts +36 -0
  500. package/dist/surface-mcp/local-tools-bootstrap.d.ts.map +1 -0
  501. package/dist/surface-mcp/local-tools-bootstrap.js +43 -0
  502. package/dist/surface-mcp/local-tools-bootstrap.js.map +1 -0
  503. package/dist/surface-mcp/mcp-serve.plugin.d.ts +9 -0
  504. package/dist/surface-mcp/mcp-serve.plugin.d.ts.map +1 -0
  505. package/dist/surface-mcp/mcp-serve.plugin.js +24 -0
  506. package/dist/surface-mcp/mcp-serve.plugin.js.map +1 -0
  507. package/dist/surface-mcp/project-config.d.ts +35 -0
  508. package/dist/surface-mcp/project-config.d.ts.map +1 -0
  509. package/dist/surface-mcp/project-config.js +74 -0
  510. package/dist/surface-mcp/project-config.js.map +1 -0
  511. package/dist/surface-mcp/serve-lifecycle.d.ts +102 -0
  512. package/dist/surface-mcp/serve-lifecycle.d.ts.map +1 -0
  513. package/dist/surface-mcp/serve-lifecycle.js +343 -0
  514. package/dist/surface-mcp/serve-lifecycle.js.map +1 -0
  515. package/dist/surface-mcp/session-bridge.d.ts +18 -0
  516. package/dist/surface-mcp/session-bridge.d.ts.map +1 -0
  517. package/dist/surface-mcp/session-bridge.js +26 -0
  518. package/dist/surface-mcp/session-bridge.js.map +1 -0
  519. package/dist/surface-mcp/subscriptions/session.bound.workspace.descriptor.d.ts +13 -0
  520. package/dist/surface-mcp/subscriptions/session.bound.workspace.descriptor.d.ts.map +1 -0
  521. package/dist/surface-mcp/subscriptions/session.bound.workspace.descriptor.js +13 -0
  522. package/dist/surface-mcp/subscriptions/session.bound.workspace.descriptor.js.map +1 -0
  523. package/dist/surface-mcp/subscriptions/session.bound.workspace.impl.consumer.d.ts +11 -0
  524. package/dist/surface-mcp/subscriptions/session.bound.workspace.impl.consumer.d.ts.map +1 -0
  525. package/dist/surface-mcp/subscriptions/session.bound.workspace.impl.consumer.js +36 -0
  526. package/dist/surface-mcp/subscriptions/session.bound.workspace.impl.consumer.js.map +1 -0
  527. package/dist/surface-mcp/workspace-warning.d.ts +16 -0
  528. package/dist/surface-mcp/workspace-warning.d.ts.map +1 -0
  529. package/dist/surface-mcp/workspace-warning.js +44 -0
  530. package/dist/surface-mcp/workspace-warning.js.map +1 -0
  531. package/dist/svelte/index.d.ts +12 -0
  532. package/dist/svelte/index.d.ts.map +1 -0
  533. package/dist/svelte/index.js +11 -0
  534. package/dist/svelte/mcp-svelte.plugin.d.ts +10 -0
  535. package/dist/svelte/mcp-svelte.plugin.d.ts.map +1 -0
  536. package/dist/svelte/mcp-svelte.plugin.js +24 -0
  537. package/dist/svelte/tool-widgets/VibesContextToolCard.svelte +91 -0
  538. package/dist/svelte/tool-widgets/VibesContextToolCard.svelte.d.ts +9 -0
  539. package/dist/svelte/tool-widgets/VibesContextToolCard.svelte.d.ts.map +1 -0
  540. package/dist/svelte/tool-widgets/index.d.ts +3 -0
  541. package/dist/svelte/tool-widgets/index.d.ts.map +1 -0
  542. package/dist/svelte/tool-widgets/index.js +2 -0
  543. package/dist/svelte/tool-widgets/summary.d.ts +48 -0
  544. package/dist/svelte/tool-widgets/summary.d.ts.map +1 -0
  545. package/dist/svelte/tool-widgets/summary.js +117 -0
  546. package/dist/tools/vibes-context/schemas.d.ts +85 -0
  547. package/dist/tools/vibes-context/schemas.d.ts.map +1 -0
  548. package/dist/tools/vibes-context/schemas.js +76 -0
  549. package/dist/tools/vibes-context/schemas.js.map +1 -0
  550. package/dist/tools/vibes-context/vibes-context.descriptor.d.ts +4 -0
  551. package/dist/tools/vibes-context/vibes-context.descriptor.d.ts.map +1 -0
  552. package/dist/tools/vibes-context/vibes-context.descriptor.js +30 -0
  553. package/dist/tools/vibes-context/vibes-context.descriptor.js.map +1 -0
  554. package/dist/tools/vibes-context/vibes-context.impl.d.ts +34 -0
  555. package/dist/tools/vibes-context/vibes-context.impl.d.ts.map +1 -0
  556. package/dist/tools/vibes-context/vibes-context.impl.js +207 -0
  557. package/dist/tools/vibes-context/vibes-context.impl.js.map +1 -0
  558. package/dist/tui/index.d.ts +4 -0
  559. package/dist/tui/index.d.ts.map +1 -0
  560. package/dist/tui/index.js +4 -0
  561. package/dist/tui/index.js.map +1 -0
  562. package/dist/tui/mcp-health.d.ts +7 -0
  563. package/dist/tui/mcp-health.d.ts.map +1 -0
  564. package/dist/tui/mcp-health.js +16 -0
  565. package/dist/tui/mcp-health.js.map +1 -0
  566. package/dist/tui/mcp-tui.plugin.d.ts +3 -0
  567. package/dist/tui/mcp-tui.plugin.d.ts.map +1 -0
  568. package/dist/tui/mcp-tui.plugin.js +18 -0
  569. package/dist/tui/mcp-tui.plugin.js.map +1 -0
  570. package/dist/tui/mcp.tui-app.descriptor.d.ts +4 -0
  571. package/dist/tui/mcp.tui-app.descriptor.d.ts.map +1 -0
  572. package/dist/tui/mcp.tui-app.descriptor.js +19 -0
  573. package/dist/tui/mcp.tui-app.descriptor.js.map +1 -0
  574. package/dist/tui/mcp.tui-app.impl.consumer.d.ts +4 -0
  575. package/dist/tui/mcp.tui-app.impl.consumer.d.ts.map +1 -0
  576. package/dist/tui/mcp.tui-app.impl.consumer.js +48 -0
  577. package/dist/tui/mcp.tui-app.impl.consumer.js.map +1 -0
  578. package/dist/tui/mcp.tui-state.descriptor.d.ts +8 -0
  579. package/dist/tui/mcp.tui-state.descriptor.d.ts.map +1 -0
  580. package/dist/tui/mcp.tui-state.descriptor.js +37 -0
  581. package/dist/tui/mcp.tui-state.descriptor.js.map +1 -0
  582. package/dist/tui/mcp.tui-state.impl.consumer.d.ts +5 -0
  583. package/dist/tui/mcp.tui-state.impl.consumer.d.ts.map +1 -0
  584. package/dist/tui/mcp.tui-state.impl.consumer.js +97 -0
  585. package/dist/tui/mcp.tui-state.impl.consumer.js.map +1 -0
  586. package/dist/tui/mcp.tui-state.key.d.ts +45 -0
  587. package/dist/tui/mcp.tui-state.key.d.ts.map +1 -0
  588. package/dist/tui/mcp.tui-state.key.js +25 -0
  589. package/dist/tui/mcp.tui-state.key.js.map +1 -0
  590. package/dist/types.core.d.ts +25 -0
  591. package/dist/types.core.d.ts.map +1 -0
  592. package/dist/types.core.js +8 -0
  593. package/dist/types.core.js.map +1 -0
  594. package/dist/types.d.ts +71 -0
  595. package/dist/types.d.ts.map +1 -0
  596. package/dist/types.js +2 -0
  597. package/dist/types.js.map +1 -0
  598. package/dist/types.registry.d.ts +93 -0
  599. package/dist/types.registry.d.ts.map +1 -0
  600. package/dist/types.registry.js +32 -0
  601. package/dist/types.registry.js.map +1 -0
  602. package/package.json +323 -4
@@ -0,0 +1,538 @@
1
+ import { loadPurposePresetOverrides } from '@vibesdotdev/tools/config/load';
2
+ import { runtimePurposePresets } from '@vibesdotdev/tools/schemas/presets/registry';
3
+ /**
4
+ * Wire Selfie — the live half of the tool-exposure audit (czar cycle).
5
+ *
6
+ * Spawns the REAL stdio MCP server for a client preset, performs the real
7
+ * initialize → initialized → tools/list handshake over JSON-RPC, and diffs what
8
+ * the wire SERVES against what the registry AUTHORS. This is the only instrument
9
+ * that catches serve-world truth the static/policy views structurally cannot:
10
+ * tools selected by policy but absent from the wire (registration failure or
11
+ * serve-world zombie — the brain outage class), served schemas laundered to
12
+ * empty `{}`, property loss, and stale served bodies whose descriptions the
13
+ * current source cannot produce.
14
+ *
15
+ * Consumer-only (spawns processes). Capture and diff are separated so the diff
16
+ * is pure and unit-testable. See docs/proposals/universal-tools-czar/ (L5).
17
+ */
18
+ import * as z from 'zod/v4';
19
+ import { CallToolResultSchema } from '@modelcontextprotocol/sdk/types.js';
20
+ import { CapabilityError, composeHostEnv, isCapabilityError, settle, settleNow, valueFreeFailure } from '@vibesdotdev/kernel';
21
+ import { JsonObjectSchema } from '@vibesdotdev/kernel/schemas/json';
22
+ import { getLogger } from '@vibesdotdev/logging';
23
+ import { getRuntimeExecution } from '@vibesdotdev/kernel/execution';
24
+ import { isLifecycleDeadline } from '@vibesdotdev/kernel-rpc';
25
+ import { toRuntimeJsonSchema } from '@vibesdotdev/kernel/schemas/json-schema';
26
+ import { flattenDiscriminatedUnionToObject, resolveMcpDescription } from "../zod-mcp.js";
27
+ import { selectMcpTools } from "./tool-selection.js";
28
+ import { isLocalToolId, localToolsOf } from '@vibesdotdev/tools/local/node/ensure-local-tools';
29
+ import { formatLocalMcpToolDescription } from "./local-origin.js";
30
+ import { resolveProjectionBirthMetadata } from "./projection.js";
31
+ import { JsonRpcMessageSchema, RpcRejectionSchema, ToolsListResultSchema } from "../../schemas/audit.js";
32
+ /**
33
+ * Catalog ceiling in REAL wire bytes for one client's `tools/list`. THE catalog
34
+ * budget — there is deliberately no second one (see tool-audit.ts, where a
35
+ * description-based budget was removed by ruling on 2026-07-25).
36
+ *
37
+ * Descriptions are not the catalog. Measured live 2026-07-24:
38
+ *
39
+ * base `mcp` (67 tools) descriptions 4,984 B (3.1%) TOTAL 162,238 B ~45K tok
40
+ * `mcp:claude` (75 tools) descriptions ~9,129 B (4.1%) TOTAL 224,730 B ~62K tok
41
+ *
42
+ * The retired description budget read 1,621/24,000 "healthy" for `mcp:claude`
43
+ * while that client actually paid ~62K tokens per request. `inputSchema` is the
44
+ * rest, and only a measurement taken ON THE WIRE sees it — hence the Wire Selfie,
45
+ * not the policy view.
46
+ *
47
+ * The cost is concentrated, not spread: `awareness` alone is 38,473 B — 17% of the
48
+ * whole `mcp:claude` catalog in ONE tool — behind a description of a few dozen
49
+ * chars. Then browser 12,020B, workspace-fs 10,840B, knowledge 10,016B, presence
50
+ * 6,331B. A short description is not a small tool; a wide action union is the cost.
51
+ *
52
+ * WHERE THE BYTES ACTUALLY ARE — measured on the `cursor` wire 2026-07-25, after the
53
+ * awareness flattening landed (204,965 B / 75 tools):
54
+ *
55
+ * inputSchema 93,294 B 45.5%
56
+ * outputSchema 71,172 B 34.7% ← 57 of 75 tools carry one
57
+ * _meta 14,577 B 7.1%
58
+ * description 7,486 B 3.7%
59
+ * annotations 6,725 B 3.3%
60
+ *
61
+ * A THIRD of the catalog is `outputSchema`, and an earlier version of this comment
62
+ * said the non-description remainder was `inputSchema` — naming one of the two real
63
+ * costs and omitting the other. That sent a full session's optimization at the input
64
+ * side: for `awareness` (18,253 B) the output schema is 10,848 B, 59% of the tool;
65
+ * `presence` 78%, `applet` 76%, `vibes-work` 68%. Flattening their action unions
66
+ * cannot reach those bytes. THAT IS WHY `ServedTool.parts` exists — a budget that
67
+ * reports a total without its composition prescribes the wrong fix, confidently.
68
+ *
69
+ * `outputSchema` is not dead weight, and this is not a recommendation to drop it: the
70
+ * SDK validates every result against the REGISTERED schema object
71
+ * (`server/mcp.js` `validateToolOutput`), and emits the wire copy from that same
72
+ * object in the `tools/list` projection — two independent reads. Suppressing the wire
73
+ * copy per client policy would keep the validation and drop the bytes; that is a real
74
+ * decision for whoever owns client policy, not something this comment decides.
75
+ *
76
+ * `$defs`/`$ref` is NOT the lever people reach for first: measured on the same wire,
77
+ * every byte-identical repeated sub-schema across all 75 tools totals 8,145 B (4.0%),
78
+ * and the property-level subset a normal emitter would catch is 2,758 B (1.3%).
79
+ *
80
+ * 200,000 bytes ~55K tokens. This FIRES TODAY for the continuity presets
81
+ * (`mcp:claude` at 224,730) and passes for base `mcp` at 162,238 — deliberately, and
82
+ * stated here because an earlier draft of this comment claimed it would not fire on
83
+ * arrival, which was true only for the preset I had measured. The finding is `medium`
84
+ * and does not fail the audit, so it reports real pressure without breaking a gate.
85
+ * When it trips, the first question is whether that tool's action union should be
86
+ * split or deferred — not whether the number should go up.
87
+ */
88
+ export const WIRE_CATALOG_BUDGET_BYTES = 200_000;
89
+ function asJsonObject(value) {
90
+ const parsed = JsonObjectSchema.safeParse(value);
91
+ return parsed.success ? parsed.data : undefined;
92
+ }
93
+ function isStringValue(value) {
94
+ return typeof value === 'string';
95
+ }
96
+ function isToolAsset(value) {
97
+ return typeof value === 'object' && value !== null && 'id' in value && 'schemas' in value;
98
+ }
99
+ function rejectRpc(code) {
100
+ return new CapabilityError('the MCP child rejected the request', 'INTERNAL', {
101
+ reason: 'mcp-wire-rejected',
102
+ details: { code }
103
+ });
104
+ }
105
+ function rpcRejectionCode(error) {
106
+ if (!isCapabilityError(error) || error.reason !== 'mcp-wire-rejected')
107
+ return undefined;
108
+ const parsed = RpcRejectionSchema.safeParse(error.details);
109
+ return parsed.success ? parsed.data.code : undefined;
110
+ }
111
+ const DEFAULT_TIMEOUT_MS = 180_000;
112
+ /** Grace for the additive post-initialized re-selection before listing. */
113
+ const LIST_SETTLE_MS = 1_500;
114
+ /**
115
+ * Spawn the real serve and photograph tools/list. Throws on timeout/handshake
116
+ * failure — a wire that can't answer IS the finding, never a silent pass.
117
+ */
118
+ export async function captureWireSelfie(options) {
119
+ const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
120
+ const root = options.cwd;
121
+ const command = options.command;
122
+ const lifecycle = options.runtime.lifecycle;
123
+ const startedAt = Date.now();
124
+ const [cmd, ...cmdArgs] = command;
125
+ if (!cmd)
126
+ throw new Error('Wire Selfie: MCP serve command is empty');
127
+ const proc = await (await getRuntimeExecution(options.runtime)).spawn({
128
+ command: cmd,
129
+ args: cmdArgs,
130
+ cwd: root,
131
+ env: composeHostEnv(options.runtime),
132
+ envMode: 'replace',
133
+ stdin: 'pipe',
134
+ stdout: 'pipe',
135
+ stderr: 'ignore'
136
+ });
137
+ if (!proc.stdin || !proc.stdout) {
138
+ await proc.kill();
139
+ throw new Error('Wire Selfie: the execution provider returned no stdio pipes for the MCP serve child');
140
+ }
141
+ const stdin = proc.stdin.getWriter();
142
+ const stdout = proc.stdout.getReader();
143
+ const encoder = new TextEncoder();
144
+ const pending = new Map();
145
+ let sawListChanged = false;
146
+ let nextId = 1;
147
+ const readerDone = (async () => {
148
+ const decoder = new TextDecoder();
149
+ let buffer = '';
150
+ for (;;) {
151
+ const { done, value: chunk } = await stdout.read();
152
+ if (done)
153
+ break;
154
+ buffer += decoder.decode(chunk, { stream: true });
155
+ let newline = buffer.indexOf('\n');
156
+ while (newline >= 0) {
157
+ const line = buffer.slice(0, newline).trim();
158
+ buffer = buffer.slice(newline + 1);
159
+ newline = buffer.indexOf('\n');
160
+ if (!line.startsWith('{'))
161
+ continue;
162
+ const parsedLine = settleNow(() => JsonRpcMessageSchema.parse(JSON.parse(line)));
163
+ if (!parsedLine.ok) {
164
+ getLogger('mcp', options.runtime).debug('tool audit: non-JSON line from the served child skipped', { failure: valueFreeFailure(parsedLine.cause) });
165
+ continue;
166
+ }
167
+ const msg = parsedLine.value;
168
+ if (msg.method === 'notifications/tools/list_changed')
169
+ sawListChanged = true;
170
+ if (msg.id !== undefined && (msg.result !== undefined || msg.error)) {
171
+ pending.get(msg.id)?.(msg);
172
+ pending.delete(msg.id);
173
+ }
174
+ }
175
+ }
176
+ })();
177
+ function send(message) {
178
+ return stdin.write(encoder.encode(`${JSON.stringify(message)}\n`));
179
+ }
180
+ function request(method, params) {
181
+ const id = nextId++;
182
+ const deadline = timeoutMs - (Date.now() - startedAt);
183
+ const response = new Promise((resolve, reject) => {
184
+ const disarm = lifecycle.timeout(() => {
185
+ pending.delete(id);
186
+ reject(new Error(`Wire Selfie: '${method}' timed out (${timeoutMs}ms total budget)`));
187
+ }, Math.max(deadline, 1));
188
+ pending.set(id, (msg) => {
189
+ disarm();
190
+ if (msg.error)
191
+ reject(rejectRpc(msg.error.code));
192
+ else
193
+ resolve(msg);
194
+ });
195
+ void settle(async () => {
196
+ await send({ jsonrpc: '2.0', id, method, params });
197
+ }).then((sent) => {
198
+ if (sent.ok)
199
+ return;
200
+ disarm();
201
+ pending.delete(id);
202
+ reject(sent.cause);
203
+ });
204
+ });
205
+ const unexpectedExit = proc.exited.then(({ code }) => {
206
+ throw new Error(`Wire Selfie: MCP child exited with code ${code} before '${method}' responded`);
207
+ });
208
+ return Promise.race([response, unexpectedExit]);
209
+ }
210
+ try {
211
+ const initialize = await request('initialize', {
212
+ protocolVersion: '2025-03-26',
213
+ capabilities: {},
214
+ clientInfo: { name: `wire-selfie:${options.clientId}`, version: '1.0.0' }
215
+ });
216
+ const initializeResult = asJsonObject(initialize.result);
217
+ await send({ jsonrpc: '2.0', method: 'notifications/initialized' });
218
+ let birth;
219
+ let birthError;
220
+ const birthAttempt = await settle(() => resolveProjectionBirthMetadata(isStringValue(initializeResult?.instructions) ? initializeResult.instructions : undefined, async (uri) => (await request('resources/read', { uri })).result));
221
+ if (birthAttempt.ok)
222
+ birth = birthAttempt.value;
223
+ else
224
+ birthError = 'Server birth resource is unavailable or invalid; birth evidence could not be verified';
225
+ // A settle grace for the additive post-initialized re-selection: the server
226
+ // signals only a change (list_changed), never "selection complete".
227
+ await lifecycle.delay(LIST_SETTLE_MS);
228
+ const served = [];
229
+ // Re-list once if an additive list_changed lands after our first pass.
230
+ for (let attempt = 0; attempt < 2; attempt++) {
231
+ served.length = 0;
232
+ sawListChanged = false;
233
+ let cursor;
234
+ do {
235
+ const response = await request('tools/list', cursor ? { cursor } : {});
236
+ const result = ToolsListResultSchema.parse(response.result);
237
+ for (const tool of result.tools) {
238
+ // Measure the entry as the wire carried it, before we project it
239
+ // down to property names — this is the only point where the real
240
+ // serialized cost is in hand.
241
+ const wireBytes = new TextEncoder().encode(JSON.stringify(tool)).byteLength;
242
+ const inputSchema = asJsonObject(tool.inputSchema);
243
+ const properties = asJsonObject(inputSchema?.properties);
244
+ served.push({
245
+ name: tool.name,
246
+ description: isStringValue(tool.description) ? tool.description : undefined,
247
+ inputProperties: properties ? Object.keys(properties).sort() : [],
248
+ wireBytes,
249
+ parts: splitWireParts(tool, wireBytes)
250
+ });
251
+ }
252
+ cursor = isStringValue(result?.nextCursor) ? result.nextCursor : undefined;
253
+ } while (cursor);
254
+ if (!sawListChanged)
255
+ break;
256
+ await lifecycle.delay(LIST_SETTLE_MS);
257
+ }
258
+ let canary;
259
+ if (options.canary) {
260
+ const { toolId, input } = options.canary;
261
+ if (!served.some((tool) => tool.name === toolId)) {
262
+ canary = {
263
+ toolId,
264
+ status: 'not-served',
265
+ failureKind: 'projection',
266
+ detail: 'selected read-safe canary was absent from the fresh-spawn catalog'
267
+ };
268
+ }
269
+ else {
270
+ const called = await settle(() => request('tools/call', { name: toolId, arguments: input }));
271
+ if (called.ok) {
272
+ const admitted = CallToolResultSchema.safeParse(called.value.result);
273
+ if (!admitted.success) {
274
+ canary = {
275
+ toolId,
276
+ status: 'failed',
277
+ failureKind: 'schema',
278
+ detail: 'MCP tool call result is not a CallToolResult'
279
+ };
280
+ }
281
+ else if (admitted.data.isError === true) {
282
+ canary = {
283
+ toolId,
284
+ status: 'failed',
285
+ failureKind: 'implementation',
286
+ detail: 'MCP tool call returned isError=true'
287
+ };
288
+ }
289
+ else {
290
+ canary = { toolId, status: 'passed' };
291
+ }
292
+ }
293
+ else {
294
+ const error = called.cause;
295
+ const rpcCode = rpcRejectionCode(error);
296
+ const failureKind = rpcCode === -32602 ? 'schema' : rpcCode === -32601 ? 'projection' : 'transport';
297
+ canary = {
298
+ toolId,
299
+ status: 'failed',
300
+ failureKind,
301
+ detail: boundedDiagnostic(valueFreeFailure(error).name)
302
+ };
303
+ }
304
+ }
305
+ }
306
+ const capture = {
307
+ clientId: options.clientId,
308
+ served,
309
+ captureMs: Date.now() - startedAt,
310
+ wireBytes: served.reduce((sum, tool) => sum + tool.wireBytes, 0),
311
+ birth,
312
+ canary
313
+ };
314
+ if (birthError)
315
+ capture.birthError = birthError;
316
+ return capture;
317
+ }
318
+ finally {
319
+ // Killing the child closes its pipes; its stdin needs no separate EOF.
320
+ await proc.kill();
321
+ // The killed child's output ends the reader; bound the drain, never wait on a wedged pipe.
322
+ const drained = await settle(() => lifecycle.wait(() => readerDone, { timeoutMs: 1_000, reason: 'wire-selfie-reader-drain' }));
323
+ if (!drained.ok && !isLifecycleDeadline(drained.cause)) {
324
+ getLogger('mcp', options.runtime).debug('tool audit: wire selfie reader drain failed', { failure: valueFreeFailure(drained.cause) });
325
+ }
326
+ }
327
+ }
328
+ /**
329
+ * Split one served entry's bytes by tool-entry key. `envelope` is the remainder, so
330
+ * the four parts always sum to `wireBytes` no matter what future keys the SDK adds —
331
+ * a breakdown that silently drops a key would be the same class of lie this exists to
332
+ * prevent. Each part is measured as the JSON the wire carried, including its own key
333
+ * name and separators, so the sum is exact rather than approximately right.
334
+ */
335
+ export function splitWireParts(tool, wireBytes) {
336
+ // `"key":value,` — the cost of carrying this key at all, as serialized.
337
+ const keyBytes = (key) => key in tool ? new TextEncoder().encode(JSON.stringify(key)).byteLength + 1 + new TextEncoder().encode(JSON.stringify(tool[key])).byteLength + 1 : 0;
338
+ const inputSchema = keyBytes('inputSchema');
339
+ const outputSchema = keyBytes('outputSchema');
340
+ const description = keyBytes('description');
341
+ return {
342
+ inputSchema,
343
+ outputSchema,
344
+ description,
345
+ envelope: Math.max(wireBytes - inputSchema - outputSchema - description, 0)
346
+ };
347
+ }
348
+ /** Top-level property names the authoring path would put on the wire; a conversion failure is logged on `runtime`. */
349
+ function authoredInputProperties(runtime, descriptor) {
350
+ const input = descriptor.schemas?.input;
351
+ if (!(input instanceof z.ZodType))
352
+ return input ? undefined : [];
353
+ const flattened = settleNow(() => flattenDiscriminatedUnionToObject(input));
354
+ if (!flattened.ok) {
355
+ // Authoring-side conversion failure is itself reported by the caller; the reason is logged too.
356
+ getLogger('mcp', runtime).debug('tool audit: input schema could not be flattened', { failure: valueFreeFailure(flattened.cause) });
357
+ return undefined;
358
+ }
359
+ const projected = settleNow(() => toRuntimeJsonSchema(flattened.value, { io: 'input', target: 'draft-7' }));
360
+ if (!projected.ok) {
361
+ getLogger('mcp', runtime).debug('tool audit: input schema could not be flattened', { failure: valueFreeFailure(projected.cause) });
362
+ return undefined;
363
+ }
364
+ const properties = asJsonObject(projected.value.properties);
365
+ return properties ? Object.keys(properties).sort() : [];
366
+ }
367
+ /**
368
+ * Pure diff of a capture against the local registry catalog. Local-catalog
369
+ * coverage caveats are reported as informational findings instead of silently
370
+ * skewing severities — the CLI world's plugin set can differ from serve's.
371
+ */
372
+ export function diffWireSelfie(runtime, capture, configured) {
373
+ const customPresets = runtimePurposePresets(runtime, configured);
374
+ const descriptors = runtime.assets('tools/tool').descriptors().filter(isToolAsset);
375
+ const byId = new Map(descriptors.map((d) => [d.id, d]));
376
+ const servedByName = new Map(capture.served.map((s) => [s.name, s]));
377
+ const findings = [];
378
+ const localToolIds = localToolsOf(runtime).toolIds;
379
+ // Policy expectation WITHOUT availableIds: the serve world resolves its own
380
+ // loaders; a policy-selected tool missing from the wire is exactly the
381
+ // signal we exist to catch (loader gap there, or registration failure).
382
+ const expected = selectMcpTools(descriptors, { mcpClientId: capture.clientId, customPresets });
383
+ const expectedIds = new Set(expected.descriptors.map((d) => d.id));
384
+ for (const id of expectedIds) {
385
+ if (!servedByName.has(id)) {
386
+ findings.push({
387
+ severity: 'high',
388
+ code: 'selected-not-served',
389
+ toolId: id,
390
+ detail: 'policy-selected for this client but ABSENT from the served wire — serve-world ' +
391
+ 'loader gap or schema-registration failure (the brain-outage class); check serve logs'
392
+ });
393
+ }
394
+ }
395
+ for (const served of capture.served) {
396
+ const descriptor = byId.get(served.name);
397
+ if (!descriptor) {
398
+ findings.push({
399
+ severity: 'low',
400
+ code: 'served-not-in-local-catalog',
401
+ toolId: served.name,
402
+ detail: 'served on the wire but this audit world has no descriptor for it — ' +
403
+ 'description/schema diffs skipped (serve world composes more plugins)'
404
+ });
405
+ continue;
406
+ }
407
+ const authored = authoredInputProperties(runtime, descriptor);
408
+ if (authored === undefined) {
409
+ findings.push({
410
+ severity: 'medium',
411
+ code: 'authored-schema-unconvertible',
412
+ toolId: served.name,
413
+ detail: 'local authored input schema failed wire conversion — audit that schema'
414
+ });
415
+ }
416
+ else if (served.inputProperties.length === 0 && authored.length > 0) {
417
+ findings.push({
418
+ severity: 'high',
419
+ code: 'served-empty-schema',
420
+ toolId: served.name,
421
+ detail: `served inputSchema has NO properties while authoring produces [${authored.join(', ')}] — the field-laundering class`
422
+ });
423
+ }
424
+ else if (authored.length > 0) {
425
+ const missing = authored.filter((p) => !served.inputProperties.includes(p));
426
+ if (missing.length > 0) {
427
+ findings.push({
428
+ severity: 'medium',
429
+ code: 'served-property-loss',
430
+ toolId: served.name,
431
+ detail: `served schema is missing authored properties: ${missing.join(', ')}`
432
+ });
433
+ }
434
+ }
435
+ const expectedDescriptionRaw = resolveMcpDescription(descriptor);
436
+ // Local tools are advertised over MCP with a [local] prefix to distinguish them
437
+ // from platform tools. The live audit sees the prefixed description on the wire.
438
+ const isLocal = isLocalToolId(descriptor.id, localToolIds);
439
+ const expectedDescription = formatLocalMcpToolDescription(expectedDescriptionRaw, isLocal);
440
+ if (expectedDescription && served.description !== expectedDescription) {
441
+ findings.push({
442
+ severity: 'medium',
443
+ code: 'served-description-drift',
444
+ toolId: served.name,
445
+ detail: `served description differs from what current source produces — stale served body ` +
446
+ `or wire mangling. served=${JSON.stringify(truncate(served.description ?? '', 80))} ` +
447
+ `expected=${JSON.stringify(truncate(expectedDescription, 80))}`
448
+ });
449
+ }
450
+ if (!expectedIds.has(served.name)) {
451
+ findings.push({
452
+ severity: 'low',
453
+ code: 'served-not-selected',
454
+ toolId: served.name,
455
+ detail: 'on the wire but not in this client\'s policy selection (extra exposure)'
456
+ });
457
+ }
458
+ }
459
+ // Aggregate catalog weight, measured on the wire. Names the worst offenders,
460
+ // because "the catalog is too big" is unactionable and "browser is 12KB behind
461
+ // an 80-char description" is a decision someone can make.
462
+ if (capture.wireBytes > WIRE_CATALOG_BUDGET_BYTES) {
463
+ // Name each offender's own composition, not just its total: "awareness 18253B
464
+ // (59% out)" points at the output schema; "workspace-fs 10840B (86% in)" points
465
+ // at the action union. The old text prescribed "split a wide action union" for
466
+ // both, which is wrong for the first and cost a session to discover.
467
+ const heaviest = [...capture.served]
468
+ .sort((a, b) => b.wireBytes - a.wireBytes)
469
+ .slice(0, 5)
470
+ .map((t) => `${t.name} ${t.wireBytes}B (${describeComposition(t)})`)
471
+ .join(', ');
472
+ const totals = capture.served.reduce((sum, t) => ({
473
+ inputSchema: sum.inputSchema + t.parts.inputSchema,
474
+ outputSchema: sum.outputSchema + t.parts.outputSchema,
475
+ description: sum.description + t.parts.description,
476
+ envelope: sum.envelope + t.parts.envelope
477
+ }), { inputSchema: 0, outputSchema: 0, description: 0, envelope: 0 });
478
+ const pct = (n) => `${Math.round((n / capture.wireBytes) * 100)}%`;
479
+ findings.push({
480
+ severity: 'medium',
481
+ code: 'wire-catalog-budget-exceeded',
482
+ toolId: `client:${capture.clientId}`,
483
+ detail: `tools/list serves ${capture.served.length} tools totalling ${capture.wireBytes} bytes ` +
484
+ `(~${Math.round(capture.wireBytes / 3.6)} tokens), over the ${WIRE_CATALOG_BUDGET_BYTES}-byte ` +
485
+ `catalog budget. Every non-deferring client pays this on every request. ` +
486
+ `Composition: inputSchema ${totals.inputSchema}B (${pct(totals.inputSchema)}), ` +
487
+ `outputSchema ${totals.outputSchema}B (${pct(totals.outputSchema)}), ` +
488
+ `description ${totals.description}B (${pct(totals.description)}), ` +
489
+ `envelope ${totals.envelope}B (${pct(totals.envelope)}). ` +
490
+ `Heaviest: ${heaviest}. Fix what the split names — an input-heavy tool wants its ` +
491
+ `action union split or deferred; an output-heavy one cannot be fixed that way at all. ` +
492
+ `Raising the budget is a real decision, not the default fix`
493
+ });
494
+ }
495
+ findings.sort((a, b) => severityRank(a.severity) - severityRank(b.severity) || a.toolId.localeCompare(b.toolId));
496
+ return {
497
+ view: 'wire',
498
+ clientId: capture.clientId,
499
+ servedCount: capture.served.length,
500
+ expectedCount: expectedIds.size,
501
+ captureMs: capture.captureMs,
502
+ wireBytes: capture.wireBytes,
503
+ findings,
504
+ ok: findings.every((f) => f.severity !== 'high')
505
+ };
506
+ }
507
+ export async function runWireSelfie(runtime, options) {
508
+ const capture = await captureWireSelfie({
509
+ ...options,
510
+ runtime,
511
+ cwd: await runtime.context('runtime/workspace-path')
512
+ });
513
+ return diffWireSelfie(runtime, capture, await loadPurposePresetOverrides(runtime));
514
+ }
515
+ /**
516
+ * The dominant key of one entry, as a two-word hint the reader can act on. Reports
517
+ * the majority share only — a 45/40 split gets `mixed`, because calling that one
518
+ * "input-heavy" would aim the remedy at just over half the bytes.
519
+ */
520
+ function describeComposition(tool) {
521
+ const { inputSchema, outputSchema } = tool.parts;
522
+ const share = (n) => Math.round((n / Math.max(tool.wireBytes, 1)) * 100);
523
+ if (inputSchema >= outputSchema * 2)
524
+ return `${share(inputSchema)}% in`;
525
+ if (outputSchema >= inputSchema * 2)
526
+ return `${share(outputSchema)}% out`;
527
+ return `${share(inputSchema)}% in / ${share(outputSchema)}% out`;
528
+ }
529
+ function truncate(value, max) {
530
+ return value.length > max ? `${value.slice(0, max)}…` : value;
531
+ }
532
+ function severityRank(severity) {
533
+ return severity === 'high' ? 0 : severity === 'medium' ? 1 : 2;
534
+ }
535
+ function boundedDiagnostic(value) {
536
+ return value.length > 240 ? `${value.slice(0, 240)}…` : value;
537
+ }
538
+ //# sourceMappingURL=tool-audit-live.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-audit-live.js","sourceRoot":"","sources":["../../../src/adapters/mcp/tool-audit-live.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Tool-exposure audit — the czar cycle's reusable core.
3
+ *
4
+ * ONE implementation of "is every declared tool reachable and wire-honest",
5
+ * consumed by both the `vibes dev audit tools` CLI command and (future) a
6
+ * `tools/tool` runtime capability. It does NOT re-implement the exposure funnel:
7
+ * it drives the real `explainMcpToolSelection` (the same mirror the serve path
8
+ * logs) across every MCP client preset, over the real runtime descriptor
9
+ * catalog.
10
+ *
11
+ * SCOPE — this is the POLICY view (world-independent): it audits what each preset
12
+ * *intends* to expose from the declared catalog, plus wire-shape properties of the
13
+ * descriptors. It deliberately does NOT assert loader-resolvability, because that
14
+ * depends on which plugins the *running* world composed — the ambient CLI world
15
+ * is not the MCP serve world, so a bare `available()` here under-reports and would
16
+ * cry "zombie" for tools the serve path loads fine. Serve-world reachability +
17
+ * served-vs-authored schema drift is the job of the live "Wire Selfie" handshake
18
+ * (the earned next in docs/proposals/universal-tools-czar/), which spawns a real
19
+ * serve per preset and diffs tools/list. Keeping v1 honest beats a plausible-wrong
20
+ * verdict. Distinct from the static `scripts/check-tool-coverage.ts` gate (source
21
+ * text scan for descriptor↔loader drift): this drives the LIVE registry policy.
22
+ */
23
+ import type { VibesRuntime } from '@vibesdotdev/kernel';
24
+ import type { PurposePreset } from '@vibesdotdev/tools/schemas/presets/schema';
25
+ import type { ToolAuditReport } from '../../schemas/audit.ts';
26
+ export type { PresetExposure, ToolAuditFinding, ToolAuditReport } from '../../schemas/audit.ts';
27
+ /**
28
+ * Run the exposure POLICY audit against the live runtime catalog. Pure of
29
+ * process/stdout so the CLI, a scheduled guard, a test, and a future tools/tool
30
+ * can all consume it.
31
+ */
32
+ export declare function runToolExposureAudit(runtime: VibesRuntime, configured?: Record<string, PurposePreset>): ToolAuditReport;
33
+ /**
34
+ * The orphan rule, extracted so it stays falsifiable: the registry offers no
35
+ * injection point for a synthetic preset set, and under a `*` base catalog no
36
+ * real descriptor can currently trip it end-to-end.
37
+ *
38
+ * A tool is an ACCIDENTAL orphan when no audited preset exposes it AND no
39
+ * preset excluded it on purpose (`disabled-pattern` / `preset-explicit-disable`).
40
+ * Exposure through a catch-all preset counts — a tool served to claude is not
41
+ * orphaned.
42
+ */
43
+ export declare function isAccidentalOrphan(exposedByAnyPreset: boolean, exclusionReasons: ReadonlySet<string>): boolean;
44
+ //# sourceMappingURL=tool-audit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-audit.d.ts","sourceRoot":"","sources":["../../../src/adapters/mcp/tool-audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAIxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAY/E,OAAO,KAAK,EAAoC,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAChG,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEhG;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,eAAe,CA2HvH;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CACjC,kBAAkB,EAAE,OAAO,EAC3B,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAAC,GACnC,OAAO,CAKT"}