@serve.zone/interfaces 5.9.0 → 5.10.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/changelog.md CHANGED
@@ -3,6 +3,18 @@
3
3
  ## Pending
4
4
 
5
5
 
6
+ ## 2026-05-24 - 5.10.0
7
+
8
+ ### Features
9
+
10
+ - add Spark node telemetry contracts
11
+ - Adds Spark runtime status fields to cluster node data
12
+ - Adds a typed Spark-to-Cloudly heartbeat request contract
13
+
14
+ ### Maintenance
15
+
16
+ - refresh release tooling dependencies
17
+
6
18
  ## 2026-05-23 - 5.9.0
7
19
 
8
20
  ### Features
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@serve.zone/interfaces',
6
- version: '5.9.0',
6
+ version: '5.10.0',
7
7
  description: 'Shared TypeScript interfaces and TypedRequest contracts for the serve.zone ecosystem.'
8
8
  };
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSx3QkFBd0I7SUFDOUIsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLHVGQUF1RjtDQUNyRyxDQUFBIn0=
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSx3QkFBd0I7SUFDOUIsT0FBTyxFQUFFLFFBQVE7SUFDakIsV0FBVyxFQUFFLHVGQUF1RjtDQUNyRyxDQUFBIn0=
@@ -21,6 +21,14 @@ export interface IAppCatalogVolume {
21
21
  options?: Record<string, string>;
22
22
  }
23
23
  export type TAppCatalogVolumeSpec = string | IAppCatalogVolume;
