instar 1.3.91 → 1.3.92

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 (141) hide show
  1. package/.claude/skills/autonomous/hooks/autonomous-stop-hook.sh +17 -0
  2. package/dashboard/index.html +108 -0
  3. package/dist/commands/server.d.ts.map +1 -1
  4. package/dist/commands/server.js +207 -1
  5. package/dist/commands/server.js.map +1 -1
  6. package/dist/config/ConfigDefaults.d.ts.map +1 -1
  7. package/dist/config/ConfigDefaults.js +30 -0
  8. package/dist/config/ConfigDefaults.js.map +1 -1
  9. package/dist/config/LiveConfig.d.ts +3 -1
  10. package/dist/config/LiveConfig.d.ts.map +1 -1
  11. package/dist/config/LiveConfig.js +4 -1
  12. package/dist/config/LiveConfig.js.map +1 -1
  13. package/dist/config/stageWriteGuard.d.ts +23 -0
  14. package/dist/config/stageWriteGuard.d.ts.map +1 -0
  15. package/dist/config/stageWriteGuard.js +33 -0
  16. package/dist/config/stageWriteGuard.js.map +1 -0
  17. package/dist/core/DeliverMessageHandler.d.ts +33 -0
  18. package/dist/core/DeliverMessageHandler.d.ts.map +1 -0
  19. package/dist/core/DeliverMessageHandler.js +34 -0
  20. package/dist/core/DeliverMessageHandler.js.map +1 -0
  21. package/dist/core/LeaseCoordinator.d.ts +39 -2
  22. package/dist/core/LeaseCoordinator.d.ts.map +1 -1
  23. package/dist/core/LeaseCoordinator.js +45 -9
  24. package/dist/core/LeaseCoordinator.js.map +1 -1
  25. package/dist/core/MachineIdentity.d.ts +28 -1
  26. package/dist/core/MachineIdentity.d.ts.map +1 -1
  27. package/dist/core/MachineIdentity.js +81 -1
  28. package/dist/core/MachineIdentity.js.map +1 -1
  29. package/dist/core/MachineLoadBroker.d.ts +94 -0
  30. package/dist/core/MachineLoadBroker.d.ts.map +1 -0
  31. package/dist/core/MachineLoadBroker.js +87 -0
  32. package/dist/core/MachineLoadBroker.js.map +1 -0
  33. package/dist/core/MachinePoolRegistry.d.ts +94 -0
  34. package/dist/core/MachinePoolRegistry.d.ts.map +1 -0
  35. package/dist/core/MachinePoolRegistry.js +150 -0
  36. package/dist/core/MachinePoolRegistry.js.map +1 -0
  37. package/dist/core/MeshRpc.d.ts +165 -0
  38. package/dist/core/MeshRpc.d.ts.map +1 -0
  39. package/dist/core/MeshRpc.js +156 -0
  40. package/dist/core/MeshRpc.js.map +1 -0
  41. package/dist/core/MeshRpcClient.d.ts +59 -0
  42. package/dist/core/MeshRpcClient.d.ts.map +1 -0
  43. package/dist/core/MeshRpcClient.js +58 -0
  44. package/dist/core/MeshRpcClient.js.map +1 -0
  45. package/dist/core/MultiMachineCoordinator.d.ts +11 -0
  46. package/dist/core/MultiMachineCoordinator.d.ts.map +1 -1
  47. package/dist/core/MultiMachineCoordinator.js +13 -0
  48. package/dist/core/MultiMachineCoordinator.js.map +1 -1
  49. package/dist/core/NicknameAssigner.d.ts +51 -0
  50. package/dist/core/NicknameAssigner.d.ts.map +1 -0
  51. package/dist/core/NicknameAssigner.js +91 -0
  52. package/dist/core/NicknameAssigner.js.map +1 -0
  53. package/dist/core/NicknameCommand.d.ts +28 -0
  54. package/dist/core/NicknameCommand.d.ts.map +1 -0
  55. package/dist/core/NicknameCommand.js +69 -0
  56. package/dist/core/NicknameCommand.js.map +1 -0
  57. package/dist/core/PlacementExecutor.d.ts +71 -0
  58. package/dist/core/PlacementExecutor.d.ts.map +1 -0
  59. package/dist/core/PlacementExecutor.js +156 -0
  60. package/dist/core/PlacementExecutor.js.map +1 -0
  61. package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
  62. package/dist/core/PostUpdateMigrator.js +21 -0
  63. package/dist/core/PostUpdateMigrator.js.map +1 -1
  64. package/dist/core/RebalancePlanner.d.ts +48 -0
  65. package/dist/core/RebalancePlanner.d.ts.map +1 -0
  66. package/dist/core/RebalancePlanner.js +71 -0
  67. package/dist/core/RebalancePlanner.js.map +1 -0
  68. package/dist/core/SessionOwnership.d.ts +103 -0
  69. package/dist/core/SessionOwnership.d.ts.map +1 -0
  70. package/dist/core/SessionOwnership.js +0 -0
  71. package/dist/core/SessionOwnership.js.map +1 -0
  72. package/dist/core/SessionOwnershipRegistry.d.ts +115 -0
  73. package/dist/core/SessionOwnershipRegistry.d.ts.map +1 -0
  74. package/dist/core/SessionOwnershipRegistry.js +128 -0
  75. package/dist/core/SessionOwnershipRegistry.js.map +1 -0
  76. package/dist/core/SessionPoolE2EResultStore.d.ts +45 -0
  77. package/dist/core/SessionPoolE2EResultStore.d.ts.map +1 -0
  78. package/dist/core/SessionPoolE2EResultStore.js +66 -0
  79. package/dist/core/SessionPoolE2EResultStore.js.map +1 -0
  80. package/dist/core/SessionRouter.d.ts +95 -0
  81. package/dist/core/SessionRouter.d.ts.map +1 -0
  82. package/dist/core/SessionRouter.js +151 -0
  83. package/dist/core/SessionRouter.js.map +1 -0
  84. package/dist/core/StageAdvancer.d.ts +47 -0
  85. package/dist/core/StageAdvancer.d.ts.map +1 -0
  86. package/dist/core/StageAdvancer.js +70 -0
  87. package/dist/core/StageAdvancer.js.map +1 -0
  88. package/dist/core/TransferByNickname.d.ts +51 -0
  89. package/dist/core/TransferByNickname.d.ts.map +1 -0
  90. package/dist/core/TransferByNickname.js +50 -0
  91. package/dist/core/TransferByNickname.js.map +1 -0
  92. package/dist/core/TransferOrchestrator.d.ts +113 -0
  93. package/dist/core/TransferOrchestrator.d.ts.map +1 -0
  94. package/dist/core/TransferOrchestrator.js +79 -0
  95. package/dist/core/TransferOrchestrator.js.map +1 -0
  96. package/dist/core/types.d.ts +177 -1
  97. package/dist/core/types.d.ts.map +1 -1
  98. package/dist/core/types.js.map +1 -1
  99. package/dist/scaffold/templates.d.ts.map +1 -1
  100. package/dist/scaffold/templates.js +5 -0
  101. package/dist/scaffold/templates.js.map +1 -1
  102. package/dist/server/AgentServer.d.ts +8 -0
  103. package/dist/server/AgentServer.d.ts.map +1 -1
  104. package/dist/server/AgentServer.js +4 -0
  105. package/dist/server/AgentServer.js.map +1 -1
  106. package/dist/server/CapabilityIndex.d.ts.map +1 -1
  107. package/dist/server/CapabilityIndex.js +14 -0
  108. package/dist/server/CapabilityIndex.js.map +1 -1
  109. package/dist/server/routes.d.ts +12 -0
  110. package/dist/server/routes.d.ts.map +1 -1
  111. package/dist/server/routes.js +91 -0
  112. package/dist/server/routes.js.map +1 -1
  113. package/package.json +1 -1
  114. package/src/data/builtin-manifest.json +64 -64
  115. package/src/scaffold/templates.ts +5 -0
  116. package/upgrades/1.3.92.md +63 -0
  117. package/upgrades/side-effects/session-pool-capability-classification.md +16 -0
  118. package/upgrades/side-effects/session-pool-review-fixes.md +23 -0
  119. package/upgrades/side-effects/session-pool-track-a-router-lease.md +29 -0
  120. package/upgrades/side-effects/session-pool-track-b-agent-awareness.md +29 -0
  121. package/upgrades/side-effects/session-pool-track-b-nicknames.md +35 -0
  122. package/upgrades/side-effects/session-pool-track-b-pool-api.md +36 -0
  123. package/upgrades/side-effects/session-pool-track-b-registry.md +31 -0
  124. package/upgrades/side-effects/session-pool-track-b-wiring.md +39 -0
  125. package/upgrades/side-effects/session-pool-track-c-dispatcher.md +24 -0
  126. package/upgrades/side-effects/session-pool-track-c-meshrpc.md +35 -0
  127. package/upgrades/side-effects/session-pool-track-c-route-wiring.md +31 -0
  128. package/upgrades/side-effects/session-pool-track-d-ownership-fsm.md +31 -0
  129. package/upgrades/side-effects/session-pool-track-d-registry.md +27 -0
  130. package/upgrades/side-effects/session-pool-track-d-wiring.md +30 -0
  131. package/upgrades/side-effects/session-pool-track-e-boot-wiring.md +20 -0
  132. package/upgrades/side-effects/session-pool-track-e-placement-core.md +17 -0
  133. package/upgrades/side-effects/session-pool-track-e-router.md +23 -0
  134. package/upgrades/side-effects/session-pool-track-f-config.md +12 -0
  135. package/upgrades/side-effects/session-pool-track-f-handoff-core.md +17 -0
  136. package/upgrades/side-effects/session-pool-track-g-load-broker.md +16 -0
  137. package/upgrades/side-effects/session-pool-track-h-gate-wiring.md +17 -0
  138. package/upgrades/side-effects/session-pool-track-h-mesh-client.md +15 -0
  139. package/upgrades/side-effects/session-pool-track-h-rebalance.md +13 -0
  140. package/upgrades/side-effects/session-pool-track-h-rollout-gate.md +17 -0
  141. package/upgrades/side-effects/session-pool-track-h-stage-guard.md +16 -0
