@homeflare/alchemy 0.43.0 → 0.45.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 (612) hide show
  1. package/README.md +10 -1
  2. package/dist/caddy/index.js +35 -1
  3. package/dist/caddy/index.js.map +3 -3
  4. package/dist/launchd/index.js +35 -1
  5. package/dist/launchd/index.js.map +3 -3
  6. package/dist/linux/index.js +35 -1
  7. package/dist/linux/index.js.map +3 -3
  8. package/dist/litellm/access-group-form.d.ts +26 -0
  9. package/dist/litellm/access-group-form.d.ts.map +1 -0
  10. package/dist/litellm/access-group-operations.d.ts +37 -0
  11. package/dist/litellm/access-group-operations.d.ts.map +1 -0
  12. package/dist/litellm/access-group-types.d.ts +49 -0
  13. package/dist/litellm/access-group-types.d.ts.map +1 -0
  14. package/dist/litellm/access-group.d.ts +55 -0
  15. package/dist/litellm/access-group.d.ts.map +1 -0
  16. package/dist/litellm/credential-errors.d.ts +131 -0
  17. package/dist/litellm/credential-errors.d.ts.map +1 -0
  18. package/dist/litellm/credential-form.d.ts +79 -0
  19. package/dist/litellm/credential-form.d.ts.map +1 -0
  20. package/dist/litellm/credential-operations.d.ts +84 -0
  21. package/dist/litellm/credential-operations.d.ts.map +1 -0
  22. package/dist/litellm/credential-rewrite.d.ts +6 -0
  23. package/dist/litellm/credential-rewrite.d.ts.map +1 -0
  24. package/dist/litellm/credential-types.d.ts +87 -0
  25. package/dist/litellm/credential-types.d.ts.map +1 -0
  26. package/dist/litellm/credential-values.d.ts +53 -0
  27. package/dist/litellm/credential-values.d.ts.map +1 -0
  28. package/dist/litellm/credential.d.ts +83 -0
  29. package/dist/litellm/credential.d.ts.map +1 -0
  30. package/dist/litellm/fake-access-group-litellm.d.ts +34 -0
  31. package/dist/litellm/fake-access-group-litellm.d.ts.map +1 -0
  32. package/dist/litellm/fake-credential-litellm.d.ts +54 -0
  33. package/dist/litellm/fake-credential-litellm.d.ts.map +1 -0
  34. package/dist/litellm/fake-keys.d.ts +53 -0
  35. package/dist/litellm/fake-keys.d.ts.map +1 -0
  36. package/dist/litellm/fake-litellm.d.ts +4 -1
  37. package/dist/litellm/fake-litellm.d.ts.map +1 -1
  38. package/dist/litellm/fake-mcp-litellm.d.ts +67 -0
  39. package/dist/litellm/fake-mcp-litellm.d.ts.map +1 -0
  40. package/dist/litellm/fake-model-litellm-post-update.d.ts +49 -0
  41. package/dist/litellm/fake-model-litellm-post-update.d.ts.map +1 -0
  42. package/dist/litellm/fake-model-litellm.d.ts +48 -0
  43. package/dist/litellm/fake-model-litellm.d.ts.map +1 -0
  44. package/dist/litellm/fake-policy-attachment-litellm.d.ts +33 -0
  45. package/dist/litellm/fake-policy-attachment-litellm.d.ts.map +1 -0
  46. package/dist/litellm/fake-policy-litellm.d.ts +32 -0
  47. package/dist/litellm/fake-policy-litellm.d.ts.map +1 -0
  48. package/dist/litellm/fake-registry-base.d.ts +42 -0
  49. package/dist/litellm/fake-registry-base.d.ts.map +1 -0
  50. package/dist/litellm/fake-stack.d.ts +8 -1
  51. package/dist/litellm/fake-stack.d.ts.map +1 -1
  52. package/dist/litellm/fake-team-litellm.d.ts +47 -0
  53. package/dist/litellm/fake-team-litellm.d.ts.map +1 -0
  54. package/dist/litellm/fake-tool-litellm.d.ts +28 -0
  55. package/dist/litellm/fake-tool-litellm.d.ts.map +1 -0
  56. package/dist/litellm/fake-toolset-litellm.d.ts +29 -0
  57. package/dist/litellm/fake-toolset-litellm.d.ts.map +1 -0
  58. package/dist/litellm/index.d.ts +18 -0
  59. package/dist/litellm/index.d.ts.map +1 -1
  60. package/dist/litellm/index.js +3078 -2
  61. package/dist/litellm/index.js.map +65 -4
  62. package/dist/litellm/key-errors.d.ts +169 -0
  63. package/dist/litellm/key-errors.d.ts.map +1 -0
  64. package/dist/litellm/key-form.d.ts +119 -0
  65. package/dist/litellm/key-form.d.ts.map +1 -0
  66. package/dist/litellm/key-harness.d.ts +41 -0
  67. package/dist/litellm/key-harness.d.ts.map +1 -0
  68. package/dist/litellm/key-metadata-errors.d.ts +30 -0
  69. package/dist/litellm/key-metadata-errors.d.ts.map +1 -0
  70. package/dist/litellm/key-metadata.d.ts +22 -0
  71. package/dist/litellm/key-metadata.d.ts.map +1 -0
  72. package/dist/litellm/key-operations.d.ts +63 -0
  73. package/dist/litellm/key-operations.d.ts.map +1 -0
  74. package/dist/litellm/key-secret.d.ts +33 -0
  75. package/dist/litellm/key-secret.d.ts.map +1 -0
  76. package/dist/litellm/key.d.ts +78 -0
  77. package/dist/litellm/key.d.ts.map +1 -0
  78. package/dist/litellm/mcp-server-credential.d.ts +50 -0
  79. package/dist/litellm/mcp-server-credential.d.ts.map +1 -0
  80. package/dist/litellm/mcp-server-errors.d.ts +101 -0
  81. package/dist/litellm/mcp-server-errors.d.ts.map +1 -0
  82. package/dist/litellm/mcp-server-form.d.ts +56 -0
  83. package/dist/litellm/mcp-server-form.d.ts.map +1 -0
  84. package/dist/litellm/mcp-server-locate.d.ts +26 -0
  85. package/dist/litellm/mcp-server-locate.d.ts.map +1 -0
  86. package/dist/litellm/mcp-server-operations.d.ts +63 -0
  87. package/dist/litellm/mcp-server-operations.d.ts.map +1 -0
  88. package/dist/litellm/mcp-server-shadow.d.ts +24 -0
  89. package/dist/litellm/mcp-server-shadow.d.ts.map +1 -0
  90. package/dist/litellm/mcp-server-types.d.ts +118 -0
  91. package/dist/litellm/mcp-server-types.d.ts.map +1 -0
  92. package/dist/litellm/mcp-server-url.d.ts +11 -0
  93. package/dist/litellm/mcp-server-url.d.ts.map +1 -0
  94. package/dist/litellm/mcp-server.d.ts +95 -0
  95. package/dist/litellm/mcp-server.d.ts.map +1 -0
  96. package/dist/litellm/model-claim.d.ts +24 -0
  97. package/dist/litellm/model-claim.d.ts.map +1 -0
  98. package/dist/litellm/model-credential.d.ts +12 -0
  99. package/dist/litellm/model-credential.d.ts.map +1 -0
  100. package/dist/litellm/model-errors.d.ts +119 -0
  101. package/dist/litellm/model-errors.d.ts.map +1 -0
  102. package/dist/litellm/model-form.d.ts +78 -0
  103. package/dist/litellm/model-form.d.ts.map +1 -0
  104. package/dist/litellm/model-locate.d.ts +13 -0
  105. package/dist/litellm/model-locate.d.ts.map +1 -0
  106. package/dist/litellm/model-operations.d.ts +59 -0
  107. package/dist/litellm/model-operations.d.ts.map +1 -0
  108. package/dist/litellm/model-types.d.ts +91 -0
  109. package/dist/litellm/model-types.d.ts.map +1 -0
  110. package/dist/litellm/model.d.ts +88 -0
  111. package/dist/litellm/model.d.ts.map +1 -0
  112. package/dist/litellm/policy-attachment-form.d.ts +19 -0
  113. package/dist/litellm/policy-attachment-form.d.ts.map +1 -0
  114. package/dist/litellm/policy-attachment-operations.d.ts +31 -0
  115. package/dist/litellm/policy-attachment-operations.d.ts.map +1 -0
  116. package/dist/litellm/policy-attachment-types.d.ts +48 -0
  117. package/dist/litellm/policy-attachment-types.d.ts.map +1 -0
  118. package/dist/litellm/policy-attachment.d.ts +61 -0
  119. package/dist/litellm/policy-attachment.d.ts.map +1 -0
  120. package/dist/litellm/policy-form.d.ts +22 -0
  121. package/dist/litellm/policy-form.d.ts.map +1 -0
  122. package/dist/litellm/policy-operations.d.ts +42 -0
  123. package/dist/litellm/policy-operations.d.ts.map +1 -0
  124. package/dist/litellm/policy-types.d.ts +57 -0
  125. package/dist/litellm/policy-types.d.ts.map +1 -0
  126. package/dist/litellm/policy.d.ts +65 -0
  127. package/dist/litellm/policy.d.ts.map +1 -0
  128. package/dist/litellm/providers.d.ts +1 -1
  129. package/dist/litellm/providers.d.ts.map +1 -1
  130. package/dist/litellm/registry-errors.d.ts +62 -0
  131. package/dist/litellm/registry-errors.d.ts.map +1 -0
  132. package/dist/litellm/registry-support.d.ts +42 -0
  133. package/dist/litellm/registry-support.d.ts.map +1 -0
  134. package/dist/litellm/team-form.d.ts +26 -0
  135. package/dist/litellm/team-form.d.ts.map +1 -0
  136. package/dist/litellm/team-members.d.ts +10 -0
  137. package/dist/litellm/team-members.d.ts.map +1 -0
  138. package/dist/litellm/team-operations.d.ts +38 -0
  139. package/dist/litellm/team-operations.d.ts.map +1 -0
  140. package/dist/litellm/team-permission.d.ts +35 -0
  141. package/dist/litellm/team-permission.d.ts.map +1 -0
  142. package/dist/litellm/team-types.d.ts +101 -0
  143. package/dist/litellm/team-types.d.ts.map +1 -0
  144. package/dist/litellm/team.d.ts +67 -0
  145. package/dist/litellm/team.d.ts.map +1 -0
  146. package/dist/litellm/tool-policy-form.d.ts +21 -0
  147. package/dist/litellm/tool-policy-form.d.ts.map +1 -0
  148. package/dist/litellm/tool-policy-operations.d.ts +30 -0
  149. package/dist/litellm/tool-policy-operations.d.ts.map +1 -0
  150. package/dist/litellm/tool-policy-types.d.ts +46 -0
  151. package/dist/litellm/tool-policy-types.d.ts.map +1 -0
  152. package/dist/litellm/tool-policy.d.ts +62 -0
  153. package/dist/litellm/tool-policy.d.ts.map +1 -0
  154. package/dist/litellm/toolset-form.d.ts +20 -0
  155. package/dist/litellm/toolset-form.d.ts.map +1 -0
  156. package/dist/litellm/toolset-operations.d.ts +39 -0
  157. package/dist/litellm/toolset-operations.d.ts.map +1 -0
  158. package/dist/litellm/toolset-types.d.ts +46 -0
  159. package/dist/litellm/toolset-types.d.ts.map +1 -0
  160. package/dist/litellm/toolset.d.ts +55 -0
  161. package/dist/litellm/toolset.d.ts.map +1 -0
  162. package/dist/openbao/index.js +35 -1
  163. package/dist/openbao/index.js.map +3 -3
  164. package/dist/ownership/rows.d.ts +11 -0
  165. package/dist/ownership/rows.d.ts.map +1 -1
  166. package/dist/postgres/connection.d.ts +14 -2
  167. package/dist/postgres/connection.d.ts.map +1 -1
  168. package/dist/postgres/database-sql.d.ts +27 -8
  169. package/dist/postgres/database-sql.d.ts.map +1 -1
  170. package/dist/postgres/fake-grants-parse.d.ts +37 -0
  171. package/dist/postgres/fake-grants-parse.d.ts.map +1 -0
  172. package/dist/postgres/fake-grants-read.d.ts +61 -0
  173. package/dist/postgres/fake-grants-read.d.ts.map +1 -0
  174. package/dist/postgres/fake-grants-sql.d.ts +46 -0
  175. package/dist/postgres/fake-grants-sql.d.ts.map +1 -0
  176. package/dist/postgres/fake-grants-write.d.ts +29 -0
  177. package/dist/postgres/fake-grants-write.d.ts.map +1 -0
  178. package/dist/postgres/fake-role-sql.d.ts +41 -0
  179. package/dist/postgres/fake-role-sql.d.ts.map +1 -0
  180. package/dist/postgres/fake-schema-sql.d.ts +42 -0
  181. package/dist/postgres/fake-schema-sql.d.ts.map +1 -0
  182. package/dist/postgres/fake-sql-parse.d.ts +23 -0
  183. package/dist/postgres/fake-sql-parse.d.ts.map +1 -0
  184. package/dist/postgres/fake-sql-quote.d.ts +12 -0
  185. package/dist/postgres/fake-sql-quote.d.ts.map +1 -0
  186. package/dist/postgres/fake-sql.d.ts +42 -0
  187. package/dist/postgres/fake-sql.d.ts.map +1 -1
  188. package/dist/postgres/grants-attrs.d.ts +115 -0
  189. package/dist/postgres/grants-attrs.d.ts.map +1 -0
  190. package/dist/postgres/grants-declare.d.ts +88 -0
  191. package/dist/postgres/grants-declare.d.ts.map +1 -0
  192. package/dist/postgres/grants-diff.d.ts +25 -0
  193. package/dist/postgres/grants-diff.d.ts.map +1 -0
  194. package/dist/postgres/grants-errors.d.ts +137 -0
  195. package/dist/postgres/grants-errors.d.ts.map +1 -0
  196. package/dist/postgres/grants-existence.d.ts +14 -0
  197. package/dist/postgres/grants-existence.d.ts.map +1 -0
  198. package/dist/postgres/grants-ops.d.ts +65 -0
  199. package/dist/postgres/grants-ops.d.ts.map +1 -0
  200. package/dist/postgres/grants-ownership.d.ts +18 -0
  201. package/dist/postgres/grants-ownership.d.ts.map +1 -0
  202. package/dist/postgres/grants-plan-restore.d.ts +22 -0
  203. package/dist/postgres/grants-plan-restore.d.ts.map +1 -0
  204. package/dist/postgres/grants-plan.d.ts +65 -0
  205. package/dist/postgres/grants-plan.d.ts.map +1 -0
  206. package/dist/postgres/grants-read-defaults.d.ts +17 -0
  207. package/dist/postgres/grants-read-defaults.d.ts.map +1 -0
  208. package/dist/postgres/grants-read.d.ts +77 -0
  209. package/dist/postgres/grants-read.d.ts.map +1 -0
  210. package/dist/postgres/grants-refuse.d.ts +25 -0
  211. package/dist/postgres/grants-refuse.d.ts.map +1 -0
  212. package/dist/postgres/grants-sql.d.ts +42 -0
  213. package/dist/postgres/grants-sql.d.ts.map +1 -0
  214. package/dist/postgres/grants-words.d.ts +29 -0
  215. package/dist/postgres/grants-words.d.ts.map +1 -0
  216. package/dist/postgres/grants.d.ts +37 -0
  217. package/dist/postgres/grants.d.ts.map +1 -0
  218. package/dist/postgres/index.d.ts +31 -6
  219. package/dist/postgres/index.d.ts.map +1 -1
  220. package/dist/postgres/index.js +1998 -37
  221. package/dist/postgres/index.js.map +46 -7
  222. package/dist/postgres/installed-classifier.d.ts +13 -0
  223. package/dist/postgres/installed-classifier.d.ts.map +1 -0
  224. package/dist/postgres/providers.d.ts +16 -8
  225. package/dist/postgres/providers.d.ts.map +1 -1
  226. package/dist/postgres/psql-executor.d.ts +4 -0
  227. package/dist/postgres/psql-executor.d.ts.map +1 -1
  228. package/dist/postgres/role-attrs.d.ts +112 -0
  229. package/dist/postgres/role-attrs.d.ts.map +1 -0
  230. package/dist/postgres/role-diff.d.ts +22 -0
  231. package/dist/postgres/role-diff.d.ts.map +1 -0
  232. package/dist/postgres/role-errors.d.ts +132 -0
  233. package/dist/postgres/role-errors.d.ts.map +1 -0
  234. package/dist/postgres/role-membership-sql.d.ts +78 -0
  235. package/dist/postgres/role-membership-sql.d.ts.map +1 -0
  236. package/dist/postgres/role-provider.d.ts +11 -0
  237. package/dist/postgres/role-provider.d.ts.map +1 -0
  238. package/dist/postgres/role-scram.d.ts +8 -0
  239. package/dist/postgres/role-scram.d.ts.map +1 -0
  240. package/dist/postgres/role-secrets.d.ts +38 -0
  241. package/dist/postgres/role-secrets.d.ts.map +1 -0
  242. package/dist/postgres/role-sql.d.ts +68 -0
  243. package/dist/postgres/role-sql.d.ts.map +1 -0
  244. package/dist/postgres/role.d.ts +57 -0
  245. package/dist/postgres/role.d.ts.map +1 -0
  246. package/dist/postgres/schema-assert.d.ts +50 -0
  247. package/dist/postgres/schema-assert.d.ts.map +1 -0
  248. package/dist/postgres/schema-attrs.d.ts +51 -0
  249. package/dist/postgres/schema-attrs.d.ts.map +1 -0
  250. package/dist/postgres/schema-delete.d.ts +28 -0
  251. package/dist/postgres/schema-delete.d.ts.map +1 -0
  252. package/dist/postgres/schema-diff.d.ts +14 -0
  253. package/dist/postgres/schema-diff.d.ts.map +1 -0
  254. package/dist/postgres/schema-errors.d.ts +139 -0
  255. package/dist/postgres/schema-errors.d.ts.map +1 -0
  256. package/dist/postgres/schema-identity.d.ts +8 -0
  257. package/dist/postgres/schema-identity.d.ts.map +1 -0
  258. package/dist/postgres/schema-reconcile.d.ts +12 -0
  259. package/dist/postgres/schema-reconcile.d.ts.map +1 -0
  260. package/dist/postgres/schema-sql.d.ts +45 -0
  261. package/dist/postgres/schema-sql.d.ts.map +1 -0
  262. package/dist/postgres/schema-test-kit.d.ts +67 -0
  263. package/dist/postgres/schema-test-kit.d.ts.map +1 -0
  264. package/dist/postgres/schema.d.ts +54 -0
  265. package/dist/postgres/schema.d.ts.map +1 -0
  266. package/dist/proxmox/index.js +35 -1
  267. package/dist/proxmox/index.js.map +3 -3
  268. package/dist/release/fake-engine.d.ts +10 -0
  269. package/dist/release/fake-engine.d.ts.map +1 -1
  270. package/dist/release/index.js +35 -1
  271. package/dist/release/index.js.map +3 -3
  272. package/dist/valkey/acl-attrs.d.ts +94 -0
  273. package/dist/valkey/acl-attrs.d.ts.map +1 -0
  274. package/dist/valkey/acl-compare.d.ts +28 -0
  275. package/dist/valkey/acl-compare.d.ts.map +1 -0
  276. package/dist/valkey/acl-connection.d.ts +6 -0
  277. package/dist/valkey/acl-connection.d.ts.map +1 -0
  278. package/dist/valkey/acl-form.d.ts +62 -0
  279. package/dist/valkey/acl-form.d.ts.map +1 -0
  280. package/dist/valkey/acl-managed.d.ts +4 -0
  281. package/dist/valkey/acl-managed.d.ts.map +1 -0
  282. package/dist/valkey/acl-ops.d.ts +37 -0
  283. package/dist/valkey/acl-ops.d.ts.map +1 -0
  284. package/dist/valkey/acl-profiles.d.ts +53 -0
  285. package/dist/valkey/acl-profiles.d.ts.map +1 -0
  286. package/dist/valkey/acl-reconcile.d.ts +26 -0
  287. package/dist/valkey/acl-reconcile.d.ts.map +1 -0
  288. package/dist/valkey/acl.d.ts +24 -0
  289. package/dist/valkey/acl.d.ts.map +1 -0
  290. package/dist/valkey/connection-service.d.ts +22 -0
  291. package/dist/valkey/connection-service.d.ts.map +1 -0
  292. package/dist/valkey/connection.d.ts +59 -0
  293. package/dist/valkey/connection.d.ts.map +1 -0
  294. package/dist/valkey/errors.d.ts +165 -0
  295. package/dist/valkey/errors.d.ts.map +1 -0
  296. package/dist/valkey/fake-acl.d.ts +29 -0
  297. package/dist/valkey/fake-acl.d.ts.map +1 -0
  298. package/dist/valkey/fake-valkey.d.ts +35 -0
  299. package/dist/valkey/fake-valkey.d.ts.map +1 -0
  300. package/dist/valkey/handler-test-fixture.d.ts +20 -0
  301. package/dist/valkey/handler-test-fixture.d.ts.map +1 -0
  302. package/dist/valkey/index.d.ts +18 -0
  303. package/dist/valkey/index.d.ts.map +1 -0
  304. package/dist/valkey/index.js +964 -0
  305. package/dist/valkey/index.js.map +27 -0
  306. package/dist/valkey/instance-attrs.d.ts +46 -0
  307. package/dist/valkey/instance-attrs.d.ts.map +1 -0
  308. package/dist/valkey/instance-form.d.ts +22 -0
  309. package/dist/valkey/instance-form.d.ts.map +1 -0
  310. package/dist/valkey/instance.d.ts +48 -0
  311. package/dist/valkey/instance.d.ts.map +1 -0
  312. package/dist/valkey/provider-socket-fixture.d.ts +8 -0
  313. package/dist/valkey/provider-socket-fixture.d.ts.map +1 -0
  314. package/dist/valkey/providers.d.ts +16 -0
  315. package/dist/valkey/providers.d.ts.map +1 -0
  316. package/dist/valkey/resp.d.ts +38 -0
  317. package/dist/valkey/resp.d.ts.map +1 -0
  318. package/dist/valkey/transport-error.d.ts +36 -0
  319. package/dist/valkey/transport-error.d.ts.map +1 -0
  320. package/dist/valkey/transport.d.ts +50 -0
  321. package/dist/valkey/transport.d.ts.map +1 -0
  322. package/docs/litellm-access-group.md +105 -0
  323. package/docs/litellm-credential.md +60 -0
  324. package/docs/litellm-key-metadata.md +56 -0
  325. package/docs/litellm-key.md +194 -0
  326. package/docs/litellm-mcp.md +187 -0
  327. package/docs/litellm-model.md +111 -0
  328. package/docs/litellm-policy-attachment.md +86 -0
  329. package/docs/litellm-policy.md +103 -0
  330. package/docs/litellm-team.md +117 -0
  331. package/docs/litellm-tool-policy.md +90 -0
  332. package/docs/litellm-toolset.md +92 -0
  333. package/docs/litellm.md +16 -9
  334. package/docs/peers.md +15 -6
  335. package/docs/postgres-grants-example.md +55 -0
  336. package/docs/postgres-grants.md +157 -0
  337. package/docs/postgres-role.md +126 -0
  338. package/docs/postgres-schema.md +139 -0
  339. package/docs/postgres.md +20 -3
  340. package/docs/valkey-transport.md +29 -0
  341. package/docs/valkey.md +187 -0
  342. package/package.json +6 -2
  343. package/src/ceph/ceph-argv.test.ts +1 -1
  344. package/src/launchd/sudo-allowlist.test.ts +2 -2
  345. package/src/linux/sudo-allowlist.test.ts +3 -3
  346. package/src/linux/sudo-runner.test.ts +2 -2
  347. package/src/litellm/access-group-form.ts +105 -0
  348. package/src/litellm/access-group-operations.ts +92 -0
  349. package/src/litellm/access-group-types.ts +49 -0
  350. package/src/litellm/access-group.test.ts +197 -0
  351. package/src/litellm/access-group.ts +151 -0
  352. package/src/litellm/credential-errors.ts +183 -0
  353. package/src/litellm/credential-form.test.ts +151 -0
  354. package/src/litellm/credential-form.ts +211 -0
  355. package/src/litellm/credential-guards.test.ts +241 -0
  356. package/src/litellm/credential-operations.ts +208 -0
  357. package/src/litellm/credential-recovery.test.ts +93 -0
  358. package/src/litellm/credential-rewrite.test.ts +164 -0
  359. package/src/litellm/credential-rewrite.ts +50 -0
  360. package/src/litellm/credential-types.ts +117 -0
  361. package/src/litellm/credential-values.ts +94 -0
  362. package/src/litellm/credential.test.ts +218 -0
  363. package/src/litellm/credential.ts +227 -0
  364. package/src/litellm/fake-access-group-litellm.ts +127 -0
  365. package/src/litellm/fake-credential-litellm.ts +216 -0
  366. package/src/litellm/fake-keys.ts +190 -0
  367. package/src/litellm/fake-litellm.ts +19 -9
  368. package/src/litellm/fake-mcp-litellm.ts +214 -0
  369. package/src/litellm/fake-model-litellm-post-update.ts +103 -0
  370. package/src/litellm/fake-model-litellm.ts +233 -0
  371. package/src/litellm/fake-policy-attachment-litellm.ts +97 -0
  372. package/src/litellm/fake-policy-litellm.ts +186 -0
  373. package/src/litellm/fake-registry-base.ts +69 -0
  374. package/src/litellm/fake-stack.ts +17 -1
  375. package/src/litellm/fake-team-litellm.ts +229 -0
  376. package/src/litellm/fake-tool-litellm.ts +88 -0
  377. package/src/litellm/fake-toolset-litellm.ts +110 -0
  378. package/src/litellm/index.ts +140 -0
  379. package/src/litellm/key-delete.test.ts +212 -0
  380. package/src/litellm/key-errors.ts +241 -0
  381. package/src/litellm/key-form.ts +200 -0
  382. package/src/litellm/key-harness.ts +121 -0
  383. package/src/litellm/key-metadata-errors.ts +49 -0
  384. package/src/litellm/key-metadata.test.ts +156 -0
  385. package/src/litellm/key-metadata.ts +74 -0
  386. package/src/litellm/key-operations.ts +184 -0
  387. package/src/litellm/key-rotation.test.ts +110 -0
  388. package/src/litellm/key-scope.test.ts +135 -0
  389. package/src/litellm/key-secret.test.ts +248 -0
  390. package/src/litellm/key-secret.ts +137 -0
  391. package/src/litellm/key-transport.test.ts +166 -0
  392. package/src/litellm/key.test.ts +231 -0
  393. package/src/litellm/key.ts +213 -0
  394. package/src/litellm/mcp-server-adopt.test.ts +86 -0
  395. package/src/litellm/mcp-server-alias.test.ts +184 -0
  396. package/src/litellm/mcp-server-credential.ts +85 -0
  397. package/src/litellm/mcp-server-errors.ts +141 -0
  398. package/src/litellm/mcp-server-exports.test.ts +15 -0
  399. package/src/litellm/mcp-server-form.test.ts +241 -0
  400. package/src/litellm/mcp-server-form.ts +233 -0
  401. package/src/litellm/mcp-server-handlers.test.ts +150 -0
  402. package/src/litellm/mcp-server-locate.ts +66 -0
  403. package/src/litellm/mcp-server-operations.ts +111 -0
  404. package/src/litellm/mcp-server-registry.test.ts +146 -0
  405. package/src/litellm/mcp-server-retype.test.ts +114 -0
  406. package/src/litellm/mcp-server-shadow.test.ts +91 -0
  407. package/src/litellm/mcp-server-shadow.ts +45 -0
  408. package/src/litellm/mcp-server-tools.test.ts +85 -0
  409. package/src/litellm/mcp-server-types.ts +143 -0
  410. package/src/litellm/mcp-server-url.ts +66 -0
  411. package/src/litellm/mcp-server.test.ts +213 -0
  412. package/src/litellm/mcp-server.ts +225 -0
  413. package/src/litellm/model-claim.ts +69 -0
  414. package/src/litellm/model-credential.ts +45 -0
  415. package/src/litellm/model-errors.ts +168 -0
  416. package/src/litellm/model-foreign-row.test.ts +173 -0
  417. package/src/litellm/model-form.test.ts +228 -0
  418. package/src/litellm/model-form.ts +223 -0
  419. package/src/litellm/model-locate.test.ts +128 -0
  420. package/src/litellm/model-locate.ts +67 -0
  421. package/src/litellm/model-operations.test.ts +93 -0
  422. package/src/litellm/model-operations.ts +146 -0
  423. package/src/litellm/model-params-preserve.test.ts +119 -0
  424. package/src/litellm/model-recovery.test.ts +57 -0
  425. package/src/litellm/model-types.ts +112 -0
  426. package/src/litellm/model.test.ts +222 -0
  427. package/src/litellm/model.ts +237 -0
  428. package/src/litellm/policy-attachment-form.ts +103 -0
  429. package/src/litellm/policy-attachment-operations.ts +74 -0
  430. package/src/litellm/policy-attachment-types.ts +48 -0
  431. package/src/litellm/policy-attachment.test.ts +198 -0
  432. package/src/litellm/policy-attachment.ts +178 -0
  433. package/src/litellm/policy-form.ts +122 -0
  434. package/src/litellm/policy-operations.ts +112 -0
  435. package/src/litellm/policy-types.ts +58 -0
  436. package/src/litellm/policy.test.ts +214 -0
  437. package/src/litellm/policy.ts +146 -0
  438. package/src/litellm/providers.ts +24 -3
  439. package/src/litellm/registry-errors.ts +88 -0
  440. package/src/litellm/registry-exports.test.ts +66 -0
  441. package/src/litellm/registry-support.ts +109 -0
  442. package/src/litellm/team-form.ts +140 -0
  443. package/src/litellm/team-members.test.ts +150 -0
  444. package/src/litellm/team-members.ts +58 -0
  445. package/src/litellm/team-operations.ts +90 -0
  446. package/src/litellm/team-permission.ts +159 -0
  447. package/src/litellm/team-read.test.ts +89 -0
  448. package/src/litellm/team-types.ts +106 -0
  449. package/src/litellm/team.test.ts +206 -0
  450. package/src/litellm/team.ts +159 -0
  451. package/src/litellm/tool-policy-form.ts +94 -0
  452. package/src/litellm/tool-policy-operations.ts +58 -0
  453. package/src/litellm/tool-policy-types.ts +48 -0
  454. package/src/litellm/tool-policy.test.ts +172 -0
  455. package/src/litellm/tool-policy.ts +125 -0
  456. package/src/litellm/toolset-form.ts +104 -0
  457. package/src/litellm/toolset-operations.ts +90 -0
  458. package/src/litellm/toolset-types.ts +47 -0
  459. package/src/litellm/toolset.test.ts +198 -0
  460. package/src/litellm/toolset.ts +151 -0
  461. package/src/ownership/ownership.test.ts +33 -1
  462. package/src/ownership/rows.ts +53 -0
  463. package/src/postgres/connection.ts +42 -7
  464. package/src/postgres/database-bigint-serialization.test.ts +1 -0
  465. package/src/postgres/database-refusals.test.ts +2 -2
  466. package/src/postgres/database-sql.ts +36 -9
  467. package/src/postgres/fake-grants-parse.ts +189 -0
  468. package/src/postgres/fake-grants-read.ts +250 -0
  469. package/src/postgres/fake-grants-sql.ts +207 -0
  470. package/src/postgres/fake-grants-write.ts +90 -0
  471. package/src/postgres/fake-role-sql.ts +240 -0
  472. package/src/postgres/fake-schema-semantics.test.ts +36 -0
  473. package/src/postgres/fake-schema-sql.ts +146 -0
  474. package/src/postgres/fake-sql-parse.ts +86 -0
  475. package/src/postgres/fake-sql-quote.ts +36 -0
  476. package/src/postgres/fake-sql.ts +166 -46
  477. package/src/postgres/fixtures/pg-REL_18_6-acl.h.txt +147 -0
  478. package/src/postgres/fixtures/pg-REL_18_6-aclexplode-func.txt +31 -0
  479. package/src/postgres/fixtures/pg-REL_18_6-alter-default-privileges-synopsis.txt +82 -0
  480. package/src/postgres/fixtures/pg-REL_18_6-alter_role.sgml.txt +44 -0
  481. package/src/postgres/fixtures/pg-REL_18_6-create_role.sgml.txt +26 -0
  482. package/src/postgres/fixtures/pg-REL_18_6-grant-synopsis.txt +95 -0
  483. package/src/postgres/fixtures/pg-REL_18_6-pg_attribute.h.txt +24 -0
  484. package/src/postgres/fixtures/pg-REL_18_6-pg_auth_members.h.txt +62 -0
  485. package/src/postgres/fixtures/pg-REL_18_6-pg_authid.h.txt +70 -0
  486. package/src/postgres/fixtures/pg-REL_18_6-pg_class.h.txt +33 -0
  487. package/src/postgres/fixtures/pg-REL_18_6-pg_default_acl.h.txt +81 -0
  488. package/src/postgres/fixtures/pg-REL_18_6-pg_namespace.h.txt +28 -0
  489. package/src/postgres/fixtures/pg-REL_18_6-revoke-synopsis.txt +124 -0
  490. package/src/postgres/grants-acl.test.ts +61 -0
  491. package/src/postgres/grants-attrs.ts +185 -0
  492. package/src/postgres/grants-database.test.ts +158 -0
  493. package/src/postgres/grants-declare.ts +172 -0
  494. package/src/postgres/grants-delete-proof.test.ts +154 -0
  495. package/src/postgres/grants-diff.ts +101 -0
  496. package/src/postgres/grants-errors.ts +215 -0
  497. package/src/postgres/grants-existence-guards.test.ts +113 -0
  498. package/src/postgres/grants-existence.ts +101 -0
  499. package/src/postgres/grants-lifecycle-guards.test.ts +208 -0
  500. package/src/postgres/grants-lifecycle-repair.test.ts +208 -0
  501. package/src/postgres/grants-lifecycle.test.ts +181 -0
  502. package/src/postgres/grants-ops.ts +229 -0
  503. package/src/postgres/grants-owner-revoke.test.ts +121 -0
  504. package/src/postgres/grants-ownership.ts +49 -0
  505. package/src/postgres/grants-plan-collateral.test.ts +202 -0
  506. package/src/postgres/grants-plan-diff.test.ts +204 -0
  507. package/src/postgres/grants-plan-restore.ts +43 -0
  508. package/src/postgres/grants-plan-revocations.test.ts +69 -0
  509. package/src/postgres/grants-plan.test.ts +148 -0
  510. package/src/postgres/grants-plan.ts +245 -0
  511. package/src/postgres/grants-provenance.test.ts +134 -0
  512. package/src/postgres/grants-psql-lifecycle.test.ts +105 -0
  513. package/src/postgres/grants-read-absent.test.ts +91 -0
  514. package/src/postgres/grants-read-defaults.ts +51 -0
  515. package/src/postgres/grants-read.ts +250 -0
  516. package/src/postgres/grants-refusals.test.ts +136 -0
  517. package/src/postgres/grants-refuse.ts +119 -0
  518. package/src/postgres/grants-relkind-wire.test.ts +111 -0
  519. package/src/postgres/grants-repair-plan.test.ts +201 -0
  520. package/src/postgres/grants-sql.test.ts +128 -0
  521. package/src/postgres/grants-sql.ts +144 -0
  522. package/src/postgres/grants-words.ts +34 -0
  523. package/src/postgres/grants.ts +110 -0
  524. package/src/postgres/index.ts +129 -5
  525. package/src/postgres/installed-classifier.ts +36 -0
  526. package/src/postgres/providers.ts +33 -9
  527. package/src/postgres/psql-executor-escaping.test.ts +67 -0
  528. package/src/postgres/psql-executor.test.ts +63 -2
  529. package/src/postgres/psql-executor.ts +74 -34
  530. package/src/postgres/role-adopt.test.ts +98 -0
  531. package/src/postgres/role-attrs.ts +137 -0
  532. package/src/postgres/role-diff.ts +93 -0
  533. package/src/postgres/role-errors.ts +206 -0
  534. package/src/postgres/role-guard.test.ts +60 -0
  535. package/src/postgres/role-identity.test.ts +197 -0
  536. package/src/postgres/role-lifecycle.test.ts +228 -0
  537. package/src/postgres/role-membership-options.test.ts +73 -0
  538. package/src/postgres/role-membership-repair.test.ts +153 -0
  539. package/src/postgres/role-membership-sql.ts +223 -0
  540. package/src/postgres/role-password-ascii.test.ts +53 -0
  541. package/src/postgres/role-password-transports.test.ts +123 -0
  542. package/src/postgres/role-password.test.ts +158 -0
  543. package/src/postgres/role-privilege.test.ts +107 -0
  544. package/src/postgres/role-provenance.test.ts +200 -0
  545. package/src/postgres/role-provider.ts +105 -0
  546. package/src/postgres/role-refusals.test.ts +225 -0
  547. package/src/postgres/role-scram.test.ts +38 -0
  548. package/src/postgres/role-scram.ts +40 -0
  549. package/src/postgres/role-secrets.ts +61 -0
  550. package/src/postgres/role-sql.ts +213 -0
  551. package/src/postgres/role-valid-until.test.ts +68 -0
  552. package/src/postgres/role.ts +226 -0
  553. package/src/postgres/schema-assert.ts +139 -0
  554. package/src/postgres/schema-attrs.ts +71 -0
  555. package/src/postgres/schema-delete-proofs.test.ts +192 -0
  556. package/src/postgres/schema-delete.ts +96 -0
  557. package/src/postgres/schema-diff.ts +44 -0
  558. package/src/postgres/schema-drop-2bp01.test.ts +146 -0
  559. package/src/postgres/schema-errors.ts +209 -0
  560. package/src/postgres/schema-handlers.test.ts +193 -0
  561. package/src/postgres/schema-identity.ts +39 -0
  562. package/src/postgres/schema-lifecycle.test.ts +246 -0
  563. package/src/postgres/schema-race.test.ts +70 -0
  564. package/src/postgres/schema-reconcile.ts +100 -0
  565. package/src/postgres/schema-refusals.test.ts +144 -0
  566. package/src/postgres/schema-socket.test.ts +162 -0
  567. package/src/postgres/schema-sql.ts +130 -0
  568. package/src/postgres/schema-takeover.test.ts +149 -0
  569. package/src/postgres/schema-test-kit.ts +85 -0
  570. package/src/postgres/schema.ts +130 -0
  571. package/src/release/binary-alias.test.ts +3 -3
  572. package/src/release/binary-claims.test.ts +3 -3
  573. package/src/release/binary-directory-umask.test.ts +65 -0
  574. package/src/release/fake-engine.ts +15 -0
  575. package/src/valkey/acl-attrs.ts +98 -0
  576. package/src/valkey/acl-compare.ts +57 -0
  577. package/src/valkey/acl-connection.ts +13 -0
  578. package/src/valkey/acl-delete.test.ts +127 -0
  579. package/src/valkey/acl-form.ts +239 -0
  580. package/src/valkey/acl-managed.ts +13 -0
  581. package/src/valkey/acl-ops.ts +122 -0
  582. package/src/valkey/acl-ownership.test.ts +118 -0
  583. package/src/valkey/acl-prefix.test.ts +38 -0
  584. package/src/valkey/acl-profiles.ts +81 -0
  585. package/src/valkey/acl-reconcile.ts +180 -0
  586. package/src/valkey/acl-reserved.test.ts +69 -0
  587. package/src/valkey/acl-revocation.test.ts +94 -0
  588. package/src/valkey/acl-seat-prefix.test.ts +111 -0
  589. package/src/valkey/acl-validation.test.ts +54 -0
  590. package/src/valkey/acl.test.ts +215 -0
  591. package/src/valkey/acl.ts +169 -0
  592. package/src/valkey/connection-service.ts +46 -0
  593. package/src/valkey/connection.ts +180 -0
  594. package/src/valkey/errors.ts +239 -0
  595. package/src/valkey/fake-acl.ts +128 -0
  596. package/src/valkey/fake-valkey.ts +224 -0
  597. package/src/valkey/handler-test-fixture.ts +43 -0
  598. package/src/valkey/handlers.test.ts +205 -0
  599. package/src/valkey/index.ts +54 -0
  600. package/src/valkey/instance-attrs.ts +48 -0
  601. package/src/valkey/instance-form.ts +104 -0
  602. package/src/valkey/instance.test.ts +108 -0
  603. package/src/valkey/instance.ts +160 -0
  604. package/src/valkey/provider-socket-fixture.ts +71 -0
  605. package/src/valkey/providers.test.ts +129 -0
  606. package/src/valkey/providers.ts +21 -0
  607. package/src/valkey/resp.ts +212 -0
  608. package/src/valkey/transport-bounds.test.ts +150 -0
  609. package/src/valkey/transport-error.ts +37 -0
  610. package/src/valkey/transport.test.ts +158 -0
  611. package/src/valkey/transport.ts +109 -0
  612. package/src/valkey/upstream-bounds.test.ts +14 -0
