@vibesdotdev/mcp 0.0.0-stage → 1.0.0-rc.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 (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,95 @@
1
+ import { readTerminalLine, tryResolveTerminalTransport } from '@vibesdotdev/cli/support/terminal-input';
2
+ import { getRuntimeStdin } from '@vibesdotdev/kernel';
3
+ import { printLine } from "../../print.js";
4
+ import * as z from 'zod/v4';
5
+ /** A piped answer is one short line. More is a mistake, refused by the host's bounded read. */
6
+ const PROMPT_STDIN_MAX_BYTES = 4096;
7
+ /**
8
+ * One trimmed answer. On a terminal the runtime observed, one typed line.
9
+ * Otherwise the runtime's bounded stdin read; an empty or closed stdin is empty.
10
+ */
11
+ export async function readPromptLine(runtime, question) {
12
+ if (runtime.localEnvironment.terminal?.()?.stdinIsTerminal === true) {
13
+ return (await readTerminalLine(question, await tryResolveTerminalTransport(runtime))).trim();
14
+ }
15
+ await printLine(runtime, question);
16
+ const stdin = await getRuntimeStdin(runtime);
17
+ const read = await stdin.readStdin({ maxBytes: PROMPT_STDIN_MAX_BYTES });
18
+ return (read.text.split(/\r?\n/, 1)[0] ?? '').trim();
19
+ }
20
+ function normalize(value) {
21
+ return value.toLowerCase().replace(/[^a-z0-9]+/g, '');
22
+ }
23
+ export function getTargetDisplayName(target) {
24
+ return target.name || target.id;
25
+ }
26
+ export function getAllTargets(runtime) {
27
+ const descriptors = runtime.query('external/host').enabled().descriptors();
28
+ return descriptors
29
+ .filter((descriptor) => descriptor.manifest?.mcp?.supported === true)
30
+ .map((descriptor) => ({
31
+ id: descriptor.id,
32
+ name: descriptor.manifest.name ?? descriptor.name ?? descriptor.id,
33
+ transports: descriptor.manifest.mcp.transports.filter((value) => value === 'stdio' || value === 'http' || value === 'sse'),
34
+ aliases: [descriptor.manifest.shortName, ...(descriptor.manifest.hostAliases ?? [])].filter((value) => Boolean(value))
35
+ }));
36
+ }
37
+ export function normalizeTarget(input, targets) {
38
+ const normalized = normalize(input);
39
+ return (targets.find((target) => {
40
+ return [target.id, target.name, ...target.aliases].some((candidate) => normalize(candidate) === normalized);
41
+ }) ?? null);
42
+ }
43
+ export async function resolveMcpAdapter(runtime) {
44
+ return runtime.query('external/adapter').withId('mcp').resolve();
45
+ }
46
+ export async function selectTargets(runtime) {
47
+ const allTargets = getAllTargets(runtime);
48
+ const adapter = await resolveMcpAdapter(runtime);
49
+ const states = await Promise.all(allTargets.map(async (target) => {
50
+ const status = z.object({ configured: z.boolean() }).safeParse(await adapter.execute('status', {
51
+ hostId: target.id,
52
+ global: true
53
+ }));
54
+ const installed = status.success ? status.data.configured : false;
55
+ return { target, installed };
56
+ }));
57
+ await printLine(runtime, '');
58
+ await printLine(runtime, 'Available targets:');
59
+ for (let i = 0; i < allTargets.length; i++) {
60
+ const target = allTargets[i];
61
+ const state = states.find((item) => item.target.id === target.id);
62
+ const status = state?.installed ? '(installed)' : '';
63
+ await printLine(runtime, ` ${i + 1}. ${getTargetDisplayName(target)} ${status}`);
64
+ }
65
+ await printLine(runtime, ` ${allTargets.length + 1}. All targets`);
66
+ await printLine(runtime, '');
67
+ const input = await readPromptLine(runtime, 'Select targets (comma-separated numbers, or Enter for all): ');
68
+ if (!input || input === String(allTargets.length + 1))
69
+ return allTargets;
70
+ const indices = input.split(',').map((value) => parseInt(value.trim(), 10) - 1);
71
+ const selected = [];
72
+ for (const index of indices) {
73
+ if (index < 0 || index >= allTargets.length)
74
+ continue;
75
+ const target = allTargets[index];
76
+ if (target)
77
+ selected.push(target);
78
+ }
79
+ return selected.length > 0 ? selected : allTargets;
80
+ }
81
+ /**
82
+ * Ask for a transport. `localEndpoint` is the endpoint an http install writes
83
+ * for this workspace (`localhost:<its port>/mcp`), computed by the caller from
84
+ * its runtime; nothing here reads the process environment.
85
+ */
86
+ export async function selectMode(runtime, isLocal, localEndpoint) {
87
+ await printLine(runtime, '');
88
+ await printLine(runtime, 'Transport modes:');
89
+ await printLine(runtime, ' 1. stdio (recommended) - Direct process communication');
90
+ await printLine(runtime, ` 2. http - HTTP endpoint (${isLocal ? localEndpoint : 'mcp.vibes.dev'})`);
91
+ await printLine(runtime, '');
92
+ const answer = await readPromptLine(runtime, 'Select mode (1 or 2, default 1): ');
93
+ return answer === '2' ? 'http' : 'stdio';
94
+ }
95
+ //# sourceMappingURL=install-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-helpers.js","sourceRoot":"","sources":["../../../../src/cli/mcp/management/install-helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * MCP process audit helpers for stdio client serve processes.
3
+ */
4
+ import { type RuntimeRef } from '@vibesdotdev/kernel';
5
+ export declare function listMcpServeProcesses(runtime: RuntimeRef): Promise<Array<{
6
+ pid: number;
7
+ ppid: number;
8
+ elapsedSeconds: number | null;
9
+ command: string;
10
+ clientId: string | null;
11
+ mode: 'stdio' | 'http' | 'unknown';
12
+ }>>;
13
+ export declare function groupMcpServeProcessesByClient(processes: Array<{
14
+ pid: number;
15
+ ppid: number;
16
+ elapsedSeconds: number | null;
17
+ command: string;
18
+ clientId: string | null;
19
+ mode: 'stdio' | 'http' | 'unknown';
20
+ }>): Array<{
21
+ clientId: string;
22
+ count: number;
23
+ pids: number[];
24
+ modes: Array<'stdio' | 'http' | 'unknown'>;
25
+ }>;
26
+ export declare function selectDuplicateStdioClientCleanupTargets(processes: Array<{
27
+ pid: number;
28
+ ppid: number;
29
+ elapsedSeconds: number | null;
30
+ command: string;
31
+ clientId: string | null;
32
+ mode: 'stdio' | 'http' | 'unknown';
33
+ }>): Array<{
34
+ clientId: string;
35
+ keepPid: number;
36
+ killPids: number[];
37
+ }>;
38
+ //# sourceMappingURL=process-audit.impl.consumer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-audit.impl.consumer.d.ts","sourceRoot":"","sources":["../../../../src/cli/mcp/management/process-audit.impl.consumer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AA2DtE,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CACxE,KAAK,CAAC;IACL,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;CACnC,CAAC,CACF,CA+CA;AAED,wBAAgB,8BAA8B,CAC7C,SAAS,EAAE,KAAK,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;CACnC,CAAC,GACA,KAAK,CAAC;IACR,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,EAAE,KAAK,CAAC,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC,CAAC;CAC3C,CAAC,CAsBD;AAED,wBAAgB,wCAAwC,CACvD,SAAS,EAAE,KAAK,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;CACnC,CAAC,GACA,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAgClE"}
@@ -0,0 +1,145 @@
1
+ /**
2
+ * MCP process audit helpers for stdio client serve processes.
3
+ */
4
+ import { composeHostEnv } from '@vibesdotdev/kernel';
5
+ import { runCapture } from '@vibesdotdev/kernel/execution';
6
+ import { processTableUnavailable } from '@vibesdotdev/execution-local';
7
+ function parseOptionValue(command, option) {
8
+ const escaped = option.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
9
+ const match = command.match(new RegExp(`--${escaped}(?:=|\\s+)([^\\s]+)`));
10
+ return match?.[1] ?? null;
11
+ }
12
+ function parseClientId(command) {
13
+ return parseOptionValue(command, 'client');
14
+ }
15
+ function parseMode(command) {
16
+ const mode = parseOptionValue(command, 'mode');
17
+ if (mode === 'stdio' || mode === 'http')
18
+ return mode;
19
+ // `dev mcp serve` defaults to stdio when mode is not provided.
20
+ return 'stdio';
21
+ }
22
+ function parseElapsedSeconds(etime) {
23
+ if (!etime || etime.trim().length === 0)
24
+ return null;
25
+ const value = etime.trim();
26
+ let days = 0;
27
+ let rest = value;
28
+ if (value.includes('-')) {
29
+ const parts = value.split('-', 2);
30
+ days = Number.parseInt(parts[0] ?? '0', 10);
31
+ rest = parts[1] ?? '';
32
+ if (!Number.isFinite(days) || days < 0)
33
+ return null;
34
+ }
35
+ const timeParts = rest.split(':').map((part) => Number.parseInt(part, 10));
36
+ if (timeParts.some((part) => !Number.isFinite(part) || part < 0))
37
+ return null;
38
+ if (timeParts.length === 3) {
39
+ const [hours, minutes, seconds] = timeParts;
40
+ return days * 86400 + hours * 3600 + minutes * 60 + seconds;
41
+ }
42
+ if (timeParts.length === 2) {
43
+ const [minutes, seconds] = timeParts;
44
+ return days * 86400 + minutes * 60 + seconds;
45
+ }
46
+ if (timeParts.length === 1) {
47
+ return days * 86400 + timeParts[0];
48
+ }
49
+ return null;
50
+ }
51
+ function isMcpServeCommand(command) {
52
+ const normalized = command.toLowerCase();
53
+ return (normalized.includes('vibes') &&
54
+ normalized.includes('dev') &&
55
+ normalized.includes('mcp') &&
56
+ normalized.includes('serve'));
57
+ }
58
+ export async function listMcpServeProcesses(runtime) {
59
+ // A table that could not be read is not "no MCP processes": it fails typed.
60
+ // Launched through the runtime's execution provider, on the host's composed
61
+ // environment only (`replace`): `ps` needs nothing the host does not declare.
62
+ const { exitCode, stdout: output } = await runCapture(runtime, 'ps', ['-axo', 'pid=,ppid=,etime=,command='], { env: composeHostEnv(runtime), envMode: 'replace' });
63
+ if (exitCode !== 0)
64
+ throw processTableUnavailable('ps', `exit ${exitCode}`);
65
+ return output
66
+ .split('\n')
67
+ .map((line) => line.trim())
68
+ .filter((line) => line.length > 0)
69
+ .map((line) => {
70
+ const match = line.match(/^(\d+)\s+(\d+)\s+(\S+)\s+(.+)$/);
71
+ if (!match)
72
+ return null;
73
+ const pid = Number.parseInt(match[1] ?? '', 10);
74
+ if (!Number.isInteger(pid) || pid <= 0)
75
+ return null;
76
+ const ppid = Number.parseInt(match[2] ?? '', 10);
77
+ if (!Number.isInteger(ppid) || ppid < 0)
78
+ return null;
79
+ const etime = match[3] ?? '';
80
+ const command = (match[4] ?? '').trim();
81
+ if (!isMcpServeCommand(command))
82
+ return null;
83
+ return {
84
+ pid,
85
+ ppid,
86
+ elapsedSeconds: parseElapsedSeconds(etime),
87
+ command,
88
+ clientId: parseClientId(command),
89
+ mode: parseMode(command)
90
+ };
91
+ })
92
+ .filter((entry) => entry !== null);
93
+ }
94
+ export function groupMcpServeProcessesByClient(processes) {
95
+ const grouped = new Map();
96
+ for (const processInfo of processes) {
97
+ if (!processInfo.clientId)
98
+ continue;
99
+ const existing = grouped.get(processInfo.clientId) ?? { pids: [], modes: new Set() };
100
+ existing.pids.push(processInfo.pid);
101
+ existing.modes.add(processInfo.mode);
102
+ grouped.set(processInfo.clientId, existing);
103
+ }
104
+ return Array.from(grouped.entries())
105
+ .map(([clientId, group]) => ({
106
+ clientId,
107
+ count: group.pids.length,
108
+ pids: [...group.pids].sort((a, b) => a - b),
109
+ modes: [...group.modes].sort()
110
+ }))
111
+ .sort((a, b) => {
112
+ if (b.count !== a.count)
113
+ return b.count - a.count;
114
+ return a.clientId.localeCompare(b.clientId);
115
+ });
116
+ }
117
+ export function selectDuplicateStdioClientCleanupTargets(processes) {
118
+ const byClient = new Map();
119
+ for (const processInfo of processes) {
120
+ if (processInfo.mode !== 'stdio' || !processInfo.clientId)
121
+ continue;
122
+ const group = byClient.get(processInfo.clientId) ?? [];
123
+ group.push(processInfo);
124
+ byClient.set(processInfo.clientId, group);
125
+ }
126
+ return [...byClient.entries()]
127
+ .map(([clientId, group]) => ({ clientId, group }))
128
+ .filter(({ group }) => group.length > 1)
129
+ .map(({ clientId, group }) => {
130
+ const ordered = [...group].sort((a, b) => {
131
+ const aElapsed = a.elapsedSeconds ?? Number.POSITIVE_INFINITY;
132
+ const bElapsed = b.elapsedSeconds ?? Number.POSITIVE_INFINITY;
133
+ if (aElapsed !== bElapsed)
134
+ return aElapsed - bElapsed;
135
+ return b.pid - a.pid;
136
+ });
137
+ return {
138
+ clientId,
139
+ keepPid: ordered[0].pid,
140
+ killPids: ordered.slice(1).map((entry) => entry.pid)
141
+ };
142
+ })
143
+ .sort((a, b) => a.clientId.localeCompare(b.clientId));
144
+ }
145
+ //# sourceMappingURL=process-audit.impl.consumer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-audit.impl.consumer.js","sourceRoot":"","sources":["../../../../src/cli/mcp/management/process-audit.impl.consumer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { type VibesRuntime } from '@vibesdotdev/kernel';
2
+ export declare function collectRulesDebtSummary(runtime: VibesRuntime, paths?: string[]): Promise<{
3
+ scopedPaths: string[];
4
+ exitCode: number;
5
+ totalFindings: number;
6
+ errors: number;
7
+ warnings: number;
8
+ topRules: {
9
+ key: string;
10
+ count: number;
11
+ }[];
12
+ topModules: {
13
+ key: string;
14
+ count: number;
15
+ }[];
16
+ topFeatures: {
17
+ key: string;
18
+ count: number;
19
+ }[];
20
+ }>;
21
+ //# sourceMappingURL=rules-debt-summary.impl.consumer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rules-debt-summary.impl.consumer.d.ts","sourceRoot":"","sources":["../../../../src/cli/mcp/management/rules-debt-summary.impl.consumer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AA6C3E,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE;;;;;;;aAVrE,MAAM;eAAS,MAAM;;;aAArB,MAAM;eAAS,MAAM;;;aAArB,MAAM;eAAS,MAAM;;GAsDpC"}
@@ -0,0 +1,82 @@
1
+ import { requireRuntimeCwd } from '@vibesdotdev/kernel';
2
+ import { runRulesCheckWithReport } from '@vibesdotdev/workspace/rules/services/lint';
3
+ const DEFAULT_RULE_SUMMARY_PATHS = [
4
+ 'src/lib/vibes/runtime',
5
+ 'src/lib/vibes/runtime-plugin',
6
+ 'src/lib/vibes/tools',
7
+ 'src/lib/vibes/knowledge',
8
+ 'src/lib/vibes/pm',
9
+ 'src/lib/mcp'
10
+ ];
11
+ function incrementCounter(map, key) {
12
+ map.set(key, (map.get(key) ?? 0) + 1);
13
+ }
14
+ function normalizeModule(path) {
15
+ const parts = path.split('/');
16
+ if (parts[0] === 'src' && parts[1] === 'lib' && parts[2] === 'vibes' && parts[3]) {
17
+ return parts[3];
18
+ }
19
+ return 'other';
20
+ }
21
+ function normalizeFeature(path) {
22
+ const parts = path.split('/');
23
+ if (parts[0] === 'src' && parts[1] === 'lib' && parts[2] === 'vibes' && parts[3] && parts[4]) {
24
+ return `${parts[3]}/${parts[4]}`;
25
+ }
26
+ return 'other';
27
+ }
28
+ function sortTopEntries(map, limit = 8) {
29
+ return Array.from(map.entries())
30
+ .map(([key, count]) => ({ key, count }))
31
+ .sort((a, b) => {
32
+ if (b.count !== a.count)
33
+ return b.count - a.count;
34
+ return a.key.localeCompare(b.key);
35
+ })
36
+ .slice(0, limit);
37
+ }
38
+ export async function collectRulesDebtSummary(runtime, paths) {
39
+ const scopedPaths = Array.isArray(paths) && paths.length > 0
40
+ ? paths.filter((path) => path.trim().length > 0)
41
+ : DEFAULT_RULE_SUMMARY_PATHS;
42
+ // The same check `dev workspace rules check --fail-on error` runs, in this
43
+ // process: relative paths resolve from the caller's cwd, rules from the
44
+ // bound workspace. Info stays out of the summary; the old stdout parser
45
+ // counted only ERROR and WARN lines.
46
+ const workspaceRoot = await runtime.context('runtime/workspace-path');
47
+ const report = await runRulesCheckWithReport(scopedPaths, {
48
+ runtime,
49
+ rootDir: workspaceRoot,
50
+ baseDir: requireRuntimeCwd(runtime)
51
+ });
52
+ const rules = new Map();
53
+ const modules = new Map();
54
+ const features = new Map();
55
+ let errors = 0;
56
+ let warnings = 0;
57
+ let totalFindings = 0;
58
+ for (const issue of report.issues) {
59
+ if (issue.severity !== 'error' && issue.severity !== 'warn')
60
+ continue;
61
+ totalFindings += 1;
62
+ if (issue.severity === 'error')
63
+ errors += 1;
64
+ if (issue.severity === 'warn')
65
+ warnings += 1;
66
+ incrementCounter(rules, issue.rule);
67
+ const semanticTarget = issue.target ? `${issue.target.entity}:${issue.target.path}` : 'unscoped';
68
+ incrementCounter(modules, issue.file === undefined ? issue.target?.entity ?? 'unscoped' : normalizeModule(issue.file));
69
+ incrementCounter(features, issue.file === undefined ? semanticTarget : normalizeFeature(issue.file));
70
+ }
71
+ return {
72
+ scopedPaths,
73
+ exitCode: errors > 0 ? 1 : 0,
74
+ totalFindings,
75
+ errors,
76
+ warnings,
77
+ topRules: sortTopEntries(rules),
78
+ topModules: sortTopEntries(modules),
79
+ topFeatures: sortTopEntries(features)
80
+ };
81
+ }
82
+ //# sourceMappingURL=rules-debt-summary.impl.consumer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rules-debt-summary.impl.consumer.js","sourceRoot":"","sources":["../../../../src/cli/mcp/management/rules-debt-summary.impl.consumer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { type VibesRuntime } from '@vibesdotdev/kernel';
2
+ import type { McpDoctorReport } from '../schemas/status-doctor.ts';
3
+ export declare function runMcpDoctor(options: {
4
+ /** The runtime the command was handed: PM's client reads its roots and admission, and the rules check runs in-process. */
5
+ runtime: VibesRuntime;
6
+ fix?: boolean;
7
+ cleanupClients?: boolean;
8
+ mode?: 'stdio' | 'http';
9
+ port?: string;
10
+ timeoutMs?: number;
11
+ debtSummary?: boolean;
12
+ debtPaths?: string[];
13
+ /**
14
+ * Workspace to diagnose: the caller's bound workspace. Absent, PM's client
15
+ * names the daemon from the runtime's admitted workspace.
16
+ */
17
+ workspacePath?: string;
18
+ }): Promise<{
19
+ ready: boolean;
20
+ report: McpDoctorReport;
21
+ }>;
22
+ //# sourceMappingURL=status-doctor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status-doctor.d.ts","sourceRoot":"","sources":["../../../../src/cli/mcp/management/status-doctor.ts"],"names":[],"mappings":"AACA,OAAO,EAAqG,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAM3J,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAoEnE,wBAAsB,YAAY,CAAC,OAAO,EAAE;IAC3C,0HAA0H;IAC1H,OAAO,EAAE,YAAY,CAAC;IACtB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB;;;GAiHA"}
@@ -0,0 +1,153 @@
1
+ import { PMClient } from '@vibesdotdev/pm/client';
2
+ import { CaughtFailureSchema, valueFreeFailure } from '@vibesdotdev/kernel';
3
+ import { getLogger } from '@vibesdotdev/logging';
4
+ import { getRuntimeProcessService } from '@vibesdotdev/kernel/process';
5
+ import { listMcpServeProcesses } from "./process-audit.impl.consumer.js";
6
+ import { collectRulesDebtSummary } from "./rules-debt-summary.impl.consumer.js";
7
+ import { mcpServerProcessId } from "../support/server-process.impl.consumer.js";
8
+ import { cleanupDuplicateClientProcesses, createMcpClientReport, ensureCoreToolCoverage, ensureMcpServer, resolveMcpServerStatus } from "../support/status-doctor.js";
9
+ /**
10
+ * isDaemonReachable bounds its own connect by the timeout it is handed and
11
+ * answers false on expiry. The outer race below only has to catch what never
12
+ * answers at all (a stalled import, a wedged transport), so it sits just past
13
+ * the inner budget rather than competing with it.
14
+ */
15
+ const PROBE_GRACE_MS = 250;
16
+ /**
17
+ * The daemon probe is the doctor's only source for everything gated below it.
18
+ * A probe that rejects or outlives its budget must not leave the seed values
19
+ * standing as readings: `pm.measured=false` plus the reason says "could not
20
+ * determine", and every PM-derived field keeps its unmeasured seed.
21
+ */
22
+ async function probeDaemon(runtime, pm, report, timeoutMs) {
23
+ const outerMs = timeoutMs + PROBE_GRACE_MS;
24
+ const logger = getLogger('mcp.doctor', runtime);
25
+ const result = await runtime.lifecycle.wait(() => pm.isDaemonRunning(timeoutMs), {
26
+ timeoutMs: outerMs,
27
+ reason: 'mcp-doctor-pm-daemon-probe'
28
+ }).then(reachable => ({ reachable, failure: undefined }), error => ({ reachable: undefined, failure: CaughtFailureSchema.parse(error) }));
29
+ if (result.failure === undefined) {
30
+ report.pm = { running: result.reachable, reachable: result.reachable, measured: true };
31
+ }
32
+ else {
33
+ logger.warn('PM daemon probe failed', { error: valueFreeFailure(result.failure) });
34
+ report.pm = { running: false, reachable: false, measured: false, error: failureMessage(result.failure) };
35
+ }
36
+ }
37
+ const failureMessage = (error) => JSON.stringify(valueFreeFailure(error));
38
+ /**
39
+ * Worker readiness. PM answers `false` only when nothing is listening; any
40
+ * other failure is diagnosed on the report, never read as "not running".
41
+ */
42
+ async function probeWorkersReady(runtime, pm, report, timeoutMs) {
43
+ const logger = getLogger('mcp.doctor', runtime);
44
+ const result = await pm.checkWorkersReady(timeoutMs).then(ready => ({ ready, failure: undefined }), error => ({ ready: undefined, failure: CaughtFailureSchema.parse(error) }));
45
+ if (result.failure === undefined) {
46
+ report.workers.ready = result.ready;
47
+ delete report.workers.error;
48
+ }
49
+ else {
50
+ logger.warn('Worker readiness probe failed', { error: valueFreeFailure(result.failure) });
51
+ report.workers.ready = false;
52
+ report.workers.error = failureMessage(result.failure);
53
+ }
54
+ }
55
+ export async function runMcpDoctor(options) {
56
+ const report = {
57
+ timestamp: new Date().toISOString(),
58
+ pm: { running: false, reachable: false, measured: false },
59
+ mcp: { running: false, status: 'unknown', measured: false },
60
+ workers: { consumerRunning: false, cloudRunning: false, ready: false },
61
+ resources: { total: 0, ready: 0, nonReady: [] },
62
+ tools: { totalEnabled: 0, missing: [] },
63
+ mcpClients: {
64
+ totalServeProcesses: 0,
65
+ clientGroups: [],
66
+ untaggedPids: [],
67
+ heuristicCandidates: []
68
+ },
69
+ debtSummary: null,
70
+ fixes: []
71
+ };
72
+ const pm = new PMClient(undefined, {
73
+ runtime: options.runtime,
74
+ autoStartDaemon: options.fix === true
75
+ });
76
+ const timeoutMs = options.timeoutMs && options.timeoutMs > 0 ? options.timeoutMs : 5000;
77
+ const workerTimeout = timeoutMs;
78
+ await probeDaemon(options.runtime, pm, report, timeoutMs);
79
+ if (options.fix && !report.pm.running) {
80
+ await pm.ensureDaemonRunning();
81
+ report.fixes.push('started pm daemon');
82
+ await probeDaemon(options.runtime, pm, report, timeoutMs);
83
+ }
84
+ let processes = await listMcpServeProcesses(options.runtime);
85
+ report.mcpClients = createMcpClientReport(processes);
86
+ if (options.fix && options.cleanupClients) {
87
+ const cleanup = await cleanupDuplicateClientProcesses(await getRuntimeProcessService(options.runtime), processes);
88
+ if (cleanup.terminated.length > 0) {
89
+ report.fixes.push(`terminated duplicate MCP stdio clients: ${cleanup.terminated.join(', ')}`);
90
+ processes = await listMcpServeProcesses(options.runtime);
91
+ report.mcpClients = createMcpClientReport(processes);
92
+ }
93
+ if (cleanup.failed.length > 0) {
94
+ report.fixes.push(`failed to terminate MCP stdio clients: ${cleanup.failed.join(', ')}`);
95
+ }
96
+ }
97
+ if (report.pm.reachable) {
98
+ const workspaceRoot = options.workspacePath ?? await options.runtime.context('runtime/workspace-path');
99
+ const processScope = { runtime: options.runtime, workspaceRoot };
100
+ const resolved = await resolveMcpServerStatus(pm, processScope);
101
+ report.mcp.status = resolved.processId ? `${resolved.status} (${resolved.processId})` : resolved.status;
102
+ report.mcp.running = resolved.running;
103
+ report.mcp.measured = true;
104
+ if (options.fix && !report.mcp.running) {
105
+ await ensureMcpServer(pm, { runtime: options.runtime, mode: options.mode, port: options.port, workspaceRoot });
106
+ report.fixes.push(`started ${await mcpServerProcessId(options.runtime, workspaceRoot)}`);
107
+ const refreshed = await resolveMcpServerStatus(pm, processScope);
108
+ report.mcp.status = refreshed.processId
109
+ ? `${refreshed.status} (${refreshed.processId})`
110
+ : refreshed.status;
111
+ report.mcp.running = refreshed.running;
112
+ }
113
+ report.workers.consumerRunning = await pm.isRunning('vibes-workers-consumer');
114
+ report.workers.cloudRunning = await pm.isRunning('vibes-workers-cloud');
115
+ await probeWorkersReady(options.runtime, pm, report, workerTimeout);
116
+ // A probe that failed is a diagnosis, not an absence: the fix does not guess past it.
117
+ if (options.fix && !report.workers.ready && report.workers.error === undefined) {
118
+ await pm.ensureWorkerRuntime();
119
+ report.fixes.push('ensured worker runtime');
120
+ report.workers.consumerRunning = await pm.isRunning('vibes-workers-consumer');
121
+ report.workers.cloudRunning = await pm.isRunning('vibes-workers-cloud');
122
+ await probeWorkersReady(options.runtime, pm, report, workerTimeout);
123
+ }
124
+ const logger = getLogger('mcp.doctor', options.runtime);
125
+ const result = await pm.getAllResourceStates().then(states => ({ states, failure: undefined }), error => ({ states: undefined, failure: CaughtFailureSchema.parse(error) }));
126
+ if (result.failure === undefined) {
127
+ const resourceStates = result.states;
128
+ report.resources.total = resourceStates.length;
129
+ report.resources.ready = resourceStates.filter(state => state.status === 'ready').length;
130
+ report.resources.nonReady = resourceStates.filter(state => state.status !== 'ready')
131
+ .map(state => ({ id: state.id, status: state.status, error: state.error }));
132
+ }
133
+ else {
134
+ logger.warn('Resource readiness probe failed', { error: valueFreeFailure(result.failure) });
135
+ report.resources.error = failureMessage(result.failure);
136
+ }
137
+ }
138
+ const toolCoverage = await ensureCoreToolCoverage(options.runtime);
139
+ report.tools.totalEnabled = toolCoverage.totalEnabled;
140
+ report.tools.missing = toolCoverage.missing;
141
+ if (options.debtSummary === true) {
142
+ report.debtSummary = await collectRulesDebtSummary(options.runtime, options.debtPaths);
143
+ }
144
+ const ready = report.pm.running &&
145
+ report.pm.reachable &&
146
+ report.mcp.running &&
147
+ report.workers.ready &&
148
+ report.tools.missing.length === 0 &&
149
+ report.resources.nonReady.every((resource) => resource.status !== 'error') &&
150
+ report.resources.error === undefined;
151
+ return { ready, report };
152
+ }
153
+ //# sourceMappingURL=status-doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status-doctor.js","sourceRoot":"","sources":["../../../../src/cli/mcp/management/status-doctor.ts"],"names":[],"mappings":"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"}