@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":"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
|
package/dist/auth.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,KAAK,IAAI,MAAM,SAAS,CAAC;AAEhC,yDAAyD;AACzD,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAI,CAC7C,OAAO,EAAE,EACT,SAAS,EACT,UAAU,EACV,iBAAiB,CAClB,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC/C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc;IAC5B,IAAI,CAAC,UAAU,CAAC,2BAA2B,CAAC,EAAE,CAAC;QAC7C,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,CAAC,2BAA2B,EAAE,OAAO,CAAC,CAAC;QACnE,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAChE,OAAQ,MAAkC,IAAI,EAAE,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,MAA+B;IAC5D,MAAM,GAAG,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAC;IACjD,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEpC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACrD,aAAa,CAAC,2BAA2B,EAAE,OAAO,EAAE;QAClD,QAAQ,EAAE,OAAO;QACjB,IAAI,EAAE,KAAK;KACZ,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB;IAChC,mCAAmC;IACnC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAClD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,8BAA8B;IAC9B,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;IAChC,IAAI,OAAO,MAAM,CAAC,mBAAmB,CAAC,KAAK,QAAQ,EAAE,CAAC;QACpD,OAAO,MAAM,CAAC,mBAAmB,CAAC,CAAC;IACrC,CAAC;IAED,0BAA0B;IAC1B,MAAM,QAAQ,GAAG,mBAAmB,EAAE,CAAC;IACvC,MAAM,CAAC,mBAAmB,CAAC,GAAG,QAAQ,CAAC;IACvC,cAAc,CAAC,MAAM,CAAC,CAAC;IAEvB,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc;IAC5B,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACrC,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;IAChC,IAAI,OAAO,MAAM,CAAC,mBAAmB,CAAC,KAAK,QAAQ,EAAE,CAAC;QACpD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,8CAA8C;AAC9C,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IACnC,UAAU,CAAS;IACnB,MAAM,CAAS;IAExB,YAAY,UAAkB,EAAE,MAAc;QAC5C,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;QAClC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,aAAwC;IAExC,MAAM,aAAa,GAAG,kBAAkB,EAAE,CAAC;IAE3C,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,mBAAmB,CAC3B,GAAG,EACH,uEAAuE,CACxE,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,KAAK,QAAQ,EAAE,CAAC;QAC/D,MAAM,IAAI,mBAAmB,CAC3B,GAAG,EACH,6EAA6E,CAC9E,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;IAEhC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACrC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACrC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,mBAAmB,CAAC,GAAG,EAAE,8BAA8B,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,eAAe,CAAC;AACzB,CAAC"}
|
|
@@ -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"}
|