@kadi.build/deploy-ability 0.0.1

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 (198) hide show
  1. package/README.md +523 -0
  2. package/dist/constants.d.ts +82 -0
  3. package/dist/constants.d.ts.map +1 -0
  4. package/dist/constants.js +82 -0
  5. package/dist/constants.js.map +1 -0
  6. package/dist/errors/certificate-error.d.ts +95 -0
  7. package/dist/errors/certificate-error.d.ts.map +1 -0
  8. package/dist/errors/certificate-error.js +111 -0
  9. package/dist/errors/certificate-error.js.map +1 -0
  10. package/dist/errors/deployment-error.d.ts +122 -0
  11. package/dist/errors/deployment-error.d.ts.map +1 -0
  12. package/dist/errors/deployment-error.js +185 -0
  13. package/dist/errors/deployment-error.js.map +1 -0
  14. package/dist/errors/index.d.ts +13 -0
  15. package/dist/errors/index.d.ts.map +1 -0
  16. package/dist/errors/index.js +18 -0
  17. package/dist/errors/index.js.map +1 -0
  18. package/dist/errors/profile-error.d.ts +106 -0
  19. package/dist/errors/profile-error.d.ts.map +1 -0
  20. package/dist/errors/profile-error.js +127 -0
  21. package/dist/errors/profile-error.js.map +1 -0
  22. package/dist/errors/provider-error.d.ts +104 -0
  23. package/dist/errors/provider-error.d.ts.map +1 -0
  24. package/dist/errors/provider-error.js +120 -0
  25. package/dist/errors/provider-error.js.map +1 -0
  26. package/dist/errors/wallet-error.d.ts +131 -0
  27. package/dist/errors/wallet-error.d.ts.map +1 -0
  28. package/dist/errors/wallet-error.js +154 -0
  29. package/dist/errors/wallet-error.js.map +1 -0
  30. package/dist/index.d.ts +49 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +53 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/targets/akash/bid-selectors.d.ts +251 -0
  35. package/dist/targets/akash/bid-selectors.d.ts.map +1 -0
  36. package/dist/targets/akash/bid-selectors.js +322 -0
  37. package/dist/targets/akash/bid-selectors.js.map +1 -0
  38. package/dist/targets/akash/bid-types.d.ts +297 -0
  39. package/dist/targets/akash/bid-types.d.ts.map +1 -0
  40. package/dist/targets/akash/bid-types.js +89 -0
  41. package/dist/targets/akash/bid-types.js.map +1 -0
  42. package/dist/targets/akash/blockchain-client.d.ts +577 -0
  43. package/dist/targets/akash/blockchain-client.d.ts.map +1 -0
  44. package/dist/targets/akash/blockchain-client.js +803 -0
  45. package/dist/targets/akash/blockchain-client.js.map +1 -0
  46. package/dist/targets/akash/certificate-manager.d.ts +228 -0
  47. package/dist/targets/akash/certificate-manager.d.ts.map +1 -0
  48. package/dist/targets/akash/certificate-manager.js +395 -0
  49. package/dist/targets/akash/certificate-manager.js.map +1 -0
  50. package/dist/targets/akash/constants.d.ts +231 -0
  51. package/dist/targets/akash/constants.d.ts.map +1 -0
  52. package/dist/targets/akash/constants.js +225 -0
  53. package/dist/targets/akash/constants.js.map +1 -0
  54. package/dist/targets/akash/deployer.d.ts +136 -0
  55. package/dist/targets/akash/deployer.d.ts.map +1 -0
  56. package/dist/targets/akash/deployer.js +599 -0
  57. package/dist/targets/akash/deployer.js.map +1 -0
  58. package/dist/targets/akash/environment.d.ts +241 -0
  59. package/dist/targets/akash/environment.d.ts.map +1 -0
  60. package/dist/targets/akash/environment.js +245 -0
  61. package/dist/targets/akash/environment.js.map +1 -0
  62. package/dist/targets/akash/index.d.ts +1113 -0
  63. package/dist/targets/akash/index.d.ts.map +1 -0
  64. package/dist/targets/akash/index.js +909 -0
  65. package/dist/targets/akash/index.js.map +1 -0
  66. package/dist/targets/akash/lease-monitor.d.ts +51 -0
  67. package/dist/targets/akash/lease-monitor.d.ts.map +1 -0
  68. package/dist/targets/akash/lease-monitor.js +110 -0
  69. package/dist/targets/akash/lease-monitor.js.map +1 -0
  70. package/dist/targets/akash/logs.d.ts +71 -0
  71. package/dist/targets/akash/logs.d.ts.map +1 -0
  72. package/dist/targets/akash/logs.js +311 -0
  73. package/dist/targets/akash/logs.js.map +1 -0
  74. package/dist/targets/akash/logs.types.d.ts +102 -0
  75. package/dist/targets/akash/logs.types.d.ts.map +1 -0
  76. package/dist/targets/akash/logs.types.js +9 -0
  77. package/dist/targets/akash/logs.types.js.map +1 -0
  78. package/dist/targets/akash/pricing.d.ts +247 -0
  79. package/dist/targets/akash/pricing.d.ts.map +1 -0
  80. package/dist/targets/akash/pricing.js +246 -0
  81. package/dist/targets/akash/pricing.js.map +1 -0
  82. package/dist/targets/akash/provider-client.d.ts +114 -0
  83. package/dist/targets/akash/provider-client.d.ts.map +1 -0
  84. package/dist/targets/akash/provider-client.js +318 -0
  85. package/dist/targets/akash/provider-client.js.map +1 -0
  86. package/dist/targets/akash/provider-metadata.d.ts +228 -0
  87. package/dist/targets/akash/provider-metadata.d.ts.map +1 -0
  88. package/dist/targets/akash/provider-metadata.js +14 -0
  89. package/dist/targets/akash/provider-metadata.js.map +1 -0
  90. package/dist/targets/akash/provider-service.d.ts +133 -0
  91. package/dist/targets/akash/provider-service.d.ts.map +1 -0
  92. package/dist/targets/akash/provider-service.js +391 -0
  93. package/dist/targets/akash/provider-service.js.map +1 -0
  94. package/dist/targets/akash/query-client.d.ts +125 -0
  95. package/dist/targets/akash/query-client.d.ts.map +1 -0
  96. package/dist/targets/akash/query-client.js +332 -0
  97. package/dist/targets/akash/query-client.js.map +1 -0
  98. package/dist/targets/akash/sdl-generator.d.ts +31 -0
  99. package/dist/targets/akash/sdl-generator.d.ts.map +1 -0
  100. package/dist/targets/akash/sdl-generator.js +279 -0
  101. package/dist/targets/akash/sdl-generator.js.map +1 -0
  102. package/dist/targets/akash/types.d.ts +285 -0
  103. package/dist/targets/akash/types.d.ts.map +1 -0
  104. package/dist/targets/akash/types.js +54 -0
  105. package/dist/targets/akash/types.js.map +1 -0
  106. package/dist/targets/akash/wallet-manager.d.ts +526 -0
  107. package/dist/targets/akash/wallet-manager.d.ts.map +1 -0
  108. package/dist/targets/akash/wallet-manager.js +953 -0
  109. package/dist/targets/akash/wallet-manager.js.map +1 -0
  110. package/dist/targets/local/compose-generator.d.ts +244 -0
  111. package/dist/targets/local/compose-generator.d.ts.map +1 -0
  112. package/dist/targets/local/compose-generator.js +324 -0
  113. package/dist/targets/local/compose-generator.js.map +1 -0
  114. package/dist/targets/local/deployer.d.ts +82 -0
  115. package/dist/targets/local/deployer.d.ts.map +1 -0
  116. package/dist/targets/local/deployer.js +367 -0
  117. package/dist/targets/local/deployer.js.map +1 -0
  118. package/dist/targets/local/engine-manager.d.ts +155 -0
  119. package/dist/targets/local/engine-manager.d.ts.map +1 -0
  120. package/dist/targets/local/engine-manager.js +250 -0
  121. package/dist/targets/local/engine-manager.js.map +1 -0
  122. package/dist/targets/local/index.d.ts +40 -0
  123. package/dist/targets/local/index.d.ts.map +1 -0
  124. package/dist/targets/local/index.js +43 -0
  125. package/dist/targets/local/index.js.map +1 -0
  126. package/dist/targets/local/network-manager.d.ts +160 -0
  127. package/dist/targets/local/network-manager.d.ts.map +1 -0
  128. package/dist/targets/local/network-manager.js +337 -0
  129. package/dist/targets/local/network-manager.js.map +1 -0
  130. package/dist/targets/local/types.d.ts +327 -0
  131. package/dist/targets/local/types.d.ts.map +1 -0
  132. package/dist/targets/local/types.js +9 -0
  133. package/dist/targets/local/types.js.map +1 -0
  134. package/dist/types/common.d.ts +585 -0
  135. package/dist/types/common.d.ts.map +1 -0
  136. package/dist/types/common.js +13 -0
  137. package/dist/types/common.js.map +1 -0
  138. package/dist/types/index.d.ts +15 -0
  139. package/dist/types/index.d.ts.map +1 -0
  140. package/dist/types/index.js +12 -0
  141. package/dist/types/index.js.map +1 -0
  142. package/dist/types/options.d.ts +329 -0
  143. package/dist/types/options.d.ts.map +1 -0
  144. package/dist/types/options.js +10 -0
  145. package/dist/types/options.js.map +1 -0
  146. package/dist/types/profiles.d.ts +329 -0
  147. package/dist/types/profiles.d.ts.map +1 -0
  148. package/dist/types/profiles.js +27 -0
  149. package/dist/types/profiles.js.map +1 -0
  150. package/dist/types/results.d.ts +443 -0
  151. package/dist/types/results.d.ts.map +1 -0
  152. package/dist/types/results.js +64 -0
  153. package/dist/types/results.js.map +1 -0
  154. package/dist/types/validators.d.ts +118 -0
  155. package/dist/types/validators.d.ts.map +1 -0
  156. package/dist/types/validators.js +198 -0
  157. package/dist/types/validators.js.map +1 -0
  158. package/dist/utils/command-runner.d.ts +128 -0
  159. package/dist/utils/command-runner.d.ts.map +1 -0
  160. package/dist/utils/command-runner.js +210 -0
  161. package/dist/utils/command-runner.js.map +1 -0
  162. package/dist/utils/index.d.ts +10 -0
  163. package/dist/utils/index.d.ts.map +1 -0
  164. package/dist/utils/index.js +10 -0
  165. package/dist/utils/index.js.map +1 -0
  166. package/dist/utils/logger.d.ts +68 -0
  167. package/dist/utils/logger.d.ts.map +1 -0
  168. package/dist/utils/logger.js +93 -0
  169. package/dist/utils/logger.js.map +1 -0
  170. package/dist/utils/profile-loader.d.ts +76 -0
  171. package/dist/utils/profile-loader.d.ts.map +1 -0
  172. package/dist/utils/profile-loader.js +194 -0
  173. package/dist/utils/profile-loader.js.map +1 -0
  174. package/dist/utils/registry/index.d.ts +27 -0
  175. package/dist/utils/registry/index.d.ts.map +1 -0
  176. package/dist/utils/registry/index.js +29 -0
  177. package/dist/utils/registry/index.js.map +1 -0
  178. package/dist/utils/registry/manager.d.ts +319 -0
  179. package/dist/utils/registry/manager.d.ts.map +1 -0
  180. package/dist/utils/registry/manager.js +671 -0
  181. package/dist/utils/registry/manager.js.map +1 -0
  182. package/dist/utils/registry/setup.d.ts +135 -0
  183. package/dist/utils/registry/setup.d.ts.map +1 -0
  184. package/dist/utils/registry/setup.js +207 -0
  185. package/dist/utils/registry/setup.js.map +1 -0
  186. package/dist/utils/registry/transformer.d.ts +92 -0
  187. package/dist/utils/registry/transformer.d.ts.map +1 -0
  188. package/dist/utils/registry/transformer.js +131 -0
  189. package/dist/utils/registry/transformer.js.map +1 -0
  190. package/dist/utils/registry/types.d.ts +241 -0
  191. package/dist/utils/registry/types.d.ts.map +1 -0
  192. package/dist/utils/registry/types.js +10 -0
  193. package/dist/utils/registry/types.js.map +1 -0
  194. package/docs/EXAMPLES.md +293 -0
  195. package/docs/PLACEMENT.md +433 -0
  196. package/docs/STORAGE.md +318 -0
  197. package/docs/building-provider-reliability-tracker.md +2581 -0
  198. package/package.json +109 -0
