@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.
Files changed (2) hide show
  1. package/dist/main.js +78 -14
  2. 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)],
package/package.json CHANGED
@@ -15,7 +15,7 @@
15
15
  "publishConfig": {
16
16
  "access": "public"
17
17
  },
18
- "version": "0.11.2",
18
+ "version": "0.12.0",
19
19
  "dependencies": {
20
20
  "@clack/prompts": "1.8.1",
21
21
  "@modelcontextprotocol/server": "2.1.0",