@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.
- package/dist/admin-client.d.ts +58 -0
- package/dist/admin-client.d.ts.map +1 -0
- package/dist/admin-client.js +275 -0
- package/dist/admin-client.js.map +1 -0
- package/dist/admin-operations.d.ts +197 -0
- package/dist/admin-operations.d.ts.map +1 -0
- package/dist/admin-operations.js +433 -0
- package/dist/admin-operations.js.map +1 -0
- package/dist/admin-routes.d.ts +306 -0
- package/dist/admin-routes.d.ts.map +1 -0
- package/dist/admin-routes.js +383 -0
- package/dist/admin-routes.js.map +1 -0
- package/dist/api-user-manager.d.ts +72 -0
- package/dist/api-user-manager.d.ts.map +1 -0
- package/dist/api-user-manager.js +89 -0
- package/dist/api-user-manager.js.map +1 -0
- package/dist/auth.d.ts +67 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +142 -0
- package/dist/auth.js.map +1 -0
- package/dist/collection-routes.d.ts +37 -0
- package/dist/collection-routes.d.ts.map +1 -0
- package/dist/collection-routes.js +43 -0
- package/dist/collection-routes.js.map +1 -0
- package/dist/compose.d.ts +52 -0
- package/dist/compose.d.ts.map +1 -0
- package/dist/compose.js +153 -0
- package/dist/compose.js.map +1 -0
- package/dist/configure.d.ts +87 -0
- package/dist/configure.d.ts.map +1 -0
- package/dist/configure.js +104 -0
- package/dist/configure.js.map +1 -0
- package/dist/deploy-to-gcp.d.ts +67 -0
- package/dist/deploy-to-gcp.d.ts.map +1 -0
- package/dist/deploy-to-gcp.js +268 -0
- package/dist/deploy-to-gcp.js.map +1 -0
- package/dist/deploy-to-runpod.d.ts +53 -0
- package/dist/deploy-to-runpod.d.ts.map +1 -0
- package/dist/deploy-to-runpod.js +207 -0
- package/dist/deploy-to-runpod.js.map +1 -0
- package/dist/deploy.d.ts +54 -0
- package/dist/deploy.d.ts.map +1 -0
- package/dist/deploy.js +82 -0
- package/dist/deploy.js.map +1 -0
- package/dist/deployment-config.d.ts +1073 -0
- package/dist/deployment-config.d.ts.map +1 -0
- package/dist/deployment-config.js +536 -0
- package/dist/deployment-config.js.map +1 -0
- package/dist/docker-run.d.ts +85 -0
- package/dist/docker-run.d.ts.map +1 -0
- package/dist/docker-run.js +202 -0
- package/dist/docker-run.js.map +1 -0
- package/dist/docker.d.ts +98 -0
- package/dist/docker.d.ts.map +1 -0
- package/dist/docker.js +396 -0
- package/dist/docker.js.map +1 -0
- package/dist/fly.d.ts +40 -0
- package/dist/fly.d.ts.map +1 -0
- package/dist/fly.js +291 -0
- package/dist/fly.js.map +1 -0
- package/dist/gcp.d.ts +59 -0
- package/dist/gcp.d.ts.map +1 -0
- package/dist/gcp.js +339 -0
- package/dist/gcp.js.map +1 -0
- package/dist/google-cloud-run-api.d.ts +134 -0
- package/dist/google-cloud-run-api.d.ts.map +1 -0
- package/dist/google-cloud-run-api.js +532 -0
- package/dist/google-cloud-run-api.js.map +1 -0
- package/dist/huggingface.d.ts +69 -0
- package/dist/huggingface.d.ts.map +1 -0
- package/dist/huggingface.js +346 -0
- package/dist/huggingface.js.map +1 -0
- package/dist/image-builder.d.ts +35 -0
- package/dist/image-builder.d.ts.map +1 -0
- package/dist/image-builder.js +157 -0
- package/dist/image-builder.js.map +1 -0
- package/dist/image-spec.d.ts +41 -0
- package/dist/image-spec.d.ts.map +1 -0
- package/dist/image-spec.js +49 -0
- package/dist/image-spec.js.map +1 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +45 -0
- package/dist/index.js.map +1 -0
- package/dist/manager.d.ts +121 -0
- package/dist/manager.d.ts.map +1 -0
- package/dist/manager.js +225 -0
- package/dist/manager.js.map +1 -0
- package/dist/progress.d.ts +91 -0
- package/dist/progress.d.ts.map +1 -0
- package/dist/progress.js +262 -0
- package/dist/progress.js.map +1 -0
- package/dist/railway.d.ts +65 -0
- package/dist/railway.d.ts.map +1 -0
- package/dist/railway.js +284 -0
- package/dist/railway.js.map +1 -0
- package/dist/remote-users.d.ts +74 -0
- package/dist/remote-users.d.ts.map +1 -0
- package/dist/remote-users.js +172 -0
- package/dist/remote-users.js.map +1 -0
- package/dist/runpod-api.d.ts +206 -0
- package/dist/runpod-api.d.ts.map +1 -0
- package/dist/runpod-api.js +703 -0
- package/dist/runpod-api.js.map +1 -0
- package/dist/runpod.d.ts +82 -0
- package/dist/runpod.d.ts.map +1 -0
- package/dist/runpod.js +188 -0
- package/dist/runpod.js.map +1 -0
- package/dist/self-hosted.d.ts +157 -0
- package/dist/self-hosted.d.ts.map +1 -0
- package/dist/self-hosted.js +799 -0
- package/dist/self-hosted.js.map +1 -0
- package/dist/ssh.d.ts +166 -0
- package/dist/ssh.d.ts.map +1 -0
- package/dist/ssh.js +430 -0
- package/dist/ssh.js.map +1 -0
- package/dist/state.d.ts +83 -0
- package/dist/state.d.ts.map +1 -0
- package/dist/state.js +368 -0
- package/dist/state.js.map +1 -0
- package/dist/storage-routes.d.ts +55 -0
- package/dist/storage-routes.d.ts.map +1 -0
- package/dist/storage-routes.js +160 -0
- package/dist/storage-routes.js.map +1 -0
- package/dist/sync.d.ts +38 -0
- package/dist/sync.d.ts.map +1 -0
- package/dist/sync.js +130 -0
- package/dist/sync.js.map +1 -0
- package/dist/workflow-syncer.d.ts +51 -0
- package/dist/workflow-syncer.d.ts.map +1 -0
- package/dist/workflow-syncer.js +192 -0
- package/dist/workflow-syncer.js.map +1 -0
- 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"}
|
package/dist/index.d.ts
ADDED
|
@@ -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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"}
|
package/dist/manager.js
ADDED
|
@@ -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"}
|