paratix 0.5.0 → 0.7.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.
@@ -54,6 +54,8 @@ type ModuleResult = {
54
54
  * @internal
55
55
  */
56
56
  _stopRun?: true;
57
+ /** Optional short detail appended to the printed module status line. */
58
+ detail?: string;
57
59
  /** Optional error details consumed by the runner for centralized CLI output. */
58
60
  error?: Error;
59
61
  /** Optional typed meta entries for env propagation and runner control-plane updates. */
@@ -1,4 +1,4 @@
1
- import { M as Module } from './types-BPzPHfax.js';
1
+ import { M as Module } from './types-Cl2Muw1x.js';
2
2
 
3
3
  /**
4
4
  * Modules for Debian/Ubuntu-specific apt configuration.
@@ -894,22 +894,75 @@ declare const pkg: {
894
894
  };
895
895
 
896
896
  type QuadletAutoUpdate = "local" | "registry";
897
+ type QuadletHealthOnFailure = "kill" | "none" | "restart" | "stop";
898
+ type QuadletPullPolicy = "always" | "missing" | "never" | "newer";
897
899
  type QuadletRestartPolicy = "always" | "no" | "on-abnormal" | "on-abort" | "on-failure" | "on-success" | "on-watchdog";
898
900
  type QuadletContainerOptions = {
901
+ addCapability?: string[];
902
+ addDevice?: string[];
903
+ annotation?: Record<string, string>;
899
904
  autoUpdate?: QuadletAutoUpdate;
900
905
  containerName?: string;
901
906
  description?: string;
907
+ dns?: string[];
908
+ dnsOption?: string[];
909
+ dnsSearch?: string[];
910
+ dropCapability?: string[];
911
+ entrypoint?: string[];
902
912
  environment?: Record<string, string>;
913
+ environmentFiles?: string[];
903
914
  exec?: string[];
915
+ exposeHostPort?: string[];
916
+ groupAdd?: string[];
917
+ healthCmd?: string;
918
+ healthInterval?: string;
919
+ healthOnFailure?: QuadletHealthOnFailure;
920
+ healthRetries?: number;
921
+ healthStartPeriod?: string;
922
+ healthTimeout?: string;
923
+ hostName?: string;
904
924
  image: string;
925
+ ip?: string;
926
+ ip6?: string;
927
+ label?: Record<string, string>;
928
+ logDriver?: string;
929
+ mask?: string[];
930
+ mount?: string[];
905
931
  name: string;
906
932
  networks?: string[];
933
+ noNewPrivileges?: boolean;
934
+ notify?: boolean;
907
935
  podmanArgs?: string[];
908
936
  publishPorts?: string[];
937
+ pull?: QuadletPullPolicy;
938
+ readOnly?: boolean;
909
939
  restart?: QuadletRestartPolicy;
940
+ runInit?: boolean;
941
+ seccompProfile?: string;
942
+ secret?: string[];
943
+ securityLabelDisable?: boolean;
944
+ securityLabelType?: string;
945
+ stopTimeout?: number;
946
+ sysctl?: Record<string, string>;
947
+ timeoutStartSec?: number;
948
+ timeoutStopSec?: number;
949
+ timezone?: string;
950
+ tmpfs?: string[];
951
+ ulimit?: string[];
952
+ unmask?: string[];
953
+ user?: string;
954
+ userNs?: string;
910
955
  volumes?: string[];
911
956
  wantedBy?: string;
957
+ workingDir?: string;
912
958
  };
959
+ type QuadletImageUpdateOptions = {
960
+ authFile?: string;
961
+ image: string;
962
+ name: string;
963
+ serviceName?: string;
964
+ };
965
+
913
966
  /**
914
967
  * Modules for managing Podman Quadlet definitions.
915
968
  *
@@ -925,22 +978,20 @@ declare const quadlet: {
925
978
  * and `service.running(name)`.
926
979
  *
927
980
  * @param options - Configuration for the Quadlet container definition.
928
- * @param options.name - Quadlet base name without `.container`.
929
- * @param options.image - Container image reference.
930
- * @param options.description - Optional systemd unit description.
931
- * @param options.containerName - Optional explicit Podman container name.
932
- * @param options.autoUpdate - Optional Podman auto-update policy.
933
- * @param options.environment - Optional environment variables.
934
- * @param options.exec - Optional command and arguments for `Exec=`.
935
- * @param options.networks - Optional `Network=` entries.
936
- * @param options.podmanArgs - Optional `PodmanArgs=` entries.
937
- * @param options.publishPorts - Optional `PublishPort=` entries.
938
- * @param options.restart - Optional `Restart=` policy in the `[Container]` section.
939
- * @param options.volumes - Optional `Volume=` entries.
940
- * @param options.wantedBy - Optional install target. Defaults to `multi-user.target`.
941
981
  * @returns A Module that ensures the Quadlet file is present and up to date.
942
982
  */
943
983
  container(options: QuadletContainerOptions): Module;
984
+ /**
985
+ * Pull the latest image for a Quadlet-managed container and restart the service
986
+ * only when the image changed.
987
+ *
988
+ * Accepts the same `name` and `image` fields as `quadlet.container(...)`, so a
989
+ * shared config object can drive both deployment and targeted image refreshes.
990
+ *
991
+ * @param options - Image pull and restart configuration for the Quadlet service.
992
+ * @returns A Module that updates the image and conditionally restarts the service.
993
+ */
994
+ updateImage(options: QuadletImageUpdateOptions): Module;
944
995
  };