@@ -0,0 +1,50 @@
1
+ /**
2
+ * The credential of a `LiteLLM.MCPServer`: resolved from the deploying process's environment,
3
+ * held as `Redacted`, sealed, and compared by seal.
4
+ *
5
+ * ★ `Redacted` IS THE IN-MEMORY WRAPPER, NOT THE STORAGE FORMAT. Inside this process the value is a
6
+ * `Redacted<string>`, so a stray `console.log`, `JSON.stringify` or error dump prints
7
+ * `<redacted>`. It is unwrapped in exactly one place: the wire body (`mcp-server-form.ts`). It is
8
+ * never a prop or an attribute — see mcp-server-types.ts for why `Redacted` cannot be either.
9
+ * ⚠️ LITELLM DOES NOT HAND A CREDENTIAL BACK TO COMPARE WITH (UNMEASURED at 1.103.0; the resource
10
+ * never relies on it). So what was last written is remembered as a SEAL, and a plan asks "is the
11
+ * value in my environment the one I wrote". Four answers:
12
+ * - `none` — no credential is declared, nothing to compare.
13
+ * - `unknown` — the variable is unset here, so a plan cannot tell. Never drift: a plan-only
14
+ * environment must not report every credentialed server as changed. (A write that
15
+ * CHANGES `auth_type` is the exception: it demands the value, `requireCredential`.)
16
+ * - `stale` — the variable is set and there is no seal (an adopted row, or one written outside
17
+ * this stack) or the seal disagrees. The declaration is authoritative, so it is written.
18
+ * - `match` — the seal was made from this value.
19
+ * ⚠️ A SEAL OF A GUESSABLE SECRET IS STILL GUESSABLE (secrets/write-only.ts). Use a random token.
20
+ */
21
+ import * as Effect from 'effect/Effect';
22
+ import * as Redacted from 'effect/Redacted';
23
+ import { type Environment } from '../secrets/write-only.ts';
24
+ import { LitellmMcpServerCredentialEnvUnsetError } from './mcp-server-errors.ts';
25
+ import { type McpServerProps } from './mcp-server-types.ts';
26
+ /** What the environment holds for the declared credential. `value` is undefined when unset or empty. */
27
+ export interface ResolvedCredential {
28
+ /** The variable's NAME, for a message. `undefined` when no credential is declared. */
29
+ readonly variable: string | undefined;
30
+ readonly value: Redacted.Redacted<string> | undefined;
31
+ }
32
+ export type CredentialState = 'none' | 'unknown' | 'stale' | 'match';
33
+ /** ⛔ Reads the environment at CALL time, never at module load (docs/credentials.md). */
34
+ export declare const resolveCredential: (props: McpServerProps, env?: Environment) => ResolvedCredential;
35
+ /** `scrypt:<salt>:<digest>` of a credential, for `credentialSeal`. ⛔ Never the value. */
36
+ export declare const sealCredential: (value: Redacted.Redacted<string>) => string;
37
+ export declare const credentialState: (props: McpServerProps, sealed: string, resolved?: ResolvedCredential) => CredentialState;
38
+ /**
39
+ * Fails naming the variable when this write has to send a static credential and the deploying
40
+ * process does not hold it. Passes for a type that carries none.
41
+ *
42
+ * ⛔ A WRITE THAT CHANGES `auth_type` MUST SEND THE CREDENTIAL, exactly like a create. Measured on
43
+ * the live 1.103.0 container (`mcp_server/db.py` lines 1013-1014, `_credential_auth_class`): an
44
+ * edit whose auth class differs from the stored one and that sends no `credentials` key WIPES the
45
+ * stored credential, and each static type is its own class. Sent without the credential, the row
46
+ * would end with none while the seal still matched the old value, so a later deploy with the
47
+ * variable set would be a no-op and the server would stay unauthenticated until the secret rotated.
48
+ */
49
+ export declare const requireCredential: (props: McpServerProps, credential: ResolvedCredential) => Effect.Effect<void, never, never> | Effect.Effect<never, LitellmMcpServerCredentialEnvUnsetError, never>;
50
+ //# sourceMappingURL=mcp-server-credential.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server-credential.d.ts","sourceRoot":"","sources":["../../src/litellm/mcp-server-credential.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,KAAK,WAAW,EAAiC,MAAM,0BAA0B,CAAC;AAC3F,OAAO,EAAE,uCAAuC,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,KAAK,cAAc,EAAoB,MAAM,uBAAuB,CAAC;AAE9E,wGAAwG;AACxG,MAAM,WAAW,kBAAkB;IACjC,sFAAsF;IACtF,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;CACvD;AAED,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;AAErE,wFAAwF;AACxF,eAAO,MAAM,iBAAiB,UACrB,cAAc,QAChB,WAAW,KACf,kBAQF,CAAC;AAIF,yFAAyF;AACzF,eAAO,MAAM,cAAc,UAAW,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAG,MAA+B,CAAC;AAElG,eAAO,MAAM,eAAe,UACnB,cAAc,UACb,MAAM,aACJ,kBAAkB,KAC3B,eAKF,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB,UAAW,cAAc,cAAc,kBAAkB,6GAQtE,CAAC"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * The typed refusals `LiteLLM.MCPServer` raises on top of `@distilled.cloud/litellm`'s own SDK errors.
3
+ *
4
+ * ⛔ NO MESSAGE HERE MAY CARRY A CREDENTIAL. The only things named are the server's name, ids the
5
+ * proxy already lists, field names, and the NAME of an environment variable — never a value, and
6
+ * never a URL (a URL can hold a token; `mcp-server-form.ts` refuses those and redacts the read).
7
+ */
8
+ import type * as mcp from '@distilled.cloud/litellm/mcp_management';
9
+ declare const LitellmMcpServerInvalidError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
10
+ readonly _tag: "LitellmMcpServerInvalidError";
11
+ } & Readonly<A>;
12
+ /** A declaration the resource refuses before any request: a combination nobody meant. */
13
+ export declare class LitellmMcpServerInvalidError extends LitellmMcpServerInvalidError_base<{
14
+ readonly serverName: string;
15
+ readonly problem: string;
16
+ }> {
17
+ get message(): string;
18
+ }
19
+ declare const LitellmMcpServerCredentialEnvUnsetError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
20
+ readonly _tag: "LitellmMcpServerCredentialEnvUnsetError";
21
+ } & Readonly<A>;
22
+ /**
23
+ * A write must send the credential and the deploying process does not have it. An empty variable
24
+ * counts as unset (secrets/write-only.ts: a failed renderer writes `NAME=`, and sending `''` would
25
+ * store an empty credential and report a successful deploy).
26
+ */
27
+ export declare class LitellmMcpServerCredentialEnvUnsetError extends LitellmMcpServerCredentialEnvUnsetError_base<{
28
+ readonly serverName: string;
29
+ readonly variable: string;
30
+ }> {
31
+ get message(): string;
32
+ }
33
+ declare const LitellmMcpServerAmbiguousNameError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
34
+ readonly _tag: "LitellmMcpServerAmbiguousNameError";
35
+ } & Readonly<A>;
36
+ /**
37
+ * More than one live row carries the declared `server_name`, so adopt-by-name cannot say which one
38
+ * is meant. LiteLLM does not make the name unique (unmeasured on 1.103.0). Declare `serverId` to
39
+ * pick one — nothing is adopted, updated or deleted on a guess.
40
+ */
41
+ export declare class LitellmMcpServerAmbiguousNameError extends LitellmMcpServerAmbiguousNameError_base<{
42
+ readonly serverName: string;
43
+ readonly serverIds: readonly string[];
44
+ }> {
45
+ get message(): string;
46
+ }
47
+ declare const LitellmMcpServerUnreadableError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
48
+ readonly _tag: "LitellmMcpServerUnreadableError";
49
+ } & Readonly<A>;
50
+ /** `GET /v1/mcp/server` answered something that is not a list of servers. */
51
+ export declare class LitellmMcpServerUnreadableError extends LitellmMcpServerUnreadableError_base<{
52
+ readonly reason: string;
53
+ }> {
54
+ get message(): string;
55
+ }
56
+ declare const LitellmMcpServerAbsentAfterWriteError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
57
+ readonly _tag: "LitellmMcpServerAbsentAfterWriteError";
58
+ } & Readonly<A>;
59
+ /**
60
+ * A create or edit returned no error, yet the row is absent on the read back: neither in the list
61
+ * NOR in a database-backed read by id (the list alone is the registry, which can lag a commit).
62
+ */
63
+ export declare class LitellmMcpServerAbsentAfterWriteError extends LitellmMcpServerAbsentAfterWriteError_base<{
64
+ readonly serverName: string;
65
+ readonly serverId: string;
66
+ }> {
67
+ get message(): string;
68
+ }
69
+ declare const LitellmMcpServerNotConvergedError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
70
+ readonly _tag: "LitellmMcpServerNotConvergedError";
71
+ } & Readonly<A>;
72
+ /**
73
+ * The write returned no error but the row still differs from the declaration. The edit route may
74
+ * merge with `exclude_none` or a truthiness check (an empty list or a `false` never lands); the
75
+ * read back says so instead of reporting a converged row. Unmeasured on 1.103.0.
76
+ */
77
+ export declare class LitellmMcpServerNotConvergedError extends LitellmMcpServerNotConvergedError_base<{
78
+ readonly serverName: string;
79
+ readonly serverId: string;
80
+ readonly fields: readonly string[];
81
+ }> {
82
+ get message(): string;
83
+ }
84
+ declare const LitellmMcpServerDescriptionShadowedError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
85
+ readonly _tag: "LitellmMcpServerDescriptionShadowedError";
86
+ } & Readonly<A>;
87
+ /**
88
+ * The declared `description` cannot be applied: the live row's `mcp_info` has a `description` key
89
+ * (even a null one), and LiteLLM answers that in preference to the column, which is all this
90
+ * resource writes (`mcp_info` is not modelled). Raised BEFORE any write, so the row is untouched.
91
+ * Nothing here names the text itself: a description is free text a person wrote.
92
+ */
93
+ export declare class LitellmMcpServerDescriptionShadowedError extends LitellmMcpServerDescriptionShadowedError_base<{
94
+ readonly serverName: string;
95
+ readonly serverId: string;
96
+ }> {
97
+ get message(): string;
98
+ }
99
+ export type McpServerError = mcp.AddMcpServerV1McpServerPostError | mcp.EditMcpServerV1McpServerPutError | mcp.FetchAllMcpServersV1McpServerGetError | mcp.FetchMcpServerV1McpServerServerIdGetError | mcp.RemoveMcpServerV1McpServerServerIdDeleteError | LitellmMcpServerInvalidError | LitellmMcpServerCredentialEnvUnsetError | LitellmMcpServerAmbiguousNameError | LitellmMcpServerUnreadableError | LitellmMcpServerAbsentAfterWriteError | LitellmMcpServerNotConvergedError | LitellmMcpServerDescriptionShadowedError;
100
+ export {};
101
+ //# sourceMappingURL=mcp-server-errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server-errors.d.ts","sourceRoot":"","sources":["../../src/litellm/mcp-server-errors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,KAAK,GAAG,MAAM,yCAAyC,CAAC;;;;AAGpE,yFAAyF;AACzF,qBAAa,4BAA6B,SAAQ,kCAAiD;IACjG,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;IACA,IAAa,OAAO,IAAI,MAAM,CAE7B;CACF;;;;AAED;;;;GAIG;AACH,qBAAa,uCAAwC,SAAQ,6CAE3D;IACA,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B,CAAC;IACA,IAAa,OAAO,IAAI,MAAM,CAK7B;CACF;;;;AAED;;;;GAIG;AACH,qBAAa,kCAAmC,SAAQ,wCAEtD;IACA,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC,CAAC;IACA,IAAa,OAAO,IAAI,MAAM,CAK7B;CACF;;;;AAED,6EAA6E;AAC7E,qBAAa,+BAAgC,SAAQ,qCAEnD;IACA,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;IACA,IAAa,OAAO,IAAI,MAAM,CAE7B;CACF;;;;AAED;;;GAGG;AACH,qBAAa,qCAAsC,SAAQ,2CAEzD;IACA,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B,CAAC;IACA,IAAa,OAAO,IAAI,MAAM,CAK7B;CACF;;;;AAED;;;;GAIG;AACH,qBAAa,iCAAkC,SAAQ,uCAErD;IACA,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC,CAAC;IACA,IAAa,OAAO,IAAI,MAAM,CAK7B;CACF;;;;AAED;;;;;GAKG;AACH,qBAAa,wCAAyC,SAAQ,8CAE5D;IACA,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B,CAAC;IACA,IAAa,OAAO,IAAI,MAAM,CAM7B;CACF;AAED,MAAM,MAAM,cAAc,GACtB,GAAG,CAAC,gCAAgC,GACpC,GAAG,CAAC,gCAAgC,GACpC,GAAG,CAAC,qCAAqC,GACzC,GAAG,CAAC,yCAAyC,GAC7C,GAAG,CAAC,6CAA6C,GACjD,4BAA4B,GAC5B,uCAAuC,GACvC,kCAAkC,GAClC,+BAA+B,GAC/B,qCAAqC,GACrC,iCAAiC,GACjC,wCAAwC,CAAC"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Refusals, wire bodies, the read shape and the comparison for `LiteLLM.MCPServer`, testable
3
+ * without a server. The URL rules are in `mcp-server-url.ts`.
4
+ *
5
+ * ⛔ TWO ACCESS GRANTS ARE ALWAYS COMPARED, WITH A CLOSED DEFAULT. `allow_all_keys` (default
6
+ * false) and `mcp_access_groups` (default empty) decide which keys can reach a server, so a live
7
+ * value that differs from the declaration is corrected rather than left as it is.
8
+ * ⛔ `allowed_tools` IS NOT ONE OF THEM: it is compared and sent ONLY WHEN DECLARED, like `alias`.
9
+ * An empty list is the OPEN state, not a closed one. Measured on the live 1.103.0 container:
10
+ * `server_applies_tool_allowlist` (`mcp_server/utils.py`) is "the `mcp_info` enforce flag, or a
11
+ * non-empty `allowed_tools`", and `filter_tools_by_allowed_tools` (`server.py` lines 1692-1698)
12
+ * returns every tool when it is false. This resource does not model `mcp_info`, so a default of
13
+ * `[]` would switch a live whitelist OFF the moment a row is adopted without restating it, and an
14
+ * adopted row is planned `adopted` (Alchemy's adoption branch), so no `update` would show. An
15
+ * undeclared list is left exactly as the proxy holds it.
16
+ * ★ Descriptive fields (`alias`, `description`) are also compared only when declared, so adopting a
17
+ * row never clears text a person wrote. That holds on the wire too, for `alias` only because an
18
+ * update RE-SENDS the live alias whenever it sends a `serverName` (`identityOnUpdate` below).
19
+ * ⚠️ EVERY UPDATE SENDS THE FULL MANAGED SET, NOT ONLY THE FIELDS THAT DIFFER, bar the two name
20
+ * fields, which `identityOnUpdate` sends selectively because LiteLLM defaults an alias. The edit
21
+ * route is a PARTIAL update at 1.103.0 (measured by reading the live container's
22
+ * `mcp_server/db.py`, the update function's `exclude_unset=True`: fields the caller did not send
23
+ * keep their stored value; no live call was made), so a field this resource does not send is left
24
+ * alone. Sending the whole managed set is still correct, and reconcile reads back and fails loudly
25
+ * if a declared field did not land (`LitellmMcpServerNotConvergedError`). Whether a `false` or an
26
+ * empty list is written rather than skipped stays UNMEASURED, which is what the read back guards.
27
+ */
28
+ import type * as mcp from '@distilled.cloud/litellm/mcp_management';
29
+ import * as Redacted from 'effect/Redacted';
30
+ import { type McpServerAttributes, type McpServerProps } from './mcp-server-types.ts';
31
+ /** The first reason a declaration is refused, or `undefined`. Pure: no environment, no server. */
32
+ export declare const firstProblem: (props: McpServerProps) => string | undefined;
33
+ /**
34
+ * One row of `GET /v1/mcp/server`, or of the by-id read, as attributes.
35
+ *
36
+ * ⚠️ THE LIST'S `description` IS `mcp_info.description` WHEN THAT EXISTS, else the column (measured
37
+ * on the live 1.103.0 container: `_build_mcp_server_table` and, on registration,
38
+ * `build_mcp_server_from_table`, which copies the column into `mcp_info` only when `mcp_info`
39
+ * has none). This resource writes only the column, so a declared description cannot be read back
40
+ * from a row whose `mcp_info` holds another: reconcile refuses that before it writes.
41
+ *
42
+ * ⛔ `credentials`, `static_headers`, `env`, `env_vars` and every other field are deliberately NOT
43
+ * copied: what LiteLLM stores as a credential stays on the proxy. The `credentialSeal` is filled
44
+ * in by the caller from the previous state; a row cannot supply one.
45
+ */
46
+ export declare const toAttributes: (row: mcp.LiteLLMMCPServerTable) => McpServerAttributes;
47
+ /** Wire names of the fields where the live row and the declaration disagree. */
48
+ export declare const differing: (live: McpServerAttributes, props: McpServerProps) => readonly string[];
49
+ export declare const createBody: (props: McpServerProps, serverId: string, credential: Redacted.Redacted<string> | undefined) => mcp.AddMcpServerV1McpServerPostRequest;
50
+ /**
51
+ * `clearCredentials` sends an explicit `credentials: null`, for a server moving off a static auth
52
+ * type. Whether LiteLLM clears its stored credential on `null` or ignores it (an `exclude_none`
53
+ * merge) is UNMEASURED at 1.103.0; either way nothing is sent that could set a wrong one.
54
+ */
55
+ export declare const updateBody: (props: McpServerProps, serverId: string, credential: Redacted.Redacted<string> | undefined, clearCredentials: boolean, live: McpServerAttributes) => mcp.EditMcpServerV1McpServerPutRequest;
56
+ //# sourceMappingURL=mcp-server-form.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server-form.d.ts","sourceRoot":"","sources":["../../src/litellm/mcp-server-form.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,KAAK,KAAK,GAAG,MAAM,yCAAyC,CAAC;AACpE,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,cAAc,EAIpB,MAAM,uBAAuB,CAAC;AA+B/B,kGAAkG;AAClG,eAAO,MAAM,YAAY,UAAW,cAAc,KAAG,MAAM,GAAG,SAsC7D,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,YAAY,QAAS,GAAG,CAAC,qBAAqB,KAAG,mBAY5D,CAAC;AAKH,gFAAgF;AAChF,eAAO,MAAM,SAAS,SAAU,mBAAmB,SAAS,cAAc,KAAG,SAAS,MAAM,EAgB3F,CAAC;AAiDF,eAAO,MAAM,UAAU,UACd,cAAc,YACX,MAAM,cACJ,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,SAAS,KAChD,GAAG,CAAC,kCAKL,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,UAAU,UACd,cAAc,YACX,MAAM,cACJ,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,SAAS,oBAC/B,OAAO,QACnB,mBAAmB,KACxB,GAAG,CAAC,kCAKL,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Which live row a `LiteLLM.MCPServer` declaration means, and which id a new row would ask for.
3
+ *
4
+ * ⛔ THE LIST DECIDES FIRST, THE DATABASE SECOND. `GET /v1/mcp/server` is LiteLLM's in-memory
5
+ * registry, not the table (mcp-server-operations.ts says how a committed row can be missing from
6
+ * it). A row the list does not show is therefore looked for BY ID in the database, with the id
7
+ * this declaration would use. Without that second read, a row created a moment ago whose
8
+ * registry refresh failed would be POSTed again: the id is deterministic, LiteLLM answers 400
9
+ * "already exists", and the resource would be wedged on a row it can neither see nor adopt.
10
+ * ⚠️ ADOPT-BY-NAME NEEDS THE LIST: a name cannot be read from the table by this route family. A row
11
+ * the registry lacks is adoptable only by declaring its `serverId`.
12
+ */
13
+ import type * as mcp from '@distilled.cloud/litellm/mcp_management';
14
+ import * as Effect from 'effect/Effect';
15
+ import { LitellmMcpServerAmbiguousNameError } from './mcp-server-errors.ts';
16
+ import type { McpServerAttributes, McpServerProps } from './mcp-server-types.ts';
17
+ /**
18
+ * The live row among the LISTED ones, or `undefined`. A pinned id (from state, else declared) wins;
19
+ * otherwise the name decides, and an ambiguous name is refused.
20
+ */
21
+ export declare const locate: (rows: readonly mcp.LiteLLMMCPServerTable[], props: McpServerProps, output: McpServerAttributes | undefined) => Effect.Effect<never, LitellmMcpServerAmbiguousNameError, never> | Effect.Effect<mcp.LiteLLMMCPServerTable | undefined, never, never>;
22
+ /** The id a create asks for: the recorded one, else the declared one, else a deterministic name. */
23
+ export declare const wantedId: (id: string, instanceId: string, props: McpServerProps, output: McpServerAttributes | undefined) => Effect.Effect<string, never, import("alchemy").InstanceId | import("alchemy").Stack | import("alchemy").Stage>;
24
+ /** The live row this declaration means, from the list, else from the table by the id it would use. */
25
+ export declare const findLive: (id: string, instanceId: string, props: McpServerProps, output: McpServerAttributes | undefined) => Effect.Effect<mcp.LiteLLMMCPServerTable | undefined, import("@distilled.cloud/caddy").BadGateway | import("@distilled.cloud/caddy").ConfigError | import("@distilled.cloud/caddy").GatewayTimeout | import("effect/unstable/http/HttpClientError").HttpClientError | import("@distilled.cloud/caddy").InternalServerError | LitellmMcpServerAmbiguousNameError | import("./mcp-server-errors.ts").LitellmMcpServerUnreadableError | import("@distilled.cloud/litellm/Errors").LitellmParseError | import("@distilled.cloud/caddy").ServiceUnavailable | import("@distilled.cloud/caddy").TooManyRequests | import("@distilled.cloud/caddy").Unauthorized | import("@distilled.cloud/litellm/Errors").UnknownLitellmError | mcp.UnprocessableEntity, import("alchemy").InstanceId | import("alchemy").Stack | import("alchemy").Stage | mcp.LitellmOpContext>;
26
+ //# sourceMappingURL=mcp-server-locate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server-locate.d.ts","sourceRoot":"","sources":["../../src/litellm/mcp-server-locate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,KAAK,GAAG,MAAM,yCAAyC,CAAC;AAEpE,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,kCAAkC,EAAE,MAAM,wBAAwB,CAAC;AAE5E,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEjF;;;GAGG;AACH,eAAO,MAAM,MAAM,SACX,SAAS,GAAG,CAAC,qBAAqB,EAAE,SACnC,cAAc,UACb,mBAAmB,GAAG,SAAS,yIAaxC,CAAC;AAEF,oGAAoG;AACpG,eAAO,MAAM,QAAQ,OACf,MAAM,cACE,MAAM,SACX,cAAc,UACb,mBAAmB,GAAG,SAAS,mHAMqC,CAAC;AAE/E,sGAAsG;AACtG,eAAO,MAAM,QAAQ,OACf,MAAM,cACE,MAAM,SACX,cAAc,UACb,mBAAmB,GAAG,SAAS,i0BAMrC,CAAC"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * The five LiteLLM `/v1/mcp/server*` calls `LiteLLM.MCPServer` uses, through the SDK's typed
3
+ * operations in `@distilled.cloud/litellm/mcp_management` (LiteLLM 1.103.0):
4
+ *
5
+ * list `fetchAllMcpServersV1McpServerGet` GET /v1/mcp/server
6
+ * read `fetchMcpServerV1McpServerServerIdGet` GET /v1/mcp/server/{server_id}
7
+ * create `addMcpServerV1McpServerPost` POST /v1/mcp/server
8
+ * update `editMcpServerV1McpServerPut` PUT /v1/mcp/server
9
+ * delete `removeMcpServerV1McpServerServerIdDelete` DELETE /v1/mcp/server/{server_id}
10
+ *
11
+ * ⛔ THE LIST IS NOT THE TABLE. Measured 2026-09-29 by reading the live 1.103.0 container:
12
+ * `GET /v1/mcp/server` answers `global_mcp_server_manager`'s IN-MEMORY REGISTRY
13
+ * (`_resolve_accessible_mcp_servers`), not `LiteLLM_MCPServerTable`. `reload_servers_from_database`
14
+ * loads only rows whose approval status is null, active or approved, and skips a row whose build
15
+ * throws; the registry is narrowed again by the caller's key (`object_permission.mcp_servers`); and
16
+ * `add_mcp_server` only LOGS a failed registry refresh after the row is committed. So a row that
17
+ * is absent from the list can be live in the database. The list is right for adopt-by-name, and
18
+ * wrong as proof of absence. The database is read by ID (`readMcpServer`): `fetch_mcp_server`
19
+ * asks `get_mcp_server` (the table) first and answers 404 only when the table, the registry and
20
+ * a name lookup all miss.
21
+ * ⚠️ THE BY-ID READ HAS SIDE EFFECTS, so it is used only where the list cannot decide: it registers
22
+ * the row in the registry (`add_server`) and runs a health check against the upstream server.
23
+ * ⛔ NO MESSAGE SNIFFING. `mcp_management` declares only `UnprocessableEntity` beyond the shared
24
+ * errors — the distilled `patches/` that type `BadRequest`/`NotFound` cover five other admin tags
25
+ * (budget, key, team, internal_user, model), not this one. A 404 from these routes still decodes
26
+ * at run time as the SDK's `NotFound` class (core's `HTTP_STATUS_MAP`), invisible to the type
27
+ * checker; `readMcpServer` tests that class with `instanceof` and nothing else, and a REAL READ
28
+ * decides (`deleteMcpServer`), the way `budget-operations.ts` and pass-through `operations.ts` do.
29
+ * The typed fix is a distilled patch for this tag, which belongs in the distilled clone.
30
+ * ⚠️ Unlike pass-through endpoints, each server is its own DB row: no semaphore.
31
+ */
32
+ import * as mcp from '@distilled.cloud/litellm/mcp_management';
33
+ import * as Effect from 'effect/Effect';
34
+ import { type LitellmOpContext } from './operations.ts';
35
+ import { LitellmMcpServerUnreadableError } from './mcp-server-errors.ts';
36
+ /** ⚠️ The REGISTRY as the caller may see it, not the table: see the file header. */
37
+ export declare const listMcpServers: () => Effect.Effect<readonly mcp.LiteLLMMCPServerTable[], mcp.FetchAllMcpServersV1McpServerGetError | LitellmMcpServerUnreadableError, LitellmOpContext>;
38
+ /**
39
+ * One row read BY ID, DATABASE FIRST, or `undefined` when the proxy has no such row.
40
+ *
41
+ * ★ THE ROW MUST CARRY THE ID ASKED FOR. When the table has no row, `fetch_mcp_server` falls back to
42
+ * the registry and then to a lookup by NAME or alias, so an id that happens to be another server's
43
+ * name answers THAT server. A row with another id is "no such row" here.
44
+ * ⛔ ANY FAILURE OTHER THAN `NotFound` PROPAGATES: a 401, a 500 or a dead network says nothing about
45
+ * whether the row exists, and must never be read as absence.
46
+ */
47
+ export declare const readMcpServer: (serverId: string) => Effect.Effect<mcp.LiteLLMMCPServerTable | undefined, mcp.FetchMcpServerV1McpServerServerIdGetError, import("@distilled.cloud/litellm/Credentials").Credentials>;
48
+ /** Answers the created row, which carries the `server_id` LiteLLM actually used. */
49
+ export declare const createMcpServer: (body: mcp.AddMcpServerV1McpServerPostRequest) => Effect.Effect<mcp.LiteLLMMCPServerTable, mcp.AddMcpServerV1McpServerPostError, import("@distilled.cloud/litellm/Credentials").Credentials>;
50
+ export declare const updateMcpServer: (body: mcp.EditMcpServerV1McpServerPutRequest) => Effect.Effect<void, mcp.EditMcpServerV1McpServerPutError, import("@distilled.cloud/litellm/Credentials").Credentials>;
51
+ /**
52
+ * Idempotent BY THIS FUNCTION, not by the vendor. The DELETE is ALWAYS SENT: it acts on the table
53
+ * (`delete_mcp_server` answers 404 for a missing row), so a row the list does not show, because the
54
+ * registry dropped it, is still removed. A list that skipped the call for an unlisted id would drop
55
+ * Alchemy's state for a row that stays live in the database.
56
+ *
57
+ * If the DELETE fails, the failure is swallowed only when a DATABASE-BACKED read by id says the row is
58
+ * absent (`readMcpServer`: a concurrent removal, or a row already gone). A row that is still there,
59
+ * or a read that cannot say, re-raises the ORIGINAL error — so a delete refused for lack of rights,
60
+ * which leaves the row live, is never reported as done.
61
+ */
62
+ export declare const deleteMcpServer: (serverId: string) => Effect.Effect<void, mcp.RemoveMcpServerV1McpServerServerIdDeleteError, import("@distilled.cloud/litellm/Credentials").Credentials>;
63
+ //# sourceMappingURL=mcp-server-operations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server-operations.d.ts","sourceRoot":"","sources":["../../src/litellm/mcp-server-operations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,KAAK,GAAG,MAAM,yCAAyC,CAAC;AAE/D,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,KAAK,gBAAgB,EAAgB,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,+BAA+B,EAAE,MAAM,wBAAwB,CAAC;AAOzE,oFAAoF;AACpF,eAAO,MAAM,cAAc,QAAO,MAAM,CAAC,MAAM,CAC7C,SAAS,GAAG,CAAC,qBAAqB,EAAE,EACpC,GAAG,CAAC,qCAAqC,GAAG,+BAA+B,EAC3E,gBAAgB,CAkBf,CAAC;AAEJ;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,aAAc,MAAM,oKAM3C,CAAC;AAEJ,oFAAoF;AACpF,eAAO,MAAM,eAAe,SAAU,GAAG,CAAC,kCAAkC,+IACvB,CAAC;AAEtD,eAAO,MAAM,eAAe,SAAU,GAAG,CAAC,kCAAkC,0HACH,CAAC;AAE1E;;;;;;;;;;GAUG;AACH,eAAO,MAAM,eAAe,aAAc,MAAM,uIAS7C,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * The one description this resource cannot write: a row whose `mcp_info` already has a
3
+ * `description` key.
4
+ *
5
+ * ⛔ MEASURED 2026-09-29 on the live 1.103.0 container and its database (read only): the list route
6
+ * builds each row's `description` from `mcp_info.get("description")` (`_build_mcp_server_table`),
7
+ * and registering a row copies the `description` COLUMN into `mcp_info` only when the KEY IS ABSENT
8
+ * from `mcp_info` (`build_mcp_server_from_table`, `"description" not in mcp_info`). This resource
9
+ * writes the column and models no `mcp_info`, so on a row whose `mcp_info` has the key, a declared
10
+ * description lands in the column and is never read back, and every deploy would fail
11
+ * `LitellmMcpServerNotConvergedError` after the write. Live: 2 of the 9 rows in
12
+ * `LiteLLM_MCPServerTable` have the key: `linear` (a string, with the same length as its column)
13
+ * and `Memos_CF` (a JSON null, with a NULL column). A key holding null shadows the column too.
14
+ * ★ THE ROW IS READ BY ID FROM THE TABLE, because the list's `mcp_info` already has the column
15
+ * folded in: a description in it could be either, and only the table row tells them apart.
16
+ * ⚠️ Not `mcp_info` merging: a sent `mcp_info` REPLACES the stored one, and the list's copy carries
17
+ * fields the proxy adds on the way out (`is_public`), which would be persisted.
18
+ */
19
+ import * as Effect from 'effect/Effect';
20
+ import { LitellmMcpServerDescriptionShadowedError } from './mcp-server-errors.ts';
21
+ import type { McpServerProps } from './mcp-server-types.ts';
22
+ /** Fails BEFORE any write when the declared description would be hidden by the row's `mcp_info`. */
23
+ export declare const refuseShadowedDescription: (props: McpServerProps, serverId: string) => Effect.Effect<void, LitellmMcpServerDescriptionShadowedError | import("@distilled.cloud/litellm/mcp_management").FetchMcpServerV1McpServerServerIdGetError, import("@distilled.cloud/litellm/Credentials").Credentials>;
24
+ //# sourceMappingURL=mcp-server-shadow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server-shadow.d.ts","sourceRoot":"","sources":["../../src/litellm/mcp-server-shadow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,wCAAwC,EAAE,MAAM,wBAAwB,CAAC;AAElF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,oGAAoG;AACpG,eAAO,MAAM,yBAAyB,UAAW,cAAc,YAAY,MAAM,4NAoB1E,CAAC"}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * What a `LiteLLM.MCPServer` declares (props) and what is remembered about it (attributes).
3
+ *
4
+ * ⛔ NEITHER TYPE HOLDS A CREDENTIAL (S25). Alchemy persists props AND attributes in its state
5
+ * store, and it does not encrypt them: `StateEncoding.ts` TAGS a `Redacted` value and writes the
6
+ * inner value beside the tag (measured on alchemy 2.0.0-beta.79, `State/StateEncoding.ts` line
7
+ * 87-89). So a `Redacted<string>` prop would still land in state as plaintext. The credential is
8
+ * declared as `{ fromEnv: 'NAME' }`; the NAME is what is stored, and the value lives only in the
9
+ * deploying process (wrapped in `Redacted` there, `mcp-server-credential.ts`) and on the wire.
10
+ * ★ WHAT LITELLM STORES IS NEVER MIRRORED BACK. The list route carries `credentials`,
11
+ * `static_headers`, `env` and `env_vars`; `toAttributes` (mcp-server-form.ts) copies none of them.
12
+ * ⚠️ NOT MODELLED, on purpose: `stdio` (it runs a command on the proxy host), the OAuth client
13
+ * registration fields, `static_headers`/`extra_headers`, `mcp_info`, tool renames, BYOK and
14
+ * the AWS / token-exchange auth types (each needs credential fields this resource does not
15
+ * model). A row that uses them can still be adopted; what is not declared is left alone.
16
+ * ⚠️ NO `teams`. The create and edit requests of `@distilled.cloud/litellm` 0.3.0 (LiteLLM 1.103.0)
17
+ * have no team field; `teams` exists only on the row a read returns. Team access is granted on
18
+ * the team side (its `object_permission`), which is a different resource.
19
+ */
20
+ import type { FromEnv } from '../secrets/write-only.ts';
21
+ /** `stdio` is refused by the type: it would run a declared command on the proxy host. */
22
+ export type McpTransport = 'sse' | 'http';
23
+ /**
24
+ * Auth types that carry ONE static credential (`credentials.auth_value` on the wire). Which header
25
+ * each one becomes is LiteLLM's, not this package's (unmeasured here).
26
+ */
27
+ export type McpStaticAuthType = 'api_key' | 'bearer_token' | 'basic' | 'authorization' | 'token';
28
+ /** `oauth2` is a per-user flow LiteLLM runs itself: no static credential is declared for it. */
29
+ export type McpAuthType = 'none' | 'oauth2' | McpStaticAuthType;
30
+ export interface McpServerProps {
31
+ /**
32
+ * The server's name, and the way an existing row is ADOPTED: the live row whose `server_name`
33
+ * equals it. Changing it is an update of the same row, never a replace. The update re-sends the
34
+ * live alias, so the tool prefix stays. Declare `alias` to change the prefix.
35
+ */
36
+ readonly serverName: string;
37
+ /**
38
+ * Pins the live row (adopts by id) or chooses the id a create asks for. Without it, a live row
39
+ * is found by `serverName` and a new one gets a deterministic physical name. ⛔ A DIFFERENT
40
+ * DECLARED ID IS A REPLACE (create-first, so the old row is only removed by an opt-in
41
+ * `RemovalPolicy.destroy()`).
42
+ */
43
+ readonly serverId?: string;
44
+ /**
45
+ * The tool prefix LiteLLM shows (`<alias>-<tool>`). Compared only when declared, and an
46
+ * undeclared live alias is KEPT: an update that sends a `serverName` with no alias would make
47
+ * LiteLLM rewrite the alias to the name, so the live one is re-sent (mcp-server-form.ts).
48
+ * Declare this to change the prefix; a changed `serverName` does not. ⛔ Must match
49
+ * `^[A-Za-z0-9._]{1,128}$` (same rule as `serverName`): LiteLLM 1.103 runs `validate_tool_name`
50
+ * on it, so a space, `/`, `:`, `@` or more than 128 characters is a 400 only at apply.
51
+ */
52
+ readonly alias?: string;
53
+ /**
54
+ * The upstream MCP endpoint, `http` or `https`. ⛔ Refused if it carries userinfo, a fragment or
55
+ * a secret-looking query parameter (`?token=…`): the URL is a prop, so it lands in state. Declare
56
+ * the credential as `authValue` instead.
57
+ */
58
+ readonly url: string;
59
+ /** `sse` or `http`. Required: LiteLLM's own default is not this resource's to fix silently. */
60
+ readonly transport: McpTransport;
61
+ /** Required: a default would silently choose "no authentication". */
62
+ readonly authType: McpAuthType;
63
+ /**
64
+ * The static credential for a `McpStaticAuthType`, by the NAME of the environment variable that
65
+ * holds it. Required for those types and refused for the others.
66
+ */
67
+ readonly authValue?: FromEnv;
68
+ /**
69
+ * Compared only when declared. ⚠️ A blank one (`''` or whitespace) is refused: LiteLLM copies the
70
+ * column into `mcp_info` only when the value is truthy, so it would never converge. LiteLLM's
71
+ * list answers `mcp_info.description` in preference to this column, and this resource writes only
72
+ * the column. A row whose `mcp_info` has a `description` key (even a null one) that differs from
73
+ * the declaration is refused (`LitellmMcpServerDescriptionShadowedError`) rather than written and
74
+ * failed on the read back.
75
+ */
76
+ readonly description?: string;
77
+ /**
78
+ * Whether EVERY virtual key may call this server. Always compared, default `false`: it is an
79
+ * access grant, so an adopted row that has it on is corrected, never left open silently.
80
+ */
81
+ readonly allowAllKeys?: boolean;
82
+ /**
83
+ * The tools a caller may use, compared as a set. ⛔ COMPARED AND SENT ONLY WHEN DECLARED: omitted
84
+ * leaves the live whitelist exactly as it is. ⚠️ `[]` is NOT "closed" — at 1.103.0 an empty list
85
+ * turns the whitelist off (every tool is returned) unless the row's `mcp_info` carries the enforce
86
+ * flag, which this resource does not model. Declare `[]` only to mean "no restriction".
87
+ */
88
+ readonly allowedTools?: readonly string[];
89
+ /** Access groups this server belongs to. Always compared (as a set). */
90
+ readonly mcpAccessGroups?: readonly string[];
91
+ }
92
+ export interface McpServerAttributes {
93
+ readonly serverId: string;
94
+ readonly serverName: string | null;
95
+ readonly alias: string | null;
96
+ /** ⛔ REDACTED on the way in (userinfo and secret-looking query values become `REDACTED`). */
97
+ readonly url: string | null;
98
+ readonly transport: string;
99
+ /** `none` when the live row carries no auth type. */
100
+ readonly authType: string;
101
+ readonly description: string | null;
102
+ readonly allowAllKeys: boolean;
103
+ readonly allowedTools: readonly string[];
104
+ readonly mcpAccessGroups: readonly string[];
105
+ /**
106
+ * `scrypt:<salt>:<digest>` of the credential last written, or `''`. ⛔ Never the value. LiteLLM
107
+ * does not return a credential to compare with, so this is how a plan notices a rotated one
108
+ * (secrets/write-only.ts). It is carried from the previous state, never read from the row.
109
+ */
110
+ readonly credentialSeal: string;
111
+ }
112
+ /** Whether a value is not a string with something in it. Takes `unknown`: a declaration can say anything. */
113
+ export declare const isBlank: (value: unknown) => boolean;
114
+ /** Whether an auth type carries one static credential. Takes a string: a live row can say anything. */
115
+ export declare const isStaticAuthType: (authType: string) => boolean;
116
+ export declare const AUTH_TYPES: readonly McpAuthType[];
117
+ export declare const TRANSPORTS: readonly McpTransport[];
118
+ //# sourceMappingURL=mcp-server-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server-types.d.ts","sourceRoot":"","sources":["../../src/litellm/mcp-server-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAExD,yFAAyF;AACzF,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,MAAM,CAAC;AAE1C;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,cAAc,GAAG,OAAO,GAAG,eAAe,GAAG,OAAO,CAAC;AAEjG,gGAAgG;AAChG,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,QAAQ,GAAG,iBAAiB,CAAC;AAEhE,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;;;OAOG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,+FAA+F;IAC/F,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IACjC,qEAAqE;IACrE,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;;;;OAOG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,wEAAwE;IACxE,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9C;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,6FAA6F;IAC7F,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,qDAAqD;IACrD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C;;;;OAIG;IACH,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED,6GAA6G;AAC7G,eAAO,MAAM,OAAO,UAAW,OAAO,KAAG,OACS,CAAC;AAUnD,uGAAuG;AACvG,eAAO,MAAM,gBAAgB,aAAc,MAAM,KAAG,OAA+B,CAAC;AAEpF,eAAO,MAAM,UAAU,EAAE,SAAS,WAAW,EAQ5C,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,SAAS,YAAY,EAAoB,CAAC"}
@@ -0,0 +1,11 @@
1
+ /** Why a URL may not be declared, or `undefined`. ⛔ Never quotes the URL: it may hold the secret. */
2
+ export declare const urlProblem: (raw: unknown) => string | undefined;
3
+ /**
4
+ * `userinfo` and secret-looking query values replaced with `REDACTED`, so a live URL that carries a
5
+ * token never reaches Alchemy's unencrypted state.
6
+ * ★ A URL THAT NEEDS NO REDACTION COMES BACK BYTE-FOR-BYTE, never re-serialised: `URL#toString`
7
+ * adds a trailing slash to a bare origin, and a declared `https://host` would then differ from
8
+ * its own live row on every plan. A URL that does not parse is returned as it is.
9
+ */
10
+ export declare const redactUrl: (raw: string) => string;
11
+ //# sourceMappingURL=mcp-server-url.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server-url.d.ts","sourceRoot":"","sources":["../../src/litellm/mcp-server-url.ts"],"names":[],"mappings":"AAaA,qGAAqG;AACrG,eAAO,MAAM,UAAU,QAAS,OAAO,KAAG,MAAM,GAAG,SAmBlD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,QAAS,MAAM,KAAG,MAuBvC,CAAC"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * `LiteLLM.MCPServer` — one row of LiteLLM's `LiteLLM_MCPServerTable` (`/v1/mcp/server`), an
3
+ * upstream MCP server the proxy's gateway exposes to keys and teams.
4
+ *
5
+ * ★ ADOPT BY NAME. `serverName` finds the live row whose `server_name` matches; declare `serverId`
6
+ * to pin one instead. A live row with no state is `Unowned`, so it needs `--adopt`. Two rows with
7
+ * the same name are refused, never guessed at (`LitellmMcpServerAmbiguousNameError`).
8
+ * ★ `defaultRemovalPolicy: 'retain'` — a server's removal takes its tools from every key, team and
9
+ * seat that reaches it. Opt in with `.pipe(RemovalPolicy.destroy())`.
10
+ * ⛔ THE CREDENTIAL IS `{ fromEnv: 'NAME' }`, NEVER A VALUE (S25): mcp-server-types.ts says why a
11
+ * `Redacted` prop would still be stored in plaintext. Reading a server never reveals auth material
12
+ * either — `toAttributes` copies no credential — and a rotated credential is noticed through a
13
+ * seal (mcp-server-credential.ts).
14
+ * ⛔ NO LITELLM CREDENTIAL IS A PROP either: `litellmProviders`' layer supplies `Credentials`.
15
+ * ⛔ THE LIST IS LITELLM'S IN-MEMORY REGISTRY, NOT THE TABLE (mcp-server-operations.ts): a committed row
16
+ * can be missing from it. So a row the list lacks is read by id from the table (`findLive`), the read
17
+ * back after a write falls back to the same read, and a delete always sends its DELETE.
18
+ * ⛔ AN UPDATE NEVER LETS LITELLM DEFAULT THE ALIAS (mcp-server-form.ts): the alias is the tool prefix.
19
+ * ⚠️ A `description` that the row's `mcp_info` would hide is refused before any write (mcp-server-shadow.ts).
20
+ * ⚠️ UNMEASURED AT 1.103.0, each guarded by a read back: whether a create honours a supplied
21
+ * `server_id`, and whether an empty list or a `false` lands on an edit (that the edit is a partial
22
+ * update is read from the source, `mcp-server-form.ts`). Nothing here assumes them; the returned
23
+ * row is what is recorded.
24
+ */
25
+ import { Resource } from 'alchemy';
26
+ import type { Input } from 'alchemy/Input';
27
+ import * as Provider from 'alchemy/Provider';
28
+ import * as Effect from 'effect/Effect';
29
+ import { LitellmMcpServerAbsentAfterWriteError, LitellmMcpServerInvalidError, LitellmMcpServerNotConvergedError } from './mcp-server-errors.ts';
30
+ import { type McpServerAttributes, type McpServerProps } from './mcp-server-types.ts';
31
+ export type { McpServerAttributes, McpServerProps };
32
+ export type { McpServerError } from './mcp-server-errors.ts';
33
+ export interface LiteLLMMCPServer extends Resource<'LiteLLM.MCPServer', McpServerProps, McpServerAttributes> {
34
+ }
35
+ export declare const LiteLLMMCPServer: import("alchemy").ResourceClass<LiteLLMMCPServer>;
36
+ export declare const isLiteLLMMCPServer: (value: unknown) => value is LiteLLMMCPServer;
37
+ type Args<P> = {
38
+ id: string;
39
+ instanceId: string;
40
+ output: McpServerAttributes | undefined;
41
+ } & P;
42
+ /** ⛔ TEST-ONLY EXPORT. Not on index.ts's barrel. */
43
+ export declare const mcpServerHandlers: {
44
+ /**
45
+ * ⛔ WITH NO `output` THIS IS ALCHEMY'S ADOPTION PROBE, AND THE ONLY PLAN-TIME HOOK A NEW SERVER
46
+ * GETS — so the refusals run here too. Measured on beta.79 (`Plan.ts` lines 1303-1316, the
47
+ * `oldState === undefined` branch): a declaration with no state row is `read` with `olds: news`
48
+ * and never `diff`ed, and Apply then commits its props as `creating` BEFORE `reconcile` runs. A
49
+ * URL that carries a token would already be in the unencrypted store when reconcile refused it.
50
+ * ★ A DEFECT (`Effect.die`), NOT A TYPED FAILURE, and that is what keeps it from wedging a stage:
51
+ * the same call shape is Alchemy's recovery read of an interrupted create (`Plan.ts` lines
52
+ * 1428-1447), with the STORED props, and only a defect is caught there (`Effect.catchDefect`
53
+ * degrades it to "nothing recovered"). A typed failure would block the plan on props that a
54
+ * later, stricter release now refuses. The cold-start probe has no such catch, so there the
55
+ * defect fails the plan, as intended. `pbs-notification-target-lifecycle.ts` reasons the same.
56
+ */
57
+ read: ({ id, instanceId, olds, output }: Args<{
58
+ olds: McpServerProps;
59
+ }>) => Effect.Effect<McpServerAttributes | undefined, import("@distilled.cloud/caddy").BadGateway | import("@distilled.cloud/caddy").ConfigError | import("@distilled.cloud/caddy").GatewayTimeout | import("effect/unstable/http/HttpClientError").HttpClientError | import("@distilled.cloud/caddy").InternalServerError | import("./mcp-server-errors.ts").LitellmMcpServerAmbiguousNameError | import("./mcp-server-errors.ts").LitellmMcpServerUnreadableError | import("@distilled.cloud/litellm/Errors").LitellmParseError | import("@distilled.cloud/caddy").ServiceUnavailable | import("@distilled.cloud/caddy").TooManyRequests | import("@distilled.cloud/caddy").Unauthorized | import("@distilled.cloud/litellm/Errors").UnknownLitellmError | import("@distilled.cloud/litellm/mcp_management").UnprocessableEntity, import("alchemy").InstanceId | import("alchemy").Stack | import("alchemy").Stage | import("@distilled.cloud/litellm/Protocol").LitellmOpContext>;
60
+ diff: ({ news, output, }: {
61
+ news: Input<McpServerProps>;
62
+ output: McpServerAttributes | undefined;
63
+ }) => Effect.Effect<{
64
+ readonly action: 'replace';
65
+ readonly deleteFirst: false;
66
+ } | {
67
+ readonly deleteFirst?: never;
68
+ readonly action: 'noop';
69
+ } | {
70
+ readonly deleteFirst?: never;
71
+ readonly action: 'update';
72
+ } | undefined, LitellmMcpServerInvalidError, never>;
73
+ reconcile: ({ id, instanceId, news, output }: Args<{
74
+ news: McpServerProps;
75
+ }>) => Effect.Effect<{
76
+ serverId: string;
77
+ serverName: string | null;
78
+ alias: string | null;
79
+ url: string | null;
80
+ transport: string;
81
+ authType: string;
82
+ description: string | null;
83
+ allowAllKeys: boolean;
84
+ allowedTools: readonly string[];
85
+ mcpAccessGroups: readonly string[];
86
+ credentialSeal: string;
87
+ }, import("@distilled.cloud/caddy").BadGateway | import("@distilled.cloud/caddy").ConfigError | import("@distilled.cloud/caddy").GatewayTimeout | import("effect/unstable/http/HttpClientError").HttpClientError | import("@distilled.cloud/caddy").InternalServerError | LitellmMcpServerAbsentAfterWriteError | import("./mcp-server-errors.ts").LitellmMcpServerAmbiguousNameError | import("./mcp-server-errors.ts").LitellmMcpServerCredentialEnvUnsetError | import("./mcp-server-errors.ts").LitellmMcpServerDescriptionShadowedError | LitellmMcpServerInvalidError | LitellmMcpServerNotConvergedError | import("./mcp-server-errors.ts").LitellmMcpServerUnreadableError | import("@distilled.cloud/litellm/Errors").LitellmParseError | import("@distilled.cloud/caddy").ServiceUnavailable | import("@distilled.cloud/caddy").TooManyRequests | import("@distilled.cloud/caddy").Unauthorized | import("@distilled.cloud/litellm/Errors").UnknownLitellmError | import("@distilled.cloud/litellm/mcp_management").UnprocessableEntity, import("alchemy").InstanceId | import("alchemy").Stack | import("alchemy").Stage | import("@distilled.cloud/litellm/Protocol").LitellmOpContext>;
88
+ delete: ({ output }: {
89
+ output: McpServerAttributes;
90
+ }) => Effect.Effect<void, import("@distilled.cloud/litellm/mcp_management").RemoveMcpServerV1McpServerServerIdDeleteError, import("@distilled.cloud/litellm/Credentials").Credentials>;
91
+ /** ⛔ EMPTY: adoption is an explicit act (`--adopt`), and no ownership mark exists to filter by. */
92
+ list: () => Effect.Effect<never[], never, never>;
93
+ };
94
+ export declare const LiteLLMMCPServerProvider: () => import("effect/Layer").Layer<Provider.Provider<LiteLLMMCPServer>, never, import("alchemy").Stack | import("alchemy").Stage | import("@distilled.cloud/litellm/Protocol").LitellmOpContext>;
95
+ //# sourceMappingURL=mcp-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../src/litellm/mcp-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGnC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,KAAK,QAAQ,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EACL,qCAAqC,EACrC,4BAA4B,EAC5B,iCAAiC,EAClC,MAAM,wBAAwB,CAAC;AAuBhC,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,cAAc,EAEpB,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,CAAC;AACpD,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,MAAM,WAAW,gBAAiB,SAAQ,QAAQ,CAChD,mBAAmB,EACnB,cAAc,EACd,mBAAmB,CACpB;CAAG;AAEJ,eAAO,MAAM,gBAAgB,mDAE3B,CAAC;AAEH,eAAO,MAAM,kBAAkB,UAAW,OAAO,KAAG,KAAK,IAAI,gBACe,CAAC;AAW7E,KAAK,IAAI,CAAC,CAAC,IAAI;IACb,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,mBAAmB,GAAG,SAAS,CAAC;CACzC,GAAG,CAAC,CAAC;AAEN,oDAAoD;AACpD,eAAO,MAAM,iBAAiB;IAC5B;;;;;;;;;;;;OAYG;IACH,IAAI,qCAAqC,IAAI,CAAC;QAAE,IAAI,EAAE,cAAc,CAAA;KAAE,CAAC;IAmBvE,IAAI,sBAGD;QACD,IAAI,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;QAC5B,MAAM,EAAE,mBAAmB,GAAG,SAAS,CAAC;KACzC;yBAOsB,SAAS;;;;yBAIb,MAAM;;;yBACN,QAAQ;;IAG3B,SAAS,qCAAqC,IAAI,CAAC;QAAE,IAAI,EAAE,cAAc,CAAA;KAAE,CAAC;;;;;;;;;;;;;IAgE5E,MAAM,eAAe;QAAE,MAAM,EAAE,mBAAmB,CAAA;KAAE;IAEpD,mGAAmG;IACnG,IAAI;CACL,CAAC;AAEF,eAAO,MAAM,wBAAwB,kMAIlC,CAAC"}