@homeflare/alchemy 0.11.0 → 0.12.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 (240) hide show
  1. package/README.md +3 -3
  2. package/dist/caddy/admin-guard.d.ts +1 -1
  3. package/dist/caddy/index.js.map +2 -2
  4. package/dist/cloudflare/client.d.ts +1 -1
  5. package/dist/cloudflare/index.js.map +2 -2
  6. package/dist/cloudflare/lock-rules.d.ts +1 -1
  7. package/dist/forgejo/branch-protection-form.d.ts +1 -1
  8. package/dist/forgejo/branch-protection.d.ts +1 -1
  9. package/dist/forgejo/index.js.map +10 -10
  10. package/dist/forgejo/org-actions-secrets.d.ts +1 -1
  11. package/dist/forgejo/org-label.d.ts +1 -1
  12. package/dist/forgejo/org-team.d.ts +1 -1
  13. package/dist/forgejo/repo-webhook.d.ts +1 -1
  14. package/dist/forgejo/repository.d.ts +2 -2
  15. package/dist/forgejo/repository.d.ts.map +1 -1
  16. package/dist/forgejo/resource.d.ts +2 -2
  17. package/dist/forgejo/team-member.d.ts +1 -1
  18. package/dist/openbao/auth-role.d.ts +1 -1
  19. package/dist/openbao/bao-http.d.ts +4 -4
  20. package/dist/openbao/cloudflare-permission-groups.d.ts +1 -1
  21. package/dist/openbao/cloudflare-role-form.d.ts +2 -2
  22. package/dist/openbao/cloudflare-role-form.d.ts.map +1 -1
  23. package/dist/openbao/cloudflare-roles-expand.d.ts +1 -1
  24. package/dist/openbao/digest.d.ts +1 -1
  25. package/dist/openbao/forgejo-bootstrap-parse.d.ts +2 -2
  26. package/dist/openbao/forgejo-bootstrap-parse.d.ts.map +1 -1
  27. package/dist/openbao/forgejo-bootstrap.d.ts +1 -1
  28. package/dist/openbao/index.js.map +14 -14
  29. package/dist/openbao/mount.d.ts +1 -1
  30. package/dist/openbao/pki-role.d.ts +1 -1
  31. package/dist/openbao/policy.d.ts +2 -2
  32. package/dist/openbao/proxmox-role-form.d.ts +2 -2
  33. package/dist/openbao/proxmox-role-form.d.ts.map +1 -1
  34. package/dist/openbao/proxmox-role.d.ts +10 -10
  35. package/dist/openbao/ssh-role.d.ts +3 -3
  36. package/dist/proxmox/acl.d.ts +2 -2
  37. package/dist/proxmox/acl.d.ts.map +1 -1
  38. package/dist/proxmox/api-token-form.d.ts +2 -2
  39. package/dist/proxmox/api-token.d.ts +11 -11
  40. package/dist/proxmox/ceph-daemon-form.d.ts +3 -3
  41. package/dist/proxmox/ceph-daemon.d.ts +19 -19
  42. package/dist/proxmox/ceph-daemon.d.ts.map +1 -1
  43. package/dist/proxmox/ceph-flag.d.ts +5 -5
  44. package/dist/proxmox/ceph-fs-wire.d.ts +5 -5
  45. package/dist/proxmox/ceph-fs.d.ts +16 -16
  46. package/dist/proxmox/ceph-osd-tree.d.ts +16 -16
  47. package/dist/proxmox/ceph-osd.d.ts +5 -5
  48. package/dist/proxmox/ceph-pool-form.d.ts +13 -13
  49. package/dist/proxmox/ceph-pool-form.d.ts.map +1 -1
  50. package/dist/proxmox/ceph-pool.d.ts +3 -3
  51. package/dist/proxmox/client.d.ts +2 -2
  52. package/dist/proxmox/credentials.d.ts +8 -8
  53. package/dist/proxmox/credentials.d.ts.map +1 -1
  54. package/dist/proxmox/firewall-alias-form.d.ts +1 -1
  55. package/dist/proxmox/firewall-alias.d.ts +1 -1
  56. package/dist/proxmox/generated/pbs.d.ts +1 -1
  57. package/dist/proxmox/generated/pve.d.ts +1 -1
  58. package/dist/proxmox/group.d.ts +8 -8
  59. package/dist/proxmox/ha-resource.d.ts +3 -2
  60. package/dist/proxmox/ha-resource.d.ts.map +1 -1
  61. package/dist/proxmox/ha-rule-form.d.ts +5 -5
  62. package/dist/proxmox/ha-rule.d.ts +3 -3
  63. package/dist/proxmox/index.d.ts +6 -0
  64. package/dist/proxmox/index.d.ts.map +1 -1
  65. package/dist/proxmox/index.js +356 -142
  66. package/dist/proxmox/index.js.map +59 -56
  67. package/dist/proxmox/lease-cache.d.ts +4 -4
  68. package/dist/proxmox/lxc-harness.d.ts +1 -1
  69. package/dist/proxmox/lxc-props.d.ts +2 -2
  70. package/dist/proxmox/lxc.d.ts +3 -3
  71. package/dist/proxmox/members.d.ts +3 -3
  72. package/dist/proxmox/network-apply-read.d.ts +5 -5
  73. package/dist/proxmox/network-apply.d.ts +9 -9
  74. package/dist/proxmox/node-network-form.d.ts +6 -6
  75. package/dist/proxmox/node-network.d.ts +17 -17
  76. package/dist/proxmox/node-network.d.ts.map +1 -1
  77. package/dist/proxmox/notification-target.d.ts +3 -2
  78. package/dist/proxmox/notification-target.d.ts.map +1 -1
  79. package/dist/proxmox/pbs-datastore-guard.d.ts +1 -1
  80. package/dist/proxmox/pbs-datastore.d.ts +10 -10
  81. package/dist/proxmox/pbs-prune-job.d.ts +2 -2
  82. package/dist/proxmox/pbs-sync-job.d.ts +4 -4
  83. package/dist/proxmox/pbs-verify-job.d.ts +1 -1
  84. package/dist/proxmox/pool.d.ts +4 -4
  85. package/dist/proxmox/provision-baseline.d.ts +74 -0
  86. package/dist/proxmox/provision-baseline.d.ts.map +1 -0
  87. package/dist/proxmox/provision-bootstrap.d.ts +33 -0
  88. package/dist/proxmox/provision-bootstrap.d.ts.map +1 -0
  89. package/dist/proxmox/provision-cli-fake.d.ts +38 -0
  90. package/dist/proxmox/provision-cli-fake.d.ts.map +1 -0
  91. package/dist/proxmox/provision-declare.d.ts +25 -0
  92. package/dist/proxmox/provision-declare.d.ts.map +1 -0
  93. package/dist/proxmox/replication-job.d.ts +9 -8
  94. package/dist/proxmox/replication-job.d.ts.map +1 -1
  95. package/dist/proxmox/resource.d.ts +2 -2
  96. package/dist/proxmox/resource.d.ts.map +1 -1
  97. package/dist/proxmox/sdn-apply-read.d.ts +7 -7
  98. package/dist/proxmox/sdn-apply.d.ts +1 -1
  99. package/dist/proxmox/sdn-subnet-form.d.ts +1 -1
  100. package/dist/proxmox/sdn-subnet.d.ts +5 -5
  101. package/dist/proxmox/sdn-vnet.d.ts +5 -6
  102. package/dist/proxmox/sdn-vnet.d.ts.map +1 -1
  103. package/dist/proxmox/storage.d.ts +4 -3
  104. package/dist/proxmox/storage.d.ts.map +1 -1
  105. package/dist/proxmox/user.d.ts +3 -2
  106. package/dist/proxmox/user.d.ts.map +1 -1
  107. package/dist/proxmox/values.d.ts +1 -1
  108. package/dist/proxmox/zfs-pool-write.d.ts +1 -1
  109. package/dist/proxmox/zfs-pool.d.ts +5 -5
  110. package/dist/talos/credentials.d.ts +1 -1
  111. package/dist/talos/credentials.d.ts.map +1 -1
  112. package/dist/talos/index.js.map +1 -1
  113. package/docs/adopt-verify.md +21 -5
  114. package/docs/adopted-deploys.md +1 -1
  115. package/docs/ownership.md +26 -1
  116. package/docs/provision-baseline.md +106 -0
  117. package/docs/proxmox-lxc-adopt.md +2 -2
  118. package/docs/proxmox-lxc.md +5 -4
  119. package/docs/proxmox.md +6 -0
  120. package/package.json +1 -1
  121. package/src/caddy/admin-guard.ts +1 -1
  122. package/src/caddy/local-admin.ts +1 -1
  123. package/src/cloudflare/client.ts +1 -1
  124. package/src/cloudflare/lock-rules.ts +1 -1
  125. package/src/forgejo/branch-protection-form.ts +1 -1
  126. package/src/forgejo/branch-protection.ts +1 -1
  127. package/src/forgejo/client.ts +1 -1
  128. package/src/forgejo/org-actions-secrets.ts +1 -1
  129. package/src/forgejo/org-label.ts +1 -1
  130. package/src/forgejo/org-team.ts +1 -1
  131. package/src/forgejo/repo-webhook.ts +1 -1
  132. package/src/forgejo/repository.ts +2 -2
  133. package/src/forgejo/resource.ts +2 -2
  134. package/src/forgejo/team-member.ts +1 -1
  135. package/src/openbao/README.md +4 -4
  136. package/src/openbao/auth-role.ts +1 -1
  137. package/src/openbao/bao-http.test.ts +2 -2
  138. package/src/openbao/bao-http.ts +6 -6
  139. package/src/openbao/bao-status.test.ts +1 -1
  140. package/src/openbao/bao-status.ts +1 -1
  141. package/src/openbao/cloudflare-group-scope.test.ts +1 -1
  142. package/src/openbao/cloudflare-permission-groups.test.ts +1 -1
  143. package/src/openbao/cloudflare-permission-groups.ts +3 -3
  144. package/src/openbao/cloudflare-policy.ts +1 -1
  145. package/src/openbao/cloudflare-role-form.ts +2 -2
  146. package/src/openbao/cloudflare-roles-expand.ts +1 -1
  147. package/src/openbao/digest.ts +1 -1
  148. package/src/openbao/forgejo-bootstrap-parse.test.ts +3 -3
  149. package/src/openbao/forgejo-bootstrap-parse.ts +2 -2
  150. package/src/openbao/forgejo-bootstrap.ts +4 -4
  151. package/src/openbao/kubernetes-role-form.test.ts +5 -5
  152. package/src/openbao/mount.ts +1 -1
  153. package/src/openbao/pki-role.ts +1 -1
  154. package/src/openbao/policy-wire.test.ts +3 -3
  155. package/src/openbao/policy.ts +2 -2
  156. package/src/openbao/proxmox-role-form.ts +5 -5
  157. package/src/openbao/proxmox-role.ts +11 -11
  158. package/src/openbao/ssh-role.ts +3 -3
  159. package/src/proxmox/acl.ts +4 -4
  160. package/src/proxmox/adopt-noop.test.ts +6 -6
  161. package/src/proxmox/api-token-form.ts +4 -4
  162. package/src/proxmox/api-token.ts +13 -13
  163. package/src/proxmox/ceph-daemon-form.ts +3 -3
  164. package/src/proxmox/ceph-daemon.ts +20 -20
  165. package/src/proxmox/ceph-flag.ts +7 -7
  166. package/src/proxmox/ceph-fs-wire.ts +7 -7
  167. package/src/proxmox/ceph-fs.ts +18 -18
  168. package/src/proxmox/ceph-osd-tree.ts +16 -16
  169. package/src/proxmox/ceph-osd.ts +6 -6
  170. package/src/proxmox/ceph-pool-adopt.test.ts +14 -14
  171. package/src/proxmox/ceph-pool-form.ts +13 -13
  172. package/src/proxmox/ceph-pool.ts +6 -6
  173. package/src/proxmox/client.test.ts +3 -3
  174. package/src/proxmox/client.ts +3 -3
  175. package/src/proxmox/credentials.test.ts +6 -8
  176. package/src/proxmox/credentials.ts +8 -8
  177. package/src/proxmox/firewall-alias-form.ts +1 -1
  178. package/src/proxmox/firewall-alias.ts +1 -1
  179. package/src/proxmox/generated/pbs.ts +1 -1
  180. package/src/proxmox/generated/pve.ts +1 -1
  181. package/src/proxmox/group.ts +10 -10
  182. package/src/proxmox/ha-resource.ts +3 -2
  183. package/src/proxmox/ha-rule-form.ts +5 -5
  184. package/src/proxmox/ha-rule.ts +3 -3
  185. package/src/proxmox/index.test.ts +7 -0
  186. package/src/proxmox/index.ts +14 -0
  187. package/src/proxmox/lease-cache.test.ts +19 -19
  188. package/src/proxmox/lease-cache.ts +4 -4
  189. package/src/proxmox/lxc-adopt.test.ts +3 -3
  190. package/src/proxmox/lxc-create-form.ts +1 -1
  191. package/src/proxmox/lxc-guards.test.ts +4 -4
  192. package/src/proxmox/lxc-harness.ts +3 -3
  193. package/src/proxmox/lxc-judge.test.ts +5 -5
  194. package/src/proxmox/lxc-lifecycle.ts +1 -1
  195. package/src/proxmox/lxc-props.ts +2 -2
  196. package/src/proxmox/lxc-read.test.ts +3 -3
  197. package/src/proxmox/lxc-strict-adopt.test.ts +1 -1
  198. package/src/proxmox/lxc-volume.test.ts +9 -9
  199. package/src/proxmox/lxc-volume.ts +1 -1
  200. package/src/proxmox/lxc-wire.ts +1 -1
  201. package/src/proxmox/lxc.ts +3 -3
  202. package/src/proxmox/members.test.ts +1 -1
  203. package/src/proxmox/members.ts +3 -3
  204. package/src/proxmox/metric-server-otel.ts +2 -2
  205. package/src/proxmox/network-apply-read.ts +10 -10
  206. package/src/proxmox/network-apply.ts +10 -10
  207. package/src/proxmox/node-network-form.ts +7 -7
  208. package/src/proxmox/node-network.ts +18 -18
  209. package/src/proxmox/notification-target.ts +3 -2
  210. package/src/proxmox/pbs-datastore-guard.ts +1 -1
  211. package/src/proxmox/pbs-datastore.ts +10 -10
  212. package/src/proxmox/pbs-prune-job.ts +2 -2
  213. package/src/proxmox/pbs-sync-job.ts +4 -4
  214. package/src/proxmox/pbs-verify-job.ts +1 -1
  215. package/src/proxmox/pool.test.ts +2 -2
  216. package/src/proxmox/pool.ts +4 -4
  217. package/src/proxmox/provision-baseline.test.ts +87 -0
  218. package/src/proxmox/provision-baseline.ts +162 -0
  219. package/src/proxmox/provision-bootstrap.test.ts +132 -0
  220. package/src/proxmox/provision-bootstrap.ts +135 -0
  221. package/src/proxmox/provision-cli-fake.ts +217 -0
  222. package/src/proxmox/provision-declare.test.ts +111 -0
  223. package/src/proxmox/provision-declare.ts +103 -0
  224. package/src/proxmox/replication-job.ts +9 -8
  225. package/src/proxmox/resource.ts +3 -3
  226. package/src/proxmox/sdn-apply-read.test.ts +16 -16
  227. package/src/proxmox/sdn-apply-read.ts +7 -7
  228. package/src/proxmox/sdn-apply.ts +3 -3
  229. package/src/proxmox/sdn-subnet-form.ts +1 -1
  230. package/src/proxmox/sdn-subnet.ts +5 -5
  231. package/src/proxmox/sdn-vnet.ts +5 -6
  232. package/src/proxmox/storage.ts +4 -3
  233. package/src/proxmox/user.ts +3 -2
  234. package/src/proxmox/values.test.ts +2 -2
  235. package/src/proxmox/values.ts +1 -1
  236. package/src/proxmox/zfs-pool-write.ts +1 -1
  237. package/src/proxmox/zfs-pool.ts +6 -6
  238. package/src/talos/credentials.ts +3 -3
  239. package/src/talos/values.test.ts +9 -9
  240. package/src/verify/cli.test.ts +1 -1
