@nodetool-ai/deploy 0.7.0-rc.11

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 (133) hide show
  1. package/dist/admin-client.d.ts +58 -0
  2. package/dist/admin-client.d.ts.map +1 -0
  3. package/dist/admin-client.js +275 -0
  4. package/dist/admin-client.js.map +1 -0
  5. package/dist/admin-operations.d.ts +197 -0
  6. package/dist/admin-operations.d.ts.map +1 -0
  7. package/dist/admin-operations.js +433 -0
  8. package/dist/admin-operations.js.map +1 -0
  9. package/dist/admin-routes.d.ts +306 -0
  10. package/dist/admin-routes.d.ts.map +1 -0
  11. package/dist/admin-routes.js +383 -0
  12. package/dist/admin-routes.js.map +1 -0
  13. package/dist/api-user-manager.d.ts +72 -0
  14. package/dist/api-user-manager.d.ts.map +1 -0
  15. package/dist/api-user-manager.js +89 -0
  16. package/dist/api-user-manager.js.map +1 -0
  17. package/dist/auth.d.ts +67 -0
  18. package/dist/auth.d.ts.map +1 -0
  19. package/dist/auth.js +142 -0
  20. package/dist/auth.js.map +1 -0
  21. package/dist/collection-routes.d.ts +37 -0
  22. package/dist/collection-routes.d.ts.map +1 -0
  23. package/dist/collection-routes.js +43 -0
  24. package/dist/collection-routes.js.map +1 -0
  25. package/dist/compose.d.ts +52 -0
  26. package/dist/compose.d.ts.map +1 -0
  27. package/dist/compose.js +153 -0
  28. package/dist/compose.js.map +1 -0
  29. package/dist/configure.d.ts +87 -0
  30. package/dist/configure.d.ts.map +1 -0
  31. package/dist/configure.js +104 -0
  32. package/dist/configure.js.map +1 -0
  33. package/dist/deploy-to-gcp.d.ts +67 -0
  34. package/dist/deploy-to-gcp.d.ts.map +1 -0
  35. package/dist/deploy-to-gcp.js +268 -0
  36. package/dist/deploy-to-gcp.js.map +1 -0
  37. package/dist/deploy-to-runpod.d.ts +53 -0
  38. package/dist/deploy-to-runpod.d.ts.map +1 -0
  39. package/dist/deploy-to-runpod.js +207 -0
  40. package/dist/deploy-to-runpod.js.map +1 -0
  41. package/dist/deploy.d.ts +54 -0
  42. package/dist/deploy.d.ts.map +1 -0
  43. package/dist/deploy.js +82 -0
  44. package/dist/deploy.js.map +1 -0
  45. package/dist/deployment-config.d.ts +1073 -0
  46. package/dist/deployment-config.d.ts.map +1 -0
  47. package/dist/deployment-config.js +536 -0
  48. package/dist/deployment-config.js.map +1 -0
  49. package/dist/docker-run.d.ts +85 -0
  50. package/dist/docker-run.d.ts.map +1 -0
  51. package/dist/docker-run.js +202 -0
  52. package/dist/docker-run.js.map +1 -0
  53. package/dist/docker.d.ts +98 -0
  54. package/dist/docker.d.ts.map +1 -0
  55. package/dist/docker.js +396 -0
  56. package/dist/docker.js.map +1 -0
  57. package/dist/fly.d.ts +40 -0
  58. package/dist/fly.d.ts.map +1 -0
  59. package/dist/fly.js +291 -0
  60. package/dist/fly.js.map +1 -0
  61. package/dist/gcp.d.ts +59 -0
  62. package/dist/gcp.d.ts.map +1 -0
  63. package/dist/gcp.js +339 -0
  64. package/dist/gcp.js.map +1 -0
  65. package/dist/google-cloud-run-api.d.ts +134 -0
  66. package/dist/google-cloud-run-api.d.ts.map +1 -0
  67. package/dist/google-cloud-run-api.js +532 -0
  68. package/dist/google-cloud-run-api.js.map +1 -0
  69. package/dist/huggingface.d.ts +69 -0
  70. package/dist/huggingface.d.ts.map +1 -0
  71. package/dist/huggingface.js +346 -0
  72. package/dist/huggingface.js.map +1 -0
  73. package/dist/image-builder.d.ts +35 -0
  74. package/dist/image-builder.d.ts.map +1 -0
  75. package/dist/image-builder.js +157 -0
  76. package/dist/image-builder.js.map +1 -0
  77. package/dist/image-spec.d.ts +41 -0
  78. package/dist/image-spec.d.ts.map +1 -0
  79. package/dist/image-spec.js +49 -0
  80. package/dist/image-spec.js.map +1 -0
  81. package/dist/index.d.ts +33 -0
  82. package/dist/index.d.ts.map +1 -0
  83. package/dist/index.js +45 -0
  84. package/dist/index.js.map +1 -0
  85. package/dist/manager.d.ts +121 -0
  86. package/dist/manager.d.ts.map +1 -0
  87. package/dist/manager.js +225 -0
  88. package/dist/manager.js.map +1 -0
  89. package/dist/progress.d.ts +91 -0
  90. package/dist/progress.d.ts.map +1 -0
  91. package/dist/progress.js +262 -0
  92. package/dist/progress.js.map +1 -0
  93. package/dist/railway.d.ts +65 -0
  94. package/dist/railway.d.ts.map +1 -0
  95. package/dist/railway.js +284 -0
  96. package/dist/railway.js.map +1 -0
  97. package/dist/remote-users.d.ts +74 -0
  98. package/dist/remote-users.d.ts.map +1 -0
  99. package/dist/remote-users.js +172 -0
  100. package/dist/remote-users.js.map +1 -0
  101. package/dist/runpod-api.d.ts +206 -0
  102. package/dist/runpod-api.d.ts.map +1 -0
  103. package/dist/runpod-api.js +703 -0
  104. package/dist/runpod-api.js.map +1 -0
  105. package/dist/runpod.d.ts +82 -0
  106. package/dist/runpod.d.ts.map +1 -0
  107. package/dist/runpod.js +188 -0
  108. package/dist/runpod.js.map +1 -0
  109. package/dist/self-hosted.d.ts +157 -0
  110. package/dist/self-hosted.d.ts.map +1 -0
  111. package/dist/self-hosted.js +799 -0
  112. package/dist/self-hosted.js.map +1 -0
  113. package/dist/ssh.d.ts +166 -0
  114. package/dist/ssh.d.ts.map +1 -0
  115. package/dist/ssh.js +430 -0
  116. package/dist/ssh.js.map +1 -0
  117. package/dist/state.d.ts +83 -0
  118. package/dist/state.d.ts.map +1 -0
  119. package/dist/state.js +368 -0
  120. package/dist/state.js.map +1 -0
  121. package/dist/storage-routes.d.ts +55 -0
  122. package/dist/storage-routes.d.ts.map +1 -0
  123. package/dist/storage-routes.js +160 -0
  124. package/dist/storage-routes.js.map +1 -0
  125. package/dist/sync.d.ts +38 -0
  126. package/dist/sync.d.ts.map +1 -0
  127. package/dist/sync.js +130 -0
  128. package/dist/sync.js.map +1 -0
  129. package/dist/workflow-syncer.d.ts +51 -0
  130. package/dist/workflow-syncer.d.ts.map +1 -0
  131. package/dist/workflow-syncer.js +192 -0
  132. package/dist/workflow-syncer.js.map +1 -0
  133. package/package.json +58 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-spec.js","sourceRoot":"","sources":["../src/image-spec.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,SAAS,CAAC;AAEhC,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,KAAK,CAAC,YAAY,EAAE,mDAAmD,CAAC;IAC3E,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACzC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,yBAAyB,CAAC;IACxD,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAClD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;IAC3D,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC7C,MAAM,EAAE,kBAAkB,CAAC,QAAQ,EAAE;IACrC,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,KAAK,CAAC,oBAAoB,EAAE,8CAA8C,CAAC;SAC3E,QAAQ,EAAE;CACd,CAAC,CAAC;AASH,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E,0DAA0D;AAC1D,MAAM,UAAU,cAAc,CAAC,IAAa;IAC1C,OAAO,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,QAAgB;IAClD,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IAC1D,OAAO,cAAc,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;AACpC,CAAC"}
