paratix 0.7.0 → 0.9.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/llm-guide.md CHANGED
@@ -133,7 +133,7 @@ export default server({
133
133
  | Method | Signature | Idempotent |
134
134
  | ----------------- | ---------------------------------------------------------------------------------------- | -------------------- |
135
135
  | `apt.debconf` | `(packageName: string, selections: Record<string, string>): Module` | Yes |
136
- | `apt.distUpgrade` | `(date: string): Module` | Yes (versioned flag) |
136
+ | `apt.distUpgrade` | `(date: string, options?: UpgradeOptions): Module` | Yes (versioned flag) |
137
137
  | `apt.key` | `(name: string, url: string, options: { fingerprint: string }): Module` | Yes |
138
138
  | `apt.repository` | `(nameOrPpa: string, source?: string, options?: { signedBy?: false \| string }): Module` | Yes |
139
139
 
@@ -227,19 +227,39 @@ export default server({
227
227
 
228
228
  Import with renaming: `import { package as pkg } from "paratix/modules"`. The word `package` is reserved in JavaScript, so you must alias it.
229
229
 
230
- | Method | Signature | Idempotent |
231
- | ------------------- | --------------------------------- | -------------------- |
232
- | `package.installed` | `(...packages: string[]): Module` | Yes |
233
- | `package.absent` | `(...packages: string[]): Module` | Yes |
234
- | `package.update` | `(date: string): Module` | Yes (versioned flag) |
235
- | `package.upgrade` | `(date: string): Module` | Yes (versioned flag) |
230
+ | Method | Signature | Idempotent |
231
+ | ------------------- | ------------------------------------------------------------------ | -------------------- |
232
+ | `package.installed` | `(...packagesAndOptions: Array<string \| UpgradeOptions>): Module` | Yes |
233
+ | `package.absent` | `(...packagesAndOptions: Array<string \| UpgradeOptions>): Module` | Yes |
234
+ | `package.update` | `(date: string, options?: UpgradeOptions): Module` | Yes (versioned flag) |
235
+ | `package.upgrade` | `(date: string, options?: UpgradeOptions): Module` | Yes (versioned flag) |
236
+
237
+ #### `UpgradeOptions`
238
+
239
+ ```typescript
240
+ type UpgradeOptions = {
241
+ timeout?: number // Override SSH command timeout (ms). Same value applies to every step
242
+ // of multi-step pipelines (apt upgrade, apk upgrade, apt dist-upgrade).
243
+ }
244
+ ```
245
+
246
+ For `package.installed` / `package.absent`, pass the options object as the **last** argument
247
+ after the package names; existing variadic call sites such as `pkg.installed("git", "curl")`
248
+ keep working unchanged. Use a longer `timeout` for slow operations on production servers
249
+ with large update backlogs:
250
+
251
+ ```typescript
252
+ pkg.upgrade("2026-05-01", { timeout: 900_000 })
253
+ pkg.installed("texlive-full", { timeout: 900_000 })
254
+ apt.distUpgrade("2026-05-01", { timeout: 1_200_000 })
255
+ ```
236
256
 
237
257
  ### `quadlet`
238
258
 
239
259
  | Method | Signature | Idempotent |
240
260
  | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------- |
241
261
  | `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 |
262
+ | `quadlet.updateImage` | `(options: { authFile?: string; image: string; name: string; serviceName?: string }): Module` — returns `changed` with the new registry digest (or local image ID fallback) in parentheses when a newer image was pulled | Partial |
243
263
 
244
264
  ### `releaseUpgrade`
245
265
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "paratix",
3
- "version": "0.7.0",
3
+ "version": "0.9.0",
4
4
  "description": "Idempotent VPS setup tool in TypeScript",
5
5
  "type": "module",
6
6
  "files": [