@@ -11,7 +11,7 @@
11
11
  *
12
12
  * A PVE method with no permissions block is refused to every identity except `root@pam`, so an
13
13
  * OpenBao-minted `hf-provision@pve!…` token is answered 403 however wide its role — widening
14
- * `LXCProvisioner` cannot fix it. Compare the sibling families, which DO carry a check and
14
+ * the provision role cannot fix it. Compare the sibling families, which DO carry a check and
15
15
  * therefore do work with a token: `ceph/fs`, `ceph/mon` and `disks/zfs` all want `Sys.Modify`.
16
16
  *
17
17
  * ⚠️ SO THE WRITE PATH IS HONEST RATHER THAN USEFUL. It is written out properly in
@@ -19,7 +19,7 @@
19
19
  * operator running as root@pam. Through this package's credential it will 403, and a 403 is a
20
20
  * better answer than a `delete` that silently does nothing while the plan claims otherwise.
21
21
  *
22
- * ★ WHAT IT IS ACTUALLY FOR, THEN: ASSERTION. It turns "n2, n3 and n4 each hold two ssd OSDs"
22
+ * ★ WHAT IT IS ACTUALLY FOR, THEN: ASSERTION. It turns "node-b, node-c and node-d each hold two ssd OSDs"
23
23
  * into a line a plan checks, and it gives Ceph-backed resources something real to depend on —