@@ -0,0 +1,319 @@
1
+ /**
2
+ * Temporary Container Registry Manager
3
+ *
4
+ * Manages a temporary container registry for making local Docker images accessible
5
+ * to Akash providers during deployment. Wraps the TunneledContainerRegistry from
6
+ * @kadi.build/container-registry-ability with deployment-specific logic.
7
+ *
8
+ * **Core Responsibilities:**
9
+ * - Start/stop temporary registry with public tunnel
10
+ * - Detect which images exist locally vs remotely
11
+ * - Push local images to temporary registry
12
+ * - Track image → registry URL mappings
13
+ * - Provide credentials for SDL generation
14
+ *
15
+ * @module utils/registry/manager
16
+ */
17
+ import type { DeploymentLogger } from '../../types/common.js';
18
+ import type { AkashDeploymentProfile } from '../../types/profiles.js';
19
+ import type { RegistryCredentials, RegistryOptions } from './types.js';
20
+ /**
21
+ * Temporary Container Registry Manager
22
+ *
23
+ * Manages the lifecycle of a temporary container registry that makes local images
24
+ * accessible to Akash providers. This class handles starting the registry, detecting
25
+ * local images, pushing them, and tracking URL transformations.
26
+ *
27
+ * **Typical Workflow:**
28
+ * ```typescript
29
+ * const manager = new TemporaryContainerRegistryManager(logger);
30
+ *
31
+ * // 1. Start registry
32
+ * await manager.startTemporaryRegistry({
33
+ * tunnelService: 'serveo',
34
+ * containerEngine: 'docker'
35
+ * });
36
+ *
37
+ * // 2. Add local images from profile
38
+ * await manager.addLocalImagesToTemporaryRegistry(profile, 'docker');
39
+ *
40
+ * // 3. Get transformed image URLs
41
+ * const url = manager.getPublicImageUrl('frontend', 'my-app:latest');
42
+ *
43
+ * // 4. Get credentials for SDL
44
+ * const creds = manager.getRegistryCredentials();
45
+ *
46
+ * // 5. Stop registry when done
47
+ * await manager.stopTemporaryRegistry();
48
+ * ```
49
+ */
50
+ export declare class TemporaryContainerRegistryManager {
51
+ private logger;
52
+ private registry;
53
+ private registryInfo;
54
+ /**
55
+ * Maps original image names to their public registry URLs
56
+ *
57
+ * Key: Original image name (e.g., "my-app:latest")
58
+ * Value: Container mapping with registry URL and metadata
59
+ */
60
+ private containerMappings;
61
+ /**
62
+ * Create a new registry manager
63
+ *
64
+ * @param logger - Logger for progress and error messages
65
+ */
66
+ constructor(logger: DeploymentLogger);
67
+ /**
68
+ * Start temporary registry with public tunnel
69
+ *
70
+ * Creates a local container registry on the specified port and exposes it publicly
71
+ * via a tunnel service (ngrok, serveo, or bore). The registry is used to make
72
+ * local Docker images accessible to Akash providers during deployment.
73
+ *
74
+ * **What This Does:**
75
+ * 1. Loads environment variables (.env) for tunnel configuration
76
+ * 2. Starts local registry container on specified port
77
+ * 3. Creates public tunnel (ngrok/serveo/bore)
78
+ * 4. Generates authentication credentials
79
+ * 5. Returns when registry is accessible
80
+ *
81
+ * **Tunnel Services:**
82
+ * - **ngrok**: Most reliable, requires auth token (NGROK_AUTH_TOKEN env var)
83
+ * - **serveo**: Free SSH-based tunnel, no signup required
84
+ * - **bore**: Modern alternative using bore.pub
85
+ *
86
+ * @param options - Configuration options for registry and tunnel
87
+ * @throws Error if registry fails to start or tunnel cannot be established
88
+ *
89
+ * @example
90
+ * ```typescript
91
+ * await manager.startTemporaryRegistry({
92
+ * port: 3000,
93
+ * tunnelService: 'serveo',
94
+ * containerEngine: 'docker',
95
+ * registryDuration: 600000, // 10 minutes
96
+ * autoShutdown: false
97
+ * });
98
+ * ```
99
+ */
100
+ startTemporaryRegistry(options: RegistryOptions): Promise<void>;
101
+ /**
102
+ * Display registry access information including domain and credentials
103
+ *
104
+ * Logs registry connection details for debugging purposes.
105
+ * Only logs if debug logging is enabled (DEBUG=deploy-ability:registry).
106
+ */
107
+ private displayRegistryAccessInformation;
108
+ /**
109
+ * Check if a container image exists locally
110
+ *
111
+ * Uses `docker images -q` or `podman images -q` to check if an image exists
112
+ * in the local container engine. This is the ground truth for whether we need
113
+ * to add an image to the temporary registry.
114
+ *
115
+ * **Why This Works:**
116
+ * - Returns image hash if image exists locally
117
+ * - Returns empty string if image doesn't exist
118
+ * - Works for both tagged and untagged images
119
+ * - Handles shorthand names correctly (e.g., "nginx" vs "docker.io/library/nginx")
120
+ *
121
+ * **Reality-Based Detection:**
122
+ * Instead of guessing based on image name patterns (checking for "/" in the name),
123
+ * we check the actual state of the local container engine. This prevents false
124
+ * positives and false negatives.
125
+ *
126
+ * @param imageName - Full image name with tag (e.g., "my-app:latest")
127
+ * @param engine - Container engine to use
128
+ * @returns True if image exists locally, false otherwise
129
+ */
130
+ private checkImageExistsLocally;
131
+ /**
132
+ * Add local images from deployment profile to the temporary registry
133
+ *
134
+ * **Simplified Logic (Reality-Based Detection):**
135
+ *
136
+ * Instead of guessing if an image is "local" based on name patterns (like checking
137
+ * if it has "/" in the name), we simply check if the image actually exists locally
138
+ * using `docker images -q <image>`.
139
+ *
140
+ * **This approach:**
141
+ * 1. Is more accurate (checks reality, not heuristics)
142
+ * 2. Is simpler (one check instead of multiple conditions)
143
+ * 3. Handles edge cases automatically:
144
+ * - Docker Hub shorthand ("nginx" → exists remotely, not locally)
145
+ * - Custom registries with default namespaces
146
+ * - Images that "look local" but are actually remote
147
+ *
148
+ * **Decision Flow:**
149
+ * - Image exists locally → Add to temporary registry and make publicly accessible
150
+ * - Image doesn't exist locally → Treat as remote reference (don't add to registry)
151
+ *
152
+ * **Why This Works:**
153
+ * The temporary registry is ONLY needed for images that exist locally but need to
154
+ * be made publicly accessible to Akash providers. If an image doesn't exist locally,
155
+ * either:
156
+ * - It's a remote image (providers can pull it directly)
157
+ * - It doesn't exist anywhere (deployment will fail later with clear error)
158
+ *
159
+ * @param profile - Deployment profile containing services with images
160
+ * @param containerEngine - Container engine to use for operations
161
+ * @throws Error if a required local image cannot be added to registry
162
+ *
163
+ * @example
164
+ * ```typescript
165
+ * await manager.addLocalImagesToTemporaryRegistry(profile, 'docker');
166
+ * // Checks each service image, adds local ones to registry
167
+ * ```
168
+ */
169
+ addLocalImagesToTemporaryRegistry(profile: AkashDeploymentProfile, containerEngine: 'docker' | 'podman'): Promise<void>;
170
+ /**
171
+ * Intelligent container addition with fallback strategies
172
+ *
173
+ * Tries multiple strategies to add a container image to the registry:
174
+ * 1. **Strategy 1**: Load from tar file (from kadi-build export cache)
175
+ * 2. **Strategy 2**: Load from container engine (docker/podman)
176
+ * 3. **Failure**: Show helpful error with suggestions
177
+ *
178
+ * **Why Multiple Strategies:**
179
+ * - Tar files are faster and don't require container engine running
180
+ * - Container engine is the fallback if tar file not available
181
+ * - Provides clear guidance if both fail
182
+ *
183
+ * @param imageName - Full image name with tag
184
+ * @param serviceName - Service name from profile
185
+ * @param containerEngine - Container engine to use
186
+ * @returns Container mapping with registry URL
187
+ * @throws Error if image cannot be added with any strategy
188
+ */
189
+ private addContainerIntelligently;
190
+ /**
191
+ * Create container mapping for registry URLs
192
+ *
193
+ * Transforms a local image reference into a complete registry URL mapping
194
+ * that can be used in SDL generation. Includes service name tracking for
195
+ * better debugging and error messages.
196
+ *
197
+ * @param originalImage - Original image name from agent.json (e.g., "my-app")
198
+ * @param serviceName - Service name from profile (e.g., "frontend")
199
+ * @param containerInfo - Container info from registry with alias
200
+ * @param repoName - Repository name extracted from image
201
+ * @param imageTag - Image tag (e.g., "latest")
202
+ * @returns Complete container mapping with registry URL
203
+ */
204
+ private createContainerMapping;
205
+ /**
206
+ * Get public image URL for a specific service
207
+ *
208
+ * This is the key method that SDL generator calls to get the transformed
209
+ * registry URL for a local image.
210
+ *
211
+ * **Returns null if:**
212
+ * - Image is not local (no mapping exists)
213
+ * - Image wasn't added to registry
214
+ * - Service name doesn't match
215
+ *
216
+ * @param serviceName - Service name from profile
217
+ * @param originalImage - Original image name from profile
218
+ * @returns Public registry URL or null if not a local image
219
+ *
220
+ * @example
221
+ * ```typescript
222
+ * const url = manager.getPublicImageUrl('frontend', 'my-app:latest');
223
+ * // Returns: "abc123.serveo.net/my-app:latest" or null
224
+ * ```
225
+ */
226
+ getPublicImageUrl(serviceName: string, originalImage: string): string | null;
227
+ /**
228
+ * Get registry credentials for SDL generation
229
+ *
230
+ * Returns authentication credentials that should be added to the SDL services
231
+ * section so Akash providers can authenticate with the temporary registry.
232
+ *
233
+ * @returns Registry credentials or null if not available
234
+ *
235
+ * @example
236
+ * ```typescript
237
+ * const creds = manager.getRegistryCredentials();
238
+ * // Use in SDL: { host: "abc123.serveo.net", username: "...", password: "..." }
239
+ * ```
240
+ */
241
+ getRegistryCredentials(): RegistryCredentials | null;
242
+ /**
243
+ * Find tar file from kadi-build export directory
244
+ *
245
+ * Searches for container tar files exported by kadi-build in common locations:
246
+ * 1. ~/.kadi/tmp/container-registry-exports/containers/ (primary)
247
+ * 2. ./container-exports/ (backup)
248
+ * 3. /tmp/container-registry-exports/containers/ (fallback)
249
+ *
250
+ * **Why This Matters:**
251
+ * Tar files are faster to load and don't require the container engine to be running.
252
+ *
253
+ * @param imageName - Image name to search for (e.g., "my-app:0.0.1")
254
+ * @returns Path to tar file or null if not found
255
+ */
256
+ private findKadiBuildTarFile;
257
+ /**
258
+ * Show helpful suggestion to run kadi-build
259
+ *
260
+ * Displays actionable suggestions when a container cannot be found or added.
261
+ * Helps users understand what went wrong and how to fix it.
262
+ *
263
+ * @param imageName - Image that couldn't be added
264
+ * @param containerType - Container engine used
265
+ */
266
+ private showKadiBuildSuggestion;
267
+ /**
268
+ * Verify container is accessible in the registry
269
+ *
270
+ * Checks that a container with the given alias is present in the registry.
271
+ * Logs a warning if not found and shows available containers for debugging.
272
+ *
273
+ * @param actualAlias - Container alias to verify
274
+ */
275
+ private verifyContainerInRegistry;
276
+ /**
277
+ * Get the registry domain (without protocol)
278
+ *
279
+ * Returns the domain to use in image URLs. Prefers tunnel domain over local.
280
+ *
281
+ * @returns Registry domain (e.g., "abc123.serveo.net" or "localhost:3000")
282
+ */
283
+ private getRegistryDomain;
284
+ /**
285
+ * Get registry URL components including local and tunnel endpoints
286
+ *
287
+ * @returns Registry URLs with both local and tunnel information
288
+ */
289
+ private getRegistryUrls;
290
+ /**
291
+ * Get the preferred domain (tunnel if available, otherwise local)
292
+ *
293
+ * @returns Domain without protocol
294
+ */
295
+ private getPreferredDomain;
296
+ /**
297
+ * Check if registry is running
298
+ *
299
+ * @returns True if registry is started and accessible
300
+ */
301
+ isRunning(): boolean;
302
+ /**
303
+ * Display container mappings for debugging
304
+ *
305
+ * Shows how original image names were transformed to registry URLs.
306
+ * Useful for troubleshooting deployment issues.
307
+ */
308
+ displayContainerMappings(): Promise<void>;
309
+ /**
310
+ * Stop the temporary registry and cleanup resources
311
+ *
312
+ * Shuts down the registry container and tunnel. Should be called after
313
+ * deployment completes and providers have pulled all images.
314
+ *
315
+ * **Safe to call multiple times** - idempotent operation.
316
+ */
317
+ stopTemporaryRegistry(): Promise<void>;
318
+ }
319
+ //# sourceMappingURL=manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/utils/registry/manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AASH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAEV,mBAAmB,EAInB,eAAe,EAChB,MAAM,YAAY,CAAC;AAYpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBAAa,iCAAiC;IAC5C,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,QAAQ,CAAiD;IACjE,OAAO,CAAC,YAAY,CAA6B;IAEjD;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB,CAAuC;IAEhE;;;;OAIG;gBACS,MAAM,EAAE,gBAAgB;IAIpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACG,sBAAsB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAkFrE;;;;;OAKG;YACW,gCAAgC;IAgC9C;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,OAAO,CAAC,uBAAuB;IAgB/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqCG;IACG,iCAAiC,CACrC,OAAO,EAAE,sBAAsB,EAC/B,eAAe,EAAE,QAAQ,GAAG,QAAQ,GACnC,OAAO,CAAC,IAAI,CAAC;IA0ChB;;;;;;;;;;;;;;;;;;OAkBG;YACW,yBAAyB;IA4EvC;;;;;;;;;;;;;OAaG;YACW,sBAAsB;IA4BpC;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAU5E;;;;;;;;;;;;;OAaG;IACH,sBAAsB,IAAI,mBAAmB,GAAG,IAAI;IA8BpD;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,oBAAoB;IAmC5B;;;;;;;;OAQG;IACH,OAAO,CAAC,uBAAuB;IA6B/B;;;;;;;OAOG;IACH,OAAO,CAAC,yBAAyB;IAsBjC;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;IAyBzB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAsBvB;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAK1B;;;;OAIG;IACH,SAAS,IAAI,OAAO;IAIpB;;;;;OAKG;IACG,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB/C;;;;;;;OAOG;IACG,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;CAqB7C"}