@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
@@ -69,3 +69,27 @@ for (const row of FAMILIES.filter((each) => each.family !== 'Bao.MfaTotpMethod')
69
69
  });
70
70
  });
71
71
  }
72
+
73
+ /**
74
+ * 🔴 A DESTROY AFTER A CRASHED CREATE MUST STILL DELETE (red team, kit PR 359, 2026-10-06). The
75
+ * engine's deletion-recovery read (Apply.ts, a row with no attributes) shares alchemy beta.81's
76
+ * `provider.read` span with the create-time deferred-adoption read. Answering `Unowned` to both
77
+ * made the engine skip `provider.delete` and erase the row: a live object nothing tracked.
78
+ */
79
+ /** Bao.JwtAuthConfig's delete writes nothing and Bao.MfaLoginEnforcement's refuses: no object goes. */
80
+ const DELETES_NOTHING = ['Bao.JwtAuthConfig', 'Bao.MfaLoginEnforcement'];
81
+ for (const row of FAMILIES.filter((each) => !DELETES_NOTHING.includes(each.family))) {
82
+ describe(`${row.family}: a destroy after an interrupted create`, () => {
83
+ it('deletes the object the crashed create wrote', async () => {
84
+ await withCrashes((crashNext) => async (stack, estate) => {
85
+ crashNext();
86
+ const destroy = RemovalPolicy.destroy;
87
+ await assert.rejects(stack.deploy(row.declare('X', 'a', '15m', destroy)), /injected/);
88
+ assert.ok(row.has(estate, 'a'));
89
+ const declared = row.declare('X', 'a', '15m', destroy);
90
+ assert.deepEqual(await stack.destroy(declared), { X: 'delete' });
91
+ assert.ok(!row.has(estate, 'a'), 'the destroy left the object it was asked to delete');
92
+ });
93
+ });
94
+ });
95
+ }
@@ -18,8 +18,8 @@
18
18
  * consolidation plan; not re-measured here). Give each host its own secret_id.
19
19
  */
20
20
  import * as Effect from 'effect/Effect';
21
- import * as FetchHttpClient from 'effect/unstable/http/FetchHttpClient';
22
- import type * as HttpClient from 'effect/unstable/http/HttpClient';
21
+ import * as FetchHttpClient from 'effect/http/FetchHttpClient';
22
+ import type * as HttpClient from 'effect/http/HttpClient';
23
23
  import type { BaoEnvironment } from './bao-address.ts';
24
24
  import { BaoEnv, baoCall } from './bao-http.ts';
25
25
  import type { BaoError } from './bao-status.ts';
@@ -5,7 +5,7 @@
5
5
  * to a non-auth path, and `token/` cannot move at all).
6
6
  */
7
7
  import * as Effect from 'effect/Effect';
8
- import type * as HttpClient from 'effect/unstable/http/HttpClient';
8
+ import type * as HttpClient from 'effect/http/HttpClient';
9
9
  import type { Claim } from '../ownership/adopt.ts';
