@homeflare/alchemy 0.37.6 → 0.37.8

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 (112) hide show
  1. package/dist/linux/container-form.d.ts +1 -1
  2. package/dist/linux/container-generator.d.ts +28 -0
  3. package/dist/linux/container-generator.d.ts.map +1 -1
  4. package/dist/linux/container-lifecycle.d.ts +18 -1
  5. package/dist/linux/container-lifecycle.d.ts.map +1 -1
  6. package/dist/linux/container-preflight.d.ts +34 -0
  7. package/dist/linux/container-preflight.d.ts.map +1 -1
  8. package/dist/linux/container-settle.d.ts.map +1 -1
  9. package/dist/linux/fake-sudo.d.ts +14 -2
  10. package/dist/linux/fake-sudo.d.ts.map +1 -1
  11. package/dist/linux/index.js +76 -29
  12. package/dist/linux/index.js.map +11 -10
  13. package/dist/linux/sudo-exec.d.ts +16 -0
  14. package/dist/linux/sudo-exec.d.ts.map +1 -1
  15. package/dist/linux/unit-form.d.ts.map +1 -1
  16. package/dist/linux/unit-text.d.ts +35 -0
  17. package/dist/linux/unit-text.d.ts.map +1 -0
  18. package/dist/proxmox/firewall-alias-config.d.ts +36 -0
  19. package/dist/proxmox/firewall-alias-config.d.ts.map +1 -0
  20. package/dist/proxmox/firewall-alias-form.d.ts +3 -1
  21. package/dist/proxmox/firewall-alias-form.d.ts.map +1 -1
  22. package/dist/proxmox/firewall-alias-lifecycle.d.ts +43 -0
  23. package/dist/proxmox/firewall-alias-lifecycle.d.ts.map +1 -0
  24. package/dist/proxmox/firewall-alias.d.ts +2 -8
  25. package/dist/proxmox/firewall-alias.d.ts.map +1 -1
  26. package/dist/proxmox/index.js +795 -526
  27. package/dist/proxmox/index.js.map +23 -10
  28. package/dist/proxmox/lxc-errors.d.ts +12 -0
  29. package/dist/proxmox/lxc-errors.d.ts.map +1 -0
  30. package/dist/proxmox/lxc-lifecycle.d.ts +9 -31
  31. package/dist/proxmox/lxc-lifecycle.d.ts.map +1 -1
  32. package/dist/proxmox/lxc-read.d.ts +4 -0
  33. package/dist/proxmox/lxc-read.d.ts.map +1 -0
  34. package/dist/proxmox/lxc-task.d.ts +15 -0
  35. package/dist/proxmox/lxc-task.d.ts.map +1 -0
  36. package/dist/proxmox/network-apply-read.d.ts +7 -14
  37. package/dist/proxmox/network-apply-read.d.ts.map +1 -1
  38. package/dist/proxmox/network-apply-run.d.ts +7 -0
  39. package/dist/proxmox/network-apply-run.d.ts.map +1 -0
  40. package/dist/proxmox/network-apply.d.ts +2 -3
  41. package/dist/proxmox/network-apply.d.ts.map +1 -1
  42. package/dist/proxmox/qemu-errors.d.ts +5 -0
  43. package/dist/proxmox/qemu-errors.d.ts.map +1 -0
  44. package/dist/proxmox/qemu-form.d.ts +22 -0
  45. package/dist/proxmox/qemu-form.d.ts.map +1 -0
  46. package/dist/proxmox/qemu-lifecycle.d.ts +26 -0
  47. package/dist/proxmox/qemu-lifecycle.d.ts.map +1 -0
  48. package/dist/proxmox/qemu-read.d.ts +5 -0
  49. package/dist/proxmox/qemu-read.d.ts.map +1 -0
  50. package/dist/proxmox/qemu-task.d.ts +9 -0
  51. package/dist/proxmox/qemu-task.d.ts.map +1 -0
  52. package/dist/proxmox/qemu.d.ts +9 -14
  53. package/dist/proxmox/qemu.d.ts.map +1 -1
  54. package/dist/proxmox/replication-firewall-fixtures.d.ts +30 -0
  55. package/dist/proxmox/replication-firewall-fixtures.d.ts.map +1 -0
  56. package/dist/proxmox/replication-job-config.d.ts +56 -0
  57. package/dist/proxmox/replication-job-config.d.ts.map +1 -0
  58. package/dist/proxmox/replication-job-lifecycle.d.ts +62 -0
  59. package/dist/proxmox/replication-job-lifecycle.d.ts.map +1 -0
  60. package/dist/proxmox/replication-job.d.ts +5 -6
  61. package/dist/proxmox/replication-job.d.ts.map +1 -1
  62. package/dist/release/archive.d.ts.map +1 -1
  63. package/dist/release/index.js +3 -2
  64. package/dist/release/index.js.map +3 -3
  65. package/docs/linux-sudo.md +18 -7
  66. package/docs/proxmox-lxc-distilled.md +56 -0
  67. package/docs/proxmox-replication-firewall-distilled.md +53 -0
  68. package/docs/proxmox-sdk-migration.md +23 -18
  69. package/package.json +2 -2
  70. package/src/linux/container-form.ts +1 -1
  71. package/src/linux/container-generator.test.ts +33 -0
  72. package/src/linux/container-generator.ts +72 -0
  73. package/src/linux/container-lifecycle.test.ts +6 -3
  74. package/src/linux/container-lifecycle.ts +23 -2
  75. package/src/linux/container-preflight.ts +47 -0
  76. package/src/linux/container-settle.ts +12 -1
  77. package/src/linux/container-shadow.test.ts +131 -0
  78. package/src/linux/fake-sudo.ts +21 -5
  79. package/src/linux/sudo-exec.ts +60 -10
  80. package/src/linux/sudo-lifecycle.test.ts +64 -3
  81. package/src/linux/unit-form.ts +4 -18
  82. package/src/linux/unit-text.test.ts +67 -0
  83. package/src/linux/unit-text.ts +58 -0
  84. package/src/proxmox/firewall-alias-config.ts +39 -0
  85. package/src/proxmox/firewall-alias-form.ts +1 -1
  86. package/src/proxmox/firewall-alias-lifecycle.ts +100 -0
  87. package/src/proxmox/firewall-alias.ts +4 -67
  88. package/src/proxmox/lxc-create.test.ts +4 -1
  89. package/src/proxmox/lxc-distilled.test.ts +239 -0
  90. package/src/proxmox/lxc-errors.ts +9 -0
  91. package/src/proxmox/lxc-lifecycle.ts +31 -113
  92. package/src/proxmox/lxc-read.test.ts +29 -6
  93. package/src/proxmox/lxc-read.ts +88 -0
  94. package/src/proxmox/lxc-task.ts +71 -0
  95. package/src/proxmox/network-apply-distilled.test.ts +76 -0
  96. package/src/proxmox/network-apply-read.ts +18 -39
  97. package/src/proxmox/network-apply-run.ts +97 -0
  98. package/src/proxmox/network-apply.ts +5 -94
  99. package/src/proxmox/qemu-errors.ts +7 -0
  100. package/src/proxmox/qemu-form.ts +15 -0
  101. package/src/proxmox/qemu-lifecycle.test.ts +171 -0
  102. package/src/proxmox/qemu-lifecycle.ts +134 -0
  103. package/src/proxmox/qemu-read.ts +73 -0
  104. package/src/proxmox/qemu-task.ts +64 -0
  105. package/src/proxmox/qemu.ts +11 -44
  106. package/src/proxmox/replication-firewall-fixtures.ts +71 -0
  107. package/src/proxmox/replication-firewall-lifecycle.test.ts +109 -0
  108. package/src/proxmox/replication-firewall-wire.test.ts +173 -0
  109. package/src/proxmox/replication-job-config.ts +79 -0
  110. package/src/proxmox/replication-job-lifecycle.ts +113 -0
  111. package/src/proxmox/replication-job.ts +7 -84
  112. package/src/release/archive.ts +4 -1
