@homeflare/alchemy 0.38.0 → 0.40.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.
- package/README.md +32 -8
- package/dist/ceph/auth-entity.d.ts +34 -0
- package/dist/ceph/auth-entity.d.ts.map +1 -0
- package/dist/ceph/ceph-argv-config.d.ts +10 -0
- package/dist/ceph/ceph-argv-config.d.ts.map +1 -0
- package/dist/ceph/ceph-argv.d.ts +19 -0
- package/dist/ceph/ceph-argv.d.ts.map +1 -0
- package/dist/ceph/ceph-auth-form.d.ts +54 -0
- package/dist/ceph/ceph-auth-form.d.ts.map +1 -0
- package/dist/ceph/ceph-auth-parse.d.ts +56 -0
- package/dist/ceph/ceph-auth-parse.d.ts.map +1 -0
- package/dist/ceph/ceph-auth-reconcile.d.ts +35 -0
- package/dist/ceph/ceph-auth-reconcile.d.ts.map +1 -0
- package/dist/ceph/ceph-config-options.d.ts +23 -0
- package/dist/ceph/ceph-config-options.d.ts.map +1 -0
- package/dist/ceph/ceph-key-leak-assert.d.ts +25 -0
- package/dist/ceph/ceph-key-leak-assert.d.ts.map +1 -0
- package/dist/ceph/ceph-transport.d.ts +37 -0
- package/dist/ceph/ceph-transport.d.ts.map +1 -0
- package/dist/ceph/fake-ceph-dial.d.ts +35 -0
- package/dist/ceph/fake-ceph-dial.d.ts.map +1 -0
- package/dist/ceph/index.d.ts +13 -0
- package/dist/ceph/index.d.ts.map +1 -0
- package/dist/ceph/index.js +1609 -0
- package/dist/ceph/index.js.map +38 -0
- package/dist/forgejo/index.js +4 -2
- package/dist/forgejo/index.js.map +3 -3
- package/dist/forgejo/team-member.d.ts +25 -0
- package/dist/forgejo/team-member.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/proxmox/generated/constraints/index.d.ts +1 -1
- package/dist/proxmox/generated/constraints/index.d.ts.map +1 -1
- package/dist/proxmox/generated/constraints/pve-access.d.ts +1 -1
- package/dist/proxmox/generated/constraints/pve-cluster-backup.d.ts +1 -1
- package/dist/proxmox/generated/constraints/pve-cluster-ceph.d.ts +1 -1
- package/dist/proxmox/generated/constraints/pve-cluster-firewall.d.ts +1 -1
- package/dist/proxmox/generated/constraints/pve-cluster-ha.d.ts +1 -1
- package/dist/proxmox/generated/constraints/pve-cluster-metrics.d.ts +1 -1
- package/dist/proxmox/generated/constraints/pve-cluster-notifications.d.ts +1 -1
- package/dist/proxmox/generated/constraints/pve-cluster-replication.d.ts +1 -1
- package/dist/proxmox/generated/constraints/pve-cluster-sdn.d.ts +1 -1
- package/dist/proxmox/generated/constraints/pve-nodes-ceph.d.ts +1 -1
- package/dist/proxmox/generated/constraints/pve-nodes-disks.d.ts +1 -1
- package/dist/proxmox/generated/constraints/pve-nodes-lxc.d.ts +1 -1
- package/dist/proxmox/generated/constraints/pve-nodes-network.d.ts +1 -1
- package/dist/proxmox/generated/constraints/pve-nodes-qemu.d.ts +1 -1
- package/dist/proxmox/generated/constraints/pve-nodes-storage.d.ts +23 -0
- package/dist/proxmox/generated/constraints/pve-nodes-storage.d.ts.map +1 -0
- package/dist/proxmox/generated/constraints/pve-pools.d.ts +1 -1
- package/dist/proxmox/generated/constraints/pve-storage.d.ts +1 -1
- package/dist/proxmox/index.d.ts +14 -3
- package/dist/proxmox/index.d.ts.map +1 -1
- package/dist/proxmox/index.js +574 -133
- package/dist/proxmox/index.js.map +33 -23
- package/dist/proxmox/qemu-form.d.ts +27 -18
- package/dist/proxmox/qemu-form.d.ts.map +1 -1
- package/dist/proxmox/qemu-judge.d.ts +30 -0
- package/dist/proxmox/qemu-judge.d.ts.map +1 -0
- package/dist/proxmox/qemu-lifecycle.d.ts +16 -2
- package/dist/proxmox/qemu-lifecycle.d.ts.map +1 -1
- package/dist/proxmox/qemu-net.d.ts +9 -0
- package/dist/proxmox/qemu-net.d.ts.map +1 -0
- package/dist/proxmox/qemu-props.d.ts +112 -0
- package/dist/proxmox/qemu-props.d.ts.map +1 -0
- package/dist/proxmox/qemu-volume.d.ts +27 -0
- package/dist/proxmox/qemu-volume.d.ts.map +1 -0
- package/dist/proxmox/qemu.d.ts +14 -27
- package/dist/proxmox/qemu.d.ts.map +1 -1
- package/dist/proxmox/storage-download-errors.d.ts +5 -0
- package/dist/proxmox/storage-download-errors.d.ts.map +1 -0
- package/dist/proxmox/storage-download-identity.d.ts +27 -0
- package/dist/proxmox/storage-download-identity.d.ts.map +1 -0
- package/dist/proxmox/storage-download-lifecycle.d.ts +97 -0
- package/dist/proxmox/storage-download-lifecycle.d.ts.map +1 -0
- package/dist/proxmox/storage-download-props.d.ts +36 -0
- package/dist/proxmox/storage-download-props.d.ts.map +1 -0
- package/dist/proxmox/storage-download-task.d.ts +17 -0
- package/dist/proxmox/storage-download-task.d.ts.map +1 -0
- package/dist/proxmox/storage-download.d.ts +44 -0
- package/dist/proxmox/storage-download.d.ts.map +1 -0
- package/dist/talos/credentials-write.d.ts +46 -0
- package/dist/talos/credentials-write.d.ts.map +1 -0
- package/dist/talos/credentials.d.ts +51 -9
- package/dist/talos/credentials.d.ts.map +1 -1
- package/dist/talos/fake-process.d.ts +56 -0
- package/dist/talos/fake-process.d.ts.map +1 -0
- package/dist/talos/index.d.ts +19 -4
- package/dist/talos/index.d.ts.map +1 -1
- package/dist/talos/index.js +357 -173
- package/dist/talos/index.js.map +16 -10
- package/dist/talos/kubeconfig-attrs.d.ts +4 -0
- package/dist/talos/kubeconfig-attrs.d.ts.map +1 -0
- package/dist/talos/kubeconfig.d.ts +41 -23
- package/dist/talos/kubeconfig.d.ts.map +1 -1
- package/dist/talos/machine-config-fixtures.d.ts +60 -0
- package/dist/talos/machine-config-fixtures.d.ts.map +1 -0
- package/dist/talos/machine-config-poll.d.ts +43 -0
- package/dist/talos/machine-config-poll.d.ts.map +1 -0
- package/dist/talos/machine-config-read.d.ts +49 -0
- package/dist/talos/machine-config-read.d.ts.map +1 -0
- package/dist/talos/resource.d.ts +18 -0
- package/dist/talos/resource.d.ts.map +1 -1
- package/dist/talos/talos-bootstrap-etcd.d.ts +38 -0
- package/dist/talos/talos-bootstrap-etcd.d.ts.map +1 -0
- package/dist/talos/talos-bootstrap.d.ts +87 -0
- package/dist/talos/talos-bootstrap.d.ts.map +1 -1
- package/dist/talos/talos-cluster-health.d.ts +43 -1
- package/dist/talos/talos-cluster-health.d.ts.map +1 -1
- package/dist/talos/talos-errors.d.ts +68 -0
- package/dist/talos/talos-errors.d.ts.map +1 -0
- package/dist/talos/talos-machine-config.d.ts +51 -15
- package/dist/talos/talos-machine-config.d.ts.map +1 -1
- package/dist/talos/talosctl.d.ts +7 -0
- package/dist/talos/talosctl.d.ts.map +1 -1
- package/dist/talos/values.d.ts +23 -3
- package/dist/talos/values.d.ts.map +1 -1
- package/dist/telemetry/fake-collector.d.ts +36 -0
- package/dist/telemetry/fake-collector.d.ts.map +1 -0
- package/dist/telemetry/index.d.ts +11 -0
- package/dist/telemetry/index.d.ts.map +1 -0
- package/dist/telemetry/index.js +223 -0
- package/dist/telemetry/index.js.map +12 -0
- package/dist/telemetry/layer.d.ts +86 -0
- package/dist/telemetry/layer.d.ts.map +1 -0
- package/dist/telemetry/redact-serialization.d.ts +21 -0
- package/dist/telemetry/redact-serialization.d.ts.map +1 -0
- package/dist/telemetry/redact.d.ts +46 -0
- package/dist/telemetry/redact.d.ts.map +1 -0
- package/dist/unifi/acl-rule-drift.d.ts +22 -0
- package/dist/unifi/acl-rule-drift.d.ts.map +1 -0
- package/dist/unifi/acl-rule-form.d.ts +90 -0
- package/dist/unifi/acl-rule-form.d.ts.map +1 -0
- package/dist/unifi/acl-rule-ordering-form.d.ts +49 -0
- package/dist/unifi/acl-rule-ordering-form.d.ts.map +1 -0
- package/dist/unifi/acl-rule-ordering.d.ts +54 -0
- package/dist/unifi/acl-rule-ordering.d.ts.map +1 -0
- package/dist/unifi/acl-rule.d.ts +49 -0
- package/dist/unifi/acl-rule.d.ts.map +1 -0
- package/dist/unifi/dns-policy-drift.d.ts +21 -0
- package/dist/unifi/dns-policy-drift.d.ts.map +1 -0
- package/dist/unifi/dns-policy-form.d.ts +97 -0
- package/dist/unifi/dns-policy-form.d.ts.map +1 -0
- package/dist/unifi/dns-policy.d.ts +55 -0
- package/dist/unifi/dns-policy.d.ts.map +1 -0
- package/dist/unifi/drift.d.ts +27 -0
- package/dist/unifi/drift.d.ts.map +1 -0
- package/dist/unifi/fake-unifi.d.ts +5 -1
- package/dist/unifi/fake-unifi.d.ts.map +1 -1
- package/dist/unifi/firewall-policy-drift.d.ts +26 -0
- package/dist/unifi/firewall-policy-drift.d.ts.map +1 -0
- package/dist/unifi/firewall-policy-form.d.ts +102 -0
- package/dist/unifi/firewall-policy-form.d.ts.map +1 -0
- package/dist/unifi/firewall-policy-ordering-form.d.ts +66 -0
- package/dist/unifi/firewall-policy-ordering-form.d.ts.map +1 -0
- package/dist/unifi/firewall-policy-ordering.d.ts +57 -0
- package/dist/unifi/firewall-policy-ordering.d.ts.map +1 -0
- package/dist/unifi/firewall-policy.d.ts +57 -0
- package/dist/unifi/firewall-policy.d.ts.map +1 -0
- package/dist/unifi/firewall-zone-form.d.ts +6 -0
- package/dist/unifi/firewall-zone-form.d.ts.map +1 -1
- package/dist/unifi/firewall-zone.d.ts +1 -1
- package/dist/unifi/firewall-zone.d.ts.map +1 -1
- package/dist/unifi/index.d.ts +11 -3
- package/dist/unifi/index.d.ts.map +1 -1
- package/dist/unifi/index.js +725 -60
- package/dist/unifi/index.js.map +31 -9
- package/dist/unifi/network-drift.d.ts +26 -0
- package/dist/unifi/network-drift.d.ts.map +1 -0
- package/dist/unifi/network-form.d.ts +40 -7
- package/dist/unifi/network-form.d.ts.map +1 -1
- package/dist/unifi/network.d.ts +1 -0
- package/dist/unifi/network.d.ts.map +1 -1
- package/dist/unifi/paginate.d.ts +24 -0
- package/dist/unifi/paginate.d.ts.map +1 -0
- package/dist/unifi/providers.d.ts +1 -1
- package/dist/unifi/providers.d.ts.map +1 -1
- package/dist/unifi/resource.d.ts +36 -1
- package/dist/unifi/resource.d.ts.map +1 -1
- package/dist/unifi/scan-source.d.ts +11 -0
- package/dist/unifi/scan-source.d.ts.map +1 -0
- package/dist/unifi/traffic-matching-list-drift.d.ts +22 -0
- package/dist/unifi/traffic-matching-list-drift.d.ts.map +1 -0
- package/dist/unifi/traffic-matching-list-form.d.ts +56 -0
- package/dist/unifi/traffic-matching-list-form.d.ts.map +1 -0
- package/dist/unifi/traffic-matching-list.d.ts +51 -0
- package/dist/unifi/traffic-matching-list.d.ts.map +1 -0
- package/dist/unifi/wifi-broadcast-drift.d.ts +22 -0
- package/dist/unifi/wifi-broadcast-drift.d.ts.map +1 -0
- package/dist/unifi/wifi-broadcast-form.d.ts +127 -0
- package/dist/unifi/wifi-broadcast-form.d.ts.map +1 -0
- package/dist/unifi/wifi-broadcast.d.ts +73 -0
- package/dist/unifi/wifi-broadcast.d.ts.map +1 -0
- package/docs/telemetry-spike.md +94 -0
- package/docs/telemetry.md +109 -0
- package/docs/unifi-acl-rule.md +122 -0
- package/docs/unifi-dns-policy.md +75 -0
- package/docs/unifi-firewall-policy.md +109 -0
- package/docs/unifi-traffic-matching-list.md +82 -0
- package/docs/unifi-wifi.md +120 -0
- package/docs/unifi.md +64 -3
- package/package.json +10 -2
- package/src/ceph/auth-entity.ts +74 -0
- package/src/ceph/ceph-argv-config.ts +78 -0
- package/src/ceph/ceph-argv.test.ts +226 -0
- package/src/ceph/ceph-argv.ts +189 -0
- package/src/ceph/ceph-auth-form.test.ts +103 -0
- package/src/ceph/ceph-auth-form.ts +107 -0
- package/src/ceph/ceph-auth-parse.test.ts +155 -0
- package/src/ceph/ceph-auth-parse.ts +121 -0
- package/src/ceph/ceph-auth-reconcile-secrecy.test.ts +82 -0
- package/src/ceph/ceph-auth-reconcile.test.ts +233 -0
- package/src/ceph/ceph-auth-reconcile.ts +119 -0
- package/src/ceph/ceph-config-options.test.ts +44 -0
- package/src/ceph/ceph-config-options.ts +36 -0
- package/src/ceph/ceph-key-leak-assert.ts +35 -0
- package/src/ceph/ceph-no-output-logging.test.ts +52 -0
- package/src/ceph/ceph-transport.test.ts +125 -0
- package/src/ceph/ceph-transport.ts +117 -0
- package/src/ceph/fake-ceph-dial.ts +55 -0
- package/src/ceph/index.ts +12 -0
- package/src/forgejo/team-member.test.ts +14 -0
- package/src/forgejo/team-member.ts +28 -1
- package/src/index.ts +1 -0
- package/src/proxmox/constraints-required.test.ts +1 -0
- package/src/proxmox/generated/constraints/index.ts +3 -1
- package/src/proxmox/generated/constraints/pve-access.ts +1 -1
- package/src/proxmox/generated/constraints/pve-cluster-backup.ts +1 -1
- package/src/proxmox/generated/constraints/pve-cluster-ceph.ts +1 -1
- package/src/proxmox/generated/constraints/pve-cluster-firewall.ts +1 -1
- package/src/proxmox/generated/constraints/pve-cluster-ha.ts +1 -1
- package/src/proxmox/generated/constraints/pve-cluster-metrics.ts +1 -1
- package/src/proxmox/generated/constraints/pve-cluster-notifications.ts +1 -1
- package/src/proxmox/generated/constraints/pve-cluster-replication.ts +1 -1
- package/src/proxmox/generated/constraints/pve-cluster-sdn.ts +1 -1
- package/src/proxmox/generated/constraints/pve-nodes-ceph.ts +1 -1
- package/src/proxmox/generated/constraints/pve-nodes-disks.ts +1 -1
- package/src/proxmox/generated/constraints/pve-nodes-lxc.ts +1 -1
- package/src/proxmox/generated/constraints/pve-nodes-network.ts +1 -1
- package/src/proxmox/generated/constraints/pve-nodes-qemu.ts +1 -1
- package/src/proxmox/generated/constraints/pve-nodes-storage.ts +30 -0
- package/src/proxmox/generated/constraints/pve-pools.ts +1 -1
- package/src/proxmox/generated/constraints/pve-storage.ts +1 -1
- package/src/proxmox/index.test.ts +11 -6
- package/src/proxmox/index.ts +19 -3
- package/src/proxmox/qemu-form.ts +49 -13
- package/src/proxmox/qemu-identity.test.ts +30 -0
- package/src/proxmox/qemu-judge.test.ts +65 -0
- package/src/proxmox/qemu-judge.ts +84 -0
- package/src/proxmox/qemu-lifecycle.test.ts +78 -19
- package/src/proxmox/qemu-lifecycle.ts +131 -32
- package/src/proxmox/qemu-net.test.ts +48 -0
- package/src/proxmox/qemu-net.ts +78 -0
- package/src/proxmox/qemu-ownership.test.ts +44 -0
- package/src/proxmox/qemu-props.test.ts +87 -0
- package/src/proxmox/qemu-props.ts +157 -0
- package/src/proxmox/qemu-volume.test.ts +229 -0
- package/src/proxmox/qemu-volume.ts +178 -0
- package/src/proxmox/qemu.ts +15 -29
- package/src/proxmox/storage-download-errors.ts +7 -0
- package/src/proxmox/storage-download-identity.test.ts +54 -0
- package/src/proxmox/storage-download-identity.ts +50 -0
- package/src/proxmox/storage-download-lifecycle.ts +226 -0
- package/src/proxmox/storage-download-ownership.test.ts +50 -0
- package/src/proxmox/storage-download-props.ts +38 -0
- package/src/proxmox/storage-download-task.ts +72 -0
- package/src/proxmox/storage-download.test.ts +216 -0
- package/src/proxmox/storage-download.ts +58 -0
- package/src/talos/credentials-write.test.ts +81 -0
- package/src/talos/credentials-write.ts +95 -0
- package/src/talos/credentials.test.ts +157 -0
- package/src/talos/credentials.ts +160 -90
- package/src/talos/fake-process.ts +94 -0
- package/src/talos/index.ts +39 -4
- package/src/talos/kubeconfig-attrs.ts +55 -0
- package/src/talos/kubeconfig.test.ts +256 -0
- package/src/talos/kubeconfig.ts +170 -90
- package/src/talos/machine-config-fixtures.ts +86 -0
- package/src/talos/machine-config-poll.test.ts +57 -0
- package/src/talos/machine-config-poll.ts +82 -0
- package/src/talos/machine-config-read.ts +118 -0
- package/src/talos/resource.ts +19 -0
- package/src/talos/secrets-gate.test.ts +63 -0
- package/src/talos/talos-bootstrap-etcd.ts +71 -0
- package/src/talos/talos-bootstrap.test.ts +218 -0
- package/src/talos/talos-bootstrap.ts +151 -45
- package/src/talos/talos-cluster-health.test.ts +143 -0
- package/src/talos/talos-cluster-health.ts +91 -28
- package/src/talos/talos-errors.ts +85 -0
- package/src/talos/talos-machine-config.test.ts +189 -0
- package/src/talos/talos-machine-config.ts +102 -88
- package/src/talos/talosctl.ts +8 -0
- package/src/talos/values.test.ts +34 -6
- package/src/talos/values.ts +41 -7
- package/src/telemetry/fake-collector.ts +59 -0
- package/src/telemetry/http-client-sealing.test.ts +82 -0
- package/src/telemetry/index.ts +10 -0
- package/src/telemetry/layer.test.ts +204 -0
- package/src/telemetry/layer.ts +152 -0
- package/src/telemetry/redact-serialization.ts +178 -0
- package/src/telemetry/redact.test.ts +124 -0
- package/src/telemetry/redact.ts +147 -0
- package/src/unifi/acl-rule-drift.ts +57 -0
- package/src/unifi/acl-rule-form.ts +135 -0
- package/src/unifi/acl-rule-ordering-form.ts +79 -0
- package/src/unifi/acl-rule-ordering.test.ts +141 -0
- package/src/unifi/acl-rule-ordering.ts +70 -0
- package/src/unifi/acl-rule.test.ts +183 -0
- package/src/unifi/acl-rule.ts +61 -0
- package/src/unifi/discriminated-filter-decode.test.ts +134 -0
- package/src/unifi/dns-policy-drift.ts +48 -0
- package/src/unifi/dns-policy-form.ts +142 -0
- package/src/unifi/dns-policy.test.ts +154 -0
- package/src/unifi/dns-policy.ts +67 -0
- package/src/unifi/drift.test.ts +78 -0
- package/src/unifi/drift.ts +56 -0
- package/src/unifi/errors-and-secrets.test.ts +127 -0
- package/src/unifi/fake-unifi.ts +5 -1
- package/src/unifi/firewall-policy-drift.test.ts +151 -0
- package/src/unifi/firewall-policy-drift.ts +55 -0
- package/src/unifi/firewall-policy-filter-roundtrip.test.ts +143 -0
- package/src/unifi/firewall-policy-form.ts +146 -0
- package/src/unifi/firewall-policy-ordering-form.ts +111 -0
- package/src/unifi/firewall-policy-ordering.test.ts +185 -0
- package/src/unifi/firewall-policy-ordering.ts +87 -0
- package/src/unifi/firewall-policy.test.ts +183 -0
- package/src/unifi/firewall-policy.ts +73 -0
- package/src/unifi/firewall-zone-form.ts +31 -2
- package/src/unifi/firewall-zone.test.ts +21 -1
- package/src/unifi/firewall-zone.ts +1 -1
- package/src/unifi/get-only-guard.test.ts +165 -0
- package/src/unifi/index.ts +78 -1
- package/src/unifi/network-drift.test.ts +207 -0
- package/src/unifi/network-drift.ts +80 -0
- package/src/unifi/network-form.ts +11 -39
- package/src/unifi/network.test.ts +7 -82
- package/src/unifi/network.ts +6 -6
- package/src/unifi/paginate.test.ts +252 -0
- package/src/unifi/paginate.ts +141 -0
- package/src/unifi/providers.ts +19 -1
- package/src/unifi/resource.ts +73 -3
- package/src/unifi/scan-source.ts +64 -0
- package/src/unifi/traffic-matching-list-drift.ts +40 -0
- package/src/unifi/traffic-matching-list-form.ts +77 -0
- package/src/unifi/traffic-matching-list.test.ts +202 -0
- package/src/unifi/traffic-matching-list.ts +78 -0
- package/src/unifi/wifi-broadcast-details-call.test.ts +92 -0
- package/src/unifi/wifi-broadcast-drift.ts +69 -0
- package/src/unifi/wifi-broadcast-form.ts +211 -0
- package/src/unifi/wifi-broadcast-secrets.test.ts +145 -0
- package/src/unifi/wifi-broadcast.test.ts +155 -0
- package/src/unifi/wifi-broadcast.ts +90 -0
- package/src/unifi/write-op-reference.test.ts +190 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `Proxmox.StorageDownload` — one `download-url` fetch of an image onto a named storage's
|
|
3
|
+
* `import` content, declared. Joined 2026-09-26 for Talos: a node needs a boot image on shared
|
|
4
|
+
* storage (`cephtb4`/`cephfs-tb4`) before `Proxmox.Vm` can reference it as a disk source.
|
|
5
|
+
*
|
|
6
|
+
* ★ A CREATE-ORIENTED FAMILY, NOT A GENERAL DOWNLOADER. `content` is fixed to `import` — never a
|
|
7
|
+
* prop — because that is the one content type a VM disk import consumes; an ISO or a container
|
|
8
|
+
* template already has its own path (`upload`, or an out-of-band copy) and does not belong here.
|
|
9
|
+
*
|
|
10
|
+
* ⛔ `checksum` AND `checksumAlgorithm` ARE REQUIRED, NOT OPTIONAL, EVEN THOUGH PVE'S OWN SCHEMA
|
|
11
|
+
* MARKS BOTH OPTIONAL (`generated/pve/nodes-node-storage-storage.ts`). An unpinned download is
|
|
12
|
+
* not a declaration — it is a promise that whatever the URL answers today is what a Talos node
|
|
13
|
+
* boots from, silently, on every future adopt. This resource narrows the vendor's own contract
|
|
14
|
+
* on purpose; `storage-download-lifecycle.ts`'s `createRefusals` is the runtime backstop for a
|
|
15
|
+
* caller that casts around the type.
|
|
16
|
+
*
|
|
17
|
+
* ⛔ THERE IS NO UPDATE PATH. PVE does not remember the `url` or `checksum` a volume was created
|
|
18
|
+
* from — `GET .../content` reports only `format`/`size`/`volid` — so once the file exists on
|
|
19
|
+
* `storage`, this resource has nothing left to compare a new declaration against except the
|
|
20
|
+
* PREVIOUS one (storage-download-identity.ts). A DIFFERENT `checksum`/`url` on the SAME `filename`
|
|
21
|
+
* is REFUSED, never silently written or silently `noop` (2026-09-26, red-team I2 on PR 297):
|
|
22
|
+
* change `filename` to force a new download, which plans a `replace` — the old file is deleted and
|
|
23
|
+
* the new one downloaded under its own name — exactly as an immutable artifact should be.
|
|
24
|
+
*
|
|
25
|
+
* ⛔ NO SECRET IS A PROP. Every field here — `node`, `storage`, `filename`, `url`, the checksum
|
|
26
|
+
* pair, `compression`, `verifyCertificates` — is either an identity or a public download
|
|
27
|
+
* parameter; none is a credential, matching the "no secret prop" rule every PVE family here
|
|
28
|
+
* carries (see qemu-props.ts's `cipassword`/`machine` for the family that has one to guard).
|
|
29
|
+
*
|
|
30
|
+
* ★ NOT `retain` BY DEFAULT, UNLIKE `Proxmox.Vm`/`Proxmox.Lxc`. A downloaded image is reproducible
|
|
31
|
+
* from its own declaration (the same `url` and `checksum` rebuild it byte-for-byte); a VM's
|
|
32
|
+
* disk state or a container's data is not. Dropping this declaration deletes the file — an
|
|
33
|
+
* operator who wants to keep an unreferenced image around pins its own `RemovalPolicy.retain()`.
|
|
34
|
+
*/
|
|
35
|
+
import { Resource } from 'alchemy';
|
|
36
|
+
import * as Provider from 'alchemy/Provider';
|
|
37
|
+
import type { PveRequirements } from './resource.ts';
|
|
38
|
+
import type { StorageDownloadAttributes, StorageDownloadProps } from './storage-download-props.ts';
|
|
39
|
+
export type { StorageDownloadAttributes, StorageDownloadProps } from './storage-download-props.ts';
|
|
40
|
+
export interface ProxmoxStorageDownload extends Resource<'Proxmox.StorageDownload', StorageDownloadProps, StorageDownloadAttributes, never, PveRequirements> {
|
|
41
|
+
}
|
|
42
|
+
export declare const ProxmoxStorageDownload: import("alchemy").ResourceClass<ProxmoxStorageDownload>;
|
|
43
|
+
export declare const ProxmoxStorageDownloadProvider: () => import("effect/Layer").Layer<Provider.Provider<ProxmoxStorageDownload>, never, import("effect/unstable/http/HttpClient").HttpClient>;
|
|
44
|
+
//# sourceMappingURL=storage-download.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage-download.d.ts","sourceRoot":"","sources":["../../src/proxmox/storage-download.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,KAAK,QAAQ,MAAM,kBAAkB,CAAC;AAE7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,KAAK,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnG,YAAY,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnG,MAAM,WAAW,sBAAuB,SAAQ,QAAQ,CACtD,yBAAyB,EACzB,oBAAoB,EACpB,yBAAyB,EACzB,KAAK,EACL,eAAe,CAChB;CAAG;AAEJ,eAAO,MAAM,sBAAsB,yDAA8D,CAAC;AAElG,eAAO,MAAM,8BAA8B,4IAIxC,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The write half of Talos's OpenBao KV access — split out of credentials.ts (2026-09-26,
|
|
3
|
+
* K-talos-first-boot) once it needed its own header, the same reason machine-config-read.ts,
|
|
4
|
+
* machine-config-poll.ts and talos-errors.ts were split out of talos-machine-config.ts before it.
|
|
5
|
+
* `credentials.ts` stays the read side (mint a talosconfig, read a KV value); this file is the one
|
|
6
|
+
* place anything in this package ever writes TO OpenBao.
|
|
7
|
+
*
|
|
8
|
+
* ★ FIRST CALLER: `Talos.Kubeconfig` (kubeconfig.ts) writing the admin kubeconfig it generates at
|
|
9
|
+
* cluster bring-up into the vault instead of an un-vaulted host `runtimePath` — see that file's
|
|
10
|
+
* own header. `Ceph.AuthEntity` (K-A4, a separate design/PR) is expected to need the same shape
|
|
11
|
+
* for its own vault-written entity keys; this is not yet shared with it on purpose — two callers
|
|
12
|
+
* is the point at which sharing stops being speculative.
|
|
13
|
+
*/
|
|
14
|
+
import * as Effect from 'effect/Effect';
|
|
15
|
+
import type * as Scope from 'effect/Scope';
|
|
16
|
+
import * as ChildProcessSpawner from 'effect/unstable/process/ChildProcessSpawner';
|
|
17
|
+
/**
|
|
18
|
+
* A fresh, unguessable temp path for SOME OTHER PROCESS (talosctl) to create — unlike
|
|
19
|
+
* `credentials.ts`'s `mintKvTempFile`, this does NOT pre-create the file with `wx`, because the
|
|
20
|
+
* caller here is capturing a command's OWN output rather than writing known content itself. The
|
|
21
|
+
* random UUIDv7 name is the only pre-fabrication guard (an attacker cannot pre-plant a symlink at a
|
|
22
|
+
* path it cannot predict) — first used by `kubeconfig.ts` to capture `talosctl kubeconfig`'s
|
|
23
|
+
* generated file before reading it back and writing it into the vault.
|
|
24
|
+
*/
|
|
25
|
+
export declare const reservedTempPath: (label: string) => Effect.Effect<{
|
|
26
|
+
readonly path: string;
|
|
27
|
+
}, never, Scope.Scope>;
|
|
28
|
+
/**
|
|
29
|
+
* Write one field of an OpenBao KV-v2 value from `value` — never argv, the mirror image of
|
|
30
|
+
* `credentials.ts`'s `readKvValue`.
|
|
31
|
+
*
|
|
32
|
+
* ⛔ C2 FIX (LAND red team, 2026-09-26) — `field=@-` IS WRONG AND WAS NEVER MEASURED. `@value` means
|
|
33
|
+
* "read a file at this path"; a literal path of `-` is not the stdin convention for `@` — it is
|
|
34
|
+
* just a file named `-`. MEASURED against the estate's OpenBao v2.6.2 binary (isolated in-memory
|
|
35
|
+
* dev server, `env -i`, scratch HOME, no estate credentials involved; server removed after):
|
|
36
|
+
* `field=@-` exits 1 with `invalid key/value pair "field=@-": error reading file: open -: no
|
|
37
|
+
* such file or directory`, and if a file literally named `-` exists in the working directory it
|
|
38
|
+
* silently stores THAT file's bytes instead. `field=-` (no `@`) is Vault/OpenBao's own stdin
|
|
39
|
+
* convention and was confirmed against the same binary to read the piped bytes correctly. Every
|
|
40
|
+
* `Talos.Kubeconfig` create failed here — AFTER `talosctl kubeconfig` had already issued a fresh
|
|
41
|
+
* admin client certificate, which cannot be revoked.
|
|
42
|
+
* ⛔ stderr ONLY ON FAILURE — same rule as `readKvValue`: never echo what was being written, on
|
|
43
|
+
* success or failure.
|
|
44
|
+
*/
|
|
45
|
+
export declare const writeKvValue: (mount: string, key: string, field: string, value: string) => Effect.Effect<void, Error, ChildProcessSpawner.ChildProcessSpawner>;
|
|
46
|
+
//# sourceMappingURL=credentials-write.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credentials-write.d.ts","sourceRoot":"","sources":["../../src/talos/credentials-write.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAG3C,OAAO,KAAK,mBAAmB,MAAM,6CAA6C,CAAC;AAEnF;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,UACpB,MAAM,KACZ,MAAM,CAAC,MAAM,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAS1D,CAAC;AAEL;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,YAAY,UAChB,MAAM,OACR,MAAM,SACJ,MAAM,SACN,MAAM,KACZ,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,mBAAmB,CAAC,mBAAmB,CAgCjE,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as Effect from 'effect/Effect';
|
|
2
|
+
import type * as Scope from 'effect/Scope';
|
|
2
3
|
import * as ChildProcessSpawner from 'effect/unstable/process/ChildProcessSpawner';
|
|
3
4
|
/** Where credentials come from. HomeFlare-specific mount names live in the stack, not here. */
|
|
4
5
|
export type TalosTarget = {
|
|
@@ -7,10 +8,10 @@ export type TalosTarget = {
|
|
|
7
8
|
/** Logical cluster name — safe to persist and log. */
|
|
8
9
|
readonly cluster: string;
|
|
9
10
|
/**
|
|
10
|
-
* Path under the mount for the talosconfig YAML.
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
11
|
+
* Path under the mount for the talosconfig YAML. Default `'talosconfig'` — FIXED 2026-09-26;
|
|
12
|
+
* the shipped default was `'data/talosconfig'`, which `bao kv get` turned into
|
|
13
|
+
* `<mount>/data/data/talosconfig` (see the ⚠️ above). It failed closed rather than reading an
|
|
14
|
+
* empty talosconfig, but it would have blocked the very first deploy.
|
|
14
15
|
*/
|
|
15
16
|
readonly talosconfigKey?: string;
|
|
16
17
|
};
|
|
@@ -18,13 +19,54 @@ export type TalosCredential = {
|
|
|
18
19
|
/** Absolute path to a temp talosconfig. ⛔ NEVER PERSIST, NEVER LOG CONTENTS. */
|
|
19
20
|
readonly talosconfigPath: string;
|
|
20
21
|
};
|
|
22
|
+
/**
|
|
23
|
+
* Default OpenBao KV path (under `target.mount`) for the admin kubeconfig `Talos.Kubeconfig`
|
|
24
|
+
* writes once at cluster bring-up. See kubeconfig.ts's own header (K-talos-first-boot, 2026-09-26)
|
|
25
|
+
* and docs/plans/2026-09-26-talos-secrets-flow.md's O1 key list.
|
|
26
|
+
*/
|
|
27
|
+
export declare const DEFAULT_KUBECONFIG_KEY = "kubeconfig";
|
|
28
|
+
/**
|
|
29
|
+
* Read one OpenBao KV-v2 value and return the first of `fields` that is a non-empty string.
|
|
30
|
+
*
|
|
31
|
+
* ★ THE ONE PLACE THIS PACKAGE SHELLS TO `bao` — talosconfig, per-node machine config and any
|
|
32
|
+
* future KV-backed Talos material (secrets.yaml, ceph entity keys) all read through this,
|
|
33
|
+
* so there is exactly one spot that must never echo a KV value on failure.
|
|
34
|
+
* ⛔ stderr ONLY ON FAILURE. stdout may hold the very secret this call exists to fetch.
|
|
35
|
+
*/
|
|
36
|
+
export declare const readKvValue: (mount: string, key: string, fields: readonly string[]) => Effect.Effect<string, Error, ChildProcessSpawner.ChildProcessSpawner>;
|
|
37
|
+
/**
|
|
38
|
+
* Write `raw` to a session-temp, 0600, exclusively-created file whose lifetime is the CALLER's
|
|
39
|
+
* `Effect.scoped`, not this call's. See the ⛔ C1 FIX note at the top of this file.
|
|
40
|
+
*
|
|
41
|
+
* ⛔ 0600, CREATED EXCLUSIVELY, AND `Bun.write` CANNOT DO EITHER. This file can hold a cluster
|
|
42
|
+
* admin client certificate or a machine config's bootstrap token. `Bun.write` takes no mode, so
|
|
43
|
+
* it lands at the process umask — world-readable on this estate — for as long as the resource
|
|
44
|
+
* runs. The name is unguessable, and "unguessable" is not a permission.
|
|
45
|
+
* ⚠️ `wx` IS THE OTHER HALF. `O_EXCL` means this cannot be made to write through a path an
|
|
46
|
+
* attacker pre-created (the classic /tmp symlink race), and with a UUIDv7 name a collision is a
|
|
47
|
+
* genuine error rather than something to paper over.
|
|
48
|
+
* ⚠️ A HARD KILL (SIGKILL, power loss) skips the finalizer and leaves the file behind. 0600 is
|
|
49
|
+
* what makes that survivable rather than a disclosure.
|
|
50
|
+
*/
|
|
51
|
+
export declare const mintKvTempFile: (raw: string, label: string) => Effect.Effect<{
|
|
52
|
+
readonly path: string;
|
|
53
|
+
}, Error, Scope.Scope>;
|
|
21
54
|
/**
|
|
22
55
|
* Mint one talosconfig file for `target`.
|
|
23
56
|
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
57
|
+
* ⛔ CALLERS MUST WRAP THEIR WHOLE USE OF `credential.talosconfigPath` — not just this call — in
|
|
58
|
+
* `Effect.scoped(...)`. This function's own `Scope.Scope` requirement is what makes that the
|
|
59
|
+
* caller's job instead of a lie this function tells itself; see the header above.
|
|
60
|
+
*/
|
|
61
|
+
export declare const mintTalosconfig: (target: TalosTarget) => Effect.Effect<TalosCredential, Error, ChildProcessSpawner.ChildProcessSpawner | Scope.Scope>;
|
|
62
|
+
/**
|
|
63
|
+
* Mint one temp kubeconfig file from the vault copy `Talos.Kubeconfig` writes at bring-up
|
|
64
|
+
* (K-talos-first-boot, 2026-09-26) — the consumer-side counterpart to {@link mintTalosconfig},
|
|
65
|
+
* named as the future seam for `Kubernetes.ClusterAdapter` in
|
|
66
|
+
* docs/plans/2026-09-26-talos-secrets-flow.md ("consumers mint it the way the talosconfig is
|
|
67
|
+
* minted"). Not yet wired to that adapter — this only makes the read+materialize step exist.
|
|
26
68
|
*/
|
|
27
|
-
export declare const
|
|
28
|
-
|
|
29
|
-
}, Error
|
|
69
|
+
export declare const mintKubeconfig: (target: TalosTarget, key?: string) => Effect.Effect<{
|
|
70
|
+
readonly path: string;
|
|
71
|
+
}, Error, ChildProcessSpawner.ChildProcessSpawner | Scope.Scope>;
|
|
30
72
|
//# sourceMappingURL=credentials.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/talos/credentials.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/talos/credentials.ts"],"names":[],"mappings":"AAiCA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAG3C,OAAO,KAAK,mBAAmB,MAAM,6CAA6C,CAAC;AAEnF,+FAA+F;AAC/F,MAAM,MAAM,WAAW,GAAG;IACxB,gEAAgE;IAChE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,sDAAsD;IACtD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;;;;;OAKG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,gFAAgF;IAChF,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC,CAAC;AAIF;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,eAAe,CAAC;AAEnD;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,UACf,MAAM,OACR,MAAM,UACH,SAAS,MAAM,EAAE,KACxB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,mBAAmB,CAAC,mBAAmB,CAgDnE,CAAC;AAEL;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,cAAc,QACpB,MAAM,SACJ,MAAM,KACZ,MAAM,CAAC,MAAM,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAqB1D,CAAC;AAEL;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,WAClB,WAAW,KAClB,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,EAAE,mBAAmB,CAAC,mBAAmB,GAAG,KAAK,CAAC,KAAK,CAO3F,CAAC;AAEJ;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,WACjB,WAAW,mBAElB,MAAM,CAAC,MAAM,CACd;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EACzB,KAAK,EACL,mBAAmB,CAAC,mBAAmB,GAAG,KAAK,CAAC,KAAK,CAIpD,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A fake `ChildProcessSpawner` for offline Talos tests — no real `bao` or `talosctl` process ever
|
|
3
|
+
* starts. Shared by credentials.test.ts and talos-machine-config.test.ts (2026-09-26, K-A3);
|
|
4
|
+
* this package had NO process-level test fake before this file — every Talos resource file spawns
|
|
5
|
+
* a real binary in production and none of that was previously exercised offline.
|
|
6
|
+
*
|
|
7
|
+
* ★ A FULL FAKE SERVICE, NOT A REAL SPAWN WITH A FIXTURE EXECUTABLE ON `PATH`. The alternative —
|
|
8
|
+
* a tiny fake `bao`/`talosctl` script and a mutated `process.env.PATH` — spawns a REAL OS
|
|
9
|
+
* process and mutates process-global state for the test's duration, which is exactly the kind
|
|
10
|
+
* of cross-test interference the house rules ask tests to avoid. `ChildProcessSpawner.make`
|
|
11
|
+
* takes just a `spawn` function and derives everything else, so a fake `spawn` is the whole cost.
|
|
12
|
+
*/
|
|
13
|
+
import * as Effect from 'effect/Effect';
|
|
14
|
+
import * as Stream from 'effect/Stream';
|
|
15
|
+
import type { Command } from 'effect/unstable/process/ChildProcess';
|
|
16
|
+
import * as ChildProcessSpawner from 'effect/unstable/process/ChildProcessSpawner';
|
|
17
|
+
export type FakeResult = {
|
|
18
|
+
readonly stdout?: string;
|
|
19
|
+
readonly stderr?: string;
|
|
20
|
+
readonly exitCode?: number;
|
|
21
|
+
};
|
|
22
|
+
export type FakeCall = {
|
|
23
|
+
readonly command: string;
|
|
24
|
+
readonly args: readonly string[];
|
|
25
|
+
/**
|
|
26
|
+
* Decoded stdin text, present only when the real caller piped a `Stream` in (K-talos-first-boot,
|
|
27
|
+
* `credentials-write.ts`'s `writeKvValue`) — the whole reason this fake exists is to prove a
|
|
28
|
+
* value went in via stdin and never via argv, so a test needs to see it.
|
|
29
|
+
*/
|
|
30
|
+
readonly stdin?: string;
|
|
31
|
+
};
|
|
32
|
+
export type FakeHandler = (call: FakeCall) => FakeResult;
|
|
33
|
+
/**
|
|
34
|
+
* Build a fake `ChildProcessSpawner.Service` from `handler`, which sees every command's
|
|
35
|
+
* executable + argv (+ decoded stdin, when piped) and returns canned stdout/stderr/exitCode.
|
|
36
|
+
* `credentials.ts` and `talosctl.ts` only ever build `StandardCommand`s (never a piped command),
|
|
37
|
+
* so that is the only shape this fake accepts — a `PipedCommand` is a test-authoring mistake, not
|
|
38
|
+
* something to fake.
|
|
39
|
+
*/
|
|
40
|
+
export declare const fakeSpawner: (handler: FakeHandler, calls?: FakeCall[]) => {
|
|
41
|
+
spawn(command: Command): Effect.Effect<ChildProcessSpawner.ChildProcessHandle, import("effect/PlatformError").PlatformError, import("effect/Scope").Scope>;
|
|
42
|
+
exitCode(command: Command): Effect.Effect<ChildProcessSpawner.ExitCode, import("effect/PlatformError").PlatformError>;
|
|
43
|
+
streamString(command: Command, options?: {
|
|
44
|
+
readonly includeStderr?: boolean | undefined;
|
|
45
|
+
}): Stream.Stream<string, import("effect/PlatformError").PlatformError>;
|
|
46
|
+
streamLines(command: Command, options?: {
|
|
47
|
+
readonly includeStderr?: boolean | undefined;
|
|
48
|
+
}): Stream.Stream<string, import("effect/PlatformError").PlatformError>;
|
|
49
|
+
lines(command: Command, options?: {
|
|
50
|
+
readonly includeStderr?: boolean | undefined;
|
|
51
|
+
}): Effect.Effect<Array<string>, import("effect/PlatformError").PlatformError>;
|
|
52
|
+
string(command: Command, options?: {
|
|
53
|
+
readonly includeStderr?: boolean | undefined;
|
|
54
|
+
}): Effect.Effect<string, import("effect/PlatformError").PlatformError>;
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=fake-process.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fake-process.d.ts","sourceRoot":"","sources":["../../src/talos/fake-process.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,KAAK,mBAAmB,MAAM,6CAA6C,CAAC;AAEnF,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AACF,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AACF,MAAM,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,QAAQ,KAAK,UAAU,CAAC;AAsCzD;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,YAAa,WAAW,UAAS,QAAQ,EAAE;;;;;;;;;;;;;;;CAehE,CAAC"}
|
package/dist/talos/index.d.ts
CHANGED
|
@@ -5,11 +5,26 @@
|
|
|
5
5
|
* These are the symbols a real stack consumes; the rest of the files are internals a
|
|
6
6
|
* provider needs but a consumer should not depend on. An `export *` here would publish
|
|
7
7
|
* every helper as API and make the next refactor a breaking change.
|
|
8
|
+
* ★ `Talos.MachineConfig`'S RESOURCE CLASS JOINED ITS PROVIDER 2026-09-26 (K-A3) — until now this
|
|
9
|
+
* barrel exported only `Talos*Provider`, which builds the provider but gives a consuming stack
|
|
10
|
+
* nothing to `new` or call to actually DECLARE a row (the same gap proxmox/index.ts's own header
|
|
11
|
+
* calls out for `ProxmoxVm`). MachineConfig is safe to declare today: it fails closed on a digest
|
|
12
|
+
* mismatch before touching a node, and its cold-start read never silently adopts (PR 307 fix-first
|
|
13
|
+
* #1, machine-config-read.ts's own header).
|
|
14
|
+
* ★ BOOTSTRAP, CLUSTERHEALTH AND KUBECONFIG JOIN THEM (K-talos-first-boot, 2026-09-26) — PR 307's
|
|
15
|
+
* red team (fix-first #3) held these back because `Talos.Bootstrap` could re-run `talosctl
|
|
16
|
+
* bootstrap` against an already-bootstrapped cluster and `Talos.Kubeconfig` wrote a cluster-admin
|
|
17
|
+
* kubeconfig to un-vaulted host disk. Both are fixed now: bootstrap's "once means once" invariant
|
|
18
|
+
* (talos-bootstrap.ts's own header) and kubeconfig landing in OpenBao, written once at bring-up
|
|
19
|
+
* (kubeconfig.ts's own header) — plus `Talos.ClusterHealth`'s error handling no longer conflates a
|
|
20
|
+
* vault/transport failure with "cluster not healthy yet" (talos-cluster-health.ts's own header).
|
|
8
21
|
* ★ Anything unlisted is still reachable by path if you genuinely need it — that is a
|
|
9
22
|
* deliberate, visible act rather than an accident of barrelling.
|
|
10
23
|
*/
|
|
11
|
-
export {
|
|
12
|
-
export {
|
|
13
|
-
export {
|
|
14
|
-
export {
|
|
24
|
+
export type { TalosCredential, TalosTarget } from './credentials.ts';
|
|
25
|
+
export { type KubeconfigAttributes, type KubeconfigProps, TalosKubeconfig, TalosKubeconfigProvider, } from './kubeconfig.ts';
|
|
26
|
+
export type { ApplyMode, WithTarget } from './resource.ts';
|
|
27
|
+
export { type BootstrapAttributes, type BootstrapProps, TalosBootstrap, TalosBootstrapProvider, } from './talos-bootstrap.ts';
|
|
28
|
+
export { type ClusterHealthAttributes, type ClusterHealthProps, TalosClusterHealth, TalosClusterHealthProvider, } from './talos-cluster-health.ts';
|
|
29
|
+
export { type MachineConfigAttributes, type MachineConfigProps, TalosMachineConfig, TalosMachineConfigProvider, } from './talos-machine-config.ts';
|
|
15
30
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/talos/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/talos/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,eAAe,EACf,uBAAuB,GACxB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,cAAc,EACd,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACvB,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACvB,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,2BAA2B,CAAC"}
|