@nosana/api 2.11.2 → 2.13.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.
Files changed (222) hide show
  1. package/README.md +37 -0
  2. package/dist/client/createClient.d.ts +5 -3
  3. package/dist/client/createClient.d.ts.map +1 -1
  4. package/dist/client/createClient.js +4 -2
  5. package/dist/client/createClient.js.map +1 -1
  6. package/dist/client/deployment-manager/schema.d.ts +268 -41
  7. package/dist/client/deployment-manager/schema.d.ts.map +1 -1
  8. package/dist/client/index.d.ts +1 -0
  9. package/dist/client/index.d.ts.map +1 -1
  10. package/dist/client/index.js +1 -0
  11. package/dist/client/index.js.map +1 -1
  12. package/dist/client/node/index.d.ts +23 -0
  13. package/dist/client/node/index.d.ts.map +1 -0
  14. package/dist/client/node/index.js +24 -0
  15. package/dist/client/node/index.js.map +1 -0
  16. package/dist/defaults/index.d.ts.map +1 -1
  17. package/dist/defaults/index.js +3 -0
  18. package/dist/defaults/index.js.map +1 -1
  19. package/dist/index.d.ts +32 -8
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +26 -7
  22. package/dist/index.js.map +1 -1
  23. package/dist/routes/auth/index.d.ts.map +1 -1
  24. package/dist/routes/auth/index.js +12 -0
  25. package/dist/routes/auth/index.js.map +1 -1
  26. package/dist/routes/auth/types.d.ts +8 -0
  27. package/dist/routes/auth/types.d.ts.map +1 -1
  28. package/dist/routes/deployments/deployment/actions/deploymentAddSshKeys.d.ts +9 -0
  29. package/dist/routes/deployments/deployment/actions/deploymentAddSshKeys.d.ts.map +1 -0
  30. package/dist/routes/deployments/deployment/actions/deploymentAddSshKeys.js +17 -0
  31. package/dist/routes/deployments/deployment/actions/deploymentAddSshKeys.js.map +1 -0
  32. package/dist/routes/deployments/deployment/actions/deploymentDuplicate.d.ts +17 -0
  33. package/dist/routes/deployments/deployment/actions/deploymentDuplicate.d.ts.map +1 -0
  34. package/dist/routes/deployments/deployment/actions/deploymentDuplicate.js +22 -0
  35. package/dist/routes/deployments/deployment/actions/deploymentDuplicate.js.map +1 -0
  36. package/dist/routes/deployments/deployment/actions/deploymentGetSshKeys.d.ts +7 -0
  37. package/dist/routes/deployments/deployment/actions/deploymentGetSshKeys.d.ts.map +1 -0
  38. package/dist/routes/deployments/deployment/actions/deploymentGetSshKeys.js +14 -0
  39. package/dist/routes/deployments/deployment/actions/deploymentGetSshKeys.js.map +1 -0
  40. package/dist/routes/deployments/deployment/actions/deploymentRemoveSshKeys.d.ts +9 -0
  41. package/dist/routes/deployments/deployment/actions/deploymentRemoveSshKeys.d.ts.map +1 -0
  42. package/dist/routes/deployments/deployment/actions/deploymentRemoveSshKeys.js +17 -0
  43. package/dist/routes/deployments/deployment/actions/deploymentRemoveSshKeys.js.map +1 -0
  44. package/dist/routes/deployments/deployment/actions/deploymentStream.d.ts.map +1 -1
  45. package/dist/routes/deployments/deployment/actions/deploymentStream.js +10 -30
  46. package/dist/routes/deployments/deployment/actions/deploymentStream.js.map +1 -1
  47. package/dist/routes/deployments/deployment/actions/deploymentUpdateMarket.d.ts +13 -0
  48. package/dist/routes/deployments/deployment/actions/deploymentUpdateMarket.d.ts.map +1 -0
  49. package/dist/routes/deployments/deployment/actions/deploymentUpdateMarket.js +24 -0
  50. package/dist/routes/deployments/deployment/actions/deploymentUpdateMarket.js.map +1 -0
  51. package/dist/routes/deployments/deployment/actions/index.d.ts +5 -0
  52. package/dist/routes/deployments/deployment/actions/index.d.ts.map +1 -1
  53. package/dist/routes/deployments/deployment/actions/index.js +5 -0
  54. package/dist/routes/deployments/deployment/actions/index.js.map +1 -1
  55. package/dist/routes/deployments/deployment/createDeployment.d.ts.map +1 -1
  56. package/dist/routes/deployments/deployment/createDeployment.js +95 -12
  57. package/dist/routes/deployments/deployment/createDeployment.js.map +1 -1
  58. package/dist/routes/deployments/types.d.ts +51 -11
  59. package/dist/routes/deployments/types.d.ts.map +1 -1
  60. package/dist/routes/index.d.ts +1 -0
  61. package/dist/routes/index.d.ts.map +1 -1
  62. package/dist/routes/index.js +1 -0
  63. package/dist/routes/index.js.map +1 -1
  64. package/dist/routes/jobs/index.d.ts +8 -2
  65. package/dist/routes/jobs/index.d.ts.map +1 -1
  66. package/dist/routes/jobs/index.js +28 -14
  67. package/dist/routes/jobs/index.js.map +1 -1
  68. package/dist/routes/jobs/types.d.ts +16 -1
  69. package/dist/routes/jobs/types.d.ts.map +1 -1
  70. package/dist/routes/node/__tests__/fixtures.d.ts +30 -0
  71. package/dist/routes/node/__tests__/fixtures.d.ts.map +1 -0
  72. package/dist/routes/node/__tests__/fixtures.js +38 -0
  73. package/dist/routes/node/__tests__/fixtures.js.map +1 -0
  74. package/dist/routes/node/actions/authorization.d.ts +4 -0
  75. package/dist/routes/node/actions/authorization.d.ts.map +1 -0
  76. package/dist/routes/node/actions/authorization.js +9 -0
  77. package/dist/routes/node/actions/authorization.js.map +1 -0
  78. package/dist/routes/node/actions/nodeInfo.d.ts +4 -0
  79. package/dist/routes/node/actions/nodeInfo.d.ts.map +1 -0
  80. package/dist/routes/node/actions/nodeInfo.js +9 -0
  81. package/dist/routes/node/actions/nodeInfo.js.map +1 -0
  82. package/dist/routes/node/actions/nodeJob/index.d.ts +14 -0
  83. package/dist/routes/node/actions/nodeJob/index.d.ts.map +1 -0
  84. package/dist/routes/node/actions/nodeJob/index.js +14 -0
  85. package/dist/routes/node/actions/nodeJob/index.js.map +1 -0
  86. package/dist/routes/node/actions/nodeJob/nodeJobDefinition.d.ts +4 -0
  87. package/dist/routes/node/actions/nodeJob/nodeJobDefinition.d.ts.map +1 -0
  88. package/dist/routes/node/actions/nodeJob/nodeJobDefinition.js +9 -0
  89. package/dist/routes/node/actions/nodeJob/nodeJobDefinition.js.map +1 -0
  90. package/dist/routes/node/actions/nodeJob/nodeJobEndpoints.d.ts +4 -0
  91. package/dist/routes/node/actions/nodeJob/nodeJobEndpoints.d.ts.map +1 -0
  92. package/dist/routes/node/actions/nodeJob/nodeJobEndpoints.js +9 -0
  93. package/dist/routes/node/actions/nodeJob/nodeJobEndpoints.js.map +1 -0
  94. package/dist/routes/node/actions/nodeJob/nodeJobGroup.d.ts +4 -0
  95. package/dist/routes/node/actions/nodeJob/nodeJobGroup.d.ts.map +1 -0
  96. package/dist/routes/node/actions/nodeJob/nodeJobGroup.js +11 -0
  97. package/dist/routes/node/actions/nodeJob/nodeJobGroup.js.map +1 -0
  98. package/dist/routes/node/actions/nodeJob/nodeJobOperation.d.ts +3 -0
  99. package/dist/routes/node/actions/nodeJob/nodeJobOperation.d.ts.map +1 -0
  100. package/dist/routes/node/actions/nodeJob/nodeJobOperation.js +9 -0
  101. package/dist/routes/node/actions/nodeJob/nodeJobOperation.js.map +1 -0
  102. package/dist/routes/node/actions/nodeJob/nodeJobOperations.d.ts +4 -0
  103. package/dist/routes/node/actions/nodeJob/nodeJobOperations.d.ts.map +1 -0
  104. package/dist/routes/node/actions/nodeJob/nodeJobOperations.js +9 -0
  105. package/dist/routes/node/actions/nodeJob/nodeJobOperations.js.map +1 -0
  106. package/dist/routes/node/actions/nodeJob/nodeJobResults.d.ts +4 -0
  107. package/dist/routes/node/actions/nodeJob/nodeJobResults.d.ts.map +1 -0
  108. package/dist/routes/node/actions/nodeJob/nodeJobResults.js +9 -0
  109. package/dist/routes/node/actions/nodeJob/nodeJobResults.js.map +1 -0
  110. package/dist/routes/node/actions/nodeJob/nodeJobStats.d.ts +4 -0
  111. package/dist/routes/node/actions/nodeJob/nodeJobStats.d.ts.map +1 -0
  112. package/dist/routes/node/actions/nodeJob/nodeJobStats.js +9 -0
  113. package/dist/routes/node/actions/nodeJob/nodeJobStats.js.map +1 -0
  114. package/dist/routes/node/actions/nodeJob/restartNodeJobGroup.d.ts +3 -0
  115. package/dist/routes/node/actions/nodeJob/restartNodeJobGroup.d.ts.map +1 -0
  116. package/dist/routes/node/actions/nodeJob/restartNodeJobGroup.js +10 -0
  117. package/dist/routes/node/actions/nodeJob/restartNodeJobGroup.js.map +1 -0
  118. package/dist/routes/node/actions/nodeJob/restartNodeJobOperation.d.ts +3 -0
  119. package/dist/routes/node/actions/nodeJob/restartNodeJobOperation.d.ts.map +1 -0
  120. package/dist/routes/node/actions/nodeJob/restartNodeJobOperation.js +10 -0
  121. package/dist/routes/node/actions/nodeJob/restartNodeJobOperation.js.map +1 -0
  122. package/dist/routes/node/actions/nodeJob/setNodeJobDefinition.d.ts +4 -0
  123. package/dist/routes/node/actions/nodeJob/setNodeJobDefinition.d.ts.map +1 -0
  124. package/dist/routes/node/actions/nodeJob/setNodeJobDefinition.js +12 -0
  125. package/dist/routes/node/actions/nodeJob/setNodeJobDefinition.js.map +1 -0
  126. package/dist/routes/node/actions/nodeJob/stopNodeJob.d.ts +3 -0
  127. package/dist/routes/node/actions/nodeJob/stopNodeJob.d.ts.map +1 -0
  128. package/dist/routes/node/actions/nodeJob/stopNodeJob.js +11 -0
  129. package/dist/routes/node/actions/nodeJob/stopNodeJob.js.map +1 -0
  130. package/dist/routes/node/actions/nodeJob/stopNodeJobGroup.d.ts +3 -0
  131. package/dist/routes/node/actions/nodeJob/stopNodeJobGroup.d.ts.map +1 -0
  132. package/dist/routes/node/actions/nodeJob/stopNodeJobGroup.js +10 -0
  133. package/dist/routes/node/actions/nodeJob/stopNodeJobGroup.js.map +1 -0
  134. package/dist/routes/node/actions/nodeJob/stopNodeJobOperation.d.ts +3 -0
  135. package/dist/routes/node/actions/nodeJob/stopNodeJobOperation.d.ts.map +1 -0
  136. package/dist/routes/node/actions/nodeJob/stopNodeJobOperation.js +10 -0
  137. package/dist/routes/node/actions/nodeJob/stopNodeJobOperation.js.map +1 -0
  138. package/dist/routes/node/actions/nodeJobSsh/index.d.ts +4 -0
  139. package/dist/routes/node/actions/nodeJobSsh/index.d.ts.map +1 -0
  140. package/dist/routes/node/actions/nodeJobSsh/index.js +4 -0
  141. package/dist/routes/node/actions/nodeJobSsh/index.js.map +1 -0
  142. package/dist/routes/node/actions/nodeJobSsh/nodeJobSshAdd.d.ts +5 -0
  143. package/dist/routes/node/actions/nodeJobSsh/nodeJobSshAdd.d.ts.map +1 -0
  144. package/dist/routes/node/actions/nodeJobSsh/nodeJobSshAdd.js +25 -0
  145. package/dist/routes/node/actions/nodeJobSsh/nodeJobSshAdd.js.map +1 -0
  146. package/dist/routes/node/actions/nodeJobSsh/nodeJobSshKeys.d.ts +4 -0
  147. package/dist/routes/node/actions/nodeJobSsh/nodeJobSshKeys.d.ts.map +1 -0
  148. package/dist/routes/node/actions/nodeJobSsh/nodeJobSshKeys.js +12 -0
  149. package/dist/routes/node/actions/nodeJobSsh/nodeJobSshKeys.js.map +1 -0
  150. package/dist/routes/node/actions/nodeJobSsh/nodeJobSshRemove.d.ts +4 -0
  151. package/dist/routes/node/actions/nodeJobSsh/nodeJobSshRemove.d.ts.map +1 -0
  152. package/dist/routes/node/actions/nodeJobSsh/nodeJobSshRemove.js +14 -0
  153. package/dist/routes/node/actions/nodeJobSsh/nodeJobSshRemove.js.map +1 -0
  154. package/dist/routes/node/actions/nodeJobStreams/index.d.ts +3 -0
  155. package/dist/routes/node/actions/nodeJobStreams/index.d.ts.map +1 -0
  156. package/dist/routes/node/actions/nodeJobStreams/index.js +3 -0
  157. package/dist/routes/node/actions/nodeJobStreams/index.js.map +1 -0
  158. package/dist/routes/node/actions/nodeJobStreams/nodeJobInfoStream.d.ts +4 -0
  159. package/dist/routes/node/actions/nodeJobStreams/nodeJobInfoStream.d.ts.map +1 -0
  160. package/dist/routes/node/actions/nodeJobStreams/nodeJobInfoStream.js +5 -0
  161. package/dist/routes/node/actions/nodeJobStreams/nodeJobInfoStream.js.map +1 -0
  162. package/dist/routes/node/actions/nodeJobStreams/nodeJobStatsStream.d.ts +4 -0
  163. package/dist/routes/node/actions/nodeJobStreams/nodeJobStatsStream.d.ts.map +1 -0
  164. package/dist/routes/node/actions/nodeJobStreams/nodeJobStatsStream.js +6 -0
  165. package/dist/routes/node/actions/nodeJobStreams/nodeJobStatsStream.js.map +1 -0
  166. package/dist/routes/node/actions/nodeJobStreams/nodeStream.d.ts +5 -0
  167. package/dist/routes/node/actions/nodeJobStreams/nodeStream.d.ts.map +1 -0
  168. package/dist/routes/node/actions/nodeJobStreams/nodeStream.js +10 -0
  169. package/dist/routes/node/actions/nodeJobStreams/nodeStream.js.map +1 -0
  170. package/dist/routes/node/actions/nodeSocket/index.d.ts +4 -0
  171. package/dist/routes/node/actions/nodeSocket/index.d.ts.map +1 -0
  172. package/dist/routes/node/actions/nodeSocket/index.js +4 -0
  173. package/dist/routes/node/actions/nodeSocket/index.js.map +1 -0
  174. package/dist/routes/node/actions/nodeSocket/nodeJobLogs.d.ts +3 -0
  175. package/dist/routes/node/actions/nodeSocket/nodeJobLogs.d.ts.map +1 -0
  176. package/dist/routes/node/actions/nodeSocket/nodeJobLogs.js +10 -0
  177. package/dist/routes/node/actions/nodeSocket/nodeJobLogs.js.map +1 -0
  178. package/dist/routes/node/actions/nodeSocket/nodeJobStatus.d.ts +3 -0
  179. package/dist/routes/node/actions/nodeSocket/nodeJobStatus.d.ts.map +1 -0
  180. package/dist/routes/node/actions/nodeSocket/nodeJobStatus.js +5 -0
  181. package/dist/routes/node/actions/nodeSocket/nodeJobStatus.js.map +1 -0
  182. package/dist/routes/node/actions/nodeSocket/socket.d.ts +19 -0
  183. package/dist/routes/node/actions/nodeSocket/socket.d.ts.map +1 -0
  184. package/dist/routes/node/actions/nodeSocket/socket.js +38 -0
  185. package/dist/routes/node/actions/nodeSocket/socket.js.map +1 -0
  186. package/dist/routes/node/actions/terminal/grant.d.ts +21 -0
  187. package/dist/routes/node/actions/terminal/grant.d.ts.map +1 -0
  188. package/dist/routes/node/actions/terminal/grant.js +28 -0
  189. package/dist/routes/node/actions/terminal/grant.js.map +1 -0
  190. package/dist/routes/node/actions/terminal/openTerminal.d.ts +4 -0
  191. package/dist/routes/node/actions/terminal/openTerminal.d.ts.map +1 -0
  192. package/dist/routes/node/actions/terminal/openTerminal.js +22 -0
  193. package/dist/routes/node/actions/terminal/openTerminal.js.map +1 -0
  194. package/dist/routes/node/actions/terminal/session.d.ts +7 -0
  195. package/dist/routes/node/actions/terminal/session.d.ts.map +1 -0
  196. package/dist/routes/node/actions/terminal/session.js +133 -0
  197. package/dist/routes/node/actions/terminal/session.js.map +1 -0
  198. package/dist/routes/node/createNodeJob.d.ts +3 -0
  199. package/dist/routes/node/createNodeJob.d.ts.map +1 -0
  200. package/dist/routes/node/createNodeJob.js +39 -0
  201. package/dist/routes/node/createNodeJob.js.map +1 -0
  202. package/dist/routes/node/index.d.ts +8 -0
  203. package/dist/routes/node/index.d.ts.map +1 -0
  204. package/dist/routes/node/index.js +21 -0
  205. package/dist/routes/node/index.js.map +1 -0
  206. package/dist/routes/node/types.d.ts +148 -0
  207. package/dist/routes/node/types.d.ts.map +1 -0
  208. package/dist/routes/node/types.js +2 -0
  209. package/dist/routes/node/types.js.map +1 -0
  210. package/dist/types.d.ts +31 -2
  211. package/dist/types.d.ts.map +1 -1
  212. package/dist/types.js +2 -1
  213. package/dist/types.js.map +1 -1
  214. package/dist/utils/eventStream.d.ts +15 -0
  215. package/dist/utils/eventStream.d.ts.map +1 -0
  216. package/dist/utils/eventStream.js +36 -0
  217. package/dist/utils/eventStream.js.map +1 -0
  218. package/dist/utils/json.d.ts +3 -0
  219. package/dist/utils/json.d.ts.map +1 -0
  220. package/dist/utils/json.js +10 -0
  221. package/dist/utils/json.js.map +1 -0
  222. package/package.json +7 -3
