@nosana/api 2.17.0 → 2.19.0
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/README.md +3 -3
- package/dist/client/client-manager/schema.d.ts +81 -0
- package/dist/client/client-manager/schema.d.ts.map +1 -1
- package/dist/client/deployment-manager/schema.d.ts +138 -10
- package/dist/client/deployment-manager/schema.d.ts.map +1 -1
- package/dist/client/host-manager/schema.d.ts +230 -28
- package/dist/client/host-manager/schema.d.ts.map +1 -1
- package/dist/routes/auth/index.d.ts.map +1 -1
- package/dist/routes/auth/index.js +12 -0
- package/dist/routes/auth/index.js.map +1 -1
- package/dist/routes/auth/types.d.ts +7 -0
- package/dist/routes/auth/types.d.ts.map +1 -1
- package/dist/routes/deployments/deployment/actions/deploymentGetAllJobHeaders.d.ts +5 -0
- package/dist/routes/deployments/deployment/actions/deploymentGetAllJobHeaders.d.ts.map +1 -0
- package/dist/routes/deployments/deployment/actions/deploymentGetAllJobHeaders.js +12 -0
- package/dist/routes/deployments/deployment/actions/deploymentGetAllJobHeaders.js.map +1 -0
- package/dist/routes/deployments/deployment/actions/deploymentUpdateRequirements.d.ts +6 -5
- package/dist/routes/deployments/deployment/actions/deploymentUpdateRequirements.d.ts.map +1 -1
- package/dist/routes/deployments/deployment/actions/deploymentUpdateRequirements.js +6 -5
- package/dist/routes/deployments/deployment/actions/deploymentUpdateRequirements.js.map +1 -1
- package/dist/routes/deployments/deployment/actions/index.d.ts +1 -0
- package/dist/routes/deployments/deployment/actions/index.d.ts.map +1 -1
- package/dist/routes/deployments/deployment/actions/index.js +1 -0
- package/dist/routes/deployments/deployment/actions/index.js.map +1 -1
- package/dist/routes/deployments/deployment/createDeployment.d.ts.map +1 -1
- package/dist/routes/deployments/deployment/createDeployment.js +45 -7
- package/dist/routes/deployments/deployment/createDeployment.js.map +1 -1
- package/dist/routes/deployments/deployment/jobHeaderStore.d.ts +21 -0
- package/dist/routes/deployments/deployment/jobHeaderStore.d.ts.map +1 -0
- package/dist/routes/deployments/deployment/jobHeaderStore.js +51 -0
- package/dist/routes/deployments/deployment/jobHeaderStore.js.map +1 -0
- package/dist/routes/deployments/types.d.ts +16 -2
- package/dist/routes/deployments/types.d.ts.map +1 -1
- package/dist/routes/reservations/types.d.ts +6 -3
- package/dist/routes/reservations/types.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/routes/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAG3E,OAAO,KAAK,EAAE,aAAa,EAAmD,MAAM,YAAY,CAAC;AAEjG,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,mBAAmB,GAC1B,aAAa,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/routes/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAG3E,OAAO,KAAK,EAAE,aAAa,EAAmD,MAAM,YAAY,CAAC;AAEjG,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,mBAAmB,GAC1B,aAAa,CA4Ef"}
|
|
@@ -25,6 +25,18 @@ export function createNosanaAuthApi(client) {
|
|
|
25
25
|
const header = `${message}:${data.signature}`;
|
|
26
26
|
return includeTime && data.timestamp !== undefined ? `${header}:${data.timestamp}` : header;
|
|
27
27
|
},
|
|
28
|
+
async signHeaders(messages, { includeTime } = {}) {
|
|
29
|
+
const { data, error } = await client.POST('/auth/sign-messages/external', {
|
|
30
|
+
body: { messages, includeTime },
|
|
31
|
+
});
|
|
32
|
+
if (error || !data) {
|
|
33
|
+
throw errorFormatter('Failed to sign messages', error);
|
|
34
|
+
}
|
|
35
|
+
return data.signatures.map(({ message, signature, timestamp }) => {
|
|
36
|
+
const header = `${message}:${signature}`;
|
|
37
|
+
return includeTime && timestamp !== undefined ? `${header}:${timestamp}` : header;
|
|
38
|
+
});
|
|
39
|
+
},
|
|
28
40
|
async validateSession(cookieHeader) {
|
|
29
41
|
const { data, error } = await client.POST('/auth/validate-session', {
|
|
30
42
|
body: cookieHeader ? { cookieHeader } : {},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/routes/auth/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAI/D,MAAM,UAAU,mBAAmB,CACjC,MAA2B;IAE3B,OAAO;QACL,KAAK,CAAC,WAAW,CACf,OAAe,EACf,EAAE,WAAW,KAAgC,EAAE;YAE/C,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE;gBACvE,IAAI,EAAE;oBACJ,OAAO;oBACP,WAAW;iBACZ;aACF,CAAC,CAAC;YAEH,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;gBACnB,MAAM,cAAc,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;YACxD,CAAC;YAED,OAAO,IAAI,CAAC,SAAS,CAAC;QACxB,CAAC;QACD,KAAK,CAAC,UAAU,CACd,OAAe,EACf,EAAE,WAAW,KAAgC,EAAE;YAE/C,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE;gBACvE,IAAI,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE;aAC/B,CAAC,CAAC;YAEH,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;gBACnB,MAAM,cAAc,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;YACxD,CAAC;YAED,qEAAqE;YACrE,wDAAwD;YACxD,MAAM,MAAM,GAAG,GAAG,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC9C,OAAO,WAAW,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QAC9F,CAAC;QACD,KAAK,CAAC,eAAe,CAAC,YAAqB;YACzC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;gBAClE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE;aAC3C,CAAC,CAAC;YAEH,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;gBACnB,MAAM,cAAc,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;YAC5D,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;QACD,KAAK,CAAC,cAAc,CAAC,MAAc;YACjC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;gBAClE,IAAI,EAAE,EAAE,MAAM,EAAE;aACjB,CAAC,CAAC;YAEH,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;gBACnB,MAAM,cAAc,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;YAC5D,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/routes/auth/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,13 @@ export type NosanaAuthApi = {
|
|
|
13
13
|
signHeader: (message: string, options?: {
|
|
14
14
|
includeTime?: boolean;
|
|
15
15
|
}) => Promise<string>;
|
|
16
|
+
/**
|
|
17
|
+
* {@link signHeader} for up to 100 messages in one call; headers are returned
|
|
18
|
+
* in the order of `messages`.
|
|
19
|
+
*/
|
|
20
|
+
signHeaders: (messages: string[], options?: {
|
|
21
|
+
includeTime?: boolean;
|
|
22
|
+
}) => Promise<string[]>;
|
|
16
23
|
validateSession: (cookieHeader?: string) => Promise<ValidateSessionResponse>;
|
|
17
24
|
validateApiKey: (apiKey: string) => Promise<ValidateApiKeyResponse>;
|
|
18
25
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/routes/auth/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uCAAuC,CAAC;AAEnE,MAAM,MAAM,uBAAuB,GAAG,KAAK,CAAC,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC;AAC/H,MAAM,MAAM,sBAAsB,GAAG,KAAK,CAAC,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC;AAE9H,MAAM,MAAM,aAAa,GAAG;IAC1B,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACvF;;;;OAIG;IACH,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACtF,eAAe,EAAE,CAAC,YAAY,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAC7E,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,sBAAsB,CAAC,CAAC;CACrE,CAAA"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/routes/auth/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uCAAuC,CAAC;AAEnE,MAAM,MAAM,uBAAuB,GAAG,KAAK,CAAC,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC;AAC/H,MAAM,MAAM,sBAAsB,GAAG,KAAK,CAAC,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC;AAE9H,MAAM,MAAM,aAAa,GAAG;IAC1B,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACvF;;;;OAIG;IACH,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACtF;;;OAGG;IACH,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5F,eAAe,EAAE,CAAC,YAAY,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAC7E,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,sBAAsB,CAAC,CAAC;CACrE,CAAA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { DeploymentManagerClient } from '../../../../client/deployment-manager/index.js';
|
|
2
|
+
import type { DeploymentState } from '../../types.js';
|
|
3
|
+
/** A timestamped authorization header for each of the deployment's running jobs, keyed by job address. */
|
|
4
|
+
export declare function deploymentGetAllJobHeaders(client: DeploymentManagerClient, state: DeploymentState): Promise<Record<string, string>>;
|
|
5
|
+
//# sourceMappingURL=deploymentGetAllJobHeaders.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploymentGetAllJobHeaders.d.ts","sourceRoot":"","sources":["../../../../../src/routes/deployments/deployment/actions/deploymentGetAllJobHeaders.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gDAAgD,CAAC;AAC9F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD,0GAA0G;AAC1G,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,uBAAuB,EAC/B,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAUjC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { errorFormatter } from '../../../../utils/errorFormatter.js';
|
|
2
|
+
/** A timestamped authorization header for each of the deployment's running jobs, keyed by job address. */
|
|
3
|
+
export async function deploymentGetAllJobHeaders(client, state) {
|
|
4
|
+
const { data, error } = await client.GET('/deployments/{deployment}/headers', {
|
|
5
|
+
params: { path: { deployment: state.id } },
|
|
6
|
+
});
|
|
7
|
+
if (error || !data) {
|
|
8
|
+
throw errorFormatter('Error generating deployment job headers', error);
|
|
9
|
+
}
|
|
10
|
+
return data.headers;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=deploymentGetAllJobHeaders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploymentGetAllJobHeaders.js","sourceRoot":"","sources":["../../../../../src/routes/deployments/deployment/actions/deploymentGetAllJobHeaders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAKrE,0GAA0G;AAC1G,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,MAA+B,EAC/B,KAAsB;IAEtB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,mCAAmC,EAAE;QAC5E,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE;KAC3C,CAAC,CAAC;IAEH,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;QACnB,MAAM,cAAc,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;IACzE,CAAC;IAED,OAAO,IAAI,CAAC,OAAO,CAAC;AACtB,CAAC"}
|
|
@@ -2,13 +2,14 @@ import type { DeploymentManagerClient } from '../../../../client/deployment-mana
|
|
|
2
2
|
import type { DeploymentState } from '../../types.js';
|
|
3
3
|
/**
|
|
4
4
|
* @param requirements The node requirements to replace the deployment's with, or null to clear them
|
|
5
|
-
* @param market The market
|
|
5
|
+
* @param market The market to post every job in; omit it (or pass null) to post across
|
|
6
|
+
* markets: each job goes to the cheapest PREMIUM market with a node that meets the requirements
|
|
6
7
|
* @throws Error if there is an error updating the requirements
|
|
7
8
|
* @returns Promise<void>
|
|
8
9
|
* @description Replaces the node requirements of the deployment together with
|
|
9
|
-
* its market. Every job listed from now on is reserved on nodes that
|
|
10
|
-
*
|
|
11
|
-
* RUNNING deployment's jobs are stopped and relisted on it.
|
|
10
|
+
* its market, as on create. Every job listed from now on is reserved on nodes that
|
|
11
|
+
* meet the new requirements. Running jobs keep their hosts, unless the market changes
|
|
12
|
+
* to another one: then a RUNNING deployment's jobs are stopped and relisted on it.
|
|
12
13
|
*/
|
|
13
|
-
export declare function deploymentUpdateRequirements(requirements: DeploymentState['requirements'], market: string, client: DeploymentManagerClient, state: DeploymentState): Promise<void>;
|
|
14
|
+
export declare function deploymentUpdateRequirements(requirements: DeploymentState['requirements'], market: string | null | undefined, client: DeploymentManagerClient, state: DeploymentState): Promise<void>;
|
|
14
15
|
//# sourceMappingURL=deploymentUpdateRequirements.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploymentUpdateRequirements.d.ts","sourceRoot":"","sources":["../../../../../src/routes/deployments/deployment/actions/deploymentUpdateRequirements.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gDAAgD,CAAC;AAC9F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD
|
|
1
|
+
{"version":3,"file":"deploymentUpdateRequirements.d.ts","sourceRoot":"","sources":["../../../../../src/routes/deployments/deployment/actions/deploymentUpdateRequirements.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gDAAgD,CAAC;AAC9F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD;;;;;;;;;;GAUG;AACH,wBAAsB,4BAA4B,CAChD,YAAY,EAAE,eAAe,CAAC,cAAc,CAAC,EAC7C,MAAM,EAAE,MAAM,GAAG,IAAI,YAAO,EAC5B,MAAM,EAAE,uBAAuB,EAC/B,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC,IAAI,CAAC,CAkBf"}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import { errorFormatter } from '../../../../utils/errorFormatter.js';
|
|
2
2
|
/**
|
|
3
3
|
* @param requirements The node requirements to replace the deployment's with, or null to clear them
|
|
4
|
-
* @param market The market
|
|
4
|
+
* @param market The market to post every job in; omit it (or pass null) to post across
|
|
5
|
+
* markets: each job goes to the cheapest PREMIUM market with a node that meets the requirements
|
|
5
6
|
* @throws Error if there is an error updating the requirements
|
|
6
7
|
* @returns Promise<void>
|
|
7
8
|
* @description Replaces the node requirements of the deployment together with
|
|
8
|
-
* its market. Every job listed from now on is reserved on nodes that
|
|
9
|
-
*
|
|
10
|
-
* RUNNING deployment's jobs are stopped and relisted on it.
|
|
9
|
+
* its market, as on create. Every job listed from now on is reserved on nodes that
|
|
10
|
+
* meet the new requirements. Running jobs keep their hosts, unless the market changes
|
|
11
|
+
* to another one: then a RUNNING deployment's jobs are stopped and relisted on it.
|
|
11
12
|
*/
|
|
12
|
-
export async function deploymentUpdateRequirements(requirements, market, client, state) {
|
|
13
|
+
export async function deploymentUpdateRequirements(requirements, market = null, client, state) {
|
|
13
14
|
const { data, error } = await client.PATCH('/deployments/{deployment}/update-requirements', {
|
|
14
15
|
params: { path: { deployment: state.id } },
|
|
15
16
|
body: { requirements, market },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploymentUpdateRequirements.js","sourceRoot":"","sources":["../../../../../src/routes/deployments/deployment/actions/deploymentUpdateRequirements.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAKrE
|
|
1
|
+
{"version":3,"file":"deploymentUpdateRequirements.js","sourceRoot":"","sources":["../../../../../src/routes/deployments/deployment/actions/deploymentUpdateRequirements.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAKrE;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,YAA6C,EAC7C,SAAwB,IAAI,EAC5B,MAA+B,EAC/B,KAAsB;IAEtB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CACxC,+CAA+C,EAC/C;QACE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE;QAC1C,IAAI,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE;KAC/B,CACF,CAAC;IAEF,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;QACnB,MAAM,cAAc,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE;QACnB,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,UAAU,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;KACtC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -13,6 +13,7 @@ export * from './deploymentRemoveSshKeys.js';
|
|
|
13
13
|
export * from './deploymentStart.js';
|
|
14
14
|
export * from './deploymentStop.js';
|
|
15
15
|
export * from './deploymentGenerateAuthHeader.js';
|
|
16
|
+
export * from './deploymentGetAllJobHeaders.js';
|
|
16
17
|
export * from './deploymentUpdateActiveRevision.js';
|
|
17
18
|
export * from './deploymentUpdateMarket.js';
|
|
18
19
|
export * from './deploymentUpdateRequirements.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/routes/deployments/deployment/actions/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mCAAmC,CAAC;AAClD,cAAc,qCAAqC,CAAC;AACpD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/routes/deployments/deployment/actions/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,qCAAqC,CAAC;AACpD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC"}
|
|
@@ -13,6 +13,7 @@ export * from './deploymentRemoveSshKeys.js';
|
|
|
13
13
|
export * from './deploymentStart.js';
|
|
14
14
|
export * from './deploymentStop.js';
|
|
15
15
|
export * from './deploymentGenerateAuthHeader.js';
|
|
16
|
+
export * from './deploymentGetAllJobHeaders.js';
|
|
16
17
|
export * from './deploymentUpdateActiveRevision.js';
|
|
17
18
|
export * from './deploymentUpdateMarket.js';
|
|
18
19
|
export * from './deploymentUpdateRequirements.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/routes/deployments/deployment/actions/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mCAAmC,CAAC;AAClD,cAAc,qCAAqC,CAAC;AACpD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/routes/deployments/deployment/actions/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC;AACjD,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,qCAAqC,CAAC;AACpD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createDeployment.d.ts","sourceRoot":"","sources":["../../../../src/routes/deployments/deployment/createDeployment.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"createDeployment.d.ts","sourceRoot":"","sources":["../../../../src/routes/deployments/deployment/createDeployment.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAEV,UAAU,EAEV,aAAa,EAgBd,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EACV,sBAAsB,EACtB,gCAAgC,EACjC,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8CAA8C,CAAC;AAE/E,KAAK,gBAAgB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC;AAE5D,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,gBAAgB,EAC5B,OAAO,EAAE,sBAAsB,EAC/B,SAAS,EAAE,IAAI,GACd,aAAa,CAAC;AACjB,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,gBAAgB,EAC5B,OAAO,EAAE,gCAAgC,EACzC,SAAS,EAAE,KAAK,GACf,UAAU,CAAC"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import { deploymentStop, deploymentStart, deploymentGetEvents, deploymentStream, deploymentGetJob, deploymentGetJobs, deploymentGetRevisions, deploymentGetSshKeys, deploymentArchive, deploymentUpdateReplicaCount, deploymentGetTasks, deploymentUpdateTimeout, deploymentCreateNewRevision, deploymentUpdateActiveRevision, deploymentUpdateSchedule, deploymentAddSshKeys, deploymentRemoveSshKeys, deploymentUpdateName, deploymentGenerateAuthHeader, deploymentDelete, deploymentUpdateMarket, deploymentUpdateRequirements, deploymentDuplicate, } from './actions/index.js';
|
|
1
|
+
import { deploymentStop, deploymentStart, deploymentGetEvents, deploymentStream, deploymentGetJob, deploymentGetJobs, deploymentGetRevisions, deploymentGetSshKeys, deploymentArchive, deploymentUpdateReplicaCount, deploymentGetTasks, deploymentUpdateTimeout, deploymentCreateNewRevision, deploymentUpdateActiveRevision, deploymentUpdateSchedule, deploymentAddSshKeys, deploymentRemoveSshKeys, deploymentUpdateName, deploymentGenerateAuthHeader, deploymentGetAllJobHeaders, deploymentDelete, deploymentUpdateMarket, deploymentUpdateRequirements, deploymentDuplicate, } from './actions/index.js';
|
|
2
|
+
import { isSolanaAddress } from '@nosana/types';
|
|
2
3
|
import { createVault } from './createVault.js';
|
|
4
|
+
import { jobHeaderStoreFor } from './jobHeaderStore.js';
|
|
3
5
|
import { createNosanaNodeApi } from '../../node/index.js';
|
|
4
6
|
export function createDeployment(deployment, clients, hasApiKey) {
|
|
5
7
|
const client = clients.deploymentManager;
|
|
@@ -105,14 +107,15 @@ export function createDeployment(deployment, clients, hasApiKey) {
|
|
|
105
107
|
};
|
|
106
108
|
/**
|
|
107
109
|
* @param requirements The node requirements to replace the deployment's with, or null to clear them
|
|
108
|
-
* @param market The market
|
|
110
|
+
* @param market The market to post every job in; omit it (or pass null) to post across
|
|
111
|
+
* markets: each job goes to the cheapest PREMIUM market with a node that meets the requirements
|
|
109
112
|
* @throws Error if there is an error updating the requirements
|
|
110
113
|
* @returns Promise<void>
|
|
111
114
|
* @description Replaces the node requirements of the deployment together with
|
|
112
|
-
* its market. Running jobs keep their hosts unless the market changes;
|
|
113
|
-
* listed from now on meet the new requirements.
|
|
115
|
+
* its market, as on create. Running jobs keep their hosts unless the market changes;
|
|
116
|
+
* jobs listed from now on meet the new requirements.
|
|
114
117
|
*/
|
|
115
|
-
const updateRequirements = async (requirements, market) => {
|
|
118
|
+
const updateRequirements = async (requirements, market = null) => {
|
|
116
119
|
await deploymentUpdateRequirements(requirements, market, client, state);
|
|
117
120
|
};
|
|
118
121
|
/**
|
|
@@ -162,6 +165,33 @@ export function createDeployment(deployment, clients, hasApiKey) {
|
|
|
162
165
|
const generateAuthHeader = async (query) => {
|
|
163
166
|
return await deploymentGenerateAuthHeader(client, state, query);
|
|
164
167
|
};
|
|
168
|
+
// Job headers outlive this object: see jobHeaderStore.ts.
|
|
169
|
+
const jobHeaders = jobHeaderStoreFor(client, state.id);
|
|
170
|
+
/**
|
|
171
|
+
* @param job The job address the header is bound to
|
|
172
|
+
* @returns Promise<string> A timestamped header the job's node accepts
|
|
173
|
+
* @description Returns the job's stored header while it is still valid, and
|
|
174
|
+
* otherwise signs a fresh one and stores it.
|
|
175
|
+
*/
|
|
176
|
+
const generateJobAuthHeader = async (job) => {
|
|
177
|
+
const stored = jobHeaders.get(job);
|
|
178
|
+
if (stored)
|
|
179
|
+
return stored;
|
|
180
|
+
const header = await generateAuthHeader({ message: job, includeTime: 'true' });
|
|
181
|
+
jobHeaders.set(job, header);
|
|
182
|
+
return header;
|
|
183
|
+
};
|
|
184
|
+
/**
|
|
185
|
+
* @returns Promise<Record<string, string>> A header per running job, keyed by job address
|
|
186
|
+
* @description Signs a header for every running job in one request and stores
|
|
187
|
+
* them, so the jobs' node calls need no further signing until they expire.
|
|
188
|
+
*/
|
|
189
|
+
const generateAllJobAuthHeaders = async () => {
|
|
190
|
+
const headers = await deploymentGetAllJobHeaders(client, state);
|
|
191
|
+
for (const [job, header] of Object.entries(headers))
|
|
192
|
+
jobHeaders.set(job, header);
|
|
193
|
+
return headers;
|
|
194
|
+
};
|
|
165
195
|
/**
|
|
166
196
|
* @description SSH key management for the deployment's jobs.
|
|
167
197
|
* Keys are stored on the deployment (no new revision or restart) and injected
|
|
@@ -198,12 +228,18 @@ export function createDeployment(deployment, clients, hasApiKey) {
|
|
|
198
228
|
};
|
|
199
229
|
// Built lazily on first node access and reused. Every node call is authorized
|
|
200
230
|
// by the deployment manager signing on the deployment's behalf (no local
|
|
201
|
-
// wallet; works under API-key auth).
|
|
231
|
+
// wallet; works under API-key auth). A job's own header (its address as the
|
|
232
|
+
// message) comes from the store; any other message (a terminal grant scoped to
|
|
233
|
+
// an op and expiry) is signed afresh.
|
|
202
234
|
let nodeFactory;
|
|
203
235
|
const nodeJob = (node, jobAddress) => {
|
|
204
236
|
nodeFactory ?? (nodeFactory = createNosanaNodeApi({
|
|
205
237
|
environment: clients.environment,
|
|
206
|
-
authParams: {
|
|
238
|
+
authParams: {
|
|
239
|
+
generate: (message) => isSolanaAddress(message)
|
|
240
|
+
? generateJobAuthHeader(message)
|
|
241
|
+
: generateAuthHeader({ message, includeTime: 'true' }),
|
|
242
|
+
},
|
|
207
243
|
options: clients.options,
|
|
208
244
|
}));
|
|
209
245
|
return nodeFactory(node).job(jobAddress);
|
|
@@ -298,6 +334,8 @@ export function createDeployment(deployment, clients, hasApiKey) {
|
|
|
298
334
|
getEvents,
|
|
299
335
|
stream,
|
|
300
336
|
generateAuthHeader,
|
|
337
|
+
generateJobAuthHeader,
|
|
338
|
+
generateAllJobAuthHeaders,
|
|
301
339
|
ssh,
|
|
302
340
|
createRevision,
|
|
303
341
|
updateReplicaCount,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createDeployment.js","sourceRoot":"","sources":["../../../../src/routes/deployments/deployment/createDeployment.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,4BAA4B,EAC5B,kBAAkB,EAClB,uBAAuB,EACvB,2BAA2B,EAC3B,8BAA8B,EAC9B,wBAAwB,EACxB,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,4BAA4B,EAC5B,gBAAgB,EAChB,sBAAsB,EACtB,4BAA4B,EAC5B,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AA2C1D,MAAM,UAAU,gBAAgB,CAC9B,UAA4B,EAC5B,OAAkE,EAClE,SAAuB;IAEvB,MAAM,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IACzC,IAAI,KAAK,GAAoB;QAC3B,GAAG,UAAU;QACb,UAAU,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAC3C,UAAU,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;KAC5C,CAAC;IAEF;;;;;OAKG;IACH,MAAM,KAAK,GAAG,KAAK,IAAmB,EAAE;QACtC,MAAM,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC,CAAC;IAEF;;;;;;;OAOG;IACH,MAAM,IAAI,GAAG,KAAK,IAAmB,EAAE;QACrC,MAAM,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC,CAAC;IAEF;;;;;;;OAOG;IACH,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;QACzB,MAAM,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC,CAAC;IAEF;;;;;;;;OAQG;IACH,MAAM,QAAQ,GAAG,KAAK,EAAE,MAAyB,EAA2B,EAAE;QAC5E,OAAO,MAAM,kBAAkB,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACzD,CAAC,CAAC;IAEF;;;;;;;OAOG;IACH,MAAM,cAAc,GAAG,KAAK,EAAE,aAA4B,EAAE,EAAE;QAC5D,MAAM,2BAA2B,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAClE,CAAC,CAAC;IAEF;;;;;;;OAOG;IACH,MAAM,kBAAkB,GAAG,KAAK,EAAE,QAAgB,EAAE,EAAE;QACpD,MAAM,4BAA4B,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAC9D,CAAC,CAAC;IAEF;;;;;;;OAOG;IACH,MAAM,aAAa,GAAG,KAAK,EAAE,OAAe,EAAE,EAAE;QAC9C,MAAM,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC,CAAC;IAEF;;;;;OAKG;IACH,MAAM,UAAU,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;QACxC,MAAM,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC;IAEF;;;;;;OAMG;IACH,MAAM,YAAY,GAAG,KAAK,EAAE,MAAc,EAAE,EAAE;QAC5C,MAAM,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACtD,CAAC,CAAC;IAEF
|
|
1
|
+
{"version":3,"file":"createDeployment.js","sourceRoot":"","sources":["../../../../src/routes/deployments/deployment/createDeployment.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Nodes accept a timestamped job header for this long (the `validate` default
|
|
3
|
+
* in @nosana/authorization).
|
|
4
|
+
*/
|
|
5
|
+
export declare const NODE_HEADER_VALIDITY_MS = 300000;
|
|
6
|
+
/** Headers stop being served this long before the node would reject them, to absorb clock skew. */
|
|
7
|
+
export declare const HEADER_REFRESH_MARGIN_MS = 60000;
|
|
8
|
+
export type JobHeaderStore = {
|
|
9
|
+
/** The job's header while the node will still accept it. */
|
|
10
|
+
get: (job: string) => string | undefined;
|
|
11
|
+
set: (job: string, header: string) => void;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* When a header stops being served: its signing timestamp plus the node's
|
|
15
|
+
* validity window, less the refresh margin. A header without a timestamp never
|
|
16
|
+
* expires on the node, so it is kept for the same window from when it was stored.
|
|
17
|
+
*/
|
|
18
|
+
export declare function headerExpiresAt(header: string, storedAt: number): number;
|
|
19
|
+
export declare function createJobHeaderStore(now?: () => number): JobHeaderStore;
|
|
20
|
+
export declare function jobHeaderStoreFor(client: object, deploymentId: string): JobHeaderStore;
|
|
21
|
+
//# sourceMappingURL=jobHeaderStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jobHeaderStore.d.ts","sourceRoot":"","sources":["../../../../src/routes/deployments/deployment/jobHeaderStore.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,uBAAuB,SAAU,CAAC;AAE/C,mGAAmG;AACnG,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAE/C,MAAM,MAAM,cAAc,GAAG;IAC3B,4DAA4D;IAC5D,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IACzC,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMxE;AAED,wBAAgB,oBAAoB,CAAC,GAAG,GAAE,MAAM,MAAiB,GAAG,cAAc,CAWjF;AASD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,cAAc,CAYtF"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Nodes accept a timestamped job header for this long (the `validate` default
|
|
3
|
+
* in @nosana/authorization).
|
|
4
|
+
*/
|
|
5
|
+
export const NODE_HEADER_VALIDITY_MS = 300000;
|
|
6
|
+
/** Headers stop being served this long before the node would reject them, to absorb clock skew. */
|
|
7
|
+
export const HEADER_REFRESH_MARGIN_MS = 60000;
|
|
8
|
+
/**
|
|
9
|
+
* When a header stops being served: its signing timestamp plus the node's
|
|
10
|
+
* validity window, less the refresh margin. A header without a timestamp never
|
|
11
|
+
* expires on the node, so it is kept for the same window from when it was stored.
|
|
12
|
+
*/
|
|
13
|
+
export function headerExpiresAt(header, storedAt) {
|
|
14
|
+
// `message:signature[:timestamp]`; a job address message holds no separator.
|
|
15
|
+
const parts = header.split(':');
|
|
16
|
+
const timestamp = parts.length >= 3 ? Number(parts[parts.length - 1]) : NaN;
|
|
17
|
+
const signedAt = Number.isFinite(timestamp) && timestamp > 0 ? timestamp : storedAt;
|
|
18
|
+
return signedAt + NODE_HEADER_VALIDITY_MS - HEADER_REFRESH_MARGIN_MS;
|
|
19
|
+
}
|
|
20
|
+
export function createJobHeaderStore(now = Date.now) {
|
|
21
|
+
const headers = new Map();
|
|
22
|
+
return {
|
|
23
|
+
get: (job) => {
|
|
24
|
+
const entry = headers.get(job);
|
|
25
|
+
return entry && entry.expiresAt > now() ? entry.header : undefined;
|
|
26
|
+
},
|
|
27
|
+
set: (job, header) => {
|
|
28
|
+
headers.set(job, { header, expiresAt: headerExpiresAt(header, now()) });
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Stores outlive the deployment objects that use them: callers commonly
|
|
34
|
+
* re-fetch a deployment (`deployments.get`) while its jobs keep streaming, so a
|
|
35
|
+
* store is kept per shared deployment-manager client and deployment id.
|
|
36
|
+
*/
|
|
37
|
+
const stores = new WeakMap();
|
|
38
|
+
export function jobHeaderStoreFor(client, deploymentId) {
|
|
39
|
+
let byDeployment = stores.get(client);
|
|
40
|
+
if (!byDeployment) {
|
|
41
|
+
byDeployment = new Map();
|
|
42
|
+
stores.set(client, byDeployment);
|
|
43
|
+
}
|
|
44
|
+
let store = byDeployment.get(deploymentId);
|
|
45
|
+
if (!store) {
|
|
46
|
+
store = createJobHeaderStore();
|
|
47
|
+
byDeployment.set(deploymentId, store);
|
|
48
|
+
}
|
|
49
|
+
return store;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=jobHeaderStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jobHeaderStore.js","sourceRoot":"","sources":["../../../../src/routes/deployments/deployment/jobHeaderStore.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAO,CAAC;AAE/C,mGAAmG;AACnG,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAM,CAAC;AAQ/C;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,QAAgB;IAC9D,6EAA6E;IAC7E,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAC5E,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;IACpF,OAAO,QAAQ,GAAG,uBAAuB,GAAG,wBAAwB,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAoB,IAAI,CAAC,GAAG;IAC/D,MAAM,OAAO,GAAG,IAAI,GAAG,EAAiD,CAAC;IACzE,OAAO;QACL,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE;YACX,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC/B,OAAO,KAAK,IAAI,KAAK,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QACrE,CAAC;QACD,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;YACnB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1E,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,MAAM,GAAG,IAAI,OAAO,EAAuC,CAAC;AAElE,MAAM,UAAU,iBAAiB,CAAC,MAAc,EAAE,YAAoB;IACpE,IAAI,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,KAAK,GAAG,oBAAoB,EAAE,CAAC;QAC/B,YAAY,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -8,6 +8,12 @@ export type DeploymentState = Omit<components['schemas']['Deployment'], "updated
|
|
|
8
8
|
updated_at: Date;
|
|
9
9
|
created_at: Date;
|
|
10
10
|
};
|
|
11
|
+
/**
|
|
12
|
+
* Node requirements: metric key → required value. A number is a minimum, a
|
|
13
|
+
* string or boolean must match exactly, and a list is any of its values, e.g.
|
|
14
|
+
* `{ name: ['NVIDIA GeForce RTX 4090', 'NVIDIA GeForce RTX 5090'], ram_gb: 64 }`.
|
|
15
|
+
*/
|
|
16
|
+
export type DeploymentRequirements = NonNullable<DeploymentState['requirements']>;
|
|
11
17
|
export type DeploymentCreateBody = components['schemas']['DeploymentCreateBody'];
|
|
12
18
|
export type CreateDeployment = Omit<DeploymentCreateBody, 'job_definition'> & {
|
|
13
19
|
job_definition: JobDefinition;
|
|
@@ -162,6 +168,10 @@ export type ApiDeployment = DeploymentState & {
|
|
|
162
168
|
/** Stream changes over server-sent events; close it to stop. */
|
|
163
169
|
stream: (handlers: DeploymentStreamHandlers) => DeploymentStreamSubscription;
|
|
164
170
|
generateAuthHeader: (query?: DeploymentAuthHeaderParams) => Promise<string>;
|
|
171
|
+
/** A job's timestamped node header: the stored one while still valid, else freshly signed. */
|
|
172
|
+
generateJobAuthHeader: (job: string) => Promise<string>;
|
|
173
|
+
/** Sign every running job's header in one request and store them for the jobs' node calls. */
|
|
174
|
+
generateAllJobAuthHeaders: () => Promise<Record<string, string>>;
|
|
165
175
|
ssh: DeploymentSsh;
|
|
166
176
|
createRevision: (jobDefinition: JobDefinition) => Promise<void>;
|
|
167
177
|
updateActiveRevision: (revision: number) => Promise<void>;
|
|
@@ -170,8 +180,12 @@ export type ApiDeployment = DeploymentState & {
|
|
|
170
180
|
updateSchedule: (schedule: string) => Promise<void>;
|
|
171
181
|
updateName: (name: string) => Promise<void>;
|
|
172
182
|
updateMarket: (market: string) => Promise<void>;
|
|
173
|
-
/**
|
|
174
|
-
|
|
183
|
+
/**
|
|
184
|
+
* Replace the node requirements, or clear them with null, together with the market
|
|
185
|
+
* that serves them. Omit the market (or pass null) to post across markets: each job
|
|
186
|
+
* goes to the cheapest PREMIUM market with a node that meets the requirements.
|
|
187
|
+
*/
|
|
188
|
+
updateRequirements: (requirements: DeploymentState['requirements'], market?: string | null) => Promise<void>;
|
|
175
189
|
/** Copy this deployment into a new one; the source is left untouched. */
|
|
176
190
|
duplicate: (options?: DeploymentDuplicateOptions) => Promise<ApiDeployment>;
|
|
177
191
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/routes/deployments/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACd,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,2CAA2C,CAAC;AACnF,OAAO,KAAK,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAClF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGnD,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC;AAG7D,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,EAAE,YAAY,GAAG,YAAY,CAAC,GAAG;IACrG,UAAU,EAAE,IAAI,CAAC;IACjB,UAAU,EAAE,IAAI,CAAC;CAClB,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/routes/deployments/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,10 +6,13 @@ type Json<T> = T extends {
|
|
|
6
6
|
} ? Body : never;
|
|
7
7
|
/**
|
|
8
8
|
* Metric key → required value. A number is a minimum (`ram_gb: 64` means at
|
|
9
|
-
* least 64 GB); a string or boolean must match exactly (`country: "NL"`)
|
|
10
|
-
* The GPU model is the `name` key, e.g.
|
|
9
|
+
* least 64 GB); a string or boolean must match exactly (`country: "NL"`); a
|
|
10
|
+
* list is any of its values. The GPU model is the `name` key, e.g.
|
|
11
|
+
* `{ name: ["NVIDIA GeForce RTX 4090", "NVIDIA GeForce RTX 5090"] }`.
|
|
11
12
|
*/
|
|
12
|
-
export type NosanaRequirements =
|
|
13
|
+
export type NosanaRequirements = NonNullable<NosanaAvailableNodesRequest['requirements']>;
|
|
14
|
+
/** One requirement's value: a scalar, or a list of them meaning any of. */
|
|
15
|
+
export type NosanaRequirementValue = NosanaRequirements[string];
|
|
13
16
|
/** GPU models on the network: VRAM, host counts and the markets they serve. */
|
|
14
17
|
export type NosanaGpuModels = Json<operations['getReservationsGpus']['responses']['200']>;
|
|
15
18
|
export type NosanaGpuModel = NosanaGpuModels['gpus'][number];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/routes/reservations/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAEtE,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,OAAO,EAAE;QAAE,kBAAkB,EAAE,MAAM,IAAI,CAAA;KAAE,CAAA;CAAE,GACpE,IAAI,GACJ,KAAK,CAAC;AAEV
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/routes/reservations/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAEtE,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,OAAO,EAAE;QAAE,kBAAkB,EAAE,MAAM,IAAI,CAAA;KAAE,CAAA;CAAE,GACpE,IAAI,GACJ,KAAK,CAAC;AAEV;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,GAAG,WAAW,CAC1C,2BAA2B,CAAC,cAAc,CAAC,CAC5C,CAAC;AACF,2EAA2E;AAC3E,MAAM,MAAM,sBAAsB,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAEhE,+EAA+E;AAC/E,MAAM,MAAM,eAAe,GAAG,IAAI,CAChC,UAAU,CAAC,qBAAqB,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CACtD,CAAC;AACF,MAAM,MAAM,cAAc,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7D,qFAAqF;AACrF,MAAM,MAAM,+BAA+B,GAAG,IAAI,CAChD,UAAU,CAAC,8BAA8B,CAAC,CAAC,aAAa,CAAC,CAC1D,CAAC;AACF,+EAA+E;AAC/E,MAAM,MAAM,wBAAwB,GAAG,IAAI,CACzC,UAAU,CAAC,8BAA8B,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAC/D,CAAC;AACF,MAAM,MAAM,uBAAuB,GAAG,wBAAwB,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;AAElF,6EAA6E;AAC7E,MAAM,MAAM,2BAA2B,GAAG,IAAI,CAC5C,UAAU,CAAC,2BAA2B,CAAC,CAAC,aAAa,CAAC,CACvD,CAAC;AACF,8EAA8E;AAC9E,MAAM,MAAM,oBAAoB,GAAG,IAAI,CACrC,UAAU,CAAC,2BAA2B,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAC5D,CAAC;AAEF,MAAM,WAAW,qBAAqB;IACpC,8EAA8E;IAC9E,QAAQ,EAAE,MAAM,OAAO,CAAC,eAAe,CAAC,CAAC;IACzC;;;OAGG;IACH,qBAAqB,EAAE,CACrB,OAAO,CAAC,EAAE,+BAA+B,KACtC,OAAO,CAAC,wBAAwB,CAAC,CAAC;IACvC,gFAAgF;IAChF,aAAa,EAAE,CACb,OAAO,CAAC,EAAE,2BAA2B,KAClC,OAAO,CAAC,oBAAoB,CAAC,CAAC;CACpC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nosana/api",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.19.0",
|
|
4
4
|
"description": "Nosana API module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -69,5 +69,5 @@
|
|
|
69
69
|
"engines": {
|
|
70
70
|
"node": ">=20.18.0"
|
|
71
71
|
},
|
|
72
|
-
"gitHead": "
|
|
72
|
+
"gitHead": "436844e9a88bd40910c22e42e7423e99b9c352d8"
|
|
73
73
|
}
|