@intentic/providers 1.326.0 → 1.327.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 (184) hide show
  1. package/README.md +4 -1
  2. package/dist/auth/authentik.d.ts +1 -1
  3. package/dist/auth/authentik.d.ts.map +1 -1
  4. package/dist/auth/authentik.js +5 -6
  5. package/dist/auth/authentik.js.map +1 -1
  6. package/dist/backings/garage-bucket.d.ts +1 -1
  7. package/dist/backings/garage-bucket.d.ts.map +1 -1
  8. package/dist/backings/garage-bucket.js +1 -2
  9. package/dist/backings/garage-bucket.js.map +1 -1
  10. package/dist/backings/garage.d.ts +1 -1
  11. package/dist/backings/garage.d.ts.map +1 -1
  12. package/dist/backings/garage.js +6 -6
  13. package/dist/backings/garage.js.map +1 -1
  14. package/dist/backings/postgres-database.d.ts +1 -1
  15. package/dist/backings/postgres-database.d.ts.map +1 -1
  16. package/dist/backings/postgres-database.js +1 -2
  17. package/dist/backings/postgres-database.js.map +1 -1
  18. package/dist/backings/postgres.d.ts +1 -1
  19. package/dist/backings/postgres.d.ts.map +1 -1
  20. package/dist/backings/postgres.js +6 -6
  21. package/dist/backings/postgres.js.map +1 -1
  22. package/dist/backings/valkey-namespace.d.ts +1 -1
  23. package/dist/backings/valkey-namespace.d.ts.map +1 -1
  24. package/dist/backings/valkey-namespace.js +1 -2
  25. package/dist/backings/valkey-namespace.js.map +1 -1
  26. package/dist/backings/valkey.d.ts +1 -1
  27. package/dist/backings/valkey.d.ts.map +1 -1
  28. package/dist/backings/valkey.js +7 -7
  29. package/dist/backings/valkey.js.map +1 -1
  30. package/dist/backup/backup-restore.d.ts +1 -1
  31. package/dist/backup/backup-restore.d.ts.map +1 -1
  32. package/dist/backup/backup-restore.js +1 -2
  33. package/dist/backup/backup-restore.js.map +1 -1
  34. package/dist/backup/backup.d.ts +1 -1
  35. package/dist/backup/backup.d.ts.map +1 -1
  36. package/dist/backup/backup.js +11 -10
  37. package/dist/backup/backup.js.map +1 -1
  38. package/dist/core/backing-provider.d.ts +4 -3
  39. package/dist/core/backing-provider.d.ts.map +1 -1
  40. package/dist/core/backing-provider.js +6 -8
  41. package/dist/core/backing-provider.js.map +1 -1
  42. package/dist/core/backing-ssh.d.ts +0 -1
  43. package/dist/core/backing-ssh.d.ts.map +1 -1
  44. package/dist/core/backing-ssh.js +0 -1
  45. package/dist/core/backing-ssh.js.map +1 -1
  46. package/dist/core/host-files.d.ts.map +1 -1
  47. package/dist/core/host-files.js +1 -1
  48. package/dist/core/host-files.js.map +1 -1
  49. package/dist/core/inputs.d.ts.map +1 -1
  50. package/dist/core/inputs.js +2 -1
  51. package/dist/core/inputs.js.map +1 -1
  52. package/dist/core/instance-binding.d.ts +2 -2
  53. package/dist/core/instance-binding.d.ts.map +1 -1
  54. package/dist/core/instance-binding.js +1 -2
  55. package/dist/core/instance-binding.js.map +1 -1
  56. package/dist/core/list-stamped.d.ts +13 -3
  57. package/dist/core/list-stamped.d.ts.map +1 -1
  58. package/dist/core/list-stamped.js +46 -15
  59. package/dist/core/list-stamped.js.map +1 -1
  60. package/dist/core/ssh-probe.d.ts +1 -1
  61. package/dist/core/ssh-probe.d.ts.map +1 -1
  62. package/dist/core/ssh-probe.js +1 -2
  63. package/dist/core/ssh-probe.js.map +1 -1
  64. package/dist/core/ssh.d.ts +1 -2
  65. package/dist/core/ssh.d.ts.map +1 -1
  66. package/dist/core/ssh.js +1 -2
  67. package/dist/core/ssh.js.map +1 -1
  68. package/dist/core/stamp.d.ts +23 -0
  69. package/dist/core/stamp.d.ts.map +1 -0
  70. package/dist/core/stamp.js +34 -0
  71. package/dist/core/stamp.js.map +1 -0
  72. package/dist/forgejo/ci.d.ts +1 -1
  73. package/dist/forgejo/ci.d.ts.map +1 -1
  74. package/dist/forgejo/ci.js +1 -3
  75. package/dist/forgejo/ci.js.map +1 -1
  76. package/dist/forgejo/forgejo-notify.d.ts +1 -1
  77. package/dist/forgejo/forgejo-notify.d.ts.map +1 -1
  78. package/dist/forgejo/forgejo-notify.js +1 -3
  79. package/dist/forgejo/forgejo-notify.js.map +1 -1
  80. package/dist/forgejo/forgejo-org.d.ts +1 -1
  81. package/dist/forgejo/forgejo-org.d.ts.map +1 -1
  82. package/dist/forgejo/forgejo-org.js +1 -3
  83. package/dist/forgejo/forgejo-org.js.map +1 -1
  84. package/dist/forgejo/forgejo-runner.d.ts +1 -1
  85. package/dist/forgejo/forgejo-runner.d.ts.map +1 -1
  86. package/dist/forgejo/forgejo-runner.js +4 -4
  87. package/dist/forgejo/forgejo-runner.js.map +1 -1
  88. package/dist/forgejo/forgejo-team.d.ts +1 -1
  89. package/dist/forgejo/forgejo-team.d.ts.map +1 -1
  90. package/dist/forgejo/forgejo-team.js +1 -3
  91. package/dist/forgejo/forgejo-team.js.map +1 -1
  92. package/dist/forgejo/forgejo-user.d.ts +1 -1
  93. package/dist/forgejo/forgejo-user.d.ts.map +1 -1
  94. package/dist/forgejo/forgejo-user.js +1 -3
  95. package/dist/forgejo/forgejo-user.js.map +1 -1
  96. package/dist/forgejo/forgejo.d.ts +1 -1
  97. package/dist/forgejo/forgejo.d.ts.map +1 -1
  98. package/dist/forgejo/forgejo.js +4 -4
  99. package/dist/forgejo/forgejo.js.map +1 -1
  100. package/dist/forgejo/repo.d.ts +1 -1
  101. package/dist/forgejo/repo.d.ts.map +1 -1
  102. package/dist/forgejo/repo.js +1 -3
  103. package/dist/forgejo/repo.js.map +1 -1
  104. package/dist/host/host.d.ts +1 -1
  105. package/dist/host/host.d.ts.map +1 -1
  106. package/dist/host/host.js +1 -2
  107. package/dist/host/host.js.map +1 -1
  108. package/dist/host/workspace.d.ts +1 -1
  109. package/dist/host/workspace.d.ts.map +1 -1
  110. package/dist/host/workspace.js +5 -4
  111. package/dist/host/workspace.js.map +1 -1
  112. package/dist/index.d.ts +4 -3
  113. package/dist/index.d.ts.map +1 -1
  114. package/dist/index.js +4 -3
  115. package/dist/index.js.map +1 -1
  116. package/dist/komodo/deployment.d.ts +1 -1
  117. package/dist/komodo/deployment.d.ts.map +1 -1
  118. package/dist/komodo/deployment.js +1 -3
  119. package/dist/komodo/deployment.js.map +1 -1
  120. package/dist/komodo/komodo-notify.d.ts +1 -1
  121. package/dist/komodo/komodo-notify.d.ts.map +1 -1
  122. package/dist/komodo/komodo-notify.js +1 -3
  123. package/dist/komodo/komodo-notify.js.map +1 -1
  124. package/dist/komodo/komodo-periphery.d.ts +1 -1
  125. package/dist/komodo/komodo-periphery.d.ts.map +1 -1
  126. package/dist/komodo/komodo-periphery.js +1 -2
  127. package/dist/komodo/komodo-periphery.js.map +1 -1
  128. package/dist/komodo/komodo-server.d.ts +1 -1
  129. package/dist/komodo/komodo-server.d.ts.map +1 -1
  130. package/dist/komodo/komodo-server.js +1 -3
  131. package/dist/komodo/komodo-server.js.map +1 -1
  132. package/dist/komodo/komodo-user.d.ts +1 -1
  133. package/dist/komodo/komodo-user.d.ts.map +1 -1
  134. package/dist/komodo/komodo-user.js +1 -3
  135. package/dist/komodo/komodo-user.js.map +1 -1
  136. package/dist/komodo/komodo.d.ts +2 -2
  137. package/dist/komodo/komodo.d.ts.map +1 -1
  138. package/dist/komodo/komodo.js +42 -160
  139. package/dist/komodo/komodo.js.map +1 -1
  140. package/dist/network/cf-route.d.ts +7 -0
  141. package/dist/network/cf-route.d.ts.map +1 -1
  142. package/dist/network/cf-route.js +40 -14
  143. package/dist/network/cf-route.js.map +1 -1
  144. package/dist/network/cloudflare-api.d.ts +1 -0
  145. package/dist/network/cloudflare-api.d.ts.map +1 -1
  146. package/dist/network/cloudflare-api.js +10 -57
  147. package/dist/network/cloudflare-api.js.map +1 -1
  148. package/dist/network/tunnel.d.ts +8 -1
  149. package/dist/network/tunnel.d.ts.map +1 -1
  150. package/dist/network/tunnel.js +4 -5
  151. package/dist/network/tunnel.js.map +1 -1
  152. package/dist/observability/signoz.d.ts +2 -2
  153. package/dist/observability/signoz.d.ts.map +1 -1
  154. package/dist/observability/signoz.js +6 -6
  155. package/dist/observability/signoz.js.map +1 -1
  156. package/dist/providers.d.ts +2 -2
  157. package/dist/providers.d.ts.map +1 -1
  158. package/dist/providers.js +2 -3
  159. package/dist/providers.js.map +1 -1
  160. package/dist/services/compose-service.d.ts +11 -1
  161. package/dist/services/compose-service.d.ts.map +1 -1
  162. package/dist/services/compose-service.js +59 -23
  163. package/dist/services/compose-service.js.map +1 -1
  164. package/dist/services/infisical.d.ts +1 -1
  165. package/dist/services/infisical.d.ts.map +1 -1
  166. package/dist/services/infisical.js +5 -5
  167. package/dist/services/infisical.js.map +1 -1
  168. package/dist/services/invoiceninja.d.ts +1 -1
  169. package/dist/services/invoiceninja.d.ts.map +1 -1
  170. package/dist/services/invoiceninja.js +5 -5
  171. package/dist/services/invoiceninja.js.map +1 -1
  172. package/dist/services/openproject.d.ts +1 -1
  173. package/dist/services/openproject.d.ts.map +1 -1
  174. package/dist/services/openproject.js +5 -5
  175. package/dist/services/openproject.js.map +1 -1
  176. package/dist/services/outline.d.ts +1 -1
  177. package/dist/services/outline.d.ts.map +1 -1
  178. package/dist/services/outline.js +5 -5
  179. package/dist/services/outline.js.map +1 -1
  180. package/dist/services/paperless.d.ts +1 -1
  181. package/dist/services/paperless.d.ts.map +1 -1
  182. package/dist/services/paperless.js +5 -5
  183. package/dist/services/paperless.js.map +1 -1
  184. package/package.json +8 -8