945
996
 
946
997
  /**
package/llm-guide.md CHANGED
@@ -236,9 +236,10 @@ Import with renaming: `import { package as pkg } from "paratix/modules"`. The wo
236
236
 
237
237
  ### `quadlet`
238
238
 
239
- | Method | Signature | Idempotent |
240
- | ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- |
241
- | `quadlet.container` | `(options: { autoUpdate?: "local" \| "registry"; containerName?: string; description?: string; environment?: Record<string, string>; exec?: string[]; image: string; name: string; networks?: string[]; podmanArgs?: string[]; publishPorts?: string[]; restart?: string; volumes?: string[]; wantedBy?: string }): Module` | Yes |
239
+ | Method | Signature | Idempotent |
240
+ | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------- |
241
+ | `quadlet.container` | `(options: { addCapability?: string[]; addDevice?: string[]; annotation?: Record<string, string>; autoUpdate?: "local" \| "registry"; containerName?: string; description?: string; dns?: string[]; dnsOption?: string[]; dnsSearch?: string[]; dropCapability?: string[]; entrypoint?: string[]; environment?: Record<string, string>; environmentFiles?: string[]; exec?: string[]; exposeHostPort?: string[]; groupAdd?: string[]; healthCmd?: string; healthInterval?: string; healthOnFailure?: "kill" \| "none" \| "restart" \| "stop"; healthRetries?: number; healthStartPeriod?: string; healthTimeout?: string; hostName?: string; image: string; ip?: string; ip6?: string; label?: Record<string, string>; logDriver?: string; mask?: string[]; mount?: string[]; name: string; networks?: string[]; noNewPrivileges?: boolean; notify?: boolean; podmanArgs?: string[]; publishPorts?: string[]; pull?: "always" \| "missing" \| "never" \| "newer"; readOnly?: boolean; restart?: "always" \| "no" \| "on-abnormal" \| "on-abort" \| "on-failure" \| "on-success" \| "on-watchdog"; runInit?: boolean; secret?: string[]; seccompProfile?: string; securityLabelDisable?: boolean; securityLabelType?: string; stopTimeout?: number; sysctl?: Record<string, string>; timeoutStartSec?: number; timeoutStopSec?: number; timezone?: string; tmpfs?: string[]; ulimit?: string[]; unmask?: string[]; user?: string; userNs?: string; volumes?: string[]; wantedBy?: string; workingDir?: string }): Module` | Yes |
242
+ | `quadlet.updateImage` | `(options: { authFile?: string; image: string; name: string; serviceName?: string }): Module` — returns `changed` with the new image ID in parentheses when a newer image was pulled | Partial |
242
243
 
243
244
  ### `releaseUpgrade`
244
245
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "paratix",
3
- "version": "0.5.0",
3
+ "version": "0.7.0",
4
4
  "description": "Idempotent VPS setup tool in TypeScript",
5
5
  "type": "module",
6
6
  "files": [