24
24
  * read `osd.osdid` into an `rbd` storage's props and Alchemy orders that storage after the
25
25
  * assertion, so a stack can no longer report a healthy Ceph storage on a cluster whose OSDs are
@@ -46,8 +46,8 @@ import type { WithTarget } from './resource.ts';
46
46
  export type { CephOsdAttributes };
47
47
  export interface CephOsdProps extends WithTarget {
48
48
  /**
49
- * Which node ANSWERS the read — not where the OSD lives. MEASURED: the tree n2 returns and the
50
- * tree n3 returns are the same six leaves, n4's included. Point this at any node that is up;
49
+ * Which node ANSWERS the read — not where the OSD lives. MEASURED: the tree node-b returns and the
50
+ * tree node-c returns are the same six leaves, node-d's included. Point this at any node that is up;
51
51
  * `host` is the field that says where the disk is.
52
52
  */
53
53
  node: string;
@@ -56,7 +56,7 @@ export interface CephOsdProps extends WithTarget {
56
56
  /**
57
57
  * The CRUSH host bucket this OSD must sit in. Undeclared means unmanaged, as in storage.ts.
58
58
  *
59
- * ⚠️ DECLARING IT IS AN ASSERTION WITH NO REPAIR. If osd.2 turns up under n3, the plan reports
59
+ * ⚠️ DECLARING IT IS AN ASSERTION WITH NO REPAIR. If osd.2 turns up under node-c, the plan reports
60
60
  * work every time and the deploy fails, because moving an OSD between failure domains is a
61
61
  * `ceph osd crush move` this provider will not perform. That is the intent: a replica in the
62
62
  * wrong failure domain is not something to converge quietly past.
@@ -4,34 +4,34 @@
4
4
  * ★ SPLIT OUT OF ceph-pool.ts TO KEEP BOTH FILES UNDER THE 250-LINE CAP, and the seam is
5
5
  * "does this touch the cluster" — the same one metric-server-form.ts draws, just with more on
6
6
  * this side because this family needs it. Here: the declared shape, the reported shape, and the
7
- * coercions that turn one into the other. There: reading TB4, deciding a diff, and the four
7
+ * coercions that turn one into the other. There: reading C1, deciding a diff, and the four
8
8
  * handlers. Nothing in this file makes a call or decides an action.
9
9
  * ⚠️ THE PROPS LIVE HERE RATHER THAN IN THE RESOURCE FILE, which is the one place this pair
10
10
  * differs from metric-server / notification-target. There is no `import type` cycle back as a
11
11
  * result; ceph-pool.ts re-exports both interfaces so the public surface is unchanged.
12
12
  *
13
13
  * ⛔ POST AND PUT DO NOT TAKE THE SAME PARAMETERS, AND BOTH EXTRAS ARE DESTRUCTIVE. MEASURED from
14
- * the cluster's own schema (/usr/share/pve-docs/api-viewer/apidoc.js on n2, pve-manager 9.2.11,
14
+ * the cluster's own schema (/usr/share/pve-docs/api-viewer/apidoc.js on node-b, pve-manager 9.2.11,
15
15
  * 2026-09-13): POST adds `add_storages` and `erasure-coding` to the shared set, PUT takes
16
16
  * neither. Both are refused below, so what is left between the two bodies is `name`, which PUT
17
17
  * reads from the path, and `pg_num`.
18
18
  *
19
19
  * ⛔ `pg_num` IS IN THE CREATE BODY AND NOT IN THE UPDATE BODY, AND THAT IS THE MOST IMPORTANT
20
- * LINE IN THIS FILE. MEASURED in PVE::API2::Ceph::Pool::createpool on n2: a POST carrying no
20
+ * LINE IN THIS FILE. MEASURED in PVE::API2::Ceph::Pool::createpool on node-b: a POST carrying no
21
21
  * `pg_num` gets 128 substituted (`$param->{pg_num} //= 128`), and PVE::Ceph::Tools::create_pool
22
22
  * then runs `osd pool create` — which Ceph answers with SUCCESS for a pool that already exists,
23
23
  * before applying the rest of the body to it. So a create fired at a live pool SETS its pg_num,
24
24
  * and lowering pg_num starts a PG MERGE: hours of backfill across every OSD, on a cluster whose
25
- * Ceph traffic shares vmbr1.11 with everything else. ceph-pool.ts guards the create for exactly
25
+ * Ceph traffic shares vmbr1.42 with everything else. ceph-pool.ts guards the create for exactly
26
26
  * that reason; this half simply never offers pg_num to an update.
27
27
  */
28
28
  import type { WithTarget } from './resource.ts';
29
29
  export interface CephPoolProps extends WithTarget {
30
30
  /**
31
- * ⚠️ WHICH NODE THE CALL GOES THROUGH, NOT WHERE THE POOL LIVES. A pool is cluster-wide: n2 and
32
- * n3 answer byte-identically for `cephtb4` (measured). The endpoint is node-scoped only
31
+ * ⚠️ WHICH NODE THE CALL GOES THROUGH, NOT WHERE THE POOL LIVES. A pool is cluster-wide: node-b and
32
+ * node-c answer byte-identically for `rbd-c1` (measured). The endpoint is node-scoped only
33
33
  * because PVE talks to the local RADOS socket, so this is a door, not a location — it is never
34
- * compared, and moving a declaration from n2 to n3 plans noop. Point it at a node you expect
34
+ * compared, and moving a declaration from node-b to node-c plans noop. Point it at a node you expect
35
35
  * to be up: a node that is down makes the read fail, and a failed read reads as "absent".
36
36
  */
37
37
  node: string;
@@ -49,7 +49,7 @@ export interface CephPoolProps extends WithTarget {
49
49
  min_size?: number;
50
50
  /**
51
51
  * ⛔ CREATE-TIME ONLY, AND NEVER COMPARED — the single biggest noop hazard in this family. With
52
- * `pg_autoscale_mode` on or warn the autoscaler owns this number: MEASURED on TB4, `cephtb4`
52
+ * `pg_autoscale_mode` on or warn the autoscaler owns this number: MEASURED on C1, `rbd-c1`
53
53
  * sits at pg_num 128 while the autoscaler's own `pg_num_final` is 256, so a declaration
54
54
  * diffing it reports an update the moment Ceph decides to act. A split is gradual even with
55
55
  * the autoscaler off, and `nopgchange` can refuse the write outright — which kills the WHOLE
@@ -59,7 +59,7 @@ export interface CephPoolProps extends WithTarget {
59
59
  pg_num?: number;
60
60
  /** The floor the autoscaler may not go below. Operator-owned and stable, so it IS compared. */
61
61
  pg_num_min?: number;
62
- /** ⚠️ PVE's create default is `warn`; Ceph's own is `on`, which is what all four TB4 pools have. */
62
+ /** ⚠️ PVE's create default is `warn`; Ceph's own is `on`, which is what all four C1 pools have. */
63
63
  pg_autoscale_mode?: 'off' | 'on' | 'warn';
64
64
  /**
65
65
  * The CRUSH rule BY NAME, e.g. `replicated_rule`.
@@ -105,7 +105,7 @@ export interface CephPoolProps extends WithTarget {
105
105
  * size or its PG shape, and `set_pool` dies on the whole PUT when any one parameter will not
106
106
  * apply (Tools.pm:310). `matches` refuses to diff the fields they freeze, so these attributes
107
107
  * are the only place a plan can show WHY a declared size is not being enforced. All three read
108
- * false on all four TB4 pools.
108
+ * false on all four C1 pools.
109
109
  * ⚠️ `pg_num`, `id` AND `applications` ARE REPORTED AND NEVER COMPARED — see the props above.
110
110
  * ⛔ NO `statistics` AND NO `autoscale_status`, though the verbose read returns both. They change
111
111
  * every few seconds; persisting them would rewrite this resource's state on every deploy and
@@ -160,7 +160,7 @@ export declare const same: <T>(declared: T | undefined, live: T, frozen?: boolea
160
160
  * A declared autoscaler hint, or nothing when it is zero.
161
161
  *
162
162
  * ⚠️ A DECLARED ZERO IS "NO FLOOR, NO HINT", AND IT IS DELIBERATELY LEFT UNCOMPARED. REASONED, NOT
163
- * MEASURED: all four TB4 pools carry null for both `pg_num_min` and `target_size`, and finding
163
+ * MEASURED: all four C1 pools carry null for both `pg_num_min` and `target_size`, and finding
164
164
  * out for certain would mean writing to the cluster. Ceph CLEARS both when they are set to 0 and
165
165
  * `osd pool get all` then omits the key, which PVE reports as null and this pair reads as UNSET
166
166
  * — so a declared 0 would compare 0 against -1 on every plan, forever. Mapping 0 to UNSET
@@ -185,7 +185,7 @@ export declare const hint: (value: number | undefined) => number | undefined;
185
185
  * ⚠️ AN UNDECLARED FIELD IS NEITHER SENT NOR COMPARED — storage.ts's rule, and the opposite of
186
186
  * Proxmox.Pool's. Undeclared means UNMANAGED here, because a pool has no one set of defaults to
187
187
  * fall back on: PVE's POST fills in size 3, min_size 2, application rbd and pg_autoscale_mode
188
- * 'warn' (MEASURED in createpool), while Ceph's own defaults — which is what every pool on TB4
188
+ * 'warn' (MEASURED in createpool), while Ceph's own defaults — which is what every pool on C1
189
189
  * was actually born with — put pg_autoscale_mode at 'on'. Guessing either set would rewrite a
190
190
  * pool somebody tuned by hand.
191
191
  *
@@ -198,7 +198,7 @@ export declare const hint: (value: number | undefined) => number | undefined;
198
198
  * NOT PVE's `1T` STRING. MEASURED: the API parses the string with PVE::JSONSchema::parse_size
199
199
  * and stores Ceph's `target_size_bytes` (Pool.pm:474-477 for POST, 683-686 for PUT), and
200
200
  * `GET .../status` hands that integer back under the name `target_size` (Pool.pm:878). Run on
201
- * n2, `parse_size('1099511627776')` returns 1099511627776 — bare digits are bytes, no
201
+ * node-b, `parse_size('1099511627776')` returns 1099511627776 — bare digits are bytes, no
202
202
  * multiplier — so a byte count survives the round trip exactly, while a declared `1T` would read
203
203
  * back as 1099511627776 and diff against itself on every plan, forever.
204
204
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ceph-pool-form.d.ts","sourceRoot":"","sources":["../../src/proxmox/ceph-pool-form.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGhD,MAAM,WAAW,aAAc,SAAQ,UAAU;IAC/C;;;;;;OAMG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;OAMG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,uFAAuF;IACvF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gFAAgF;IAChF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+FAA+F;IAC/F,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oGAAoG;IACpG,iBAAiB,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,MAAM,CAAC;IAC1C;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,KAAK,CAAC;IACvC,qGAAqG;IACrG,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;;;;OAQG;IACH,gBAAgB,CAAC,EAAE,KAAK,CAAC;IACzB,YAAY,CAAC,EAAE,KAAK,CAAC;CACtB;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,mFAAmF;IACnF,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oGAAoG;IACpG,UAAU,EAAE,MAAM,CAAC;IACnB,mFAAmF;IACnF,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,MAAM,UAAW,aAAa,WAAkD,CAAC;AAC9F,eAAO,MAAM,UAAU,UAAW,aAAa,WAAoC,CAAC;AAEpF;;;;;GAKG;AACH,eAAO,MAAM,KAAK,KAAK,CAAC;AAExB,qGAAqG;AACrG,eAAO,MAAM,YAAY,UAAW,OAAO,WACoC,CAAC;AAEhF;;;;;GAKG;AACH,eAAO,MAAM,IAAI,GAAI,CAAC,YAAY,CAAC,GAAG,SAAS,QAAQ,CAAC,8BACD,CAAC;AAExD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,IAAI,UAAW,MAAM,GAAG,SAAS,uBAAsC,CAAC;AASrF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,eAAO,MAAM,UAAU,UAAW,aAAa,KAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAQrE,CAAC;AAEH;;;;;;;;;GASG;AACH,eAAO,MAAM,UAAU,UAAW,aAAa,KAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAMrE,CAAC"}
1
+ {"version":3,"file":"ceph-pool-form.d.ts","sourceRoot":"","sources":["../../src/proxmox/ceph-pool-form.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGhD,MAAM,WAAW,aAAc,SAAQ,UAAU;IAC/C;;;;;;OAMG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;OAMG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,uFAAuF;IACvF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gFAAgF;IAChF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+FAA+F;IAC/F,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mGAAmG;IACnG,iBAAiB,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,MAAM,CAAC;IAC1C;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,KAAK,CAAC;IACvC,qGAAqG;IACrG,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;;;;OAQG;IACH,gBAAgB,CAAC,EAAE,KAAK,CAAC;IACzB,YAAY,CAAC,EAAE,KAAK,CAAC;CACtB;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,mFAAmF;IACnF,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oGAAoG;IACpG,UAAU,EAAE,MAAM,CAAC;IACnB,mFAAmF;IACnF,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,MAAM,UAAW,aAAa,WAAkD,CAAC;AAC9F,eAAO,MAAM,UAAU,UAAW,aAAa,WAAoC,CAAC;AAEpF;;;;;GAKG;AACH,eAAO,MAAM,KAAK,KAAK,CAAC;AAExB,qGAAqG;AACrG,eAAO,MAAM,YAAY,UAAW,OAAO,WACoC,CAAC;AAEhF;;;;;GAKG;AACH,eAAO,MAAM,IAAI,GAAI,CAAC,YAAY,CAAC,GAAG,SAAS,QAAQ,CAAC,8BACD,CAAC;AAExD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,IAAI,UAAW,MAAM,GAAG,SAAS,uBAAsC,CAAC;AASrF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,eAAO,MAAM,UAAU,UAAW,aAAa,KAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAQrE,CAAC;AAEH;;;;;;;;;GASG;AACH,eAAO,MAAM,UAAU,UAAW,aAAa,KAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAMrE,CAAC"}
@@ -18,10 +18,10 @@
18
18
  * string, so HTTP 200 means "the task started" — an immediate read-back can see a pool that does
19
19
  * not exist yet, or values that have not landed. `settle` waits for the cluster to agree.
20
20
  *
21
- * ⛔ THE FOUR POOLS ON TB4 INCLUDE CEPH'S OWN, AND NONE OF THEM MAY BE ADOPTED. Measured
21
+ * ⛔ THE FOUR POOLS ON C1 INCLUDE CEPH'S OWN, AND NONE OF THEM MAY BE ADOPTED. Measured
22
22
  * 2026-09-13: `.mgr` (application `mgr`, created and owned by the manager daemons),
23
- * `cephfs-tb4_data` and `cephfs-tb4_metadata` (the two halves of the `cephfs-tb4` filesystem —
24
- * destroying either destroys the filesystem), and `cephtb4`, the rbd pool the guests sit on.
23
+ * `cephfs-c1_data` and `cephfs-c1_metadata` (the two halves of the `cephfs-c1` filesystem —
24
+ * destroying either destroys the filesystem), and `rbd-c1`, the rbd pool the guests sit on.
25
25
  * `list` answers empty like every resource in this package, so adoption stays an explicit act;
26
26
  * the `applications` attribute is reported so that a plan SHOWS which of those a declaration hit.
27
27
  *
@@ -4,7 +4,7 @@
4
4
  * ★ PLAIN `fetch`, NO TLS ESCAPE HATCH, AND THAT IS A MEASURED CHOICE RATHER THAN AN OMISSION.
5
5
  * Proxmox is usually met with `curl -k` because a fresh install serves its own self-signed
6
6
  * certificate — I reached for `-k` myself before checking. This cluster serves a real Let's
7
- * Encrypt certificate (`CN=cluster-tb4.example.com`), and strict TLS answers 401, i.e. the
7
+ * Encrypt certificate (`CN=cluster-c1.example.com`), and strict TLS answers 401, i.e. the
8
8
  * handshake succeeds and only the credential is missing. So there is no `rejectUnauthorized`
9
9
  * option here to be left switched on by accident in somebody else's estate.
10
10
  *
@@ -46,7 +46,7 @@ export declare const pveEnvelopeWith: (target: PveTarget, credential: PveCredent
46
46
  * Make one call on a credential for `role`, REUSING a still-valid lease rather than minting one.
47
47
  *
48
48
  * 🔴 IT USED TO MINT PER CALL, AND AT 98 RESOURCES THAT STOPPED BEING FREE. One plan plus deploy
49
- * of the TB4 stack left 760 token entries in `/etc/pve/user.cfg` — read, diff, reconcile and the
49
+ * of the C1 stack left 760 token entries in `/etc/pve/user.cfg` — read, diff, reconcile and the
50
50
  * read-back each minted their own, and `/etc/pve` is a replicated cluster filesystem every node
51
51
  * has to agree on. src/lease-cache.ts carries the measurement and the safety argument.
52
52
  *
@@ -2,13 +2,13 @@
2
2
  * The PVE credential a reconcile runs with: minted from OpenBao, alive for five minutes.
3
3
  *
4
4
  * ⛔ THERE IS NO STATIC WRITE TOKEN IN THIS ESTATE, AND THAT IS DELIBERATE. Every PVE token stored
5
- * in `kv/infra/proxmox/*` is read-only — PVEAuditor on media/ops/tb4, Audit on pbs, all as
6
- * `monitoring@pve`. The MCP proxmox client says why in its own header: the auditor token bounds
5
+ * on the estate's static KV shelf is read-only — PVEAuditor on each cluster, Audit on PBS, all
6
+ * as one metrics user. The MCP proxmox client says why in its own header: the auditor token bounds
7
7
  * what a BUG can do, independently of what the code bounds. Adding a long-lived write token to
8
8
  * that shelf would delete the outer lock for every reader of the shelf, not just for this
9
9
  * provider.
10
10
  *
11
- * ★ SO WRITES COME FROM A DYNAMIC MOUNT INSTEAD, which the estate already built: `proxmox-tb4/`
11
+ * ★ SO WRITES COME FROM A DYNAMIC MOUNT INSTEAD, which the estate already built: `proxmox-c1/`
12
12
  * exposes two roles — `read` (ttl 3600s) and `provision` (ttl 300s, max 1800s, NOT renewable).
13
13
  * A mint returns a PVE API token of its own, `hf-provision@pve!hf-provision-…-<timestamp>-<id>`,
14
14
  * which expires on its own whether or not anything cleans up. Same shape as
@@ -24,7 +24,7 @@
24
24
  *
25
25
  * ⛔ THE SECRET NEVER TOUCHES DISK, A LOG, OR ALCHEMY STATE. Alchemy persists resource attributes
26
26
  * WITHOUT encryption — StateEncoding.ts writes `Redacted` as `{"@redacted": <plaintext>}` — and
27
- * this estate's state store is the `alchemy` Postgres, which pg-backup.sh dumps nightly. A PVE
27
+ * this estate's state store is the `alchemy` Postgres, which a nightly job dumps. A PVE
28
28
  * secret that reached an attribute would outlive its 300s lease by months, in four places.
29
29
  * Nothing here returns it to a resource; it is used to build a header and then dropped.
30
30
  */
@@ -54,10 +54,10 @@ export type PveRole = 'read' | 'provision';
54
54
  * use this file unchanged; that is the whole difference between a provider and a script.
55
55
  */
56
56
  export type PveTarget = {
57
- /** OpenBao mount that vends API tokens for this host, e.g. `proxmox-tb4`. */
57
+ /** OpenBao mount that vends API tokens for this host, e.g. `proxmox-c1`. */
58
58
  readonly mount: string;
59
59
  /**
60
- * mgmt hostnames for cluster members, e.g. `n2.mgmt.example.com`. Any member's :8006 API
60
+ * mgmt hostnames for cluster members, e.g. `node-b.mgmt.example.com`. Any member's :8006 API
61
61
  * manages the whole cluster; `client.ts` failovers across them.
62
62
  */
63
63
  readonly members: readonly string[];
@@ -118,14 +118,14 @@ export type BaoEnvironment = Readonly<Record<string, string | undefined>>;
118
118
  * Mint one credential for `role`: `GET /v1/<mount>/creds/<role>` on OpenBao's HTTP API.
119
119
  *
120
120
  * 🔴 IT SHELLED OUT TO `bao read -format=json` UNTIL 2026-09-14. The case for the CLI was that one
121
- * client could not disagree with `bao kv get` about what this machine may do. house/openbao then
121
+ * client could not disagree with `bao kv get` about what this machine may do. <estate>/openbao then
122
122
  * learned twice what deciding by stderr costs — every failure read as absent, and two commands
123
123
  * said "absent" in different words — so this reads STATUS CODES: 2xx is a credential, and 403
124
124
  * (denied), 404 (no such role or mount — a mint has no "absent"), 503 (sealed) all fail.
125
125
  * ★ THE ENVIRONMENT CONTRACT IS STILL THE CLI's, READ THE CLI's WAY, which keeps the case above
126
126
  * true (openbao v2.6.2 api/client.go:34-66, 370, 503-507, 761-762, 776-785): BAO_AGENT_ADDR over
127
127
  * BAO_ADDR over https://127.0.0.1:8200; BAO_NAMESPACE as X-Vault-Namespace; BAO_TOKEN as
128
- * X-Vault-Token; X-Vault-Request always. house/openbao/src/bao-address.ts has the long form.
128
+ * X-Vault-Token; X-Vault-Request always. <estate>/openbao/src/bao-address.ts has the long form.
129
129
  * ★ AGENT MODE IS NO BAO_TOKEN AND NO TOKEN HEADER. An Agent or Proxy listener with
130
130
  * `api_proxy { use_auto_auth_token = true }` (or the older `cache { … }`) substitutes its
131
131
  * auto-auth token exactly when a request carries none — command/agentproxyshared/cache/handler.go
@@ -1 +1 @@
1
- {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/proxmox/credentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAIxC,OAAO,KAAK,UAAU,MAAM,iCAAiC,CAAC;AAG9D;;;;;;;;;;;;GAYG;AACH,uFAAuF;AACvF,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,WAAW,CAAC;AAE3C;;;;;;;GAOG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,6EAA6E;IAC7E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC;CACxB,CAAC;AAEF,oFAAoF;AACpF,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC;CACxB,CAAC;AAEF,oGAAoG;AACpG,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAE9C;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,sEAAsE;IACtE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,gEAAgE;IAChE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,iEAAiE;IACjE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF,iGAAiG;AACjG,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;AAM1E;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,IAAI,WAAY,SAAS,QAAQ,OAAO,QAAO,cAAc;;;;gCAuFtE,CAAC;AAEL;;;;;GAKG;AACH,eAAO,MAAM,aAAa,eAAgB,aAAa,UAAU,SAAS,KAAG,MAGf,CAAC"}
1
+ {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/proxmox/credentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAIxC,OAAO,KAAK,UAAU,MAAM,iCAAiC,CAAC;AAG9D;;;;;;;;;;;;GAYG;AACH,uFAAuF;AACvF,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,WAAW,CAAC;AAE3C;;;;;;;GAOG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,4EAA4E;IAC5E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC;CACxB,CAAC;AAEF,oFAAoF;AACpF,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC;CACxB,CAAC;AAEF,oGAAoG;AACpG,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAE9C;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,sEAAsE;IACtE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,gEAAgE;IAChE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,iEAAiE;IACjE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF,iGAAiG;AACjG,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;AAM1E;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,IAAI,WAAY,SAAS,QAAQ,OAAO,QAAO,cAAc;;;;gCAuFtE,CAAC;AAEL;;;;;GAKG;AACH,eAAO,MAAM,aAAa,eAAgB,aAAa,UAAU,SAAS,KAAG,MAGf,CAAC"}
@@ -33,7 +33,7 @@ export declare const fold: (name: string) => string;
33
33
  /**
34
34
  * A CIDR reduced to the one form PVE will hand back.
35
35
  *
36
- * ⛔ MEASURED by running the cluster's own `PVE::Firewall::parse_alias` on n2 (pve-manager 9.2.11,
36
+ * ⛔ MEASURED by running the cluster's own `PVE::Firewall::parse_alias` on node-b (pve-manager 9.2.11,
37
37
  * 2026-09-13) — a pure function over a string, no config read and none written:
38
38
  * `10.1.1.5/32` -> `10.1.1.5` a /32 host suffix is STRIPPED
39
39
  * `2001:0DB8::1/128`-> `2001:0DB8::1` a /128 is stripped, and the case is NOT folded
@@ -61,7 +61,7 @@
61
61
  * ⚠️ PRIVILEGES, AND FOR ONCE NOTHING NEEDS WIDENING. MEASURED 2026-09-13 from the cluster's own
62
62
  * schema and its live ACL: the item GET checks `["perm","/",["Sys.Audit"]]`, POST/PUT/DELETE
63
63
  * check `["perm","/",["Sys.Modify"]]`, `hf-read@pve` holds `PVEAuditor` at `/` with propagate and
64
- * `hf-provision@pve` holds `LXCProvisioner` at `/` with propagate. Both privileges are already
64
+ * `hf-provision@pve` holds the provision role (provision-baseline.ts) at `/` with propagate. Both privileges are already
65
65
  * held, so `readRole` stays the default `read` lane — unlike storage/sdn-zone/sdn-vnet, whose
66
66
  * ITEM reads are gated on an allocate privilege the auditor cannot have.
67
67
  * ⚠️ `Sys.Modify` ON `/` IS STILL A BIG HAMMER — it is the same grant `metric-server.ts` warns
@@ -2,7 +2,7 @@
2
2
  * Generated PBS API types — DO NOT EDIT BY HAND.
3
3
  *
4
4
  * Run: bun codegen/generate.ts
5
- * Source: house/proxmox/apidoc/ — see README there for provenance.
5
+ * Source: the cluster's own `apidoc.js` (pve-docs), extracted outside this repo.
6
6
  */
7
7
  /** GET /config/datastore — `data` payload after client unwrap. */
8
8
  export type ConfigDatastoreGetReturn = readonly {
@@ -2,7 +2,7 @@
2
2
  * Generated PVE API types — DO NOT EDIT BY HAND.
3
3
  *
4
4
  * Run: bun codegen/generate.ts
5
- * Source: house/proxmox/apidoc/ — see README there for provenance.
5
+ * Source: the cluster's own `apidoc.js` (pve-docs), extracted outside this repo.
6
6
  */
7
7
  /** GET /cluster/replication — `data` payload after client unwrap. */
8
8
  export type ClusterReplicationGetReturn = readonly ({
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * `Proxmox.Group` — a PVE group: a name, a comment, and the set of users PVE hangs off it.
3
3
  *
4
- * ★ DECLARING `hf-mint` IS THE WHOLE POINT OF THIS FAMILY. `vaultmint@pve` holds the `HFMint` role
4
+ * ★ DECLARING `hf-mint` IS THE WHOLE POINT OF THIS FAMILY. `mint@pve` holds the `MintTokens` role
5
5
  * ON THE PATH `/access/groups/hf-mint` — measured from `GET /access/acl`, 2026-09-13 — which is
6
6
  * what confines the OpenBao proxmox engine to minting inside that one group. The group is the
7
7
  * fence around the credential every other resource in this package runs on, and until now it was
@@ -17,7 +17,7 @@
17
17
  * in this file could ever settle.
18
18
  *
19
19
  * ⛔ THE INDEX AND THE ITEM DISAGREE ABOUT BOTH THE NAME AND THE TYPE, and this file reads only the
20
- * item. MEASURED against n2, 2026-09-13:
20
+ * item. MEASURED against node-b, 2026-09-13:
21
21
  * GET /access/groups -> [{"groupid":"hf-mint","comment":"…",
22
22
  * "users":"hf-provision@pve,hf-read@pve"}, …]
23
23
  * GET /access/groups/hf-mint -> {"comment":"…","members":["hf-provision@pve","hf-read@pve"]}
@@ -27,8 +27,8 @@
27
27
  *
28
28
  * ⛔ AND THE ITEM'S ORDER IS NOT STABLE BETWEEN TWO CONSECUTIVE CALLS. MEASURED, seconds apart, on
29
29
  * the same endpoint:
30
- * ["root@pam","tim@pve","tim@pam","tim@<account>.com@Schenanigans"]
31
- * ["tim@pam","tim@pve","tim@<account>.com@Schenanigans","root@pam"]
30
+ * ["root@pam","alice@pve","alice@pam","alice@example.com@corp"]
31
+ * ["alice@pam","alice@pve","alice@example.com@corp","root@pam"]
32
32
  * `read_group` builds it as `[keys %{ $data->{users} }]` — a bare Perl hash key list, whose order
33
33
  * is randomised per process — while the INDEX sorts (`join(',', sort keys …)`). So the array is
34
34
  * sorted on the way into `attributes` as well as being kept out of `matches`: unsorted, Alchemy's
@@ -45,7 +45,7 @@
45
45
  * So `readRole` is left at the default `read` — unlike storage/sdn-zone/sdn-vnet, whose ITEM
46
46
  * reads PVE gates on an allocate privilege. See the ⛔ on `readRole` in `resource.ts`.
47
47
  * · POST, PUT and DELETE each check `Group.Allocate` on `/access/groups`, and
48
- * `hf-provision@pve` holds it via `LXCProvisioner`.
48
+ * `hf-provision@pve` holds it via the provision role (`PROVISION_PRIVILEGES`).
49
49
  *
50
50
  * ⛔ `retain` BY DEFAULT, BECAUSE DELETING A GROUP DESTROYS TWO THINGS THIS FILE CANNOT PUT BACK.
51
51
  * Measured in `PVE::AccessControl` on the node:
@@ -53,8 +53,8 @@
53
53
  * <comment>:`) and DERIVES each user's `groups` map from it at parse time. Deleting the group
54
54
  * deletes the list, and this resource has no `members` prop to restore it from.
55
55
  * · `delete_group_acl` then walks the whole ACL tree and drops every grant where the group is
56
- * the SUBJECT. On this cluster that is `Schenanigans -> Administrator on /` and
57
- * `HomeAssistant -> PVEAuditor on /`: whole populations of access, gone in one call, with no
56
+ * the SUBJECT. On this cluster that is `admins -> Administrator on /` and
57
+ * `automation -> PVEAuditor on /`: whole populations of access, gone in one call, with no
58
58
  * confirmation and nothing in the plan to suggest it.
59
59
  * `delete` is FULLY IMPLEMENTED — `DELETE /access/groups/{groupid}` exists, unlike the ACL
60
60
  * family's — so `.pipe(RemovalPolicy.destroy())` really removes the group. See the ★ in
@@ -95,7 +95,7 @@ export interface ProxmoxGroup extends Resource<'Proxmox.Group', GroupProps, Grou
95
95
  export declare const ProxmoxGroup: import("alchemy").ResourceClass<ProxmoxGroup>;
96
96
  /**
97
97
  * ⛔ THE EMPTY `list` IS INHERITED FROM `pveHandlers` AND IT MATTERS HERE. `GET /access/groups`
98
- * answers with every group on the cluster — on this one that is `Schenanigans`, which grants
98
+ * answers with every group on the cluster — on this one that is `admins`, which grants
99
99
  * `Administrator` on `/` to every human who logs in. Handing it to Alchemy would invite adoption,
100
100
  * and therefore one day a delete that takes the whole admin group's access with it. Adoption
101
101
  * stays an explicit act, here as everywhere else in this package.
@@ -35,10 +35,11 @@
35
35
  * (node-affinity and resource-affinity) and that is the next family to add; do not port the old
36
36
  * groups endpoint back just because the docs still describe it.
37
37
  *
38
- * ⚠️ RECONCILE NEEDS `Sys.Console` ON `/`, WHICH `LXCProvisioner` DOES NOT HOLD. Read and diff are
38
+ * ⚠️ RECONCILE NEEDS `Sys.Console` ON `/`, WHICH THE PROVISION ROLE LACKED WHEN THIS WAS WRITTEN
39
+ * (`PROVISION_PRIVILEGES` carries it now — ha-rule.ts has the measurement). Read and diff are
39
40
  * fine — `GET /cluster/ha/resources/{sid}` checks `Sys.Audit`, which the role already has — while
40
41
  * POST, PUT and DELETE all check `Sys.Console` on `/` and will answer "Permission check failed
41
- * (/, Sys.Console)" until the role is widened. Widen it knowingly: `Sys.Console` is also what
42
+ * (/, Sys.Console)" on a role without it. Widen it knowingly: `Sys.Console` is also what
42
43
  * opens a root shell on every node (`/nodes/{node}/vncshell`, `termproxy`), so granting it to the
43
44
  * provision credential buys HA membership at the price of node console access. A separate role
44
45
  * for HA writes is the narrower answer if that trade is not wanted.
@@ -1 +1 @@
1
- {"version":3,"file":"ha-resource.d.ts","sourceRoot":"","sources":["../../src/proxmox/ha-resource.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,KAAK,QAAQ,MAAM,kBAAkB,CAAC;AAE7C,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,UAAU,EAAe,MAAM,eAAe,CAAC;AAGnF;;;;;;;GAOG;AACH,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;AAErE,MAAM,WAAW,eAAgB,SAAQ,UAAU;IACjD,0FAA0F;IAC1F,GAAG,EAAE,MAAM,CAAC;IACZ,6EAA6E;IAC7E,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2FAA2F;IAC3F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,0CAA0C;IAC1C,GAAG,EAAE,MAAM,CAAC;IACZ,8FAA8F;IAC9F,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iBAAkB,SAAQ,QAAQ,CACjD,oBAAoB,EACpB,eAAe,EACf,oBAAoB,EACpB,KAAK,EACL,eAAe,CAChB;CAAG;AAEJ,eAAO,MAAM,iBAAiB,oDAAoD,CAAC;AAsDnF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,yBAAyB,uIACuD,CAAC"}
1
+ {"version":3,"file":"ha-resource.d.ts","sourceRoot":"","sources":["../../src/proxmox/ha-resource.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,KAAK,QAAQ,MAAM,kBAAkB,CAAC;AAE7C,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,UAAU,EAAe,MAAM,eAAe,CAAC;AAGnF;;;;;;;GAOG;AACH,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;AAErE,MAAM,WAAW,eAAgB,SAAQ,UAAU;IACjD,0FAA0F;IAC1F,GAAG,EAAE,MAAM,CAAC;IACZ,6EAA6E;IAC7E,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2FAA2F;IAC3F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,0CAA0C;IAC1C,GAAG,EAAE,MAAM,CAAC;IACZ,8FAA8F;IAC9F,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iBAAkB,SAAQ,QAAQ,CACjD,oBAAoB,EACpB,eAAe,EACf,oBAAoB,EACpB,KAAK,EACL,eAAe,CAChB;CAAG;AAEJ,eAAO,MAAM,iBAAiB,oDAAoD,CAAC;AAsDnF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,yBAAyB,uIACuD,CAAC"}
@@ -14,21 +14,21 @@ import type { HaRuleProps } from './ha-rule.ts';
14
14
  * A `<node>[:<pri>]` list, spelled the way PVE gives it back.
15
15
  *
16
16
  * ⛔ THIS IS NOT `csv`, AND THE DIFFERENCE IS A FOREVER-DIFF. MEASURED by reading
17
- * `/usr/share/perl5/PVE/HA/Rules/NodeAffinity.pm` on n2 (2026-09-13): `decode_plugin_value`
17
+ * `/usr/share/perl5/PVE/HA/Rules/NodeAffinity.pm` on node-b (2026-09-13): `decode_plugin_value`
18
18
  * turns the list into a HASH keyed by node name, and `encode_plugin_value` rebuilds it with
19
19
  * `for my $node (sort keys %$value)` — sorted by NODE NAME, never by the token — emitting the
20
20
  * bare name whenever the priority is falsy, because `PVE::HA::Tools::parse_node_priority` reads
21
- * a missing priority as 0. So a declared `n3:1,n2:0` is handed back as `n2,n3:1`: re-ordered AND
21
+ * a missing priority as 0. So a declared `node-c:1,node-b:0` is handed back as `node-b,node-c:1`: re-ordered AND
22
22
  * re-spelled. Compare the raw strings and every plan reports an update, forever.
23
23
  *
24
24
  * ⚠️ SORTED BY NAME, NOT BY TOKEN, AND THE TWO GENUINELY DIVERGE. `csv` sorts whole tokens. Node
25
25
  * names may contain `-` — `parse_node_priority`'s own regex is
26
- * `[a-zA-Z0-9]([a-zA-Z0-9\-]*[a-zA-Z0-9])?` — and `-` (0x2D) sorts before `:` (0x3A), so `n2-a`
27
- * and `n2:5` come out in one order by token and the other by name. PVE sorts by the name, so
26
+ * `[a-zA-Z0-9]([a-zA-Z0-9\-]*[a-zA-Z0-9])?` — and `-` (0x2D) sorts before `:` (0x3A), so `node-b-a`
27
+ * and `node-b:5` come out in one order by token and the other by name. PVE sorts by the name, so
28
28
  * this does too.
29
29
  *
30
30
  * ⚠️ LAST ENTRY WINS FOR A REPEATED NODE, because PVE's decode is a hash assignment and a hash
31
- * keeps one value per key. A declaration saying `n2:1,n2:5` is stored as `n2:5`; matching that
31
+ * keeps one value per key. A declaration saying `node-b:1,node-b:5` is stored as `node-b:5`; matching that
32
32
  * is what a Map gives for free.
33
33
  */
34
34
  export declare const nodeList: (value: readonly string[] | string | undefined) => string;
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * `Proxmox.HaRule` — where the CRM may place a guest, and which guests must not share a node.
3
3
  *
4
- * ★ THIS IS THE PVE 9 SUCCESSOR TO HA GROUPS, AND THE GROUPS ENDPOINT IS GONE. MEASURED on n2
4
+ * ★ THIS IS THE PVE 9 SUCCESSOR TO HA GROUPS, AND THE GROUPS ENDPOINT IS GONE. MEASURED on node-b
5
5
  * (pve-manager/9.2.11, 2026-09-13): `pvesh get /cluster/ha/groups` answers `cannot index groups:
6
6
  * ha groups have been migrated to rules`, and `/etc/pve/ha/` holds `rules.cfg` with no
7
7
  * `groups.cfg` beside it. The published schema still documents groups and still offers a `group`
@@ -48,8 +48,8 @@
48
48
  * ⚠️ BOTH LANES ALREADY HAVE THE PRIVILEGES, WHICH IS NEW. MEASURED 2026-09-13:
49
49
  * GET (collection and item) checks `Sys.Audit` on `/` and the built-in `PVEAuditor` holds it, so
50
50
  * `readRole` stays the default `read` lease — unlike storage.ts and the SDN families. POST, PUT
51
- * and DELETE all check `Sys.Console` on `/`, and `pvesh get /access/roles/LXCProvisioner` now
52
- * returns `Sys.Console` among its 27 privileges. The warning in ha-resource.ts's header — that
51
+ * and DELETE all check `Sys.Console` on `/`, and the provision role now returns `Sys.Console` among
52
+ * its 27 privileges (`PROVISION_PRIVILEGES`, provision-baseline.ts). The warning in ha-resource.ts's header — that
53
53
  * `Sys.Console` is missing — is stale; the role was widened, and the price it named still stands:
54
54
  * `Sys.Console` is also what opens a root shell on every node.
55
55
  *
@@ -12,6 +12,9 @@
12
12
  * The provider-only version diffed four fields and would have planned a create over any read
13
13
  * failure. The Resource now adopts from the live config, refuses every change PVE cannot make
14
14
  * in place, and retains on destroy (lxc.ts).
15
+ * ★ THE PROVISIONING BASELINE JOINED 2026-09-21: one privilege list (`PROVISION_PRIVILEGES`), the
16
+ * helper that declares it (`declareProvisionBaseline`) and the pure generator of the one-time
17
+ * root commands that bootstrap it (`provisionBootstrap`) — docs/provision-baseline.md.
15
18
  * ★ Anything else unlisted is still reachable by path if you genuinely need
16
19
  * it — that is a deliberate, visible act rather than an accident of barrelling.
17
20
  */
@@ -37,6 +40,9 @@ export { PbsPruneJob, PbsPruneJobProvider } from './pbs-prune-job.ts';
37
40
  export { PbsSyncJob, PbsSyncJobProvider } from './pbs-sync-job.ts';
38
41
  export { PbsVerifyJob, PbsVerifyJobProvider } from './pbs-verify-job.ts';
39
42
  export { ProxmoxPool, ProxmoxPoolProvider } from './pool.ts';
43
+ export { PROVISION_DEFAULTS, PROVISION_PRIVILEGES, type ProvisionBaseline, type ProvisionLane, type ProvisionNames, type ResolvedProvisionNames, provisionBaseline, } from './provision-baseline.ts';
44
+ export { provisionBootstrap } from './provision-bootstrap.ts';
45
+ export { type DeclareProvisionOptions, declareProvisionBaseline } from './provision-declare.ts';
40
46
  export { ProxmoxVmProvider } from './qemu.ts';
41
47
  export { ProxmoxReplicationJobProvider } from './replication-job.ts';
42
48
  export { ProxmoxRole, ProxmoxRoleProvider } from './role.ts';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/proxmox/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC7F,OAAO,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AACtF,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EACL,yBAAyB,EACzB,iCAAiC,GAClC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/proxmox/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC7F,OAAO,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AACtF,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EACL,yBAAyB,EACzB,iCAAiC,GAClC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,KAAK,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAChG,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC"}