@serve.zone/interfaces 7.24.0 → 7.26.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 +17 -0
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/data/clusternode.d.ts +15 -1
- package/dist_ts/requests/admin.d.ts +26 -2
- package/dist_ts/requests/admin.js +1 -2
- package/dist_ts/requests/node.d.ts +20 -0
- package/package.json +3 -3
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/data/clusternode.ts +16 -1
- package/ts/requests/admin.ts +36 -3
- package/ts/requests/node.ts +28 -0
package/changelog.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2026-06-17 - 7.26.0
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
- add node service reconciliation and runtime update interfaces (node)
|
|
8
|
+
- Add serveZoneServiceUpdate as a supported node action and expose serve.zone service runtime status on node runtime data.
|
|
9
|
+
- Add typed request contracts for reconciling node base services and pushing node runtime updates.
|
|
10
|
+
|
|
11
|
+
## 2026-06-16 - 7.25.0
|
|
12
|
+
|
|
13
|
+
### Features
|
|
14
|
+
|
|
15
|
+
- add Cloudly base service reconciliation request contracts (requests)
|
|
16
|
+
- Add reconciliation result and TypedRequest interfaces for triggering and reporting base service reconciliation.
|
|
17
|
+
- Use a type-only import for identity interfaces in admin request contracts.
|
|
18
|
+
- Bump @git.zone/tsdoc to ^2.1.1 and @types/node to ^25.9.2.
|
|
19
|
+
|
|
3
20
|
## 2026-06-12 - 7.24.0
|
|
4
21
|
|
|
5
22
|
### Features
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@serve.zone/interfaces',
|
|
6
|
-
version: '7.
|
|
6
|
+
version: '7.26.0',
|
|
7
7
|
description: 'Shared TypeScript interfaces and TypedRequest contracts for the serve.zone ecosystem.'
|
|
8
8
|
};
|
|
9
9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSx3QkFBd0I7SUFDOUIsT0FBTyxFQUFFLFFBQVE7SUFDakIsV0FBVyxFQUFFLHVGQUF1RjtDQUNyRyxDQUFBIn0=
|
|
@@ -22,7 +22,7 @@ export interface INodeMetricsSample {
|
|
|
22
22
|
/** Host-level network transmit rate across non-loopback interfaces. */
|
|
23
23
|
networkTxBytesPerSec?: number;
|
|
24
24
|
}
|
|
25
|
-
export type TNodeActionName = 'systemUpgrade' | 'reboot';
|
|
25
|
+
export type TNodeActionName = 'systemUpgrade' | 'reboot' | 'serveZoneServiceUpdate';
|
|
26
26
|
export type TNodeActionStatus = 'pending' | 'running' | 'succeeded' | 'failed';
|
|
27
27
|
/**
|
|
28
28
|
* An operator-requested action executed by spark on a node.
|
|
@@ -43,6 +43,19 @@ export interface INodeAction {
|
|
|
43
43
|
finishedAt?: number;
|
|
44
44
|
resultText?: string;
|
|
45
45
|
}
|
|
46
|
+
export interface IServeZoneServiceRuntimeInfo {
|
|
47
|
+
name: string;
|
|
48
|
+
serviceId?: string;
|
|
49
|
+
image?: string;
|
|
50
|
+
desiredImage?: string;
|
|
51
|
+
imageVersion?: string;
|
|
52
|
+
runningImageId?: string;
|
|
53
|
+
runningTaskCount?: number;
|
|
54
|
+
running: boolean;
|
|
55
|
+
checkedAt: number;
|
|
56
|
+
updatedAt?: number;
|
|
57
|
+
error?: string;
|
|
58
|
+
}
|
|
46
59
|
/** Spark -> Cloudly HTTP body for POST /spark/v1/nodes/metrics-sample */
|
|
47
60
|
export interface ISparkMetricsSampleRequest {
|
|
48
61
|
nodeId: string;
|
|
@@ -82,6 +95,7 @@ export interface ISparkNodeRuntimeInfo {
|
|
|
82
95
|
cloudlyConnectionStatus: TSparkCloudlyConnectionStatus;
|
|
83
96
|
dockerAvailable: boolean;
|
|
84
97
|
swarmNodeId?: string;
|
|
98
|
+
serveZoneServices?: IServeZoneServiceRuntimeInfo[];
|
|
85
99
|
checkedAt: number;
|
|
86
100
|
lastError?: string;
|
|
87
101
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as plugins from '../plugins.js';
|
|
2
|
-
import
|
|
2
|
+
import type { IIdentity } from '../data/user.js';
|
|
3
3
|
export interface IReq_Admin_LoginWithUsernameAndPassword extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_Admin_LoginWithUsernameAndPassword> {
|
|
4
4
|
method: 'adminLoginWithUsernameAndPassword';
|
|
5
5
|
request: {
|
|
@@ -7,6 +7,30 @@ export interface IReq_Admin_LoginWithUsernameAndPassword extends plugins.typedre
|
|
|
7
7
|
password: string;
|
|
8
8
|
};
|
|
9
9
|
response: {
|
|
10
|
-
identity:
|
|
10
|
+
identity: IIdentity;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export interface ICoreflowBaseServiceReconciliationResult {
|
|
14
|
+
status: 'fulfilled' | 'rejected';
|
|
15
|
+
nodeNames: string[];
|
|
16
|
+
message?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface IReq_Any_Cloudly_ReconcileBaseServices extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_Any_Cloudly_ReconcileBaseServices> {
|
|
19
|
+
method: 'reconcileBaseServices';
|
|
20
|
+
request: {
|
|
21
|
+
identity: IIdentity;
|
|
22
|
+
};
|
|
23
|
+
response: {
|
|
24
|
+
triggeredCoreflows: number;
|
|
25
|
+
successfulCoreflows: number;
|
|
26
|
+
failedCoreflows: number;
|
|
27
|
+
results: ICoreflowBaseServiceReconciliationResult[];
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export interface IReq_Cloudly_Coreflow_ReconcileBaseServices extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_Cloudly_Coreflow_ReconcileBaseServices> {
|
|
31
|
+
method: 'coreflowReconcileBaseServices';
|
|
32
|
+
request: Record<string, never>;
|
|
33
|
+
response: {
|
|
34
|
+
success: boolean;
|
|
11
35
|
};
|
|
12
36
|
}
|
|
@@ -1,3 +1,2 @@
|
|
|
1
1
|
import * as plugins from '../plugins.js';
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9yZXF1ZXN0cy9hZG1pbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEtBQUssY0FBYyxNQUFNLGlCQUFpQixDQUFDIn0=
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9yZXF1ZXN0cy9hZG1pbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGVBQWUsQ0FBQyJ9
|
|
@@ -172,6 +172,19 @@ export interface IReq_Any_Cloudly_GetNodeResourceUsage extends plugins.typedrequ
|
|
|
172
172
|
timestamp: number;
|
|
173
173
|
};
|
|
174
174
|
}
|
|
175
|
+
export interface IReq_Any_Cloudly_ReconcileNodeBaseServices extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_Any_Cloudly_ReconcileNodeBaseServices> {
|
|
176
|
+
method: 'reconcileNodeBaseServices';
|
|
177
|
+
request: {
|
|
178
|
+
identity: IIdentity;
|
|
179
|
+
nodeId: string;
|
|
180
|
+
};
|
|
181
|
+
response: {
|
|
182
|
+
nodeId: string;
|
|
183
|
+
nodeName: string;
|
|
184
|
+
success: boolean;
|
|
185
|
+
message?: string;
|
|
186
|
+
};
|
|
187
|
+
}
|
|
175
188
|
/**
|
|
176
189
|
* Cloudly asks a node's coreflow for live per-deployment resource usage.
|
|
177
190
|
*/
|
|
@@ -204,3 +217,10 @@ export interface IReq_Cloudly_Any_PushNodeActionUpdate extends plugins.typedrequ
|
|
|
204
217
|
};
|
|
205
218
|
response: Record<string, never>;
|
|
206
219
|
}
|
|
220
|
+
export interface IReq_Cloudly_Any_PushNodeRuntimeUpdate extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_Cloudly_Any_PushNodeRuntimeUpdate> {
|
|
221
|
+
method: 'pushNodeRuntimeUpdate';
|
|
222
|
+
request: {
|
|
223
|
+
node: IClusterNode;
|
|
224
|
+
};
|
|
225
|
+
response: Record<string, never>;
|
|
226
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@serve.zone/interfaces",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.26.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Shared TypeScript interfaces and TypedRequest contracts for the serve.zone ecosystem.",
|
|
6
6
|
"exports": {
|
|
@@ -16,10 +16,10 @@
|
|
|
16
16
|
},
|
|
17
17
|
"devDependencies": {
|
|
18
18
|
"@git.zone/tsbuild": "^4.4.2",
|
|
19
|
-
"@git.zone/tsdoc": "^2.
|
|
19
|
+
"@git.zone/tsdoc": "^2.1.1",
|
|
20
20
|
"@git.zone/tsrun": "^2.0.4",
|
|
21
21
|
"@git.zone/tstest": "^3.6.6",
|
|
22
|
-
"@types/node": "^25.9.
|
|
22
|
+
"@types/node": "^25.9.2"
|
|
23
23
|
},
|
|
24
24
|
"files": [
|
|
25
25
|
"ts/**/*",
|
package/ts/00_commitinfo_data.ts
CHANGED
package/ts/data/clusternode.ts
CHANGED
|
@@ -25,7 +25,7 @@ export interface INodeMetricsSample {
|
|
|
25
25
|
networkTxBytesPerSec?: number;
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
export type TNodeActionName = 'systemUpgrade' | 'reboot';
|
|
28
|
+
export type TNodeActionName = 'systemUpgrade' | 'reboot' | 'serveZoneServiceUpdate';
|
|
29
29
|
|
|
30
30
|
export type TNodeActionStatus = 'pending' | 'running' | 'succeeded' | 'failed';
|
|
31
31
|
|
|
@@ -49,6 +49,20 @@ export interface INodeAction {
|
|
|
49
49
|
resultText?: string;
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
+
export interface IServeZoneServiceRuntimeInfo {
|
|
53
|
+
name: string;
|
|
54
|
+
serviceId?: string;
|
|
55
|
+
image?: string;
|
|
56
|
+
desiredImage?: string;
|
|
57
|
+
imageVersion?: string;
|
|
58
|
+
runningImageId?: string;
|
|
59
|
+
runningTaskCount?: number;
|
|
60
|
+
running: boolean;
|
|
61
|
+
checkedAt: number;
|
|
62
|
+
updatedAt?: number;
|
|
63
|
+
error?: string;
|
|
64
|
+
}
|
|
65
|
+
|
|
52
66
|
/** Spark -> Cloudly HTTP body for POST /spark/v1/nodes/metrics-sample */
|
|
53
67
|
export interface ISparkMetricsSampleRequest {
|
|
54
68
|
nodeId: string;
|
|
@@ -98,6 +112,7 @@ export interface ISparkNodeRuntimeInfo {
|
|
|
98
112
|
cloudlyConnectionStatus: TSparkCloudlyConnectionStatus;
|
|
99
113
|
dockerAvailable: boolean;
|
|
100
114
|
swarmNodeId?: string;
|
|
115
|
+
serveZoneServices?: IServeZoneServiceRuntimeInfo[];
|
|
101
116
|
checkedAt: number;
|
|
102
117
|
lastError?: string;
|
|
103
118
|
}
|
package/ts/requests/admin.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as plugins from '../plugins.js';
|
|
2
|
-
import
|
|
2
|
+
import type { IIdentity } from '../data/user.js';
|
|
3
3
|
|
|
4
4
|
export interface IReq_Admin_LoginWithUsernameAndPassword extends plugins.typedrequestInterfaces.implementsTR<
|
|
5
5
|
plugins.typedrequestInterfaces.ITypedRequest,
|
|
@@ -11,6 +11,39 @@ export interface IReq_Admin_LoginWithUsernameAndPassword extends plugins.typedre
|
|
|
11
11
|
password: string;
|
|
12
12
|
};
|
|
13
13
|
response: {
|
|
14
|
-
identity:
|
|
14
|
+
identity: IIdentity;
|
|
15
15
|
}
|
|
16
|
-
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export interface ICoreflowBaseServiceReconciliationResult {
|
|
19
|
+
status: 'fulfilled' | 'rejected';
|
|
20
|
+
nodeNames: string[];
|
|
21
|
+
message?: string;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export interface IReq_Any_Cloudly_ReconcileBaseServices extends plugins.typedrequestInterfaces.implementsTR<
|
|
25
|
+
plugins.typedrequestInterfaces.ITypedRequest,
|
|
26
|
+
IReq_Any_Cloudly_ReconcileBaseServices
|
|
27
|
+
> {
|
|
28
|
+
method: 'reconcileBaseServices';
|
|
29
|
+
request: {
|
|
30
|
+
identity: IIdentity;
|
|
31
|
+
};
|
|
32
|
+
response: {
|
|
33
|
+
triggeredCoreflows: number;
|
|
34
|
+
successfulCoreflows: number;
|
|
35
|
+
failedCoreflows: number;
|
|
36
|
+
results: ICoreflowBaseServiceReconciliationResult[];
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export interface IReq_Cloudly_Coreflow_ReconcileBaseServices extends plugins.typedrequestInterfaces.implementsTR<
|
|
41
|
+
plugins.typedrequestInterfaces.ITypedRequest,
|
|
42
|
+
IReq_Cloudly_Coreflow_ReconcileBaseServices
|
|
43
|
+
> {
|
|
44
|
+
method: 'coreflowReconcileBaseServices';
|
|
45
|
+
request: Record<string, never>;
|
|
46
|
+
response: {
|
|
47
|
+
success: boolean;
|
|
48
|
+
};
|
|
49
|
+
}
|
package/ts/requests/node.ts
CHANGED
|
@@ -217,6 +217,23 @@ export interface IReq_Any_Cloudly_GetNodeResourceUsage extends plugins.typedrequ
|
|
|
217
217
|
};
|
|
218
218
|
}
|
|
219
219
|
|
|
220
|
+
export interface IReq_Any_Cloudly_ReconcileNodeBaseServices extends plugins.typedrequestInterfaces.implementsTR<
|
|
221
|
+
plugins.typedrequestInterfaces.ITypedRequest,
|
|
222
|
+
IReq_Any_Cloudly_ReconcileNodeBaseServices
|
|
223
|
+
> {
|
|
224
|
+
method: 'reconcileNodeBaseServices';
|
|
225
|
+
request: {
|
|
226
|
+
identity: IIdentity;
|
|
227
|
+
nodeId: string;
|
|
228
|
+
};
|
|
229
|
+
response: {
|
|
230
|
+
nodeId: string;
|
|
231
|
+
nodeName: string;
|
|
232
|
+
success: boolean;
|
|
233
|
+
message?: string;
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
|
|
220
237
|
/**
|
|
221
238
|
* Cloudly asks a node's coreflow for live per-deployment resource usage.
|
|
222
239
|
*/
|
|
@@ -260,3 +277,14 @@ export interface IReq_Cloudly_Any_PushNodeActionUpdate extends plugins.typedrequ
|
|
|
260
277
|
};
|
|
261
278
|
response: Record<string, never>;
|
|
262
279
|
}
|
|
280
|
+
|
|
281
|
+
export interface IReq_Cloudly_Any_PushNodeRuntimeUpdate extends plugins.typedrequestInterfaces.implementsTR<
|
|
282
|
+
plugins.typedrequestInterfaces.ITypedRequest,
|
|
283
|
+
IReq_Cloudly_Any_PushNodeRuntimeUpdate
|
|
284
|
+
> {
|
|
285
|
+
method: 'pushNodeRuntimeUpdate';
|
|
286
|
+
request: {
|
|
287
|
+
node: IClusterNode;
|
|
288
|
+
};
|
|
289
|
+
response: Record<string, never>;
|
|
290
|
+
}
|