@homeflare/alchemy 0.46.1 → 0.47.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 (742) hide show
  1. package/README.md +10 -10
  2. package/dist/argocd/cluster.d.ts +5 -5
  3. package/dist/argocd/cluster.d.ts.map +1 -1
  4. package/dist/argocd/fake-argocd.d.ts +1 -1
  5. package/dist/argocd/fake-argocd.d.ts.map +1 -1
  6. package/dist/argocd/index.js.map +1 -1
  7. package/dist/argocd/providers.d.ts +1 -1
  8. package/dist/argocd/providers.d.ts.map +1 -1
  9. package/dist/argocd/repo-creds.d.ts +5 -5
  10. package/dist/argocd/repo-creds.d.ts.map +1 -1
  11. package/dist/argocd/repository.d.ts +5 -5
  12. package/dist/argocd/repository.d.ts.map +1 -1
  13. package/dist/argocd/resource.d.ts +1 -1
  14. package/dist/argocd/resource.d.ts.map +1 -1
  15. package/dist/caddy/admin.d.ts +1 -1
  16. package/dist/caddy/admin.d.ts.map +1 -1
  17. package/dist/caddy/caddy-http-client.d.ts +2 -2
  18. package/dist/caddy/caddy-http-client.d.ts.map +1 -1
  19. package/dist/caddy/format.d.ts +1 -1
  20. package/dist/caddy/format.d.ts.map +1 -1
  21. package/dist/caddy/index.js +6 -6
  22. package/dist/caddy/index.js.map +4 -4
  23. package/dist/ceph/auth-entity.d.ts +1 -1
  24. package/dist/ceph/auth-entity.d.ts.map +1 -1
  25. package/dist/ceph/ceph-auth-reconcile.d.ts +1 -1
  26. package/dist/ceph/ceph-auth-reconcile.d.ts.map +1 -1
  27. package/dist/ceph/index.js +5 -5
  28. package/dist/ceph/index.js.map +4 -4
  29. package/dist/cloudflare/fake-mesh.d.ts +2 -2
  30. package/dist/cloudflare/fake-mesh.d.ts.map +1 -1
  31. package/dist/cloudflare/fake-r2-lock.d.ts +1 -1
  32. package/dist/cloudflare/fake-r2-lock.d.ts.map +1 -1
  33. package/dist/cloudflare/index.js +3 -3
  34. package/dist/cloudflare/index.js.map +3 -3
  35. package/dist/cloudflare/mesh-node-token.d.ts +1 -1
  36. package/dist/cloudflare/mesh-node-token.d.ts.map +1 -1
  37. package/dist/cloudflare/mesh-node.d.ts +1 -1
  38. package/dist/cloudflare/mesh-node.d.ts.map +1 -1
  39. package/dist/cloudflare/providers.d.ts +1 -1
  40. package/dist/cloudflare/providers.d.ts.map +1 -1
  41. package/dist/cloudflare/r2-bucket-lock.d.ts +1 -1
  42. package/dist/cloudflare/r2-bucket-lock.d.ts.map +1 -1
  43. package/dist/discord/application-command.d.ts +6 -6
  44. package/dist/discord/application-command.d.ts.map +1 -1
  45. package/dist/discord/fake-discord.d.ts +1 -1
  46. package/dist/discord/fake-discord.d.ts.map +1 -1
  47. package/dist/discord/guild-application-command.d.ts +6 -6
  48. package/dist/discord/guild-application-command.d.ts.map +1 -1
  49. package/dist/discord/index.js.map +1 -1
  50. package/dist/discord/providers.d.ts +1 -1
  51. package/dist/discord/providers.d.ts.map +1 -1
  52. package/dist/discord/resource.d.ts +1 -1
  53. package/dist/discord/resource.d.ts.map +1 -1
  54. package/dist/forgejo/branch-protection.d.ts +5 -5
  55. package/dist/forgejo/branch-protection.d.ts.map +1 -1
  56. package/dist/forgejo/fake-forgejo.d.ts +1 -1
  57. package/dist/forgejo/fake-forgejo.d.ts.map +1 -1
  58. package/dist/forgejo/index.js.map +1 -1
  59. package/dist/forgejo/org-actions-secrets.d.ts +5 -5
  60. package/dist/forgejo/org-actions-secrets.d.ts.map +1 -1
  61. package/dist/forgejo/org-label.d.ts +5 -5
  62. package/dist/forgejo/org-label.d.ts.map +1 -1
  63. package/dist/forgejo/org-team.d.ts +5 -5
  64. package/dist/forgejo/org-team.d.ts.map +1 -1
  65. package/dist/forgejo/repo-webhook.d.ts +5 -5
  66. package/dist/forgejo/repo-webhook.d.ts.map +1 -1
  67. package/dist/forgejo/repository.d.ts +5 -5
  68. package/dist/forgejo/repository.d.ts.map +1 -1
  69. package/dist/forgejo/resource.d.ts +1 -1
  70. package/dist/forgejo/resource.d.ts.map +1 -1
  71. package/dist/forgejo/team-member.d.ts +5 -5
  72. package/dist/forgejo/team-member.d.ts.map +1 -1
  73. package/dist/github/repository-ruleset-providers.d.ts +1 -1
  74. package/dist/github/repository-ruleset-providers.d.ts.map +1 -1
  75. package/dist/google-workspace/domain-alias.d.ts +5 -5
  76. package/dist/google-workspace/domain-alias.d.ts.map +1 -1
  77. package/dist/google-workspace/fake-google-workspace.d.ts +1 -1
  78. package/dist/google-workspace/fake-google-workspace.d.ts.map +1 -1
  79. package/dist/google-workspace/group-member.d.ts +5 -5
  80. package/dist/google-workspace/group-member.d.ts.map +1 -1
  81. package/dist/google-workspace/group.d.ts +5 -5
  82. package/dist/google-workspace/group.d.ts.map +1 -1
  83. package/dist/google-workspace/index.js.map +1 -1
  84. package/dist/google-workspace/org-unit.d.ts +5 -5
  85. package/dist/google-workspace/org-unit.d.ts.map +1 -1
  86. package/dist/google-workspace/providers.d.ts +1 -1
  87. package/dist/google-workspace/providers.d.ts.map +1 -1
  88. package/dist/google-workspace/resource.d.ts +1 -1
  89. package/dist/google-workspace/resource.d.ts.map +1 -1
  90. package/dist/grafana/alert-rule-group.d.ts +4 -4
  91. package/dist/grafana/alert-rule-group.d.ts.map +1 -1
  92. package/dist/grafana/contact-point.d.ts +4 -4
  93. package/dist/grafana/dashboard.d.ts +4 -4
  94. package/dist/grafana/datasource.d.ts +4 -4
  95. package/dist/grafana/fake-grafana.d.ts +1 -1
  96. package/dist/grafana/fake-grafana.d.ts.map +1 -1
  97. package/dist/grafana/folder.d.ts +4 -4
  98. package/dist/grafana/message-template.d.ts +4 -4
  99. package/dist/grafana/mute-timing.d.ts +4 -4
  100. package/dist/grafana/notification-policy.d.ts +4 -4
  101. package/dist/grafana/notification-policy.d.ts.map +1 -1
  102. package/dist/grafana/providers.d.ts +1 -1
  103. package/dist/grafana/providers.d.ts.map +1 -1
  104. package/dist/litellm/access-group.d.ts +1 -1
  105. package/dist/litellm/budget-operations.d.ts +1 -1
  106. package/dist/litellm/budget-operations.d.ts.map +1 -1
  107. package/dist/litellm/budget.d.ts +2 -2
  108. package/dist/litellm/credential-errors.d.ts +1 -1
  109. package/dist/litellm/credential-errors.d.ts.map +1 -1
  110. package/dist/litellm/credential.d.ts +1 -1
  111. package/dist/litellm/index.js +26 -5
  112. package/dist/litellm/index.js.map +8 -8
  113. package/dist/litellm/key-errors.d.ts +1 -1
  114. package/dist/litellm/key-errors.d.ts.map +1 -1
  115. package/dist/litellm/key.d.ts +2 -2
  116. package/dist/litellm/mcp-server-locate.d.ts +1 -1
  117. package/dist/litellm/mcp-server-locate.d.ts.map +1 -1
  118. package/dist/litellm/mcp-server.d.ts +2 -2
  119. package/dist/litellm/model-operations.d.ts +1 -1
  120. package/dist/litellm/model-operations.d.ts.map +1 -1
  121. package/dist/litellm/model.d.ts +2 -2
  122. package/dist/litellm/operations.d.ts +1 -1
  123. package/dist/litellm/operations.d.ts.map +1 -1
  124. package/dist/litellm/policy-attachment.d.ts +1 -1
  125. package/dist/litellm/policy.d.ts +1 -1
  126. package/dist/litellm/providers.d.ts +1 -1
  127. package/dist/litellm/providers.d.ts.map +1 -1
  128. package/dist/litellm/team-operations.d.ts +1 -1
  129. package/dist/litellm/team-operations.d.ts.map +1 -1
  130. package/dist/litellm/team.d.ts +1 -1
  131. package/dist/litellm/tool-policy-operations.d.ts +1 -1
  132. package/dist/litellm/tool-policy-operations.d.ts.map +1 -1
  133. package/dist/litellm/tool-policy.d.ts +1 -1
  134. package/dist/litellm/toolset.d.ts +1 -1
  135. package/dist/netbox/fake-netbox.d.ts +1 -1
  136. package/dist/netbox/fake-netbox.d.ts.map +1 -1
  137. package/dist/netbox/index.js.map +1 -1
  138. package/dist/netbox/prefix.d.ts +5 -5
  139. package/dist/netbox/prefix.d.ts.map +1 -1
  140. package/dist/netbox/resource.d.ts +1 -1
  141. package/dist/netbox/resource.d.ts.map +1 -1
  142. package/dist/openbao/approle-login.d.ts +1 -1
  143. package/dist/openbao/approle-login.d.ts.map +1 -1
  144. package/dist/openbao/auth-method-reconcile.d.ts +1 -1
  145. package/dist/openbao/auth-method-reconcile.d.ts.map +1 -1
  146. package/dist/openbao/auth-method-wire.d.ts +4 -4
  147. package/dist/openbao/auth-method-wire.d.ts.map +1 -1
  148. package/dist/openbao/auth-method.d.ts +1 -1
  149. package/dist/openbao/auth-method.d.ts.map +1 -1
  150. package/dist/openbao/auth-role-identity.d.ts +1 -1
  151. package/dist/openbao/auth-role-identity.d.ts.map +1 -1
  152. package/dist/openbao/auth-role-wire.d.ts +4 -4
  153. package/dist/openbao/auth-role-wire.d.ts.map +1 -1
  154. package/dist/openbao/auth-role.d.ts +1 -1
  155. package/dist/openbao/auth-role.d.ts.map +1 -1
  156. package/dist/openbao/bao-http.d.ts +1 -1
  157. package/dist/openbao/bao-http.d.ts.map +1 -1
  158. package/dist/openbao/bao-identity.d.ts +1 -1
  159. package/dist/openbao/bao-identity.d.ts.map +1 -1
  160. package/dist/openbao/cloudflare-permission-groups.d.ts +1 -1
  161. package/dist/openbao/cloudflare-permission-groups.d.ts.map +1 -1
  162. package/dist/openbao/cloudflare-role-wire.d.ts +1 -1
  163. package/dist/openbao/cloudflare-role-wire.d.ts.map +1 -1
  164. package/dist/openbao/cloudflare-role.d.ts +1 -1
  165. package/dist/openbao/cloudflare-role.d.ts.map +1 -1
  166. package/dist/openbao/distilled.d.ts +1 -1
  167. package/dist/openbao/distilled.d.ts.map +1 -1
  168. package/dist/openbao/fake-bao.d.ts +1 -1
  169. package/dist/openbao/fake-bao.d.ts.map +1 -1
  170. package/dist/openbao/fake-core.d.ts +1 -1
  171. package/dist/openbao/fake-core.d.ts.map +1 -1
  172. package/dist/openbao/fake-engines.d.ts +1 -1
  173. package/dist/openbao/fake-engines.d.ts.map +1 -1
  174. package/dist/openbao/fake-families.d.ts +2 -2
  175. package/dist/openbao/fake-families.d.ts.map +1 -1
  176. package/dist/openbao/fake-stack.d.ts +5 -0
  177. package/dist/openbao/fake-stack.d.ts.map +1 -1
  178. package/dist/openbao/forgejo-bootstrap.d.ts +1 -1
  179. package/dist/openbao/forgejo-bootstrap.d.ts.map +1 -1
  180. package/dist/openbao/index.js +31 -10
  181. package/dist/openbao/index.js.map +31 -31
  182. package/dist/openbao/jwt-config.d.ts +1 -1
  183. package/dist/openbao/jwt-config.d.ts.map +1 -1
  184. package/dist/openbao/jwt-role.d.ts +1 -1
  185. package/dist/openbao/jwt-role.d.ts.map +1 -1
  186. package/dist/openbao/kubernetes-role.d.ts +1 -1
  187. package/dist/openbao/kubernetes-role.d.ts.map +1 -1
  188. package/dist/openbao/mfa-enforcement.d.ts +1 -1
  189. package/dist/openbao/mfa-enforcement.d.ts.map +1 -1
  190. package/dist/openbao/mfa-totp.d.ts +1 -1
  191. package/dist/openbao/mfa-totp.d.ts.map +1 -1
  192. package/dist/openbao/mfa-wire.d.ts +1 -1
  193. package/dist/openbao/mfa-wire.d.ts.map +1 -1
  194. package/dist/openbao/mount-move.d.ts +1 -1
  195. package/dist/openbao/mount-move.d.ts.map +1 -1
  196. package/dist/openbao/mount-reconcile.d.ts +1 -1
  197. package/dist/openbao/mount-reconcile.d.ts.map +1 -1
  198. package/dist/openbao/mount-wire.d.ts +4 -4
  199. package/dist/openbao/mount-wire.d.ts.map +1 -1
  200. package/dist/openbao/mount.d.ts +1 -1
  201. package/dist/openbao/mount.d.ts.map +1 -1
  202. package/dist/openbao/pki-role.d.ts +1 -1
  203. package/dist/openbao/pki-role.d.ts.map +1 -1
  204. package/dist/openbao/plugin-reconcile.d.ts +1 -1
  205. package/dist/openbao/plugin-reconcile.d.ts.map +1 -1
  206. package/dist/openbao/plugin-wire.d.ts +1 -1
  207. package/dist/openbao/plugin-wire.d.ts.map +1 -1
  208. package/dist/openbao/plugin.d.ts +1 -1
  209. package/dist/openbao/plugin.d.ts.map +1 -1
  210. package/dist/openbao/policy-identity.d.ts +1 -1
  211. package/dist/openbao/policy-identity.d.ts.map +1 -1
  212. package/dist/openbao/policy-wire.d.ts +4 -4
  213. package/dist/openbao/policy-wire.d.ts.map +1 -1
  214. package/dist/openbao/policy.d.ts +1 -1
  215. package/dist/openbao/policy.d.ts.map +1 -1
  216. package/dist/openbao/proxmox-role-wire.d.ts +1 -1
  217. package/dist/openbao/proxmox-role-wire.d.ts.map +1 -1
  218. package/dist/openbao/proxmox-role.d.ts +1 -1
  219. package/dist/openbao/proxmox-role.d.ts.map +1 -1
  220. package/dist/openbao/remount-wire.d.ts +1 -1
  221. package/dist/openbao/remount-wire.d.ts.map +1 -1
  222. package/dist/openbao/rename-identity.d.ts +1 -1
  223. package/dist/openbao/rename-identity.d.ts.map +1 -1
  224. package/dist/openbao/rename.d.ts +1 -1
  225. package/dist/openbao/rename.d.ts.map +1 -1
  226. package/dist/openbao/role-reconcile.d.ts +1 -1
  227. package/dist/openbao/role-reconcile.d.ts.map +1 -1
  228. package/dist/openbao/ssh-role.d.ts +1 -1
  229. package/dist/openbao/ssh-role.d.ts.map +1 -1
  230. package/dist/opnsense/alias.d.ts +5 -5
  231. package/dist/opnsense/alias.d.ts.map +1 -1
  232. package/dist/opnsense/category.d.ts +5 -5
  233. package/dist/opnsense/category.d.ts.map +1 -1
  234. package/dist/opnsense/fake-opnsense.d.ts +1 -1
  235. package/dist/opnsense/fake-opnsense.d.ts.map +1 -1
  236. package/dist/opnsense/group.d.ts +5 -5
  237. package/dist/opnsense/group.d.ts.map +1 -1
  238. package/dist/opnsense/index.js.map +1 -1
  239. package/dist/opnsense/providers.d.ts +1 -1
  240. package/dist/opnsense/providers.d.ts.map +1 -1
  241. package/dist/opnsense/resource.d.ts +1 -1
  242. package/dist/opnsense/resource.d.ts.map +1 -1
  243. package/dist/ownership/probe.d.ts.map +1 -1
  244. package/dist/paperless/custom-field.d.ts +5 -5
  245. package/dist/paperless/custom-field.d.ts.map +1 -1
  246. package/dist/paperless/document-type.d.ts +5 -5
  247. package/dist/paperless/document-type.d.ts.map +1 -1
  248. package/dist/paperless/fake-paperless.d.ts +1 -1
  249. package/dist/paperless/fake-paperless.d.ts.map +1 -1
  250. package/dist/paperless/matching-types.d.ts +1 -1
  251. package/dist/paperless/matching-types.d.ts.map +1 -1
  252. package/dist/paperless/matching.d.ts +4 -4
  253. package/dist/paperless/providers.d.ts +1 -1
  254. package/dist/paperless/providers.d.ts.map +1 -1
  255. package/dist/paperless/storage-path.d.ts +5 -5
  256. package/dist/paperless/storage-path.d.ts.map +1 -1
  257. package/dist/paperless/tag.d.ts +5 -5
  258. package/dist/paperless/tag.d.ts.map +1 -1
  259. package/dist/postgres/connection.d.ts +2 -2
  260. package/dist/postgres/connection.d.ts.map +1 -1
  261. package/dist/postgres/database-sql.d.ts +1 -1
  262. package/dist/postgres/database-sql.d.ts.map +1 -1
  263. package/dist/postgres/database.d.ts +1 -1
  264. package/dist/postgres/database.d.ts.map +1 -1
  265. package/dist/postgres/fake-grants-read.d.ts +1 -1
  266. package/dist/postgres/fake-grants-read.d.ts.map +1 -1
  267. package/dist/postgres/fake-grants-write.d.ts +1 -1
  268. package/dist/postgres/fake-grants-write.d.ts.map +1 -1
  269. package/dist/postgres/fake-role-sql.d.ts +1 -1
  270. package/dist/postgres/fake-role-sql.d.ts.map +1 -1
  271. package/dist/postgres/fake-schema-drop.d.ts +1 -1
  272. package/dist/postgres/fake-schema-drop.d.ts.map +1 -1
  273. package/dist/postgres/fake-schema-sql.d.ts +1 -1
  274. package/dist/postgres/fake-schema-sql.d.ts.map +1 -1
  275. package/dist/postgres/grants-existence.d.ts +1 -1
  276. package/dist/postgres/grants-existence.d.ts.map +1 -1
  277. package/dist/postgres/grants-ops.d.ts +1 -1
  278. package/dist/postgres/grants-ops.d.ts.map +1 -1
  279. package/dist/postgres/grants-ownership.d.ts +1 -1
  280. package/dist/postgres/grants-ownership.d.ts.map +1 -1
  281. package/dist/postgres/grants-read-defaults.d.ts +1 -1
  282. package/dist/postgres/grants-read-defaults.d.ts.map +1 -1
  283. package/dist/postgres/grants-read.d.ts +1 -1
  284. package/dist/postgres/grants-read.d.ts.map +1 -1
  285. package/dist/postgres/index.js +93 -77
  286. package/dist/postgres/index.js.map +23 -23
  287. package/dist/postgres/installed-classifier.d.ts +1 -1
  288. package/dist/postgres/installed-classifier.d.ts.map +1 -1
  289. package/dist/postgres/psql-executor.d.ts.map +1 -1
  290. package/dist/postgres/role-membership-sql.d.ts +1 -1
  291. package/dist/postgres/role-membership-sql.d.ts.map +1 -1
  292. package/dist/postgres/role-sql.d.ts +1 -1
  293. package/dist/postgres/role-sql.d.ts.map +1 -1
  294. package/dist/postgres/role.d.ts +1 -1
  295. package/dist/postgres/role.d.ts.map +1 -1
  296. package/dist/postgres/schema-assert.d.ts +1 -1
  297. package/dist/postgres/schema-assert.d.ts.map +1 -1
  298. package/dist/postgres/schema-delete.d.ts +1 -1
  299. package/dist/postgres/schema-delete.d.ts.map +1 -1
  300. package/dist/postgres/schema-drop-sql.d.ts +1 -1
  301. package/dist/postgres/schema-drop-sql.d.ts.map +1 -1
  302. package/dist/postgres/schema-reconcile.d.ts +1 -1
  303. package/dist/postgres/schema-reconcile.d.ts.map +1 -1
  304. package/dist/postgres/schema-sql.d.ts +1 -1
  305. package/dist/postgres/schema-sql.d.ts.map +1 -1
  306. package/dist/postgres/schema.d.ts +1 -1
  307. package/dist/postgres/schema.d.ts.map +1 -1
  308. package/dist/postgres/search-path.d.ts +1 -1
  309. package/dist/postgres/search-path.d.ts.map +1 -1
  310. package/dist/proxmox/acl.d.ts +1 -1
  311. package/dist/proxmox/acl.d.ts.map +1 -1
  312. package/dist/proxmox/api-token.d.ts +1 -1
  313. package/dist/proxmox/api-token.d.ts.map +1 -1
  314. package/dist/proxmox/backup-job-distilled.d.ts +2 -2
  315. package/dist/proxmox/backup-job-distilled.d.ts.map +1 -1
  316. package/dist/proxmox/backup-job.d.ts +1 -1
  317. package/dist/proxmox/backup-job.d.ts.map +1 -1
  318. package/dist/proxmox/ceph-daemon-wire.d.ts +3 -3
  319. package/dist/proxmox/ceph-daemon-wire.d.ts.map +1 -1
  320. package/dist/proxmox/ceph-daemon.d.ts +2 -2
  321. package/dist/proxmox/ceph-daemon.d.ts.map +1 -1
  322. package/dist/proxmox/ceph-flag-wire.d.ts +3 -3
  323. package/dist/proxmox/ceph-flag-wire.d.ts.map +1 -1
  324. package/dist/proxmox/ceph-flag.d.ts +1 -1
  325. package/dist/proxmox/ceph-flag.d.ts.map +1 -1
  326. package/dist/proxmox/ceph-fs-distilled.d.ts +3 -3
  327. package/dist/proxmox/ceph-fs-distilled.d.ts.map +1 -1
  328. package/dist/proxmox/ceph-fs.d.ts +1 -1
  329. package/dist/proxmox/ceph-fs.d.ts.map +1 -1
  330. package/dist/proxmox/ceph-osd-tree.d.ts +1 -1
  331. package/dist/proxmox/ceph-osd-tree.d.ts.map +1 -1
  332. package/dist/proxmox/ceph-osd-write.d.ts +2 -2
  333. package/dist/proxmox/ceph-osd-write.d.ts.map +1 -1
  334. package/dist/proxmox/ceph-osd.d.ts +1 -1
  335. package/dist/proxmox/ceph-osd.d.ts.map +1 -1
  336. package/dist/proxmox/ceph-pool-settle.d.ts +2 -2
  337. package/dist/proxmox/ceph-pool-settle.d.ts.map +1 -1
  338. package/dist/proxmox/ceph-pool-wire.d.ts +1 -1
  339. package/dist/proxmox/ceph-pool-wire.d.ts.map +1 -1
  340. package/dist/proxmox/ceph-pool.d.ts +1 -1
  341. package/dist/proxmox/ceph-pool.d.ts.map +1 -1
  342. package/dist/proxmox/client.d.ts +1 -1
  343. package/dist/proxmox/client.d.ts.map +1 -1
  344. package/dist/proxmox/distilled-pbs.d.ts +1 -1
  345. package/dist/proxmox/distilled-pbs.d.ts.map +1 -1
  346. package/dist/proxmox/distilled-pve.d.ts +1 -1
  347. package/dist/proxmox/distilled-pve.d.ts.map +1 -1
  348. package/dist/proxmox/fake-pbs-jobs.d.ts +1 -1
  349. package/dist/proxmox/fake-pve.d.ts +1 -1
  350. package/dist/proxmox/fake-pve.d.ts.map +1 -1
  351. package/dist/proxmox/firewall-alias-lifecycle.d.ts +6 -6
  352. package/dist/proxmox/firewall-alias-lifecycle.d.ts.map +1 -1
  353. package/dist/proxmox/firewall-alias.d.ts +1 -1
  354. package/dist/proxmox/firewall-alias.d.ts.map +1 -1
  355. package/dist/proxmox/group-wire.d.ts +2 -2
  356. package/dist/proxmox/group-wire.d.ts.map +1 -1
  357. package/dist/proxmox/group.d.ts +1 -1
  358. package/dist/proxmox/group.d.ts.map +1 -1
  359. package/dist/proxmox/ha-resource.d.ts +1 -1
  360. package/dist/proxmox/ha-resource.d.ts.map +1 -1
  361. package/dist/proxmox/ha-rule.d.ts +1 -1
  362. package/dist/proxmox/ha-rule.d.ts.map +1 -1
  363. package/dist/proxmox/index.js +38 -17
  364. package/dist/proxmox/index.js.map +9 -9
  365. package/dist/proxmox/lease-cache.d.ts +2 -2
  366. package/dist/proxmox/lease-cache.d.ts.map +1 -1
  367. package/dist/proxmox/live-core-fixtures.d.ts +1 -1
  368. package/dist/proxmox/live-core-fixtures.d.ts.map +1 -1
  369. package/dist/proxmox/lxc-lifecycle.d.ts +3 -3
  370. package/dist/proxmox/lxc-lifecycle.d.ts.map +1 -1
  371. package/dist/proxmox/lxc-read.d.ts +1 -1
  372. package/dist/proxmox/lxc-read.d.ts.map +1 -1
  373. package/dist/proxmox/lxc-task.d.ts +1 -1
  374. package/dist/proxmox/lxc-task.d.ts.map +1 -1
  375. package/dist/proxmox/lxc.d.ts +1 -1
  376. package/dist/proxmox/lxc.d.ts.map +1 -1
  377. package/dist/proxmox/members.d.ts +3 -3
  378. package/dist/proxmox/members.d.ts.map +1 -1
  379. package/dist/proxmox/metric-server-distilled.d.ts +3 -3
  380. package/dist/proxmox/metric-server-distilled.d.ts.map +1 -1
  381. package/dist/proxmox/metric-server.d.ts +1 -1
  382. package/dist/proxmox/metric-server.d.ts.map +1 -1
  383. package/dist/proxmox/mint.d.ts +1 -1
  384. package/dist/proxmox/mint.d.ts.map +1 -1
  385. package/dist/proxmox/network-apply-read.d.ts +3 -3
  386. package/dist/proxmox/network-apply-read.d.ts.map +1 -1
  387. package/dist/proxmox/network-apply-run.d.ts +1 -1
  388. package/dist/proxmox/network-apply-run.d.ts.map +1 -1
  389. package/dist/proxmox/network-apply.d.ts +1 -1
  390. package/dist/proxmox/network-apply.d.ts.map +1 -1
  391. package/dist/proxmox/node-network-wire.d.ts +2 -2
  392. package/dist/proxmox/node-network-wire.d.ts.map +1 -1
  393. package/dist/proxmox/node-network.d.ts +1 -1
  394. package/dist/proxmox/node-network.d.ts.map +1 -1
  395. package/dist/proxmox/notification-matcher-distilled.d.ts +4 -4
  396. package/dist/proxmox/notification-matcher-distilled.d.ts.map +1 -1
  397. package/dist/proxmox/notification-matcher-lifecycle.d.ts +4 -4
  398. package/dist/proxmox/notification-matcher.d.ts +1 -1
  399. package/dist/proxmox/notification-matcher.d.ts.map +1 -1
  400. package/dist/proxmox/notification-target-distilled.d.ts +4 -4
  401. package/dist/proxmox/notification-target-distilled.d.ts.map +1 -1
  402. package/dist/proxmox/notification-target-lifecycle.d.ts +4 -4
  403. package/dist/proxmox/notification-target.d.ts +1 -1
  404. package/dist/proxmox/notification-target.d.ts.map +1 -1
  405. package/dist/proxmox/pbs-datastore-lifecycle.d.ts +4 -4
  406. package/dist/proxmox/pbs-datastore-wire.d.ts +4 -4
  407. package/dist/proxmox/pbs-datastore-wire.d.ts.map +1 -1
  408. package/dist/proxmox/pbs-datastore.d.ts +1 -1
  409. package/dist/proxmox/pbs-datastore.d.ts.map +1 -1
  410. package/dist/proxmox/pbs-notification-matcher-distilled.d.ts +4 -4
  411. package/dist/proxmox/pbs-notification-matcher-distilled.d.ts.map +1 -1
  412. package/dist/proxmox/pbs-notification-matcher.d.ts +1 -1
  413. package/dist/proxmox/pbs-notification-matcher.d.ts.map +1 -1
  414. package/dist/proxmox/pbs-notification-target-distilled.d.ts +4 -4
  415. package/dist/proxmox/pbs-notification-target-distilled.d.ts.map +1 -1
  416. package/dist/proxmox/pbs-notification-target-lifecycle.d.ts +4 -4
  417. package/dist/proxmox/pbs-notification-target.d.ts +1 -1
  418. package/dist/proxmox/pbs-notification-target.d.ts.map +1 -1
  419. package/dist/proxmox/pbs-prune-job-lifecycle.d.ts +4 -4
  420. package/dist/proxmox/pbs-prune-job-wire.d.ts +4 -4
  421. package/dist/proxmox/pbs-prune-job-wire.d.ts.map +1 -1
  422. package/dist/proxmox/pbs-prune-job.d.ts +1 -1
  423. package/dist/proxmox/pbs-prune-job.d.ts.map +1 -1
  424. package/dist/proxmox/pbs-sync-job-lifecycle.d.ts +4 -4
  425. package/dist/proxmox/pbs-sync-job-wire.d.ts +4 -4
  426. package/dist/proxmox/pbs-sync-job-wire.d.ts.map +1 -1
  427. package/dist/proxmox/pbs-sync-job.d.ts +1 -1
  428. package/dist/proxmox/pbs-sync-job.d.ts.map +1 -1
  429. package/dist/proxmox/pbs-verify-job-lifecycle.d.ts +4 -4
  430. package/dist/proxmox/pbs-verify-job-wire.d.ts +4 -4
  431. package/dist/proxmox/pbs-verify-job-wire.d.ts.map +1 -1
  432. package/dist/proxmox/pbs-verify-job.d.ts +1 -1
  433. package/dist/proxmox/pbs-verify-job.d.ts.map +1 -1
  434. package/dist/proxmox/pool.d.ts +3 -3
  435. package/dist/proxmox/pool.d.ts.map +1 -1
  436. package/dist/proxmox/provision-declare.d.ts +1 -1
  437. package/dist/proxmox/provision-declare.d.ts.map +1 -1
  438. package/dist/proxmox/qemu-lifecycle.d.ts +3 -3
  439. package/dist/proxmox/qemu-lifecycle.d.ts.map +1 -1
  440. package/dist/proxmox/qemu-read.d.ts +1 -1
  441. package/dist/proxmox/qemu-read.d.ts.map +1 -1
  442. package/dist/proxmox/qemu-resize.d.ts +1 -1
  443. package/dist/proxmox/qemu-resize.d.ts.map +1 -1
  444. package/dist/proxmox/qemu-task.d.ts +1 -1
  445. package/dist/proxmox/qemu-task.d.ts.map +1 -1
  446. package/dist/proxmox/qemu.d.ts +1 -1
  447. package/dist/proxmox/qemu.d.ts.map +1 -1
  448. package/dist/proxmox/replication-job-lifecycle.d.ts +6 -6
  449. package/dist/proxmox/replication-job-lifecycle.d.ts.map +1 -1
  450. package/dist/proxmox/replication-job.d.ts +1 -1
  451. package/dist/proxmox/replication-job.d.ts.map +1 -1
  452. package/dist/proxmox/resource-spec.d.ts +1 -1
  453. package/dist/proxmox/resource-spec.d.ts.map +1 -1
  454. package/dist/proxmox/resource.d.ts +8 -8
  455. package/dist/proxmox/role.d.ts +1 -1
  456. package/dist/proxmox/role.d.ts.map +1 -1
  457. package/dist/proxmox/sdn-apply-read.d.ts +1 -1
  458. package/dist/proxmox/sdn-apply-read.d.ts.map +1 -1
  459. package/dist/proxmox/sdn-apply.d.ts +1 -1
  460. package/dist/proxmox/sdn-apply.d.ts.map +1 -1
  461. package/dist/proxmox/sdn-subnet.d.ts +1 -1
  462. package/dist/proxmox/sdn-subnet.d.ts.map +1 -1
  463. package/dist/proxmox/sdn-vnet.d.ts +1 -1
  464. package/dist/proxmox/sdn-vnet.d.ts.map +1 -1
  465. package/dist/proxmox/sdn-zone.d.ts +1 -1
  466. package/dist/proxmox/sdn-zone.d.ts.map +1 -1
  467. package/dist/proxmox/storage-download-lifecycle.d.ts +6 -6
  468. package/dist/proxmox/storage-download-lifecycle.d.ts.map +1 -1
  469. package/dist/proxmox/storage-download-task.d.ts +1 -1
  470. package/dist/proxmox/storage-download-task.d.ts.map +1 -1
  471. package/dist/proxmox/storage-download.d.ts +1 -1
  472. package/dist/proxmox/storage-download.d.ts.map +1 -1
  473. package/dist/proxmox/storage-wire.d.ts +2 -2
  474. package/dist/proxmox/storage-wire.d.ts.map +1 -1
  475. package/dist/proxmox/storage.d.ts +1 -1
  476. package/dist/proxmox/storage.d.ts.map +1 -1
  477. package/dist/proxmox/user-wire.d.ts +2 -2
  478. package/dist/proxmox/user-wire.d.ts.map +1 -1
  479. package/dist/proxmox/user.d.ts +1 -1
  480. package/dist/proxmox/user.d.ts.map +1 -1
  481. package/dist/proxmox/zfs-pool-form.d.ts +2 -2
  482. package/dist/proxmox/zfs-pool-form.d.ts.map +1 -1
  483. package/dist/proxmox/zfs-pool-wire.d.ts +2 -2
  484. package/dist/proxmox/zfs-pool-wire.d.ts.map +1 -1
  485. package/dist/proxmox/zfs-pool.d.ts +1 -1
  486. package/dist/proxmox/zfs-pool.d.ts.map +1 -1
  487. package/dist/release/binary.d.ts +1 -1
  488. package/dist/release/binary.d.ts.map +1 -1
  489. package/dist/release/download.d.ts +1 -1
  490. package/dist/release/download.d.ts.map +1 -1
  491. package/dist/release/index.js +6 -5
  492. package/dist/release/index.js.map +5 -5
  493. package/dist/talos/credentials-write.d.ts +1 -1
  494. package/dist/talos/credentials-write.d.ts.map +1 -1
  495. package/dist/talos/credentials.d.ts +1 -1
  496. package/dist/talos/credentials.d.ts.map +1 -1
  497. package/dist/talos/fake-process.d.ts +2 -2
  498. package/dist/talos/fake-process.d.ts.map +1 -1
  499. package/dist/talos/index.js +7 -7
  500. package/dist/talos/index.js.map +4 -4
  501. package/dist/talos/kubeconfig.d.ts +4 -4
  502. package/dist/talos/kubeconfig.d.ts.map +1 -1
  503. package/dist/talos/machine-config-fixtures.d.ts +1 -1
  504. package/dist/talos/machine-config-fixtures.d.ts.map +1 -1
  505. package/dist/talos/machine-config-read.d.ts +3 -3
  506. package/dist/talos/machine-config-read.d.ts.map +1 -1
  507. package/dist/talos/resource.d.ts +1 -1
  508. package/dist/talos/resource.d.ts.map +1 -1
  509. package/dist/talos/talos-bootstrap-etcd.d.ts +2 -2
  510. package/dist/talos/talos-bootstrap-etcd.d.ts.map +1 -1
  511. package/dist/talos/talos-bootstrap.d.ts +4 -4
  512. package/dist/talos/talos-bootstrap.d.ts.map +1 -1
  513. package/dist/talos/talos-cluster-health.d.ts +4 -4
  514. package/dist/talos/talos-cluster-health.d.ts.map +1 -1
  515. package/dist/talos/talos-machine-config.d.ts +2 -2
  516. package/dist/talos/talos-machine-config.d.ts.map +1 -1
  517. package/dist/talos/talosctl.d.ts +1 -1
  518. package/dist/talos/talosctl.d.ts.map +1 -1
  519. package/dist/telemetry/index.js +4 -4
  520. package/dist/telemetry/index.js.map +3 -3
  521. package/dist/telemetry/redact-serialization.d.ts +2 -2
  522. package/dist/telemetry/redact-serialization.d.ts.map +1 -1
  523. package/dist/unifi/acl-rule-ordering.d.ts +6 -6
  524. package/dist/unifi/acl-rule-ordering.d.ts.map +1 -1
  525. package/dist/unifi/acl-rule.d.ts +6 -6
  526. package/dist/unifi/acl-rule.d.ts.map +1 -1
  527. package/dist/unifi/dns-policy.d.ts +6 -6
  528. package/dist/unifi/dns-policy.d.ts.map +1 -1
  529. package/dist/unifi/fake-unifi.d.ts +1 -1
  530. package/dist/unifi/fake-unifi.d.ts.map +1 -1
  531. package/dist/unifi/firewall-policy-ordering.d.ts +6 -6
  532. package/dist/unifi/firewall-policy-ordering.d.ts.map +1 -1
  533. package/dist/unifi/firewall-policy.d.ts +6 -6
  534. package/dist/unifi/firewall-policy.d.ts.map +1 -1
  535. package/dist/unifi/firewall-zone.d.ts +6 -6
  536. package/dist/unifi/firewall-zone.d.ts.map +1 -1
  537. package/dist/unifi/index.js +2 -2
  538. package/dist/unifi/index.js.map +2 -2
  539. package/dist/unifi/network.d.ts +6 -6
  540. package/dist/unifi/network.d.ts.map +1 -1
  541. package/dist/unifi/providers.d.ts +1 -1
  542. package/dist/unifi/providers.d.ts.map +1 -1
  543. package/dist/unifi/resource.d.ts +1 -1
  544. package/dist/unifi/resource.d.ts.map +1 -1
  545. package/dist/unifi/traffic-matching-list.d.ts +6 -6
  546. package/dist/unifi/traffic-matching-list.d.ts.map +1 -1
  547. package/dist/unifi/wifi-broadcast.d.ts +6 -6
  548. package/dist/unifi/wifi-broadcast.d.ts.map +1 -1
  549. package/dist/verify/cli.js.map +1 -1
  550. package/dist/verify/index.js.map +1 -1
  551. package/docs/distilled-interim.md +1 -1
  552. package/docs/mesh-node.md +1 -1
  553. package/docs/paperless.md +1 -1
  554. package/docs/peers.md +8 -8
  555. package/docs/telemetry.md +1 -1
  556. package/package.json +20 -20
  557. package/src/argocd/fake-argocd.ts +1 -1
  558. package/src/argocd/resource.ts +1 -1
  559. package/src/caddy/admin-transport-scope.test.ts +2 -2
  560. package/src/caddy/admin.ts +1 -1
  561. package/src/caddy/caddy-http-client.ts +5 -5
  562. package/src/caddy/config-adopt.test.ts +2 -2
  563. package/src/caddy/format.ts +2 -2
  564. package/src/caddy/local-admin.test.ts +1 -1
  565. package/src/ceph/auth-entity.ts +1 -1
  566. package/src/ceph/ceph-auth-reconcile.ts +1 -1
  567. package/src/cloudflare/fake-mesh.ts +1 -1
  568. package/src/cloudflare/fake-r2-lock.ts +1 -1
  569. package/src/cloudflare/mesh-node-harness.ts +1 -1
  570. package/src/cloudflare/mesh-node.ts +1 -1
  571. package/src/cloudflare/r2-bucket-lock.ts +1 -1
  572. package/src/discord/fake-discord.ts +1 -1
  573. package/src/discord/resource.ts +1 -1
  574. package/src/forgejo/fake-forgejo.ts +1 -1
  575. package/src/forgejo/resource.ts +1 -1
  576. package/src/google-workspace/fake-google-workspace.ts +1 -1
  577. package/src/google-workspace/resource.ts +1 -1
  578. package/src/grafana/fake-grafana.ts +1 -1
  579. package/src/litellm/access-group.test.ts +1 -1
  580. package/src/litellm/credential-errors.ts +1 -1
  581. package/src/litellm/credential-guards.test.ts +1 -1
  582. package/src/litellm/credential-operations.ts +1 -1
  583. package/src/litellm/credential-rewrite.test.ts +1 -1
  584. package/src/litellm/fake-stack.ts +1 -1
  585. package/src/litellm/key-errors.ts +1 -1
  586. package/src/litellm/key-harness.ts +1 -1
  587. package/src/litellm/key-operations.ts +1 -1
  588. package/src/litellm/key.test.ts +2 -1
  589. package/src/litellm/mcp-server-handlers.test.ts +1 -1
  590. package/src/litellm/mcp-server-registry.test.ts +1 -1
  591. package/src/litellm/model-operations.test.ts +1 -1
  592. package/src/litellm/operations.ts +1 -1
  593. package/src/litellm/pass-through-endpoint-delete-swallow.test.ts +1 -1
  594. package/src/litellm/pass-through-endpoint.test.ts +1 -1
  595. package/src/litellm/pass-through-fetch-client.test.ts +2 -2
  596. package/src/litellm/policy-attachment.test.ts +1 -1
  597. package/src/litellm/policy.test.ts +1 -1
  598. package/src/litellm/team-members.test.ts +1 -1
  599. package/src/litellm/team-read.test.ts +1 -1
  600. package/src/litellm/tool-policy.test.ts +1 -1
  601. package/src/litellm/toolset.test.ts +1 -1
  602. package/src/netbox/fake-netbox.ts +1 -1
  603. package/src/netbox/resource.ts +1 -1
  604. package/src/openbao/adopt-core.test.ts +4 -1
  605. package/src/openbao/adopt-families.test.ts +4 -1
  606. package/src/openbao/adopt-holes.test.ts +1 -1
  607. package/src/openbao/adopt-recovery.test.ts +24 -0
  608. package/src/openbao/approle-login.ts +2 -2
  609. package/src/openbao/auth-method-reconcile.ts +1 -1
  610. package/src/openbao/auth-method.ts +1 -1
  611. package/src/openbao/auth-role-sdk.test.ts +1 -1
  612. package/src/openbao/auth-role.ts +1 -1
  613. package/src/openbao/bao-http.test.ts +3 -3
  614. package/src/openbao/bao-http.ts +4 -4
  615. package/src/openbao/bao-identity.ts +2 -2
  616. package/src/openbao/cloudflare-permission-groups.ts +1 -1
  617. package/src/openbao/cloudflare-role-wire.ts +1 -1
  618. package/src/openbao/cloudflare-role.ts +1 -1
  619. package/src/openbao/distilled-retry.test.ts +3 -3
  620. package/src/openbao/distilled.test.ts +3 -3
  621. package/src/openbao/distilled.ts +2 -2
  622. package/src/openbao/fake-bao.ts +2 -2
  623. package/src/openbao/fake-core.ts +1 -1
  624. package/src/openbao/fake-engines.ts +1 -1
  625. package/src/openbao/fake-families.ts +1 -1
  626. package/src/openbao/fake-stack.ts +13 -3
  627. package/src/openbao/jwt-config.ts +1 -1
  628. package/src/openbao/jwt-role.ts +1 -1
  629. package/src/openbao/kubernetes-role.ts +1 -1
  630. package/src/openbao/mfa-enforcement.ts +1 -1
  631. package/src/openbao/mfa-totp.ts +1 -1
  632. package/src/openbao/mfa-wire.ts +1 -1
  633. package/src/openbao/mount-move.ts +1 -1
  634. package/src/openbao/mount-reconcile.ts +1 -1
  635. package/src/openbao/mount.ts +1 -1
  636. package/src/openbao/pki-role.ts +1 -1
  637. package/src/openbao/plugin-reconcile.ts +1 -1
  638. package/src/openbao/plugin-wire.ts +1 -1
  639. package/src/openbao/plugin.ts +1 -1
  640. package/src/openbao/policy.ts +1 -1
  641. package/src/openbao/proxmox-role.ts +1 -1
  642. package/src/openbao/remount-wire.ts +1 -1
  643. package/src/openbao/rename-occupied.test.ts +1 -1
  644. package/src/openbao/role-reconcile.ts +1 -1
  645. package/src/openbao/role-rename.test.ts +1 -1
  646. package/src/openbao/ssh-role.ts +1 -1
  647. package/src/opnsense/fake-opnsense.ts +1 -1
  648. package/src/opnsense/resource.ts +1 -1
  649. package/src/ownership/probe.ts +51 -2
  650. package/src/paperless/fake-paperless.ts +1 -1
  651. package/src/paperless/matching-types.ts +1 -1
  652. package/src/postgres/connection.ts +1 -1
  653. package/src/postgres/database-bigint-serialization.test.ts +1 -1
  654. package/src/postgres/database-sql.ts +1 -1
  655. package/src/postgres/database.ts +1 -1
  656. package/src/postgres/fake-grants-read.ts +1 -1
  657. package/src/postgres/fake-grants-sql.ts +1 -1
  658. package/src/postgres/fake-grants-write.ts +1 -1
  659. package/src/postgres/fake-role-sql.ts +1 -1
  660. package/src/postgres/fake-schema-drop.ts +1 -1
  661. package/src/postgres/fake-schema-sql.ts +1 -1
  662. package/src/postgres/fake-sql.ts +1 -1
  663. package/src/postgres/grants-existence.ts +1 -1
  664. package/src/postgres/grants-ops.ts +1 -1
  665. package/src/postgres/grants-ownership.ts +1 -1
  666. package/src/postgres/grants-read-defaults.ts +1 -1
  667. package/src/postgres/grants-read.ts +1 -1
  668. package/src/postgres/grants-relkind-wire.test.ts +6 -4
  669. package/src/postgres/installed-classifier.ts +1 -1
  670. package/src/postgres/psql-executor.ts +1 -6
  671. package/src/postgres/role-membership-sql.ts +1 -1
  672. package/src/postgres/role-password-transports.test.ts +2 -2
  673. package/src/postgres/role-sql.ts +1 -1
  674. package/src/postgres/role.ts +1 -1
  675. package/src/postgres/schema-assert.ts +1 -1
  676. package/src/postgres/schema-delete.ts +1 -1
  677. package/src/postgres/schema-drop-2bp01.test.ts +1 -1
  678. package/src/postgres/schema-drop-sql.ts +1 -1
  679. package/src/postgres/schema-drop.test.ts +1 -1
  680. package/src/postgres/schema-reconcile.ts +1 -1
  681. package/src/postgres/schema-socket.test.ts +1 -1
  682. package/src/postgres/schema-sql.ts +1 -1
  683. package/src/postgres/search-path.ts +1 -1
  684. package/src/proxmox/ceph-flag-wire.test.ts +1 -1
  685. package/src/proxmox/ceph-fs-destroy-sdk.test.ts +1 -1
  686. package/src/proxmox/ceph-pool-write.test.ts +1 -1
  687. package/src/proxmox/client.test.ts +2 -2
  688. package/src/proxmox/client.ts +2 -2
  689. package/src/proxmox/credentials.test.ts +1 -1
  690. package/src/proxmox/distilled-pbs.test.ts +1 -1
  691. package/src/proxmox/distilled-pbs.ts +1 -1
  692. package/src/proxmox/distilled-pve.test.ts +2 -2
  693. package/src/proxmox/distilled-pve.ts +1 -1
  694. package/src/proxmox/fake-pbs-jobs.ts +1 -1
  695. package/src/proxmox/fake-pve.ts +1 -1
  696. package/src/proxmox/lease-cache-mint.test.ts +1 -1
  697. package/src/proxmox/live-core-fixtures.ts +1 -1
  698. package/src/proxmox/lxc-distilled.test.ts +1 -1
  699. package/src/proxmox/lxc-harness.ts +1 -1
  700. package/src/proxmox/members-timeout.test.ts +3 -3
  701. package/src/proxmox/members.test.ts +1 -1
  702. package/src/proxmox/members.ts +4 -4
  703. package/src/proxmox/mint.ts +4 -4
  704. package/src/proxmox/node-network-read-failure.test.ts +1 -1
  705. package/src/proxmox/qemu-lifecycle.ts +1 -1
  706. package/src/proxmox/read-failure-propagation.test.ts +1 -1
  707. package/src/proxmox/resource-spec.ts +1 -1
  708. package/src/proxmox/storage-read-failure.test.ts +1 -1
  709. package/src/proxmox/typed-absence.test.ts +2 -2
  710. package/src/proxmox/unreadable-read.test.ts +1 -1
  711. package/src/proxmox/user.test.ts +1 -1
  712. package/src/proxmox/zfs-pool-read-failure.test.ts +1 -1
  713. package/src/release/adopt-parity.test.ts +3 -1
  714. package/src/release/apply-pins.test.ts +2 -2
  715. package/src/release/binary-root.test.ts +2 -2
  716. package/src/release/binary.ts +9 -2
  717. package/src/release/download.test.ts +3 -3
  718. package/src/release/download.ts +1 -1
  719. package/src/release/fake-deploy.ts +2 -2
  720. package/src/release/fake-engine.ts +2 -2
  721. package/src/release/fake-provider.ts +2 -2
  722. package/src/release/plan.test.ts +2 -2
  723. package/src/release/providers.ts +1 -1
  724. package/src/talos/credentials-write.test.ts +1 -1
  725. package/src/talos/credentials-write.ts +2 -2
  726. package/src/talos/credentials.test.ts +1 -1
  727. package/src/talos/credentials.ts +2 -2
  728. package/src/talos/fake-process.ts +2 -2
  729. package/src/talos/kubeconfig.test.ts +1 -1
  730. package/src/talos/machine-config-fixtures.ts +1 -1
  731. package/src/talos/resource.ts +1 -1
  732. package/src/talos/talos-bootstrap.test.ts +1 -1
  733. package/src/talos/talos-cluster-health.test.ts +1 -1
  734. package/src/talos/talosctl.ts +2 -2
  735. package/src/telemetry/http-client-sealing.test.ts +2 -2
  736. package/src/telemetry/layer.test.ts +3 -3
  737. package/src/telemetry/layer.ts +2 -2
  738. package/src/telemetry/redact-serialization.ts +2 -2
  739. package/src/unifi/fake-unifi.ts +1 -1
  740. package/src/unifi/get-only-guard.test.ts +3 -3
  741. package/src/unifi/resource.ts +1 -1
  742. package/src/verify/args.ts +1 -1