@@ -14,6 +14,7 @@ import fs from 'node:fs';
14
14
  import os from 'node:os';
15
15
  import path from 'node:path';
16
16
  import { SafeFsExecutor } from './SafeFsExecutor.js';
17
+ import { assignNickname, isValidNickname } from './NicknameAssigner.js';
17
18
  // ── Constants ────────────────────────────────────────────────────────
18
19
  const MACHINE_DIR = 'machine';
19
20
  const MACHINES_DIR = 'machines';
@@ -251,15 +252,94 @@ export class MachineIdentityManager {
251
252
  registerMachine(identity, role = 'standby') {
252
253
  const registry = this.loadRegistry();
253
254
  const now = new Date().toISOString();
255
+ // Nickname (Session Pool §L2): keep an already-assigned nickname (idempotent
256
+ // re-register), else auto-assign a friendly, collision-free one derived from
257
+ // the machine's own properties. Collision set = every OTHER machine's nickname.
258
+ const existing = registry.machines[identity.machineId];
259
+ const existingNicknames = Object.entries(registry.machines)
260
+ .filter(([id]) => id !== identity.machineId)
261
+ .map(([, e]) => e.nickname)
262
+ .filter((n) => typeof n === 'string' && n.length > 0);
263
+ const nickname = existing?.nickname ??
264
+ assignNickname({ identityName: identity.name, platform: identity.platform, existingNicknames });
254
265
  registry.machines[identity.machineId] = {
266
+ ...(existing ?? {}),
255
267
  name: identity.name,
268
+ nickname,
256
269
  status: 'active',
257
270
  role,
258
- pairedAt: now,
271
+ pairedAt: existing?.pairedAt ?? now,
259
272
  lastSeen: now,
260
273
  };
261
274
  this.saveRegistry(registry);
262
275
  }
276
+ /**
277
+ * Set a machine's user-facing nickname (Session Pool §L2). Validates the
278
+ * format and pool-uniqueness (case-insensitive, excluding the machine itself);
279
+ * a collision is REJECTED (not silently suffixed) so the caller sees the
280
+ * conflict. Nickname is metadata only — renaming never moves a session or
281
+ * changes lease/ownership state.
282
+ *
283
+ * @throws if the machine is unknown, the nickname is malformed, or it collides.
284
+ */
285
+ updateNickname(machineId, nickname) {
286
+ const trimmed = typeof nickname === 'string' ? nickname.trim() : '';
287
+ if (!isValidNickname(trimmed)) {
288
+ throw new Error(`Invalid nickname '${nickname}' — must be 1–40 chars of letters, digits, spaces, hyphens.`);
289
+ }
290
+ const registry = this.loadRegistry();
291
+ const entry = registry.machines[machineId];
292
+ if (!entry)
293
+ throw new Error(ERRORS.MACHINE_NOT_FOUND(machineId));
294
+ const lower = trimmed.toLowerCase();
295
+ for (const [id, e] of Object.entries(registry.machines)) {
296
+ if (id !== machineId && (e.nickname || '').trim().toLowerCase() === lower) {
297
+ throw new Error(`Nickname '${trimmed}' is already used by machine ${id}.`);
298
+ }
299
+ }
300
+ entry.nickname = trimmed;
301
+ entry.lastSeen = new Date().toISOString();
302
+ this.saveRegistry(registry);
303
+ }
304
+ /**
305
+ * Resolve a user-typed nickname to a machineId (Session Pool §L4 placement /
306
+ * transfer command resolution). Case-insensitive, trimmed, exact match over
307
+ * ACTIVE machines. Returns null if unknown — the caller surfaces the valid
308
+ * nicknames and refuses to mis-route (never a silent fallthrough).
309
+ * Nicknames are pool-unique (updateNickname enforces it), so a match is unique.
310
+ */
311
+ resolveNickname(nickname) {
312
+ const target = (typeof nickname === 'string' ? nickname : '').trim().toLowerCase();
313
+ if (!target)
314
+ return null;
315
+ const registry = this.loadRegistry();
316
+ for (const [machineId, entry] of Object.entries(registry.machines)) {
317
+ if (entry.status === 'active' && (entry.nickname || '').trim().toLowerCase() === target) {
318
+ return machineId;
319
+ }
320
+ }
321
+ return null;
322
+ }
323
+ /**
324
+ * Record this machine's self-attested hardware properties into its OWN registry
325
+ * entry (Session Pool §L2). The CALLER captures the hardware (e.g. via
326
+ * MachinePoolRegistry.captureHardware()) and passes it, so this manager stays
327
+ * free of `os`/registry-assembly concerns. Idempotent: only writes when the
328
+ * hardware actually changed (avoids a registry churn/sync on every boot). The
329
+ * entry must exist (the machine self-registers first). No-op for an unknown id.
330
+ */
331
+ recordSelfHardware(machineId, hardware) {
332
+ const registry = this.loadRegistry();
333
+ const entry = registry.machines[machineId];
334
+ if (!entry)
335
+ return false;
336
+ if (JSON.stringify(entry.hardware ?? null) === JSON.stringify(hardware))
337
+ return false; // unchanged
338
+ entry.hardware = hardware;
339
+ entry.lastSeen = new Date().toISOString();
340
+ this.saveRegistry(registry);
341
+ return true;
342
+ }
263
343
  /**
264
344
  * Update a machine's role in the registry.
265
345
  */
@@ -1 +1 @@
1
- {"version":3,"file":"MachineIdentity.js","sourceRoot":"","sources":["../../src/core/MachineIdentity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MachineIdentity.js","sourceRoot":"","sources":["../../src/core/MachineIdentity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * MachineLoadBroker — the machine-local shared-load accounting for L6 (Multi-Agent-
3
+ * Per-Machine). Multiple instar agents share one machine; each agent's router must
4
+ * see the TRUE machine load, not just its own, so it won't pile sessions onto a
5
+ * machine another agent is already saturating.
6
+ *
7
+ * Critically, the broker does NOT trust agent self-reports for the authoritative
8
+ * number (Structure > Willpower — "no cross-agent trust required" only holds if an
9
+ * agent cannot lie itself idle). The MACHINE independently reads OS ground truth
10
+ * (loadavg, process footprint); agents report only their own session count + claimed
11
+ * footprint; the broker CROSS-CHECKS and, when an agent under-reports its footprint
12
+ * beyond `loadReportDivergenceTolerance`, marks it `suspect-overloaded`, reduces its
13
+ * placement weight, and escalates — so a lying agent cannot make itself look idle.
14
+ *
15
+ * Pure functions over their inputs — no I/O, no clock; the caller samples the OS.
16
+ */
17
+ export interface AgentSelfReport {
18
+ agentId: string;
19
+ port: number;
20
+ reportedSessionCount: number;
21
+ /** The agent's CLAIMED resource footprint (MB RSS). */
22
+ reportedFootprintMB: number;
23
+ }
24
+ export interface OsProcessSample {
25
+ /** The agent this measured process belongs to (resolved by port/cmdline upstream). */
26
+ agentId: string;
27
+ /** OS-measured resident memory (MB) — ground truth. */
28
+ measuredFootprintMB: number;
29
+ }
30
+ export interface MachineLoadInput {
31
+ /** os.loadavg()[0] — the authoritative load signal (cannot be faked by an agent). */
32
+ loadAvg: number;
33
+ cpuCount: number;
34
+ /** OS-measured per-agent process footprint (ground truth). */
35
+ osSamples: OsProcessSample[];
36
+ /** Agent self-reports (session counts the OS can't directly see). */
37
+ agentReports: AgentSelfReport[];
38
+ /** Max allowed under-report before an agent is flagged. Default 0.20 (20%). */
39
+ loadReportDivergenceTolerance?: number;
40
+ }
41
+ export interface AgentLoadVerdict {
42
+ agentId: string;
43
+ status: 'ok' | 'suspect-overloaded';
44
+ reportedFootprintMB: number;
45
+ measuredFootprintMB: number;
46
+ /** Relative under-report: (measured - reported) / max(reported, 1). >tolerance ⇒ suspect. */
47
+ divergence: number;
48
+ /** Placement-weight multiplier — 1.0 for ok, reduced for a suspect agent. */
49
+ placementWeight: number;
50
+ }
51
+ export interface MachineLoadResult {
52
+ /** Authoritative OS load (always trustworthy — the machine read it itself). */
53
+ loadAvg: number;
54
+ /** Sum of ALL resident agents' reported sessions (the true machine session load). */
55
+ activeSessionCount: number;
56
+ /** False if any agent is suspect — the router should lean on `loadAvg` (OS truth)
57
+ * rather than `activeSessionCount` for this machine. */
58
+ sessionCountTrustworthy: boolean;
59
+ agentVerdicts: AgentLoadVerdict[];
60
+ suspectAgents: string[];
61
+ }
62
+ /**
63
+ * Compute the machine's shared load view from OS ground truth + agent self-reports.
64
+ * Accounts for ALL resident agents' sessions. Cross-checks each agent's claimed
65
+ * footprint against its OS-measured footprint; an agent measured to use materially
66
+ * MORE than it claims (the lie-idle case) is flagged `suspect-overloaded`. Pure.
67
+ */
68
+ export declare function computeMachineLoad(input: MachineLoadInput): MachineLoadResult;
69
+ export interface ResidentAgent {
70
+ agentId: string;
71
+ homeDir: string;
72
+ port: number;
73
+ identityFingerprint: string;
74
+ }
75
+ export type IsolationViolation = {
76
+ kind: 'duplicate-port';
77
+ port: number;
78
+ agents: string[];
79
+ } | {
80
+ kind: 'duplicate-fingerprint';
81
+ fingerprint: string;
82
+ agents: string[];
83
+ } | {
84
+ kind: 'nested-home';
85
+ outer: string;
86
+ inner: string;
87
+ };
88
+ /**
89
+ * Verify the L6 isolation invariant: resident agents never share a port or identity,
90
+ * and no agent's home dir is nested inside another's (which would let one read/write
91
+ * the other's state). Pure — returns the list of violations (empty = isolated).
92
+ */
93
+ export declare function checkAgentIsolation(agents: ResidentAgent[]): IsolationViolation[];
94
+ //# sourceMappingURL=MachineLoadBroker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MachineLoadBroker.d.ts","sourceRoot":"","sources":["../../src/core/MachineLoadBroker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB,EAAE,MAAM,CAAC;IAC7B,uDAAuD;IACvD,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe;IAC9B,sFAAsF;IACtF,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,qFAAqF;IACrF,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,qEAAqE;IACrE,YAAY,EAAE,eAAe,EAAE,CAAC;IAChC,+EAA+E;IAC/E,6BAA6B,CAAC,EAAE,MAAM,CAAC;CACxC;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,IAAI,GAAG,oBAAoB,CAAC;IACpC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,6FAA6F;IAC7F,UAAU,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,+EAA+E;IAC/E,OAAO,EAAE,MAAM,CAAC;IAChB,qFAAqF;IACrF,kBAAkB,EAAE,MAAM,CAAC;IAC3B;6DACyD;IACzD,uBAAuB,EAAE,OAAO,CAAC;IACjC,aAAa,EAAE,gBAAgB,EAAE,CAAC;IAClC,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAID;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,CAkC7E;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,MAAM,kBAAkB,GAC1B;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,GAC1D;IAAE,IAAI,EAAE,uBAAuB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,GACxE;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1D;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,kBAAkB,EAAE,CAsBjF"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * MachineLoadBroker — the machine-local shared-load accounting for L6 (Multi-Agent-
3
+ * Per-Machine). Multiple instar agents share one machine; each agent's router must
4
+ * see the TRUE machine load, not just its own, so it won't pile sessions onto a
5
+ * machine another agent is already saturating.
6
+ *
7
+ * Critically, the broker does NOT trust agent self-reports for the authoritative
8
+ * number (Structure > Willpower — "no cross-agent trust required" only holds if an
9
+ * agent cannot lie itself idle). The MACHINE independently reads OS ground truth
10
+ * (loadavg, process footprint); agents report only their own session count + claimed
11
+ * footprint; the broker CROSS-CHECKS and, when an agent under-reports its footprint
12
+ * beyond `loadReportDivergenceTolerance`, marks it `suspect-overloaded`, reduces its
13
+ * placement weight, and escalates — so a lying agent cannot make itself look idle.
14
+ *
15
+ * Pure functions over their inputs — no I/O, no clock; the caller samples the OS.
16
+ */
17
+ const SUSPECT_PLACEMENT_WEIGHT = 0.1;
18
+ /**
19
+ * Compute the machine's shared load view from OS ground truth + agent self-reports.
20
+ * Accounts for ALL resident agents' sessions. Cross-checks each agent's claimed
21
+ * footprint against its OS-measured footprint; an agent measured to use materially
22
+ * MORE than it claims (the lie-idle case) is flagged `suspect-overloaded`. Pure.
23
+ */
24
+ export function computeMachineLoad(input) {
25
+ const tolerance = input.loadReportDivergenceTolerance ?? 0.20;
26
+ const measuredByAgent = new Map();
27
+ for (const s of input.osSamples) {
28
+ measuredByAgent.set(s.agentId, (measuredByAgent.get(s.agentId) ?? 0) + s.measuredFootprintMB);
29
+ }
30
+ const verdicts = input.agentReports.map((r) => {
31
+ const measured = measuredByAgent.get(r.agentId) ?? 0;
32
+ const denom = Math.max(r.reportedFootprintMB, 1);
33
+ const divergence = (measured - r.reportedFootprintMB) / denom;
34
+ // Only an UNDER-report (measured materially exceeds claimed) is dangerous — it lets
35
+ // an agent look idle while saturating the machine. Over-reporting is conservative.
36
+ const suspect = divergence > tolerance;
37
+ return {
38
+ agentId: r.agentId,
39
+ status: suspect ? 'suspect-overloaded' : 'ok',
40
+ reportedFootprintMB: r.reportedFootprintMB,
41
+ measuredFootprintMB: measured,
42
+ divergence,
43
+ placementWeight: suspect ? SUSPECT_PLACEMENT_WEIGHT : 1.0,
44
+ };
45
+ });
46
+ const suspectAgents = verdicts.filter((v) => v.status === 'suspect-overloaded').map((v) => v.agentId);
47
+ const activeSessionCount = input.agentReports.reduce((sum, r) => sum + Math.max(0, r.reportedSessionCount), 0);
48
+ return {
49
+ loadAvg: input.loadAvg,
50
+ activeSessionCount,
51
+ sessionCountTrustworthy: suspectAgents.length === 0,
52
+ agentVerdicts: verdicts,
53
+ suspectAgents,
54
+ };
55
+ }
56
+ /**
57
+ * Verify the L6 isolation invariant: resident agents never share a port or identity,
58
+ * and no agent's home dir is nested inside another's (which would let one read/write
59
+ * the other's state). Pure — returns the list of violations (empty = isolated).
60
+ */
61
+ export function checkAgentIsolation(agents) {
62
+ const violations = [];
63
+ const byPort = new Map();
64
+ const byFp = new Map();
65
+ for (const a of agents) {
66
+ byPort.set(a.port, [...(byPort.get(a.port) ?? []), a.agentId]);
67
+ byFp.set(a.identityFingerprint, [...(byFp.get(a.identityFingerprint) ?? []), a.agentId]);
68
+ }
69
+ for (const [port, ids] of byPort)
70
+ if (ids.length > 1)
71
+ violations.push({ kind: 'duplicate-port', port, agents: ids });
72
+ for (const [fingerprint, ids] of byFp)
73
+ if (ids.length > 1)
74
+ violations.push({ kind: 'duplicate-fingerprint', fingerprint, agents: ids });
75
+ const norm = (p) => (p.endsWith('/') ? p : p + '/');
76
+ for (const a of agents) {
77
+ for (const b of agents) {
78
+ if (a.agentId === b.agentId)
79
+ continue;
80
+ if (norm(b.homeDir).startsWith(norm(a.homeDir))) {
81
+ violations.push({ kind: 'nested-home', outer: a.homeDir, inner: b.homeDir });
82
+ }
83
+ }
84
+ }
85
+ return violations;
86
+ }
87
+ //# sourceMappingURL=MachineLoadBroker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MachineLoadBroker.js","sourceRoot":"","sources":["../../src/core/MachineLoadBroker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * MachinePoolRegistry — the live machine-pool view (Multi-Machine Session Pool
3
+ * §L2). Assembles a `MachineCapacity` per machine from the machine registry
4
+ * (nickname + hardware), MachineHeartbeat (liveness), `os` (load), and
5
+ * SessionManager diagnostics (sessions/memory), and runs the clock-skew
6
+ * quarantine FSM. It is the input to placement (§L4) and the data behind
7
+ * `GET /pool` + the Machines dashboard tab.
8
+ *
9
+ * Correctness rules from §L2 (do not weaken):
10
+ * - Liveness + placement freshness key on `routerReceivedAt` (the ROUTER's own
11
+ * clock at heartbeat arrival), NEVER the machine's self-reported timestamp —
12
+ * a fast-clocked machine must not appear fresher than it is.
13
+ * - A machine whose self-reported vs router-observed timestamps diverge beyond
14
+ * tolerance is quarantined via an explicit FSM (2-divergent-beats-out,
15
+ * 2-clean-beats-in), not silently degraded.
16
+ *
17
+ * The pure pieces (`captureHardware`, `clockSkewTransition`) are exported so they
18
+ * are unit-testable without I/O.
19
+ */
20
+ import type { ClockSkewStatus, MachineCapacity, MachineHardware } from './types.js';
21
+ /** Capture this machine's static hardware properties (§L2). */
22
+ export declare function captureHardware(instarVersion?: string): MachineHardware;
23
+ export interface ClockSkewFsmState {
24
+ status: ClockSkewStatus;
25
+ /** Consecutive in-tolerance beats since entering suspect-clock-removed (re-admit at 2). */
26
+ removedCleanCount: number;
27
+ }
28
+ export type ClockSkewSideEffect = 'none' | 'logged' | 'removed' | 'reset' | 're-admitted';
29
+ export declare const INITIAL_CLOCK_SKEW_STATE: ClockSkewFsmState;
30
+ /**
31
+ * Pure transition of the clock-skew FSM (§L2 transition table). `divergent` =
32
+ * `|selfReportedLastSeen − routerReceivedAt| > clockSkewToleranceMs` for this beat.
33
+ * Returns the next state + the side-effect the caller must enact (removal +
34
+ * Attention happen on 'removed'; re-admission on 're-admitted').
35
+ */
36
+ export declare function clockSkewTransition(current: ClockSkewFsmState, divergent: boolean): {
37
+ next: ClockSkewFsmState;
38
+ sideEffect: ClockSkewSideEffect;
39
+ };
40
+ /** Whether a machine in this clock-skew state may receive placement. */
41
+ export declare function isPlacementEligibleByClock(status: ClockSkewStatus): boolean;
42
+ /** A heartbeat observation handed to the registry (router-side). */
43
+ export interface HeartbeatObservation {
44
+ machineId: string;
45
+ /** The machine's own timestamp from its heartbeat (ISO) — advisory. */
46
+ selfReportedLastSeen?: string;
47
+ loadAvg?: number;
48
+ memPressure?: MachineCapacity['memPressure'];
49
+ activeSessionCount?: number;
50
+ maxSessions?: number;
51
+ }
52
+ export interface MachinePoolRegistryDeps {
53
+ /** Returns {machineId, nickname, hardware?, capabilities?} for every known machine. */
54
+ listMachines: () => Array<{
55
+ machineId: string;
56
+ nickname?: string;
57
+ hardware?: MachineHardware;
58
+ capabilities?: string[];
59
+ modelsAvailable?: string[];
60
+ agentsResident?: string[];
61
+ }>;
62
+ /** Clock-skew divergence tolerance (ms). */
63
+ clockSkewToleranceMs: number;
64
+ /** A machine is offline if (now − routerReceivedAt) ≥ this (ms). */
65
+ failoverThresholdMs: number;
66
+ /** Wall clock (injectable for tests). */
67
+ now?: () => number;
68
+ /** Fired when a machine is removed from placement for clock skew (Attention item). */
69
+ onClockQuarantine?: (machineId: string, reason: string) => void;
70
+ logger?: (msg: string) => void;
71
+ }
72
+ /**
73
+ * Tracks live per-machine state (router-observed timestamp + clock-skew FSM) and
74
+ * assembles the MachineCapacity list. In-memory; rebuilt from heartbeats — the
75
+ * durable machine identity/registry is the source of nickname/hardware.
76
+ */
77
+ export declare class MachinePoolRegistry {
78
+ private readonly d;
79
+ private readonly observed;
80
+ constructor(deps: MachinePoolRegistryDeps);
81
+ private now;
82
+ /** Record a heartbeat arrival: stamp router-clock receipt + run the clock-skew FSM. */
83
+ recordHeartbeat(obs: HeartbeatObservation): ClockSkewSideEffect;
84
+ /** Current clock-skew status for a machine (defaults to ok if unseen). */
85
+ clockSkewStatus(machineId: string): ClockSkewStatus;
86
+ /** Whether a machine is eligible for placement (online + clock ok). */
87
+ isPlacementEligible(machineId: string): boolean;
88
+ /** Assemble the MachineCapacity for one machine (null if unknown to the registry). */
89
+ getCapacity(machineId: string): MachineCapacity | null;
90
+ /** Assemble the full pool view (§L2) — the data behind GET /pool. */
91
+ getCapacities(): MachineCapacity[];
92
+ private assemble;
93
+ }
94
+ //# sourceMappingURL=MachinePoolRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MachinePoolRegistry.d.ts","sourceRoot":"","sources":["../../src/core/MachinePoolRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAIpF,+DAA+D;AAC/D,wBAAgB,eAAe,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,eAAe,CAWvE;AAID,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,eAAe,CAAC;IACxB,2FAA2F;IAC3F,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,MAAM,mBAAmB,GAC3B,MAAM,GACN,QAAQ,GACR,SAAS,GACT,OAAO,GACP,aAAa,CAAC;AAElB,eAAO,MAAM,wBAAwB,EAAE,iBAA0D,CAAC;AAElG;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,iBAAiB,EAC1B,SAAS,EAAE,OAAO,GACjB;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,UAAU,EAAE,mBAAmB,CAAA;CAAE,CAyB9D;AAED,wEAAwE;AACxE,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAE3E;AAID,oEAAoE;AACpE,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;IAC7C,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACtC,uFAAuF;IACvF,YAAY,EAAE,MAAM,KAAK,CAAC;QACxB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,eAAe,CAAC;QAC3B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;QAC3B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;KAC3B,CAAC,CAAC;IACH,4CAA4C;IAC5C,oBAAoB,EAAE,MAAM,CAAC;IAC7B,oEAAoE;IACpE,mBAAmB,EAAE,MAAM,CAAC;IAC5B,yCAAyC;IACzC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,sFAAsF;IACtF,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAChE,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AAED;;;;GAIG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,CAAC,CAA0B;IAC5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAGrB;gBAEQ,IAAI,EAAE,uBAAuB;IAIzC,OAAO,CAAC,GAAG;IAIX,uFAAuF;IACvF,eAAe,CAAC,GAAG,EAAE,oBAAoB,GAAG,mBAAmB;IAwB/D,0EAA0E;IAC1E,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe;IAInD,uEAAuE;IACvE,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAK/C,sFAAsF;IACtF,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAMtD,qEAAqE;IACrE,aAAa,IAAI,eAAe,EAAE;IAIlC,OAAO,CAAC,QAAQ;CA6BjB"}
@@ -0,0 +1,150 @@
1
+ /**
2
+ * MachinePoolRegistry — the live machine-pool view (Multi-Machine Session Pool
3
+ * §L2). Assembles a `MachineCapacity` per machine from the machine registry
4
+ * (nickname + hardware), MachineHeartbeat (liveness), `os` (load), and
5
+ * SessionManager diagnostics (sessions/memory), and runs the clock-skew
6
+ * quarantine FSM. It is the input to placement (§L4) and the data behind
7
+ * `GET /pool` + the Machines dashboard tab.
8
+ *
9
+ * Correctness rules from §L2 (do not weaken):
10
+ * - Liveness + placement freshness key on `routerReceivedAt` (the ROUTER's own
11
+ * clock at heartbeat arrival), NEVER the machine's self-reported timestamp —
12
+ * a fast-clocked machine must not appear fresher than it is.
13
+ * - A machine whose self-reported vs router-observed timestamps diverge beyond
14
+ * tolerance is quarantined via an explicit FSM (2-divergent-beats-out,
15
+ * 2-clean-beats-in), not silently degraded.
16
+ *
17
+ * The pure pieces (`captureHardware`, `clockSkewTransition`) are exported so they
18
+ * are unit-testable without I/O.
19
+ */
20
+ import os from 'node:os';
21
+ // ── Hardware capture (pure-ish: reads `os`, no other I/O) ────────────
22
+ /** Capture this machine's static hardware properties (§L2). */
23
+ export function captureHardware(instarVersion) {
24
+ const cpus = os.cpus();
25
+ return {
26
+ platform: os.platform(),
27
+ arch: os.arch(),
28
+ cpuModel: cpus[0]?.model?.trim() || 'unknown',
29
+ cpuCores: cpus.length,
30
+ totalMemBytes: os.totalmem(),
31
+ hostname: os.hostname(),
32
+ ...(instarVersion ? { instarVersion } : {}),
33
+ };
34
+ }
35
+ export const INITIAL_CLOCK_SKEW_STATE = { status: 'ok', removedCleanCount: 0 };
36
+ /**
37
+ * Pure transition of the clock-skew FSM (§L2 transition table). `divergent` =
38
+ * `|selfReportedLastSeen − routerReceivedAt| > clockSkewToleranceMs` for this beat.
39
+ * Returns the next state + the side-effect the caller must enact (removal +
40
+ * Attention happen on 'removed'; re-admission on 're-admitted').
41
+ */
42
+ export function clockSkewTransition(current, divergent) {
43
+ switch (current.status) {
44
+ case 'ok':
45
+ return divergent
46
+ ? { next: { status: 'divergence-detected-once', removedCleanCount: 0 }, sideEffect: 'logged' }
47
+ : { next: { status: 'ok', removedCleanCount: 0 }, sideEffect: 'none' };
48
+ case 'divergence-detected-once':
49
+ return divergent
50
+ ? { next: { status: 'suspect-clock-removed', removedCleanCount: 0 }, sideEffect: 'removed' }
51
+ : { next: { status: 'ok', removedCleanCount: 0 }, sideEffect: 'reset' };
52
+ case 'suspect-clock-removed':
53
+ if (divergent) {
54
+ return { next: { status: 'suspect-clock-removed', removedCleanCount: 0 }, sideEffect: 'none' };
55
+ }
56
+ // in-tolerance: re-admit only on the 2nd consecutive clean beat.
57
+ if (current.removedCleanCount + 1 >= 2) {
58
+ return { next: { status: 'ok', removedCleanCount: 0 }, sideEffect: 're-admitted' };
59
+ }
60
+ return {
61
+ next: { status: 'suspect-clock-removed', removedCleanCount: current.removedCleanCount + 1 },
62
+ sideEffect: 'none',
63
+ };
64
+ default:
65
+ return { next: INITIAL_CLOCK_SKEW_STATE, sideEffect: 'none' };
66
+ }
67
+ }
68
+ /** Whether a machine in this clock-skew state may receive placement. */
69
+ export function isPlacementEligibleByClock(status) {
70
+ return status !== 'suspect-clock-removed';
71
+ }
72
+ /**
73
+ * Tracks live per-machine state (router-observed timestamp + clock-skew FSM) and
74
+ * assembles the MachineCapacity list. In-memory; rebuilt from heartbeats — the
75
+ * durable machine identity/registry is the source of nickname/hardware.
76
+ */
77
+ export class MachinePoolRegistry {
78
+ d;
79
+ observed = new Map();
80
+ constructor(deps) {
81
+ this.d = deps;
82
+ }
83
+ now() {
84
+ return (this.d.now ?? Date.now)();
85
+ }
86
+ /** Record a heartbeat arrival: stamp router-clock receipt + run the clock-skew FSM. */
87
+ recordHeartbeat(obs) {
88
+ const nowMs = this.now();
89
+ const prev = this.observed.get(obs.machineId);
90
+ let divergent = false;
91
+ if (obs.selfReportedLastSeen) {
92
+ const selfMs = Date.parse(obs.selfReportedLastSeen);
93
+ if (Number.isFinite(selfMs)) {
94
+ divergent = Math.abs(selfMs - nowMs) > this.d.clockSkewToleranceMs;
95
+ }
96
+ }
97
+ const { next, sideEffect } = clockSkewTransition(prev?.skew ?? INITIAL_CLOCK_SKEW_STATE, divergent);
98
+ this.observed.set(obs.machineId, { routerReceivedAtMs: nowMs, obs, skew: next });
99
+ if (sideEffect === 'removed') {
100
+ this.d.onClockQuarantine?.(obs.machineId, `clock divergence > ${this.d.clockSkewToleranceMs}ms on 2 consecutive heartbeats — removed from placement`);
101
+ this.d.logger?.(`[pool] machine ${obs.machineId} clock-skew quarantined`);
102
+ }
103
+ else if (sideEffect === 're-admitted') {
104
+ this.d.logger?.(`[pool] machine ${obs.machineId} clock recovered — re-admitted to placement`);
105
+ }
106
+ return sideEffect;
107
+ }
108
+ /** Current clock-skew status for a machine (defaults to ok if unseen). */
109
+ clockSkewStatus(machineId) {
110
+ return this.observed.get(machineId)?.skew.status ?? 'ok';
111
+ }
112
+ /** Whether a machine is eligible for placement (online + clock ok). */
113
+ isPlacementEligible(machineId) {
114
+ const cap = this.getCapacity(machineId);
115
+ return !!cap && cap.online && isPlacementEligibleByClock(cap.clockSkewStatus);
116
+ }
117
+ /** Assemble the MachineCapacity for one machine (null if unknown to the registry). */
118
+ getCapacity(machineId) {
119
+ const known = this.d.listMachines().find((m) => m.machineId === machineId);
120
+ if (!known)
121
+ return null;
122
+ return this.assemble(known);
123
+ }
124
+ /** Assemble the full pool view (§L2) — the data behind GET /pool. */
125
+ getCapacities() {
126
+ return this.d.listMachines().map((m) => this.assemble(m));
127
+ }
128
+ assemble(known) {
129
+ const live = this.observed.get(known.machineId);
130
+ const nowMs = this.now();
131
+ const online = !!live && nowMs - live.routerReceivedAtMs < this.d.failoverThresholdMs;
132
+ return {
133
+ machineId: known.machineId,
134
+ nickname: known.nickname,
135
+ online,
136
+ selfReportedLastSeen: live?.obs.selfReportedLastSeen,
137
+ routerReceivedAt: live ? new Date(live.routerReceivedAtMs).toISOString() : undefined,
138
+ loadAvg: live?.obs.loadAvg,
139
+ memPressure: live?.obs.memPressure,
140
+ activeSessionCount: live?.obs.activeSessionCount,
141
+ maxSessions: live?.obs.maxSessions,
142
+ capabilities: known.capabilities,
143
+ modelsAvailable: known.modelsAvailable,
144
+ agentsResident: known.agentsResident,
145
+ hardware: known.hardware,
146
+ clockSkewStatus: live?.skew.status ?? 'ok',
147
+ };
148
+ }
149
+ }
150
+ //# sourceMappingURL=MachinePoolRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MachinePoolRegistry.js","sourceRoot":"","sources":["../../src/core/MachinePoolRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AAGzB,wEAAwE;AAExE,+DAA+D;AAC/D,MAAM,UAAU,eAAe,CAAC,aAAsB;IACpD,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;IACvB,OAAO;QACL,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE;QACvB,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE;QACf,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,SAAS;QAC7C,QAAQ,EAAE,IAAI,CAAC,MAAM;QACrB,aAAa,EAAE,EAAE,CAAC,QAAQ,EAAE;QAC5B,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE;QACvB,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5C,CAAC;AACJ,CAAC;AAiBD,MAAM,CAAC,MAAM,wBAAwB,GAAsB,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;AAElG;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAA0B,EAC1B,SAAkB;IAElB,QAAQ,OAAO,CAAC,MAAM,EAAE,CAAC;QACvB,KAAK,IAAI;YACP,OAAO,SAAS;gBACd,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE;gBAC9F,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;QAC3E,KAAK,0BAA0B;YAC7B,OAAO,SAAS;gBACd,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE;gBAC5F,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;QAC5E,KAAK,uBAAuB;YAC1B,IAAI,SAAS,EAAE,CAAC;gBACd,OAAO,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;YACjG,CAAC;YACD,iEAAiE;YACjE,IAAI,OAAO,CAAC,iBAAiB,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvC,OAAO,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC;YACrF,CAAC;YACD,OAAO;gBACL,IAAI,EAAE,EAAE,MAAM,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,GAAG,CAAC,EAAE;gBAC3F,UAAU,EAAE,MAAM;aACnB,CAAC;QACJ;YACE,OAAO,EAAE,IAAI,EAAE,wBAAwB,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;IAClE,CAAC;AACH,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,0BAA0B,CAAC,MAAuB;IAChE,OAAO,MAAM,KAAK,uBAAuB,CAAC;AAC5C,CAAC;AAoCD;;;;GAIG;AACH,MAAM,OAAO,mBAAmB;IACb,CAAC,CAA0B;IAC3B,QAAQ,GAAG,IAAI,GAAG,EAGhC,CAAC;IAEJ,YAAY,IAA6B;QACvC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;IAChB,CAAC;IAEO,GAAG;QACT,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACpC,CAAC;IAED,uFAAuF;IACvF,eAAe,CAAC,GAAyB;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC9C,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,GAAG,CAAC,oBAAoB,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;YACpD,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC5B,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC;YACrE,CAAC;QACH,CAAC;QACD,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,mBAAmB,CAAC,IAAI,EAAE,IAAI,IAAI,wBAAwB,EAAE,SAAS,CAAC,CAAC;QACpG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACjF,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,IAAI,CAAC,CAAC,CAAC,iBAAiB,EAAE,CACxB,GAAG,CAAC,SAAS,EACb,sBAAsB,IAAI,CAAC,CAAC,CAAC,oBAAoB,yDAAyD,CAC3G,CAAC;YACF,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,kBAAkB,GAAG,CAAC,SAAS,yBAAyB,CAAC,CAAC;QAC5E,CAAC;aAAM,IAAI,UAAU,KAAK,aAAa,EAAE,CAAC;YACxC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,kBAAkB,GAAG,CAAC,SAAS,6CAA6C,CAAC,CAAC;QAChG,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,0EAA0E;IAC1E,eAAe,CAAC,SAAiB;QAC/B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC;IAC3D,CAAC;IAED,uEAAuE;IACvE,mBAAmB,CAAC,SAAiB;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QACxC,OAAO,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,IAAI,0BAA0B,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAChF,CAAC;IAED,sFAAsF;IACtF,WAAW,CAAC,SAAiB;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;QAC3E,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,qEAAqE;IACrE,aAAa;QACX,OAAO,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,CAAC;IAEO,QAAQ,CAAC,KAOhB;QACC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,MAAM,MAAM,GACV,CAAC,CAAC,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC;QACzE,OAAO;YACL,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,MAAM;YACN,oBAAoB,EAAE,IAAI,EAAE,GAAG,CAAC,oBAAoB;YACpD,gBAAgB,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS;YACpF,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO;YAC1B,WAAW,EAAE,IAAI,EAAE,GAAG,CAAC,WAAW;YAClC,kBAAkB,EAAE,IAAI,EAAE,GAAG,CAAC,kBAAkB;YAChD,WAAW,EAAE,IAAI,EAAE,GAAG,CAAC,WAAW;YAClC,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,eAAe,EAAE,KAAK,CAAC,eAAe;YACtC,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,eAAe,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI;SAC3C,CAAC;IACJ,CAAC;CACF"}