@nodetool-ai/deploy 0.7.0-rc.23 → 0.8.2

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 (121) hide show
  1. package/README.md +41 -0
  2. package/dist/.nodetool-build-stamp +1 -0
  3. package/dist/admin-client.d.ts +5 -39
  4. package/dist/admin-client.d.ts.map +1 -1
  5. package/dist/admin-client.js +9 -230
  6. package/dist/admin-client.js.map +1 -1
  7. package/dist/api-user-manager.d.ts.map +1 -1
  8. package/dist/api-user-manager.js +5 -2
  9. package/dist/api-user-manager.js.map +1 -1
  10. package/dist/auth.d.ts.map +1 -1
  11. package/dist/auth.js +0 -3
  12. package/dist/auth.js.map +1 -1
  13. package/dist/compose.d.ts.map +1 -1
  14. package/dist/compose.js +5 -6
  15. package/dist/compose.js.map +1 -1
  16. package/dist/configure.d.ts +1 -43
  17. package/dist/configure.d.ts.map +1 -1
  18. package/dist/configure.js +2 -43
  19. package/dist/configure.js.map +1 -1
  20. package/dist/deployment-config.d.ts +28 -786
  21. package/dist/deployment-config.d.ts.map +1 -1
  22. package/dist/deployment-config.js +34 -218
  23. package/dist/deployment-config.js.map +1 -1
  24. package/dist/docker-run.d.ts +2 -1
  25. package/dist/docker-run.d.ts.map +1 -1
  26. package/dist/docker-run.js +6 -22
  27. package/dist/docker-run.js.map +1 -1
  28. package/dist/docker.d.ts +6 -21
  29. package/dist/docker.d.ts.map +1 -1
  30. package/dist/docker.js +6 -53
  31. package/dist/docker.js.map +1 -1
  32. package/dist/image-spec.d.ts +1 -1
  33. package/dist/index.d.ts +0 -14
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +2 -17
  36. package/dist/index.js.map +1 -1
  37. package/dist/manager.d.ts.map +1 -1
  38. package/dist/manager.js +0 -44
  39. package/dist/manager.js.map +1 -1
  40. package/dist/progress.d.ts.map +1 -1
  41. package/dist/progress.js +0 -1
  42. package/dist/progress.js.map +1 -1
  43. package/dist/remote-users.d.ts.map +1 -1
  44. package/dist/remote-users.js +1 -4
  45. package/dist/remote-users.js.map +1 -1
  46. package/dist/runpod-rest.d.ts +114 -0
  47. package/dist/runpod-rest.d.ts.map +1 -0
  48. package/dist/runpod-rest.js +150 -0
  49. package/dist/runpod-rest.js.map +1 -0
  50. package/dist/self-hosted.d.ts +17 -43
  51. package/dist/self-hosted.d.ts.map +1 -1
  52. package/dist/self-hosted.js +50 -124
  53. package/dist/self-hosted.js.map +1 -1
  54. package/dist/ssh.d.ts +9 -0
  55. package/dist/ssh.d.ts.map +1 -1
  56. package/dist/ssh.js +1 -5
  57. package/dist/ssh.js.map +1 -1
  58. package/dist/state.d.ts.map +1 -1
  59. package/dist/state.js +1 -11
  60. package/dist/state.js.map +1 -1
  61. package/dist/workflow-syncer.d.ts +3 -32
  62. package/dist/workflow-syncer.d.ts.map +1 -1
  63. package/dist/workflow-syncer.js +3 -162
  64. package/dist/workflow-syncer.js.map +1 -1
  65. package/package.json +29 -14
  66. package/dist/admin-operations.d.ts +0 -197
  67. package/dist/admin-operations.d.ts.map +0 -1
  68. package/dist/admin-operations.js +0 -433
  69. package/dist/admin-operations.js.map +0 -1
  70. package/dist/admin-routes.d.ts +0 -306
  71. package/dist/admin-routes.d.ts.map +0 -1
  72. package/dist/admin-routes.js +0 -383
  73. package/dist/admin-routes.js.map +0 -1
  74. package/dist/collection-routes.d.ts +0 -37
  75. package/dist/collection-routes.d.ts.map +0 -1
  76. package/dist/collection-routes.js +0 -43
  77. package/dist/collection-routes.js.map +0 -1
  78. package/dist/deploy-to-gcp.d.ts +0 -67
  79. package/dist/deploy-to-gcp.d.ts.map +0 -1
  80. package/dist/deploy-to-gcp.js +0 -268
  81. package/dist/deploy-to-gcp.js.map +0 -1
  82. package/dist/deploy-to-runpod.d.ts +0 -53
  83. package/dist/deploy-to-runpod.d.ts.map +0 -1
  84. package/dist/deploy-to-runpod.js +0 -207
  85. package/dist/deploy-to-runpod.js.map +0 -1
  86. package/dist/fly.d.ts +0 -40
  87. package/dist/fly.d.ts.map +0 -1
  88. package/dist/fly.js +0 -291
  89. package/dist/fly.js.map +0 -1
  90. package/dist/gcp.d.ts +0 -59
  91. package/dist/gcp.d.ts.map +0 -1
  92. package/dist/gcp.js +0 -339
  93. package/dist/gcp.js.map +0 -1
  94. package/dist/google-cloud-run-api.d.ts +0 -134
  95. package/dist/google-cloud-run-api.d.ts.map +0 -1
  96. package/dist/google-cloud-run-api.js +0 -532
  97. package/dist/google-cloud-run-api.js.map +0 -1
  98. package/dist/huggingface.d.ts +0 -69
  99. package/dist/huggingface.d.ts.map +0 -1
  100. package/dist/huggingface.js +0 -346
  101. package/dist/huggingface.js.map +0 -1
  102. package/dist/railway.d.ts +0 -65
  103. package/dist/railway.d.ts.map +0 -1
  104. package/dist/railway.js +0 -284
  105. package/dist/railway.js.map +0 -1
  106. package/dist/runpod-api.d.ts +0 -206
  107. package/dist/runpod-api.d.ts.map +0 -1
  108. package/dist/runpod-api.js +0 -703
  109. package/dist/runpod-api.js.map +0 -1
  110. package/dist/runpod.d.ts +0 -82
  111. package/dist/runpod.d.ts.map +0 -1
  112. package/dist/runpod.js +0 -188
  113. package/dist/runpod.js.map +0 -1
  114. package/dist/storage-routes.d.ts +0 -55
  115. package/dist/storage-routes.d.ts.map +0 -1
  116. package/dist/storage-routes.js +0 -160
  117. package/dist/storage-routes.js.map +0 -1
  118. package/dist/sync.d.ts +0 -38
  119. package/dist/sync.d.ts.map +0 -1
  120. package/dist/sync.js +0 -130
  121. package/dist/sync.js.map +0 -1