package/README.md CHANGED
@@ -11,7 +11,9 @@ flowchart LR
11
11
  ```
12
12
 
13
13
  - `createProviders` assembles the full kind-to-provider map over injectable dependencies: the SSH executor and each vendor API client. Tests pass fakes and drive the whole suite in memory.
14
- - Every container intentic starts on a host carries `intentic.id` and `intentic.type` labels, so `list` finds orphans with one `docker ps` per host.
14
+ - Every container intentic starts on a host carries `intentic.id` and `intentic.type` labels, so `list` finds orphans with one `docker ps` per host. Since 2026-10-05 it also carries `intentic.owner`, the intent that made it, and a Cloudflare route's DNS comment starts with the owner. `list` reports each resource's owner and the engine decides what is whose; a host it cannot reach or list is reported as skipped, not as empty.
15
+ - Adopting an unowned resource means re-stamping it, which for a container means recreating it. Backings, catalog services, the backup container and Cloudflare routes read their owner back, so the next apply adopts them (2026-10-05). Forgejo, its runner, Komodo and the agent workspace only get the label on their next real recreate: recreating them for a label would restart the forge and runner a CI apply runs on, or the sandbox an agent works in.
16
+ - Repos, Komodo deployments and users, tunnels and database bindings have no `list`: they carry no stamp a scan could attribute, so the CLI's prune baseline keeps a removed one pending until its delete succeeds (2026-10-05).
15
17
  - Forgejo and Komodo APIs are reached through a loopback port-forward over SSH, because the Cloudflare tunnel behind their public routes may be the very thing an apply is changing.
16
18
  - A NAT'd host is reached through its own Cloudflare tunnel (`via: "cloudflared"`). Host keys are trusted on first use and pinned.
17
19
  - Stateful services on a host with the `guarded` update policy snapshot their volumes with restic before an image bump and roll back if the new image fails its health check.
@@ -22,6 +24,7 @@ flowchart LR
22
24
  - [src/core/ssh.ts](src/core/ssh.ts) — the SSH executor, cloudflared forwarding and host-key pinning.
23
25
  - [src/core/over-ssh.ts](src/core/over-ssh.ts) — why and how control-plane APIs go over SSH.
24
26
  - [src/core/backing-provider.ts](src/core/backing-provider.ts) — the shared shape of Postgres, Valkey, Garage and Authentik.
27
+ - [src/core/stamp.ts](src/core/stamp.ts) — the labels every container is stamped with, owner included, and reading them back.
25
28
  - [src/komodo/deployment.ts](src/komodo/deployment.ts) — one Komodo deployment per app environment.
26
29
  - [src/suite.engine.test.ts](src/suite.engine.test.ts) — the whole provider stack reconciling an app over fakes, then again as a noop.
27
30
 
@@ -1,4 +1,4 @@
1
1
  import type { Provider } from "@intentic/engine";
2
2
  import type { SshExecutor } from "../core/ssh.js";
3
- export declare const createAuthentikProvider: (executor?: SshExecutor) => Provider;
3
+ export declare const createAuthentikProvider: (executor: SshExecutor) => Provider;
4
4
  //# sourceMappingURL=authentik.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"authentik.d.ts","sourceRoot":"","sources":["../../src/auth/authentik.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAIjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAyDlD,eAAO,MAAM,uBAAuB,cAAc,WAAW,KAAiB,QA+BzE,CAAC"}
1
+ {"version":3,"file":"authentik.d.ts","sourceRoot":"","sources":["../../src/auth/authentik.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAyDlD,eAAO,MAAM,uBAAuB,aAAc,WAAW,KAAG,QA+B3D,CAAC"}
@@ -1,7 +1,6 @@
1
1
  import { z } from "zod";
2
2
  import { backingSchema, createBackingProvider } from "../core/backing-provider.js";
3
- import { stampLabels } from "../core/backing-ssh.js";
4
- import { sshExecutor } from "../core/ssh.js";
3
+ import { stampLabels } from "../core/stamp.js";
5
4
  const KIND = "authentik";
6
5
  const authentikSchema = backingSchema.extend({
7
6
  domain: z.string(),
@@ -13,7 +12,7 @@ const authentikSchema = backingSchema.extend({
13
12
  redisImage: z.string(),
14
13
  });
15
14
  const internalUrl = (parsed) => `http://${parsed.internalIp}:${parsed.publishPort}`;
