@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,287 @@
1
+ /**
2
+ * Build provenance: capture the source git ref + dist freshness at serve
3
+ * startup so a stale body is wire-detectable. The fan-out phantom saga's
4
+ * root cause was invisible staleness — a long-lived stdio child spawned from
5
+ * source at one ref, source moved under it (87→104 registry), and nothing
6
+ * on the wire said the body was behind. This string rides the MCP
7
+ * `instructions` field so the connected agent can see and surface it.
8
+ *
9
+ * Filesystem and path reads go through the handed runtime. This module does
10
+ * not import `node:fs`, `node:path`, or `node:url`.
11
+ */
12
+ import * as z from 'zod/v4';
13
+ import { realpathChecked, resolveFileSystemAdapter } from '@vibesdotdev/filesystem';
14
+ import { getRuntimePath } from '@vibesdotdev/paths';
15
+ import { composeHostEnv, settle, valueFreeFailure } from '@vibesdotdev/kernel';
16
+ import { runCapture } from '@vibesdotdev/kernel/execution';
17
+ import { resolveMcpExecutableSourceRoot } from "./project-config.js";
18
+ function quoteShellArgument(value) {
19
+ return `'${value.replaceAll("'", "'\"'\"'")}'`;
20
+ }
21
+ function normalizeGitRef(value) {
22
+ if (value === null || value === undefined)
23
+ return null;
24
+ const normalized = value.trim().toLowerCase();
25
+ return /^[0-9a-f]{40,64}$/.test(normalized) ? normalized : null;
26
+ }
27
+ function textOf(value) {
28
+ if (value instanceof Uint8Array)
29
+ return new TextDecoder().decode(value);
30
+ return value;
31
+ }
32
+ const ExecutablePackageNameSchema = z.object({ name: z.string() });
33
+ const ExecutablePackageGitHeadSchema = z.object({ gitHead: z.string().nullish() });
34
+ async function findExecutablePackage(runtime, moduleDir) {
35
+ const path = await getRuntimePath(runtime);
36
+ const filesystem = await resolveFileSystemAdapter(runtime, { binding: false });
37
+ let current = path.resolve(moduleDir);
38
+ for (let depth = 0; depth < 16; depth++) {
39
+ const manifestPath = path.join(current, 'package.json');
40
+ if (await filesystem.exists(manifestPath)) {
41
+ const text = textOf(await filesystem.readFile(manifestPath, 'utf8'));
42
+ const parsed = await settle(() => JSON.parse(text));
43
+ // A manifest that is not JSON names no package. A read failure throws before this parse.
44
+ if (!parsed.ok) {
45
+ if (valueFreeFailure(parsed.cause).name === 'SyntaxError')
46
+ return null;
47
+ throw parsed.cause;
48
+ }
49
+ const named = ExecutablePackageNameSchema.safeParse(parsed.value);
50
+ if (named.success && named.data.name.startsWith('@vibesdotdev/')) {
51
+ const head = ExecutablePackageGitHeadSchema.safeParse(parsed.value);
52
+ return { root: current, gitHead: normalizeGitRef(head.success ? head.data.gitHead : null) };
53
+ }
54
+ }
55
+ if (path.basename(current) === 'node_modules')
56
+ break;
57
+ const parent = path.dirname(current);
58
+ if (parent === current)
59
+ break;
60
+ current = parent;
61
+ }
62
+ return null;
63
+ }
64
+ function resolveExecutableDistPath(path, executableModulePath, packageRoot) {
65
+ if (!packageRoot)
66
+ return null;
67
+ const modulePathFromPackage = path.relative(packageRoot, executableModulePath).replaceAll('\\', '/');
68
+ if (modulePathFromPackage === 'dist' || modulePathFromPackage.startsWith('dist/')) {
69
+ return path.join(packageRoot, 'dist');
70
+ }
71
+ return null;
72
+ }
73
+ /** Compose provenance for the MCP body that owns this module graph. */
74
+ export async function getMcpBuildProvenance(runtime, workspaceRoot, executableModulePath) {
75
+ const path = await getRuntimePath(runtime);
76
+ const modulePath = executableModulePath ?? path.fileURLToPath(import.meta.url);
77
+ const moduleDir = path.dirname(modulePath);
78
+ const sourceResolution = await resolveMcpExecutableSourceRoot(runtime, moduleDir);
79
+ const executablePackage = await findExecutablePackage(runtime, moduleDir);
80
+ const sourceCheckout = sourceResolution.confident && path.extname(modulePath) === '.ts';
81
+ const executableDistPath = sourceCheckout
82
+ ? null
83
+ : resolveExecutableDistPath(path, modulePath, executablePackage?.root);
84
+ const sourceRoot = sourceCheckout
85
+ ? sourceResolution.root
86
+ : executableDistPath
87
+ ? (executablePackage?.root ?? moduleDir)
88
+ : moduleDir;
89
+ const packageGitRef = sourceCheckout
90
+ ? undefined
91
+ : executableDistPath
92
+ ? (executablePackage?.gitHead ?? null)
93
+ : null;
94
+ // A compiled standalone body cannot be certified by git probes (/$bunfs) or
95
+ // npm's package gitHead (never written by a local compile). Its build bakes
96
+ // the exact source SHA (cli-bin scripts/build.ts, fail-closed) and the
97
+ // entrypoint republishes it as VIBES_SOURCE_SHA — the same variable the
98
+ // build itself honors. Consuming it here is what retires the permanent
99
+ // "EXECUTABLE SOURCE UNKNOWN" banner on locally built binaries.
100
+ const envBakedGitRef = sourceCheckout
101
+ ? null
102
+ : normalizeGitRef(runtime.getEnv('VIBES_SOURCE_SHA'));
103
+ const bakedGitRef = packageGitRef ?? envBakedGitRef ?? (sourceCheckout ? undefined : null);
104
+ const sourceDirtyFlag = sourceCheckout ? undefined : runtime.getEnv('VIBES_SOURCE_DIRTY');
105
+ const bakedDirty = sourceCheckout
106
+ ? undefined
107
+ : sourceDirtyFlag === '1'
108
+ ? true
109
+ : sourceDirtyFlag === '0'
110
+ ? false
111
+ : null;
112
+ return getBuildProvenance(runtime, {
113
+ sourceRoot,
114
+ sourceGitRef: bakedGitRef,
115
+ sourceRefKind: sourceCheckout
116
+ ? 'git-checkout'
117
+ : packageGitRef
118
+ ? 'package-gitHead'
119
+ : envBakedGitRef
120
+ ? 'baked-source-sha'
121
+ : 'unknown',
122
+ sourceDirty: bakedDirty,
123
+ workspaceRoot,
124
+ executableDistPath,
125
+ executionKind: sourceCheckout ? 'source' : executableDistPath ? 'dist' : 'unknown'
126
+ });
127
+ }
128
+ /**
129
+ * One git probe through the runtime's execution provider, on the host's
130
+ * composed environment only (`replace`). A host with no execution provider (a
131
+ * cloud Worker) cannot probe, so the ref is unknown; a git that answers
132
+ * non-zero (not a repository) is unknown too. Any other failure propagates.
133
+ */
134
+ async function runGit(runtime, args, cwd) {
135
+ if (!runtime.hasKind('runtime/execution'))
136
+ return null;
137
+ const proc = await runCapture(runtime, 'git', ['--no-optional-locks', ...args], {
138
+ cwd,
139
+ env: composeHostEnv(runtime),
140
+ envMode: 'replace'
141
+ });
142
+ if (proc.exitCode !== 0)
143
+ return null;
144
+ return proc.stdout.trim() || null;
145
+ }
146
+ async function sameRealPath(filesystem, left, right) {
147
+ if (!(await filesystem.exists(left)) || !(await filesystem.exists(right)))
148
+ return false;
149
+ const [resolvedLeft, resolvedRight] = await Promise.all([
150
+ realpathChecked(filesystem, left),
151
+ realpathChecked(filesystem, right)
152
+ ]);
153
+ return resolvedLeft === resolvedRight;
154
+ }
155
+ async function runGitAtRoot(runtime, filesystem, args, root) {
156
+ const topLevel = await runGit(runtime, ['rev-parse', '--show-toplevel'], root);
157
+ if (!topLevel)
158
+ return null;
159
+ if (!(await sameRealPath(filesystem, topLevel, root)))
160
+ return null;
161
+ return runGit(runtime, args, root);
162
+ }
163
+ async function getNewestDistMtime(filesystem, distPath) {
164
+ if (!(await filesystem.exists(distPath)))
165
+ return null;
166
+ const entries = await filesystem.list(distPath);
167
+ let newest = 0;
168
+ for (const entry of entries) {
169
+ if (entry.kind !== 'file' || entry.modifiedAt === undefined)
170
+ continue;
171
+ const modified = Date.parse(entry.modifiedAt);
172
+ if (Number.isFinite(modified) && modified > newest)
173
+ newest = modified;
174
+ }
175
+ return newest > 0 ? newest : null;
176
+ }
177
+ /**
178
+ * Compute build provenance for the MCP serve instructions.
179
+ *
180
+ * sourceRoot and workspaceRoot are intentionally separate. A client commonly
181
+ * executes MCP from a pinned source checkout while VIBES_WORKSPACE_PATH points
182
+ * at the user's active project.
183
+ */
184
+ export async function getBuildProvenance(runtime, input) {
185
+ const filesystem = await resolveFileSystemAdapter(runtime, { binding: false });
186
+ const sourceRoot = input.sourceRoot;
187
+ const workspaceRoot = input.workspaceRoot;
188
+ const probedSourceGitRef = input.sourceGitRef === undefined ? await runGitAtRoot(runtime, filesystem, ['rev-parse', 'HEAD'], sourceRoot) : null;
189
+ const sourceGitRef = input.sourceGitRef === undefined ? probedSourceGitRef : normalizeGitRef(input.sourceGitRef);
190
+ const sourceRefKind = input.sourceRefKind ??
191
+ (sourceGitRef && sourceGitRef === probedSourceGitRef ? 'git-checkout' : 'unknown');
192
+ const sourceStatus = input.sourceDirty === undefined && sourceRefKind === 'git-checkout'
193
+ ? await runGitAtRoot(runtime, filesystem, ['status', '--porcelain'], sourceRoot)
194
+ : null;
195
+ const sourceDirty = input.sourceDirty !== undefined
196
+ ? input.sourceDirty
197
+ : sourceStatus === null
198
+ ? null
199
+ : sourceStatus.length > 0;
200
+ const workspaceGitRef = await runGitAtRoot(runtime, filesystem, ['rev-parse', 'HEAD'], workspaceRoot);
201
+ const commitTime = sourceRefKind === 'git-checkout'
202
+ ? await runGitAtRoot(runtime, filesystem, ['log', '-1', '--format=%cI', 'HEAD'], sourceRoot)
203
+ : null;
204
+ // Execution kind comes from the loaded module path, not the JS runtime:
205
+ // Bun can execute either workspace .ts source or packaged/bundled dist.
206
+ const servingFromSource = input.executionKind === 'source';
207
+ const executableDistPath = input.executableDistPath ?? null;
208
+ let distStale = null;
209
+ if (executableDistPath) {
210
+ const distMtime = await getNewestDistMtime(filesystem, executableDistPath);
211
+ if (distMtime !== null && commitTime) {
212
+ const commitMs = new Date(commitTime).getTime();
213
+ distStale = distMtime < commitMs;
214
+ }
215
+ }
216
+ const sourceRefLabel = sourceGitRef?.slice(0, 10) ?? 'unknown';
217
+ const workspaceRefLabel = workspaceGitRef?.slice(0, 10) ?? 'unknown';
218
+ const parts = [];
219
+ const sourceLabel = sourceRefKind === 'package-gitHead'
220
+ ? 'baked package source'
221
+ : sourceRefKind === 'baked-source-sha'
222
+ ? 'baked executable source'
223
+ : 'executable source';
224
+ parts.push(`${sourceLabel}@${sourceRefLabel} (${sourceRoot})`);
225
+ if (commitTime) {
226
+ parts.push(`(${commitTime})`);
227
+ }
228
+ parts.push(`· user workspace@${workspaceRefLabel} (${workspaceRoot})`);
229
+ if (sourceDirty) {
230
+ parts.push('· source snapshot: DIRTY (SHA is the base commit, not complete byte identity)');
231
+ }
232
+ if (distStale === true) {
233
+ if (servingFromSource) {
234
+ parts.push('· dist: STALE (serving from source — dist not used)');
235
+ }
236
+ else {
237
+ parts.push('· dist: STALE');
238
+ }
239
+ }
240
+ else if (distStale === false) {
241
+ parts.push('· dist: fresh');
242
+ }
243
+ const hasStale = distStale === true && !servingFromSource;
244
+ const sourceUnknown = sourceGitRef === null;
245
+ const prefix = sourceUnknown
246
+ ? '⚠ EXECUTABLE SOURCE UNKNOWN: '
247
+ : sourceDirty
248
+ ? '⚠ DIRTY BUILD: '
249
+ : hasStale
250
+ ? '⚠ STALE BUILD: '
251
+ : 'Build provenance: ';
252
+ // DRIFT IS INVISIBLE FROM INSIDE. This string is built once, at spawn, when the
253
+ // body is BY DEFINITION at HEAD — so it can never report drift itself. The gap
254
+ // opens afterwards, as main moves and a long-lived stdio body keeps serving the
255
+ // code it started with. Measured 2026-07-25: 22 live bodies on one machine, the
256
+ // oldest 1d5h, all 114 commits behind, silently answering with retired tool
257
+ // schemas and missing actions that had landed hours earlier.
258
+ //
259
+ // An agent cannot notice this by working harder; nothing in a tool response says
260
+ // "you are old". So hand it the falsifier alongside the SHA it was born at.
261
+ const driftHint = sourceRefKind === 'git-checkout' && sourceGitRef
262
+ ? ` To check whether the executable source moved underneath this body, run \`git -C ${quoteShellArgument(sourceRoot)} rev-parse HEAD\`; it must still equal \`${sourceGitRef}\`. A stdio body cannot heal itself and \`vibes dev mcp restart\` restarts the managed daemon, a different process; reconnect through the owning client or start a new session.`
263
+ : sourceRefKind === 'package-gitHead' && sourceGitRef
264
+ ? ` The source ref is baked into this package as \`gitHead=${sourceGitRef}\`; packaged code cannot be checked for mutable-worktree drift.`
265
+ : sourceRefKind === 'baked-source-sha' && sourceGitRef && sourceDirty
266
+ ? ` The executable includes uncommitted source bytes; \`${sourceGitRef}\` names only their base commit. Rebuild from a clean, versioned composition before treating this artifact as reproducible.`
267
+ : sourceRefKind === 'baked-source-sha' && sourceGitRef
268
+ ? ` The source ref is baked into this standalone executable as \`VIBES_SOURCE_SHA=${sourceGitRef}\`; compiled code cannot be checked for mutable-worktree drift.`
269
+ : ' This body cannot certify which source it executes; rebuild it with baked source provenance or reconnect it from an immutable, versioned source checkout before trusting live behavior.';
270
+ const suffix = (hasStale
271
+ ? ' This server may serve code that no longer matches the current source. If tools are missing or behaving unexpectedly, respawn the MCP server.'
272
+ : '') + driftHint;
273
+ const provenanceString = prefix + parts.join(' ') + suffix;
274
+ return {
275
+ sourceRoot,
276
+ sourceGitRef,
277
+ sourceRefKind,
278
+ sourceDirty,
279
+ workspaceRoot,
280
+ workspaceGitRef,
281
+ executableDistPath,
282
+ commitTime,
283
+ distStale,
284
+ provenanceString
285
+ };
286
+ }
287
+ //# sourceMappingURL=build-provenance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-provenance.js","sourceRoot":"","sources":["../../src/surface-mcp/build-provenance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { valueFreeFailure, type RuntimeFatalKind, type RuntimeRef, type ValueFreeFailure } from '@vibesdotdev/kernel';
2
+ /** What reports go to: the serving runtime's logger. */
3
+ export interface CrashReportLogger {
4
+ error(message: string, context: {
5
+ kind: RuntimeFatalKind;
6
+ failure: ReturnType<typeof valueFreeFailure>;
7
+ }): void;
8
+ debug(message: string, context: {
9
+ reason: string;
10
+ }): void;
11
+ }
12
+ /** Why a host offered no fatal subscription: confirmed absence, reported at debug. */
13
+ export type CrashReportingAbsence = 'host-signals-unavailable' | 'fatal-subscription-unsupported';
14
+ export type CrashReporting = {
15
+ readonly kind: 'subscribed';
16
+ readonly stop: () => void;
17
+ } | {
18
+ readonly kind: 'absent';
19
+ readonly reason: CrashReportingAbsence;
20
+ /** Present when the host's signal capability itself failed. Value-free: name, code, reason. */
21
+ readonly failure?: ValueFreeFailure;
22
+ };
23
+ /**
24
+ * Subscribe `logger` to the host's fatal failures for `runtime`. Each report is
25
+ * value-free (the failure's name and code, never its message or stack).
26
+ */
27
+ export declare function subscribeServeCrashReports(runtime: Pick<RuntimeRef, 'hasKind' | 'query'>, logger: CrashReportLogger): Promise<CrashReporting>;
28
+ //# sourceMappingURL=crash-reporting.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crash-reporting.d.ts","sourceRoot":"","sources":["../../src/surface-mcp/crash-reporting.ts"],"names":[],"mappings":"AAYA,OAAO,EAGN,gBAAgB,EAChB,KAAK,gBAAgB,EACrB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,MAAM,qBAAqB,CAAC;AAE7B,wDAAwD;AACxD,MAAM,WAAW,iBAAiB;IACjC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,IAAI,EAAE,gBAAgB,CAAC;QAAC,OAAO,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAA;KAAE,GAAG,IAAI,CAAC;IAChH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAC1D;AAKD,sFAAsF;AACtF,MAAM,MAAM,qBAAqB,GAAG,0BAA0B,GAAG,gCAAgC,CAAC;AAElG,MAAM,MAAM,cAAc,GACvB;IAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAI,CAAA;CAAE,GAC1D;IACA,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC;IACvC,+FAA+F;IAC/F,QAAQ,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC;CACnC,CAAC;AAEL;;;GAGG;AACH,wBAAsB,0BAA0B,CAC/C,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,SAAS,GAAG,OAAO,CAAC,EAC9C,MAAM,EAAE,iBAAiB,GACvB,OAAO,CAAC,cAAc,CAAC,CAoBzB"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Fatal-failure reporting for an MCP serve body, through the runtime host's
3
+ * declared capability (`runtime/host-signals` `subscribeFatal`).
4
+ *
5
+ * Report-only and scoped to the serving runtime: it never marks a crash
6
+ * handled (the host's default fatal behaviour still runs), and another runtime
7
+ * in the same process keeps its own subscription. A host that declares no
8
+ * fatal subscription is confirmed absence: nothing is installed, and no
9
+ * process-wide handler ever stands in for it.
10
+ */
11
+ import * as z from 'zod/v4';
12
+ import { CaughtFailureSchema, getRuntimeHostSignals, valueFreeFailure } from '@vibesdotdev/kernel';
13
+ /** The host's optional fatal subscription, read by shape only. */
14
+ const FatalSubscriptionSchema = z.object({ subscribeFatal: z.function() });
15
+ /**
16
+ * Subscribe `logger` to the host's fatal failures for `runtime`. Each report is
17
+ * value-free (the failure's name and code, never its message or stack).
18
+ */
19
+ export async function subscribeServeCrashReports(runtime, logger) {
20
+ let signals;
21
+ try {
22
+ signals = await getRuntimeHostSignals(runtime);
23
+ }
24
+ catch (error) {
25
+ const failure = valueFreeFailure(CaughtFailureSchema.parse(error));
26
+ if (failure.reason === 'host-signals-unavailable') {
27
+ logger.debug('MCP serve: the host declares no signal capability; no fatal-failure reports', { reason: failure.reason });
28
+ return { kind: 'absent', reason: 'host-signals-unavailable', failure };
29
+ }
30
+ throw error;
31
+ }
32
+ if (!FatalSubscriptionSchema.safeParse(signals).success || !signals.subscribeFatal) {
33
+ logger.debug('MCP serve: the host offers no fatal subscription; no fatal-failure reports', { reason: 'fatal-subscription-unsupported' });
34
+ return { kind: 'absent', reason: 'fatal-subscription-unsupported' };
35
+ }
36
+ const stop = signals.subscribeFatal((kind, error) => {
37
+ logger.error('MCP serve fatal failure', { kind, failure: valueFreeFailure(error) });
38
+ });
39
+ return { kind: 'subscribed', stop };
40
+ }
41
+ //# sourceMappingURL=crash-reporting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crash-reporting.js","sourceRoot":"","sources":["../../src/surface-mcp/crash-reporting.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAE5B,OAAO,EACN,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAIhB,MAAM,qBAAqB,CAAC;AAQ7B,kEAAkE;AAClE,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAc3E;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC/C,OAA8C,EAC9C,MAAyB;IAEzB,IAAI,OAA0D,CAAC;IAC/D,IAAI,CAAC;QACJ,OAAO,GAAG,MAAM,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,OAAO,GAAG,gBAAgB,CAAC,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QACnE,IAAI,OAAO,CAAC,MAAM,KAAK,0BAA0B,EAAE,CAAC;YACnD,MAAM,CAAC,KAAK,CAAC,6EAA6E,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YACxH,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,0BAA0B,EAAE,OAAO,EAAE,CAAC;QACxE,CAAC;QACD,MAAM,KAAK,CAAC;IACb,CAAC;IACD,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;QACpF,MAAM,CAAC,KAAK,CAAC,4EAA4E,EAAE,EAAE,MAAM,EAAE,gCAAgC,EAAE,CAAC,CAAC;QACzI,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,gCAAgC,EAAE,CAAC;IACrE,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACnD,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACrF,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;AACrC,CAAC"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Executable-freshness watch — the MCP body's self-heal for a replaced binary.
3
+ *
4
+ * Every 30s the body asks TWO nerves whether the build it is serving still
5
+ * matches disk: executable-identity (was the file at my own path replaced?) and
6
+ * graph-freshness (was the module graph under my resolution root replaced?).
7
+ * The second one is the thin host's normal case — the binary is recompiled very
8
+ * rarely and `vibes update` moves the plugins instead. When either fires:
9
+ * - it logs the injury once, at ERROR, with the exact remedy;
10
+ * - every tool result already carries the banner (adapters/mcp/stale-body.ts);
11
+ * - a MANAGED body (VIBES_PM_MANAGED set, http mode) asks the PM daemon to
12
+ * roll it once the new file has settled for `settleMs` (an install by
13
+ * atomic rename settles instantly; a slow copy must not be exec'd mid-write);
14
+ * - a stdio body cannot be restarted by anyone but its client, so it stops at
15
+ * the banner — "do everything you can, then ask for help".
16
+ *
17
+ * Measured need (2026-08-28): the managed HTTP body ran a deleted inode for
18
+ * 8h45m after a release install until a health-check kill replaced it by
19
+ * accident. This turns that accident into a design.
20
+ *
21
+ * Measured failure (2026-09-05): an http body from a retired worktree binary
22
+ * (ppid 1, alive 46h) still carried the VIBES_PM_MANAGED=mcp-server-dev stamp
23
+ * PM had given its ancestor. Its own graph was stale forever, so every retry
24
+ * window it asked PM to roll `mcp-server-dev` — and PM rolled the healthy
25
+ * shared host: 552 of 586 restarts that day, each one failing every in-flight
26
+ * relay call. A stamp is inherited by descendants and orphans; it is not proof
27
+ * of identity. So before asking, the watch proves that PM tracks THIS pid
28
+ * under that id, disables itself for good on a mismatch, and gives up after a
29
+ * bounded number of requests. The daemon enforces the same proof on its side
30
+ * (`expectedPid` on the restart RPC).
31
+ */
32
+ import type { LoggerImplementation } from '@vibesdotdev/logging';
33
+ import { type RuntimeHostIdentity } from '@vibesdotdev/kernel';
34
+ export interface ExecutableFreshnessWatch {
35
+ stop(): void;
36
+ /** One tick, exposed for tests. */
37
+ tick(): Promise<void>;
38
+ }
39
+ export interface ExecutableFreshnessWatchOptions {
40
+ mode: 'stdio' | 'http';
41
+ /**
42
+ * This serve host's own bound workspace: the PM daemon it asks for a
43
+ * managed restart is the one that workspace's socket names.
44
+ */
45
+ workspaceRoot: string;
46
+ /**
47
+ * The serve host's runtime: the PM client for a managed restart reads its
48
+ * path roots and path mechanics. Nothing here reads an ambient runtime.
49
+ */
50
+ runtime: import('@vibesdotdev/pm/client').PMClientRuntime & Pick<import('@vibesdotdev/kernel').VibesRuntime, 'localEnvironment' | 'getEnv' | 'getEnvSnapshot' | 'lifecycle'>;
51
+ /**
52
+ * The PM process id this body was launched as (PM's `VIBES_PM_MANAGED`
53
+ * spawn stamp, read by the caller from its host's captured environment),
54
+ * or null for a body PM did not launch.
55
+ */
56
+ managedProcessId: string | null;
57
+ /** The serve host's declared process identity (`getRuntimeHostIdentity`): executable/graph freshness and its pid. */
58
+ identity: RuntimeHostIdentity;
59
+ logger: Pick<LoggerImplementation, 'error' | 'info' | 'warn'>;
60
+ /** Poll interval (default 30s). */
61
+ intervalMs?: number;
62
+ /** How long the new file must be unchanged before a managed restart (default 30s). */
63
+ settleMs?: number;
64
+ /** Back-off after a failed restart request (default 5 min). */
65
+ retryMs?: number;
66
+ /** Give up (and stop the watch) after this many restart requests (default 3). */
67
+ maxRestartRequests?: number;
68
+ /**
69
+ * Override the restart request (tests). Default:
70
+ * PMClient.restart(VIBES_PM_MANAGED, undefined, { expectedPid }).
71
+ */
72
+ requestRestart?: (processId: string, guard: ManagedRestartGuard) => Promise<void>;
73
+ /**
74
+ * Resolve the pid the PM daemon currently tracks under a managed process id
75
+ * (tests). Default: PMClient.getStatus(processId).pid. `null` = untracked.
76
+ */
77
+ resolveManagedPid?: (processId: string) => Promise<number | null>;
78
+ /** This body's pid (tests). Default: the host identity's `currentPid()`. */
79
+ selfPid?: number;
80
+ /** Publish a verified implementation artifact without closing transports. */
81
+ publishUpdate?: () => Promise<boolean>;
82
+ now?: () => number;
83
+ }
84
+ /** Proof the requester is the tracked process; the daemon refuses a mismatch. */
85
+ export interface ManagedRestartGuard {
86
+ expectedPid: number;
87
+ }
88
+ export declare function startExecutableFreshnessWatch(options: ExecutableFreshnessWatchOptions): ExecutableFreshnessWatch;
89
+ //# sourceMappingURL=executable-freshness-watch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executable-freshness-watch.d.ts","sourceRoot":"","sources":["../../src/surface-mcp/executable-freshness-watch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,OAAO,EAA4B,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAGzF,MAAM,WAAW,wBAAwB;IACxC,IAAI,IAAI,IAAI,CAAC;IACb,mCAAmC;IACnC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACtB;AAED,MAAM,WAAW,+BAA+B;IAC/C,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IACvB;;;OAGG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,OAAO,EAAE,OAAO,wBAAwB,EAAE,eAAe,GACxD,IAAI,CAAC,OAAO,qBAAqB,EAAE,YAAY,EAAE,kBAAkB,GAAG,QAAQ,GAAG,gBAAgB,GAAG,WAAW,CAAC,CAAC;IAClH;;;;OAIG;IACH,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,qHAAqH;IACrH,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC;IAC9D,mCAAmC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sFAAsF;IACtF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClF;;;OAGG;IACH,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAClE,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACnB;AAED,iFAAiF;AACjF,MAAM,WAAW,mBAAmB;IACnC,WAAW,EAAE,MAAM,CAAC;CACpB;AAyBD,wBAAgB,6BAA6B,CAC5C,OAAO,EAAE,+BAA+B,GACtC,wBAAwB,CA6L1B"}