@@ -23,6 +23,22 @@
23
23
  * is a valid type in `unit-form.ts`'s `TYPES` set) would also have elevated. Grepped: no code
24
24
  * in this package ever calls `enable`/`start`/`restart` on a unit it has not itself just
25
25
  * written a file for, so narrowing the exemption to `stop`/`disable` costs nothing legitimate.
26
+ * 🔴 MEASURED, CT100 deploy 2026-09-26 00:11Z: a THIRD gap, this one refusing a call that should
27
+ * have been allowed. `Podman.Container caddy`'s generated `caddy.service` has
28
+ * `FragmentPath=/run/systemd/generator/caddy.service` — Quadlet's generator output, never a
29
+ * path this runner would ever declare as a prefix (nothing writes there directly) — so `restart`
30
+ * was refused outright, even though the `.container` FILE THAT GENERATED IT lives at
31
+ * `/etc/containers/systemd/caddy.container`, squarely under this runner's own
32
+ * `/etc/containers/systemd` prefix, and this SAME runner had just written it. `SourcePath` is
33
+ * the generator's own record of that file (systemctl.ts's header, MEASURED on CT100). So a
34
+ * generated unit is now also reachable when its `FragmentPath` is the generator's OWN output
35
+ * directory (`GENERATOR_DIRECTORIES` below) AND its `SourcePath` is under a declared prefix —
36
+ * the thing this runner actually owns is the `.container` file, and the generated unit is
37
+ * systemd's own derivative of it, not a foreign unit. Everything the check refused before still
38
+ * refuses: a vendor unit's `FragmentPath` (`/usr/lib/systemd/system/...`) is not under a
39
+ * generator directory at all; a generated unit with no `SourcePath`, or one outside every
40
+ * prefix (a `.container` file elsewhere in Quadlet's OWN search path —
41
+ * `podman-systemd.unit(5)` — that this runner was never told to own), still refuses.
26
42
  */
