@homeflare/alchemy 0.40.0 → 0.41.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 (77) hide show
  1. package/dist/caddy/index.js.map +2 -2
  2. package/dist/ceph/index.js +2 -1
  3. package/dist/ceph/index.js.map +3 -3
  4. package/dist/launchd/fake-runner.d.ts.map +1 -1
  5. package/dist/launchd/index.d.ts +1 -1
  6. package/dist/launchd/index.d.ts.map +1 -1
  7. package/dist/launchd/index.js +7 -1
  8. package/dist/launchd/index.js.map +5 -5
  9. package/dist/launchd/local-runner.d.ts.map +1 -1
  10. package/dist/launchd/runner.d.ts +21 -0
  11. package/dist/launchd/runner.d.ts.map +1 -1
  12. package/dist/launchd/sudo-runner.d.ts.map +1 -1
  13. package/dist/linux/directory-lifecycle.d.ts.map +1 -1
  14. package/dist/linux/fake-linux-host.d.ts.map +1 -1
  15. package/dist/linux/index.d.ts +1 -1
  16. package/dist/linux/index.d.ts.map +1 -1
  17. package/dist/linux/index.js +16 -4
  18. package/dist/linux/index.js.map +7 -7
  19. package/dist/linux/ssh-runner.d.ts.map +1 -1
  20. package/dist/linux/sudo-runner.d.ts.map +1 -1
  21. package/dist/opnsense/alias-form.d.ts +14 -1
  22. package/dist/opnsense/alias-form.d.ts.map +1 -1
  23. package/dist/opnsense/alias.d.ts +1 -1
  24. package/dist/opnsense/alias.d.ts.map +1 -1
  25. package/dist/opnsense/group-form.d.ts +8 -2
  26. package/dist/opnsense/group-form.d.ts.map +1 -1
  27. package/dist/opnsense/group.d.ts +1 -1
  28. package/dist/opnsense/group.d.ts.map +1 -1
  29. package/dist/opnsense/index.js +15 -7
  30. package/dist/opnsense/index.js.map +7 -7
  31. package/dist/opnsense/wire.d.ts +42 -12
  32. package/dist/opnsense/wire.d.ts.map +1 -1
  33. package/dist/proxmox/index.js +48 -34
  34. package/dist/proxmox/index.js.map +7 -6
  35. package/dist/proxmox/storage-form.d.ts +28 -3
  36. package/dist/proxmox/storage-form.d.ts.map +1 -1
  37. package/dist/proxmox/storage-plugin-options.d.ts +2 -0
  38. package/dist/proxmox/storage-plugin-options.d.ts.map +1 -0
  39. package/dist/proxmox/storage-wire.d.ts +28 -1
  40. package/dist/proxmox/storage-wire.d.ts.map +1 -1
  41. package/dist/proxmox/storage.d.ts +6 -1
  42. package/dist/proxmox/storage.d.ts.map +1 -1
  43. package/dist/release/index.d.ts +1 -1
  44. package/dist/release/index.d.ts.map +1 -1
  45. package/dist/release/index.js.map +2 -2
  46. package/docs/distilled-interim.md +7 -0
  47. package/docs/launchd.md +5 -3
  48. package/docs/provider-standard.md +5 -1
  49. package/docs/talos-argocd-dogfood.md +160 -0
  50. package/package.json +2 -2
  51. package/src/launchd/fake-runner.ts +2 -0
  52. package/src/launchd/index.ts +8 -1
  53. package/src/launchd/local-runner.ts +16 -1
  54. package/src/launchd/runner.ts +22 -0
  55. package/src/launchd/sudo-runner.ts +3 -0
  56. package/src/linux/directory-lifecycle.ts +18 -3
  57. package/src/linux/directory-sudo.test.ts +59 -0
  58. package/src/linux/directory.test.ts +34 -8
  59. package/src/linux/fake-linux-host.ts +2 -0
  60. package/src/linux/index.ts +1 -0
  61. package/src/linux/ssh-runner.ts +4 -0
  62. package/src/linux/sudo-runner.ts +3 -0
  63. package/src/opnsense/alias-form.test.ts +24 -12
  64. package/src/opnsense/alias-form.ts +20 -7
  65. package/src/opnsense/alias.test.ts +13 -6
  66. package/src/opnsense/alias.ts +16 -10
  67. package/src/opnsense/group-form.test.ts +12 -8
  68. package/src/opnsense/group-form.ts +13 -4
  69. package/src/opnsense/group.test.ts +18 -7
  70. package/src/opnsense/group.ts +10 -3
  71. package/src/opnsense/wire.ts +57 -12
  72. package/src/proxmox/storage-form.ts +48 -8
  73. package/src/proxmox/storage-plugin-options.ts +45 -0
  74. package/src/proxmox/storage-update.test.ts +183 -0
  75. package/src/proxmox/storage-wire.ts +54 -7
  76. package/src/proxmox/storage.ts +18 -6
  77. package/src/release/index.ts +1 -0