package/README.md CHANGED
@@ -3,12 +3,12 @@
3
3
  Custom [Alchemy](https://alchemy.run) providers for gaps the vendor SDK leaves.
4
4
 
5
5
  ```sh
6
- bun add @homeflare/alchemy alchemy@2.0.0-beta.79 effect@4.0.0-rc.115 \
7
- @effect/platform-node@4.0.0-rc.115 mime@4.1.0 \
8
- @distilled.cloud/cloudflare@1.0.0-rc.12 @distilled.cloud/forgejo@1.0.0-rc.12 \
9
- @distilled.cloud/discord@1.0.0-rc.12 @distilled.cloud/google-workspace@1.0.0-rc.12 \
10
- @distilled.cloud/argocd@1.0.0-rc.12 \
11
- @effect/sql-pg@4.0.0-rc.115
6
+ bun add @homeflare/alchemy alchemy@2.0.0-beta.81 effect@4.0.1 \
7
+ @effect/platform-node@4.0.1 mime@4.1.0 \
8
+ @distilled.cloud/cloudflare@1.0.0-rc.13 @distilled.cloud/forgejo@1.0.0-rc.13 \
9
+ @distilled.cloud/discord@1.0.0-rc.13 @distilled.cloud/google-workspace@1.0.0-rc.13 \
10
+ @distilled.cloud/argocd@1.0.0-rc.13 \
11
+ @effect/sql-pg@4.0.1
12
12
  ```
13
13
 
14
14
  ⛔ **Every one of those is required, and you also need an `overrides` block** — see
@@ -398,10 +398,10 @@ two copies load in one process.
398
398
  ```json
399
399
  {
400
400
  "overrides": {
401
- "effect": "4.0.0-rc.115",
402
- "@effect/platform-node": "4.0.0-rc.115",
403
- "@effect/platform-node-shared": "4.0.0-rc.115",
404
- "@effect/platform-bun": "4.0.0-rc.115",
401
+ "effect": "4.0.1",
402
+ "@effect/platform-node": "4.0.1",
403
+ "@effect/platform-node-shared": "4.0.1",
404
+ "@effect/platform-bun": "4.0.1",
405
405
  "rolldown": "1.2.8",
406
406
  "redis": "6.3.0"
407
407
  }
@@ -79,7 +79,7 @@ export declare const handlers: {
79
79
  list: () => Effect.Effect<never[], never, never>;
80
80
  read: ({ olds }: {
81
81
  olds: ClusterProps;
82
- }) => Effect.Effect<ClusterAttributes | undefined, ClusterError, import("effect/unstable/http/HttpClient").HttpClient>;
82
+ }) => Effect.Effect<ClusterAttributes | undefined, ClusterError, import("effect/http/HttpClient").HttpClient>;
83
83
  diff: ({ news, output }: {
84
84
  news: import("alchemy").Input<ClusterProps>;
85
85
  output: ClusterAttributes | undefined;
@@ -89,14 +89,14 @@ export declare const handlers: {
89
89
  readonly action: 'update';
90
90
  } | {
91
91
  readonly action: 'noop';
92
- } | undefined, ClusterError, import("effect/unstable/http/HttpClient").HttpClient>;
92
+ } | undefined, ClusterError, import("effect/http/HttpClient").HttpClient>;
93
93
  reconcile: ({ news }: {
94
94
  news: ClusterProps;
95
- }) => Effect.Effect<ClusterAttributes, ClusterError, import("effect/unstable/http/HttpClient").HttpClient>;
95
+ }) => Effect.Effect<ClusterAttributes, ClusterError, import("effect/http/HttpClient").HttpClient>;
96
96
  delete: ({ olds }: {
97
97
  olds: ClusterProps;
98
- }) => Effect.Effect<void, ClusterError, import("effect/unstable/http/HttpClient").HttpClient>;
98
+ }) => Effect.Effect<void, ClusterError, import("effect/http/HttpClient").HttpClient>;
99
99
  };
100
- export declare const ArgocdClusterProvider: () => import("effect/Layer").Layer<Provider.Provider<ArgocdCluster>, never, import("effect/unstable/http/HttpClient").HttpClient>;
100
+ export declare const ArgocdClusterProvider: () => import("effect/Layer").Layer<Provider.Provider<ArgocdCluster>, never, import("effect/http/HttpClient").HttpClient>;
101
101
  export {};
102
102
  //# sourceMappingURL=cluster.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cluster.d.ts","sourceRoot":"","sources":["../../src/argocd/cluster.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,KAAK,QAAQ,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,MAAM,MAAM,gCAAgC,CAAC;AAEzD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,KAAK,OAAO,EAAc,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,UAAU,EAA2B,MAAM,eAAe,CAAC;AAElG,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CACrC;AAED,MAAM,WAAW,YAAY;IAC3B,6EAA6E;IAC7E,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1C,WAAW,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kFAAkF;IAClF,WAAW,CAAC,EAAE,qBAAqB,CAAC;CACrC;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAC1C,gBAAgB,EAAE,OAAO,GAAG,SAAS,CAAC;IACtC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;IACrD,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;IAC1D,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,WAAW,EAAE,OAAO,GAAG,SAAS,CAAC;IACjC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC;AAED,MAAM,WAAW,aAAc,SAAQ,QAAQ,CAC7C,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,KAAK,EACL,kBAAkB,CACnB;CAAG;AAEJ,eAAO,MAAM,aAAa,gDAExB,CAAC;;;;AAEH,qGAAqG;AACrG,qBAAa,gCAAiC,SAAQ,sCAEpD;IACA,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;CAAG;AA0EL,KAAK,YAAY,GACb,MAAM,CAAC,sBAAsB,GAC7B,MAAM,CAAC,yBAAyB,GAChC,MAAM,CAAC,yBAAyB,GAChC,gCAAgC,CAAC;AAErC,sFAAsF;AACtF,eAAO,MAAM,IAAI,EAAE,UAAU,CAC3B,YAAY,EACZ,MAAM,CAAC,eAAe,EACtB,iBAAiB,EACjB,YAAY,CA8Cb,CAAC;AAEF,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;CAAuB,CAAC;AAE7C,eAAO,MAAM,qBAAqB,mIACmD,CAAC"}
1
+ {"version":3,"file":"cluster.d.ts","sourceRoot":"","sources":["../../src/argocd/cluster.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,KAAK,QAAQ,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,MAAM,MAAM,gCAAgC,CAAC;AAEzD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,KAAK,OAAO,EAAc,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,UAAU,EAA2B,MAAM,eAAe,CAAC;AAElG,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CACrC;AAED,MAAM,WAAW,YAAY;IAC3B,6EAA6E;IAC7E,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1C,WAAW,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kFAAkF;IAClF,WAAW,CAAC,EAAE,qBAAqB,CAAC;CACrC;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAC1C,gBAAgB,EAAE,OAAO,GAAG,SAAS,CAAC;IACtC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;IACrD,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;IAC1D,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,WAAW,EAAE,OAAO,GAAG,SAAS,CAAC;IACjC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC;AAED,MAAM,WAAW,aAAc,SAAQ,QAAQ,CAC7C,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,KAAK,EACL,kBAAkB,CACnB;CAAG;AAEJ,eAAO,MAAM,aAAa,gDAExB,CAAC;;;;AAEH,qGAAqG;AACrG,qBAAa,gCAAiC,SAAQ,sCAEpD;IACA,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;CAAG;AA0EL,KAAK,YAAY,GACb,MAAM,CAAC,sBAAsB,GAC7B,MAAM,CAAC,yBAAyB,GAChC,MAAM,CAAC,yBAAyB,GAChC,gCAAgC,CAAC;AAErC,sFAAsF;AACtF,eAAO,MAAM,IAAI,EAAE,UAAU,CAC3B,YAAY,EACZ,MAAM,CAAC,eAAe,EACtB,iBAAiB,EACjB,YAAY,CA8Cb,CAAC;AAEF,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;CAAuB,CAAC;AAE7C,eAAO,MAAM,qBAAqB,0HACmD,CAAC"}
@@ -38,5 +38,5 @@ export declare const fakeArgocd: (route: (method: string, url: URL, body: unknow
38
38
  * test calls `spec.fetchLive`/`spec.upsert`/`spec.destroy` directly, with this explicit layer,
39
39
  * exercising exactly the same production code without that env seam.
40
40
  */
41
- export declare const fakeArgocdLayer: (fetchFn: typeof globalThis.fetch, creds?: Layer.Layer<Credentials>) => Layer.Layer<Credentials | import("effect/unstable/http/HttpClient").HttpClient, never, never>;
41
+ export declare const fakeArgocdLayer: (fetchFn: typeof globalThis.fetch, creds?: Layer.Layer<Credentials>) => Layer.Layer<Credentials | import("effect/http/HttpClient").HttpClient, never, never>;
42
42
  //# sourceMappingURL=fake-argocd.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fake-argocd.d.ts","sourceRoot":"","sources":["../../src/argocd/fake-argocd.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,KAAK,WAAW,EAAa,MAAM,qCAAqC,CAAC;AAClF,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAGtC,eAAO,MAAM,SAAS,+BAA+B,CAAC;AACtD,eAAO,MAAM,UAAU,6BAA6B,CAAC;AAErD,MAAM,MAAM,IAAI,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AAE9F,4EAA4E;AAC5E,eAAO,MAAM,WAAW,WAAY,MAAM,WAAW,MAAM,SAAS,MAAM,aACZ,CAAC;AAE/D;;;GAGG;AACH,eAAO,MAAM,UAAU,UACd,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,QAAQ;;;CAejF,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,eAAe,YACjB,OAAO,UAAU,CAAC,KAAK,UACzB,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,kGAC+D,CAAC"}
1
+ {"version":3,"file":"fake-argocd.d.ts","sourceRoot":"","sources":["../../src/argocd/fake-argocd.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,KAAK,WAAW,EAAa,MAAM,qCAAqC,CAAC;AAClF,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAGtC,eAAO,MAAM,SAAS,+BAA+B,CAAC;AACtD,eAAO,MAAM,UAAU,6BAA6B,CAAC;AAErD,MAAM,MAAM,IAAI,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AAE9F,4EAA4E;AAC5E,eAAO,MAAM,WAAW,WAAY,MAAM,WAAW,MAAM,SAAS,MAAM,aACZ,CAAC;AAE/D;;;GAGG;AACH,eAAO,MAAM,UAAU,UACd,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,QAAQ;;;CAejF,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,eAAe,YACjB,OAAO,UAAU,CAAC,KAAK,UACzB,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,yFAC+D,CAAC"}
@@ -4,7 +4,7 @@
4
4
  "sourcesContent": [
5
5
  "/**\n * `Argocd.Cluster` — a target Kubernetes cluster registered with an Argo CD instance\n * (`/api/v1/clusters`) so Applications can deploy onto it. REST-managed, not a CRD; see\n * `docs/argocd.md`. This is how the house will register the Talos-on-PVE cluster itself with\n * Argo CD once both exist — Argo CD's own control-plane cluster (where Argo CD is installed) is\n * registered implicitly as `https://kubernetes.default.svc` and never needs this resource.\n *\n * ⚠️ ONLY BEARER-TOKEN AND STATIC TLS CLIENT-CERT AUTH ARE SUPPORTED. `V1alpha1ClusterConfig` also\n * carries `awsAuthConfig` (EKS IAM) and `execProviderConfig` (an exec plugin) — measured in\n * `services/argocd.ts`, distilled homeflare/base — neither of which applies to a Talos cluster;\n * left unbuilt rather than modeled and untested.\n *\n * ⚠️ NO LIVE ARGO CD INSTANCE EXISTS ON THE ESTATE (2026-09-24) — see `docs/argocd.md`.\n *\n * ⛔ `defaultRemovalPolicy: 'retain'` — deregistering a cluster Applications still target breaks\n * their sync. `delete` below is fully implemented; opt in with `.pipe(RemovalPolicy.destroy())`.\n */\nimport { Resource } from 'alchemy';\nimport * as Provider from 'alchemy/Provider';\nimport * as argocd from '@distilled.cloud/argocd/argocd';\nimport * as Data from 'effect/Data';\nimport * as Effect from 'effect/Effect';\nimport { type FromEnv, resolveAll } from '../secrets/write-only.ts';\nimport { type ArgocdRequirements, type ArgocdSpec, argocdHandlers, present } from './resource.ts';\n\nexport interface ClusterCredentialRefs {\n readonly password?: FromEnv;\n readonly bearerToken?: FromEnv;\n readonly tlsClientKeyData?: FromEnv;\n}\n\nexport interface ClusterProps {\n /** The cluster's API server URL — identity key; changing it is a replace. */\n server: string;\n name?: string;\n /** Restricts this cluster to one Argo CD project; omit for every project. */\n project?: string;\n namespaces?: readonly string[];\n clusterResources?: boolean;\n labels?: Readonly<Record<string, string>>;\n annotations?: Readonly<Record<string, string>>;\n proxyUrl?: string;\n username?: string;\n tlsCaData?: string;\n /** The client certificate itself — public, unlike its key. */\n tlsCertData?: string;\n tlsInsecure?: boolean;\n tlsServerName?: string;\n /** Write-only — never a value here, only env var names. See the module header. */\n credentials?: ClusterCredentialRefs;\n}\n\nexport interface ClusterAttributes {\n server: string;\n name: string | undefined;\n project: string | undefined;\n namespaces: readonly string[] | undefined;\n clusterResources: boolean | undefined;\n labels: Readonly<Record<string, string>> | undefined;\n annotations: Readonly<Record<string, string>> | undefined;\n proxyUrl: string | undefined;\n username: string | undefined;\n tlsCaData: string | undefined;\n tlsCertData: string | undefined;\n tlsInsecure: boolean | undefined;\n tlsServerName: string | undefined;\n}\n\nexport interface ArgocdCluster extends Resource<\n 'Argocd.Cluster',\n ClusterProps,\n ClusterAttributes,\n never,\n ArgocdRequirements\n> {}\n\nexport const ArgocdCluster = Resource<ArgocdCluster>('Argocd.Cluster', {\n defaultRemovalPolicy: 'retain',\n});\n\n/** Domain refusal, not a distilled error — a declared credential's env var is unset at call time. */\nexport class ArgocdClusterSecretEnvUnsetError extends Data.TaggedError(\n 'ArgocdClusterSecretEnvUnsetError',\n)<{\n readonly message: string;\n}> {}\n\ninterface ResolvedClusterCredentials {\n readonly password?: string;\n readonly bearerToken?: string;\n readonly tlsClientKeyData?: string;\n}\n\nconst resolveClusterCredentials = (\n refs: ClusterCredentialRefs,\n): Effect.Effect<ResolvedClusterCredentials, ArgocdClusterSecretEnvUnsetError> => {\n const declared: Record<string, FromEnv> = {};\n if (refs.password !== undefined) declared.password = refs.password;\n if (refs.bearerToken !== undefined) declared.bearerToken = refs.bearerToken;\n if (refs.tlsClientKeyData !== undefined) declared.tlsClientKeyData = refs.tlsClientKeyData;\n const { values, missing } = resolveAll(declared);\n if (missing.length > 0) {\n return Effect.fail(\n new ArgocdClusterSecretEnvUnsetError({\n message:\n `credential write requires ${missing.join(', ')}, unset or empty in the ` +\n 'deploying environment. Export it and deploy again.',\n }),\n );\n }\n return Effect.succeed(values as ResolvedClusterCredentials);\n};\n\n/**\n * `V1alpha1Cluster.labels`/`.annotations` decode as `{ [key: string]: string | undefined }` — a\n * generated index-signature artifact, not a real possibility on the wire (a label/annotation map\n * never carries an `undefined` value). Cast at this one boundary rather than threading the looser\n * type through `ClusterAttributes`.\n */\nconst attributesOf = (live: argocd.V1alpha1Cluster): ClusterAttributes => ({\n annotations: live.annotations as Record<string, string> | undefined,\n clusterResources: live.clusterResources,\n labels: live.labels as Record<string, string> | undefined,\n name: live.name,\n namespaces: live.namespaces,\n project: live.project,\n proxyUrl: live.config?.proxyUrl,\n server: live.server ?? '',\n tlsCaData: live.config?.tlsClientConfig?.caData,\n tlsCertData: live.config?.tlsClientConfig?.certData,\n tlsInsecure: live.config?.tlsClientConfig?.insecure,\n tlsServerName: live.config?.tlsClientConfig?.serverName,\n username: live.config?.username,\n});\n\nconst sameRecord = (\n a: Readonly<Record<string, string>> | undefined,\n b: Readonly<Record<string, string>> | undefined,\n) =>\n JSON.stringify(Object.entries(a ?? {}).sort()) === JSON.stringify(Object.entries(b ?? {}).sort());\n\nconst sameList = (a: readonly string[] | undefined, b: readonly string[] | undefined) =>\n JSON.stringify([...(a ?? [])].sort()) === JSON.stringify([...(b ?? [])].sort());\n\n/** Only the plain fields — Argo CD never returns the password/bearer token/private key back. */\nconst plainMatches = (attrs: ClusterAttributes, props: ClusterProps): boolean =>\n (props.name ?? undefined) === (attrs.name ?? undefined) &&\n (props.project ?? undefined) === (attrs.project ?? undefined) &&\n sameList(props.namespaces, attrs.namespaces) &&\n Boolean(props.clusterResources) === Boolean(attrs.clusterResources) &&\n sameRecord(props.labels, attrs.labels) &&\n sameRecord(props.annotations, attrs.annotations) &&\n (props.proxyUrl ?? undefined) === (attrs.proxyUrl ?? undefined) &&\n (props.username ?? undefined) === (attrs.username ?? undefined) &&\n (props.tlsCaData ?? undefined) === (attrs.tlsCaData ?? undefined) &&\n (props.tlsCertData ?? undefined) === (attrs.tlsCertData ?? undefined) &&\n Boolean(props.tlsInsecure) === Boolean(attrs.tlsInsecure) &&\n (props.tlsServerName ?? undefined) === (attrs.tlsServerName ?? undefined);\n\ntype ClusterError =\n | argocd.GetClusterServiceError\n | argocd.CreateClusterServiceError\n | argocd.DeleteClusterServiceError\n | ArgocdClusterSecretEnvUnsetError;\n\n/** ★ EXPORTED for direct testing against `fake-argocd.ts` — see `cluster.test.ts`. */\nexport const spec: ArgocdSpec<\n ClusterProps,\n argocd.V1alpha1Cluster,\n ClusterAttributes,\n ClusterError\n> = {\n attributes: (live) => attributesOf(live),\n // ★ Catches the DELETE call's own NotFound too — closes the TOCTOU race between the pre-check\n // `fetchLive` above and this call. Matches upstream's Hetzner/Certificate.ts `deleteById`.\n destroy: (props) =>\n argocd\n .deleteClusterService({ id_value: props.server })\n .pipe(Effect.catchTag('NotFound', () => Effect.void)),\n identityOfAttributes: (attrs) => attrs.server,\n identityOfProps: (props) => props.server,\n fetchLive: (props) =>\n argocd\n .getClusterService({ id_value: props.server })\n .pipe(Effect.catchTag('NotFound', () => Effect.succeed(undefined))),\n matches: plainMatches,\n upsert: (props) =>\n resolveClusterCredentials(props.credentials ?? {}).pipe(\n Effect.flatMap((creds) =>\n argocd.createClusterService(\n present({\n upsert: true,\n annotations: props.annotations,\n clusterResources: props.clusterResources,\n config: present({\n bearerToken: creds.bearerToken,\n password: creds.password,\n proxyUrl: props.proxyUrl,\n tlsClientConfig: present({\n caData: props.tlsCaData,\n certData: props.tlsCertData,\n insecure: props.tlsInsecure,\n keyData: creds.tlsClientKeyData,\n serverName: props.tlsServerName,\n }),\n username: props.username,\n }),\n labels: props.labels,\n name: props.name,\n namespaces: props.namespaces === undefined ? undefined : [...props.namespaces],\n project: props.project,\n server: props.server,\n }),\n ),\n ),\n ),\n};\n\nexport const handlers = argocdHandlers(spec);\n\nexport const ArgocdClusterProvider = () =>\n Provider.effect(ArgocdCluster, Effect.succeed(ArgocdCluster.Provider.of(handlers)));\n",
6
6
  "/**\n * Values a declaration may SEND and must never STORE — a webhook secret, a header carrying a\n * credential, an smtp password — and the one form in which a plan may still remember them.\n *\n * ★ FAMILY-NEUTRAL ON PURPOSE, MOVED HERE FROM `proxmox/` 2026-09-22. The rule it encodes is not\n * about Proxmox: Alchemy's state store is the same unencrypted store for every provider, so the\n * Cloudflare MCP server entry's `auth_credentials` needs exactly this shape. A second copy under\n * `cloudflare/` would be two seal formats for one rule; a cross-family import would make\n * Cloudflare depend on Proxmox. Neither; it lives on its own.\n *\n * ⛔ A SECRET PROP IS A SECRET IN THE STATE STORE, WHATEVER TYPE IT HAS. Alchemy persists props as\n * well as attributes — `delete` is handed `olds`, which can only have come from the store — and\n * it does not encrypt either: `StateEncoding.ts` TAGS a `Redacted` value and writes the inner\n * value beside the tag. So `Redacted` hides a secret from a log line and from nothing else.\n * notification-target.ts (PVE) answered that by making no secret declarable at all, and paid\n * for it: an authenticated smtp target or a signed webhook could not be created from code.\n * ★ SO THE PROP HOLDS A NAME, NOT A VALUE. `{ fromEnv: 'PBS_HOOK_TOKEN' }` names the variable the\n * DEPLOYING process reads at call time — the shape forgejo/org-actions-secrets.ts already uses.\n * The name is what lands in state; the value exists only in that process's memory and on the\n * wire to the server.\n *\n * ⚠️ A PLAN STILL NEEDS TO KNOW WHETHER A VALUE CHANGED, AND IT CANNOT ASK THE SERVER. PBS returns a\n * webhook secret's NAME and never its value, and never returns an smtp password at all. So what\n * was last written is remembered as a SEAL: a salted scrypt digest, which lets the next plan\n * check \"is the value in my environment the one I wrote\" without the store holding anything a\n * reader could send to PBS.\n * ⚠️ A DIGEST OF A GUESSABLE SECRET IS STILL GUESSABLE. The salt defeats precomputed tables and\n * scrypt makes each guess cost memory and time; neither makes a dictionary word safe. The\n * remedy is a secret worth the name — a random token — not a faster hash.\n */\nimport { Buffer } from 'node:buffer';\nimport { randomBytes, scryptSync, timingSafeEqual } from 'node:crypto';\n\n/** A write-only value, by the NAME of the environment variable holding it. Never the value. */\nexport interface FromEnv {\n readonly fromEnv: string;\n}\n\n/** Where a value is looked up. Defaults to `process.env`, read at call time, never at load. */\nexport type Environment = Readonly<Record<string, string | undefined>>;\n\n/**\n * Each `name → FromEnv` resolved, or the variable names that could not be.\n *\n * ⚠️ AN EMPTY VARIABLE IS A MISSING ONE. A secret renderer that failed writes `NAME=` rather than\n * omitting the line, and sending `''` would store an empty secret on the server — a webhook that\n * authenticates with nothing, reported as a successful deploy.\n * ⚠️ THE VALUE IS NOT TRIMMED. A token with a trailing newline is a broken header either way, and\n * trimming here would make the seal disagree with a value written by any other tool.\n */\nexport const resolveAll = (\n refs: Readonly<Record<string, FromEnv>>,\n env: Environment = process.env,\n): { readonly values: Readonly<Record<string, string>>; readonly missing: readonly string[] } => {\n const values: Record<string, string> = {};\n const missing: string[] = [];\n for (const [key, ref] of Object.entries(refs)) {\n const value = env[ref.fromEnv];\n if (value === undefined || value === '') missing.push(ref.fromEnv);\n else values[key] = value;\n }\n return { missing: [...new Set(missing)].sort(), values };\n};\n\n/**\n * ★ PARAMETERS ARE NODE'S OWN SCRYPT DEFAULTS (N 2^14, r 8, p 1) — 16 MiB and tens of\n * milliseconds per digest. Plan runs it a handful of times per resource, which is noise, and a\n * guesser runs it once per guess, which is the point.\n */\nconst COST = { N: 16_384, maxmem: 64 * 1024 * 1024, p: 1, r: 8 } as const;\nconst PREFIX = 'scrypt';\n\n/** Key order must not change a digest, so entries are sorted and serialised as JSON pairs. */\nconst canonical = (values: Readonly<Record<string, string>>): string =>\n JSON.stringify(\n Object.keys(values)\n .sort()\n .map((key) => [key, values[key]]),\n );\n\nconst digest = (salt: Buffer, values: Readonly<Record<string, string>>): Buffer =>\n scryptSync(canonical(values), salt, 32, COST);\n\n/**\n * `scrypt:<salt>:<digest>`, or `''` when there is nothing to seal.\n *\n * ★ A RANDOM SALT BY DEFAULT, FOR WHAT THIS PROVIDER WROTE. Pass a fixed one only for a value the\n * server returns anyway (a header), where a fresh salt per read would churn the state row on\n * every plan without protecting anything the server does not already show its auditors.\n */\nexport const seal = (values: Readonly<Record<string, string>>, salt?: string): string => {\n if (Object.keys(values).length === 0) return '';\n const bytes = salt === undefined ? randomBytes(16) : Buffer.from(salt, 'utf8');\n return `${PREFIX}:${bytes.toString('base64url')}:${digest(bytes, values).toString('base64url')}`;\n};\n\n/**\n * Whether `values` are the ones `sealed` was made from.\n *\n * ⚠️ A MALFORMED OR EMPTY SEAL ANSWERS FALSE, never throws: callers decide what \"no evidence\"\n * means, and every caller here treats it as \"cannot tell\" rather than as drift.\n */\nexport const sealMatches = (sealed: string, values: Readonly<Record<string, string>>): boolean => {\n if (sealed === '') return Object.keys(values).length === 0;\n const [prefix, salt, stored, extra] = sealed.split(':');\n if (prefix !== PREFIX || salt === undefined || stored === undefined || extra !== undefined) {\n return false;\n }\n const expected = Buffer.from(stored, 'base64url');\n const actual = digest(Buffer.from(salt, 'base64url'), values);\n return expected.length === actual.length && timingSafeEqual(expected, actual);\n};\n",
7
- "/**\n * One shape for every Argo CD REST object — Repository, RepoCreds, Cluster — the same four\n * operations, different distilled call.\n *\n * ⛔ THIS IS A NEAR-VERBATIM COPY OF `../forgejo/resource.ts`'S ENGINE, ON PURPOSE. Both SDKs speak\n * plain bearer-authenticated REST with a real `NotFound` tag (see the family's own docs.md for\n * why Argo CD, UNLIKE Discord, gets a genuine typed 404 — measured from `protocol.ts`), so the\n * same read/diff/reconcile/destroy shape applies unchanged. A second hand-rolled engine here\n * would just be forgejo's with the names swapped.\n *\n * ⚠️ NO `Unowned`/`adopt(true)` WRAPPING HERE — mirrors forgejo's own choice (not netbox's or\n * discord's `Unowned` marker), not an oversight. A live match on a cold read (no persisted\n * `output`) is treated as ours, same as every other forgejo-shaped family in this kit today.\n *\n * ⚠️ `NotFound` IS FOLDED TO \"ABSENT\" INSIDE EACH RESOURCE FILE'S OWN `fetchLive`, NOT HERE.\n * `Effect.catchTag`'s tag-literal inference needs a concrete error union to resolve `\"NotFound\"`\n * against; a spec's `E` is only concrete at each resource file's own call site. So every\n * `fetchLive` ends `.pipe(Effect.catchTag('NotFound', () => Effect.succeed(undefined)))` itself.\n */\nimport { isResolved } from 'alchemy/Diff';\nimport type { Input } from 'alchemy/Input';\nimport { CredentialsFromEnv } from '@distilled.cloud/argocd/Credentials';\nimport type { ArgocdOpContext } from '@distilled.cloud/argocd/Protocol';\nimport * as Effect from 'effect/Effect';\nimport type * as HttpClient from 'effect/unstable/http/HttpClient';\n\n/** What every handler needs from the caller's runtime, once `argocdHandlers` bakes in credentials. */\nexport type ArgocdRequirements = HttpClient.HttpClient;\n\n/**\n * Strips undefined-valued keys, mapping each to a genuinely optional key rather than a present\n * key typed `X | undefined`. `tsconfig.base.json` turns on `exactOptionalPropertyTypes`, and every\n * generated Argo CD request type declares its optional fields the strict way (`foo?: X`, never\n * `foo?: X | undefined`) — so `{ foo: props.foo }` where `props.foo?: X` does not typecheck against\n * it even when `foo` is genuinely absent at runtime. Every resource file's request body goes\n * through this once, mirroring `forgejo/repository.ts#editForm`'s conditional-spread idiom, just\n * generalized instead of repeated per field.\n */\nexport const present = <T extends object>(obj: T): { [K in keyof T]?: Exclude<T[K], undefined> } =>\n Object.fromEntries(Object.entries(obj).filter(([, v]) => v !== undefined)) as never;\n\n/**\n * One Argo CD object's distilled calls. `Live` is whatever the SDK decodes (`V1alpha1Repository`,\n * `V1alpha1Cluster`, …); `E` is left to each resource file to declare.\n */\nexport type ArgocdSpec<Props extends object, Live, Attributes, E> = {\n /**\n * The identity key's value — `repo`/`url`/`server` depending on the resource — read off\n * declared props and off persisted attributes respectively. `diff` compares the two to detect\n * an identity change, which `upsert`'s single create-or-converge call cannot express as an\n * in-place update: Argo CD indexes each of these objects BY this value, so a changed identity\n * means a create at the new key, never a rename, and the object left at the old key must be\n * deleted — exactly what a `replace` diff action tells Alchemy's own Plan/Apply to do (delete\n * the old physical object, using `olds`, then reconcile `news`). Without this, a changed\n * `repo`/`url`/`server` orphans the old, still-credentialed object with no state pointing at it\n * — found in adversarial review 2026-09-24, fixed here.\n */\n readonly identityOfProps: (props: Props) => string;\n readonly identityOfAttributes: (attributes: Attributes) => string;\n /** Already folds the SDK's `NotFound` to `undefined` via its own `catchTag` — see the note above. */\n readonly fetchLive: (props: Props) => Effect.Effect<Live | undefined, E, ArgocdOpContext>;\n readonly attributes: (live: Live, props: Props) => Attributes | undefined;\n readonly matches: (attributes: Attributes, props: Props) => boolean;\n /**\n * A single upsert call — every Argo CD create endpoint this family uses takes `upsert: true`\n * and converges create-or-update in one request, so there is no separate update path to wire.\n */\n readonly upsert: (props: Props) => Effect.Effect<unknown, E, ArgocdOpContext>;\n readonly destroy: (props: Props, live: Live) => Effect.Effect<unknown, E, ArgocdOpContext>;\n};\n\nexport const argocdOperations = <Props extends object, Live, Attributes, E>(\n spec: ArgocdSpec<Props, Live, Attributes, E>,\n) => {\n const read = (props: Props) =>\n spec\n .fetchLive(props)\n .pipe(Effect.map((live) => (live === undefined ? undefined : spec.attributes(live, props))));\n\n return {\n read,\n\n diff: (news: Input<Props>, output: Attributes | undefined) =>\n Effect.gen(function* () {\n if (output === undefined || !isResolved(news)) return undefined;\n // The identity key changed (repo/url/server) — `upsert` cannot rename in place, it would\n // create at the new key and leave the old, still-live object orphaned. See the spec type.\n if (spec.identityOfProps(news) !== spec.identityOfAttributes(output)) {\n return { action: 'replace' } as const;\n }\n const live = yield* read(news);\n if (live === undefined) return { action: 'update' } as const;\n return spec.matches(live, news)\n ? ({ action: 'noop' } as const)\n : ({ action: 'update' } as const);\n }),\n\n reconcile: (news: Props) =>\n Effect.gen(function* () {\n const before = yield* read(news);\n // S10: no write when what's declared already matches what's live.\n if (before === undefined || !spec.matches(before, news)) {\n yield* spec.upsert(news);\n }\n const after = yield* read(news);\n if (after === undefined) {\n return yield* Effect.die(\n new Error(\n 'the write returned no error but the object is still absent — read back rather ' +\n 'than trust the status code.',\n ),\n );\n }\n return after;\n }),\n\n destroy: (olds: Props) =>\n Effect.gen(function* () {\n const live = yield* spec.fetchLive(olds);\n if (live === undefined) return;\n yield* spec.destroy(olds, live);\n }),\n };\n};\n\n/**\n * The four provider handlers for a spec'd Argo CD object, wired once.\n *\n * ★ CREDENTIALS ARE PROVIDED HERE, ONCE. `CredentialsFromEnv` resolves `ARGOCD_TOKEN` /\n * `ARGOCD_SERVER` on the calling fiber per request (credentials.ts), never captured at load.\n *\n * ⚠️ `list` answers empty — Argo CD's list endpoints return every object of that kind on the whole\n * instance; adoption stays explicit (a declared resource's own `read`), same reasoning as\n * forgejo and discord.\n */\nexport const argocdHandlers = <Props extends object, Live, Attributes extends object, E>(\n spec: ArgocdSpec<Props, Live, Attributes, E>,\n) => {\n const ops = argocdOperations(spec);\n const withCredentials = <A>(effect: Effect.Effect<A, E, ArgocdOpContext>) =>\n Effect.provide(effect, CredentialsFromEnv);\n return {\n list: () => Effect.succeed([]),\n read: ({ olds }: { olds: Props }) => withCredentials(ops.read(olds)),\n diff: ({ news, output }: { news: Input<Props>; output: Attributes | undefined }) =>\n withCredentials(ops.diff(news, output)),\n reconcile: ({ news }: { news: Props }) => withCredentials(ops.reconcile(news)),\n delete: ({ olds }: { olds: Props }) => withCredentials(ops.destroy(olds)),\n };\n};\n",
7
+ "/**\n * One shape for every Argo CD REST object — Repository, RepoCreds, Cluster — the same four\n * operations, different distilled call.\n *\n * ⛔ THIS IS A NEAR-VERBATIM COPY OF `../forgejo/resource.ts`'S ENGINE, ON PURPOSE. Both SDKs speak\n * plain bearer-authenticated REST with a real `NotFound` tag (see the family's own docs.md for\n * why Argo CD, UNLIKE Discord, gets a genuine typed 404 — measured from `protocol.ts`), so the\n * same read/diff/reconcile/destroy shape applies unchanged. A second hand-rolled engine here\n * would just be forgejo's with the names swapped.\n *\n * ⚠️ NO `Unowned`/`adopt(true)` WRAPPING HERE — mirrors forgejo's own choice (not netbox's or\n * discord's `Unowned` marker), not an oversight. A live match on a cold read (no persisted\n * `output`) is treated as ours, same as every other forgejo-shaped family in this kit today.\n *\n * ⚠️ `NotFound` IS FOLDED TO \"ABSENT\" INSIDE EACH RESOURCE FILE'S OWN `fetchLive`, NOT HERE.\n * `Effect.catchTag`'s tag-literal inference needs a concrete error union to resolve `\"NotFound\"`\n * against; a spec's `E` is only concrete at each resource file's own call site. So every\n * `fetchLive` ends `.pipe(Effect.catchTag('NotFound', () => Effect.succeed(undefined)))` itself.\n */\nimport { isResolved } from 'alchemy/Diff';\nimport type { Input } from 'alchemy/Input';\nimport { CredentialsFromEnv } from '@distilled.cloud/argocd/Credentials';\nimport type { ArgocdOpContext } from '@distilled.cloud/argocd/Protocol';\nimport * as Effect from 'effect/Effect';\nimport type * as HttpClient from 'effect/http/HttpClient';\n\n/** What every handler needs from the caller's runtime, once `argocdHandlers` bakes in credentials. */\nexport type ArgocdRequirements = HttpClient.HttpClient;\n\n/**\n * Strips undefined-valued keys, mapping each to a genuinely optional key rather than a present\n * key typed `X | undefined`. `tsconfig.base.json` turns on `exactOptionalPropertyTypes`, and every\n * generated Argo CD request type declares its optional fields the strict way (`foo?: X`, never\n * `foo?: X | undefined`) — so `{ foo: props.foo }` where `props.foo?: X` does not typecheck against\n * it even when `foo` is genuinely absent at runtime. Every resource file's request body goes\n * through this once, mirroring `forgejo/repository.ts#editForm`'s conditional-spread idiom, just\n * generalized instead of repeated per field.\n */\nexport const present = <T extends object>(obj: T): { [K in keyof T]?: Exclude<T[K], undefined> } =>\n Object.fromEntries(Object.entries(obj).filter(([, v]) => v !== undefined)) as never;\n\n/**\n * One Argo CD object's distilled calls. `Live` is whatever the SDK decodes (`V1alpha1Repository`,\n * `V1alpha1Cluster`, …); `E` is left to each resource file to declare.\n */\nexport type ArgocdSpec<Props extends object, Live, Attributes, E> = {\n /**\n * The identity key's value — `repo`/`url`/`server` depending on the resource — read off\n * declared props and off persisted attributes respectively. `diff` compares the two to detect\n * an identity change, which `upsert`'s single create-or-converge call cannot express as an\n * in-place update: Argo CD indexes each of these objects BY this value, so a changed identity\n * means a create at the new key, never a rename, and the object left at the old key must be\n * deleted — exactly what a `replace` diff action tells Alchemy's own Plan/Apply to do (delete\n * the old physical object, using `olds`, then reconcile `news`). Without this, a changed\n * `repo`/`url`/`server` orphans the old, still-credentialed object with no state pointing at it\n * — found in adversarial review 2026-09-24, fixed here.\n */\n readonly identityOfProps: (props: Props) => string;\n readonly identityOfAttributes: (attributes: Attributes) => string;\n /** Already folds the SDK's `NotFound` to `undefined` via its own `catchTag` — see the note above. */\n readonly fetchLive: (props: Props) => Effect.Effect<Live | undefined, E, ArgocdOpContext>;\n readonly attributes: (live: Live, props: Props) => Attributes | undefined;\n readonly matches: (attributes: Attributes, props: Props) => boolean;\n /**\n * A single upsert call — every Argo CD create endpoint this family uses takes `upsert: true`\n * and converges create-or-update in one request, so there is no separate update path to wire.\n */\n readonly upsert: (props: Props) => Effect.Effect<unknown, E, ArgocdOpContext>;\n readonly destroy: (props: Props, live: Live) => Effect.Effect<unknown, E, ArgocdOpContext>;\n};\n\nexport const argocdOperations = <Props extends object, Live, Attributes, E>(\n spec: ArgocdSpec<Props, Live, Attributes, E>,\n) => {\n const read = (props: Props) =>\n spec\n .fetchLive(props)\n .pipe(Effect.map((live) => (live === undefined ? undefined : spec.attributes(live, props))));\n\n return {\n read,\n\n diff: (news: Input<Props>, output: Attributes | undefined) =>\n Effect.gen(function* () {\n if (output === undefined || !isResolved(news)) return undefined;\n // The identity key changed (repo/url/server) — `upsert` cannot rename in place, it would\n // create at the new key and leave the old, still-live object orphaned. See the spec type.\n if (spec.identityOfProps(news) !== spec.identityOfAttributes(output)) {\n return { action: 'replace' } as const;\n }\n const live = yield* read(news);\n if (live === undefined) return { action: 'update' } as const;\n return spec.matches(live, news)\n ? ({ action: 'noop' } as const)\n : ({ action: 'update' } as const);\n }),\n\n reconcile: (news: Props) =>\n Effect.gen(function* () {\n const before = yield* read(news);\n // S10: no write when what's declared already matches what's live.\n if (before === undefined || !spec.matches(before, news)) {\n yield* spec.upsert(news);\n }\n const after = yield* read(news);\n if (after === undefined) {\n return yield* Effect.die(\n new Error(\n 'the write returned no error but the object is still absent — read back rather ' +\n 'than trust the status code.',\n ),\n );\n }\n return after;\n }),\n\n destroy: (olds: Props) =>\n Effect.gen(function* () {\n const live = yield* spec.fetchLive(olds);\n if (live === undefined) return;\n yield* spec.destroy(olds, live);\n }),\n };\n};\n\n/**\n * The four provider handlers for a spec'd Argo CD object, wired once.\n *\n * ★ CREDENTIALS ARE PROVIDED HERE, ONCE. `CredentialsFromEnv` resolves `ARGOCD_TOKEN` /\n * `ARGOCD_SERVER` on the calling fiber per request (credentials.ts), never captured at load.\n *\n * ⚠️ `list` answers empty — Argo CD's list endpoints return every object of that kind on the whole\n * instance; adoption stays explicit (a declared resource's own `read`), same reasoning as\n * forgejo and discord.\n */\nexport const argocdHandlers = <Props extends object, Live, Attributes extends object, E>(\n spec: ArgocdSpec<Props, Live, Attributes, E>,\n) => {\n const ops = argocdOperations(spec);\n const withCredentials = <A>(effect: Effect.Effect<A, E, ArgocdOpContext>) =>\n Effect.provide(effect, CredentialsFromEnv);\n return {\n list: () => Effect.succeed([]),\n read: ({ olds }: { olds: Props }) => withCredentials(ops.read(olds)),\n diff: ({ news, output }: { news: Input<Props>; output: Attributes | undefined }) =>\n withCredentials(ops.diff(news, output)),\n reconcile: ({ news }: { news: Props }) => withCredentials(ops.reconcile(news)),\n delete: ({ olds }: { olds: Props }) => withCredentials(ops.destroy(olds)),\n };\n};\n",
8
8
  "/**\n * Argo CD credentials — a bearer-token REFERENCE, resolved lazily, never a prop.\n *\n * ⛔ NO TOKEN IS EVER A PROP OR AN ATTRIBUTE. Alchemy persists Attributes unencrypted\n * (State/StateEncoding.ts@v2.0.0-beta.79#encodeState), so nothing a stack file holds may be a\n * credential. `@distilled.cloud/argocd/Credentials` already ships exactly the shape this asks\n * for: `Credentials` is a lazy `Context.Service<Credentials, Effect.Effect<Config>>`, resolved\n * on the calling fiber inside each operation (`ArgocdProtocol`'s `credentials:` field), never at\n * layer build. This file re-exports it rather than re-implementing it — the same choice\n * `../discord/credentials.ts` and `../forgejo` (via `@distilled.cloud/forgejo/Credentials`) made.\n *\n * ★ `CredentialsFromEnv` reads `ARGOCD_TOKEN` (required) and `ARGOCD_SERVER` (optional instance\n * origin, default `https://localhost:8080`) — the distilled package's own names, unchanged here\n * so a consumer never has to guess which var this family reads.\n *\n * ⚠️ NO `credentials(...)` FACTORY EXISTS ON THIS SDK, unlike Discord/Grafana's — measured against\n * `packages/argocd/src/credentials.ts` (distilled homeflare/base): only `fromToken({ token,\n * apiBaseUrl? })` and `CredentialsFromEnv`. `fake-argocd.ts` builds its test layer from\n * `fromToken` directly.\n *\n * ⚠️ NO OpenBao MINT YET, same as every other family in this kit today (`Alchemy.Stack({ secrets\n * })` is unreleased, PR 1728, `main`-only). A deploy process exports `ARGOCD_TOKEN` itself —\n * this package never reads it from a file.\n *\n * ⚠️ NO LIVE ARGO CD INSTANCE EXISTS ON THE ESTATE YET (2026-09-24) — this family is built ahead\n * of the Talos-on-PVE cluster it targets, per Tim's \"get the providers ready even if we don't\n * use it yet but we know we will.\" Nothing here has been exercised against a real server; every\n * test in this family runs against `fake-argocd.ts`.\n */\nimport type { Config } from '@distilled.cloud/argocd/Credentials';\nimport { Credentials, CredentialsFromEnv, fromToken } from '@distilled.cloud/argocd/Credentials';\n\n/** Re-exported so a consumer never has to reach into `@distilled.cloud/argocd` by hand. */\nexport { Credentials, CredentialsFromEnv, fromToken };\nexport type { Config as ArgocdCredentialsConfig };\n\n/** `ArgocdCredentials.fromEnv()` — the layer every `argocdProviders()` stack uses by default. */\nexport const fromEnv = () => CredentialsFromEnv;\n",
9
9
  "/**\n * All three Argo CD providers as one layer for a stack.\n *\n * Layer.mergeAll(argocdProviders(), …the stack's other providers)\n * .pipe(Layer.provide(FetchHttpClient.layer))\n *\n * Mirrors `../discord/providers.ts`: `FetchHttpClient.layer` is the stack's own responsibility to\n * provide (the shared transport every family needs), not something a single vendor's `providers()`\n * should pin.\n */\nimport * as Layer from 'effect/Layer';\nimport { ArgocdClusterProvider } from './cluster.ts';\nimport { ArgocdRepoCredsProvider } from './repo-creds.ts';\nimport { ArgocdRepositoryProvider } from './repository.ts';\n\nexport const providers = () =>\n Layer.mergeAll(ArgocdRepositoryProvider(), ArgocdRepoCredsProvider(), ArgocdClusterProvider());\n",
10
10
  "/**\n * `Argocd.RepoCreds` — a credential TEMPLATE that Argo CD applies to any repository whose URL\n * starts with `url` (`/api/v1/repocreds`) — distinct from `Argocd.Repository`, which registers one\n * specific repository. REST-managed, not a CRD; see `docs/argocd.md`.\n *\n * ⚠️ NO `GetRepoCredsService` OPERATION EXISTS — measured against the operation list in\n * `services/argocd.ts` (distilled homeflare/base): Create/Update/Delete/List only, no single-item\n * Get. `fetchLive` below lists and finds by `url`, the same shape\n * `discord/guild-application-command.ts#fetchByName` and\n * `forgejo/org-actions-secrets.ts#fetchLive` use for the same reason.\n *\n * ⚠️ NO LIVE ARGO CD INSTANCE EXISTS ON THE ESTATE (2026-09-24) — see `docs/argocd.md`.\n */\nimport { Resource } from 'alchemy';\nimport * as Provider from 'alchemy/Provider';\nimport * as argocd from '@distilled.cloud/argocd/argocd';\nimport * as Effect from 'effect/Effect';\nimport {\n type ArgocdSecretEnvUnsetError,\n type GitCredentialRefs,\n resolveGitCredentials,\n} from './git-credentials.ts';\nimport { type ArgocdRequirements, type ArgocdSpec, argocdHandlers, present } from './resource.ts';\n\nexport interface RepoCredsProps {\n /** The URL prefix this template matches — identity key; changing it is a replace. */\n url: string;\n /** \"git\" (default), \"helm\" or \"oci\". */\n type?: string;\n username?: string;\n /** The client certificate itself — public, unlike its key. */\n tlsClientCertData?: string;\n /** Write-only — see `git-credentials.ts`. Never a value here, only env var names. */\n credentials?: GitCredentialRefs;\n}\n\nexport interface RepoCredsAttributes {\n url: string;\n type: string | undefined;\n username: string | undefined;\n tlsClientCertData: string | undefined;\n}\n\nexport interface ArgocdRepoCreds extends Resource<\n 'Argocd.RepoCreds',\n RepoCredsProps,\n RepoCredsAttributes,\n never,\n ArgocdRequirements\n> {}\n\nexport const ArgocdRepoCreds = Resource<ArgocdRepoCreds>('Argocd.RepoCreds');\n\nconst attributesOf = (live: argocd.V1alpha1RepoCreds): RepoCredsAttributes => ({\n tlsClientCertData: live.tlsClientCertData,\n type: live.type,\n url: live.url ?? '',\n username: live.username,\n});\n\n/** Only the plain fields — see `git-credentials.ts` for why the secret fields are excluded. */\nconst plainMatches = (attrs: RepoCredsAttributes, props: RepoCredsProps): boolean =>\n (props.type ?? 'git') === (attrs.type ?? 'git') &&\n (props.username ?? undefined) === (attrs.username ?? undefined) &&\n (props.tlsClientCertData ?? undefined) === (attrs.tlsClientCertData ?? undefined);\n\ntype RepoCredsError =\n | argocd.ListRepoCredsServiceRepositoryCredentialsError\n | argocd.CreateRepoCredsServiceRepositoryCredentialsError\n | argocd.DeleteRepoCredsServiceRepositoryCredentialsError\n | ArgocdSecretEnvUnsetError;\n\n/** ★ EXPORTED for direct testing against `fake-argocd.ts` — see `repo-creds.test.ts`. */\nexport const spec: ArgocdSpec<\n RepoCredsProps,\n argocd.V1alpha1RepoCreds,\n RepoCredsAttributes,\n RepoCredsError\n> = {\n attributes: (live) => attributesOf(live),\n // ★ Catches the DELETE call's own NotFound too — closes the TOCTOU race between the pre-check\n // `fetchLive` above and this call. Matches upstream's Hetzner/Certificate.ts `deleteById`.\n destroy: (props) =>\n argocd\n .deleteRepoCredsServiceRepositoryCredentials({ url: props.url })\n .pipe(Effect.catchTag('NotFound', () => Effect.void)),\n identityOfAttributes: (attrs) => attrs.url,\n identityOfProps: (props) => props.url,\n fetchLive: (props) =>\n argocd.listRepoCredsServiceRepositoryCredentials({ url: props.url }).pipe(\n Effect.map((page) => (page.items ?? []).find((row) => row.url === props.url)),\n Effect.catchTag('NotFound', () => Effect.succeed(undefined)),\n ),\n matches: plainMatches,\n upsert: (props) =>\n resolveGitCredentials(props.credentials ?? {}).pipe(\n Effect.flatMap((creds) =>\n argocd.createRepoCredsServiceRepositoryCredentials(\n present({\n upsert: true,\n tlsClientCertData: props.tlsClientCertData,\n type: props.type,\n url: props.url,\n username: props.username,\n ...creds,\n }),\n ),\n ),\n ),\n};\n\nexport const handlers = argocdHandlers(spec);\n\nexport const ArgocdRepoCredsProvider = () =>\n Provider.effect(ArgocdRepoCreds, Effect.succeed(ArgocdRepoCreds.Provider.of(handlers)));\n",
@@ -9,5 +9,5 @@
9
9
  * should pin.
10
10
  */
11
11
  import * as Layer from 'effect/Layer';
12
- export declare const providers: () => Layer.Layer<import("alchemy").Provider<import("./cluster.ts").ArgocdCluster> | import("alchemy").Provider<import("./repo-creds.ts").ArgocdRepoCreds> | import("alchemy").Provider<import("./repository.ts").ArgocdRepository>, never, import("effect/unstable/http/HttpClient").HttpClient>;
12
+ export declare const providers: () => Layer.Layer<import("alchemy").Provider<import("./cluster.ts").ArgocdCluster> | import("alchemy").Provider<import("./repo-creds.ts").ArgocdRepoCreds> | import("alchemy").Provider<import("./repository.ts").ArgocdRepository>, never, import("effect/http/HttpClient").HttpClient>;
13
13
  //# sourceMappingURL=providers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/argocd/providers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAKtC,eAAO,MAAM,SAAS,mSAC0E,CAAC"}
1
+ {"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/argocd/providers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAKtC,eAAO,MAAM,SAAS,0RAC0E,CAAC"}
@@ -44,7 +44,7 @@ export declare const handlers: {
44
44
  list: () => Effect.Effect<never[], never, never>;
45
45
  read: ({ olds }: {
46
46
  olds: RepoCredsProps;
47
- }) => Effect.Effect<RepoCredsAttributes | undefined, RepoCredsError, import("effect/unstable/http/HttpClient").HttpClient>;
47
+ }) => Effect.Effect<RepoCredsAttributes | undefined, RepoCredsError, import("effect/http/HttpClient").HttpClient>;
48
48
  diff: ({ news, output }: {
49
49
  news: import("alchemy").Input<RepoCredsProps>;
50
50
  output: RepoCredsAttributes | undefined;
@@ -54,14 +54,14 @@ export declare const handlers: {
54
54
  readonly action: 'update';
55
55
  } | {
56
56
  readonly action: 'noop';
57
- } | undefined, RepoCredsError, import("effect/unstable/http/HttpClient").HttpClient>;
57
+ } | undefined, RepoCredsError, import("effect/http/HttpClient").HttpClient>;
58
58
  reconcile: ({ news }: {
59
59
  news: RepoCredsProps;
60
- }) => Effect.Effect<RepoCredsAttributes, RepoCredsError, import("effect/unstable/http/HttpClient").HttpClient>;
60
+ }) => Effect.Effect<RepoCredsAttributes, RepoCredsError, import("effect/http/HttpClient").HttpClient>;
61
61
  delete: ({ olds }: {
62
62
  olds: RepoCredsProps;
63
- }) => Effect.Effect<void, RepoCredsError, import("effect/unstable/http/HttpClient").HttpClient>;
63
+ }) => Effect.Effect<void, RepoCredsError, import("effect/http/HttpClient").HttpClient>;
64
64
  };