10
10
  import {
11
11
  type BaoAuthMethodAttributes,
@@ -18,7 +18,7 @@ import { Resource } from 'alchemy';
18
18
  import { isResolved } from 'alchemy/Diff';
19
19
  import * as Provider from 'alchemy/Provider';
20
20
  import * as Effect from 'effect/Effect';
21
- import type * as HttpClient from 'effect/unstable/http/HttpClient';
21
+ import type * as HttpClient from 'effect/http/HttpClient';
22
22
  import { claimFor } from '../ownership/adopt.ts';
23
23
  import { ownedRead } from '../ownership/probe.ts';
24
24
  import { provingResumes } from '../ownership/resume.ts';
@@ -5,7 +5,7 @@ import * as RemovalPolicy from 'alchemy/RemovalPolicy';
5
5
  import * as Test from 'alchemy/Test/Bun';
6
6
  import * as Effect from 'effect/Effect';
7
7
  import * as Layer from 'effect/Layer';
8
- import * as FetchHttpClient from 'effect/unstable/http/FetchHttpClient';
8
+ import * as FetchHttpClient from 'effect/http/FetchHttpClient';
9
9
  import { BaoAuthRole, BaoAuthRoleProvider } from './auth-role.ts';
10
10
  import { BaoEnv } from './bao-http.ts';
11
11
  import { type Reply, fakeBao } from './fake-bao.ts';
@@ -13,7 +13,7 @@ import { Resource } from 'alchemy';
13
13
  import { isResolved } from 'alchemy/Diff';
14
14
  import * as Provider from 'alchemy/Provider';
15
15
  import * as Effect from 'effect/Effect';
16
- import type * as HttpClient from 'effect/unstable/http/HttpClient';
16
+ import type * as HttpClient from 'effect/http/HttpClient';
17
17
  import { refuseTakeover } from '../ownership/adopt.ts';
18
18
  import { ownedRead } from '../ownership/probe.ts';
19
19
  import { provingResumes } from '../ownership/resume.ts';
@@ -6,9 +6,9 @@
6
6
  import assert from 'node:assert/strict';
7
7
  import { describe, it } from 'node:test';
8
8
  import * as Effect from 'effect/Effect';
9
- import * as Headers from 'effect/unstable/http/Headers';
10
- import * as HttpClient from 'effect/unstable/http/HttpClient';
11
- import * as HttpClientResponse from 'effect/unstable/http/HttpClientResponse';
9
+ import * as Headers from 'effect/http/Headers';
10
+ import * as HttpClient from 'effect/http/HttpClient';
11
+ import * as HttpClientResponse from 'effect/http/HttpClientResponse';
12
12
  import { BaoEnv, baoDelete, baoRead, baoWrite } from './bao-http.ts';
13
13
  import { BaoError } from './bao-status.ts';
14
14
  import { fakeBao, run, runFailure, withFake } from './fake-bao.ts';
@@ -17,10 +17,10 @@ import * as Effect from 'effect/Effect';
17
17
  import * as Option from 'effect/Option';
18
18
  import * as Schedule from 'effect/Schedule';
19
19
  import * as Semaphore from 'effect/Semaphore';
20
- import * as FetchHttpClient from 'effect/unstable/http/FetchHttpClient';
21
- import * as Headers from 'effect/unstable/http/Headers';
22
- import * as HttpClient from 'effect/unstable/http/HttpClient';
23
- import * as HttpClientRequest from 'effect/unstable/http/HttpClientRequest';
20
+ import * as FetchHttpClient from 'effect/http/FetchHttpClient';
21
+ import * as Headers from 'effect/http/Headers';
22
+ import * as HttpClient from 'effect/http/HttpClient';
23
+ import * as HttpClientRequest from 'effect/http/HttpClientRequest';
24
24
  import { type BaoEnvironment, headersFor, resolveAddress } from './bao-address.ts';
25
25
  import { BaoError, type BaoIntent, settle } from './bao-status.ts';
26
26
 
@@ -32,8 +32,8 @@
32
32
  * point: a standby forwards to the same vault.
33
33
  */
34
34
  import * as Effect from 'effect/Effect';
35
- import * as FetchHttpClient from 'effect/unstable/http/FetchHttpClient';
36
- import type * as HttpClient from 'effect/unstable/http/HttpClient';
35
+ import * as FetchHttpClient from 'effect/http/FetchHttpClient';
36
+ import type * as HttpClient from 'effect/http/HttpClient';
37
37
  import { type BaoEnvironment, resolveAddress } from './bao-address.ts';
38
38
  import { BaoEnv, baoCall } from './bao-http.ts';
39
39
  import { canonicalNamespace, envNamespace, namespaceLabel } from './bao-namespace.ts';
@@ -32,7 +32,7 @@
32
32
  */
33
33
  import * as Context from 'effect/Context';
34
34
  import * as Effect from 'effect/Effect';
35
- import type * as HttpClient from 'effect/unstable/http/HttpClient';
35
+ import type * as HttpClient from 'effect/http/HttpClient';
36
36
  import { baoRead } from './bao-http.ts';
37
37
  import type { BaoError } from './bao-status.ts';
38
38
  import { groupKey } from './cloudflare-group-scope.ts';
@@ -3,7 +3,7 @@
3
3
  * of `<mount>/roles/<name>`. Split out so each can be tested against fake-bao.
4
4
  */
5
5
  import * as Effect from 'effect/Effect';
6
- import type * as HttpClient from 'effect/unstable/http/HttpClient';
6
+ import type * as HttpClient from 'effect/http/HttpClient';
7
7
  import { baoDelete, baoRead, baoWrite } from './bao-http.ts';
8
8
  import type { BaoError } from './bao-status.ts';
9
9
  import { type LiveCloudflareRole, liveRoleOf, rolePath } from './cloudflare-role-form.ts';
@@ -20,7 +20,7 @@ import { Resource } from 'alchemy';
20
20
  import { isResolved } from 'alchemy/Diff';
21
21
  import * as Provider from 'alchemy/Provider';
22
22
  import * as Effect from 'effect/Effect';
23
- import type * as HttpClient from 'effect/unstable/http/HttpClient';
23
+ import type * as HttpClient from 'effect/http/HttpClient';
24
24
  import { refuseTakeover } from '../ownership/adopt.ts';
25
25
  import { ownedRead } from '../ownership/probe.ts';
26
26
  import { provingResumes } from '../ownership/resume.ts';
@@ -1,9 +1,9 @@
1
1
  import { expect, test } from 'bun:test';
2
2
  import { policiesReadAclPolicy } from '@distilled.cloud/openbao/policies';
3
3
  import * as Effect from 'effect/Effect';
4
- import * as HttpClient from 'effect/unstable/http/HttpClient';
5
- import { HttpClientError, TransportError } from 'effect/unstable/http/HttpClientError';
6
- import * as HttpClientResponse from 'effect/unstable/http/HttpClientResponse';
4
+ import * as HttpClient from 'effect/http/HttpClient';
5
+ import { HttpClientError, TransportError } from 'effect/http/HttpClientError';
6
+ import * as HttpClientResponse from 'effect/http/HttpClientResponse';
7
7
  import { readAuthRole, writeAuthRole } from './auth-role-wire.ts';
8
8
  import { BaoEnv } from './bao-http.ts';
9
9
  import { BaoError } from './bao-status.ts';
@@ -5,9 +5,9 @@ import { join } from 'node:path';
5
5
  import { policiesReadAclPolicy, policiesWriteAclPolicy } from '@distilled.cloud/openbao/policies';
6
6
  import * as Effect from 'effect/Effect';
7
7
  import * as Semaphore from 'effect/Semaphore';
8
- import * as Headers from 'effect/unstable/http/Headers';
9
- import * as HttpClient from 'effect/unstable/http/HttpClient';
10
- import * as HttpClientResponse from 'effect/unstable/http/HttpClientResponse';
8
+ import * as Headers from 'effect/http/Headers';
9
+ import * as HttpClient from 'effect/http/HttpClient';
10
+ import * as HttpClientResponse from 'effect/http/HttpClientResponse';
11
11
  import { BaoEnv, BaoGate, MAX_IN_FLIGHT, baoRead } from './bao-http.ts';
12
12
  import { runBao } from './distilled.ts';
13
13
  import { fakeBao, run, runFailure, withFake } from './fake-bao.ts';
@@ -14,8 +14,8 @@ import type * as Duration from 'effect/Duration';
14
14
  import * as Effect from 'effect/Effect';
15
15
  import * as Redacted from 'effect/Redacted';
16
16
  import * as Semaphore from 'effect/Semaphore';
17
- import type * as HttpClient from 'effect/unstable/http/HttpClient';
18
- import { isHttpClientError } from 'effect/unstable/http/HttpClientError';
17
+ import type * as HttpClient from 'effect/http/HttpClient';
18
+ import { isHttpClientError } from 'effect/http/HttpClientError';
19
19
  import { readBaoVariable, resolveAddress } from './bao-address.ts';
20
20
  import {
21
21
  BAO_TIMEOUT,
@@ -7,8 +7,8 @@
7
7
  * BAO_TOKEN in the shell running the tests can never be read or contacted.
8
8
  */
9
9
  import * as Effect from 'effect/Effect';
10
- import * as FetchHttpClient from 'effect/unstable/http/FetchHttpClient';
11
- import type * as HttpClient from 'effect/unstable/http/HttpClient';
10
+ import * as FetchHttpClient from 'effect/http/FetchHttpClient';
11
+ import type * as HttpClient from 'effect/http/HttpClient';
12
12
  import type { BaoEnvironment } from './bao-address.ts';
13
13
  import { BaoEnv } from './bao-http.ts';
14
14
 
@@ -9,7 +9,7 @@
9
9
  */
10
10
  import * as Effect from 'effect/Effect';
11
11
  import * as Layer from 'effect/Layer';
12
- import * as FetchHttpClient from 'effect/unstable/http/FetchHttpClient';
12
+ import * as FetchHttpClient from 'effect/http/FetchHttpClient';
13
13
  import type * as Output from 'alchemy/Output';
14
14
  import { BaoAuthMethod, BaoAuthMethodProvider } from './auth-method.ts';
15
15
  import { BaoAuthRoleProvider } from './auth-role.ts';
@@ -10,7 +10,7 @@ import * as Effect from 'effect/Effect';
10
10
  import * as FileSystem from 'effect/FileSystem';
11
11
  import * as Layer from 'effect/Layer';
12
12
  import * as Path from 'effect/Path';
13
- import * as FetchHttpClient from 'effect/unstable/http/FetchHttpClient';
13
+ import * as FetchHttpClient from 'effect/http/FetchHttpClient';
14
14
  import type { Reply, Seen } from './fake-bao.ts';
15
15
  import { parseDuration } from './mount-form.ts';
16
16
  import { trimTrailing } from './mount-path.ts';
@@ -11,7 +11,7 @@ import * as RemovalPolicy from 'alchemy/RemovalPolicy';
11
11
  import type * as Output from 'alchemy/Output';
12
12
  import * as Effect from 'effect/Effect';
13
13
  import * as Layer from 'effect/Layer';
14
- import * as FetchHttpClient from 'effect/unstable/http/FetchHttpClient';
14
+ import * as FetchHttpClient from 'effect/http/FetchHttpClient';
15
15
  import { BaoAuthRole, BaoAuthRoleProvider } from './auth-role.ts';
16
16
  import type { Reply, Seen } from './fake-bao.ts';
17
17
  import { type Estate, fakeEstate } from './fake-engines-roles.ts';
@@ -36,6 +36,11 @@ export type DeployOptions = { readonly adopt?: boolean };
36
36
  export interface FakeStack {
37
37
  /** Plan, then apply, `body`. Resolves to the plan; rejects with the apply's failure. */
38
38
  readonly deploy: (body: StackBody, options?: DeployOptions) => Promise<Planned>;
39
+ /**
40
+ * `alchemy destroy` of `body`: the body is still evaluated (its declarations stay in the Stack
41
+ * service), and the plan is Alchemy's own `Plan.destroy`. Resolves to the plan's actions.
42
+ */
43
+ readonly destroy: (body: StackBody) => Promise<Planned>;
39
44
  }
40
45
 
41
46
  type Node = { readonly action: string };
@@ -82,11 +87,14 @@ export const fakeStack = <ROut, E, RIn>(
82
87
  * diff uses to tell reconcile it resumes an interrupted create (ownership/resume.ts).
83
88
  * ★ `--adopt` reaches registration, plan and apply alike, as the Alchemist session provides it.
84
89
  */
85
- const deploy = (body: StackBody, options: DeployOptions = {}) =>
90
+ const destroying = Alchemy.Plan.destroy as unknown as (
91
+ compiled: unknown,
92
+ ) => Effect.Effect<PlanView, unknown, never>;
93
+ const run = (body: StackBody, options: DeployOptions, planner: typeof plan) =>
86
94
  Effect.gen(function* () {
87
95
  const compiled = yield* stack(name, { providers, state }, body);
88
96
  return yield* Effect.gen(function* () {
89
- const planned = yield* plan(compiled);
97
+ const planned = yield* planner(compiled);
90
98
  yield* apply(planned);
91
99
  return actionsOf(planned);
92
100
  }).pipe(provideFreshArtifactStore, Effect.provide(Layer.succeedContext(compiled.services)));
@@ -99,7 +107,9 @@ export const fakeStack = <ROut, E, RIn>(
99
107
  );
100
108
 
101
109
  return {
102
- deploy: (body, options) => Effect.runPromise(deploy(body, options) as Effect.Effect<Planned>),
110
+ deploy: (body, options) =>
111
+ Effect.runPromise(run(body, options ?? {}, plan) as Effect.Effect<Planned>),
112
+ destroy: (body) => Effect.runPromise(run(body, {}, destroying) as Effect.Effect<Planned>),
103
113
  };
104
114
  };
105
115
 
@@ -20,7 +20,7 @@ import { Resource } from 'alchemy';
20
20
  import { isResolved } from 'alchemy/Diff';
21
21
  import * as Provider from 'alchemy/Provider';
22
22
  import * as Effect from 'effect/Effect';
23
- import type * as HttpClient from 'effect/unstable/http/HttpClient';
23
+ import type * as HttpClient from 'effect/http/HttpClient';
24
24
  import { claimFor } from '../ownership/adopt.ts';
25
25
  import { provingResumes } from '../ownership/resume.ts';
26
26
  import {
@@ -22,7 +22,7 @@ import { Resource } from 'alchemy';
22
22
  import { isResolved } from 'alchemy/Diff';
23
23
  import * as Provider from 'alchemy/Provider';
24
24
  import * as Effect from 'effect/Effect';
25
- import type * as HttpClient from 'effect/unstable/http/HttpClient';
25
+ import type * as HttpClient from 'effect/http/HttpClient';
26
26
  import { claimFor } from '../ownership/adopt.ts';
27
27
  import { provingResumes } from '../ownership/resume.ts';
28
28
  import { baoDelete } from './bao-http.ts';
@@ -16,7 +16,7 @@ import { Resource } from 'alchemy';
16
16
  import { isResolved } from 'alchemy/Diff';
17
17
  import * as Provider from 'alchemy/Provider';
18
18
  import * as Effect from 'effect/Effect';
19
- import type * as HttpClient from 'effect/unstable/http/HttpClient';
19
+ import type * as HttpClient from 'effect/http/HttpClient';
20
20
  import { claimFor } from '../ownership/adopt.ts';
21
21
  import { provingResumes } from '../ownership/resume.ts';
22
22
  import { baoDelete } from './bao-http.ts';
@@ -30,7 +30,7 @@ import { Resource } from 'alchemy';
30
30
  import { isResolved } from 'alchemy/Diff';
31
31
  import * as Provider from 'alchemy/Provider';
32
32
  import * as Effect from 'effect/Effect';
33
- import type * as HttpClient from 'effect/unstable/http/HttpClient';
33
+ import type * as HttpClient from 'effect/http/HttpClient';
34
34
  import { type Claim, claimFor } from '../ownership/adopt.ts';
35
35
  import { ownedRead } from '../ownership/probe.ts';
36
36
  import { provingResumes } from '../ownership/resume.ts';
@@ -19,7 +19,7 @@ import { Resource } from 'alchemy';
19
19
  import { isResolved } from 'alchemy/Diff';
20
20
  import * as Provider from 'alchemy/Provider';
21
21
  import * as Effect from 'effect/Effect';
22
- import type * as HttpClient from 'effect/unstable/http/HttpClient';
22
+ import type * as HttpClient from 'effect/http/HttpClient';
23
23
  import { type Claim, claimFor } from '../ownership/adopt.ts';
24
24
  import { ownedRead } from '../ownership/probe.ts';
25
25
  import { provingResumes } from '../ownership/resume.ts';
@@ -25,7 +25,7 @@
25
25
  * (identity/mfa.go:172-183), which HTTP answers 204. So this never writes by id.
26
26
  */
27
27
  import * as Effect from 'effect/Effect';
28
- import type * as HttpClient from 'effect/unstable/http/HttpClient';
28
+ import type * as HttpClient from 'effect/http/HttpClient';
29
29
  import { BaoEnv, baoCall, baoDelete, baoRead } from './bao-http.ts';
30
30
  import { envNamespace, namespacePath } from './bao-namespace.ts';
31
31
  import type { BaoError } from './bao-status.ts';
@@ -13,7 +13,7 @@
13
13
  * neither, is a refusal — "neither" in particular is exactly the empty-mount failure above.
14
14
  */
15
15
  import * as Effect from 'effect/Effect';
16
- import type * as HttpClient from 'effect/unstable/http/HttpClient';
16
+ import type * as HttpClient from 'effect/http/HttpClient';
17
17
  import type { BaoError } from './bao-status.ts';
18
18
  import { mountPath } from './mount-form.ts';
19
19
  import { type RemountError, type RemountOptions, remountAndWait } from './remount-wire.ts';
@@ -3,7 +3,7 @@
3
3
  * refusals) run against a fake server, not only in a reviewer's head.
4
4
  */
5
5
  import * as Effect from 'effect/Effect';
6
- import type * as HttpClient from 'effect/unstable/http/HttpClient';
6
+ import type * as HttpClient from 'effect/http/HttpClient';
7
7
  import type { Claim } from '../ownership/adopt.ts';
8
8
  import type { BaoError } from './bao-status.ts';
9
9
  import {
@@ -21,7 +21,7 @@ import { Resource } from 'alchemy';
21
21
  import { isResolved } from 'alchemy/Diff';
22
22
  import * as Provider from 'alchemy/Provider';
23
23
  import * as Effect from 'effect/Effect';
24
- import type * as HttpClient from 'effect/unstable/http/HttpClient';
24
+ import type * as HttpClient from 'effect/http/HttpClient';
25
25
  import { claimFor } from '../ownership/adopt.ts';
26
26
  import { ownedRead } from '../ownership/probe.ts';
27
27
  import { provingResumes } from '../ownership/resume.ts';
@@ -42,7 +42,7 @@ import { Resource } from 'alchemy';
42
42
  import { isResolved } from 'alchemy/Diff';
43
43
  import * as Provider from 'alchemy/Provider';
44
44
  import * as Effect from 'effect/Effect';
45
- import type * as HttpClient from 'effect/unstable/http/HttpClient';
45
+ import type * as HttpClient from 'effect/http/HttpClient';
46
46
  import { refuseTakeover } from '../ownership/adopt.ts';
47
47
  import { ownedRead } from '../ownership/probe.ts';
48
48
  import { provingResumes } from '../ownership/resume.ts';
@@ -3,7 +3,7 @@
3
3
  * be run against a fake server rather than only reasoned about.
4
4
  */
5
5
  import * as Effect from 'effect/Effect';
6
- import type * as HttpClient from 'effect/unstable/http/HttpClient';
6
+ import type * as HttpClient from 'effect/http/HttpClient';
7
7
  import type { Claim } from '../ownership/adopt.ts';
8
8
  import type { BaoError } from './bao-status.ts';
9
9
  import {
@@ -12,7 +12,7 @@
12
12
  * token without it reads as 403, which is an error here, never "absent".
13
13
  */
14
14
  import type * as Effect from 'effect/Effect';
15
- import type * as HttpClient from 'effect/unstable/http/HttpClient';
15
+ import type * as HttpClient from 'effect/http/HttpClient';
16
16
  import { baoDelete, baoRead, baoWrite } from './bao-http.ts';
17
17
  import type { BaoError } from './bao-status.ts';
18
18
  import {
@@ -23,7 +23,7 @@ import { Resource } from 'alchemy';
23
23
  import { isResolved } from 'alchemy/Diff';
24
24
  import * as Provider from 'alchemy/Provider';
25
25
  import * as Effect from 'effect/Effect';
26
- import type * as HttpClient from 'effect/unstable/http/HttpClient';
26
+ import type * as HttpClient from 'effect/http/HttpClient';
27
27
  import { claimFor } from '../ownership/adopt.ts';
28
28
  import { ownedRead } from '../ownership/probe.ts';
29
29
  import { provingResumes } from '../ownership/resume.ts';
@@ -4,7 +4,7 @@ import * as Provider from 'alchemy/Provider';
4
4
  import * as Effect from 'effect/Effect';
5
5
  import * as FileSystem from 'effect/FileSystem';
6
6
  import * as Path from 'effect/Path';
7
- import type * as HttpClient from 'effect/unstable/http/HttpClient';
7
+ import type * as HttpClient from 'effect/http/HttpClient';
8
8
  import { refuseTakeover } from '../ownership/adopt.ts';
9
9
  import { ownedRead } from '../ownership/probe.ts';
10
10
  import { provingResumes } from '../ownership/resume.ts';
@@ -39,7 +39,7 @@ import { Resource } from 'alchemy';
39
39
  import { isResolved } from 'alchemy/Diff';
40
40
  import * as Provider from 'alchemy/Provider';
41
41
  import * as Effect from 'effect/Effect';
42
- import type * as HttpClient from 'effect/unstable/http/HttpClient';
42
+ import type * as HttpClient from 'effect/http/HttpClient';
43
43
  import { refuseTakeover } from '../ownership/adopt.ts';
44
44
  import { ownedRead } from '../ownership/probe.ts';
45
45
  import { provingResumes } from '../ownership/resume.ts';
@@ -18,7 +18,7 @@
18
18
  * ⛔ POLICIES ARE NOT REWRITTEN. Every ACL path naming the old mount keeps naming it.
19
19
  */
20
20
  import * as Effect from 'effect/Effect';
21
- import type * as HttpClient from 'effect/unstable/http/HttpClient';
21
+ import type * as HttpClient from 'effect/http/HttpClient';
22
22
  import { baoCall, baoRead } from './bao-http.ts';
23
23
  import type { BaoError } from './bao-status.ts';
24
24
 
@@ -10,7 +10,7 @@ import * as Output from 'alchemy/Output';
10
10
  import * as RemovalPolicy from 'alchemy/RemovalPolicy';
11
11
  import * as Effect from 'effect/Effect';
12
12
  import * as Layer from 'effect/Layer';
13
- import * as FetchHttpClient from 'effect/unstable/http/FetchHttpClient';
13
+ import * as FetchHttpClient from 'effect/http/FetchHttpClient';
14
14
  import { groupKey } from './cloudflare-group-scope.ts';
15
15
  import { CloudflarePermissionGroups } from './cloudflare-permission-groups.ts';
16
16
  import { BaoCloudflareRole, BaoCloudflareRoleProvider } from './cloudflare-role.ts';
@@ -14,7 +14,7 @@
14
14
  * so the refusal is seen at the next deploy instead of hiding behind a clean plan.
15
15
  */
16
16
  import * as Effect from 'effect/Effect';
17
- import type * as HttpClient from 'effect/unstable/http/HttpClient';
17
+ import type * as HttpClient from 'effect/http/HttpClient';
18
18
  import type { Claim, Owner } from '../ownership/adopt.ts';
19
19
  import { ownedRead } from '../ownership/probe.ts';
20
20
  import { baoRead, baoWrite } from './bao-http.ts';
@@ -9,7 +9,7 @@ import * as Output from 'alchemy/Output';
9
9
  import * as RemovalPolicy from 'alchemy/RemovalPolicy';
10
10
  import * as Effect from 'effect/Effect';
11
11
  import * as Layer from 'effect/Layer';
12
- import * as FetchHttpClient from 'effect/unstable/http/FetchHttpClient';
12
+ import * as FetchHttpClient from 'effect/http/FetchHttpClient';
13
13
  import { groupKey } from './cloudflare-group-scope.ts';
14
14
  import { CloudflarePermissionGroups } from './cloudflare-permission-groups.ts';
15
15
  import { BaoCloudflareRole, BaoCloudflareRoleProvider } from './cloudflare-role.ts';
@@ -35,7 +35,7 @@ import { Resource } from 'alchemy';
35
35
  import { isResolved } from 'alchemy/Diff';
36
36
  import * as Provider from 'alchemy/Provider';
37
37
  import * as Effect from 'effect/Effect';
38
- import type * as HttpClient from 'effect/unstable/http/HttpClient';
38
+ import type * as HttpClient from 'effect/http/HttpClient';
39
39
  import { refuseTakeover } from '../ownership/adopt.ts';
40
40
  import { ownedRead } from '../ownership/probe.ts';
41
41
  import { provingResumes } from '../ownership/resume.ts';
@@ -11,7 +11,7 @@
11
11
  */
12
12
  import { type Credentials, credentials } from '@distilled.cloud/opnsense/Credentials';
13
13
  import * as Layer from 'effect/Layer';
14
- import * as FetchHttpClient from 'effect/unstable/http/FetchHttpClient';
14
+ import * as FetchHttpClient from 'effect/http/FetchHttpClient';
15
15
 
16
16
  export const FAKE_BASE = 'https://opnsense.example.com';
17
17
  export const FAKE_KEY = 'placeholder-opnsense-key';
@@ -28,7 +28,7 @@ import { isResolved } from 'alchemy/Diff';
28
28
  import type { Input } from 'alchemy/Input';
29
29
  import type { OpnsenseOpContext } from '@distilled.cloud/opnsense/Protocol';
30
30
  import * as Effect from 'effect/Effect';
31
- import type * as HttpClient from 'effect/unstable/http/HttpClient';
31
+ import type * as HttpClient from 'effect/http/HttpClient';
32
32
  import { CredentialsFromEnv } from './credentials.ts';
33
33
  import { refuseWrite } from './policy.ts';
34
34
 
@@ -24,8 +24,50 @@
24
24
  */
25
25
  import { Unowned } from 'alchemy/AdoptPolicy';
26
26
  import * as Effect from 'effect/Effect';
27
+ import * as Option from 'effect/Option';
28
+ import type * as Tracer from 'effect/Tracer';
27
29
  import type { Owner } from './adopt.ts';
28
- import { recordedInstance } from './rows.ts';
30
+ import { resumes } from './resume.ts';
31
+ import { forgetRefusedCreate, recordedInstance } from './rows.ts';
32
+
33
+ /**
34
+ * Whether this read is APPLY's own (Apply.ts `instrumentLifecycle` wraps every apply-time lifecycle
35
+ * call in a `provider.read` span; the plan's reads run outside one).
36
+ * ⛔ AN APPLY-TIME READ WITH NO ATTRIBUTES PROVES NOTHING. 🔴 MEASURED 2026-10-06 (alchemy
37
+ * 2.0.0-beta.81, openbao/adopt-core.test.ts and nine more suites): beta.81 asks the provider to
38
+ * read at APPLY for a create whose props were still Outputs at plan (Plan.ts `deferredAdoption`),
39
+ * and first overwrites the `creating` row with the NOW-RESOLVED props (Apply.ts `checkpoint`). That
40
+ * row is whole, so `provenOurs` read the live object as matching it, and another owner's object
41
+ * was taken over with no `--adopt`. Answering `Unowned` here hands the decision back to the engine,
42
+ * which refuses it ("Cannot adopt resource … Re-run with `--adopt`") unless adoption is on.
43
+ * ★ THE ONE PROOF AN APPLY-TIME READ MAY USE IS THE PLAN'S: the diff's own recovery read noted this
44
+ * instance as a proven resume (resume.ts), and that note is what `resumes` answers.
45
+ * ⛔ ONLY THE CREATE'S OWN READ, NOT THE DELETE PATH'S. beta.81 wraps BOTH in a `provider.read`
46
+ * span: the deferred-adoption read runs inside `apply.resource` (the create's span), while the
47
+ * deletion recovery read (Apply.ts, a row to delete that never recorded attributes) runs in
48
+ * collectGarbage, under no such span. 🔴 Treating the second as the first answered `Unowned` for
49
+ * our own interrupted create: the engine skipped `provider.delete` and erased the row, leaving a
50
+ * live object nothing tracked (red team, kit PR 359, 2026-10-06; adopt-recovery.test.ts). The
51
+ * delete's recovery read keeps the state-row proof (`recordedInstance` + `settled`), as before.
52
+ */
53
+ const inApplyResource = (span: Tracer.AnySpan | undefined): boolean => {
54
+ let at = span;
55
+ while (at !== undefined && at._tag === 'Span') {
56
+ if (at.name === 'apply.resource') return true;
57
+ at = Option.getOrUndefined(at.parent);
58
+ }
59
+ return false;
60
+ };
61
+
62
+ const isCreatesRead = (span: Option.Option<Tracer.Span>): boolean => {
63
+ const current = Option.getOrUndefined(span);
64
+ return current?.name === 'provider.read' && inApplyResource(current);
65
+ };
66
+
67
+ const readsAtApply: Effect.Effect<boolean> = Effect.map(
68
+ Effect.option(Effect.currentSpan),
69
+ isCreatesRead,
70
+ );
29
71
 
30
72
  /**
31
73
  * Whether the state store proves the live object this instance's own: a row records `ask.instanceId`
@@ -42,6 +84,7 @@ export const provenOurs = <E, R>(
42
84
  settled: Effect.Effect<boolean, E, R>,
43
85
  ): Effect.Effect<boolean, never, R> =>
44
86
  Effect.gen(function* () {
87
+ if (yield* readsAtApply) return yield* resumes(ask.instanceId);
45
88
  const recorded = yield* recordedInstance(ask.fqn, ask.instanceId);
46
89
  if (recorded === 'absent') return false;
47
90
  if (recorded === 'partial') {
@@ -74,5 +117,11 @@ export const ownedRead = <A extends object, E, R>(
74
117
  ): Effect.Effect<A | undefined, never, R> =>
75
118
  Effect.gen(function* () {
76
119
  if (found === undefined || ask.output !== undefined) return found;
77
- return (yield* provenOurs(ask, settled)) ? found : Unowned(found);
120
+ if (yield* provenOurs(ask, settled)) return found;
121
+ // ⛔ THE ENGINE'S OWN REFUSAL LEAVES ITS `creating` CHECKPOINT BEHIND (Apply.ts), now holding the
122
+ // RESOLVED props: a whole row, which the next plan's recovery read would take as proof and
123
+ // adopt exactly what was refused. Forgotten here, as adopt.ts refuseTakeover does for its own
124
+ // refusal; under --adopt the engine's later `created` commit writes the row again.
125
+ if (yield* readsAtApply) yield* forgetRefusedCreate(ask.fqn, ask.instanceId);
126
+ return Unowned(found);
78
127
  });
@@ -18,7 +18,7 @@ import { type Credentials, credentials } from '@distilled.cloud/paperless-ngx/Cr
18
18
  import type { PaperlessNgxOpContext } from '@distilled.cloud/paperless-ngx/Protocol';
19
19
  import * as Effect from 'effect/Effect';
20
20
  import * as Layer from 'effect/Layer';
21
- import * as FetchHttpClient from 'effect/unstable/http/FetchHttpClient';
21
+ import * as FetchHttpClient from 'effect/http/FetchHttpClient';
22
22
 
23
23
  export const FAKE_BASE = 'https://paperless.example.com';
24
24
  export const FAKE_TOKEN = 'placeholder-paperless-token';
@@ -14,7 +14,7 @@
14
14
  */
15
15
  import type { PaperlessNgxOpContext } from '@distilled.cloud/paperless-ngx/Protocol';
16
16
  import type * as Effect from 'effect/Effect';
17
- import type * as HttpClient from 'effect/unstable/http/HttpClient';
17
+ import type * as HttpClient from 'effect/http/HttpClient';
18
18
  import type { EndpointKey, PaperlessBody } from './constraints.ts';
19
19
 
20
20
  /**
@@ -17,7 +17,7 @@ import * as PgClient from '@effect/sql-pg/PgClient';
17
17
  import * as Context from 'effect/Context';
18
18
  import * as Effect from 'effect/Effect';
19
19
  import * as Layer from 'effect/Layer';
20
- import type { SqlError } from 'effect/unstable/sql/SqlError';
20
+ import type { SqlError } from 'effect/sql/SqlError';
21
21
  import type { PgExecutor } from './database-sql.ts';
22
22
  import { type PsqlRunner, makePsqlExecutor } from './psql-executor.ts';
23
23
  import { pinnedSocketExecutor } from './search-path.ts';