@@ -58,7 +58,28 @@ export type HostUser = {
58
58
  readonly gid: number;
59
59
  readonly home: string;
60
60
  };
61
+ /**
62
+ * The two host families a HostRunner ever actually targets. ★ Not `NodeJS.Platform`: nothing
63
+ * here runs against `win32`/`aix`/etc, and a narrower type is what makes `runner.platform ===
64
+ * 'darwin'` exhaustive rather than a string comparison that silently matches nothing.
65
+ */
66
+ export type HostPlatform = 'darwin' | 'linux';
61
67
  export interface HostRunner {
68
+ /**
69
+ * ⛔ DECLARED, NEVER INFERRED — same rule as `privileged`, and the same failure mode. The OS of
70
+ * the TARGET this runner writes to, never of the process running Alchemy: `localRunner()` may
71
+ * run ON either, but `sshRunner()`/`sshSudoRunner()` always reach a Linux host from wherever
72
+ * Alchemy itself happens to run.
73
+ * 🔴 INCIDENT, homeflare-ct100 2026-09-27: `Host.Directory`'s chmod/chown end-of-options token
74
+ * (directory-lifecycle.ts `chmodChownEnd`) read `process.platform` — the Mac mini's own OS —
75
+ * instead of the runner's target. Deploying from the Mac to CT100 (a Debian LXC over
76
+ * `sshSudoRunner`) dropped GNU's required `--`, and `sudo-allowlist-dir.ts`'s `dirProgramProblem`
77
+ * refused every chown with `SudoRefusedError` even though the path was under a declared prefix.
78
+ * `localRunner()`'s own local deploys never showed it: there, `process.platform` and the
79
+ * target happen to be the same machine. This field is the fix: every call site that needs to
80
+ * know the target's OS reads `runner.platform`, never `process.platform`.
81
+ */
82
+ readonly platform: HostPlatform;
62
83
  /**
63
84
  * ⛔ DECLARED, NEVER INFERRED. `true` only when this runner can do every root-needing call the
64
85
  * providers make of it: every call already runs as root (a runner that talks to a root helper,
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/launchd/runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/launchd/runner.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sudo-runner.d.ts","sourceRoot":"","sources":["../../src/launchd/sudo-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,OAAO,EAAE,KAAK,kBAAkB,EAAe,MAAM,mBAAmB,CAAC;AACzE,OAAO,KAAK,EAAc,UAAU,EAAgB,MAAM,aAAa,CAAC;AACxE,OAAO,EAIL,gBAAgB,EAMjB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,KAAK,MAAM,EAAa,MAAM,iBAAiB,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAE5B,MAAM,MAAM,iBAAiB,GAAG,kBAAkB,GAAG;IACnD;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,uFAAuF;IACvF,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC,CAAC;AAEF,iGAAiG;AACjG,MAAM,MAAM,QAAQ,GAAG;IACrB,gFAAgF;IAChF,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACvD,sFAAsF;IACtF,QAAQ,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;IAC9D,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC,CAAC;AAEF,eAAO,MAAM,cAAc,eAAgB,SAAS,MAAM,EAAE,QAAQ,QAAQ,KAAG,UAgI9E,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,UAAU,YAAa,iBAAiB,KAAG,UAYvD,CAAC"}
1
+ {"version":3,"file":"sudo-runner.d.ts","sourceRoot":"","sources":["../../src/launchd/sudo-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,OAAO,EAAE,KAAK,kBAAkB,EAAe,MAAM,mBAAmB,CAAC;AACzE,OAAO,KAAK,EAAc,UAAU,EAAgB,MAAM,aAAa,CAAC;AACxE,OAAO,EAIL,gBAAgB,EAMjB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,KAAK,MAAM,EAAa,MAAM,iBAAiB,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAE5B,MAAM,MAAM,iBAAiB,GAAG,kBAAkB,GAAG;IACnD;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,uFAAuF;IACvF,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC,CAAC;AAEF,iGAAiG;AACjG,MAAM,MAAM,QAAQ,GAAG;IACrB,gFAAgF;IAChF,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACvD,sFAAsF;IACtF,QAAQ,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;IAC9D,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC,CAAC;AAEF,eAAO,MAAM,cAAc,eAAgB,SAAS,MAAM,EAAE,QAAQ,QAAQ,KAAG,UAmI9E,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,UAAU,YAAa,iBAAiB,KAAG,UAYvD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"directory-lifecycle.d.ts","sourceRoot":"","sources":["../../src/linux/directory-lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,KAAK,UAAU,EAAgB,MAAM,sBAAsB,CAAC;AAErE,MAAM,WAAW,kBAAkB;IACjC,6FAA6F;IAC7F,IAAI,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED,eAAO,MAAM,gBAAgB,MAAQ,CAAC;AAEtC,eAAO,MAAM,MAAM,SAAU,MAAM,WAAW,MAAM,KAAG,KACN,CAAC;AAYlD,eAAO,MAAM,iBAAiB,UAAW,kBAAkB,KAAG,MAAM,EAMnE,CAAC;AA2BF,eAAO,MAAM,aAAa,WAChB,UAAU,QACZ,MAAM,KACX,OAAO,CAAC,uBAAuB,GAAG,SAAS,CAI7C,CAAC;AA0BF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,WACrB,UAAU,SACX,kBAAkB,WAChB,uBAAuB,sBAE/B,OAAO,CAAC,uBAAuB,CAyDjC,CAAC;AAYF;;;;GAIG;AACH,eAAO,MAAM,aAAa,WAChB,UAAU,QACZ,kBAAkB,UAChB,uBAAuB,KAC9B,OAAO,CAAC,IAAI,CAed,CAAC;AAEF,mGAAmG;AACnG,eAAO,MAAM,eAAe,WAClB,UAAU,UACV,uBAAuB,KAC9B,OAAO,CAAC,IAAI,CAMd,CAAC"}
1
+ {"version":3,"file":"directory-lifecycle.d.ts","sourceRoot":"","sources":["../../src/linux/directory-lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,KAAK,UAAU,EAAgB,MAAM,sBAAsB,CAAC;AAErE,MAAM,WAAW,kBAAkB;IACjC,6FAA6F;IAC7F,IAAI,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED,eAAO,MAAM,gBAAgB,MAAQ,CAAC;AAEtC,eAAO,MAAM,MAAM,SAAU,MAAM,WAAW,MAAM,KAAG,KACN,CAAC;AAYlD,eAAO,MAAM,iBAAiB,UAAW,kBAAkB,KAAG,MAAM,EAMnE,CAAC;AA2BF,eAAO,MAAM,aAAa,WAChB,UAAU,QACZ,MAAM,KACX,OAAO,CAAC,uBAAuB,GAAG,SAAS,CAI7C,CAAC;AAoCF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,WACrB,UAAU,SACX,kBAAkB,WAChB,uBAAuB,sBAE/B,OAAO,CAAC,uBAAuB,CA8DjC,CAAC;AAYF;;;;GAIG;AACH,eAAO,MAAM,aAAa,WAChB,UAAU,QACZ,kBAAkB,UAChB,uBAAuB,KAC9B,OAAO,CAAC,IAAI,CAed,CAAC;AAEF,mGAAmG;AACnG,eAAO,MAAM,eAAe,WAClB,UAAU,UACV,uBAAuB,KAC9B,OAAO,CAAC,IAAI,CAMd,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"fake-linux-host.d.ts","sourceRoot":"","sources":["../../src/linux/fake-linux-host.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,KAAK,SAAS,EAAe,MAAM,mBAAmB,CAAC;AAChE,OAAO,KAAK,EAEV,QAAQ,EACR,UAAU,EACV,QAAQ,EAET,MAAM,sBAAsB,CAAC;AAE9B,KAAK,KAAK,GAAG;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;CAAE,CAAC;AAEnG,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kGAAkG;IAClG,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,6FAA6F;IAC7F,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAUF,eAAO,MAAM,aAAa,aAAa,gBAAgB;;;uBAsJ3B,MAAM;;;cApIM,MAAM;aAAO,MAAM;aAAO,MAAM;;sBA8G7C,MAAM,QAAQ,MAAM,UAAS,OAAO,CAAC,SAAS,CAAC;;;CA2BzE,CAAC"}
1
+ {"version":3,"file":"fake-linux-host.d.ts","sourceRoot":"","sources":["../../src/linux/fake-linux-host.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,KAAK,SAAS,EAAe,MAAM,mBAAmB,CAAC;AAChE,OAAO,KAAK,EAEV,QAAQ,EACR,UAAU,EACV,QAAQ,EAET,MAAM,sBAAsB,CAAC;AAE9B,KAAK,KAAK,GAAG;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;CAAE,CAAC;AAEnG,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kGAAkG;IAClG,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,6FAA6F;IAC7F,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAUF,eAAO,MAAM,aAAa,aAAa,gBAAgB;;;uBAwJ3B,MAAM;;;cAtIM,MAAM;aAAO,MAAM;aAAO,MAAM;;sBAgH7C,MAAM,QAAQ,MAAM,UAAS,OAAO,CAAC,SAAS,CAAC;;;CA2BzE,CAAC"}
@@ -21,7 +21,7 @@ export type { SshRunnerOptions } from './ssh-runner.ts';
21
21
  export { sshRunner } from './ssh-runner.ts';
22
22
  export type { SshSudoRunnerOptions } from './sudo-runner.ts';
23
23
  export { sshSudoRunner } from './sudo-runner.ts';
24
- export type { ExecResult, FileStat, HostRunner, HostUser, WriteOptions, } from '../launchd/runner.ts';
24
+ export type { ExecResult, FileStat, HostPlatform, HostRunner, HostUser, WriteOptions, } from '../launchd/runner.ts';
25
25
  export { HostRunnerService, canActAsRoot, hostRunnerLayer } from '../launchd/runner.ts';
26
26
  export type { SystemdUnitAttributes, SystemdUnitProps, UnitSection } from './unit-form.ts';
27
27
  export { DEFAULT_UNIT_DIRECTORY, renderUnit } from './unit-form.ts';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/linux/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,YAAY,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC5F,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,YAAY,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAClE,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EACV,UAAU,EACV,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,YAAY,GACb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACxF,YAAY,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC3F,OAAO,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACjG,YAAY,EACV,gBAAgB,EAChB,yBAAyB,EACzB,oBAAoB,EACpB,cAAc,GACf,MAAM,gBAAgB,CAAC;AAUxB,OAAO,EACL,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,EAC1B,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/linux/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,YAAY,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC5F,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,YAAY,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAClE,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EACV,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,YAAY,GACb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACxF,YAAY,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC3F,OAAO,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACjG,YAAY,EACV,gBAAgB,EAChB,yBAAyB,EACzB,oBAAoB,EACpB,cAAc,GACf,MAAM,gBAAgB,CAAC;AAUxB,OAAO,EACL,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,EAC1B,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -326,7 +326,7 @@ var readDirectory = async (runner, path) => {
326
326
  return { gid: stat.gid, mode: stat.mode, path, uid: stat.uid };
327
327
  };
328
328
  var octal = (mode) => mode.toString(8).padStart(3, "0");
329
- var chmodChownEnd = () => process.platform === "darwin" ? [] : ["--"];
329
+ var chmodChownEnd = (runner) => runner.platform === "darwin" ? [] : ["--"];
330
330
  var must = async (runner, path, argv) => {
331
331
  const result = await runner.exec(argv);
332
332
  if (result.exitCode !== 0) {
@@ -356,11 +356,16 @@ var reconcileDirectory = async (runner, props, output, adopt = false) => {
356
356
  }
357
357
  await must(runner, props.path, ["mkdir", "-m", octal(want.mode), "--", props.path]);
358
358
  } else if (stat.mode !== want.mode) {
359
- await must(runner, props.path, ["chmod", octal(want.mode), ...chmodChownEnd(), props.path]);
359
+ await must(runner, props.path, [
360
+ "chmod",
361
+ octal(want.mode),
362
+ ...chmodChownEnd(runner),
363
+ props.path
364
+ ]);
360
365
  }
361
366
  const owner = ownerMatches({ gid: stat?.gid ?? -1, mode: 0, path: props.path, uid: stat?.uid ?? -1 }, want) ? undefined : ownerArg(want);
362
367
  if (owner !== undefined)
363
- await must(runner, props.path, ["chown", owner, ...chmodChownEnd(), props.path]);
368
+ await must(runner, props.path, ["chown", owner, ...chmodChownEnd(runner), props.path]);
364
369
  const after = await readDirectory(runner, props.path);
365
370
  if (after === undefined || after.mode !== want.mode || !ownerMatches(after, want)) {
366
371
  throw refuse(props.path, "the directory on the host does not match the declaration");
@@ -1977,6 +1982,7 @@ var sshRunner = async (options) => {
1977
1982
  const result = await run2(execScript(userQuery("linux", nameOrId)));
1978
1983
  return result.exitCode === 0 ? parseUser("linux", result.stdout) : undefined;
1979
1984
  },
1985
+ platform: "linux",
1980
1986
  privileged: false,
1981
1987
  readFile: async (path) => {
1982
1988
  const result = await run2(readScript(path));
@@ -2082,6 +2088,10 @@ var writeAtomic = async (path, bytes, options) => {
2082
2088
  var localRunner = (options = {}) => {
2083
2089
  const timeoutMs = options.execTimeoutMs ?? 120000;
2084
2090
  const platform = process.platform;
2091
+ if (platform !== "darwin" && platform !== "linux") {
2092
+ throw new Error(`localRunner(): unsupported process.platform ${JSON.stringify(platform)} — HostRunner only targets darwin and linux.`);
2093
+ }
2094
+ const hostPlatform = platform;
2085
2095
  return {
2086
2096
  effectiveUid: () => process.geteuid?.() ?? -1,
2087
2097
  exec: (argv) => run2(argv, timeoutMs),
@@ -2093,6 +2103,7 @@ var localRunner = (options = {}) => {
2093
2103
  const result = await run2(userQuery(platform, nameOrId), timeoutMs);
2094
2104
  return result.exitCode === 0 ? parseUser(platform, result.stdout) : undefined;
2095
2105
  },
2106
+ platform: hostPlatform,
2096
2107
  privileged: false,
2097
2108
  readFile: async (path) => {
2098
2109
  try {
@@ -3108,6 +3119,7 @@ var makeSshSudoRunner = (prefixList, deps) => {
3108
3119
  },
3109
3120
  lookupGroup: (nameOrId) => base.lookupGroup(nameOrId),
3110
3121
  lookupUser: (nameOrId) => base.lookupUser(nameOrId),
3122
+ platform: base.platform,
3111
3123
  privileged: true,
3112
3124
  readFile: (path) => base.readFile(path),
3113
3125
  removeFile: async (path) => {
@@ -3179,5 +3191,5 @@ export {
3179
3191
  sshSudoRunner
3180
3192
  };
3181
3193
 
3182
- //# debugId=47589007F27006E864756E2164756E21
3194
+ //# debugId=FC64D3BA27924E4164756E2164756E21
3183
3195
  //# sourceMappingURL=index.js.map