65
- export declare const ArgocdRepoCredsProvider: () => import("effect/Layer").Layer<Provider.Provider<ArgocdRepoCreds>, never, import("effect/unstable/http/HttpClient").HttpClient>;
65
+ export declare const ArgocdRepoCredsProvider: () => import("effect/Layer").Layer<Provider.Provider<ArgocdRepoCreds>, never, import("effect/http/HttpClient").HttpClient>;
66
66
  export {};
67
67
  //# sourceMappingURL=repo-creds.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"repo-creds.d.ts","sourceRoot":"","sources":["../../src/argocd/repo-creds.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,KAAK,QAAQ,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,MAAM,MAAM,gCAAgC,CAAC;AACzD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,EACL,KAAK,yBAAyB,EAC9B,KAAK,iBAAiB,EAEvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,UAAU,EAA2B,MAAM,eAAe,CAAC;AAElG,MAAM,WAAW,cAAc;IAC7B,qFAAqF;IACrF,GAAG,EAAE,MAAM,CAAC;IACZ,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qFAAqF;IACrF,WAAW,CAAC,EAAE,iBAAiB,CAAC;CACjC;AAED,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC;AAED,MAAM,WAAW,eAAgB,SAAQ,QAAQ,CAC/C,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,KAAK,EACL,kBAAkB,CACnB;CAAG;AAEJ,eAAO,MAAM,eAAe,kDAAgD,CAAC;AAe7E,KAAK,cAAc,GACf,MAAM,CAAC,8CAA8C,GACrD,MAAM,CAAC,gDAAgD,GACvD,MAAM,CAAC,gDAAgD,GACvD,yBAAyB,CAAC;AAE9B,yFAAyF;AACzF,eAAO,MAAM,IAAI,EAAE,UAAU,CAC3B,cAAc,EACd,MAAM,CAAC,iBAAiB,EACxB,mBAAmB,EACnB,cAAc,CAgCf,CAAC;AAEF,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;CAAuB,CAAC;AAE7C,eAAO,MAAM,uBAAuB,qIACqD,CAAC"}