package/dist/types.d.ts CHANGED
@@ -2,8 +2,10 @@ import type { ClientManagerClient } from './client/client-manager/index.js';
2
2
  import type { BlockchainIndexerClient } from './client/blockchain-indexer/index.js';
3
3
  import type { HostManagerClient } from './client/host-manager/index.js';
4
4
  import type { DeploymentManagerClient } from './client/deployment-manager/index.js';
5
+ import type { GenerateOptions } from '@nosana/authorization';
5
6
  import { TopupVaultOptions } from './routes/deployments/types.js';
6
- export { NosanaNetwork } from '@nosana/types';
7
+ import { NosanaNetwork } from '@nosana/types';
8
+ export { NosanaNetwork };
7
9
  export type { NosanaNetwork as NosanaNetworkType } from '@nosana/types';
8
10
  export interface SolanaConfig {
9
11
  network: string;
@@ -26,15 +28,28 @@ export type ExternalSolanaFunctions = {
26
28
  };
27
29
  export type SignerAuth = {
28
30
  identifier: string;
29
- generate: (message: string) => Promise<string>;
31
+ generate: SignedHeaderAuth['generate'];
30
32
  solana: ExternalSolanaFunctions;
31
33
  };
34
+ /**
35
+ * The minimal auth a node needs. A node verifies the signed `authorization`
36
+ * header against the job owner's key, so only a header generator is required;
37
+ * `x-user-id` is optional and unused by nodes. `SignerAuth` satisfies it, and
38
+ * an API-key caller supplies one backed by the client manager's signing service.
39
+ */
40
+ export type SignedHeaderAuth = {
41
+ identifier?: string;
42
+ /** Terminal grants request fresh signing without touching the normal auth cache. */
43
+ generate: (message: string, options?: Pick<GenerateOptions, 'skipCache'>) => Promise<string>;
44
+ };
32
45
  export type CreateNosanaApiOptions = Partial<{
33
46
  client_manager_url: string;
34
47
  host_manager_url: string;
35
48
  blockchain_indexer_url: string;
36
49
  /** Under API key auth this becomes the client manager proxy's forwarding target. */
37
50
  deployment_manager_url: string;
51
+ /** Domain under which every node's API answers, as `<address>.<domain>`. */
52
+ node_domain: string;
38
53
  include_credentials: boolean;
39
54
  }>;
40
55
  export interface Config {
@@ -42,6 +57,7 @@ export interface Config {
42
57
  host_manager_url: string;
43
58
  blockchain_indexer_url: string;
44
59
  deployment_manager_url: string;
60
+ node_domain: string;
45
61
  nos_address: string;
46
62
  }
47
63
  /**
@@ -53,8 +69,21 @@ export interface NosanaClients {
53
69
  blockchainIndexer: BlockchainIndexerClient;
54
70
  deploymentManager: DeploymentManagerClient;
55
71
  }
72
+ /** An open stream, for as long as the caller wants it. */
73
+ export type StreamSubscription = {
74
+ close: () => void;
75
+ };
76
+ /** What every stream reports besides its frames. */
77
+ export interface StreamLifecycleHandlers {
78
+ /** The stream opened, or reopened after dropping: resynchronise from here. */
79
+ onOpen?: () => void;
80
+ onError?: (error: unknown) => void;
81
+ }
56
82
  export interface DeploymentRouteClients {
57
83
  deploymentManager: DeploymentManagerClient;
84
+ /** Network and options a deployment needs to reach its jobs' nodes directly. */
85
+ environment: NosanaNetwork;
86
+ options?: CreateNosanaApiOptions;
58
87
  }
59
88
  export type DeploymentRouteClientsWithSigner = DeploymentRouteClients & {
60
89
  solana: ExternalSolanaFunctions;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AACpF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAGlE,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,YAAY,EAAE,aAAa,IAAI,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAExE,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,CAAA;AAE/B;;;GAGG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC,iEAAiE;IACjE,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAEvE,0EAA0E;IAC1E,yBAAyB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3F,oEAAoE;IACpE,wCAAwC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CACpF,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,EAAE,uBAAuB,CAAC;CACjC,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG,OAAO,CAAC;IAC3C,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,oFAAoF;IACpF,sBAAsB,EAAE,MAAM,CAAC;IAC/B,mBAAmB,EAAE,OAAO,CAAC;CAC9B,CAAC,CAAA;AAEF,MAAM,WAAW,MAAM;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,mBAAmB,CAAC;IACnC,WAAW,EAAE,iBAAiB,CAAC;IAC/B,iBAAiB,EAAE,uBAAuB,CAAC;IAC3C,iBAAiB,EAAE,uBAAuB,CAAC;CAC5C;AAED,MAAM,WAAW,sBAAsB;IACrC,iBAAiB,EAAE,uBAAuB,CAAC;CAC5C;AAED,MAAM,MAAM,gCAAgC,GAAG,sBAAsB,GAAG;IACtE,MAAM,EAAE,uBAAuB,CAAC;CACjC,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js CHANGED
@@ -1,3 +1,4 @@
1
1
  // Re-export shared types from @nosana/types
2
- export { NosanaNetwork } from '@nosana/types';
2
+ import { NosanaNetwork } from '@nosana/types';
3
+ export { NosanaNetwork };
3
4
  //# sourceMappingURL=types.js.map
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAMA,4CAA4C;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAOA,4CAA4C;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { ClientConnection } from '../client/type.utils.js';
2
+ import type { StreamLifecycleHandlers, StreamSubscription } from '../types.js';
3
+ export interface EventStreamHandlers extends StreamLifecycleHandlers {
4
+ /** One parsed frame. Frames that are not JSON are dropped before this. */
5
+ onMessage: (frame: unknown) => void;
6
+ }
7
+ /**
8
+ * Opens a server-sent event stream addressed and authenticated exactly as an
9
+ * ordinary request on the same connection. `EventSource` reconnects by itself,
10
+ * so errors are reported rather than thrown and `onOpen` may fire more than
11
+ * once. A handler that throws is swallowed with the malformed frames, the
12
+ * price of never letting one bad frame end the stream.
13
+ */
14
+ export declare function openEventStream(connection: ClientConnection, path: string, handlers: EventStreamHandlers): StreamSubscription;
15
+ //# sourceMappingURL=eventStream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eventStream.d.ts","sourceRoot":"","sources":["../../src/utils/eventStream.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAE/E,MAAM,WAAW,mBAAoB,SAAQ,uBAAuB;IAClE,0EAA0E;IAC1E,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACrC;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,gBAAgB,EAC5B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,mBAAmB,GAC5B,kBAAkB,CA0BpB"}
@@ -0,0 +1,36 @@
1
+ import { EventSource } from 'eventsource';
2
+ import { tryParseJson } from './json.js';
3
+ /**
4
+ * Opens a server-sent event stream addressed and authenticated exactly as an
5
+ * ordinary request on the same connection. `EventSource` reconnects by itself,
6
+ * so errors are reported rather than thrown and `onOpen` may fire more than
7
+ * once. A handler that throws is swallowed with the malformed frames, the
8
+ * price of never letting one bad frame end the stream.
9
+ */
10
+ export function openEventStream(connection, path, handlers) {
11
+ const { baseUrl, headers, credentials } = connection;
12
+ const source = new EventSource(`${baseUrl}${path}`, {
13
+ fetch: async (input, init) => fetch(input, {
14
+ ...init,
15
+ // Under cookie auth there are no headers to copy, so the stream has to
16
+ // opt into sending the cookie or it authenticates as nobody.
17
+ ...(credentials ? { credentials } : {}),
18
+ headers: { ...init.headers, ...(await headers()) },
19
+ }),
20
+ });
21
+ source.onopen = () => handlers.onOpen?.();
22
+ source.onerror = (error) => handlers.onError?.(error);
23
+ source.onmessage = ({ data }) => {
24
+ const frame = tryParseJson(data);
25
+ if (frame === undefined)
26
+ return;
27
+ try {
28
+ handlers.onMessage(frame);
29
+ }
30
+ catch {
31
+ return;
32
+ }
33
+ };
34
+ return { close: () => source.close() };
35
+ }
36
+ //# sourceMappingURL=eventStream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eventStream.js","sourceRoot":"","sources":["../../src/utils/eventStream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAUzC;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,UAA4B,EAC5B,IAAY,EACZ,QAA6B;IAE7B,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC;IACrD,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,GAAG,OAAO,GAAG,IAAI,EAAE,EAAE;QAClD,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAC3B,KAAK,CAAC,KAAK,EAAE;YACX,GAAG,IAAI;YACP,uEAAuE;YACvE,6DAA6D;YAC7D,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,OAAO,EAAE,CAAC,EAAE;SACnD,CAAC;KACL,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;IAC1C,MAAM,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,CAAC,SAAS,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;QAC9B,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO;QAChC,IAAI,CAAC;YACH,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;AACzC,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** `JSON.parse` that answers `undefined` instead of throwing for text that is not JSON. */
2
+ export declare function tryParseJson(text: string): unknown;
3
+ //# sourceMappingURL=json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../src/utils/json.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAMlD"}
@@ -0,0 +1,10 @@
1
+ /** `JSON.parse` that answers `undefined` instead of throwing for text that is not JSON. */
2
+ export function tryParseJson(text) {
3
+ try {
4
+ return JSON.parse(text);
5
+ }
6
+ catch {
7
+ return undefined;
8
+ }
9
+ }
10
+ //# sourceMappingURL=json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/utils/json.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nosana/api",
3
- "version": "2.11.2",
3
+ "version": "2.13.1",
4
4
  "description": "Nosana API module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -49,15 +49,19 @@
49
49
  "@typescript-eslint/eslint-plugin": "^8.38.0",
50
50
  "@typescript-eslint/parser": "^8.38.0",
51
51
  "@vitest/coverage-v8": "^4.0.3",
52
+ "bs58": "^6.0.0",
52
53
  "eslint": "^9.31.0",
53
54
  "eslint-plugin-import": "^2.32.0",
54
55
  "husky": "^9.1.7",
55
56
  "openapi-typescript": "^7.8.0",
57
+ "tweetnacl": "^1.0.3",
56
58
  "typescript": "^5.9.3",
57
59
  "vitest": "^4.0.3"
58
60
  },
59
61
  "dependencies": {
60
- "@nosana/types": "2.7.3",
62
+ "@nosana/authorization": "2.13.0",
63
+ "@nosana/ssh": "2.13.1",
64
+ "@nosana/types": "2.13.0",
61
65
  "eventsource": "^4.1.0",
62
66
  "openapi-fetch": "^0.14.0"
63
67
  },
@@ -65,5 +69,5 @@
65
69
  "engines": {
66
70
  "node": ">=20.18.0"
67
71
  },
68
- "gitHead": "2c103c8a5655854534132ad7ceffdd821b44a301"
72
+ "gitHead": "694cadb116a2dcb5d27a591ceba5f91daaf39c73"
69
73
  }