@kikimoradev/kcloud 0.11.2 → 0.12.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/dist/main.js +78 -14
- package/package.json +1 -1
package/dist/main.js
CHANGED
|
@@ -593,6 +593,34 @@ const agentEventSchema = z.discriminatedUnion("event", [
|
|
|
593
593
|
...roleEnvelope("monitor.authBlocked"),
|
|
594
594
|
reason: z.string()
|
|
595
595
|
}),
|
|
596
|
+
z.looseObject({
|
|
597
|
+
...roleEnvelope("monitor.admissionWait"),
|
|
598
|
+
ticket: z.string(),
|
|
599
|
+
since: instantSchema$2,
|
|
600
|
+
seq: countSchema
|
|
601
|
+
}),
|
|
602
|
+
z.looseObject({
|
|
603
|
+
...roleEnvelope("executor.admissionWait"),
|
|
604
|
+
ticket: z.string(),
|
|
605
|
+
since: instantSchema$2,
|
|
606
|
+
seq: countSchema,
|
|
607
|
+
taskId: z.string()
|
|
608
|
+
}),
|
|
609
|
+
z.looseObject({
|
|
610
|
+
...roleEnvelope("admission.granted"),
|
|
611
|
+
ticket: z.string(),
|
|
612
|
+
seq: countSchema
|
|
613
|
+
}),
|
|
614
|
+
z.looseObject({
|
|
615
|
+
...roleEnvelope("admission.released"),
|
|
616
|
+
ticket: z.string(),
|
|
617
|
+
seq: countSchema
|
|
618
|
+
}),
|
|
619
|
+
z.looseObject({
|
|
620
|
+
...roleEnvelope("admission.cancelled"),
|
|
621
|
+
ticket: z.string(),
|
|
622
|
+
seq: countSchema
|
|
623
|
+
}),
|
|
596
624
|
z.looseObject({
|
|
597
625
|
...roleEnvelope("task.started"),
|
|
598
626
|
taskId: z.string(),
|
|
@@ -935,7 +963,6 @@ const errorCodes = Object.keys({
|
|
|
935
963
|
"agent.context_too_long": "rule_violation",
|
|
936
964
|
"agent.docker_unavailable": "rule_violation",
|
|
937
965
|
"agent.storage_exhausted": "rule_violation",
|
|
938
|
-
"agent.capacity_exhausted": "rule_violation",
|
|
939
966
|
"agent.invalid_transition": "rule_violation",
|
|
940
967
|
"agent.busy": "conflict",
|
|
941
968
|
"agent.settings_rejected": "rule_violation",
|
|
@@ -1486,6 +1513,7 @@ const auditActionSchema = z.enum([
|
|
|
1486
1513
|
"agent.deleted",
|
|
1487
1514
|
"agent.action",
|
|
1488
1515
|
"platform.settings_updated",
|
|
1516
|
+
"runtime.sessions_updated",
|
|
1489
1517
|
"platform.upgrade_requested",
|
|
1490
1518
|
"platform.upgraded",
|
|
1491
1519
|
"backup.requested",
|
|
@@ -1586,6 +1614,43 @@ z.object({
|
|
|
1586
1614
|
id: idSchema,
|
|
1587
1615
|
userId: idSchema
|
|
1588
1616
|
});
|
|
1617
|
+
z.enum(["monitor", "executor"]);
|
|
1618
|
+
const sessionSlotCountSchema = z.int().min(1).max(64);
|
|
1619
|
+
const sessionQueueEntrySchema = z.object({
|
|
1620
|
+
agentId: idSchema,
|
|
1621
|
+
agentName: z.string().nullable(),
|
|
1622
|
+
projectId: idSchema.nullable(),
|
|
1623
|
+
projectName: z.string().nullable(),
|
|
1624
|
+
position: z.int().positive(),
|
|
1625
|
+
since: z.iso.datetime(),
|
|
1626
|
+
taskId: z.string().nullable()
|
|
1627
|
+
}).meta({ id: "SessionQueueEntry" });
|
|
1628
|
+
const sessionPoolSchema = z.object({
|
|
1629
|
+
slots: sessionSlotCountSchema.nullable(),
|
|
1630
|
+
effective: z.int().nonnegative(),
|
|
1631
|
+
inUse: z.int().nonnegative(),
|
|
1632
|
+
waiting: z.array(sessionQueueEntrySchema)
|
|
1633
|
+
}).meta({ id: "SessionPool" });
|
|
1634
|
+
z.object({
|
|
1635
|
+
version: z.int().nonnegative(),
|
|
1636
|
+
ready: z.boolean(),
|
|
1637
|
+
monitor: sessionPoolSchema,
|
|
1638
|
+
executor: sessionPoolSchema
|
|
1639
|
+
}).meta({ id: "SessionSlots" });
|
|
1640
|
+
z.object({
|
|
1641
|
+
version: z.int().nonnegative(),
|
|
1642
|
+
monitor: sessionSlotCountSchema.nullable(),
|
|
1643
|
+
executor: sessionSlotCountSchema.nullable()
|
|
1644
|
+
}).meta({ id: "UpdateSessionSlotsBody" });
|
|
1645
|
+
const agentAdmissionStateSchema = z.discriminatedUnion("state", [z.object({
|
|
1646
|
+
state: z.literal("waiting"),
|
|
1647
|
+
since: z.iso.datetime(),
|
|
1648
|
+
position: z.int().positive()
|
|
1649
|
+
}), z.object({ state: z.literal("holding") })]).meta({ id: "AgentAdmissionState" });
|
|
1650
|
+
const agentAdmissionSchema = z.object({
|
|
1651
|
+
monitor: agentAdmissionStateSchema.nullable(),
|
|
1652
|
+
executor: agentAdmissionStateSchema.nullable()
|
|
1653
|
+
}).meta({ id: "AgentAdmission" });
|
|
1589
1654
|
//#endregion
|
|
1590
1655
|
//#region ../../packages/contracts/src/releases.ts
|
|
1591
1656
|
const kikimoraVersionSchema = z.string().regex(versionTagPattern);
|
|
@@ -1978,7 +2043,8 @@ const agentRuntimeSchema = z.object({
|
|
|
1978
2043
|
crashLooping: z.boolean(),
|
|
1979
2044
|
provision: agentProvisionSchema.nullable(),
|
|
1980
2045
|
stopMode: agentStopModeSchema.nullable(),
|
|
1981
|
-
stopDeadlineAt: z.iso.datetime().nullable()
|
|
2046
|
+
stopDeadlineAt: z.iso.datetime().nullable(),
|
|
2047
|
+
admission: agentAdmissionSchema.nullable()
|
|
1982
2048
|
}).meta({ id: "AgentRuntime" });
|
|
1983
2049
|
const agentListItemSchema = z.object({
|
|
1984
2050
|
id: idSchema,
|
|
@@ -2144,11 +2210,6 @@ const hostOperationStatusSchema = z.enum([
|
|
|
2144
2210
|
"lost"
|
|
2145
2211
|
]);
|
|
2146
2212
|
const providerUnavailableReasons = ["not_configured", "provider_error"];
|
|
2147
|
-
const capacityLimits = [
|
|
2148
|
-
"memory",
|
|
2149
|
-
"cpu",
|
|
2150
|
-
"disk"
|
|
2151
|
-
];
|
|
2152
2213
|
const backupPartNames = ["database.dump.enc", "agents.tar.enc"];
|
|
2153
2214
|
const archiveSkipReasons = [
|
|
2154
2215
|
"symlink",
|
|
@@ -2287,13 +2348,7 @@ const nodeSizesSchema = z.discriminatedUnion("source", [z.object({
|
|
|
2287
2348
|
source: z.literal("ok"),
|
|
2288
2349
|
items: z.array(dropletSizeSchema)
|
|
2289
2350
|
}), unavailableBecause(providerUnavailableReasons)]).meta({ id: "NodeSizes" });
|
|
2290
|
-
const capacityForecastSchema = z.object({
|
|
2291
|
-
byMemory: z.int().nonnegative().nullable(),
|
|
2292
|
-
byCpu: z.int().nonnegative().nullable(),
|
|
2293
|
-
byDisk: z.int().nonnegative().nullable(),
|
|
2294
|
-
agentsThatFit: z.int().nonnegative().nullable(),
|
|
2295
|
-
limiting: z.enum(capacityLimits).nullable()
|
|
2296
|
-
}).meta({ id: "CapacityForecast" });
|
|
2351
|
+
const capacityForecastSchema = z.object({ byDisk: z.int().nonnegative().nullable() }).meta({ id: "CapacityForecast" });
|
|
2297
2352
|
z.object({
|
|
2298
2353
|
droplet: nodeDropletSchema,
|
|
2299
2354
|
volumes: nodeVolumesSchema,
|
|
@@ -3510,6 +3565,14 @@ const configCommands = (adaptersOf) => [
|
|
|
3510
3565
|
}
|
|
3511
3566
|
})
|
|
3512
3567
|
];
|
|
3568
|
+
const slotOf = (state) => {
|
|
3569
|
+
if (state === null) return "-";
|
|
3570
|
+
return state.state === "holding" ? "holding a slot" : `place ${String(state.position)} in the queue since ${state.since}`;
|
|
3571
|
+
};
|
|
3572
|
+
const admissionRowsOf = (agent) => {
|
|
3573
|
+
const { admission } = agent.runtime;
|
|
3574
|
+
return admission === null ? [] : [["monitor slot", slotOf(admission.monitor)], ["executor slot", slotOf(admission.executor)]];
|
|
3575
|
+
};
|
|
3513
3576
|
const detailsOf = (agent) => [
|
|
3514
3577
|
renderTable([{ header: "FIELD" }, { header: "VALUE" }], [
|
|
3515
3578
|
["name", agent.name],
|
|
@@ -3524,6 +3587,7 @@ const detailsOf = (agent) => [
|
|
|
3524
3587
|
["browser", agent.machine.browser ? "yes" : "no"],
|
|
3525
3588
|
["container", agent.runtime.containerId ?? "none"],
|
|
3526
3589
|
["health", agent.runtime.health],
|
|
3590
|
+
...admissionRowsOf(agent),
|
|
3527
3591
|
["pending", agent.restartRequired ? agent.restartReasons.join(", ") : "-"],
|
|
3528
3592
|
["actions", agent.availableActions.join(", ")],
|
|
3529
3593
|
["version", String(agent.version)],
|