16
- const composeYaml = (parsed, id, hash) => [
15
+ const composeYaml = (parsed, stamp) => [
17
16
  "services:",
18
17
  " postgresql:",
19
18
  ` image: ${parsed.pgImage}`,
@@ -35,7 +34,7 @@ const composeYaml = (parsed, id, hash) => [
35
34
  ` ports: [ "${parsed.publishPort}:9000" ]`,
36
35
  " volumes: [ media:/media, templates:/templates ]",
37
36
  " depends_on: { postgresql: { condition: service_healthy }, redis: { condition: service_healthy } }",
38
- stampLabels(KIND, id, hash, parsed.protect),
37
+ stampLabels(KIND, stamp, parsed.protect),
39
38
  " worker:",
40
39
  ` image: ${parsed.image}`,
41
40
  " restart: unless-stopped",
@@ -46,7 +45,7 @@ const composeYaml = (parsed, id, hash) => [
46
45
  "volumes: { database: {}, redis: {}, media: {}, certs: {}, templates: {} }",
47
46
  "",
48
47
  ].join("\n");
49
- export const createAuthentikProvider = (executor = sshExecutor) => createBackingProvider({
48
+ export const createAuthentikProvider = (executor) => createBackingProvider({
50
49
  kind: KIND,
51
50
  schema: authentikSchema,
52
51
  readyTimeoutMs: 300_000,
@@ -55,7 +54,7 @@ export const createAuthentikProvider = (executor = sshExecutor) => createBacking
55
54
  issuerUrl: `https://${parsed.domain}/application/o/`,
56
55
  internalUrl: internalUrl(parsed),
57
56
  }),
58
- files: (parsed, id, hash) => ({ "compose.yaml": composeYaml(parsed, id, hash) }),
57
+ files: (parsed, stamp) => ({ "compose.yaml": composeYaml(parsed, stamp) }),
59
58
  env: (parsed) => [
60
59
  { key: "AUTHENTIK_POSTGRESQL__HOST", value: "postgresql" },
61
60
  { key: "AUTHENTIK_POSTGRESQL__USER", value: "authentik" },
@@ -1 +1 @@
1
- {"version":3,"file":"authentik.js","sourceRoot":"","sources":["../../src/auth/authentik.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"authentik.js","sourceRoot":"","sources":["../../src/auth/authentik.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  import type { Provider } from "@intentic/engine";
2
2
  import type { SshExecutor } from "../core/ssh.js";
3
- export declare const createGarageBucketProvider: (executor?: SshExecutor) => Provider;
3
+ export declare const createGarageBucketProvider: (executor: SshExecutor) => Provider;
4
4
  //# sourceMappingURL=garage-bucket.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"garage-bucket.d.ts","sourceRoot":"","sources":["../../src/backings/garage-bucket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGjD,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,gBAAgB,CAAC;AAoC9D,eAAO,MAAM,0BAA0B,cAAc,WAAW,KAAiB,QA2B5E,CAAC"}
1
+ {"version":3,"file":"garage-bucket.d.ts","sourceRoot":"","sources":["../../src/backings/garage-bucket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGjD,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,gBAAgB,CAAC;AAmC9D,eAAO,MAAM,0BAA0B,aAAc,WAAW,KAAG,QA2B9D,CAAC"}
@@ -1,6 +1,5 @@
1
1
  import { z } from "zod";
2
2
  import { bindingSchema, createInstanceBindingProvider } from "../core/instance-binding.js";
3
- import { sshExecutor } from "../core/ssh.js";
4
3
  import { GARAGE_BIN, runGarage } from "./garage.js";
5
4
  const bucketSchema = bindingSchema.extend({
6
5
  endpoint: z.string(),
@@ -24,7 +23,7 @@ const outputsFor = (parsed, key) => ({
24
23
  secretKey: key.secretKey,
25
24
  bucket: parsed.bucket,
26
25
  });
27
- export const createGarageBucketProvider = (executor = sshExecutor) => createInstanceBindingProvider({
26
+ export const createGarageBucketProvider = (executor) => createInstanceBindingProvider({
28
27
  kind: "garage-bucket",
29
28
  schema: bucketSchema,
30
29
  pendingRefs: ["endpoint"],
@@ -1 +1 @@
1
- {"version":3,"file":"garage-bucket.js","sourceRoot":"","sources":["../../src/backings/garage-bucket.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"garage-bucket.js","sourceRoot":"","sources":["../../src/backings/garage-bucket.ts"],"names":[],"mappings":"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"}
@@ -2,5 +2,5 @@ import type { Provider } from "@intentic/engine";
2
2
  import type { SshExecutor, SshSession } from "../core/ssh.js";
3
3
  export declare const GARAGE_BIN = "/garage";
4
4
  export declare const runGarage: (session: SshSession, cid: string, args: string) => Promise<string>;
5
- export declare const createGarageProvider: (executor?: SshExecutor) => Provider;
5
+ export declare const createGarageProvider: (executor: SshExecutor) => Provider;
6
6
  //# sourceMappingURL=garage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"garage.d.ts","sourceRoot":"","sources":["../../src/backings/garage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAIjD,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAK9D,eAAO,MAAM,UAAU,YAAY,CAAC;AA8CpC,eAAO,MAAM,SAAS,YAAmB,UAAU,OAAO,MAAM,QAAQ,MAAM,KAAG,OAAO,CAAC,MAAM,CAM9F,CAAC;AAmBF,eAAO,MAAM,oBAAoB,cAAc,WAAW,KAAiB,QAqBtE,CAAC"}
1
+ {"version":3,"file":"garage.d.ts","sourceRoot":"","sources":["../../src/backings/garage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAIjD,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAK9D,eAAO,MAAM,UAAU,YAAY,CAAC;AA8CpC,eAAO,MAAM,SAAS,YAAmB,UAAU,OAAO,MAAM,QAAQ,MAAM,KAAG,OAAO,CAAC,MAAM,CAM9F,CAAC;AAmBF,eAAO,MAAM,oBAAoB,aAAc,WAAW,KAAG,QAqBxD,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { z } from "zod";
2
2
  import { backingSchema, createBackingProvider } from "../core/backing-provider.js";
3
- import { containerId, execProbe, stampLabels } from "../core/backing-ssh.js";
4
- import { sshExecutor } from "../core/ssh.js";
3
+ import { containerId, execProbe } from "../core/backing-ssh.js";
4
+ import { stampLabels } from "../core/stamp.js";
5
5
  const KIND = "garage";
6
6
  export const GARAGE_BIN = "/garage";
7
7
  const garageSchema = backingSchema.extend({
@@ -9,7 +9,7 @@ const garageSchema = backingSchema.extend({
9
9
  domain: z.string().optional(),
10
10
  });
11
11
  const internalEndpoint = (parsed) => `http://${parsed.internalIp}:${parsed.publishPort}`;
12
- const composeYaml = (parsed, id, hash) => [
12
+ const composeYaml = (parsed, stamp) => [
13
13
  "services:",
14
14
  " garage:",
15
15
  ` image: ${parsed.image}`,
@@ -20,7 +20,7 @@ const composeYaml = (parsed, id, hash) => [
20
20
  " - ./garage.toml:/etc/garage.toml:ro",
21
21
  " - ./rpc_secret:/etc/garage/rpc_secret:ro",
22
22
  ` ports: [ "${parsed.publishPort}:3900" ]`,
23
- stampLabels(KIND, id, hash, parsed.protect),
23
+ stampLabels(KIND, stamp, parsed.protect),
24
24
  "volumes: { meta: {}, data: {} }",
25
25
  "",
26
26
  ].join("\n");
@@ -55,7 +55,7 @@ const ensureLayout = async (session, id) => {
55
55
  await runGarage(session, cid, `layout assign -z dc1 -c 1G ${nodeId}`);
56
56
  await runGarage(session, cid, "layout apply --version 1");
57
57
  };
58
- export const createGarageProvider = (executor = sshExecutor) => createBackingProvider({
58
+ export const createGarageProvider = (executor) => createBackingProvider({
59
59
  kind: KIND,
60
60
  schema: garageSchema,
61
61
  readyTimeoutMs: 120_000,
@@ -63,7 +63,7 @@ export const createGarageProvider = (executor = sshExecutor) => createBackingPro
63
63
  internalEndpoint: internalEndpoint(parsed),
64
64
  endpoint: parsed.domain !== undefined ? `https://${parsed.domain}` : internalEndpoint(parsed),
65
65
  }),
66
- files: (parsed, id, hash) => ({ "compose.yaml": composeYaml(parsed, id, hash), "garage.toml": garageToml(parsed) }),
66
+ files: (parsed, stamp) => ({ "compose.yaml": composeYaml(parsed, stamp), "garage.toml": garageToml(parsed) }),
67
67
  prepare: async (session, _parsed, dir) => {
68
68
  await session.exec(`test -f ${dir}/rpc_secret || { openssl rand -hex 32 > ${dir}/rpc_secret && chmod 600 ${dir}/rpc_secret; }`);
69
69
  },
@@ -1 +1 @@
1
- {"version":3,"file":"garage.js","sourceRoot":"","sources":["../../src/backings/garage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"garage.js","sourceRoot":"","sources":["../../src/backings/garage.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  import type { Provider } from "@intentic/engine";
2
2
  import type { SshExecutor } from "../core/ssh.js";
3
- export declare const createPostgresDatabaseProvider: (executor?: SshExecutor) => Provider;
3
+ export declare const createPostgresDatabaseProvider: (executor: SshExecutor) => Provider;
4
4
  //# sourceMappingURL=postgres-database.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"postgres-database.d.ts","sourceRoot":"","sources":["../../src/backings/postgres-database.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAIjD,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,gBAAgB,CAAC;AAiC9D,eAAO,MAAM,8BAA8B,cAAc,WAAW,KAAiB,QAyBhF,CAAC"}
1
+ {"version":3,"file":"postgres-database.d.ts","sourceRoot":"","sources":["../../src/backings/postgres-database.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAIjD,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,gBAAgB,CAAC;AAgC9D,eAAO,MAAM,8BAA8B,aAAc,WAAW,KAAG,QAyBlE,CAAC"}
@@ -1,7 +1,6 @@
1
1
  import { shellQuote, sqlIdentifier, sqlLiteral } from "@intentic/sandbox-run/quote";
2
2
  import { z } from "zod";
3
3
  import { bindingSchema, createInstanceBindingProvider } from "../core/instance-binding.js";
4
- import { sshExecutor } from "../core/ssh.js";
5
4
  const databaseSchema = bindingSchema.extend({
6
5
  instanceHost: z.string(),
7
6
  instancePort: z.string(),
@@ -18,7 +17,7 @@ const psql = async (session, cid, sql) => {
18
17
  return result.stdout.trim();
19
18
  };
20
19
  const databaseExists = async (session, cid, parsed) => (await psql(session, cid, `SELECT 1 FROM pg_database WHERE datname=${sqlLiteral(parsed.database)}`)) === "1";
21
- export const createPostgresDatabaseProvider = (executor = sshExecutor) => createInstanceBindingProvider({
20
+ export const createPostgresDatabaseProvider = (executor) => createInstanceBindingProvider({
22
21
  kind: "postgres-database",
23
22
  schema: databaseSchema,
24
23
  pendingRefs: ["instanceHost", "instancePort"],
@@ -1 +1 @@
1
- {"version":3,"file":"postgres-database.js","sourceRoot":"","sources":["../../src/backings/postgres-database.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"postgres-database.js","sourceRoot":"","sources":["../../src/backings/postgres-database.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  import type { Provider } from "@intentic/engine";
2
2
  import type { SshExecutor } from "../core/ssh.js";
3
- export declare const createPostgresProvider: (executor?: SshExecutor) => Provider;
3
+ export declare const createPostgresProvider: (executor: SshExecutor) => Provider;
4
4
  //# sourceMappingURL=postgres.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../src/backings/postgres.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAIjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAmClD,eAAO,MAAM,sBAAsB,cAAc,WAAW,KAAiB,QAgBxE,CAAC"}
1
+ {"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../src/backings/postgres.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAIjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAmClD,eAAO,MAAM,sBAAsB,aAAc,WAAW,KAAG,QAgB1D,CAAC"}
@@ -1,12 +1,12 @@
1
1
  import { z } from "zod";
2
2
  import { backingSchema, createBackingProvider } from "../core/backing-provider.js";
3
- import { execProbe, stampLabels } from "../core/backing-ssh.js";
4
- import { sshExecutor } from "../core/ssh.js";
3
+ import { execProbe } from "../core/backing-ssh.js";
4
+ import { stampLabels } from "../core/stamp.js";
5
5
  const KIND = "postgres";
6
6
  const postgresSchema = backingSchema.extend({
7
7
  adminPassword: z.string(),
8
8
  });
9
- const composeYaml = (parsed, id, hash) => [
9
+ const composeYaml = (parsed, stamp) => [
10
10
  "services:",
11
11
  " postgres:",
12
12
  ` image: ${parsed.image}`,
@@ -14,7 +14,7 @@ const composeYaml = (parsed, id, hash) => [
14
14
  " environment: { POSTGRES_USER: postgres, POSTGRES_PASSWORD: $POSTGRES_PASSWORD, POSTGRES_DB: postgres }",
15
15
  " volumes: [ data:/var/lib/postgresql ]",
16
16
  ` ports: [ "${parsed.publishPort}:5432" ]`,
17
- stampLabels(KIND, id, hash, parsed.protect),
17
+ stampLabels(KIND, stamp, parsed.protect),
18
18
  " healthcheck:",
19
19
  " test: [ CMD-SHELL, pg_isready -U postgres ]",
20
20
  " interval: 10s",
@@ -23,12 +23,12 @@ const composeYaml = (parsed, id, hash) => [
23
23
  "volumes: { data: {} }",
24
24
  "",
25
25
  ].join("\n");
26
- export const createPostgresProvider = (executor = sshExecutor) => createBackingProvider({
26
+ export const createPostgresProvider = (executor) => createBackingProvider({
27
27
  kind: KIND,
28
28
  schema: postgresSchema,
29
29
  readyTimeoutMs: 120_000,
30
30
  outputs: (parsed) => ({ internalHost: parsed.internalIp, port: String(parsed.publishPort) }),
31
- files: (parsed, id, hash) => ({ "compose.yaml": composeYaml(parsed, id, hash) }),
31
+ files: (parsed, stamp) => ({ "compose.yaml": composeYaml(parsed, stamp) }),
32
32
  env: (parsed) => [{ key: "POSTGRES_PASSWORD", value: parsed.adminPassword }],
33
33
  probe: (_parsed, id) => execProbe(id, "pg_isready -U postgres -q"),
34
34
  restamp: true,
@@ -1 +1 @@
1
- {"version":3,"file":"postgres.js","sourceRoot":"","sources":["../../src/backings/postgres.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACnF,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAEhE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,IAAI,GAAG,UAAU,CAAC;AAExB,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC;IAGxC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;CAC5B,CAAC,CAAC;AAKH,MAAM,WAAW,GAAG,CAAC,MAAsB,EAAE,EAAU,EAAE,IAAY,EAAU,EAAE,CAC7E;IACI,WAAW;IACX,aAAa;IACb,cAAc,MAAM,CAAC,KAAK,EAAE;IAC5B,6BAA6B;IAC7B,4GAA4G;IAC5G,2CAA2C;IAC3C,iBAAiB,MAAM,CAAC,WAAW,UAAU;IAC7C,WAAW,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC;IAC3C,kBAAkB;IAClB,mDAAmD;IACnD,qBAAqB;IACrB,mBAAmB;IACnB,mBAAmB;IACnB,uBAAuB;IACvB,EAAE;CACL,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAIjB,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,QAAQ,GAAgB,WAAW,EAAY,EAAE,CACpF,qBAAqB,CACjB;IACI,IAAI,EAAE,IAAI;IACV,MAAM,EAAE,cAAc;IACtB,cAAc,EAAE,OAAO;IACvB,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;IAC5F,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC;IAGhF,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC;IAC5E,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,2BAA2B,CAAC;IAElE,OAAO,EAAE,IAAI;CAChB,EACD,QAAQ,CACX,CAAC"}
1
+ {"version":3,"file":"postgres.js","sourceRoot":"","sources":["../../src/backings/postgres.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACnF,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,EAAuB,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpE,MAAM,IAAI,GAAG,UAAU,CAAC;AAExB,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC;IAGxC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;CAC5B,CAAC,CAAC;AAKH,MAAM,WAAW,GAAG,CAAC,MAAsB,EAAE,KAAqB,EAAU,EAAE,CAC1E;IACI,WAAW;IACX,aAAa;IACb,cAAc,MAAM,CAAC,KAAK,EAAE;IAC5B,6BAA6B;IAC7B,4GAA4G;IAC5G,2CAA2C;IAC3C,iBAAiB,MAAM,CAAC,WAAW,UAAU;IAC7C,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC;IACxC,kBAAkB;IAClB,mDAAmD;IACnD,qBAAqB;IACrB,mBAAmB;IACnB,mBAAmB;IACnB,uBAAuB;IACvB,EAAE;CACL,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAIjB,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,QAAqB,EAAY,EAAE,CACtE,qBAAqB,CACjB;IACI,IAAI,EAAE,IAAI;IACV,MAAM,EAAE,cAAc;IACtB,cAAc,EAAE,OAAO;IACvB,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;IAC5F,KAAK,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;IAG1E,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC;IAC5E,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,2BAA2B,CAAC;IAElE,OAAO,EAAE,IAAI;CAChB,EACD,QAAQ,CACX,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import type { Provider } from "@intentic/engine";
2
2
  import type { SshExecutor } from "../core/ssh.js";
3
- export declare const createValkeyNamespaceProvider: (executor?: SshExecutor) => Provider;
3
+ export declare const createValkeyNamespaceProvider: (executor: SshExecutor) => Provider;
4
4
  //# sourceMappingURL=valkey-namespace.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"valkey-namespace.d.ts","sourceRoot":"","sources":["../../src/backings/valkey-namespace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAIjD,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,gBAAgB,CAAC;AA+B9D,eAAO,MAAM,6BAA6B,cAAc,WAAW,KAAiB,QAoB/E,CAAC"}
1
+ {"version":3,"file":"valkey-namespace.d.ts","sourceRoot":"","sources":["../../src/backings/valkey-namespace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAIjD,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,gBAAgB,CAAC;AA8B9D,eAAO,MAAM,6BAA6B,aAAc,WAAW,KAAG,QAoBjE,CAAC"}
@@ -1,7 +1,6 @@
1
1
  import { shellQuote } from "@intentic/sandbox-run/quote";
2
2
  import { z } from "zod";
3
3
  import { bindingSchema, createInstanceBindingProvider } from "../core/instance-binding.js";
4
- import { sshExecutor } from "../core/ssh.js";
5
4
  const namespaceSchema = bindingSchema.extend({
6
5
  instanceHost: z.string(),
7
6
  instancePort: z.string(),
@@ -18,7 +17,7 @@ const cli = async (session, cid, parsed, args) => {
18
17
  }
19
18
  return result.stdout.trim();
20
19
  };
21
- export const createValkeyNamespaceProvider = (executor = sshExecutor) => createInstanceBindingProvider({
20
+ export const createValkeyNamespaceProvider = (executor) => createInstanceBindingProvider({
22
21
  kind: "valkey-namespace",
23
22
  schema: namespaceSchema,
24
23
  pendingRefs: ["instanceHost", "instancePort"],
@@ -1 +1 @@
1
- {"version":3,"file":"valkey-namespace.js","sourceRoot":"","sources":["../../src/backings/valkey-namespace.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAE3F,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,eAAe,GAAG,aAAa,CAAC,MAAM,CAAC;IACzC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IAExB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IAEzB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACxB,CAAC,CAAC;AAGH,MAAM,GAAG,GAAG,CAAC,MAAuB,EAAU,EAAE,CAAC,WAAW,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,IAAI,CAAC;AAIjJ,MAAM,GAAG,GAAG,KAAK,EAAE,OAAmB,EAAE,GAAW,EAAE,MAAuB,EAAE,IAAY,EAAmB,EAAE;IAG3G,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,eAAe,GAAG,kBAAkB,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC;IACpI,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,sBAAsB,MAAM,CAAC,IAAI,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AAChC,CAAC,CAAC;AAIF,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,QAAQ,GAAgB,WAAW,EAAY,EAAE,CAC3F,6BAA6B,CACzB;IACI,IAAI,EAAE,kBAAkB;IACxB,MAAM,EAAE,eAAe;IACvB,WAAW,EAAE,CAAC,cAAc,EAAE,cAAc,CAAC;IAC7C,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;QACpC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,eAAe,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/E,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;IAC1D,CAAC;IACD,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;QAEnC,MAAM,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,eAAe,MAAM,CAAC,QAAQ,SAAS,MAAM,CAAC,QAAQ,OAAO,MAAM,CAAC,SAAS,WAAW,CAAC,CAAC;QAC1H,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;IAChC,CAAC;IACD,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;QACjC,MAAM,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,eAAe,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IACtE,CAAC;CACJ,EACD,QAAQ,CACX,CAAC"}
1
+ {"version":3,"file":"valkey-namespace.js","sourceRoot":"","sources":["../../src/backings/valkey-namespace.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAG3F,MAAM,eAAe,GAAG,aAAa,CAAC,MAAM,CAAC;IACzC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IAExB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IAEzB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACxB,CAAC,CAAC;AAGH,MAAM,GAAG,GAAG,CAAC,MAAuB,EAAU,EAAE,CAAC,WAAW,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,IAAI,CAAC;AAIjJ,MAAM,GAAG,GAAG,KAAK,EAAE,OAAmB,EAAE,GAAW,EAAE,MAAuB,EAAE,IAAY,EAAmB,EAAE;IAG3G,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,eAAe,GAAG,kBAAkB,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC;IACpI,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,sBAAsB,MAAM,CAAC,IAAI,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AAChC,CAAC,CAAC;AAIF,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,QAAqB,EAAY,EAAE,CAC7E,6BAA6B,CACzB;IACI,IAAI,EAAE,kBAAkB;IACxB,MAAM,EAAE,eAAe;IACvB,WAAW,EAAE,CAAC,cAAc,EAAE,cAAc,CAAC;IAC7C,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;QACpC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,eAAe,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/E,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;IAC1D,CAAC;IACD,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;QAEnC,MAAM,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,eAAe,MAAM,CAAC,QAAQ,SAAS,MAAM,CAAC,QAAQ,OAAO,MAAM,CAAC,SAAS,WAAW,CAAC,CAAC;QAC1H,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;IAChC,CAAC;IACD,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;QACjC,MAAM,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,eAAe,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IACtE,CAAC;CACJ,EACD,QAAQ,CACX,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import type { Provider } from "@intentic/engine";
2
2
  import type { SshExecutor } from "../core/ssh.js";
3
- export declare const createValkeyProvider: (executor?: SshExecutor) => Provider;
3
+ export declare const createValkeyProvider: (executor: SshExecutor) => Provider;
4
4
  //# sourceMappingURL=valkey.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"valkey.d.ts","sourceRoot":"","sources":["../../src/backings/valkey.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAKjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAmClD,eAAO,MAAM,oBAAoB,cAAc,WAAW,KAAiB,QAgBtE,CAAC"}
1
+ {"version":3,"file":"valkey.d.ts","sourceRoot":"","sources":["../../src/backings/valkey.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAKjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAmClD,eAAO,MAAM,oBAAoB,aAAc,WAAW,KAAG,QAgBxD,CAAC"}
@@ -1,13 +1,13 @@
1
1
  import { shellQuote } from "@intentic/sandbox-run/quote";
2
2
  import { z } from "zod";
3
3
  import { backingSchema, createBackingProvider } from "../core/backing-provider.js";
4
- import { execProbe, stampLabels } from "../core/backing-ssh.js";
5
- import { sshExecutor } from "../core/ssh.js";
4
+ import { execProbe } from "../core/backing-ssh.js";
5
+ import { stampLabels } from "../core/stamp.js";
6
6
  const KIND = "valkey";
7
7
  const valkeySchema = backingSchema.extend({
8
8
  adminPassword: z.string(),
9
9
  });
10
- const composeYaml = (parsed, id, hash) => [
10
+ const composeYaml = (parsed, stamp) => [
11
11
  "services:",
12
12
  " valkey:",
13
13
  ` image: ${parsed.image}`,
@@ -17,18 +17,18 @@ const composeYaml = (parsed, id, hash) => [
17
17
  " - data:/data",
18
18
  " - ./valkey.conf:/etc/valkey/valkey.conf:ro",
19
19
  ` ports: [ "${parsed.publishPort}:6379" ]`,
20
- stampLabels(KIND, id, hash, parsed.protect),
20
+ stampLabels(KIND, stamp, parsed.protect),
21
21
  "volumes: { data: {} }",
22
22
  "",
23
23
  ].join("\n");
24
24
  const valkeyConf = (parsed) => [`requirepass ${parsed.adminPassword}`, "appendonly yes", ""].join("\n");
25
- export const createValkeyProvider = (executor = sshExecutor) => createBackingProvider({
25
+ export const createValkeyProvider = (executor) => createBackingProvider({
26
26
  kind: KIND,
27
27
  schema: valkeySchema,
28
28
  readyTimeoutMs: 60_000,
29
29
  outputs: (parsed) => ({ internalHost: parsed.internalIp, port: String(parsed.publishPort) }),
30
- files: (parsed, id, hash) => ({
31
- "compose.yaml": composeYaml(parsed, id, hash),
30
+ files: (parsed, stamp) => ({
31
+ "compose.yaml": composeYaml(parsed, stamp),
32
32
  "valkey.conf": { content: valkeyConf(parsed), secret: true },
33
33
  }),
34
34
  probe: (parsed, id) => execProbe(id, `valkey-cli -a ${shellQuote(parsed.adminPassword)} ping | grep -q PONG`),
@@ -1 +1 @@
1
- {"version":3,"file":"valkey.js","sourceRoot":"","sources":["../../src/backings/valkey.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACnF,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAEhE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,IAAI,GAAG,QAAQ,CAAC;AAEtB,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC;IAGtC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;CAC5B,CAAC,CAAC;AAKH,MAAM,WAAW,GAAG,CAAC,MAAoB,EAAE,EAAU,EAAE,IAAY,EAAU,EAAE,CAC3E;IACI,WAAW;IACX,WAAW;IACX,cAAc,MAAM,CAAC,KAAK,EAAE;IAC5B,6BAA6B;IAC7B,yDAAyD;IACzD,cAAc;IACd,oBAAoB;IACpB,kDAAkD;IAClD,iBAAiB,MAAM,CAAC,WAAW,UAAU;IAC7C,WAAW,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC;IAC3C,uBAAuB;IACvB,EAAE;CACL,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAIjB,MAAM,UAAU,GAAG,CAAC,MAAoB,EAAU,EAAE,CAAC,CAAC,eAAe,MAAM,CAAC,aAAa,EAAE,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAG9H,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,QAAQ,GAAgB,WAAW,EAAY,EAAE,CAClF,qBAAqB,CACjB;IACI,IAAI,EAAE,IAAI;IACV,MAAM,EAAE,YAAY;IACpB,cAAc,EAAE,MAAM;IACtB,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;IAC5F,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1B,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC;QAC7C,aAAa,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE;KAC/D,CAAC;IACF,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,iBAAiB,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,sBAAsB,CAAC;IAE7G,OAAO,EAAE,IAAI;CAChB,EACD,QAAQ,CACX,CAAC"}
1
+ {"version":3,"file":"valkey.js","sourceRoot":"","sources":["../../src/backings/valkey.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACnF,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,EAAuB,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpE,MAAM,IAAI,GAAG,QAAQ,CAAC;AAEtB,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC;IAGtC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;CAC5B,CAAC,CAAC;AAKH,MAAM,WAAW,GAAG,CAAC,MAAoB,EAAE,KAAqB,EAAU,EAAE,CACxE;IACI,WAAW;IACX,WAAW;IACX,cAAc,MAAM,CAAC,KAAK,EAAE;IAC5B,6BAA6B;IAC7B,yDAAyD;IACzD,cAAc;IACd,oBAAoB;IACpB,kDAAkD;IAClD,iBAAiB,MAAM,CAAC,WAAW,UAAU;IAC7C,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC;IACxC,uBAAuB;IACvB,EAAE;CACL,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAIjB,MAAM,UAAU,GAAG,CAAC,MAAoB,EAAU,EAAE,CAAC,CAAC,eAAe,MAAM,CAAC,aAAa,EAAE,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAG9H,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,QAAqB,EAAY,EAAE,CACpE,qBAAqB,CACjB;IACI,IAAI,EAAE,IAAI;IACV,MAAM,EAAE,YAAY;IACpB,cAAc,EAAE,MAAM;IACtB,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;IAC5F,KAAK,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACvB,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC;QAC1C,aAAa,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE;KAC/D,CAAC;IACF,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,iBAAiB,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,sBAAsB,CAAC;IAE7G,OAAO,EAAE,IAAI;CAChB,EACD,QAAQ,CACX,CAAC"}
@@ -9,7 +9,7 @@ export interface RestoreArgs {
9
9
  readonly snapshot: string;
10
10
  readonly scope: RestoreScope;
11
11
  readonly log: (message: string) => void;
12
- readonly executor?: SshExecutor;
12
+ readonly executor: SshExecutor;
13
13
  }
14
14
  export declare const restoreBackup: (args: RestoreArgs) => Promise<void>;
15
15
  //# sourceMappingURL=backup-restore.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"backup-restore.d.ts","sourceRoot":"","sources":["../../src/backup/backup-restore.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAc,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAMzE,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,QAAQ,GAAG,KAAK,CAAC;AAExD,MAAM,WAAW,WAAW;IACxB,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC;CACnC;AA4BD,eAAO,MAAM,aAAa,SAAgB,WAAW,KAAG,OAAO,CAAC,IAAI,CA2CnE,CAAC"}
1
+ {"version":3,"file":"backup-restore.d.ts","sourceRoot":"","sources":["../../src/backup/backup-restore.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAc,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAKzE,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,QAAQ,GAAG,KAAK,CAAC;AAExD,MAAM,WAAW,WAAW;IACxB,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;CAClC;AA4BD,eAAO,MAAM,aAAa,SAAgB,WAAW,KAAG,OAAO,CAAC,IAAI,CA2CnE,CAAC"}
@@ -1,5 +1,4 @@
1
1
  import { shellQuote } from "@intentic/sandbox-run/quote";
2
- import { sshExecutor } from "../core/ssh.js";
3
2
  import { isLocalRepo, REPO_VOLUME } from "./backup.js";
4
3
  const RESTORE_VOLUME = "intentic-restore";
5
4
  const resticPrefix = (args) => {
@@ -13,7 +12,7 @@ const restoreVolume = (args, volume, sub) => `docker run --rm --entrypoint sh -v
13
12
  `-c 'rm -rf /dest/..?* /dest/.[!.]* /dest/* 2>/dev/null; cp -a /restore/volumes/${sub}/. /dest/'`;
14
13
  const wants = (scope, part) => scope === "all" || scope === part;
15
14
  export const restoreBackup = async (args) => {
16
- const executor = args.executor ?? sshExecutor;
15
+ const executor = args.executor;
17
16
  const session = await executor.connect(args.target);
18
17
  const run = async (command, what) => {
19
18
  const result = await session.exec(command);
@@ -1 +1 @@
1
- {"version":3,"file":"backup-restore.js","sourceRoot":"","sources":["../../src/backup/backup-restore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backup-restore.js","sourceRoot":"","sources":["../../src/backup/backup-restore.ts"],"names":[],"mappings":"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"}
@@ -2,5 +2,5 @@ import type { Provider } from "@intentic/engine";
2
2
  import type { SshExecutor } from "../core/ssh.js";
3
3
  export declare const REPO_VOLUME = "intentic-restic-repo";
4
4
  export declare const isLocalRepo: (repo: string) => boolean;
5
- export declare const createBackupProvider: (executor?: SshExecutor) => Provider;
5
+ export declare const createBackupProvider: (executor: SshExecutor) => Provider;
6
6
  //# sourceMappingURL=backup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../../src/backup/backup.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,kBAAkB,CAAC;AAMjE,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,gBAAgB,CAAC;AA6D9D,eAAO,MAAM,WAAW,yBAAyB,CAAC;AAClD,eAAO,MAAM,WAAW,SAAU,MAAM,KAAG,OAA+B,CAAC;AAmG3E,eAAO,MAAM,oBAAoB,cAAc,WAAW,KAAiB,QA+EzE,CAAC"}
1
+ {"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../../src/backup/backup.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,kBAAkB,CAAC;AAOjE,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,gBAAgB,CAAC;AA6D9D,eAAO,MAAM,WAAW,yBAAyB,CAAC;AAClD,eAAO,MAAM,WAAW,SAAU,MAAM,KAAG,OAA+B,CAAC;AAsG3E,eAAO,MAAM,oBAAoB,aAAc,WAAW,KAAG,QAgF3D,CAAC"}
@@ -1,11 +1,12 @@
1
1
  import { basename } from "node:path";
2
2
  import { HOST_STATE_ROOT } from "@intentic/constants";
3
+ import { OWNER_KEY } from "@intentic/graph";
3
4
  import { dockerEnvLine, shellQuote } from "@intentic/sandbox-run/quote";
4
5
  import { z } from "zod";
5
6
  import { execChecked, writeHostFiles } from "../core/host-files.js";
6
7
  import { parseInputs, sshSchema, sshTarget } from "../core/inputs.js";
7
8
  import { listStampedContainers } from "../core/list-stamped.js";
8
- import { sshExecutor } from "../core/ssh.js";
9
+ import { stampLabelArgs, stampOf } from "../core/stamp.js";
9
10
  const backupSchema = sshSchema.extend({
10
11
  repo: z.string(),
11
12
  password: z.string(),
@@ -79,9 +80,9 @@ const running = async (session) => {
79
80
  return result.stdout.trim() === CONTAINER;
80
81
  };
81
82
  const observe = async (session) => {
82
- const result = await session.exec(`docker inspect --format '{{.Config.Image}}${SEP}{{index .Config.Labels "intentic.schedule"}}${SEP}{{index .Config.Labels "intentic.repo"}}${SEP}{{index .Config.Labels "intentic.timezone"}}' ${CONTAINER} 2>/dev/null || true`);
83
- const [image = "", schedule = "", repo = "", timezone = ""] = result.stdout.trim().split(SEP);
84
- return { image, schedule, repo, timezone: timezone === "" ? "UTC" : timezone };
83
+ const result = await session.exec(`docker inspect --format '{{.Config.Image}}${SEP}{{index .Config.Labels "intentic.schedule"}}${SEP}{{index .Config.Labels "intentic.repo"}}${SEP}{{index .Config.Labels "intentic.timezone"}}${SEP}{{index .Config.Labels "${OWNER_KEY}"}}' ${CONTAINER} 2>/dev/null || true`);
84
+ const [image = "", schedule = "", repo = "", timezone = "", owner = ""] = result.stdout.trim().split(SEP);
85
+ return { config: { image, schedule, repo, timezone: timezone === "" ? "UTC" : timezone }, owner };
85
86
  };
86
87
  const ensureFiles = async (session, parsed) => {
87
88
  await writeHostFiles(session, "backup", STATE_DIR, {
@@ -112,7 +113,7 @@ const mountArgs = (parsed, dockerBin) => {
112
113
  `--env-file ${ENV_FILE}`,
113
114
  ].join(" ");
114
115
  };
115
- export const createBackupProvider = (executor = sshExecutor) => ({
116
+ export const createBackupProvider = (executor) => ({
116
117
  read: async (inputs, ctx) => {
117
118
  const parsed = parse(inputs);
118
119
  let session;
@@ -128,7 +129,7 @@ export const createBackupProvider = (executor = sshExecutor) => ({
128
129
  if (!up) {
129
130
  return undefined;
130
131
  }
131
- return { outputs: {}, detail: observed };
132
+ return { outputs: {}, detail: observed.config, stampOwner: observed.owner };
132
133
  }
133
134
  finally {
134
135
  await session.dispose();
@@ -161,9 +162,9 @@ export const createBackupProvider = (executor = sshExecutor) => ({
161
162
  }
162
163
  await ensureFiles(session, parsed);
163
164
  await session.exec(`docker rm -f ${CONTAINER} 2>/dev/null || true`);
164
- const run = await session.exec(`docker run -d --restart unless-stopped --name ${CONTAINER} --label ${shellQuote(`intentic.id=${ctx.id}`)} --label intentic.type=backup ` +
165
- `--label ${shellQuote(`intentic.schedule=${parsed.schedule}`)} --label ${shellQuote(`intentic.repo=${parsed.repo}`)} ` +
166
- `--label ${shellQuote(`intentic.timezone=${parsed.timezone}`)} -e ${shellQuote(`TZ=${parsed.timezone}`)} ` +
165
+ const run = await session.exec(`docker run -d --restart unless-stopped --name ${CONTAINER} ` +
166
+ `${stampLabelArgs("backup", stampOf(ctx), [`intentic.schedule=${parsed.schedule}`, `intentic.repo=${parsed.repo}`, `intentic.timezone=${parsed.timezone}`])} ` +
167
+ `-e ${shellQuote(`TZ=${parsed.timezone}`)} ` +
167
168
  `${mountArgs(parsed, dockerBin)} --entrypoint crond ${shellQuote(parsed.image)} -f -l 8`);
168
169
  if (run.code !== 0) {
169
170
  throw new Error(`failed to start backup container on host: exited ${run.code}: ${run.stderr.trim()}`);
@@ -185,6 +186,6 @@ export const createBackupProvider = (executor = sshExecutor) => ({
185
186
  await session.dispose();
186
187
  }
187
188
  },
188
- list: (sources, ctx) => listStampedContainers(executor, "backup", sources, ctx.log),
189
+ list: (sources, ctx) => listStampedContainers(executor, "backup", sources, ctx),
189
190
  });
190
191
  //# sourceMappingURL=backup.js.map