1
+ {"version":3,"file":"repo-creds.d.ts","sourceRoot":"","sources":["../../src/argocd/repo-creds.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,KAAK,QAAQ,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,MAAM,MAAM,gCAAgC,CAAC;AACzD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,EACL,KAAK,yBAAyB,EAC9B,KAAK,iBAAiB,EAEvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,UAAU,EAA2B,MAAM,eAAe,CAAC;AAElG,MAAM,WAAW,cAAc;IAC7B,qFAAqF;IACrF,GAAG,EAAE,MAAM,CAAC;IACZ,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qFAAqF;IACrF,WAAW,CAAC,EAAE,iBAAiB,CAAC;CACjC;AAED,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC;AAED,MAAM,WAAW,eAAgB,SAAQ,QAAQ,CAC/C,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,KAAK,EACL,kBAAkB,CACnB;CAAG;AAEJ,eAAO,MAAM,eAAe,kDAAgD,CAAC;AAe7E,KAAK,cAAc,GACf,MAAM,CAAC,8CAA8C,GACrD,MAAM,CAAC,gDAAgD,GACvD,MAAM,CAAC,gDAAgD,GACvD,yBAAyB,CAAC;AAE9B,yFAAyF;AACzF,eAAO,MAAM,IAAI,EAAE,UAAU,CAC3B,cAAc,EACd,MAAM,CAAC,iBAAiB,EACxB,mBAAmB,EACnB,cAAc,CAgCf,CAAC;AAEF,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;CAAuB,CAAC;AAE7C,eAAO,MAAM,uBAAuB,4HACqD,CAAC"}
@@ -64,7 +64,7 @@ export declare const handlers: {
64
64
  list: () => Effect.Effect<never[], never, never>;
65
65
  read: ({ olds }: {
66
66
  olds: RepositoryProps;
67
- }) => Effect.Effect<RepositoryAttributes | undefined, RepositoryError, import("effect/unstable/http/HttpClient").HttpClient>;
67
+ }) => Effect.Effect<RepositoryAttributes | undefined, RepositoryError, import("effect/http/HttpClient").HttpClient>;
68
68
  diff: ({ news, output }: {
69
69
  news: import("alchemy").Input<RepositoryProps>;
70
70
  output: RepositoryAttributes | undefined;
@@ -74,14 +74,14 @@ export declare const handlers: {
74
74
  readonly action: 'update';
75
75
  } | {
76
76
  readonly action: 'noop';
77
- } | undefined, RepositoryError, import("effect/unstable/http/HttpClient").HttpClient>;
77
+ } | undefined, RepositoryError, import("effect/http/HttpClient").HttpClient>;
78
78
  reconcile: ({ news }: {
79
79
  news: RepositoryProps;
80
- }) => Effect.Effect<RepositoryAttributes, RepositoryError, import("effect/unstable/http/HttpClient").HttpClient>;
80
+ }) => Effect.Effect<RepositoryAttributes, RepositoryError, import("effect/http/HttpClient").HttpClient>;
81
81
  delete: ({ olds }: {
82
82
  olds: RepositoryProps;
83
- }) => Effect.Effect<void, RepositoryError, import("effect/unstable/http/HttpClient").HttpClient>;
83
+ }) => Effect.Effect<void, RepositoryError, import("effect/http/HttpClient").HttpClient>;
84
84
  };
