@nosana/api 2.19.0 → 2.20.1
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 +6 -0
- package/dist/client/deployment-manager/schema.d.ts +4 -0
- package/dist/client/deployment-manager/schema.d.ts.map +1 -1
- package/dist/client/host-manager/schema.d.ts +36 -2
- package/dist/client/host-manager/schema.d.ts.map +1 -1
- package/dist/client/node/index.d.ts +11 -0
- package/dist/client/node/index.d.ts.map +1 -1
- package/dist/client/node/index.js +17 -0
- package/dist/client/node/index.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/routes/node/__tests__/fixtures.d.ts +8 -0
- package/dist/routes/node/__tests__/fixtures.d.ts.map +1 -1
- package/dist/routes/node/__tests__/fixtures.js +13 -0
- package/dist/routes/node/__tests__/fixtures.js.map +1 -1
- package/dist/routes/node/actions/nodeJob/nodeJobStats.d.ts +1 -1
- package/dist/routes/node/actions/nodeJob/nodeJobStats.d.ts.map +1 -1
- package/dist/routes/node/actions/nodeJob/nodeJobStats.js +2 -1
- package/dist/routes/node/actions/nodeJob/nodeJobStats.js.map +1 -1
- package/dist/routes/node/actions/nodeJobSsh/nodeJobSshAdd.d.ts +1 -1
- package/dist/routes/node/actions/nodeJobSsh/nodeJobSshAdd.d.ts.map +1 -1
- package/dist/routes/node/actions/nodeJobSsh/nodeJobSshAdd.js +2 -1
- package/dist/routes/node/actions/nodeJobSsh/nodeJobSshAdd.js.map +1 -1
- package/dist/routes/node/actions/nodeJobSsh/nodeJobSshKeys.d.ts +1 -1
- package/dist/routes/node/actions/nodeJobSsh/nodeJobSshKeys.d.ts.map +1 -1
- package/dist/routes/node/actions/nodeJobSsh/nodeJobSshKeys.js +2 -1
- package/dist/routes/node/actions/nodeJobSsh/nodeJobSshKeys.js.map +1 -1
- package/dist/routes/node/actions/nodeJobSsh/nodeJobSshRemove.d.ts +1 -1
- package/dist/routes/node/actions/nodeJobSsh/nodeJobSshRemove.d.ts.map +1 -1
- package/dist/routes/node/actions/nodeJobSsh/nodeJobSshRemove.js +4 -2
- package/dist/routes/node/actions/nodeJobSsh/nodeJobSshRemove.js.map +1 -1
- package/dist/routes/node/actions/nodeSocket/nodeJobLogs.d.ts.map +1 -1
- package/dist/routes/node/actions/nodeSocket/nodeJobLogs.js +6 -1
- package/dist/routes/node/actions/nodeSocket/nodeJobLogs.js.map +1 -1
- package/dist/routes/node/actions/terminal/openTerminal.d.ts.map +1 -1
- package/dist/routes/node/actions/terminal/openTerminal.js +2 -1
- package/dist/routes/node/actions/terminal/openTerminal.js.map +1 -1
- package/dist/routes/node/createNodeJob.d.ts.map +1 -1
- package/dist/routes/node/createNodeJob.js +7 -6
- package/dist/routes/node/createNodeJob.js.map +1 -1
- package/dist/routes/node/index.d.ts.map +1 -1
- package/dist/routes/node/index.js +4 -1
- package/dist/routes/node/index.js.map +1 -1
- package/dist/routes/node/jobRuntime.d.ts +26 -0
- package/dist/routes/node/jobRuntime.d.ts.map +1 -0
- package/dist/routes/node/jobRuntime.js +63 -0
- package/dist/routes/node/jobRuntime.js.map +1 -0
- package/dist/routes/node/types.d.ts +7 -1
- package/dist/routes/node/types.d.ts.map +1 -1
- package/package.json +4 -4
|
@@ -19,5 +19,16 @@ export declare function nodeUrl(environment: NosanaNetwork, address: string, opt
|
|
|
19
19
|
* one backed by the client manager's signing service.
|
|
20
20
|
*/
|
|
21
21
|
export declare function createNodeClient(environment: NosanaNetwork, address: string, authParams: SignedHeaderAuth | undefined, options?: CreateNosanaApiOptions): NodeClient;
|
|
22
|
+
/**
|
|
23
|
+
* Where a job's runtime sidecar answers, when its node started one: the job
|
|
24
|
+
* address as a subdomain of the same node domain.
|
|
25
|
+
*/
|
|
26
|
+
export declare function jobRuntimeUrl(environment: NosanaNetwork, job: string, options?: CreateNosanaApiOptions): string;
|
|
27
|
+
/**
|
|
28
|
+
* A job's runtime sidecar serves the node's runtime routes (stats, logs,
|
|
29
|
+
* terminal, SSH keys) at the same paths and checks the same signature, so it
|
|
30
|
+
* takes the node's client shape.
|
|
31
|
+
*/
|
|
32
|
+
export declare function createJobRuntimeClient(environment: NosanaNetwork, job: string, authParams: SignedHeaderAuth | undefined, options?: CreateNosanaApiOptions): NodeClient;
|
|
22
33
|
export {};
|
|
23
34
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/node/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,KAAK,EAAE,sBAAsB,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAE9F,wFAAwF;AACxF,KAAK,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC;AAEjC,0FAA0F;AAC1F,MAAM,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,GAAG;IAAE,UAAU,EAAE,gBAAgB,CAAA;CAAE,CAAC;AAEvF,oEAAoE;AACpE,wBAAgB,UAAU,CAAC,WAAW,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,MAAM,CAE/F;AAED,6FAA6F;AAC7F,wBAAgB,OAAO,CACrB,WAAW,EAAE,aAAa,EAC1B,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,sBAAsB,GAC/B,MAAM,CAGR;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,aAAa,EAC1B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,gBAAgB,GAAG,SAAS,EACxC,OAAO,CAAC,EAAE,sBAAsB,GAC/B,UAAU,CAEZ"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/node/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,KAAK,EAAE,sBAAsB,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAE9F,wFAAwF;AACxF,KAAK,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC;AAEjC,0FAA0F;AAC1F,MAAM,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,GAAG;IAAE,UAAU,EAAE,gBAAgB,CAAA;CAAE,CAAC;AAEvF,oEAAoE;AACpE,wBAAgB,UAAU,CAAC,WAAW,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,MAAM,CAE/F;AAED,6FAA6F;AAC7F,wBAAgB,OAAO,CACrB,WAAW,EAAE,aAAa,EAC1B,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,sBAAsB,GAC/B,MAAM,CAGR;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,aAAa,EAC1B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,gBAAgB,GAAG,SAAS,EACxC,OAAO,CAAC,EAAE,sBAAsB,GAC/B,UAAU,CAEZ;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,WAAW,EAAE,aAAa,EAC1B,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,sBAAsB,GAC/B,MAAM,CAGR;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,aAAa,EAC1B,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,gBAAgB,GAAG,SAAS,EACxC,OAAO,CAAC,EAAE,sBAAsB,GAC/B,UAAU,CAEZ"}
|
|
@@ -21,4 +21,21 @@ export function nodeUrl(environment, address, options) {
|
|
|
21
21
|
export function createNodeClient(environment, address, authParams, options) {
|
|
22
22
|
return createAuthenticatedClient(nodeUrl(environment, address, options), authParams);
|
|
23
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* Where a job's runtime sidecar answers, when its node started one: the job
|
|
26
|
+
* address as a subdomain of the same node domain.
|
|
27
|
+
*/
|
|
28
|
+
export function jobRuntimeUrl(environment, job, options) {
|
|
29
|
+
if (!isSolanaAddress(job))
|
|
30
|
+
throw new Error(`Invalid job address: ${job}`);
|
|
31
|
+
return `https://${job}.${nodeDomain(environment, options)}`;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* A job's runtime sidecar serves the node's runtime routes (stats, logs,
|
|
35
|
+
* terminal, SSH keys) at the same paths and checks the same signature, so it
|
|
36
|
+
* takes the node's client shape.
|
|
37
|
+
*/
|
|
38
|
+
export function createJobRuntimeClient(environment, job, authParams, options) {
|
|
39
|
+
return createAuthenticatedClient(jobRuntimeUrl(environment, job, options), authParams);
|
|
40
|
+
}
|
|
24
41
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/node/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAYxD,oEAAoE;AACpE,MAAM,UAAU,UAAU,CAAC,WAA0B,EAAE,OAAgC;IACrF,OAAO,OAAO,EAAE,WAAW,IAAI,aAAa,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC;AACxE,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,OAAO,CACrB,WAA0B,EAC1B,OAAe,EACf,OAAgC;IAEhC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,OAAO,EAAE,CAAC,CAAC;IACnF,OAAO,WAAW,OAAO,IAAI,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC;AAClE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,WAA0B,EAC1B,OAAe,EACf,UAAwC,EACxC,OAAgC;IAEhC,OAAO,yBAAyB,CAAQ,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC;AAC9F,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/node/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAYxD,oEAAoE;AACpE,MAAM,UAAU,UAAU,CAAC,WAA0B,EAAE,OAAgC;IACrF,OAAO,OAAO,EAAE,WAAW,IAAI,aAAa,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC;AACxE,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,OAAO,CACrB,WAA0B,EAC1B,OAAe,EACf,OAAgC;IAEhC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,OAAO,EAAE,CAAC,CAAC;IACnF,OAAO,WAAW,OAAO,IAAI,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC;AAClE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,WAA0B,EAC1B,OAAe,EACf,UAAwC,EACxC,OAAgC;IAEhC,OAAO,yBAAyB,CAAQ,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC;AAC9F,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAC3B,WAA0B,EAC1B,GAAW,EACX,OAAgC;IAEhC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,EAAE,CAAC,CAAC;IAC1E,OAAO,WAAW,GAAG,IAAI,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC;AAC9D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CACpC,WAA0B,EAC1B,GAAW,EACX,UAAwC,EACxC,OAAgC;IAEhC,OAAO,yBAAyB,CAAQ,aAAa,CAAC,WAAW,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC;AAChG,CAAC"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAEL,KAAK,aAAa,EAElB,KAAK,gBAAgB,EAErB,KAAK,gBAAgB,EAErB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EAGtB,KAAK,aAAa,EAElB,KAAK,kBAAkB,EAEvB,KAAK,cAAc,EAEnB,KAAK,cAAc,EAEnB,KAAK,iBAAiB,EAEtB,KAAK,mBAAmB,EAExB,KAAK,mBAAmB,EAExB,KAAK,qBAAqB,EAE1B,KAAK,QAAQ,EACd,MAAM,mBAAmB,CAAC;AAG3B,OAAO,KAAK,EACV,UAAU,EACV,sBAAsB,EACtB,UAAU,EAEV,aAAa,IAAI,iBAAiB,EAClC,aAAa,EACd,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,OAAO,EAAE,gBAAgB,CAAC;IAC1B,WAAW,EAAE,cAAc,CAAC;IAC5B,IAAI,EAAE,aAAa,CAAC;IACpB,SAAS,EAAE,kBAAkB,CAAC;IAC9B,KAAK,EAAE,cAAc,CAAC;IACtB,KAAK,EAAE,cAAc,CAAC;IACtB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,UAAU,EAAE,mBAAmB,CAAC;IAChC,UAAU,EAAE,mBAAmB,CAAC;IAChC,YAAY,EAAE,qBAAqB,CAAC;IACpC,uDAAuD;IACvD,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC7C;;;;;OAKG;IACH,OAAO,EAAE,aAAa,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,OAAO,EAAE,gBAAgB,CAAC;IAC1B,WAAW,EAAE,iBAAiB,CAAC;IAC/B,IAAI,EAAE,aAAa,CAAC;IACpB,SAAS,EAAE,kBAAkB,CAAC;IAC9B,KAAK,EAAE,cAAc,CAAC;IACtB,KAAK,EAAE,cAAc,CAAC;IACtB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,UAAU,EAAE,mBAAmB,CAAC;IAChC,UAAU,EAAE,mBAAmB,CAAC;IAChC,YAAY,EAAE,qBAAqB,CAAC;IACpC,uDAAuD;IACvD,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC7C,OAAO,EAAE,aAAa,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,mBAAmB,CAAC;AAElD,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,mBAAmB,GAAG,eAAe,CAAC;AA4BhF,wBAAgB,eAAe,CAC7B,WAAW,EAAE,iBAAiB,EAC9B,MAAM,EAAE,SAAS,EACjB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,SAAS,CAAC;AACb,wBAAgB,eAAe,CAC7B,WAAW,EAAE,iBAAiB,EAC9B,UAAU,EAAE,UAAU,EACtB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,SAAS,CAAC;AACb,wBAAgB,eAAe,CAC7B,WAAW,EAAE,iBAAiB,EAC9B,UAAU,EAAE,UAAU,EACtB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -57,8 +57,10 @@ export function createNosanaApi(environment = NosanaNetwork.MAINNET, signerOrApi
|
|
|
57
57
|
clientManager: clients.clientManager,
|
|
58
58
|
}),
|
|
59
59
|
benchmarks: createNosanaBenchmarksApi({ hostManager: clients.hostManager }),
|
|
60
|
+
// Public, read-only lookups: made without a credential, so a connected
|
|
61
|
+
// wallet is never asked to sign for a GPU list or an availability check.
|
|
60
62
|
reservations: createNosanaReservationsApi({
|
|
61
|
-
hostManager:
|
|
63
|
+
hostManager: createHostManagerClient(environment, undefined, options),
|
|
62
64
|
}),
|
|
63
65
|
node: (address) => node(address).info(),
|
|
64
66
|
clients,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kCAAkC,EAClC,6BAA6B,EAC7B,uBAAuB,EACvB,6BAA6B,GAC9B,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,mBAAmB,EAEnB,sBAAsB,EAEtB,sBAAsB,EAEtB,oBAAoB,EAGpB,mBAAmB,EACnB,mBAAmB,EAEnB,wBAAwB,EAExB,oBAAoB,EAEpB,oBAAoB,EAEpB,uBAAuB,EAEvB,yBAAyB,EAEzB,yBAAyB,EAEzB,2BAA2B,EAE3B,mBAAmB,GAEpB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAoE3C,SAAS,aAAa,CACpB,WAA8B,EAC9B,UAA+C,EAC/C,OAAgC;IAEhC,OAAO;QACL,aAAa,EAAE,kCAAkC,CAC/C,WAAW,EACX,UAAU,EACV,OAAO,CACR;QACD,WAAW,EAAE,uBAAuB,CAAC,WAAW,EAAE,UAAU,EAAE,OAAO,CAAC;QACtE,iBAAiB,EAAE,6BAA6B,CAC9C,WAAW,EACX,UAAU,EACV,OAAO,CACR;QACD,iBAAiB,EAAE,6BAA6B,CAC9C,WAAW,EACX,UAAU,EACV,OAAO,CACR;KACF,CAAC;AACJ,CAAC;AAmBD,MAAM,UAAU,eAAe,CAC7B,cAAiC,aAAa,CAAC,OAAO,EACtD,cAAmD,EACnD,OAAgC;IAEhC,2EAA2E;IAC3E,mDAAmD;IACnD,MAAM,SAAS,GAAG,OAAO,cAAc,KAAK,QAAQ,IAAI,OAAO,cAAc,KAAK,UAAU,CAAC;IAC7F,MAAM,OAAO,GAAG,aAAa,CAAC,WAAW,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;IACpE,MAAM,IAAI,GAAG,mBAAmB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACxD,+EAA+E;IAC/E,+EAA+E;IAC/E,0EAA0E;IAC1E,0EAA0E;IAC1E,MAAM,gBAAgB,GAAG,SAAS,IAAI,CAAC,CAAC,cAAc,IAAI,OAAO,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC;IACjG,MAAM,QAAQ,GAAiC,gBAAgB;QAC7D,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;QACrD,CAAC,CAAC,+EAA+E;YAC9E,cAAyC,CAAC;IAC/C,MAAM,IAAI,GAAG,mBAAmB,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IAEjF,OAAO;QACL,IAAI;QACJ,IAAI,EAAE,mBAAmB,CAAC;YACxB,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;YAC5C,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,IAAI;SACL,CAAC;QACF,OAAO,EAAE,sBAAsB,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC;QACzE,OAAO,EAAE,sBAAsB,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;QACrE,kEAAkE;QAClE,8EAA8E;QAC9E,WAAW,EACT,OAAO,cAAc,KAAK,QAAQ,IAAI,cAAc,KAAK,IAAI;YAC3D,CAAC,CAAC,oBAAoB,CAClB;gBACE,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;gBAC5C,WAAW;gBACX,OAAO;gBACP,MAAM,EAAE,cAAc,CAAC,MAAM;aAC9B,EACD,KAAK,CACN;YACH,CAAC,CAAC,oBAAoB,CAClB,EAAE,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,EAAE,WAAW,EAAE,OAAO,EAAE,EACtE,IAAI,CACL;QACP,IAAI,EAAE,mBAAmB,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC;QACnE,SAAS,EAAE,wBAAwB,CAAC;YAClC,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC,CAAC;QACF,KAAK,EAAE,oBAAoB,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;QACjE,KAAK,EAAE,oBAAoB,CAAC;YAC1B,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;SAC7C,CAAC;QACF,QAAQ,EAAE,uBAAuB,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC;QAC3E,UAAU,EAAE,yBAAyB,CAAC;YACpC,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC,CAAC;QACF,UAAU,EAAE,yBAAyB,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;QAC3E,YAAY,EAAE,2BAA2B,CAAC;YACxC,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,14 @@ export declare const failed: (status: number, error: unknown) => {
|
|
|
16
16
|
export declare const signer: SignerAuth;
|
|
17
17
|
/** The node API on devnet against the global mock client; `null` means no signer at all. */
|
|
18
18
|
export declare function nodeApi(auth?: SignerAuth | null): import("../types.js").NodeApi;
|
|
19
|
+
/**
|
|
20
|
+
* Answers the job's sidecar check (a plain `fetch` of `GET /`): a sidecar up
|
|
21
|
+
* for `JOB`, or the 404 frps gives for a job without one. Undo with
|
|
22
|
+
* `vi.unstubAllGlobals()`.
|
|
23
|
+
*/
|
|
24
|
+
export declare function stubSidecar(present: boolean): import("vitest").Mock<() => Promise<Response>>;
|
|
25
|
+
/** Lets a stream that opens once the sidecar check is done open. */
|
|
26
|
+
export declare const settle: () => Promise<unknown>;
|
|
19
27
|
export declare class FakeWebSocket {
|
|
20
28
|
binaryType: string;
|
|
21
29
|
readyState: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../../../../src/routes/node/__tests__/fixtures.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../../../../src/routes/node/__tests__/fixtures.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,eAAO,MAAM,IAAI,iDAAiD,CAAC;AACnE,eAAO,MAAM,GAAG,iDAAiD,CAAC;AAClE,eAAO,MAAM,GAAG,4FAC2E,CAAC;AAE5F,eAAO,MAAM,EAAE,GAAI,MAAM,OAAO;;;;CAAsD,CAAC;AACvF,eAAO,MAAM,MAAM,GAAI,QAAQ,MAAM,EAAE,OAAO,OAAO;;;;CAInD,CAAC;AAEH,yGAAyG;AACzG,eAAO,MAAM,MAAM,EAAE,UAIpB,CAAC;AAEF,4FAA4F;AAC5F,wBAAgB,OAAO,CAAC,IAAI,GAAE,UAAU,GAAG,IAAa,iCAEvD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,kDAM3C;AAED,oEAAoE;AACpE,eAAO,MAAM,MAAM,wBAAyD,CAAC;AAE7E,qBAAa,aAAa;IACxB,UAAU,SAAM;IAChB,UAAU,SAAK;IACf,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAQ;IAC/D,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC,GAAG,IAAI,CAAQ;IACzD,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC,GAAG,IAAI,CAAQ;IACrD,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC,GAAG,IAAI,CAAQ;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAM;IAE7B,IAAI,CAAC,IAAI,EAAE,MAAM;IAIjB,KAAK;CAGN"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { vi } from 'vitest';
|
|
1
2
|
import { createNosanaNodeApi } from '../index.js';
|
|
2
3
|
export const NODE = '7XkMcd1AYjCJU7SjrpGmGWHshfr9iVTiw88u6CThYEpL';
|
|
3
4
|
export const JOB = '8TjrkaZmW2UFjpm2Va5LECJc7zoFrbUJETk6fPimGi9a';
|
|
@@ -18,6 +19,18 @@ export const signer = {
|
|
|
18
19
|
export function nodeApi(auth = signer) {
|
|
19
20
|
return createNosanaNodeApi({ environment: 'devnet', authParams: auth ?? undefined })(NODE);
|
|
20
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* Answers the job's sidecar check (a plain `fetch` of `GET /`): a sidecar up
|
|
24
|
+
* for `JOB`, or the 404 frps gives for a job without one. Undo with
|
|
25
|
+
* `vi.unstubAllGlobals()`.
|
|
26
|
+
*/
|
|
27
|
+
export function stubSidecar(present) {
|
|
28
|
+
const check = vi.fn(async () => present ? new Response(JSON.stringify(JOB)) : new Response('Not Found', { status: 404 }));
|
|
29
|
+
vi.stubGlobal('fetch', check);
|
|
30
|
+
return check;
|
|
31
|
+
}
|
|
32
|
+
/** Lets a stream that opens once the sidecar check is done open. */
|
|
33
|
+
export const settle = () => new Promise((resolve) => setTimeout(resolve, 0));
|
|
21
34
|
export class FakeWebSocket {
|
|
22
35
|
constructor() {
|
|
23
36
|
this.binaryType = '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixtures.js","sourceRoot":"","sources":["../../../../src/routes/node/__tests__/fixtures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAIlD,MAAM,CAAC,MAAM,IAAI,GAAG,8CAA8C,CAAC;AACnE,MAAM,CAAC,MAAM,GAAG,GAAG,8CAA8C,CAAC;AAClE,MAAM,CAAC,MAAM,GAAG,GACd,yFAAyF,CAAC;AAE5F,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAa,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,QAAQ,EAAE,EAAE,CAAC,CAAC;AACvF,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,MAAc,EAAE,KAAc,EAAE,EAAE,CAAC,CAAC;IACzD,IAAI,EAAE,IAAI;IACV,KAAK;IACL,QAAQ,EAAE,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC;CACzC,CAAC,CAAC;AAEH,yGAAyG;AACzG,MAAM,CAAC,MAAM,MAAM,GAAe;IAChC,UAAU,EAAE,IAAI;IAChB,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,OAAO,SAAS;IAChD,MAAM,EAAE,EAAW;CACpB,CAAC;AAEF,4FAA4F;AAC5F,MAAM,UAAU,OAAO,CAAC,OAA0B,MAAM;IACtD,OAAO,mBAAmB,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,IAAI,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC7F,CAAC;AAED,MAAM,OAAO,aAAa;IAA1B;QACE,eAAU,GAAG,EAAE,CAAC;QAChB,eAAU,GAAG,CAAC,CAAC;QACf,WAAM,GAAoD,IAAI,CAAC;QAC/D,cAAS,GAA2C,IAAI,CAAC;QACzD,YAAO,GAAyC,IAAI,CAAC;QACrD,YAAO,GAAoC,IAAI,CAAC;QACvC,SAAI,GAAa,EAAE,CAAC;IAS/B,CAAC;IAPC,IAAI,CAAC,IAAY;QACf,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;IACtB,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"fixtures.js","sourceRoot":"","sources":["../../../../src/routes/node/__tests__/fixtures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAIlD,MAAM,CAAC,MAAM,IAAI,GAAG,8CAA8C,CAAC;AACnE,MAAM,CAAC,MAAM,GAAG,GAAG,8CAA8C,CAAC;AAClE,MAAM,CAAC,MAAM,GAAG,GACd,yFAAyF,CAAC;AAE5F,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAa,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,QAAQ,EAAE,EAAE,CAAC,CAAC;AACvF,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,MAAc,EAAE,KAAc,EAAE,EAAE,CAAC,CAAC;IACzD,IAAI,EAAE,IAAI;IACV,KAAK;IACL,QAAQ,EAAE,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC;CACzC,CAAC,CAAC;AAEH,yGAAyG;AACzG,MAAM,CAAC,MAAM,MAAM,GAAe;IAChC,UAAU,EAAE,IAAI;IAChB,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,OAAO,SAAS;IAChD,MAAM,EAAE,EAAW;CACpB,CAAC;AAEF,4FAA4F;AAC5F,MAAM,UAAU,OAAO,CAAC,OAA0B,MAAM;IACtD,OAAO,mBAAmB,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,IAAI,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC7F,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,OAAgB;IAC1C,MAAM,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAC7B,OAAO,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CACzF,CAAC;IACF,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC9B,OAAO,KAAK,CAAC;AACf,CAAC;AAED,oEAAoE;AACpE,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;AAE7E,MAAM,OAAO,aAAa;IAA1B;QACE,eAAU,GAAG,EAAE,CAAC;QAChB,eAAU,GAAG,CAAC,CAAC;QACf,WAAM,GAAoD,IAAI,CAAC;QAC/D,cAAS,GAA2C,IAAI,CAAC;QACzD,YAAO,GAAyC,IAAI,CAAC;QACrD,YAAO,GAAoC,IAAI,CAAC;QACvC,SAAI,GAAa,EAAE,CAAC;IAS/B,CAAC;IAPC,IAAI,CAAC,IAAY;QACf,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;IACtB,CAAC;CACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { NodeClient } from '../../../../client/node/index.js';
|
|
2
2
|
import type { NodeStatsQuery, NodeTaskStat } from '../../types.js';
|
|
3
|
-
export declare function nodeJobStats(
|
|
3
|
+
export declare function nodeJobStats(runtimeClient: () => Promise<NodeClient>, job: string, query?: NodeStatsQuery): Promise<NodeTaskStat[]>;
|
|
4
4
|
//# sourceMappingURL=nodeJobStats.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodeJobStats.d.ts","sourceRoot":"","sources":["../../../../../src/routes/node/actions/nodeJob/nodeJobStats.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnE,wBAAsB,YAAY,CAChC,
|
|
1
|
+
{"version":3,"file":"nodeJobStats.d.ts","sourceRoot":"","sources":["../../../../../src/routes/node/actions/nodeJob/nodeJobStats.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnE,wBAAsB,YAAY,CAChC,aAAa,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,EACxC,GAAG,EAAE,MAAM,EACX,KAAK,GAAE,cAAmB,GACzB,OAAO,CAAC,YAAY,EAAE,CAAC,CAOzB"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { errorFormatter } from '../../../../utils/errorFormatter.js';
|
|
2
|
-
export async function nodeJobStats(
|
|
2
|
+
export async function nodeJobStats(runtimeClient, job, query = {}) {
|
|
3
|
+
const client = await runtimeClient();
|
|
3
4
|
const { data, error, response } = await client.GET('/job/{job}/stats', { params: { path: { job }, query } });
|
|
4
5
|
if ((error !== undefined && error !== null) || data === undefined) {
|
|
5
6
|
throw errorFormatter('Failed to get stats', error, response);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodeJobStats.js","sourceRoot":"","sources":["../../../../../src/routes/node/actions/nodeJob/nodeJobStats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAKrE,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,
|
|
1
|
+
{"version":3,"file":"nodeJobStats.js","sourceRoot":"","sources":["../../../../../src/routes/node/actions/nodeJob/nodeJobStats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAKrE,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,aAAwC,EACxC,GAAW,EACX,QAAwB,EAAE;IAE1B,MAAM,MAAM,GAAG,MAAM,aAAa,EAAE,CAAC;IACrC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;IAC7G,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QAClE,MAAM,cAAc,CAAC,qBAAqB,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { NodeClient } from '../../../../client/node/index.js';
|
|
2
2
|
import type { NodeSshAddKeyOptions, NodeSshAuthorization } from '../../types.js';
|
|
3
3
|
/** Grants one key, permanently unless `expiresAt` is set. Validated before anything is sent. */
|
|
4
|
-
export declare function nodeJobSshAdd(
|
|
4
|
+
export declare function nodeJobSshAdd(runtimeClient: () => Promise<NodeClient>, job: string, publicKey: string, { expiresAt, signal }?: NodeSshAddKeyOptions): Promise<NodeSshAuthorization>;
|
|
5
5
|
//# sourceMappingURL=nodeJobSshAdd.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodeJobSshAdd.d.ts","sourceRoot":"","sources":["../../../../../src/routes/node/actions/nodeJobSsh/nodeJobSshAdd.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEjF,gGAAgG;AAChG,wBAAsB,aAAa,CACjC,
|
|
1
|
+
{"version":3,"file":"nodeJobSshAdd.d.ts","sourceRoot":"","sources":["../../../../../src/routes/node/actions/nodeJobSsh/nodeJobSshAdd.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEjF,gGAAgG;AAChG,wBAAsB,aAAa,CACjC,aAAa,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,EACxC,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,EAAE,SAAS,EAAE,MAAM,EAAE,GAAE,oBAAyB,GAC/C,OAAO,CAAC,oBAAoB,CAAC,CAa/B"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { requireSshPublicKey } from '@nosana/ssh';
|
|
2
2
|
import { errorFormatter } from '../../../../utils/errorFormatter.js';
|
|
3
3
|
/** Grants one key, permanently unless `expiresAt` is set. Validated before anything is sent. */
|
|
4
|
-
export async function nodeJobSshAdd(
|
|
4
|
+
export async function nodeJobSshAdd(runtimeClient, job, publicKey, { expiresAt, signal } = {}) {
|
|
5
5
|
const sshPublicKey = requireSshPublicKey(publicKey);
|
|
6
6
|
const expiry = toExpiry(expiresAt);
|
|
7
|
+
const client = await runtimeClient();
|
|
7
8
|
const { data, error, response } = await client.POST('/job/{job}/ssh/authorize', {
|
|
8
9
|
params: { path: { job } },
|
|
9
10
|
signal,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodeJobSshAdd.js","sourceRoot":"","sources":["../../../../../src/routes/node/actions/nodeJobSsh/nodeJobSshAdd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAKrE,gGAAgG;AAChG,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,
|
|
1
|
+
{"version":3,"file":"nodeJobSshAdd.js","sourceRoot":"","sources":["../../../../../src/routes/node/actions/nodeJobSsh/nodeJobSshAdd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAKrE,gGAAgG;AAChG,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,aAAwC,EACxC,GAAW,EACX,SAAiB,EACjB,EAAE,SAAS,EAAE,MAAM,KAA2B,EAAE;IAEhD,MAAM,YAAY,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,MAAM,aAAa,EAAE,CAAC;IACrC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE;QAC9E,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE;QACzB,MAAM;QACN,IAAI,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE;KACpF,CAAC,CAAC;IACH,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QAClE,MAAM,cAAc,CAAC,uBAAuB,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,QAAQ,CAAC,SAA2B;IAC3C,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC9C,IAAI,CAAC,CAAC,SAAS,YAAY,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,SAAS,CAAC,WAAW,EAAE,CAAC;AACjC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { NodeClient } from '../../../../client/node/index.js';
|
|
2
2
|
import type { NodeSshAuthorizedKey, NodeSshKeyOptions } from '../../types.js';
|
|
3
|
-
export declare function nodeJobSshKeys(
|
|
3
|
+
export declare function nodeJobSshKeys(runtimeClient: () => Promise<NodeClient>, job: string, { signal }?: NodeSshKeyOptions): Promise<NodeSshAuthorizedKey[]>;
|
|
4
4
|
//# sourceMappingURL=nodeJobSshKeys.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodeJobSshKeys.d.ts","sourceRoot":"","sources":["../../../../../src/routes/node/actions/nodeJobSsh/nodeJobSshKeys.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAE9E,wBAAsB,cAAc,CAClC,
|
|
1
|
+
{"version":3,"file":"nodeJobSshKeys.d.ts","sourceRoot":"","sources":["../../../../../src/routes/node/actions/nodeJobSsh/nodeJobSshKeys.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAE9E,wBAAsB,cAAc,CAClC,aAAa,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,EACxC,GAAG,EAAE,MAAM,EACX,EAAE,MAAM,EAAE,GAAE,iBAAsB,GACjC,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAUjC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { errorFormatter } from '../../../../utils/errorFormatter.js';
|
|
2
|
-
export async function nodeJobSshKeys(
|
|
2
|
+
export async function nodeJobSshKeys(runtimeClient, job, { signal } = {}) {
|
|
3
|
+
const client = await runtimeClient();
|
|
3
4
|
const { data, error, response } = await client.GET('/job/{job}/ssh/keys', {
|
|
4
5
|
params: { path: { job } },
|
|
5
6
|
signal,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodeJobSshKeys.js","sourceRoot":"","sources":["../../../../../src/routes/node/actions/nodeJobSsh/nodeJobSshKeys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAKrE,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,
|
|
1
|
+
{"version":3,"file":"nodeJobSshKeys.js","sourceRoot":"","sources":["../../../../../src/routes/node/actions/nodeJobSsh/nodeJobSshKeys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAKrE,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,aAAwC,EACxC,GAAW,EACX,EAAE,MAAM,KAAwB,EAAE;IAElC,MAAM,MAAM,GAAG,MAAM,aAAa,EAAE,CAAC;IACrC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,qBAAqB,EAAE;QACxE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE;QACzB,MAAM;KACP,CAAC,CAAC;IACH,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QAClE,MAAM,cAAc,CAAC,wBAAwB,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC;AACnB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { NodeClient } from '../../../../client/node/index.js';
|
|
2
2
|
import type { NodeSshKeyOptions, NodeSshRevocation } from '../../types.js';
|
|
3
|
-
export declare function nodeJobSshRemove(
|
|
3
|
+
export declare function nodeJobSshRemove(runtimeClient: () => Promise<NodeClient>, job: string, publicKey: string, { signal }?: NodeSshKeyOptions): Promise<NodeSshRevocation>;
|
|
4
4
|
//# sourceMappingURL=nodeJobSshRemove.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodeJobSshRemove.d.ts","sourceRoot":"","sources":["../../../../../src/routes/node/actions/nodeJobSsh/nodeJobSshRemove.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAE3E,wBAAsB,gBAAgB,CACpC,
|
|
1
|
+
{"version":3,"file":"nodeJobSshRemove.d.ts","sourceRoot":"","sources":["../../../../../src/routes/node/actions/nodeJobSsh/nodeJobSshRemove.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAE3E,wBAAsB,gBAAgB,CACpC,aAAa,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,EACxC,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,EAAE,MAAM,EAAE,GAAE,iBAAsB,GACjC,OAAO,CAAC,iBAAiB,CAAC,CAY5B"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { requireSshPublicKey } from '@nosana/ssh';
|
|
2
2
|
import { errorFormatter } from '../../../../utils/errorFormatter.js';
|
|
3
|
-
export async function nodeJobSshRemove(
|
|
3
|
+
export async function nodeJobSshRemove(runtimeClient, job, publicKey, { signal } = {}) {
|
|
4
|
+
const sshPublicKey = requireSshPublicKey(publicKey);
|
|
5
|
+
const client = await runtimeClient();
|
|
4
6
|
const { data, error, response } = await client.DELETE('/job/{job}/ssh/keys', {
|
|
5
7
|
params: { path: { job } },
|
|
6
8
|
signal,
|
|
7
|
-
body: { sshPublicKey
|
|
9
|
+
body: { sshPublicKey },
|
|
8
10
|
});
|
|
9
11
|
if ((error !== undefined && error !== null) || data === undefined) {
|
|
10
12
|
throw errorFormatter('Failed to remove SSH key', error, response);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodeJobSshRemove.js","sourceRoot":"","sources":["../../../../../src/routes/node/actions/nodeJobSsh/nodeJobSshRemove.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAKrE,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,
|
|
1
|
+
{"version":3,"file":"nodeJobSshRemove.js","sourceRoot":"","sources":["../../../../../src/routes/node/actions/nodeJobSsh/nodeJobSshRemove.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAKrE,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,aAAwC,EACxC,GAAW,EACX,SAAiB,EACjB,EAAE,MAAM,KAAwB,EAAE;IAElC,MAAM,YAAY,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,MAAM,aAAa,EAAE,CAAC;IACrC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE;QAC3E,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE;QACzB,MAAM;QACN,IAAI,EAAE,EAAE,YAAY,EAAE;KACvB,CAAC,CAAC;IACH,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QAClE,MAAM,cAAc,CAAC,0BAA0B,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodeJobLogs.d.ts","sourceRoot":"","sources":["../../../../../src/routes/node/actions/nodeSocket/nodeJobLogs.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"nodeJobLogs.d.ts","sourceRoot":"","sources":["../../../../../src/routes/node/actions/nodeSocket/nodeJobLogs.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,WAAW,EACZ,MAAM,gBAAgB,CAAC;AAOxB,wBAAgB,WAAW,CACzB,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,kBAAkB,CAAC,WAAW,CAAC,EACzC,MAAM,GAAE,cAAmB,EAC3B,OAAO,CAAC,EAAE,iBAAiB,GAC1B,sBAAsB,CAaxB"}
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
import { tryParseJson } from '../../../../utils/json.js';
|
|
2
|
+
import { requireNodeAuthorization } from '../authorization.js';
|
|
3
|
+
import { openOnJobRuntime } from '../../jobRuntime.js';
|
|
2
4
|
import { openNodeSocket } from './socket.js';
|
|
3
5
|
/** Task manager logs arrive JSON-encoded inside the frame's `data`. */
|
|
4
6
|
function parseTaskLog(data) {
|
|
5
7
|
return typeof data === 'string' ? tryParseJson(data) : undefined;
|
|
6
8
|
}
|
|
7
9
|
export function nodeJobLogs(context, handlers, filter = {}, options) {
|
|
8
|
-
|
|
10
|
+
// Checked now rather than once the runtime client is known, so a missing
|
|
11
|
+
// signer still throws before anything opens.
|
|
12
|
+
requireNodeAuthorization(context, options?.authorizationProvider);
|
|
13
|
+
return openOnJobRuntime(context.runtimeClient, (client) => openNodeSocket({ ...context, client }, { path: '/flog', body: { jobAddress: context.job, ...filter } }, handlers, parseTaskLog, options));
|
|
9
14
|
}
|
|
10
15
|
//# sourceMappingURL=nodeJobLogs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodeJobLogs.js","sourceRoot":"","sources":["../../../../../src/routes/node/actions/nodeSocket/nodeJobLogs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAW7C,uEAAuE;AACvE,SAAS,YAAY,CAAC,IAAa;IACjC,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAE,YAAY,CAAC,IAAI,CAA6B,CAAC,CAAC,CAAC,SAAS,CAAC;AAChG,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,OAAuB,EACvB,QAAyC,EACzC,SAAyB,EAAE,EAC3B,OAA2B;IAE3B,OAAO,cAAc,
|
|
1
|
+
{"version":3,"file":"nodeJobLogs.js","sourceRoot":"","sources":["../../../../../src/routes/node/actions/nodeSocket/nodeJobLogs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAW7C,uEAAuE;AACvE,SAAS,YAAY,CAAC,IAAa;IACjC,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAE,YAAY,CAAC,IAAI,CAA6B,CAAC,CAAC,CAAC,SAAS,CAAC;AAChG,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,OAAuB,EACvB,QAAyC,EACzC,SAAyB,EAAE,EAC3B,OAA2B;IAE3B,yEAAyE;IACzE,6CAA6C;IAC7C,wBAAwB,CAAC,OAAO,EAAE,OAAO,EAAE,qBAAqB,CAAC,CAAC;IAClE,OAAO,gBAAgB,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CACxD,cAAc,CACZ,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,EACtB,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,EAAE,EAC/D,QAAQ,EACR,YAAY,EACZ,OAAO,CACR,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openTerminal.d.ts","sourceRoot":"","sources":["../../../../../src/routes/node/actions/terminal/openTerminal.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAE3F,wFAAwF;AACxF,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,eAAe,CAAC,
|
|
1
|
+
{"version":3,"file":"openTerminal.d.ts","sourceRoot":"","sources":["../../../../../src/routes/node/actions/terminal/openTerminal.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAE3F,wFAAwF;AACxF,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,eAAe,CAAC,CAkB1B"}
|
|
@@ -15,8 +15,9 @@ export async function openNodeJobTerminal(context, options) {
|
|
|
15
15
|
ttlMs: options.ttlMs,
|
|
16
16
|
authorize,
|
|
17
17
|
});
|
|
18
|
+
const client = await context.runtimeClient();
|
|
18
19
|
options.signal?.throwIfAborted();
|
|
19
|
-
const socket = openNodeWebSocket(
|
|
20
|
+
const socket = openNodeWebSocket(client, '/terminal', options.webSocketFactory);
|
|
20
21
|
return openTerminalSession(socket, context.job, authorization, options);
|
|
21
22
|
}
|
|
22
23
|
//# sourceMappingURL=openTerminal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openTerminal.js","sourceRoot":"","sources":["../../../../../src/routes/node/actions/terminal/openTerminal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,gCAAgC,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAInD,wFAAwF;AACxF,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAuB,EACvB,OAA4B;IAE5B,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;IACjC,MAAM,SAAS,GAAG,wBAAwB,CAAC,OAAO,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACnF,OAAO,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,CAAC;IAElC,MAAM,aAAa,GAAG,MAAM,gCAAgC,CAAC;QAC3D,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO,EAAE,OAAO,CAAC,WAAW;QAC5B,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,SAAS;KACV,CAAC,CAAC;IACH,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;IAEjC,MAAM,MAAM,GAAG,iBAAiB,CAAC,
|
|
1
|
+
{"version":3,"file":"openTerminal.js","sourceRoot":"","sources":["../../../../../src/routes/node/actions/terminal/openTerminal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,gCAAgC,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAInD,wFAAwF;AACxF,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAuB,EACvB,OAA4B;IAE5B,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;IACjC,MAAM,SAAS,GAAG,wBAAwB,CAAC,OAAO,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACnF,OAAO,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,CAAC;IAElC,MAAM,aAAa,GAAG,MAAM,gCAAgC,CAAC;QAC3D,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO,EAAE,OAAO,CAAC,WAAW;QAC5B,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,SAAS;KACV,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,aAAa,EAAE,CAAC;IAC7C,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;IAEjC,MAAM,MAAM,GAAG,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAChF,OAAO,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;AAC1E,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createNodeJob.d.ts","sourceRoot":"","sources":["../../../src/routes/node/createNodeJob.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"createNodeJob.d.ts","sourceRoot":"","sources":["../../../src/routes/node/createNodeJob.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE7D,wBAAgB,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,UAAU,CAiCjE"}
|
|
@@ -4,8 +4,9 @@ import { nodeJobSshAdd, nodeJobSshKeys, nodeJobSshRemove } from './actions/nodeJ
|
|
|
4
4
|
import { nodeJobInfoStream, nodeJobStatsStream } from './actions/nodeJobStreams/index.js';
|
|
5
5
|
import { nodeJobLogs, nodeJobStatus } from './actions/nodeSocket/index.js';
|
|
6
6
|
import { openNodeJobTerminal } from './actions/terminal/openTerminal.js';
|
|
7
|
+
import { openOnJobRuntime } from './jobRuntime.js';
|
|
7
8
|
export function createNodeJob(context) {
|
|
8
|
-
const { client, job, node } = context;
|
|
9
|
+
const { client, runtimeClient, job, node } = context;
|
|
9
10
|
const target = { job, node, nodeDomain: context.domain };
|
|
10
11
|
return {
|
|
11
12
|
address: job,
|
|
@@ -22,15 +23,15 @@ export function createNodeJob(context) {
|
|
|
22
23
|
stopOperation: (group, op) => stopNodeJobOperation(client, job, group, op),
|
|
23
24
|
stop: () => stopNodeJob(client, job),
|
|
24
25
|
endpoints: () => nodeJobEndpoints(client, job),
|
|
25
|
-
stats: (query) => nodeJobStats(
|
|
26
|
+
stats: (query) => nodeJobStats(runtimeClient, job, query),
|
|
26
27
|
streamInfo: (handlers) => nodeJobInfoStream(client, job, handlers),
|
|
27
|
-
streamStats: (handlers, query) => nodeJobStatsStream(
|
|
28
|
+
streamStats: (handlers, query) => openOnJobRuntime(runtimeClient, (runtime) => nodeJobStatsStream(runtime, job, handlers, query)),
|
|
28
29
|
logs: (handlers, filter, options) => nodeJobLogs(context, handlers, filter, options),
|
|
29
30
|
status: (handlers, options) => nodeJobStatus(context, handlers, options),
|
|
30
31
|
ssh: {
|
|
31
|
-
keys: (options) => nodeJobSshKeys(
|
|
32
|
-
add: (publicKey, options) => nodeJobSshAdd(
|
|
33
|
-
remove: (publicKey, options) => nodeJobSshRemove(
|
|
32
|
+
keys: (options) => nodeJobSshKeys(runtimeClient, job, options),
|
|
33
|
+
add: (publicKey, options) => nodeJobSshAdd(runtimeClient, job, publicKey, options),
|
|
34
|
+
remove: (publicKey, options) => nodeJobSshRemove(runtimeClient, job, publicKey, options),
|
|
34
35
|
command: (options) => createSshCommand(target, options),
|
|
35
36
|
},
|
|
36
37
|
terminal: (options) => openNodeJobTerminal(context, options),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createNodeJob.js","sourceRoot":"","sources":["../../../src/routes/node/createNodeJob.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,uBAAuB,EACvB,oBAAoB,EACpB,WAAW,EACX,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAChG,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAC1F,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"createNodeJob.js","sourceRoot":"","sources":["../../../src/routes/node/createNodeJob.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/routes/node/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/routes/node/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAW,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAExE,mBAAmB,YAAY,CAAC;AAEhC;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,aAAa,GAAG,aAAa,CAiCtG"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { createNodeClient, nodeDomain } from '../../client/node/index.js';
|
|
2
2
|
import { nodeInfo } from './actions/nodeInfo.js';
|
|
3
3
|
import { createNodeJob } from './createNodeJob.js';
|
|
4
|
+
import { createJobRuntimeResolver } from './jobRuntime.js';
|
|
4
5
|
/**
|
|
5
6
|
* Talks to nodes directly. Each node runs the same API on its own host, checks
|
|
6
7
|
* the job owner's wallet signature, and knows only about the jobs it runs.
|
|
@@ -23,8 +24,10 @@ export function createNosanaNodeApi({ environment, authParams, options }) {
|
|
|
23
24
|
...authParams,
|
|
24
25
|
generate: () => authParams.generate(job, { skipCache: true }),
|
|
25
26
|
};
|
|
27
|
+
const client = createNodeClient(environment, address, jobAuth, options);
|
|
26
28
|
return createNodeJob({
|
|
27
|
-
client
|
|
29
|
+
client,
|
|
30
|
+
runtimeClient: createJobRuntimeResolver({ environment, job, authParams: jobAuth, options }, client),
|
|
28
31
|
environment,
|
|
29
32
|
domain,
|
|
30
33
|
authorize,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/routes/node/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/routes/node/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAO3D;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAiB;IACrF,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,UAAU,EAAE,QAAQ,CAAC;IAEvC,OAAO,CAAC,OAAO,EAAW,EAAE;QAC1B,MAAM,MAAM,GAAG,gBAAgB,CAAC,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QAE3E,OAAO;YACL,OAAO;YACP,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO;YAC9B,IAAI,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC5B,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE;gBACX,qEAAqE;gBACrE,sEAAsE;gBACtE,wEAAwE;gBACxE,sDAAsD;gBACtD,MAAM,OAAO,GAAiC,UAAU,IAAI;oBAC1D,GAAG,UAAU;oBACb,QAAQ,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;iBAC9D,CAAC;gBACF,MAAM,MAAM,GAAG,gBAAgB,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;gBACxE,OAAO,aAAa,CAAC;oBACnB,MAAM;oBACN,aAAa,EAAE,wBAAwB,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,MAAM,CAAC;oBACnG,WAAW;oBACX,MAAM;oBACN,SAAS;oBACT,IAAI,EAAE,OAAO;oBACb,GAAG;iBACJ,CAAC,CAAC;YACL,CAAC;SACF,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { NodeClient } from '../../client/node/index.js';
|
|
2
|
+
import type { CreateNosanaApiOptions, NosanaNetwork, SignedHeaderAuth } from '../../types.js';
|
|
3
|
+
import type { NodeStreamSubscription } from './types.js';
|
|
4
|
+
/** How long a job found without a sidecar stays on its node before the sidecar is asked for again. */
|
|
5
|
+
export declare const SIDECAR_RECHECK_MS = 30000;
|
|
6
|
+
export interface JobRuntimeTarget {
|
|
7
|
+
environment: NosanaNetwork;
|
|
8
|
+
job: string;
|
|
9
|
+
authParams: SignedHeaderAuth | undefined;
|
|
10
|
+
options?: CreateNosanaApiOptions;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Resolves the client for a job's runtime routes: the job's sidecar when its
|
|
14
|
+
* node started one, otherwise the node, which serves the same routes. A node
|
|
15
|
+
* on an older version, or one that could not pull the sidecar image, has none.
|
|
16
|
+
* The sidecar answers `GET /` with its job address, so that is the check. A job
|
|
17
|
+
* found without one is checked again after {@link SIDECAR_RECHECK_MS}, since
|
|
18
|
+
* its sidecar can come up after the job is first addressed.
|
|
19
|
+
*/
|
|
20
|
+
export declare function createJobRuntimeResolver(target: JobRuntimeTarget, node: NodeClient): () => Promise<NodeClient>;
|
|
21
|
+
/**
|
|
22
|
+
* Opens a stream once the runtime client is resolved. The caller still gets
|
|
23
|
+
* its subscription at once; closing it before then cancels the open.
|
|
24
|
+
*/
|
|
25
|
+
export declare function openOnJobRuntime(resolve: () => Promise<NodeClient>, open: (client: NodeClient) => NodeStreamSubscription): NodeStreamSubscription;
|
|
26
|
+
//# sourceMappingURL=jobRuntime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jobRuntime.d.ts","sourceRoot":"","sources":["../../../src/routes/node/jobRuntime.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,EAAE,sBAAsB,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC9F,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEzD,sGAAsG;AACtG,eAAO,MAAM,kBAAkB,QAAS,CAAC;AAIzC,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,aAAa,CAAC;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,gBAAgB,GAAG,SAAS,CAAC;IACzC,OAAO,CAAC,EAAE,sBAAsB,CAAC;CAClC;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,CAmB9G;AAaD;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,EAClC,IAAI,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,sBAAsB,GACnD,sBAAsB,CAcxB"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { isSolanaAddress } from '@nosana/types';
|
|
2
|
+
import { createJobRuntimeClient, jobRuntimeUrl } from '../../client/node/index.js';
|
|
3
|
+
/** How long a job found without a sidecar stays on its node before the sidecar is asked for again. */
|
|
4
|
+
export const SIDECAR_RECHECK_MS = 30000;
|
|
5
|
+
/** The sidecar answers its liveness route at once; a slower answer counts as none. */
|
|
6
|
+
const SIDECAR_PROBE_TIMEOUT_MS = 5000;
|
|
7
|
+
/**
|
|
8
|
+
* Resolves the client for a job's runtime routes: the job's sidecar when its
|
|
9
|
+
* node started one, otherwise the node, which serves the same routes. A node
|
|
10
|
+
* on an older version, or one that could not pull the sidecar image, has none.
|
|
11
|
+
* The sidecar answers `GET /` with its job address, so that is the check. A job
|
|
12
|
+
* found without one is checked again after {@link SIDECAR_RECHECK_MS}, since
|
|
13
|
+
* its sidecar can come up after the job is first addressed.
|
|
14
|
+
*/
|
|
15
|
+
export function createJobRuntimeResolver(target, node) {
|
|
16
|
+
if (!isSolanaAddress(target.job))
|
|
17
|
+
return () => Promise.resolve(node);
|
|
18
|
+
let resolved;
|
|
19
|
+
let missingSince;
|
|
20
|
+
return () => {
|
|
21
|
+
if (!resolved || (missingSince !== undefined && Date.now() - missingSince >= SIDECAR_RECHECK_MS)) {
|
|
22
|
+
missingSince = undefined;
|
|
23
|
+
resolved = hasSidecar(target).then((found) => {
|
|
24
|
+
if (found) {
|
|
25
|
+
return createJobRuntimeClient(target.environment, target.job, target.authParams, target.options);
|
|
26
|
+
}
|
|
27
|
+
missingSince = Date.now();
|
|
28
|
+
return node;
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
return resolved;
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
async function hasSidecar({ environment, job, options }) {
|
|
35
|
+
try {
|
|
36
|
+
const response = await fetch(`${jobRuntimeUrl(environment, job, options)}/`, {
|
|
37
|
+
signal: AbortSignal.timeout(SIDECAR_PROBE_TIMEOUT_MS),
|
|
38
|
+
});
|
|
39
|
+
return response.ok && (await response.json()) === job;
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Opens a stream once the runtime client is resolved. The caller still gets
|
|
47
|
+
* its subscription at once; closing it before then cancels the open.
|
|
48
|
+
*/
|
|
49
|
+
export function openOnJobRuntime(resolve, open) {
|
|
50
|
+
let closed = false;
|
|
51
|
+
let subscription;
|
|
52
|
+
void resolve().then((client) => {
|
|
53
|
+
if (!closed)
|
|
54
|
+
subscription = open(client);
|
|
55
|
+
});
|
|
56
|
+
return {
|
|
57
|
+
close: () => {
|
|
58
|
+
closed = true;
|
|
59
|
+
subscription?.close();
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=jobRuntime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jobRuntime.js","sourceRoot":"","sources":["../../../src/routes/node/jobRuntime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAMnF,sGAAsG;AACtG,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAM,CAAC;AACzC,sFAAsF;AACtF,MAAM,wBAAwB,GAAG,IAAK,CAAC;AASvC;;;;;;;GAOG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAAwB,EAAE,IAAgB;IACjF,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAErE,IAAI,QAAyC,CAAC;IAC9C,IAAI,YAAgC,CAAC;IAErC,OAAO,GAAG,EAAE;QACV,IAAI,CAAC,QAAQ,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,IAAI,kBAAkB,CAAC,EAAE,CAAC;YACjG,YAAY,GAAG,SAAS,CAAC;YACzB,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC3C,IAAI,KAAK,EAAE,CAAC;oBACV,OAAO,sBAAsB,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;gBACnG,CAAC;gBACD,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC1B,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,EAAoB;IACvE,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,aAAa,CAAC,WAAW,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;YAC3E,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,wBAAwB,CAAC;SACtD,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC,EAAE,IAAI,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,GAAG,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAkC,EAClC,IAAoD;IAEpD,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,YAAgD,CAAC;IAErD,KAAK,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;QAC7B,IAAI,CAAC,MAAM;YAAE,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,KAAK,EAAE,GAAG,EAAE;YACV,MAAM,GAAG,IAAI,CAAC;YACd,YAAY,EAAE,KAAK,EAAE,CAAC;QACxB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -84,7 +84,11 @@ export interface NodeTerminalOptions extends NodeSocketOptions {
|
|
|
84
84
|
onStatus?: (status: TerminalStatus, detail?: string) => void;
|
|
85
85
|
onExit?: (code: number | null) => void;
|
|
86
86
|
}
|
|
87
|
-
/**
|
|
87
|
+
/**
|
|
88
|
+
* Everything the node knows about one job it runs. Stats, logs, the terminal
|
|
89
|
+
* and SSH keys go to the job's own sidecar when its node started one, and to
|
|
90
|
+
* the node otherwise; everything else always goes to the node.
|
|
91
|
+
*/
|
|
88
92
|
export interface NodeJobApi {
|
|
89
93
|
readonly address: string;
|
|
90
94
|
readonly node: string;
|
|
@@ -136,6 +140,8 @@ export interface NodeRouteDeps {
|
|
|
136
140
|
/** What every action on one job needs, resolved once when the node is addressed. */
|
|
137
141
|
export interface NodeJobContext {
|
|
138
142
|
client: NodeClient;
|
|
143
|
+
/** The client for the runtime routes: the job's sidecar when it has one, else the node. */
|
|
144
|
+
runtimeClient: () => Promise<NodeClient>;
|
|
139
145
|
environment: NosanaNetwork;
|
|
140
146
|
/** The domain the node answers under; also where its SSH proxy lives. */
|
|
141
147
|
domain: string;
|