@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":"admin-routes.js","sourceRoot":"","sources":["../src/admin-routes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * API-based user management for remote deployments.
3
+ *
4
+ * Client-side user management via tRPC (`/trpc/users.*`). Works with all
5
+ * deployment types: Docker, Root, GCP, RunPod. The public `APIUserManager`
6
+ * class preserves the legacy interface so existing deployment code that
7
+ * imports it doesn't need to change.
8
+ */
9
+ import { type TRPCClient } from "@trpc/client";
10
+ import type { AppRouter } from "@nodetool-ai/websocket/trpc";
11
+ export interface UserRecord {
12
+ user_id: string;
13
+ username: string;
14
+ role: string;
15
+ token_hash?: string;
16
+ token?: string;
17
+ created_at: string;
18
+ }
19
+ export interface UserListResponse {
20
+ users: UserRecord[];
21
+ }
22
+ export interface RemoveUserResponse {
23
+ message: string;
24
+ }
25
+ /**
26
+ * Manages users via tRPC against the deployment's `/trpc/users.*` endpoints.
27
+ *
28
+ * The constructor accepts an optional third parameter — a pre-built
29
+ * `TRPCClient<AppRouter>` — for dependency-injection in tests. When omitted,
30
+ * a client is built on the fly using `serverUrl` + `adminToken`.
31
+ */
32
+ export declare class APIUserManager {
33
+ private readonly serverUrl;
34
+ private readonly adminToken;
35
+ private readonly client;
36
+ /**
37
+ * @param serverUrl - Base URL of the deployment (e.g., http://example.com:7777).
38
+ * @param adminToken - Bearer token of an admin user.
39
+ * @param client - Optional pre-built tRPC client (primarily for testing).
40
+ */
41
+ constructor(serverUrl: string, adminToken: string, client?: TRPCClient<AppRouter>);
42
+ private buildClient;
43
+ /**
44
+ * List all users.
45
+ *
46
+ * @returns Array of user records (with masked token hashes).
47
+ */
48
+ listUsers(): Promise<UserRecord[]>;
49
+ /**
50
+ * Add a user.
51
+ *
52
+ * @param username - Username for the new user.
53
+ * @param role - User role ("admin" or "user"), default "user".
54
+ * @returns User record with plaintext token (only shown on creation).
55
+ */
56
+ addUser(username: string, role?: string): Promise<UserRecord>;
57
+ /**
58
+ * Generate a new token for an existing user.
59
+ *
60
+ * @param username - Username to reset token for.
61
+ * @returns User record with new plaintext token.
62
+ */
63
+ resetToken(username: string): Promise<UserRecord>;
64
+ /**
65
+ * Remove a user.
66
+ *
67
+ * @param username - Username to remove.
68
+ * @returns Success message.
69
+ */
70
+ removeUser(username: string): Promise<RemoveUserResponse>;
71
+ }
72
+ //# sourceMappingURL=api-user-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-user-manager.d.ts","sourceRoot":"","sources":["../src/api-user-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAM7D,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,UAAU,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD;;;;;;GAMG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;IAE/C;;;;OAIG;gBAED,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC;IAOhC,OAAO,CAAC,WAAW;IAkBnB;;;;OAIG;IACG,SAAS,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAKxC;;;;;;OAMG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE,MAAe,GAAG,OAAO,CAAC,UAAU,CAAC;IAI3E;;;;;OAKG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAIvD;;;;;OAKG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAGhE"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * API-based user management for remote deployments.
3
+ *
4
+ * Client-side user management via tRPC (`/trpc/users.*`). Works with all
5
+ * deployment types: Docker, Root, GCP, RunPod. The public `APIUserManager`
6
+ * class preserves the legacy interface so existing deployment code that
7
+ * imports it doesn't need to change.
8
+ */
9
+ import { createTRPCClient, httpBatchLink } from "@trpc/client";
10
+ import superjson from "superjson";
11
+ // ============================================================================
12
+ // APIUserManager
13
+ // ============================================================================
14
+ /**
15
+ * Manages users via tRPC against the deployment's `/trpc/users.*` endpoints.
16
+ *
17
+ * The constructor accepts an optional third parameter — a pre-built
18
+ * `TRPCClient<AppRouter>` — for dependency-injection in tests. When omitted,
19
+ * a client is built on the fly using `serverUrl` + `adminToken`.
20
+ */
21
+ export class APIUserManager {
22
+ serverUrl;
23
+ adminToken;
24
+ client;
25
+ /**
26
+ * @param serverUrl - Base URL of the deployment (e.g., http://example.com:7777).
27
+ * @param adminToken - Bearer token of an admin user.
28
+ * @param client - Optional pre-built tRPC client (primarily for testing).
29
+ */
30
+ constructor(serverUrl, adminToken, client) {
31
+ this.serverUrl = serverUrl.replace(/\/+$/, "");
32
+ this.adminToken = adminToken;
33
+ this.client = client ?? this.buildClient();
34
+ }
35
+ buildClient() {
36
+ return createTRPCClient({
37
+ links: [
38
+ httpBatchLink({
39
+ url: `${this.serverUrl}/trpc`,
40
+ transformer: superjson,
41
+ headers: {
42
+ Authorization: `Bearer ${this.adminToken}`
43
+ }
44
+ })
45
+ ]
46
+ });
47
+ }
48
+ // --------------------------------------------------------------------------
49
+ // Public API
50
+ // --------------------------------------------------------------------------
51
+ /**
52
+ * List all users.
53
+ *
54
+ * @returns Array of user records (with masked token hashes).
55
+ */
56
+ async listUsers() {
57
+ const result = await this.client.users.list.query();
58
+ return result.users;
59
+ }
60
+ /**
61
+ * Add a user.
62
+ *
63
+ * @param username - Username for the new user.
64
+ * @param role - User role ("admin" or "user"), default "user".
65
+ * @returns User record with plaintext token (only shown on creation).
66
+ */
67
+ async addUser(username, role = "user") {
68
+ return this.client.users.create.mutate({ username, role });
69
+ }
70
+ /**
71
+ * Generate a new token for an existing user.
72
+ *
73
+ * @param username - Username to reset token for.
74
+ * @returns User record with new plaintext token.
75
+ */
76
+ async resetToken(username) {
77
+ return this.client.users.resetToken.mutate({ username });
78
+ }
79
+ /**
80
+ * Remove a user.
81
+ *
82
+ * @param username - Username to remove.
83
+ * @returns Success message.
84
+ */
85
+ async removeUser(username) {
86
+ return this.client.users.remove.mutate({ username });
87
+ }
88
+ }
89
+ //# sourceMappingURL=api-user-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-user-manager.js","sourceRoot":"","sources":["../src/api-user-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,gBAAgB,EAChB,aAAa,EAEd,MAAM,cAAc,CAAC;AACtB,OAAO,SAAS,MAAM,WAAW,CAAC;AAwBlC,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E;;;;;;GAMG;AACH,MAAM,OAAO,cAAc;IACR,SAAS,CAAS;IAClB,UAAU,CAAS;IACnB,MAAM,CAAwB;IAE/C;;;;OAIG;IACH,YACE,SAAiB,EACjB,UAAkB,EAClB,MAA8B;QAE9B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;IAC7C,CAAC;IAEO,WAAW;QACjB,OAAO,gBAAgB,CAAY;YACjC,KAAK,EAAE;gBACL,aAAa,CAAC;oBACZ,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,OAAO;oBAC7B,WAAW,EAAE,SAAS;oBACtB,OAAO,EAAE;wBACP,aAAa,EAAE,UAAU,IAAI,CAAC,UAAU,EAAE;qBAC3C;iBACF,CAAC;aACH;SACF,CAAC,CAAC;IACL,CAAC;IAED,6EAA6E;IAC7E,aAAa;IACb,6EAA6E;IAE7E;;;;OAIG;IACH,KAAK,CAAC,SAAS;QACb,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACpD,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,OAAO,CAAC,QAAgB,EAAE,OAAe,MAAM;QACnD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,UAAU,CAAC,QAAgB;QAC/B,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,UAAU,CAAC,QAAgB;QAC/B,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IACvD,CAAC;CACF"}
package/dist/auth.d.ts ADDED
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Authentication module for NodeTool server deployments.
3
+ *
4
+ * Provides simple token-based authentication for securing server endpoints
5
+ * when deployed in Docker or other production environments.
6
+ *
7
+ * The token is auto-generated on first run and saved to a deployment config file.
8
+ */
9
+ /** Deployment config file path (used by auth module). */
10
+ export declare const AUTH_DEPLOYMENT_CONFIG_FILE: string;
11
+ /**
12
+ * Generate a cryptographically secure random token.
13
+ *
14
+ * @returns A URL-safe base64-encoded token (32 bytes).
15
+ */
16
+ export declare function generateSecureToken(): string;
17
+ /**
18
+ * Load deployment configuration from YAML file.
19
+ *
20
+ * @returns Dictionary with deployment config, empty object if file does not exist.
21
+ */
22
+ export declare function loadAuthConfig(): Record<string, unknown>;
23
+ /**
24
+ * Save deployment configuration to YAML file.
25
+ *
26
+ * @param config - Dictionary with deployment configuration.
27
+ */
28
+ export declare function saveAuthConfig(config: Record<string, unknown>): void;
29
+ /**
30
+ * Get the server authentication token.
31
+ *
32
+ * Priority:
33
+ * 1. SERVER_AUTH_TOKEN environment variable
34
+ * 2. Token from deployment config file
35
+ * 3. Auto-generate and save new token
36
+ *
37
+ * @returns The authentication token string.
38
+ */
39
+ export declare function getServerAuthToken(): string;
40
+ /**
41
+ * Check if server authentication is enabled.
42
+ *
43
+ * Authentication is always enabled -- either from environment,
44
+ * config file, or auto-generated.
45
+ */
46
+ export declare function isAuthEnabled(): boolean;
47
+ /**
48
+ * Determine where the token was loaded from.
49
+ *
50
+ * @returns String describing the token source: "environment", "config", or "generated".
51
+ */
52
+ export declare function getTokenSource(): "environment" | "config" | "generated";
53
+ /** Error thrown when authentication fails. */
54
+ export declare class AuthenticationError extends Error {
55
+ readonly statusCode: number;
56
+ readonly detail: string;
57
+ constructor(statusCode: number, detail: string);
58
+ }
59
+ /**
60
+ * Verify the server authentication token from an Authorization header value.
61
+ *
62
+ * @param authorization - Authorization header value (e.g. "Bearer <token>").
63
+ * @returns "authenticated" if token is valid.
64
+ * @throws {AuthenticationError} If authentication fails.
65
+ */
66
+ export declare function verifyServerToken(authorization: string | undefined | null): Promise<"authenticated">;
67
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,yDAAyD;AACzD,eAAO,MAAM,2BAA2B,QAKvC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAYxD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CASpE;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAmB3C;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAED;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,aAAa,GAAG,QAAQ,GAAG,WAAW,CAWvE;AAED,8CAA8C;AAC9C,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEZ,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAM/C;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GACvC,OAAO,CAAC,eAAe,CAAC,CA2B1B"}
package/dist/auth.js ADDED
@@ -0,0 +1,142 @@
1
+ /**
2
+ * Authentication module for NodeTool server deployments.
3
+ *
4
+ * Provides simple token-based authentication for securing server endpoints
5
+ * when deployed in Docker or other production environments.
6
+ *
7
+ * The token is auto-generated on first run and saved to a deployment config file.
8
+ */
9
+ import { readFileSync, writeFileSync, mkdirSync, existsSync } from "node:fs";
10
+ import { homedir } from "node:os";
11
+ import { join, dirname } from "node:path";
12
+ import { randomBytes, timingSafeEqual } from "node:crypto";
13
+ import * as yaml from "js-yaml";
14
+ /** Deployment config file path (used by auth module). */
15
+ export const AUTH_DEPLOYMENT_CONFIG_FILE = join(homedir(), ".config", "nodetool", "deployment.yaml");
16
+ /**
17
+ * Generate a cryptographically secure random token.
18
+ *
19
+ * @returns A URL-safe base64-encoded token (32 bytes).
20
+ */
21
+ export function generateSecureToken() {
22
+ return randomBytes(32).toString("base64url");
23
+ }
24
+ /**
25
+ * Load deployment configuration from YAML file.
26
+ *
27
+ * @returns Dictionary with deployment config, empty object if file does not exist.
28
+ */
29
+ export function loadAuthConfig() {
30
+ if (!existsSync(AUTH_DEPLOYMENT_CONFIG_FILE)) {
31
+ return {};
32
+ }
33
+ try {
34
+ const content = readFileSync(AUTH_DEPLOYMENT_CONFIG_FILE, "utf-8");
35
+ const config = yaml.load(content, { schema: yaml.JSON_SCHEMA });
36
+ return config ?? {};
37
+ }
38
+ catch {
39
+ return {};
40
+ }
41
+ }
42
+ /**
43
+ * Save deployment configuration to YAML file.
44
+ *
45
+ * @param config - Dictionary with deployment configuration.
46
+ */
47
+ export function saveAuthConfig(config) {
48
+ const dir = dirname(AUTH_DEPLOYMENT_CONFIG_FILE);
49
+ mkdirSync(dir, { recursive: true });
50
+ const content = yaml.dump(config, { flowLevel: -1 });
51
+ writeFileSync(AUTH_DEPLOYMENT_CONFIG_FILE, content, {
52
+ encoding: "utf-8",
53
+ mode: 0o600
54
+ });
55
+ }
56
+ /**
57
+ * Get the server authentication token.
58
+ *
59
+ * Priority:
60
+ * 1. SERVER_AUTH_TOKEN environment variable
61
+ * 2. Token from deployment config file
62
+ * 3. Auto-generate and save new token
63
+ *
64
+ * @returns The authentication token string.
65
+ */
66
+ export function getServerAuthToken() {
67
+ // Check environment variable first
68
+ const envToken = process.env["SERVER_AUTH_TOKEN"];
69
+ if (envToken) {
70
+ return envToken;
71
+ }
72
+ // Load from deployment config
73
+ const config = loadAuthConfig();
74
+ if (typeof config["server_auth_token"] === "string") {
75
+ return config["server_auth_token"];
76
+ }
77
+ // Auto-generate new token
78
+ const newToken = generateSecureToken();
79
+ config["server_auth_token"] = newToken;
80
+ saveAuthConfig(config);
81
+ return newToken;
82
+ }
83
+ /**
84
+ * Check if server authentication is enabled.
85
+ *
86
+ * Authentication is always enabled -- either from environment,
87
+ * config file, or auto-generated.
88
+ */
89
+ export function isAuthEnabled() {
90
+ return true;
91
+ }
92
+ /**
93
+ * Determine where the token was loaded from.
94
+ *
95
+ * @returns String describing the token source: "environment", "config", or "generated".
96
+ */
97
+ export function getTokenSource() {
98
+ if (process.env["SERVER_AUTH_TOKEN"]) {
99
+ return "environment";
100
+ }
101
+ const config = loadAuthConfig();
102
+ if (typeof config["server_auth_token"] === "string") {
103
+ return "config";
104
+ }
105
+ return "generated";
106
+ }
107
+ /** Error thrown when authentication fails. */
108
+ export class AuthenticationError extends Error {
109
+ statusCode;
110
+ detail;
111
+ constructor(statusCode, detail) {
112
+ super(detail);
113
+ this.name = "AuthenticationError";
114
+ this.statusCode = statusCode;
115
+ this.detail = detail;
116
+ }
117
+ }
118
+ /**
119
+ * Verify the server authentication token from an Authorization header value.
120
+ *
121
+ * @param authorization - Authorization header value (e.g. "Bearer <token>").
122
+ * @returns "authenticated" if token is valid.
123
+ * @throws {AuthenticationError} If authentication fails.
124
+ */
125
+ export async function verifyServerToken(authorization) {
126
+ const expectedToken = getServerAuthToken();
127
+ if (!authorization) {
128
+ throw new AuthenticationError(401, "Authorization header required. Use 'Authorization: Bearer YOUR_TOKEN'");
129
+ }
130
+ const parts = authorization.split(" ");
131
+ if (parts.length !== 2 || parts[0].toLowerCase() !== "bearer") {
132
+ throw new AuthenticationError(401, "Invalid authorization header format. Use 'Authorization: Bearer YOUR_TOKEN'");
133
+ }
134
+ const providedToken = parts[1];
135
+ const a = Buffer.from(providedToken);
136
+ const b = Buffer.from(expectedToken);
137
+ if (a.length !== b.length || !timingSafeEqual(a, b)) {
138
+ throw new AuthenticationError(401, "Invalid authentication token");
139
+ }
140
+ return "authenticated";
141
+ }
142
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Lightweight collection index route handler.
3
+ *
4
+ * Provides a typed handler function (not framework-specific) for indexing
5
+ * files into a named collection.
6
+ */
7
+ /** Function that indexes a file into a collection, returning an error string or null. */
8
+ export type IndexFileToCollectionFn = (collectionName: string, filePath: string, mimeType: string, token: string) => Promise<string | null>;
9
+ /** Result returned by the index handler. */
10
+ export interface IndexResult {
11
+ path: string;
12
+ error: string | null;
13
+ }
14
+ /** Error type for HTTP-like error responses. */
15
+ export interface CollectionHttpError {
16
+ statusCode: number;
17
+ detail: string;
18
+ }
19
+ /**
20
+ * Handle a file index request for a collection.
21
+ *
22
+ * This is a framework-agnostic handler. The caller is responsible for:
23
+ * - Extracting the collection name from the URL
24
+ * - Saving the uploaded file to a temporary path
25
+ * - Passing the authorization header value
26
+ * - Cleaning up the temporary file after the handler returns
27
+ *
28
+ * @param collectionName - Target collection name
29
+ * @param filePath - Path to the temporary uploaded file on disk
30
+ * @param fileName - Original file name from the upload
31
+ * @param mimeType - MIME type of the uploaded file
32
+ * @param authorization - Authorization header value (defaults to "local_token")
33
+ * @param indexFn - The actual indexing function to call
34
+ * @returns IndexResult on success, or throws an CollectionHttpError
35
+ */
36
+ export declare function handleCollectionIndex(collectionName: string, filePath: string, fileName: string, mimeType: string, authorization: string | undefined, indexFn: IndexFileToCollectionFn): Promise<IndexResult>;
37
+ //# sourceMappingURL=collection-routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection-routes.d.ts","sourceRoot":"","sources":["../src/collection-routes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,yFAAyF;AACzF,MAAM,MAAM,uBAAuB,GAAG,CACpC,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,KACV,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;AAE5B,4CAA4C;AAC5C,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,gDAAgD;AAChD,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,qBAAqB,CACzC,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,WAAW,CAAC,CAkBtB"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Lightweight collection index route handler.
3
+ *
4
+ * Provides a typed handler function (not framework-specific) for indexing
5
+ * files into a named collection.
6
+ */
7
+ /**
8
+ * Handle a file index request for a collection.
9
+ *
10
+ * This is a framework-agnostic handler. The caller is responsible for:
11
+ * - Extracting the collection name from the URL
12
+ * - Saving the uploaded file to a temporary path
13
+ * - Passing the authorization header value
14
+ * - Cleaning up the temporary file after the handler returns
15
+ *
16
+ * @param collectionName - Target collection name
17
+ * @param filePath - Path to the temporary uploaded file on disk
18
+ * @param fileName - Original file name from the upload
19
+ * @param mimeType - MIME type of the uploaded file
20
+ * @param authorization - Authorization header value (defaults to "local_token")
21
+ * @param indexFn - The actual indexing function to call
22
+ * @returns IndexResult on success, or throws an CollectionHttpError
23
+ */
24
+ export async function handleCollectionIndex(collectionName, filePath, fileName, mimeType, authorization, indexFn) {
25
+ const token = authorization || "local_token";
26
+ try {
27
+ const error = await indexFn(collectionName, filePath, mimeType, token);
28
+ if (error) {
29
+ return { path: fileName || "unknown", error };
30
+ }
31
+ return { path: fileName || "unknown", error: null };
32
+ }
33
+ catch (e) {
34
+ const message = e instanceof Error ? e.message : String(e);
35
+ console.error(`Error indexing file ${fileName}: ${message}`);
36
+ const httpError = {
37
+ statusCode: 500,
38
+ detail: message
39
+ };
40
+ throw httpError;
41
+ }
42
+ }
43
+ //# sourceMappingURL=collection-routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection-routes.js","sourceRoot":"","sources":["../src/collection-routes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAsBH;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,cAAsB,EACtB,QAAgB,EAChB,QAAgB,EAChB,QAAgB,EAChB,aAAiC,EACjC,OAAgC;IAEhC,MAAM,KAAK,GAAG,aAAa,IAAI,aAAa,CAAC;IAE7C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QACvE,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,EAAE,IAAI,EAAE,QAAQ,IAAI,SAAS,EAAE,KAAK,EAAE,CAAC;QAChD,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,QAAQ,IAAI,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACtD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,OAAO,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC3D,OAAO,CAAC,KAAK,CAAC,uBAAuB,QAAQ,KAAK,OAAO,EAAE,CAAC,CAAC;QAC7D,MAAM,SAAS,GAAwB;YACrC,UAAU,EAAE,GAAG;YACf,MAAM,EAAE,OAAO;SAChB,CAAC;QACF,MAAM,SAAS,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Docker Compose file generation for self-hosted deployments.
3
+ *
4
+ * This module generates docker-compose.yml files from deployment configuration,
5
+ * supporting multi-container setups with GPU assignments, volume mounts, and
6
+ * environment variables.
7
+ */
8
+ import type { DockerDeployment } from "./deployment-config.js";
9
+ /**
10
+ * Generates docker-compose.yml configuration from deployment settings.
11
+ *
12
+ * This class handles the conversion of NodeTool deployment configuration
13
+ * into a docker-compose.yml file suitable for deployment.
14
+ */
15
+ export declare class ComposeGenerator {
16
+ private deployment;
17
+ constructor(deployment: DockerDeployment);
18
+ /**
19
+ * Generate docker-compose.yml content as a string.
20
+ */
21
+ generate(): string;
22
+ /**
23
+ * Generate a SHA256 hash of the compose configuration.
24
+ * This can be used to detect changes in the configuration.
25
+ */
26
+ generateHash(): string;
27
+ private buildComposeDict;
28
+ /**
29
+ * Sanitize container name for use as docker-compose service name.
30
+ */
31
+ private sanitizeServiceName;
32
+ private buildService;
33
+ private buildVolumes;
34
+ private buildEnvironment;
35
+ private buildDeployConfig;
36
+ }
37
+ /**
38
+ * Generate docker-compose.yml file from deployment configuration.
39
+ *
40
+ * @param deployment - Docker deployment configuration
41
+ * @param outputPath - Optional path to write the compose file to
42
+ * @returns Generated docker-compose.yml content as string
43
+ */
44
+ export declare function generateComposeFile(deployment: DockerDeployment, outputPath?: string): string;
45
+ /**
46
+ * Get hash of the compose configuration for change detection.
47
+ *
48
+ * @param deployment - Docker deployment configuration
49
+ * @returns SHA256 hash of the compose configuration
50
+ */
51
+ export declare function getComposeHash(deployment: DockerDeployment): string;
52
+ //# sourceMappingURL=compose.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose.d.ts","sourceRoot":"","sources":["../src/compose.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAmB,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAoChF;;;;;GAKG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,UAAU,CAAmB;gBAEzB,UAAU,EAAE,gBAAgB;IAIxC;;OAEG;IACH,QAAQ,IAAI,MAAM;IAQlB;;;OAGG;IACH,YAAY,IAAI,MAAM;IAKtB,OAAO,CAAC,gBAAgB;IAaxB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,YAAY;IA6BpB,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,gBAAgB;IAexB,OAAO,CAAC,iBAAiB;CAuB1B;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,gBAAgB,EAC5B,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CASR;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,gBAAgB,GAAG,MAAM,CAGnE"}