@@ -0,0 +1,33 @@
1
+ export * from "./deployment-config.js";
2
+ export * from "./state.js";
3
+ export * from "./progress.js";
4
+ export * from "./ssh.js";
5
+ export * from "./docker.js";
6
+ export * from "./docker-run.js";
7
+ export * from "./image-spec.js";
8
+ export * from "./image-builder.js";
9
+ export * from "./self-hosted.js";
10
+ export * from "./runpod.js";
11
+ export * from "./runpod-api.js";
12
+ export * from "./deploy-to-runpod.js";
13
+ export * from "./gcp.js";
14
+ export * from "./google-cloud-run-api.js";
15
+ export * from "./deploy-to-gcp.js";
16
+ export * from "./fly.js";
17
+ export * from "./railway.js";
18
+ export * from "./huggingface.js";
19
+ export * from "./manager.js";
20
+ export * from "./deploy.js";
21
+ export * from "./compose.js";
22
+ export * from "./configure.js";
23
+ export * from "./auth.js";
24
+ export * from "./remote-users.js";
25
+ export * from "./api-user-manager.js";
26
+ export * from "./admin-client.js";
27
+ export * from "./admin-operations.js";
28
+ export * from "./admin-routes.js";
29
+ export * from "./sync.js";
30
+ export * from "./workflow-syncer.js";
31
+ export * from "./storage-routes.js";
32
+ export * from "./collection-routes.js";
33
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,wBAAwB,CAAC;AAGvC,cAAc,YAAY,CAAC;AAG3B,cAAc,eAAe,CAAC;AAG9B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,UAAU,CAAC;AACzB,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AAGjC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAG5B,cAAc,cAAc,CAAC;AAG7B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,WAAW,CAAC;AAC1B,cAAc,sBAAsB,CAAC;AAGrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,45 @@
1
+ // Configuration and types
2
+ export * from "./deployment-config.js";
3
+ // State management
4
+ export * from "./state.js";
5
+ // Progress tracking
6
+ export * from "./progress.js";
7
+ // SSH and Docker utilities
8
+ export * from "./ssh.js";
9
+ export * from "./docker.js";
10
+ export * from "./docker-run.js";
11
+ export * from "./image-spec.js";
12
+ export * from "./image-builder.js";
13
+ // Deployers
14
+ export * from "./self-hosted.js";
15
+ export * from "./runpod.js";
16
+ export * from "./runpod-api.js";
17
+ export * from "./deploy-to-runpod.js";
18
+ export * from "./gcp.js";
19
+ export * from "./google-cloud-run-api.js";
20
+ export * from "./deploy-to-gcp.js";
21
+ export * from "./fly.js";
22
+ export * from "./railway.js";
23
+ export * from "./huggingface.js";
24
+ // Deployment manager
25
+ export * from "./manager.js";
26
+ export * from "./deploy.js";
27
+ // Compose generation
28
+ export * from "./compose.js";
29
+ // Configuration helpers
30
+ export * from "./configure.js";
31
+ // Authentication and users
32
+ export * from "./auth.js";
33
+ export * from "./remote-users.js";
34
+ export * from "./api-user-manager.js";
35
+ // Admin operations
36
+ export * from "./admin-client.js";
37
+ export * from "./admin-operations.js";
38
+ export * from "./admin-routes.js";
39
+ // Sync and workflow
40
+ export * from "./sync.js";
41
+ export * from "./workflow-syncer.js";
42
+ // Routes (framework-agnostic handlers)
43
+ export * from "./storage-routes.js";
44
+ export * from "./collection-routes.js";
45
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAC1B,cAAc,wBAAwB,CAAC;AAEvC,mBAAmB;AACnB,cAAc,YAAY,CAAC;AAE3B,oBAAoB;AACpB,cAAc,eAAe,CAAC;AAE9B,2BAA2B;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AAEnC,YAAY;AACZ,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,UAAU,CAAC;AACzB,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AAEjC,qBAAqB;AACrB,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAE5B,qBAAqB;AACrB,cAAc,cAAc,CAAC;AAE7B,wBAAwB;AACxB,cAAc,gBAAgB,CAAC;AAE/B,2BAA2B;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AAEtC,mBAAmB;AACnB,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAElC,oBAAoB;AACpB,cAAc,WAAW,CAAC;AAC1B,cAAc,sBAAsB,CAAC;AAErC,uCAAuC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Deployment manager orchestrator for all deployment types.
3
+ *
4
+ * This module provides a unified interface for managing deployments across
5
+ * different platforms (self-hosted, RunPod, GCP). It handles:
6
+ * - Change detection (comparing current vs desired state)
7
+ * - Plan generation (showing what will change)
8
+ * - Deployment orchestration
9
+ * - State management
10
+ * - Validation and error handling
11
+ */
12
+ import type { DeploymentConfig, AnyDeployment } from "./deployment-config.js";
13
+ import type { StateManager } from "./state.js";
14
+ /** Info returned by listDeployments. */
15
+ export interface DeploymentInfo {
16
+ name: string;
17
+ type: string;
18
+ status: string;
19
+ last_deployed: string | null;
20
+ host?: string;
21
+ container?: string;
22
+ service?: string;
23
+ pod_id?: string | null;
24
+ project?: string;
25
+ region?: string;
26
+ }
27
+ /** Validation results. */
28
+ export interface ValidationResult {
29
+ valid: boolean;
30
+ errors: string[];
31
+ warnings: string[];
32
+ }
33
+ /** Interface for deployers — all share the same operation signatures. */
34
+ export interface Deployer {
35
+ plan(): Promise<Record<string, unknown>>;
36
+ apply(opts?: {
37
+ dryRun?: boolean;
38
+ }): Promise<Record<string, unknown>>;
39
+ status(): Promise<Record<string, unknown>>;
40
+ logs(opts?: {
41
+ service?: string;
42
+ follow?: boolean;
43
+ tail?: number;
44
+ }): Promise<string>;
45
+ destroy(): Promise<Record<string, unknown>>;
46
+ }
47
+ /** Factory function signature for creating deployers. */
48
+ export type DeployerFactory = (deploymentName: string, deployment: AnyDeployment, stateManager: StateManager) => Deployer;
49
+ /**
50
+ * Orchestrates deployments across all platforms.
51
+ *
52
+ * This class provides a unified interface for deployment operations
53
+ * regardless of the target platform (self-hosted, RunPod, GCP).
54
+ */
55
+ export declare class DeploymentManager {
56
+ private config;
57
+ private stateManager;
58
+ private deployerFactories;
59
+ /**
60
+ * @param config - Loaded deployment configuration
61
+ * @param stateManager - State manager instance
62
+ * @param deployerFactories - Map of deployment type to deployer factory.
63
+ * Callers provide their own factory map so this module stays decoupled
64
+ * from concrete deployer implementations.
65
+ */
66
+ constructor(config: DeploymentConfig, stateManager: StateManager, deployerFactories: Record<string, DeployerFactory>);
67
+ /**
68
+ * List all configured deployments with their current status.
69
+ */
70
+ listDeployments(): Promise<DeploymentInfo[]>;
71
+ /**
72
+ * Get deployment configuration by name.
73
+ *
74
+ * @throws Error if deployment not found
75
+ */
76
+ getDeployment(name: string): AnyDeployment;
77
+ /**
78
+ * Generate a deployment plan showing what changes will be made.
79
+ * Similar to 'terraform plan'.
80
+ */
81
+ plan(name: string): Promise<Record<string, unknown>>;
82
+ /**
83
+ * Apply a deployment to its target platform.
84
+ */
85
+ apply(name: string, opts?: {
86
+ dryRun?: boolean;
87
+ force?: boolean;
88
+ }): Promise<Record<string, unknown>>;
89
+ /**
90
+ * Get current status of a deployment.
91
+ */
92
+ status(name: string): Promise<Record<string, unknown>>;
93
+ /**
94
+ * Get logs from a deployment.
95
+ */
96
+ logs(name: string, opts?: {
97
+ service?: string;
98
+ follow?: boolean;
99
+ tail?: number;
100
+ }): Promise<string>;
101
+ /**
102
+ * Destroy a deployment (stop and remove all resources).
103
+ */
104
+ destroy(name: string, _opts?: {
105
+ force?: boolean;
106
+ }): Promise<Record<string, unknown>>;
107
+ /**
108
+ * Validate deployment configuration.
109
+ */
110
+ validate(name?: string): ValidationResult;
111
+ /**
112
+ * Check if a deployment has changes that need to be applied.
113
+ */
114
+ hasChanges(name: string): Promise<boolean>;
115
+ /**
116
+ * Get state for all deployments.
117
+ */
118
+ getAllStates(): Promise<Record<string, Record<string, unknown>>>;
119
+ private getDeployer;
120
+ }
121
+ //# sourceMappingURL=manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,225 @@
1
+ /**
2
+ * Deployment manager orchestrator for all deployment types.
3
+ *
4
+ * This module provides a unified interface for managing deployments across
5
+ * different platforms (self-hosted, RunPod, GCP). It handles:
6
+ * - Change detection (comparing current vs desired state)
7
+ * - Plan generation (showing what will change)
8
+ * - Deployment orchestration
9
+ * - State management
10
+ * - Validation and error handling
11
+ */
12
+ /**
13
+ * Orchestrates deployments across all platforms.
14
+ *
15
+ * This class provides a unified interface for deployment operations
16
+ * regardless of the target platform (self-hosted, RunPod, GCP).
17
+ */
18
+ export class DeploymentManager {
19
+ config;
20
+ stateManager;
21
+ deployerFactories;
22
+ /**
23
+ * @param config - Loaded deployment configuration
24
+ * @param stateManager - State manager instance
25
+ * @param deployerFactories - Map of deployment type to deployer factory.
26
+ * Callers provide their own factory map so this module stays decoupled
27
+ * from concrete deployer implementations.
28
+ */
29
+ constructor(config, stateManager, deployerFactories) {
30
+ this.config = config;
31
+ this.stateManager = stateManager;
32
+ this.deployerFactories = deployerFactories;
33
+ }
34
+ /**
35
+ * List all configured deployments with their current status.
36
+ */
37
+ async listDeployments() {
38
+ const deployments = [];
39
+ const entries = Object.entries(this.config.deployments);
40
+ for (const [name, deployment] of entries) {
41
+ const state = await this.stateManager.readState(name);
42
+ const info = {
43
+ name,
44
+ type: deployment.type,
45
+ status: state?.["status"] ? String(state["status"]) : "unknown",
46
+ last_deployed: state?.["last_deployed"]
47
+ ? String(state["last_deployed"])
48
+ : null
49
+ };
50
+ // Add type-specific info
51
+ if (deployment.type === "docker") {
52
+ const d = deployment;
53
+ info.host = d.host;
54
+ info.container = d.container.name;
55
+ }
56
+ else if (deployment.type === "runpod") {
57
+ info.pod_id = state?.["pod_id"] ? String(state["pod_id"]) : null;
58
+ }
59
+ else if (deployment.type === "gcp") {
60
+ const d = deployment;
61
+ info.project = d.project_id;
62
+ info.region = d.region;
63
+ }
64
+ else if (deployment.type === "fly") {
65
+ const d = deployment;
66
+ info.host = `fly.io/${d.app}`;
67
+ }
68
+ else if (deployment.type === "railway") {
69
+ const d = deployment;
70
+ info.host = `railway/${d.project}`;
71
+ info.service = d.service;
72
+ }
73
+ else if (deployment.type === "huggingface") {
74
+ const d = deployment;
75
+ info.host = `huggingface.co/${d.repo}`;
76
+ }
77
+ deployments.push(info);
78
+ }
79
+ return deployments;
80
+ }
81
+ /**
82
+ * Get deployment configuration by name.
83
+ *
84
+ * @throws Error if deployment not found
85
+ */
86
+ getDeployment(name) {
87
+ const deployment = this.config.deployments[name];
88
+ if (!deployment) {
89
+ throw new Error(`Deployment '${name}' not found`);
90
+ }
91
+ return deployment;
92
+ }
93
+ /**
94
+ * Generate a deployment plan showing what changes will be made.
95
+ * Similar to 'terraform plan'.
96
+ */
97
+ async plan(name) {
98
+ const deployer = this.getDeployer(name);
99
+ return await deployer.plan();
100
+ }
101
+ /**
102
+ * Apply a deployment to its target platform.
103
+ */
104
+ async apply(name, opts = {}) {
105
+ const deployment = this.getDeployment(name);
106
+ console.log(`Applying deployment '${name}' (type: ${deployment.type})`);
107
+ const deployer = this.getDeployer(name);
108
+ return await deployer.apply({ dryRun: opts.dryRun });
109
+ }
110
+ /**
111
+ * Get current status of a deployment.
112
+ */
113
+ async status(name) {
114
+ const deployer = this.getDeployer(name);
115
+ return await deployer.status();
116
+ }
117
+ /**
118
+ * Get logs from a deployment.
119
+ */
120
+ async logs(name, opts = {}) {
121
+ const deployer = this.getDeployer(name);
122
+ return await deployer.logs({
123
+ service: opts.service,
124
+ follow: opts.follow,
125
+ tail: opts.tail ?? 100
126
+ });
127
+ }
128
+ /**
129
+ * Destroy a deployment (stop and remove all resources).
130
+ */
131
+ async destroy(name, _opts = {}) {
132
+ const deployment = this.getDeployment(name);
133
+ console.warn(`Destroying deployment '${name}' (type: ${deployment.type})`);
134
+ const deployer = this.getDeployer(name);
135
+ return await deployer.destroy();
136
+ }
137
+ /**
138
+ * Validate deployment configuration.
139
+ */
140
+ validate(name) {
141
+ const results = {
142
+ valid: true,
143
+ errors: [],
144
+ warnings: []
145
+ };
146
+ const deploymentsToValidate = name
147
+ ? [name]
148
+ : Object.keys(this.config.deployments);
149
+ for (const deploymentName of deploymentsToValidate) {
150
+ try {
151
+ const deployment = this.getDeployment(deploymentName);
152
+ if (deployment.type === "docker") {
153
+ // Validate SSH config if applicable
154
+ const d = deployment;
155
+ const sshConfig = d.ssh;
156
+ if (sshConfig && !sshConfig.key_path && !sshConfig.password) {
157
+ results.warnings.push(`${deploymentName}: No SSH authentication method configured`);
158
+ }
159
+ if (!d.container) {
160
+ results.errors.push(`${deploymentName}: No container configured`);
161
+ results.valid = false;
162
+ }
163
+ }
164
+ else if (deployment.type === "fly") {
165
+ const d = deployment;
166
+ if (!d.app) {
167
+ results.errors.push(`${deploymentName}: No app name configured`);
168
+ results.valid = false;
169
+ }
170
+ }
171
+ else if (deployment.type === "railway") {
172
+ const d = deployment;
173
+ if (!d.project || !d.service) {
174
+ results.errors.push(`${deploymentName}: Project and service are required`);
175
+ results.valid = false;
176
+ }
177
+ }
178
+ else if (deployment.type === "huggingface") {
179
+ const d = deployment;
180
+ if (!d.repo) {
181
+ results.errors.push(`${deploymentName}: No repo configured`);
182
+ results.valid = false;
183
+ }
184
+ }
185
+ }
186
+ catch (e) {
187
+ results.errors.push(`${deploymentName}: ${e instanceof Error ? e.message : String(e)}`);
188
+ results.valid = false;
189
+ }
190
+ }
191
+ return results;
192
+ }
193
+ /**
194
+ * Check if a deployment has changes that need to be applied.
195
+ */
196
+ async hasChanges(name) {
197
+ try {
198
+ const planResult = await this.plan(name);
199
+ const changes = planResult["changes"];
200
+ return Array.isArray(changes) && changes.length > 0;
201
+ }
202
+ catch (e) {
203
+ console.error(`Error checking for changes: ${e}`);
204
+ return false;
205
+ }
206
+ }
207
+ /**
208
+ * Get state for all deployments.
209
+ */
210
+ async getAllStates() {
211
+ return this.stateManager.getAllStates();
212
+ }
213
+ // -----------------------------------------------------------------------
214
+ // Private helpers
215
+ // -----------------------------------------------------------------------
216
+ getDeployer(name) {
217
+ const deployment = this.getDeployment(name);
218
+ const factory = this.deployerFactories[deployment.type];
219
+ if (!factory) {
220
+ throw new Error(`Unknown deployment type: ${deployment.type}`);
221
+ }
222
+ return factory(name, deployment, this.stateManager);
223
+ }
224
+ }
225
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Progress management for NodeTool deployments.
3
+ *
4
+ * Provides a console-based progress display for deployment operations
5
+ * including file downloads, Docker pulls, and health checks.
6
+ */
7
+ export interface TaskInfo {
8
+ description: string;
9
+ total: number | null;
10
+ completed: number;
11
+ }
12
+ export interface ProgressUpdate {
13
+ status?: string;
14
+ message?: string;
15
+ current_file?: string;
16
+ file_progress?: number;
17
+ total_files?: number;
18
+ downloaded_size?: number;
19
+ total_size?: number;
20
+ operation_id?: string;
21
+ downloaded_files?: number;
22
+ digest?: string;
23
+ total?: number;
24
+ completed?: number;
25
+ error?: string;
26
+ platform?: string;
27
+ python_version?: string;
28
+ hostname?: string;
29
+ memory?: {
30
+ available_gb?: number;
31
+ total_gb?: number;
32
+ used_percent?: number;
33
+ };
34
+ disk?: {
35
+ free_gb?: number;
36
+ total_gb?: number;
37
+ used_percent?: number;
38
+ };
39
+ gpus?: Array<{
40
+ name?: string;
41
+ memory_used_mb?: number;
42
+ memory_total_mb?: number;
43
+ }> | string;
44
+ }
45
+ /** Simple interface for console output — allows swapping in a custom logger. */
46
+ export interface Logger {
47
+ log(message: string): void;
48
+ error(message: string): void;
49
+ }
50
+ /**
51
+ * Manages progress display for deployment operations.
52
+ *
53
+ * Unlike the Python version which uses Rich progress bars, this uses simple
54
+ * console output that works in any Node.js environment.
55
+ */
56
+ export declare class ProgressManager {
57
+ private readonly logger;
58
+ private tasks;
59
+ private started;
60
+ constructor(logger?: Logger);
61
+ /** Start the progress display. */
62
+ start(): void;
63
+ /** Stop the progress display and clear all tasks. */
64
+ stop(): void;
65
+ /**
66
+ * Add a new progress task.
67
+ *
68
+ * @returns A numeric task index (for compatibility).
69
+ */
70
+ addTask(operationId: string, description: string, total?: number | null): number;
71
+ /**
72
+ * Update a progress task.
73
+ */
74
+ updateTask(operationId: string, completed?: number, description?: string): void;
75
+ /**
76
+ * Mark a task as completed and remove it.
77
+ */
78
+ completeTask(operationId: string): void;
79
+ /**
80
+ * Remove a task without completing it.
81
+ */
82
+ removeTask(operationId: string): void;
83
+ /**
84
+ * Display a progress update from a deployment operation.
85
+ */
86
+ displayProgressUpdate(progressUpdate: ProgressUpdate): void;
87
+ private handleProgressStatus;
88
+ private handlePullingStatus;
89
+ private handleHealthyStatus;
90
+ }
91
+ //# sourceMappingURL=progress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../src/progress.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,WAAW,QAAQ;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE;QACP,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,IAAI,CAAC,EAAE;QACL,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,IAAI,CAAC,EACD,KAAK,CAAC;QACJ,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC,GACF,MAAM,CAAC;CACZ;AAED,gFAAgF;AAChF,MAAM,WAAW,MAAM;IACrB,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAuBD;;;;;GAKG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,CAAC,EAAE,MAAM;IAI3B,kCAAkC;IAClC,KAAK,IAAI,IAAI;IAIb,qDAAqD;IACrD,IAAI,IAAI,IAAI;IAKZ;;;;OAIG;IACH,OAAO,CACL,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,KAAK,GAAE,MAAM,GAAG,IAAW,GAC1B,MAAM;IAaT;;OAEG;IACH,UAAU,CACR,WAAW,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,GACnB,IAAI;IAqBP;;OAEG;IACH,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAiBvC;;OAEG;IACH,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAQrC;;OAEG;IACH,qBAAqB,CAAC,cAAc,EAAE,cAAc,GAAG,IAAI;IA2D3D,OAAO,CAAC,oBAAoB;IAwD5B,OAAO,CAAC,mBAAmB;IAkC3B,OAAO,CAAC,mBAAmB;CAsC5B"}