27
43
  import type { ExecResult, HostRunner } from '../launchd/runner.ts';
28
44
  import type { Elevate } from './sudo-write.ts';
@@ -1 +1 @@
1
- {"version":3,"file":"sudo-exec.d.ts","sourceRoot":"","sources":["../../src/linux/sudo-exec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGnE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAuC/C,iGAAiG;AACjG,eAAO,MAAM,YAAY,SACjB,UAAU,WACP,OAAO,YACN,SAAS,MAAM,EAAE,QACrB,SAAS,MAAM,EAAE,KACtB,OAAO,CAAC,UAAU,CA2CpB,CAAC"}
1
+ {"version":3,"file":"sudo-exec.d.ts","sourceRoot":"","sources":["../../src/linux/sudo-exec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAInE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AA4D/C,iGAAiG;AACjG,eAAO,MAAM,YAAY,SACjB,UAAU,WACP,OAAO,YACN,SAAS,MAAM,EAAE,QACrB,SAAS,MAAM,EAAE,KACtB,OAAO,CAAC,UAAU,CAuDpB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"unit-form.d.ts","sourceRoot":"","sources":["../../src/linux/unit-form.ts"],"names":[],"mappings":"AAiBA,MAAM,MAAM,WAAW,GAAG;IACxB,yFAAyF;IACzF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;CACpE,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,qFAAqF;IACrF,IAAI,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iGAAiG;IACjG,QAAQ,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IAClC,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gDAAgD;IAChD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,oDAAoD;IACpD,UAAU,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,iGAAiG;AACjG,eAAO,MAAM,sBAAsB,wBAAwB,CAAC;AAE5D;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB,YAClC,qBAAqB,EACrB,qBAAqB,EACrB,+BAA+B,EAC/B,yBAAyB,EACzB,qBAAqB,CACb,CAAC;AAEX,mGAAmG;AACnG,eAAO,MAAM,UAAU;aAAK,GAAG,EAAE,CAAC;aAAE,IAAI,EAAE,GAAK;aAAE,GAAG,EAAE,CAAC;CAAW,CAAC;AAEnE,eAAO,MAAM,QAAQ,SAAU,MAAM,KAAG,MAAmD,CAAC;AAE5F,4FAA4F;AAC5F,eAAO,MAAM,YAAY,cAAe,SAAS,MAAM,EAAE,GAAG,SAAS,KAAG,MAChC,CAAC;AAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,eAAO,MAAM,aAAa,gBACX,MAAM,YACT,MAAM,GAAG,SAAS,WACnB,OAAO,KACf,OAKF,CAAC;AAEF,kGAAkG;AAClG,eAAO,MAAM,UAAU,aAAc,SAAS,WAAW,EAAE,KAAG,MAKzC,CAAC;AAEtB,eAAO,MAAM,QAAQ,UAAW,gBAAgB,KAAG,MACA,CAAC;AAEpD,eAAO,MAAM,WAAW,UAAW,gBAAgB,KAAG,MACQ,CAAC;AAE/D,mGAAmG;AACnG,eAAO,MAAM,IAAI,QAA6C,CAAC;AAkB/D;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,UAAW,gBAAgB,WAAW,MAAM,KAAG,MAAM,EAmC7E,CAAC"}
1
+ {"version":3,"file":"unit-form.d.ts","sourceRoot":"","sources":["../../src/linux/unit-form.ts"],"names":[],"mappings":"AAoBA,MAAM,MAAM,WAAW,GAAG;IACxB,yFAAyF;IACzF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;CACpE,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,qFAAqF;IACrF,IAAI,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iGAAiG;IACjG,QAAQ,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IAClC,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gDAAgD;IAChD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,oDAAoD;IACpD,UAAU,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,iGAAiG;AACjG,eAAO,MAAM,sBAAsB,wBAAwB,CAAC;AAE5D;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB,YAClC,qBAAqB,EACrB,qBAAqB,EACrB,+BAA+B,EAC/B,yBAAyB,EACzB,qBAAqB,CACb,CAAC;AAEX,mGAAmG;AACnG,eAAO,MAAM,UAAU;aAAK,GAAG,EAAE,CAAC;aAAE,IAAI,EAAE,GAAK;aAAE,GAAG,EAAE,CAAC;CAAW,CAAC;AAEnE,eAAO,MAAM,QAAQ,SAAU,MAAM,KAAG,MAAmD,CAAC;AAE5F,4FAA4F;AAC5F,eAAO,MAAM,YAAY,cAAe,SAAS,MAAM,EAAE,GAAG,SAAS,KAAG,MAChC,CAAC;AAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,eAAO,MAAM,aAAa,gBACX,MAAM,YACT,MAAM,GAAG,SAAS,WACnB,OAAO,KACf,OAKF,CAAC;AAEF,kGAAkG;AAClG,eAAO,MAAM,UAAU,aAAc,SAAS,WAAW,EAAE,KAAG,MAKzC,CAAC;AAEtB,eAAO,MAAM,QAAQ,UAAW,gBAAgB,KAAG,MACA,CAAC;AAEpD,eAAO,MAAM,WAAW,UAAW,gBAAgB,KAAG,MACQ,CAAC;AAE/D,mGAAmG;AACnG,eAAO,MAAM,IAAI,QAA6C,CAAC;AAgB/D;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,UAAW,gBAAgB,WAAW,MAAM,KAAG,MAAM,EAmC7E,CAAC"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * The parts of `unit-form.ts`'s validation that inspect the unit file's TEXT rather than its
3
+ * props struct — split out so unit-form.ts stays under the file cap, and because these are one
4
+ * coherent concern: is this INI shape something systemd would actually load. Takes plain strings,
5
+ * never `SystemdUnitProps`, so it never needs to import back from unit-form.ts.
6
+ *
7
+ * ⛔ `[Install]` KEYS ARE `unit-form.ts`'s OWN LIST, NOT SYSTEMD'S FULL VOCABULARY — WantedBy,
8
+ * RequiredBy, UpsertedBy, Also, Alias, per `systemd.unit(5)` §[Install]. `container-form.ts`'s
9
+ * own header notes it deliberately does NOT reuse this set: a `.container` file's `[Install]`
10
+ * supports only Alias/WantedBy/RequiredBy (`podman-systemd.unit(5)`), narrower than this.
11
+ */
12
+ export declare const INSTALL_KEYS: Set<string>;
13
+ /** Whether `text` has an `[Install]` section carrying at least one key systemd actually links on. */
14
+ export declare const hasInstallSection: (text: string) => boolean;
15
+ /**
16
+ * The first line that is neither blank nor a comment — the line whose shape actually decides
17
+ * whether the file "begins with a [Section]", per `textProblems` below.
18
+ * ★ systemd.syntax(7): "Empty lines and lines starting with '#' or ';' are ignored", with no
19
+ * carve-out for the position before the first section — a comment header is ordinary content
20
+ * there, same as anywhere else in the file.
21
+ */
22
+ export declare const firstSubstantiveLine: (text: string) => string | undefined;
23
+ /**
24
+ * 🔴 MEASURED FALSE, CT100 deploy 2026-09-26 00:11Z: the openbao-agent.service asset's first eight
25
+ * lines are `#`-comments recording where the file was recovered from (verbatim from the live
26
+ * host — homeflare-ct100's `src/openbao-agent/files/openbao-agent.service`), and the file is
27
+ * byte-identical to what systemd already loads there. The old check tested the WHOLE text
28
+ * against `/^\s*\[[A-Za-z]+]/` — `\s*` skips blank lines and indentation, never a `#`/`;`
29
+ * comment — so a leading comment line failed it outright. This checks only the first
30
+ * SUBSTANTIVE line, so any number of leading blank lines and comments are fine and a genuine
31
+ * `key=value` before any section — the one real error this exists to catch — still fails, since
32
+ * that line is neither blank nor a comment either.
33
+ */
34
+ export declare const textProblems: (text: string) => string[];
35
+ //# sourceMappingURL=unit-text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unit-text.d.ts","sourceRoot":"","sources":["../../src/linux/unit-text.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,eAAO,MAAM,YAAY,aAAqE,CAAC;AAE/F,qGAAqG;AACrG,eAAO,MAAM,iBAAiB,SAAU,MAAM,KAAG,OAIhD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,SAAU,MAAM,KAAG,MAAM,GAAG,SAG6B,CAAC;AAE3F;;;;;;;;;;GAUG;AACH,eAAO,MAAM,YAAY,SAAU,MAAM,KAAG,MAAM,EAajD,CAAC"}
@@ -0,0 +1,36 @@
1
+ /** Existing alias normalization and forms, independent of the named SDK transport. */
2
+ import type { FirewallAliasAttributes, FirewallAliasProps } from './firewall-alias.ts';
3
+ import { body } from './firewall-alias-form.ts';
4
+ export declare const firewallAliasSpec: {
5
+ /** The SDK read refuses malformed successful payloads before applying these normalizers. */
6
+ attributes: (live: Record<string, unknown>, props: FirewallAliasProps) => {
7
+ cidr: string;
8
+ comment: string;
9
+ ipversion: number;
10
+ /** The read checks identity; the stored spelling is preserved for display. */
11
+ name: string;
12
+ };
13
+ collection: () => string;
14
+ createForm: (props: FirewallAliasProps) => {
15
+ cidr: string;
16
+ name: string;
17
+ };
18
+ /**
19
+ * ⚠️ EXACTLY THE TWO FIELDS A PUT CAN PUT BACK, both sides through the same normalisers. `name`
20
+ * is identity and case-only drift (see the header); `ipversion` is derived and unwritable.
21
+ * Comparing either would report an update that no update can settle.
22
+ */
23
+ /** The vendor rules these forms are checked against at plan time — resource-spec.ts. */
24
+ endpoint: {
25
+ create: string;
26
+ update: string;
27
+ };
28
+ matches: (attributes: FirewallAliasAttributes, props: FirewallAliasProps) => boolean;
29
+ /**
30
+ * ⚠️ UNESCAPED ON PURPOSE: `pve-fw-alias` admits only `[A-Za-z][A-Za-z0-9\-\_]+`, so there is no
31
+ * character here that a URL would need to encode, and PVE lowercases the segment on arrival.
32
+ */
33
+ path: (props: FirewallAliasProps) => string;
34
+ updateForm: typeof body;
35
+ };
36
+ //# sourceMappingURL=firewall-alias-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"firewall-alias-config.d.ts","sourceRoot":"","sources":["../../src/proxmox/firewall-alias-config.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,OAAO,KAAK,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEvF,OAAO,EAAE,IAAI,EAAiB,MAAM,0BAA0B,CAAC;AAG/D,eAAO,MAAM,iBAAiB;IAC5B,4FAA4F;;;;;QAOxF,8EAA8E;;;;;;;;IAMlF;;;;OAIG;IACH,wFAAwF;;QAEtF,MAAM;QACN,MAAM;;;IAIR;;;OAGG;;;CAG2D,CAAC"}
@@ -94,5 +94,7 @@ export declare const comment: (value: unknown) => string;
94
94
  * this form would be a second, invisible identity for the object, set from a field the resource
95
95
  * does not have.
96
96
  */
97
- export declare const body: (props: FirewallAliasProps) => Record<string, string>;
97
+ export declare const body: (props: FirewallAliasProps) => Record<string, string> & {
98
+ cidr: string;
99
+ };
98
100
  //# sourceMappingURL=firewall-alias-form.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"firewall-alias-form.d.ts","sourceRoot":"","sources":["../../src/proxmox/firewall-alias-form.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAG9D;;;;;;;;GAQG;AACH,eAAO,MAAM,IAAI,SAAU,MAAM,WAA8B,CAAC;AAEhE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,IAAI,UAAW,OAAO,WAIlC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,OAAO,UAAW,OAAO,WAGrC,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,IAAI,UAAW,kBAAkB,KAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAGrE,CAAC"}
1
+ {"version":3,"file":"firewall-alias-form.d.ts","sourceRoot":"","sources":["../../src/proxmox/firewall-alias-form.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAG9D;;;;;;;;GAQG;AACH,eAAO,MAAM,IAAI,SAAU,MAAM,WAA8B,CAAC;AAEhE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,IAAI,UAAW,OAAO,WAIlC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,OAAO,UAAW,OAAO,WAGrC,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,IAAI,UAAW,kBAAkB,KAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAGvF,CAAC"}
@@ -0,0 +1,43 @@
1
+ import type { Input } from 'alchemy/Input';
2
+ import * as cluster from '@distilled.cloud/proxmox/cluster';
3
+ import * as Effect from 'effect/Effect';
4
+ import type { FirewallAliasAttributes, FirewallAliasProps } from './firewall-alias.ts';
5
+ export declare const readFirewallAlias: (props: FirewallAliasProps) => Effect.Effect<{
6
+ cidr: string;
7
+ comment: string;
8
+ ipversion: number;
9
+ name: string;
10
+ } | undefined, Error | import("./distilled-pve.ts").PveClusterExhausted | import("./credential-errors.ts").PveCredentialDenied | import("effect/Cause").TimeoutError | cluster.ProxmoxOpError, import("effect/unstable/http/HttpClient").HttpClient>;
11
+ /** Vendor deletion silently removes a missing key. All actual SDK failures still propagate. */
12
+ export declare const deleteFirewallAlias: (props: FirewallAliasProps) => Effect.Effect<cluster.DeleteClusterFirewallAliasResponse, Error | import("./distilled-pve.ts").PveClusterExhausted | import("./credential-errors.ts").PveCredentialDenied | import("effect/Cause").TimeoutError | cluster.ProxmoxOpError, import("effect/unstable/http/HttpClient").HttpClient>;
13
+ export declare const firewallAliasHandlers: {
14
+ list: () => Effect.Effect<never[], never, never>;
15
+ read: ({ olds }: {
16
+ olds: FirewallAliasProps;
17
+ }) => Effect.Effect<{
18
+ cidr: string;
19
+ comment: string;
20
+ ipversion: number;
21
+ name: string;
22
+ } | undefined, Error | import("./distilled-pve.ts").PveClusterExhausted | import("./credential-errors.ts").PveCredentialDenied | import("effect/Cause").TimeoutError | cluster.ProxmoxOpError, import("effect/unstable/http/HttpClient").HttpClient>;
23
+ diff: (args_0: {
24
+ news: Input<FirewallAliasProps>;
25
+ output: FirewallAliasAttributes | undefined;
26
+ }) => Effect.Effect<{
27
+ readonly action: 'replace';
28
+ } | {
29
+ readonly action: "noop" | "update";
30
+ } | undefined, Error | import("effect/unstable/http/HttpClientError").HttpClientError | import("./credential-errors.ts").PveCredentialDenied, import("effect/unstable/http/HttpClient").HttpClient>;
31
+ reconcile: (args_0: {
32
+ news: FirewallAliasProps;
33
+ }) => Effect.Effect<{
34
+ cidr: string;
35
+ comment: string;
36
+ ipversion: number;
37
+ name: string;
38
+ }, Error | import("effect/unstable/http/HttpClientError").HttpClientError | import("./credential-errors.ts").PveCredentialDenied, import("effect/unstable/http/HttpClient").HttpClient>;
39
+ delete: ({ olds }: {
40
+ olds: FirewallAliasProps;
41
+ }) => Effect.Effect<cluster.DeleteClusterFirewallAliasResponse, Error | import("./distilled-pve.ts").PveClusterExhausted | import("./credential-errors.ts").PveCredentialDenied | import("effect/Cause").TimeoutError | cluster.ProxmoxOpError, import("effect/unstable/http/HttpClient").HttpClient>;
42
+ };
43
+ //# sourceMappingURL=firewall-alias-lifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"firewall-alias-lifecycle.d.ts","sourceRoot":"","sources":["../../src/proxmox/firewall-alias-lifecycle.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,KAAK,OAAO,MAAM,kCAAkC,CAAC;AAE5D,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AASvF,eAAO,MAAM,iBAAiB,UAAW,kBAAkB;;;;;oPA0BxD,CAAC;AAEJ,+FAA+F;AAC/F,eAAO,MAAM,mBAAmB,UAAW,kBAAkB,oSACsC,CAAC;AAEpG,eAAO,MAAM,qBAAqB;IAChC,IAAI;IACJ,IAAI,aAAa;QAAE,IAAI,EAAE,kBAAkB,CAAA;KAAE;;;;;;IAC7C,IAAI;cAII,KAAK,CAAC,kBAAkB,CAAC;gBACvB,uBAAuB,GAAG,SAAS;;yBAOiB,SAAS;;;;IAQvE,SAAS;cAAyC,kBAAkB;;;;;;;IA4BpE,MAAM,aAAa;QAAE,IAAI,EAAE,kBAAkB,CAAA;KAAE;CAChD,CAAC"}
@@ -94,7 +94,7 @@
94
94
  */
95
95
  import { Resource } from 'alchemy';
96
96
  import * as Provider from 'alchemy/Provider';
97
- import { type PveRequirements, type WithTarget } from './resource.ts';
97
+ import type { PveRequirements, WithTarget } from './resource-spec.ts';
98
98
  export interface FirewallAliasProps extends WithTarget {
99
99
  /**
100
100
  * PVE's `pve-fw-alias`: a letter, then at least one more of letter/digit/`-`/`_`, to 64 chars.
@@ -130,12 +130,6 @@ export interface FirewallAliasAttributes {
130
130
  export interface ProxmoxFirewallAlias extends Resource<'Proxmox.FirewallAlias', FirewallAliasProps, FirewallAliasAttributes, never, PveRequirements> {
131
131
  }
132
132
  export declare const ProxmoxFirewallAlias: import("alchemy").ResourceClass<ProxmoxFirewallAlias>;
133
- /**
134
- * ⛔ ONE HANDLER IS OVERRIDDEN AND THE REST COME FROM THE FACTORY, for the reason `acl.ts` spells
135
- * out at length: the factory answers `replace` only for an object with no update path, and this
136
- * one has a PUT. Left to delegate, a changed `name` would read absent at the new path, plan as an
137
- * update, and quietly leave the old alias behind. Everything else — the empty `list`, the read,
138
- * the read-back-guarded reconcile, the delete — is the factory's, unchanged.
139
- */
133
+ /** Named distilled operations preserve create-first identity replacement and explicit adoption. */
140
134
  export declare const ProxmoxFirewallAliasProvider: () => import("effect/Layer").Layer<Provider.Provider<ProxmoxFirewallAlias>, never, import("effect/unstable/http/HttpClient").HttpClient>;
141
135
  //# sourceMappingURL=firewall-alias.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"firewall-alias.d.ts","sourceRoot":"","sources":["../../src/proxmox/firewall-alias.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6FG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,OAAO,KAAK,QAAQ,MAAM,kBAAkB,CAAC;AAG7C,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,UAAU,EAAe,MAAM,eAAe,CAAC;AAGnF,MAAM,WAAW,kBAAmB,SAAQ,UAAU;IACpD;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,6FAA6F;IAC7F,IAAI,EAAE,MAAM,CAAC;IACb,oFAAoF;IACpF,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAqB,SAAQ,QAAQ,CACpD,uBAAuB,EACvB,kBAAkB,EAClB,uBAAuB,EACvB,KAAK,EACL,eAAe,CAChB;CAAG;AAEJ,eAAO,MAAM,oBAAoB,uDAA0D,CAAC;AA4C5F;;;;;;GAMG;AACH,eAAO,MAAM,4BAA4B,0IAiBtC,CAAC"}
1
+ {"version":3,"file":"firewall-alias.d.ts","sourceRoot":"","sources":["../../src/proxmox/firewall-alias.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6FG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,KAAK,QAAQ,MAAM,kBAAkB,CAAC;AAE7C,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGtE,MAAM,WAAW,kBAAmB,SAAQ,UAAU;IACpD;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,6FAA6F;IAC7F,IAAI,EAAE,MAAM,CAAC;IACb,oFAAoF;IACpF,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAqB,SAAQ,QAAQ,CACpD,uBAAuB,EACvB,kBAAkB,EAClB,uBAAuB,EACvB,KAAK,EACL,eAAe,CAChB;CAAG;AAEJ,eAAO,MAAM,oBAAoB,uDAA0D,CAAC;AAE5F,mGAAmG;AACnG,eAAO,MAAM,4BAA4B,0IAItC,CAAC"}