@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
package/package.json CHANGED
@@ -1,34 +1,36 @@
1
1
  {
2
2
  "name": "@nodetool-ai/deploy",
3
- "version": "0.7.0-rc.23",
3
+ "version": "0.8.2",
4
4
  "type": "module",
5
+ "engines": {
6
+ "node": ">=22.0.0"
7
+ },
5
8
  "main": "dist/index.js",
6
9
  "types": "dist/index.d.ts",
7
10
  "scripts": {
8
11
  "build": "node ../../scripts/build-typescript-workspace.mjs",
9
- "test": "vitest run",
10
- "test:watch": "vitest",
11
- "lint": "tsc --noEmit"
12
+ "test": "node ../../scripts/run-vitest.mjs run",
13
+ "test:watch": "node ../../scripts/run-vitest.mjs",
14
+ "lint": "node ../../scripts/run-tsc.mjs --noEmit"
12
15
  },
13
16
  "dependencies": {
14
- "@nodetool-ai/config": "^0.7.0-rc.23",
15
- "@nodetool-ai/protocol": "^0.7.0-rc.23",
16
- "@nodetool-ai/runtime": "^0.7.0-rc.23",
17
- "@nodetool-ai/security": "^0.7.0-rc.23",
18
- "@nodetool-ai/storage": "^0.7.0-rc.23",
19
- "@nodetool-ai/websocket": "^0.7.0-rc.23",
17
+ "@nodetool-ai/config": "^0.8.2",
18
+ "@nodetool-ai/protocol": "^0.8.2",
19
+ "@nodetool-ai/runtime": "^0.8.2",
20
+ "@nodetool-ai/security": "^0.8.2",
21
+ "@nodetool-ai/storage": "^0.8.2",
22
+ "@nodetool-ai/websocket": "^0.8.2",
20
23
  "@trpc/client": "^11.0.0",
21
24
  "@trpc/server": "^11.0.0",
22
- "js-yaml": "^4.1.0",
23
- "superjson": "^2.2.2",
25
+ "js-yaml": "^4.3.2",
24
26
  "ssh2": "^1.15.0",
25
27
  "zod": "^4.0.0"
26
28
  },
27
29
  "devDependencies": {
28
30
  "@types/js-yaml": "^4.0.9",
29
31
  "@types/ssh2": "^1.15.0",
30
- "typescript": "^5.7.2",
31
- "vitest": "^4.1.2"
32
+ "typescript": "npm:@typescript/typescript6@6.0.2",
33
+ "vitest": "^5.0.1"
32
34
  },
33
35
  "exports": {
34
36
  ".": {
@@ -54,5 +56,18 @@
54
56
  "files": [
55
57
  "dist",
56
58
  "README.md"
59
+ ],
60
+ "description": "NodeTool deployment toolkit — Docker image builds, SSH/compose provisioning, and self-hosted server management",
61
+ "keywords": [
62
+ "nodetool",
63
+ "ai",
64
+ "workflow",
65
+ "workflow-automation",
66
+ "typescript",
67
+ "deployment",
68
+ "docker",
69
+ "ssh",
70
+ "self-hosted",
71
+ "devops"
57
72
  ]
58
73
  }
@@ -1,197 +0,0 @@
1
- /**
2
- * Admin Operations Module
3
- *
4
- * Provides shared admin operations for model management including:
5
- * - Hugging Face model downloads (with streaming progress)
6
- * - Ollama model downloads (with streaming progress)
7
- * - Cache management and scanning
8
- * - Model deletion
9
- *
10
- * This is a TypeScript port of the Python admin_operations module.
11
- * Platform-specific integrations (huggingface_hub, ollama client) are
12
- * abstracted behind injectable interfaces so callers can provide their
13
- * own implementations.
14
- */
15
- /** Progress update yielded during download operations. */
16
- export interface AdminProgressUpdate {
17
- status: "starting" | "progress" | "completed" | "error";
18
- repo_id?: string;
19
- model?: string;
20
- message?: string;
21
- error?: string;
22
- current_file?: string;
23
- file_progress?: number;
24
- total_files?: number;
25
- downloaded_files?: number;
26
- downloaded_size?: number;
27
- total_size?: number;
28
- cached_files?: number;
29
- local_path?: string;
30
- error_file?: string;
31
- [key: string]: unknown;
32
- }
33
- /** Serialisable representation of a cached file. */
34
- export interface CacheFileInfo {
35
- file_name: string;
36
- size_on_disk: number;
37
- file_path: string;
38
- blob_path: string;
39
- }
40
- /** Serialisable representation of a cached revision. */
41
- export interface CacheRevisionInfo {
42
- commit_hash: string;
43
- size_on_disk: number;
44
- snapshot_path: string;
45
- files: CacheFileInfo[];
46
- }
47
- /** Serialisable representation of a cached repository. */
48
- export interface CacheRepoInfo {
49
- repo_id: string;
50
- repo_type: string;
51
- repo_path: string;
52
- size_on_disk: number;
53
- nb_files: number;
54
- revisions: CacheRevisionInfo[];
55
- }
56
- /** Serialisable representation of the full HuggingFace cache. */
57
- export interface CacheInfo {
58
- size_on_disk: number;
59
- repos: CacheRepoInfo[];
60
- warnings: string[];
61
- }
62
- /**
63
- * Minimal file info returned by the HuggingFace repo tree listing.
64
- */
65
- export interface HFRepoFile {
66
- path: string;
67
- size: number;
68
- }
69
- /**
70
- * Abstraction over HuggingFace Hub operations so callers can inject
71
- * their own implementation (or a mock for testing).
72
- */
73
- export interface HFHubAdapter {
74
- /** List files in a repository (recursive). */
75
- listRepoFiles(repoId: string, token?: string): Promise<HFRepoFile[]>;
76
- /**
77
- * Check if a file is already present in cache.
78
- * Returns the local cache path if found, or null.
79
- */
80
- tryLoadFromCache(repoId: string, filePath: string): string | null;
81
- /** Download a single file and return its local path. */
82
- downloadFile(repoId: string, filePath: string, cacheDir: string, token?: string): Promise<string>;
83
- /** Scan the local HF cache directory and return structured info. */
84
- scanCache(cacheDir?: string): CacheInfo;
85
- /** Delete a cached model by repo ID. */
86
- deleteCachedModel(repoId: string): Promise<void>;
87
- }
88
- /**
89
- * Filter function matching Python's `filter_repo_paths`.
90
- * A simple glob-ish filter: allow_patterns keeps only matches,
91
- * ignore_patterns removes matches.
92
- */
93
- export declare function filterRepoFiles(files: HFRepoFile[], allowPatterns?: string[] | null, ignorePatterns?: string[] | null): HFRepoFile[];
94
- /**
95
- * Abstraction over the Ollama client.
96
- */
97
- export interface OllamaAdapter {
98
- /**
99
- * Pull a model with streaming progress.
100
- * Each yielded object should have at least a `status` field.
101
- */
102
- pull(modelName: string): AsyncGenerator<Record<string, unknown>>;
103
- }
104
- /**
105
- * Resolve an HF token.
106
- *
107
- * Priority:
108
- * 1. Explicit token passed in
109
- * 2. HF_TOKEN environment variable
110
- * 3. getSecret callback (e.g. database lookup)
111
- */
112
- export declare function getHFToken(options?: {
113
- token?: string;
114
- userId?: string;
115
- getSecret?: (key: string, userId: string) => Promise<string | null>;
116
- }): Promise<string | null>;
117
- export interface AdminDownloadManagerOptions {
118
- token?: string;
119
- hub?: HFHubAdapter;
120
- }
121
- /**
122
- * Download manager for admin operations that yields progress updates.
123
- */
124
- export declare class AdminDownloadManager {
125
- token: string | null;
126
- hub: HFHubAdapter;
127
- private tokenInitialized;
128
- constructor(options: AdminDownloadManagerOptions & {
129
- hub: HFHubAdapter;
130
- });
131
- /**
132
- * Factory that resolves the token asynchronously before construction.
133
- */
134
- static create(hub: HFHubAdapter, options?: {
135
- userId?: string;
136
- getSecret?: (key: string, userId: string) => Promise<string | null>;
137
- }): Promise<AdminDownloadManager>;
138
- /**
139
- * Download a HuggingFace model with detailed progress updates.
140
- */
141
- downloadWithProgress(options: {
142
- repoId: string;
143
- cacheDir?: string;
144
- filePath?: string;
145
- ignorePatterns?: string[] | null;
146
- allowPatterns?: string[] | null;
147
- userId?: string;
148
- getSecret?: (key: string, userId: string) => Promise<string | null>;
149
- }): AsyncGenerator<AdminProgressUpdate>;
150
- }
151
- /**
152
- * Stream Ollama model download progress.
153
- */
154
- export declare function streamOllamaModelPull(modelName: string, ollama: OllamaAdapter): AsyncGenerator<AdminProgressUpdate>;
155
- /**
156
- * Stream HuggingFace model download progress using AdminDownloadManager.
157
- */
158
- export declare function streamHFModelDownload(hub: HFHubAdapter, options: {
159
- repoId: string;
160
- cacheDir?: string;
161
- filePath?: string;
162
- ignorePatterns?: string[] | null;
163
- allowPatterns?: string[] | null;
164
- userId?: string;
165
- getSecret?: (key: string, userId: string) => Promise<string | null>;
166
- }): AsyncGenerator<AdminProgressUpdate>;
167
- /**
168
- * Download HuggingFace model with optional streaming.
169
- * When `stream` is false, only the final progress update is yielded.
170
- */
171
- export declare function downloadHFModel(hub: HFHubAdapter, options: {
172
- repoId: string;
173
- cacheDir?: string;
174
- filePath?: string;
175
- ignorePatterns?: string[] | null;
176
- allowPatterns?: string[] | null;
177
- stream?: boolean;
178
- userId?: string;
179
- getSecret?: (key: string, userId: string) => Promise<string | null>;
180
- }): AsyncGenerator<AdminProgressUpdate>;
181
- /**
182
- * Download Ollama model with optional streaming.
183
- */
184
- export declare function downloadOllamaModel(ollama: OllamaAdapter, modelName: string, stream?: boolean): AsyncGenerator<AdminProgressUpdate>;
185
- /**
186
- * Scan HuggingFace cache directory.
187
- */
188
- export declare function scanHFCache(hub: HFHubAdapter, cacheDir?: string): AsyncGenerator<Record<string, unknown>>;
189
- /**
190
- * Delete a HuggingFace model from cache.
191
- */
192
- export declare function deleteHFModel(hub: HFHubAdapter, repoId: string): AsyncGenerator<Record<string, unknown>>;
193
- /**
194
- * Calculate total cache size, yielding a single result.
195
- */
196
- export declare function calculateCacheSize(cacheDir?: string): AsyncGenerator<Record<string, unknown>>;
197
- //# sourceMappingURL=admin-operations.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"admin-operations.d.ts","sourceRoot":"","sources":["../src/admin-operations.ts"],"names":[],"mappings":"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"}