@@ -1,207 +0,0 @@
1
- /**
2
- * RunPod Deployment Script for NodeTool Workflows
3
- *
4
- * Automates deployment of NodeTool services to RunPod serverless infrastructure:
5
- * 1. Builds a Docker container for RunPod execution
6
- * 2. Optionally creates RunPod templates and endpoints using the RunPod SDK
7
- *
8
- * Requirements:
9
- * - Docker installed and running
10
- * - RunPod API key (for deployment operations)
11
- * - Docker registry authentication (docker login)
12
- */
13
- import { buildDockerImage, formatImageName, generateImageTag, pushToRegistry, runCommand } from "./docker.js";
14
- import { createOrUpdateRunpodTemplate, createRunpodEndpointGraphql } from "./runpod-api.js";
15
- // ---------------------------------------------------------------------------
16
- // Helpers
17
- // ---------------------------------------------------------------------------
18
- /**
19
- * Sanitize a name for use as Docker image name or RunPod template name.
20
- *
21
- * Converts to lowercase, replaces spaces and special characters with hyphens,
22
- * removes consecutive hyphens, and removes leading/trailing hyphens.
23
- */
24
- export function sanitizeName(name) {
25
- let sanitized = name.toLowerCase().replace(/[^a-zA-Z0-9-]/g, "-");
26
- sanitized = sanitized.replace(/-+/g, "-");
27
- sanitized = sanitized.replace(/^-+|-+$/g, "");
28
- return sanitized || "workflow";
29
- }
30
- // ---------------------------------------------------------------------------
31
- // Docker username resolution
32
- // ---------------------------------------------------------------------------
33
- /**
34
- * Resolve Docker username from explicit argument, env, or config.
35
- * Matches Python's `get_docker_username`.
36
- */
37
- function getDockerUsername(dockerUsername, _dockerRegistry, skipBuild, skipPush) {
38
- const username = dockerUsername ?? process.env.DOCKER_USERNAME ?? undefined;
39
- if (!username && !(skipBuild && skipPush)) {
40
- console.error("Error: Docker username is required for building and pushing images.");
41
- console.error("Provide it via one of these methods:");
42
- console.error("1. Pass dockerUsername option");
43
- console.error("2. Environment variable: export DOCKER_USERNAME=myusername");
44
- console.error("3. Docker login: docker login (will be read from ~/.docker/config.json)");
45
- throw new Error("Docker username is required");
46
- }
47
- if (username) {
48
- console.log(`Using Docker username: ${username}`);
49
- }
50
- return username;
51
- }
52
- // ---------------------------------------------------------------------------
53
- // Deployment summary
54
- // ---------------------------------------------------------------------------
55
- function printDeploymentSummary(fullImageName, imageTag, platform, templateId, endpointId, deploymentPlatform = "RunPod") {
56
- console.log(`\n${deploymentPlatform} Deployment completed successfully!`);
57
- console.log(`Image: ${fullImageName}:${imageTag}`);
58
- console.log(`Platform: ${platform}`);
59
- if (templateId)
60
- console.log(`Template ID: ${templateId}`);
61
- if (endpointId)
62
- console.log(`Endpoint ID: ${endpointId}`);
63
- }
64
- /**
65
- * Deploy workflow or chat handler to RunPod serverless infrastructure.
66
- *
67
- * This is the main deployment function that orchestrates the entire deployment
68
- * process: build, push, template creation, and endpoint creation.
69
- */
70
- export async function deployToRunpod(opts) {
71
- const { deployment } = opts;
72
- const env = { ...(opts.env ?? {}) };
73
- let dockerUsername = opts.dockerUsername ?? deployment.docker.username ?? undefined;
74
- const dockerRegistry = opts.dockerRegistry ?? deployment.docker.registry ?? "docker.io";
75
- const imageName = opts.imageName ?? deployment.image.name;
76
- const platform = opts.platform ?? deployment.platform ?? "linux/amd64";
77
- let templateName = opts.templateName ?? opts.name ?? deployment.template_name ?? undefined;
78
- const computeType = deployment.compute_type ?? "GPU";
79
- const gpuTypes = opts.gpuTypes ?? deployment.gpu_types ?? [];
80
- const gpuCount = opts.gpuCount ?? deployment.gpu_count ?? undefined;
81
- const dataCenters = opts.dataCenters ?? deployment.data_centers ?? [];
82
- const workersMin = opts.workersMin ?? deployment.workers_min ?? 0;
83
- const workersMax = opts.workersMax ?? deployment.workers_max ?? 3;
84
- const idleTimeout = opts.idleTimeout ?? deployment.idle_timeout ?? 5;
85
- const executionTimeout = opts.executionTimeout ?? deployment.execution_timeout ?? undefined;
86
- const flashboot = opts.flashboot ?? deployment.flashboot ?? false;
87
- const networkVolumeId = deployment.network_volume_id ?? undefined;
88
- const skipBuild = opts.skipBuild ?? false;
89
- const skipPush = opts.skipPush ?? false;
90
- const skipTemplate = opts.skipTemplate ?? false;
91
- const skipEndpoint = opts.skipEndpoint ?? false;
92
- const noCache = opts.noCache ?? false;
93
- const noAutoPush = opts.noAutoPush ?? false;
94
- // Get Docker username
95
- dockerUsername = getDockerUsername(dockerUsername, dockerRegistry, skipBuild, skipPush);
96
- // Generate unique tag if not provided
97
- let imageTag;
98
- if (opts.tag ?? deployment.image.tag) {
99
- imageTag = opts.tag ?? deployment.image.tag;
100
- console.log(`Using provided tag: ${imageTag}`);
101
- }
102
- else {
103
- imageTag = generateImageTag();
104
- console.log(`Generated unique tag: ${imageTag}`);
105
- }
106
- // Check if Docker is running
107
- if (!skipBuild) {
108
- try {
109
- runCommand("docker --version", true);
110
- }
111
- catch {
112
- console.error("Error: Docker is not installed or not running");
113
- throw new Error("Docker is not available");
114
- }
115
- }
116
- // Format full image name with registry and username
117
- if (!imageName) {
118
- throw new Error("Image name is required");
119
- }
120
- if (!dockerUsername) {
121
- throw new Error("Docker username is required");
122
- }
123
- const fullImageName = formatImageName(imageName, dockerUsername, dockerRegistry);
124
- console.log(`Full image name: ${fullImageName}`);
125
- templateName = templateName ?? imageName;
126
- console.log(`Using template name: ${templateName}`);
127
- let templateId;
128
- let endpointId;
129
- try {
130
- // Build Docker image
131
- let imagePushedDuringBuild = false;
132
- if (!skipBuild) {
133
- imagePushedDuringBuild = buildDockerImage({
134
- imageName: fullImageName,
135
- tag: imageTag,
136
- platform,
137
- useCache: !noCache,
138
- autoPush: !noAutoPush
139
- });
140
- }
141
- // Push to registry if needed
142
- if (!skipPush && !imagePushedDuringBuild) {
143
- pushToRegistry(fullImageName, imageTag, dockerRegistry);
144
- }
145
- else if (imagePushedDuringBuild) {
146
- console.log(`Image ${fullImageName}:${imageTag} already pushed during optimized build`);
147
- }
148
- // Create or update RunPod template
149
- if (!skipTemplate) {
150
- env.PORT = "8000";
151
- env.PORT_HEALTH = "8000";
152
- if (!env.NODETOOL_SERVER_MODE) {
153
- env.NODETOOL_SERVER_MODE = "private";
154
- }
155
- // Configure paths from persistent_paths if available
156
- const persistentPaths = deployment.persistent_paths;
157
- if (persistentPaths) {
158
- if (!env.USERS_FILE)
159
- env.USERS_FILE = persistentPaths.users_file;
160
- if (!env.DB_PATH)
161
- env.DB_PATH = persistentPaths.db_path;
162
- if (!env.CHROMA_PATH)
163
- env.CHROMA_PATH = persistentPaths.chroma_path;
164
- if (!env.HF_HOME)
165
- env.HF_HOME = persistentPaths.hf_cache;
166
- if (!env.ASSET_BUCKET)
167
- env.ASSET_BUCKET = persistentPaths.asset_bucket;
168
- if (!env.AUTH_PROVIDER)
169
- env.AUTH_PROVIDER = "multi_user";
170
- }
171
- else {
172
- if (!env.AUTH_PROVIDER)
173
- env.AUTH_PROVIDER = "static";
174
- }
175
- templateId = await createOrUpdateRunpodTemplate(templateName, fullImageName, imageTag, env);
176
- }
177
- // Create RunPod endpoint
178
- if (!skipEndpoint && templateId) {
179
- const gpuTypeIds = gpuTypes.length > 0 ? gpuTypes : undefined;
180
- const dataCenterIds = dataCenters.length > 0 ? dataCenters : undefined;
181
- if (!opts.name) {
182
- throw new Error("Name is required for endpoint creation");
183
- }
184
- endpointId = await createRunpodEndpointGraphql({
185
- templateId,
186
- name: opts.name,
187
- computeType,
188
- gpuTypeIds,
189
- gpuCount,
190
- dataCenterIds,
191
- workersMin,
192
- workersMax,
193
- idleTimeout,
194
- executionTimeoutMs: executionTimeout,
195
- flashboot,
196
- networkVolumeId
197
- });
198
- }
199
- // Print deployment summary
200
- printDeploymentSummary(fullImageName, imageTag, platform, templateId, endpointId, "RunPod");
201
- }
202
- catch (err) {
203
- console.error("Deployment failed:", err);
204
- throw err;
205
- }
206
- }
207
- //# sourceMappingURL=deploy-to-runpod.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"deploy-to-runpod.js","sourceRoot":"","sources":["../src/deploy-to-runpod.ts"],"names":[],"mappings":"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"}
package/dist/fly.d.ts DELETED
@@ -1,40 +0,0 @@
1
- /**
2
- * Fly.io deployment implementation for NodeTool.
3
- *
4
- * Handles deployment to Fly.io using the `flyctl` CLI, including:
5
- * - Docker image building from nodetool-image.yaml specs
6
- * - Fly app creation and management
7
- * - Volume provisioning
8
- * - Secret/environment variable configuration
9
- * - Service deployment and monitoring
10
- */
11
- import { StateManager } from "./state.js";
12
- import type { FlyDeployment } from "./deployment-config.js";
13
- import type { DeployResult, DeployPlan, DeployStatus } from "./self-hosted.js";
14
- /**
15
- * Deploys NodeTool to Fly.io using the flyctl CLI.
16
- *
17
- * Lifecycle:
18
- * plan() — check what will be created/updated
19
- * apply() — build image, create app, set secrets, deploy
20
- * destroy() — tear down the Fly app
21
- * status() — query current app status
22
- * logs() — stream or tail app logs
23
- */
24
- export declare class FlyDeployer {
25
- readonly deploymentName: string;
26
- readonly deployment: FlyDeployment;
27
- readonly stateManager: StateManager;
28
- constructor(deploymentName: string, deployment: FlyDeployment, stateManager?: StateManager);
29
- plan(): Promise<DeployPlan>;
30
- apply(opts?: {
31
- dryRun?: boolean;
32
- }): Promise<DeployResult>;
33
- destroy(): Promise<DeployResult>;
34
- status(): Promise<DeployStatus>;
35
- logs(opts?: {
36
- follow?: boolean;
37
- tail?: number;
38
- }): Promise<string>;
39
- }
40
- //# sourceMappingURL=fly.d.ts.map
package/dist/fly.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"fly.d.ts","sourceRoot":"","sources":["../src/fly.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AASH,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAiE/E;;;;;;;;;GASG;AACH,qBAAa,WAAW;IACtB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC;IACnC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;gBAGlC,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,aAAa,EACzB,YAAY,CAAC,EAAE,YAAY;IASvB,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC;IA2C3B,KAAK,CAAC,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,CAAC;IAyHzD,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC;IAkChC,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC;IAoC/B,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;CAqBxE"}
package/dist/fly.js DELETED
@@ -1,291 +0,0 @@
1
- /**
2
- * Fly.io deployment implementation for NodeTool.
3
- *
4
- * Handles deployment to Fly.io using the `flyctl` CLI, including:
5
- * - Docker image building from nodetool-image.yaml specs
6
- * - Fly app creation and management
7
- * - Volume provisioning
8
- * - Secret/environment variable configuration
9
- * - Service deployment and monitoring
10
- */
11
- import { execFile } from "node:child_process";
12
- import { promisify } from "node:util";
13
- import { resolve } from "node:path";
14
- import { loadImageSpec } from "./image-spec.js";
15
- import { buildImage } from "./image-builder.js";
16
- import { DeploymentStatus } from "./deployment-config.js";
17
- import { StateManager } from "./state.js";
18
- const execFileAsync = promisify(execFile);
19
- // ============================================================================
20
- // Helpers
21
- // ============================================================================
22
- /**
23
- * Run a flyctl command and return parsed JSON output.
24
- *
25
- * Throws a descriptive error when flyctl is not installed or the command fails.
26
- */
27
- async function flyctl(args, opts) {
28
- try {
29
- const { stdout } = await execFileAsync("flyctl", args, {
30
- timeout: opts?.timeout ?? 60_000
31
- });
32
- return stdout;
33
- }
34
- catch (e) {
35
- const err = e;
36
- if (err.code === "ENOENT") {
37
- throw new Error("flyctl not found — install from https://fly.io/docs/flyctl/install/");
38
- }
39
- const msg = e instanceof Error ? e.message : String(e);
40
- throw new Error(`flyctl ${args[0]} failed: ${msg}`);
41
- }
42
- }
43
- /**
44
- * Run flyctl and parse the JSON output.
45
- */
46
- async function flyctlJson(args, opts) {
47
- const raw = await flyctl(args, opts);
48
- return JSON.parse(raw);
49
- }
50
- /**
51
- * Check whether a Fly app already exists.
52
- */
53
- async function appExists(app) {
54
- try {
55
- const apps = await flyctlJson([
56
- "apps",
57
- "list",
58
- "--json"
59
- ]);
60
- return apps.some((a) => (a.Name ?? a.name) === app);
61
- }
62
- catch {
63
- return false;
64
- }
65
- }
66
- // ============================================================================
67
- // FlyDeployer
68
- // ============================================================================
69
- /**
70
- * Deploys NodeTool to Fly.io using the flyctl CLI.
71
- *
72
- * Lifecycle:
73
- * plan() — check what will be created/updated
74
- * apply() — build image, create app, set secrets, deploy
75
- * destroy() — tear down the Fly app
76
- * status() — query current app status
77
- * logs() — stream or tail app logs
78
- */
79
- export class FlyDeployer {
80
- deploymentName;
81
- deployment;
82
- stateManager;
83
- constructor(deploymentName, deployment, stateManager) {
84
- this.deploymentName = deploymentName;
85
- this.deployment = deployment;
86
- this.stateManager = stateManager ?? new StateManager();
87
- }
88
- // ---------- plan ----------
89
- async plan() {
90
- const plan = {
91
- deployment_name: this.deploymentName,
92
- host: `${this.deployment.app}.fly.dev`,
93
- type: "fly",
94
- changes: [],
95
- will_create: [],
96
- will_update: [],
97
- will_destroy: []
98
- };
99
- const exists = await appExists(this.deployment.app);
100
- if (!exists) {
101
- plan.changes.push("Initial deployment — will create all resources");
102
- plan.will_create.push(`Fly app: ${this.deployment.app}`);
103
- }
104
- else {
105
- plan.changes.push("App exists — will update deployment");
106
- plan.will_update.push(`Fly app: ${this.deployment.app}`);
107
- }
108
- plan.will_create.push("Docker image (if changed)");
109
- if (this.deployment.volumes?.length) {
110
- for (const vol of this.deployment.volumes) {
111
- plan.will_create.push(`Volume: ${vol.name} (${vol.size}GB at ${vol.mount})`);
112
- }
113
- }
114
- if (this.deployment.environment) {
115
- const keys = Object.keys(this.deployment.environment);
116
- if (keys.length > 0) {
117
- plan.will_update.push(`Secrets: ${keys.join(", ")}`);
118
- }
119
- }
120
- return plan;
121
- }
122
- // ---------- apply ----------
123
- async apply(opts) {
124
- if (!/^[\w-]+$/.test(this.deployment.app)) {
125
- throw new Error(`Invalid Fly app name: "${this.deployment.app}"`);
126
- }
127
- if (opts?.dryRun) {
128
- return (await this.plan());
129
- }
130
- const results = {
131
- deployment_name: this.deploymentName,
132
- status: "success",
133
- steps: [],
134
- errors: []
135
- };
136
- try {
137
- await this.stateManager.updateDeploymentStatus(this.deploymentName, DeploymentStatus.DEPLOYING);
138
- const app = this.deployment.app;
139
- const region = this.deployment.region;
140
- const imageTag = `registry.fly.io/${app}:latest`;
141
- // 1. Load and validate image spec, then build Docker image
142
- const specPath = resolve(this.deployment.image);
143
- const spec = await loadImageSpec(specPath);
144
- results.steps.push(`Loaded image spec from ${specPath}`);
145
- // Build Docker image tagged for Fly registry
146
- await buildImage(spec, imageTag);
147
- results.steps.push(`Built Docker image: ${imageTag}`);
148
- // Push to Fly registry
149
- await execFileAsync("docker", ["push", imageTag], { timeout: 600_000 });
150
- results.steps.push(`Pushed image to Fly registry`);
151
- // 2. Ensure Fly app exists
152
- const exists = await appExists(app);
153
- if (!exists) {
154
- await flyctl(["apps", "create", app, "--json"]);
155
- results.steps.push(`Created Fly app: ${app}`);
156
- }
157
- else {
158
- results.steps.push(`Fly app already exists: ${app}`);
159
- }
160
- // 3. Create volumes if specified
161
- if (this.deployment.volumes?.length) {
162
- for (const vol of this.deployment.volumes) {
163
- try {
164
- await flyctl([
165
- "volumes",
166
- "create",
167
- vol.name,
168
- "--app",
169
- app,
170
- "--region",
171
- region,
172
- "--size",
173
- String(vol.size),
174
- "--json",
175
- "--yes"
176
- ]);
177
- results.steps.push(`Created volume: ${vol.name} (${vol.size}GB at ${vol.mount})`);
178
- }
179
- catch (e) {
180
- // Volume may already exist; not fatal
181
- const msg = e instanceof Error ? e.message : String(e);
182
- if (!msg.includes("already exists")) {
183
- results.errors.push(`Volume ${vol.name}: ${msg}`);
184
- }
185
- else {
186
- results.steps.push(`Volume already exists: ${vol.name}`);
187
- }
188
- }
189
- }
190
- }
191
- // 4. Set environment variables as secrets
192
- if (this.deployment.environment) {
193
- const entries = Object.entries(this.deployment.environment);
194
- if (entries.length > 0) {
195
- const secretArgs = entries.map(([k, v]) => `${k}=${v}`);
196
- await flyctl(["secrets", "set", "--app", app, ...secretArgs]);
197
- results.steps.push(`Set ${entries.length} secret(s)`);
198
- }
199
- }
200
- // 5. Deploy
201
- await flyctl(["deploy", "--app", app, "--image", imageTag, "--region", region], { timeout: 600_000 });
202
- results.steps.push("Deployment complete");
203
- // 6. Update state
204
- await this.stateManager.writeState(this.deploymentName, {
205
- status: DeploymentStatus.SERVING,
206
- app,
207
- region,
208
- url: `https://${app}.fly.dev`
209
- });
210
- }
211
- catch (e) {
212
- results.status = "error";
213
- results.errors.push(e instanceof Error ? e.message : String(e));
214
- await this.stateManager.updateDeploymentStatus(this.deploymentName, DeploymentStatus.ERROR);
215
- throw e;
216
- }
217
- return results;
218
- }
219
- // ---------- destroy ----------
220
- async destroy() {
221
- const results = {
222
- deployment_name: this.deploymentName,
223
- status: "success",
224
- steps: [],
225
- errors: []
226
- };
227
- try {
228
- results.steps.push(`Destroying Fly app: ${this.deployment.app}...`);
229
- await flyctl(["apps", "destroy", this.deployment.app, "--yes"]);
230
- results.steps.push("App destroyed successfully");
231
- await this.stateManager.updateDeploymentStatus(this.deploymentName, DeploymentStatus.DESTROYED);
232
- }
233
- catch (e) {
234
- results.status = "error";
235
- results.errors.push(e instanceof Error ? e.message : String(e));
236
- await this.stateManager.updateDeploymentStatus(this.deploymentName, DeploymentStatus.ERROR);
237
- throw e;
238
- }
239
- return results;
240
- }
241
- // ---------- status ----------
242
- async status() {
243
- const statusInfo = {
244
- deployment_name: this.deploymentName,
245
- host: `${this.deployment.app}.fly.dev`,
246
- type: "fly"
247
- };
248
- // Get saved state
249
- const state = await this.stateManager.readState(this.deploymentName);
250
- if (state) {
251
- statusInfo.status = state["status"] ?? "unknown";
252
- statusInfo.last_deployed = state["last_deployed"];
253
- statusInfo.url = state["url"];
254
- }
255
- // Get live status from Fly
256
- try {
257
- const raw = await flyctl([
258
- "status",
259
- "--app",
260
- this.deployment.app,
261
- "--json"
262
- ]);
263
- const live = JSON.parse(raw);
264
- statusInfo.live_status = (live["Status"] ?? live["status"]);
265
- }
266
- catch (e) {
267
- statusInfo.live_status_error = e instanceof Error ? e.message : String(e);
268
- }
269
- return statusInfo;
270
- }
271
- // ---------- logs ----------
272
- async logs(opts) {
273
- if (opts?.follow) {
274
- throw new Error("Streaming logs not supported. Use 'flyctl logs --app " +
275
- `${this.deployment.app} --follow' directly.`);
276
- }
277
- const args = ["logs", "--app", this.deployment.app];
278
- if (opts?.tail !== undefined) {
279
- args.push("--num", String(opts.tail));
280
- }
281
- try {
282
- const stdout = await flyctl(args, { timeout: 30_000 });
283
- return stdout;
284
- }
285
- catch (e) {
286
- const msg = e instanceof Error ? e.message : String(e);
287
- throw new Error(`Failed to fetch logs: ${msg}`);
288
- }
289
- }
290
- }
291
- //# sourceMappingURL=fly.js.map
package/dist/fly.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"fly.js","sourceRoot":"","sources":["../src/fly.ts"],"names":[],"mappings":"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"}
package/dist/gcp.d.ts DELETED
@@ -1,59 +0,0 @@
1
- /**
2
- * Google Cloud Run deployment implementation for NodeTool.
3
- *
4
- * Handles deployment to Google Cloud Run, including:
5
- * - Docker image building and pushing to GCR/Artifact Registry
6
- * - Cloud Run service deployment
7
- * - Service management
8
- * - IAM permission setup
9
- *
10
- * Ported from nodetool.deploy.gcp (Python).
11
- */
12
- import type { GCPDeployment } from "./deployment-config.js";
13
- import { StateManager } from "./state.js";
14
- /**
15
- * Handles deployment to Google Cloud Run.
16
- *
17
- * Orchestrates the entire GCP deployment process including:
18
- * - Docker image building and pushing
19
- * - Cloud Run service deployment
20
- * - Service configuration
21
- * - State management
22
- */
23
- export declare class GCPDeployer {
24
- readonly deploymentName: string;
25
- readonly deployment: GCPDeployment;
26
- readonly stateManager: StateManager;
27
- constructor(deploymentName: string, deployment: GCPDeployment, stateManager?: StateManager);
28
- /**
29
- * Detect changes between local configuration and remote service.
30
- */
31
- private _detectChanges;
32
- /**
33
- * Generate a deployment plan showing what changes will be made.
34
- */
35
- plan(): Promise<Record<string, unknown>>;
36
- /**
37
- * Apply the deployment to Google Cloud Run.
38
- *
39
- * @param dryRun If true, only show what would be done without executing.
40
- */
41
- apply(dryRun?: boolean): Promise<Record<string, unknown>>;
42
- /**
43
- * Get current deployment status.
44
- */
45
- status(): Promise<Record<string, unknown>>;
46
- /**
47
- * Get logs from Cloud Run service.
48
- *
49
- * @param service Not used for GCP (kept for interface compatibility).
50
- * @param follow Follow log output (not recommended for programmatic use).
51
- * @param tail Number of lines to show.
52
- */
53
- logs(_service?: string, follow?: boolean, tail?: number): Promise<string>;
54
- /**
55
- * Destroy the deployment (delete Cloud Run service).
56
- */
57
- destroy(): Promise<Record<string, unknown>>;
58
- }
59
- //# sourceMappingURL=gcp.d.ts.map
package/dist/gcp.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"gcp.d.ts","sourceRoot":"","sources":["../src/gcp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAe1C;;;;;;;;GAQG;AACH,qBAAa,WAAW;IACtB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC;IACnC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;gBAGlC,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,aAAa,EACzB,YAAY,CAAC,EAAE,YAAY;IAS7B;;OAEG;IACH,OAAO,CAAC,cAAc;IA4ItB;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAkD9C;;;;OAIG;IACG,KAAK,CAAC,MAAM,UAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IA6D7D;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IA4ChD;;;;;;OAMG;IACG,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,UAAQ,EAAE,IAAI,SAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA4B1E;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAyClD"}