85
- export declare const ArgocdRepositoryProvider: () => import("effect/Layer").Layer<Provider.Provider<ArgocdRepository>, never, import("effect/unstable/http/HttpClient").HttpClient>;
85
+ export declare const ArgocdRepositoryProvider: () => import("effect/Layer").Layer<Provider.Provider<ArgocdRepository>, never, import("effect/http/HttpClient").HttpClient>;
86
86
  export {};
87
87
  //# sourceMappingURL=repository.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../src/argocd/repository.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,KAAK,QAAQ,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,MAAM,MAAM,gCAAgC,CAAC;AACzD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,EACL,KAAK,yBAAyB,EAC9B,KAAK,iBAAiB,EAEvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,UAAU,EAA2B,MAAM,eAAe,CAAC;AAElG,MAAM,WAAW,eAAe;IAC9B,kFAAkF;IAClF,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sFAAsF;IACtF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qFAAqF;IACrF,WAAW,CAAC,EAAE,iBAAiB,CAAC;CACjC;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,qBAAqB,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3C,SAAS,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,SAAS,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,kBAAkB,EAAE,OAAO,GAAG,SAAS,CAAC;IACxC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC;AAED,MAAM,WAAW,gBAAiB,SAAQ,QAAQ,CAChD,mBAAmB,EACnB,eAAe,EACf,oBAAoB,EACpB,KAAK,EACL,kBAAkB,CACnB;CAAG;AAEJ,eAAO,MAAM,gBAAgB,mDAE3B,CAAC;AAiCH,KAAK,eAAe,GAChB,MAAM,CAAC,yBAAyB,GAChC,MAAM,CAAC,sCAAsC,GAC7C,MAAM,CAAC,sCAAsC,GAC7C,yBAAyB,CAAC;AAE9B,yFAAyF;AACzF,eAAO,MAAM,IAAI,EAAE,UAAU,CAC3B,eAAe,EACf,MAAM,CAAC,kBAAkB,EACzB,oBAAoB,EACpB,eAAe,CA0ChB,CAAC;AAEF,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;CAAuB,CAAC;AAE7C,eAAO,MAAM,wBAAwB,sIACsD,CAAC"}