24
+ export interface IAppCatalogPublishedPort {
25
+ targetPort: number;
26
+ targetPortEnd?: number;
27
+ publishedPort?: number;
28
+ publishedPortEnd?: number;
29
+ protocol?: 'tcp' | 'udp';
30
+ hostIp?: string;
31
+ }
24
32
  export interface ICatalogApp {
25
33
  id: string;
26
34
  name: string;
@@ -52,6 +60,7 @@ export interface IAppVersionConfig {
52
60
  port: number;
53
61
  envVars?: IAppCatalogEnvVar[];
54
62
  volumes?: TAppCatalogVolumeSpec[];
63
+ publishedPorts?: IAppCatalogPublishedPort[];
55
64
  platformRequirements?: Partial<Record<TAppCatalogPlatformRequirement, boolean>>;
56
65
  minOneboxVersion?: string;
57
66
  minCloudlyVersion?: string;
@@ -62,6 +71,7 @@ export interface IAppInstallRequest {
62
71
  serviceName: string;
63
72
  domain?: string;
64
73
  port?: number;
74
+ publishedPorts?: IAppCatalogPublishedPort[];
65
75
  envVars?: Record<string, string>;
66
76
  }
67
77
  export interface IUpgradeableAppService {
@@ -8,6 +8,24 @@ export interface IClusterNodeMetrics {
8
8
  containerCount: number;
9
9
  timestamp: number;
10
10
  }
11
+ export type TSparkNodeMode = 'cloudly' | 'coreflow-node';
12
+ export type TSparkCloudlyConnectionStatus = 'not-configured' | 'connecting' | 'connected' | 'failed';
13
+ export interface ISparkNodeRuntimeInfo {
14
+ runtime: 'spark';
15
+ nodeId: string;
16
+ mode?: TSparkNodeMode;
17
+ hostname?: string;
18
+ platform: string;
19
+ arch: string;
20
+ osRelease?: string;
21
+ sparkVersion: string;
22
+ cloudlyUrl?: string;
23
+ cloudlyConnectionStatus: TSparkCloudlyConnectionStatus;
24
+ dockerAvailable: boolean;
25
+ swarmNodeId?: string;
26
+ checkedAt: number;
27
+ lastError?: string;
28
+ }
11
29
  export interface IClusterNode {
12
30
  id: string;
13
31
  data: {
@@ -43,6 +61,10 @@ export interface IClusterNode {
43
61
  * Current metrics for the node
44
62
  */
45
63
  metrics?: IClusterNodeMetrics;
64
+ /**
65
+ * Runtime status reported by the Spark node agent.
66
+ */
67
+ sparkRuntimeInfo?: ISparkNodeRuntimeInfo;
46
68
  /**
47
69
  * Docker swarm node ID if part of swarm
48
70
  */
@@ -1,5 +1,5 @@
1
1
  import * as plugins from '../plugins.js';
2
- import type { IClusterNode } from '../data/clusternode.js';
2
+ import type { IClusterNode, IClusterNodeMetrics, ISparkNodeRuntimeInfo } from '../data/clusternode.js';
3
3
  import type { IDeployment } from '../data/deployment.js';
4
4
  import type { IIdentity } from '../data/user.js';
5
5
  export interface IRequest_Any_Cloudly_GetNodeConfig {
@@ -46,3 +46,16 @@ export interface IReq_Any_Cloudly_CreateNodeJumpCommand extends plugins.typedreq
46
46
  expiresAt: number;
47
47
  };
48
48
  }
49
+ export interface IRequest_Spark_Cloudly_SendHeartbeat extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IRequest_Spark_Cloudly_SendHeartbeat> {
50
+ method: 'sparkNodeHeartbeat';
51
+ request: {
52
+ nodeId: string;
53
+ nodeToken: string;
54
+ metrics: IClusterNodeMetrics;
55
+ runtimeInfo: ISparkNodeRuntimeInfo;
56
+ };
57
+ response: {
58
+ accepted: boolean;
59
+ message?: string;
60
+ };
61
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@serve.zone/interfaces",
3
- "version": "5.9.0",
3
+ "version": "5.10.0",
4
4
  "private": false,
5
5
  "description": "Shared TypeScript interfaces and TypedRequest contracts for the serve.zone ecosystem.",
6
6
  "exports": {
@@ -15,11 +15,11 @@
15
15
  "@tsclass/tsclass": "^9.5.1"
16
16
  },
17
17
  "devDependencies": {
18
- "@git.zone/tsbuild": "^4.4.0",
19
- "@git.zone/tsdoc": "^2.0.3",
20
- "@git.zone/tsrun": "^2.0.3",
21
- "@git.zone/tstest": "^3.6.3",
22
- "@types/node": "^25.6.1"
18
+ "@git.zone/tsbuild": "^4.4.2",
19
+ "@git.zone/tsdoc": "^2.0.6",
20
+ "@git.zone/tsrun": "^2.0.4",
21
+ "@git.zone/tstest": "^3.6.6",
22
+ "@types/node": "^25.8.0"
23
23
  },
24
24
  "files": [
25
25
  "ts/**/*",
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@serve.zone/interfaces',
6
- version: '5.9.0',
6
+ version: '5.10.0',
7
7
  description: 'Shared TypeScript interfaces and TypedRequest contracts for the serve.zone ecosystem.'
8
8
  }
@@ -25,6 +25,15 @@ export interface IAppCatalogVolume {
25
25
 
26
26
  export type TAppCatalogVolumeSpec = string | IAppCatalogVolume;
27
27
 
28
+ export interface IAppCatalogPublishedPort {
29
+ targetPort: number;
30
+ targetPortEnd?: number;
31
+ publishedPort?: number;
32
+ publishedPortEnd?: number;
33
+ protocol?: 'tcp' | 'udp';
34
+ hostIp?: string;
35
+ }
36
+
28
37
  export interface ICatalogApp {
29
38
  id: string;
30
39
  name: string;
@@ -59,6 +68,7 @@ export interface IAppVersionConfig {
59
68
  port: number;
60
69
  envVars?: IAppCatalogEnvVar[];
61
70
  volumes?: TAppCatalogVolumeSpec[];
71
+ publishedPorts?: IAppCatalogPublishedPort[];
62
72
  platformRequirements?: Partial<Record<TAppCatalogPlatformRequirement, boolean>>;
63
73
  minOneboxVersion?: string;
64
74
  minCloudlyVersion?: string;
@@ -70,6 +80,7 @@ export interface IAppInstallRequest {
70
80
  serviceName: string;
71
81
  domain?: string;
72
82
  port?: number;
83
+ publishedPorts?: IAppCatalogPublishedPort[];
73
84
  envVars?: Record<string, string>;
74
85
  }
75
86
 
@@ -10,6 +10,31 @@ export interface IClusterNodeMetrics {
10
10
  timestamp: number;
11
11
  }
12
12
 
13
+ export type TSparkNodeMode = 'cloudly' | 'coreflow-node';
14
+
15
+ export type TSparkCloudlyConnectionStatus =
16
+ | 'not-configured'
17
+ | 'connecting'
18
+ | 'connected'
19
+ | 'failed';
20
+
21
+ export interface ISparkNodeRuntimeInfo {
22
+ runtime: 'spark';
23
+ nodeId: string;
24
+ mode?: TSparkNodeMode;
25
+ hostname?: string;
26
+ platform: string;
27
+ arch: string;
28
+ osRelease?: string;
29
+ sparkVersion: string;
30
+ cloudlyUrl?: string;
31
+ cloudlyConnectionStatus: TSparkCloudlyConnectionStatus;
32
+ dockerAvailable: boolean;
33
+ swarmNodeId?: string;
34
+ checkedAt: number;
35
+ lastError?: string;
36
+ }
37
+
13
38
  export interface IClusterNode {
14
39
  id: string;
15
40
  data: {
@@ -52,6 +77,11 @@ export interface IClusterNode {
52
77
  * Current metrics for the node
53
78
  */
54
79
  metrics?: IClusterNodeMetrics;
80
+
81
+ /**
82
+ * Runtime status reported by the Spark node agent.
83
+ */
84
+ sparkRuntimeInfo?: ISparkNodeRuntimeInfo;
55
85
 
56
86
  /**
57
87
  * Docker swarm node ID if part of swarm
@@ -68,4 +98,4 @@ export interface IClusterNode {
68
98
  */
69
99
  requiredDebianPackages: string[];
70
100
  };
71
- }
101
+ }
@@ -1,5 +1,5 @@
1
1
  import * as plugins from '../plugins.js';
2
- import type { IClusterNode } from '../data/clusternode.js';
2
+ import type { IClusterNode, IClusterNodeMetrics, ISparkNodeRuntimeInfo } from '../data/clusternode.js';
3
3
  import type { IDeployment } from '../data/deployment.js';
4
4
  import type { IIdentity } from '../data/user.js';
5
5
 
@@ -53,3 +53,20 @@ export interface IReq_Any_Cloudly_CreateNodeJumpCommand extends plugins.typedreq
53
53
  expiresAt: number;
54
54
  };
55
55
  }
56
+
57
+ export interface IRequest_Spark_Cloudly_SendHeartbeat extends plugins.typedrequestInterfaces.implementsTR<
58
+ plugins.typedrequestInterfaces.ITypedRequest,
59
+ IRequest_Spark_Cloudly_SendHeartbeat
60
+ > {
61
+ method: 'sparkNodeHeartbeat';
62
+ request: {
63
+ nodeId: string;
64
+ nodeToken: string;
65
+ metrics: IClusterNodeMetrics;
66
+ runtimeInfo: ISparkNodeRuntimeInfo;
67
+ };
68
+ response: {
69
+ accepted: boolean;
70
+ message?: string;
71
+ };
72
+ }