1
+ {"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../src/argocd/repository.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,KAAK,QAAQ,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,MAAM,MAAM,gCAAgC,CAAC;AACzD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,EACL,KAAK,yBAAyB,EAC9B,KAAK,iBAAiB,EAEvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,UAAU,EAA2B,MAAM,eAAe,CAAC;AAElG,MAAM,WAAW,eAAe;IAC9B,kFAAkF;IAClF,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sFAAsF;IACtF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qFAAqF;IACrF,WAAW,CAAC,EAAE,iBAAiB,CAAC;CACjC;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,qBAAqB,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3C,SAAS,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,SAAS,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,kBAAkB,EAAE,OAAO,GAAG,SAAS,CAAC;IACxC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC;AAED,MAAM,WAAW,gBAAiB,SAAQ,QAAQ,CAChD,mBAAmB,EACnB,eAAe,EACf,oBAAoB,EACpB,KAAK,EACL,kBAAkB,CACnB;CAAG;AAEJ,eAAO,MAAM,gBAAgB,mDAE3B,CAAC;AAiCH,KAAK,eAAe,GAChB,MAAM,CAAC,yBAAyB,GAChC,MAAM,CAAC,sCAAsC,GAC7C,MAAM,CAAC,sCAAsC,GAC7C,yBAAyB,CAAC;AAE9B,yFAAyF;AACzF,eAAO,MAAM,IAAI,EAAE,UAAU,CAC3B,eAAe,EACf,MAAM,CAAC,kBAAkB,EACzB,oBAAoB,EACpB,eAAe,CA0ChB,CAAC;AAEF,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;CAAuB,CAAC;AAE7C,eAAO,MAAM,wBAAwB,6HACsD,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import type { Input } from 'alchemy/Input';
2
2
  import type { ArgocdOpContext } from '@distilled.cloud/argocd/Protocol';
3
3
  import * as Effect from 'effect/Effect';
4
- import type * as HttpClient from 'effect/unstable/http/HttpClient';
4
+ import type * as HttpClient from 'effect/http/HttpClient';
5
5
  /** What every handler needs from the caller's runtime, once `argocdHandlers` bakes in credentials. */
6
6
  export type ArgocdRequirements = HttpClient.HttpClient;
7
7
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../src/argocd/resource.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,UAAU,MAAM,iCAAiC,CAAC;AAEnE,sGAAsG;AACtG,MAAM,MAAM,kBAAkB,GAAG,UAAU,CAAC,UAAU,CAAC;AAEvD;;;;;;;;GAQG;AACH,eAAO,MAAM,OAAO,GAAI,CAAC,SAAS,MAAM,OAAO,CAAC,KAAG,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,GACT,CAAC;AAEtF;;;GAGG;AACH,MAAM,MAAM,UAAU,CAAC,KAAK,SAAS,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,IAAI;IAClE;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC;IACnD,QAAQ,CAAC,oBAAoB,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,MAAM,CAAC;IAClE,qGAAqG;IACrG,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,SAAS,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC;IAC1F,QAAQ,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,KAAK,UAAU,GAAG,SAAS,CAAC;IAC1E,QAAQ,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC;IACpE;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC;IAC9E,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC;CAC5F,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,KAAK,SAAS,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,QAClE,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;kBAEvB,KAAK;iBAQX,KAAK,CAAC,KAAK,CAAC,UAAU,UAAU,GAAG,SAAS;yBAMlC,SAAS;;yBAGa,QAAQ;;yBAElC,MAAM;;sBAIP,KAAK;oBAmBP,KAAK;CAOxB,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,GAAI,KAAK,SAAS,MAAM,EAAE,IAAI,EAAE,UAAU,SAAS,MAAM,EAAE,CAAC,QAC/E,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;IAM1C,IAAI;IACJ,IAAI,aAAa;QAAE,IAAI,EAAE,KAAK,CAAA;KAAE;IAChC,IAAI,qBAAqB;QAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAAC,MAAM,EAAE,UAAU,GAAG,SAAS,CAAA;KAAE;yBAxDxD,SAAS;;yBAGa,QAAQ;;yBAElC,MAAM;;IAqDzB,SAAS,aAAa;QAAE,IAAI,EAAE,KAAK,CAAA;KAAE;IACrC,MAAM,aAAa;QAAE,IAAI,EAAE,KAAK,CAAA;KAAE;CAErC,CAAC"}
1
+ {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../src/argocd/resource.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,UAAU,MAAM,wBAAwB,CAAC;AAE1D,sGAAsG;AACtG,MAAM,MAAM,kBAAkB,GAAG,UAAU,CAAC,UAAU,CAAC;AAEvD;;;;;;;;GAQG;AACH,eAAO,MAAM,OAAO,GAAI,CAAC,SAAS,MAAM,OAAO,CAAC,KAAG,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,GACT,CAAC;AAEtF;;;GAGG;AACH,MAAM,MAAM,UAAU,CAAC,KAAK,SAAS,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,IAAI;IAClE;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC;IACnD,QAAQ,CAAC,oBAAoB,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,MAAM,CAAC;IAClE,qGAAqG;IACrG,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,SAAS,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC;IAC1F,QAAQ,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,KAAK,UAAU,GAAG,SAAS,CAAC;IAC1E,QAAQ,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC;IACpE;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC;IAC9E,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC;CAC5F,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,KAAK,SAAS,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,QAClE,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;kBAEvB,KAAK;iBAQX,KAAK,CAAC,KAAK,CAAC,UAAU,UAAU,GAAG,SAAS;yBAMlC,SAAS;;yBAGa,QAAQ;;yBAElC,MAAM;;sBAIP,KAAK;oBAmBP,KAAK;CAOxB,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,GAAI,KAAK,SAAS,MAAM,EAAE,IAAI,EAAE,UAAU,SAAS,MAAM,EAAE,CAAC,QAC/E,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;IAM1C,IAAI;IACJ,IAAI,aAAa;QAAE,IAAI,EAAE,KAAK,CAAA;KAAE;IAChC,IAAI,qBAAqB;QAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAAC,MAAM,EAAE,UAAU,GAAG,SAAS,CAAA;KAAE;yBAxDxD,SAAS;;yBAGa,QAAQ;;yBAElC,MAAM;;IAqDzB,SAAS,aAAa;QAAE,IAAI,EAAE,KAAK,CAAA;KAAE;IACrC,MAAM,aAAa;QAAE,IAAI,EAAE,KAAK,CAAA;KAAE;CAErC,CAAC"}
@@ -30,7 +30,7 @@
30
30
  * config.ts is the one place that `Effect.provide`s it, scoped to exactly the effects that call
31
31
  * `@distilled.cloud/caddy`'s operations.
32
32
  */
33
- import type * as HttpClient from 'effect/unstable/http/HttpClient';
33
+ import type * as HttpClient from 'effect/http/HttpClient';
34
34
  import * as Context from 'effect/Context';
35
35
  import * as Layer from 'effect/Layer';
36
36
  import type { Credentials } from '@distilled.cloud/caddy';
@@ -1 +1 @@
1
- {"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../src/caddy/admin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,KAAK,KAAK,UAAU,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAC1B;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC5E;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAErD,qFAAqF;AACrF,MAAM,WAAW,WAAW;IAC1B,2EAA2E;IAC3E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;CACvC;AAED,wFAAwF;AACxF,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD;;;;;;;;;OASG;IACH,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;CAClE;;AAED,oFAAoF;AACpF,qBAAa,iBAAkB,SAAQ,sBAEtC;CAAG;;AAEJ;;;;;;GAMG;AACH,qBAAa,mBAAoB,SAAQ,wBAGC;CAAG;AAE7C;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,cACf,cAAc,KACxB,KAAK,CAAC,KAAK,CAAC,iBAAiB,GAAG,mBAAmB,CAOnD,CAAC"}
1
+ {"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../src/caddy/admin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,KAAK,KAAK,UAAU,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAC1B;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC5E;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAErD,qFAAqF;AACrF,MAAM,WAAW,WAAW;IAC1B,2EAA2E;IAC3E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;CACvC;AAED,wFAAwF;AACxF,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD;;;;;;;;;OASG;IACH,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;CAClE;;AAED,oFAAoF;AACpF,qBAAa,iBAAkB,SAAQ,sBAEtC;CAAG;;AAEJ;;;;;;GAMG;AACH,qBAAa,mBAAoB,SAAQ,wBAGC;CAAG;AAE7C;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,cACf,cAAc,KACxB,KAAK,CAAC,KAAK,CAAC,iBAAiB,GAAG,mBAAmB,CAOnD,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import * as Layer from 'effect/Layer';
2
- import * as HttpClient from 'effect/unstable/http/HttpClient';
3
- import * as HttpClientError from 'effect/unstable/http/HttpClientError';
2
+ import * as HttpClient from 'effect/http/HttpClient';
3
+ import * as HttpClientError from 'effect/http/HttpClientError';
4
4
  import type { Target } from './admin-address.ts';
5
5
  export type LocalHttpClientOptions = {
6
6
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"caddy-http-client.d.ts","sourceRoot":"","sources":["../../src/caddy/caddy-http-client.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,KAAK,UAAU,MAAM,iCAAiC,CAAC;AAC9D,OAAO,KAAK,eAAe,MAAM,sCAAsC,CAAC;AAGxE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,MAAM,sBAAsB,GAAG;IACnC;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,8EAA8E;IAC9E,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB;IACnB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC;AASF;;;;GAIG;AACH,eAAO,MAAM,aAAa,UAAW,OAAO,KAAG,KAAK,IAAI,eAAe,CAAC,eAGjB,CAAC;AA4JxD,kGAAkG;AAClG,eAAO,MAAM,mBAAmB,WACtB,MAAM,YACL,sBAAsB,KAC9B,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAWnC,CAAC"}
1
+ {"version":3,"file":"caddy-http-client.d.ts","sourceRoot":"","sources":["../../src/caddy/caddy-http-client.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,KAAK,UAAU,MAAM,wBAAwB,CAAC;AACrD,OAAO,KAAK,eAAe,MAAM,6BAA6B,CAAC;AAG/D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,MAAM,sBAAsB,GAAG;IACnC;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,8EAA8E;IAC9E,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB;IACnB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC,CAAC;AASF;;;;GAIG;AACH,eAAO,MAAM,aAAa,UAAW,OAAO,KAAG,KAAK,IAAI,eAAe,CAAC,eAGjB,CAAC;AA4JxD,kGAAkG;AAClG,eAAO,MAAM,mBAAmB,WACtB,MAAM,YACL,sBAAsB,KAC9B,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAWnC,CAAC"}
@@ -20,7 +20,7 @@
20
20
  * the Caddyfile before declaring it, not by ignoring the warning.
21
21
  */
22
22
  import * as Effect from 'effect/Effect';
23
- import * as ChildProcessSpawner from 'effect/unstable/process/ChildProcessSpawner';
23
+ import * as ChildProcessSpawner from 'effect/process/ChildProcessSpawner';
24
24
  import type * as PlatformError from 'effect/PlatformError';
25
25
  /** `caddy` resolved on `PATH`, unless the caller points at a specific build. */
26
26
  export declare const DEFAULT_CADDY_BINARY = "caddy";
@@ -1 +1 @@
1
- {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/caddy/format.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,OAAO,KAAK,mBAAmB,MAAM,6CAA6C,CAAC;AACnF,OAAO,KAAK,KAAK,aAAa,MAAM,sBAAsB,CAAC;AAE3D,gFAAgF;AAChF,eAAO,MAAM,oBAAoB,UAAU,CAAC;AAE5C,mGAAmG;AACnG,qBAAa,gBAAiB,SAAQ,KAAK;IAGvC,QAAQ,CAAC,UAAU,EAAE,MAAM;IAF7B,QAAQ,CAAC,IAAI,sBAAsB;IACnC,YACW,UAAU,EAAE,MAAM,EAC3B,KAAK,EAAE,aAAa,CAAC,aAAa,EAOnC;CACF;AAED,kFAAkF;AAClF,qBAAa,cAAe,SAAQ,KAAK;IAGrC,QAAQ,CAAC,UAAU,EAAE,MAAM;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM;IAH3B,QAAQ,CAAC,IAAI,oBAAoB;IACjC,YACW,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EACzB,MAAM,EAAE,MAAM,EAMf;CACF;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,kGAAkG;IAClG,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,SACpB,MAAM,YACH,sBAAsB,KAC9B,MAAM,CAAC,MAAM,CACd,MAAM,EAGN,gBAAgB,GAAG,cAAc,GAAG,aAAa,CAAC,aAAa,EAC/D,mBAAmB,CAAC,mBAAmB,CA0CrC,CAAC"}
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/caddy/format.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,OAAO,KAAK,mBAAmB,MAAM,oCAAoC,CAAC;AAC1E,OAAO,KAAK,KAAK,aAAa,MAAM,sBAAsB,CAAC;AAE3D,gFAAgF;AAChF,eAAO,MAAM,oBAAoB,UAAU,CAAC;AAE5C,mGAAmG;AACnG,qBAAa,gBAAiB,SAAQ,KAAK;IAGvC,QAAQ,CAAC,UAAU,EAAE,MAAM;IAF7B,QAAQ,CAAC,IAAI,sBAAsB;IACnC,YACW,UAAU,EAAE,MAAM,EAC3B,KAAK,EAAE,aAAa,CAAC,aAAa,EAOnC;CACF;AAED,kFAAkF;AAClF,qBAAa,cAAe,SAAQ,KAAK;IAGrC,QAAQ,CAAC,UAAU,EAAE,MAAM;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM;IAH3B,QAAQ,CAAC,IAAI,oBAAoB;IACjC,YACW,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EACzB,MAAM,EAAE,MAAM,EAMf;CACF;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,kGAAkG;IAClG,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,SACpB,MAAM,YACH,sBAAsB,KAC9B,MAAM,CAAC,MAAM,CACd,MAAM,EAGN,gBAAgB,GAAG,cAAc,GAAG,aAAa,CAAC,aAAa,EAC/D,mBAAmB,CAAC,mBAAmB,CA0CrC,CAAC"}
@@ -59,9 +59,9 @@ import * as Duration from "effect/Duration";
59
59
  import * as Effect from "effect/Effect";
60
60
  import * as Layer2 from "effect/Layer";
61
61
  import * as Result from "effect/Result";
62
- import * as HttpClient from "effect/unstable/http/HttpClient";
63
- import * as HttpClientError from "effect/unstable/http/HttpClientError";
64
- import * as HttpClientResponse from "effect/unstable/http/HttpClientResponse";
62
+ import * as HttpClient from "effect/http/HttpClient";
63
+ import * as HttpClientError from "effect/http/HttpClientError";
64
+ import * as HttpClientResponse from "effect/http/HttpClientResponse";
65
65
  var NEVER_CONNECTED = new Set(["ECONNREFUSED", "ENOENT"]);
66
66
  var codeOf = (cause) => typeof cause === "object" && cause !== null && ("code" in cause) ? String(cause.code) : undefined;
67
67
  var isUnreachable = (error) => error instanceof HttpClientError.HttpClientError && error.reason._tag === "TransportError" && NEVER_CONNECTED.has(codeOf(error.reason.cause) ?? "");
@@ -1004,8 +1004,8 @@ var CaddyConfigProvider = () => Provider.effect(CaddyConfig, Effect11.gen(functi
1004
1004
  // src/caddy/format.ts
1005
1005
  import * as Effect12 from "effect/Effect";
1006
1006
  import * as Stream from "effect/Stream";
1007
- import * as ChildProcess from "effect/unstable/process/ChildProcess";
1008
- import * as ChildProcessSpawner from "effect/unstable/process/ChildProcessSpawner";
1007
+ import * as ChildProcess from "effect/process/ChildProcess";
1008
+ import * as ChildProcessSpawner from "effect/process/ChildProcessSpawner";
1009
1009
  var DEFAULT_CADDY_BINARY = "caddy";
1010
1010
 
1011
1011
  class CaddyFmtNotFound extends Error {
@@ -1377,5 +1377,5 @@ export {
1377
1377
  verifierProblems
1378
1378
  };
1379
1379
 
1380
- //# debugId=0F44BF8B422950FD64756E2164756E21
1380
+ //# debugId=A4890D1A8DCAD67064756E2164756E21
1381
1381
  //# sourceMappingURL=index.js.map