@songsid/agend 2.2.0-beta.3 → 2.2.0-beta.5
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/agent-cli.js +6 -2
- package/dist/agent-cli.js.map +1 -1
- package/dist/backend/claude-code.d.ts +46 -2
- package/dist/backend/claude-code.js +125 -31
- package/dist/backend/claude-code.js.map +1 -1
- package/dist/backend/credential-profile.d.ts +33 -3
- package/dist/backend/credential-profile.js +107 -5
- package/dist/backend/credential-profile.js.map +1 -1
- package/dist/backend/types.d.ts +1 -1
- package/dist/cache-service.d.ts +2 -0
- package/dist/cache-service.js +2 -1
- package/dist/cache-service.js.map +1 -1
- package/dist/channel/adapters/discord.d.ts +13 -0
- package/dist/channel/adapters/discord.js +42 -0
- package/dist/channel/adapters/discord.js.map +1 -1
- package/dist/channel/adapters/telegram.d.ts +6 -1
- package/dist/channel/adapters/telegram.js +27 -2
- package/dist/channel/adapters/telegram.js.map +1 -1
- package/dist/channel/types.d.ts +22 -1
- package/dist/cli.js +35 -0
- package/dist/cli.js.map +1 -1
- package/dist/config-validator.js +7 -0
- package/dist/config-validator.js.map +1 -1
- package/dist/daemon.d.ts +96 -0
- package/dist/daemon.js +339 -16
- package/dist/daemon.js.map +1 -1
- package/dist/delivery-outbox.d.ts +18 -5
- package/dist/delivery-outbox.js +121 -14
- package/dist/delivery-outbox.js.map +1 -1
- package/dist/fleet-context.d.ts +1 -0
- package/dist/fleet-manager.d.ts +89 -3
- package/dist/fleet-manager.js +541 -86
- package/dist/fleet-manager.js.map +1 -1
- package/dist/general-knowledge/skills/credential-profiles/SKILL.md +43 -10
- package/dist/host-memory.d.ts +10 -0
- package/dist/host-memory.js +33 -1
- package/dist/host-memory.js.map +1 -1
- package/dist/instance-lifecycle.d.ts +25 -6
- package/dist/instance-lifecycle.js +73 -26
- package/dist/instance-lifecycle.js.map +1 -1
- package/dist/locale.js +48 -18
- package/dist/locale.js.map +1 -1
- package/dist/login-controller.d.ts +20 -3
- package/dist/login-controller.js +71 -19
- package/dist/login-controller.js.map +1 -1
- package/dist/login-flows.d.ts +5 -2
- package/dist/login-flows.js +5 -4
- package/dist/login-flows.js.map +1 -1
- package/dist/memory-pressure.d.ts +13 -1
- package/dist/memory-pressure.js +50 -10
- package/dist/memory-pressure.js.map +1 -1
- package/dist/outbound-handlers.d.ts +61 -0
- package/dist/outbound-handlers.js +100 -35
- package/dist/outbound-handlers.js.map +1 -1
- package/dist/outbound-schemas.d.ts +1 -0
- package/dist/outbound-schemas.js +2 -0
- package/dist/outbound-schemas.js.map +1 -1
- package/dist/public-preview.d.ts +100 -0
- package/dist/public-preview.js +233 -0
- package/dist/public-preview.js.map +1 -0
- package/dist/public-web-gateway.js +6 -4
- package/dist/public-web-gateway.js.map +1 -1
- package/dist/public-web-link.d.ts +20 -0
- package/dist/public-web-link.js +26 -1
- package/dist/public-web-link.js.map +1 -1
- package/dist/restart-progress.d.ts +29 -0
- package/dist/restart-progress.js +23 -0
- package/dist/restart-progress.js.map +1 -1
- package/dist/settings-api.js +10 -4
- package/dist/settings-api.js.map +1 -1
- package/dist/spawn-gate.js +5 -1
- package/dist/spawn-gate.js.map +1 -1
- package/dist/spawn-hold-reply.d.ts +12 -0
- package/dist/spawn-hold-reply.js +39 -0
- package/dist/spawn-hold-reply.js.map +1 -0
- package/dist/topic-commands.js +9 -2
- package/dist/topic-commands.js.map +1 -1
- package/dist/tunnel/purpose-lane.d.ts +5 -1
- package/dist/tunnel/purpose-lane.js +14 -7
- package/dist/tunnel/purpose-lane.js.map +1 -1
- package/dist/turn-resume.d.ts +2 -0
- package/dist/turn-resume.js +1 -1
- package/dist/turn-resume.js.map +1 -1
- package/dist/types.d.ts +8 -0
- package/dist/ui/chat-mentions.js +63 -0
- package/dist/ui/chat-render.js +25 -0
- package/dist/ui/chat-strings.js +14 -2
- package/dist/ui/chat-thread.js +28 -10
- package/dist/ui/panel-chat.js +26 -11
- package/dist/ui/panel-details.js +2 -0
- package/dist/ui/panel-fleet.js +199 -57
- package/dist/ui/panel-needs.js +4 -3
- package/dist/ui/panel-settings.js +4 -2
- package/dist/ui/preview-panel.js +48 -14
- package/dist/ui/preview-status.js +28 -0
- package/dist/ui/preview.js +40 -3
- package/dist/ui/settings-token.js +1 -1
- package/dist/ui/shared/app-i18n.js +4 -0
- package/dist/ui/shared/app-prefs.js +1 -0
- package/dist/ui/shared/app-shell.js +146 -2
- package/dist/ui/shared/app-store.js +3 -1
- package/dist/ui/shared/app.css +47 -20
- package/dist/ui/shared/instance-nav.js +79 -23
- package/dist/ui/shared/view-strings.js +10 -0
- package/dist/unrecognised-prompt.d.ts +23 -0
- package/dist/unrecognised-prompt.js +74 -0
- package/dist/unrecognised-prompt.js.map +1 -0
- package/dist/update-install.d.ts +8 -0
- package/dist/update-install.js +9 -3
- package/dist/update-install.js.map +1 -1
- package/dist/update-marker.d.ts +40 -0
- package/dist/update-marker.js +49 -0
- package/dist/update-marker.js.map +1 -1
- package/dist/usage/i18n-keys.d.ts +1 -1
- package/dist/usage/i18n-keys.js +1 -1
- package/dist/usage/i18n-keys.js.map +1 -1
- package/dist/usage/providers.d.ts +34 -5
- package/dist/usage/providers.js +160 -27
- package/dist/usage/providers.js.map +1 -1
- package/dist/usage/statusline-usage.d.ts +6 -2
- package/dist/usage/statusline-usage.js +10 -4
- package/dist/usage/statusline-usage.js.map +1 -1
- package/dist/web-api.d.ts +20 -0
- package/dist/web-api.js +216 -30
- package/dist/web-api.js.map +1 -1
- package/dist/web-auth.js +3 -2
- package/dist/web-auth.js.map +1 -1
- package/dist/web-mentions.d.ts +44 -0
- package/dist/web-mentions.js +75 -0
- package/dist/web-mentions.js.map +1 -0
- package/dist/web-prefs.js +2 -0
- package/dist/web-prefs.js.map +1 -1
- package/dist/web-preview.d.ts +14 -1
- package/dist/web-preview.js +35 -13
- package/dist/web-preview.js.map +1 -1
- package/dist/web-schedules.d.ts +12 -0
- package/dist/web-schedules.js +34 -0
- package/dist/web-schedules.js.map +1 -0
- package/package.json +1 -1
package/dist/memory-pressure.js
CHANGED
|
@@ -4,6 +4,8 @@ import { platform } from "node:os";
|
|
|
4
4
|
const MiB = 1024 * 1024;
|
|
5
5
|
export const MEMORY_SAMPLE_MS = 30_000;
|
|
6
6
|
export const MEMORY_RECOVERY_MS = 30_000;
|
|
7
|
+
/** AgEnD policy, in percent; documented together in docs/memory-pressure.md. */
|
|
8
|
+
export const LINUX_PSI_THRESHOLDS = Object.freeze({ someAvg60Elevated: 10, fullAvg10Elevated: 5, fullAvg10Critical: 20 });
|
|
7
9
|
/** One fleet sampler/policy, shared by spawn admission and health. Linux reads stay synchronous; macOS uses a bounded async probe. */
|
|
8
10
|
export class MemoryPressure {
|
|
9
11
|
options;
|
|
@@ -22,13 +24,18 @@ export class MemoryPressure {
|
|
|
22
24
|
history = [];
|
|
23
25
|
listeners = new Set();
|
|
24
26
|
recoveryUntil = 0;
|
|
27
|
+
// A PSI level cannot arm RAM/swap release thresholds. Track actual triggers,
|
|
28
|
+
// including ones masked by simultaneous PSI, independently of the aggregate.
|
|
29
|
+
ramCriticalHeld = false;
|
|
30
|
+
ramLowHeld = false;
|
|
31
|
+
ramSwapHeld = false;
|
|
25
32
|
current = {
|
|
26
33
|
level: "unknown", memory: null, sampledAt: null, recovering: false, samples: 0, trend: null,
|
|
27
34
|
};
|
|
28
35
|
constructor(options = {}) {
|
|
29
36
|
this.options = options;
|
|
30
37
|
this.platform = options.platform ?? platform();
|
|
31
|
-
this.read = options.read ?? (() => readHostMemory({ platform: this.platform }));
|
|
38
|
+
this.read = options.read ?? (() => readHostMemory({ platform: this.platform, includePressure: this.platform === "linux" }));
|
|
32
39
|
this.now = options.now ?? Date.now;
|
|
33
40
|
this.monotonicNow = options.monotonicNow ?? (() => performance.now());
|
|
34
41
|
this.native = this.platform === "darwin" && !options.read ? options.darwinProbe ?? new DarwinMemoryProbe({ includePressure: true }) : null;
|
|
@@ -59,14 +66,17 @@ export class MemoryPressure {
|
|
|
59
66
|
return this.snapshot();
|
|
60
67
|
this.recoveryUntil = (this.platform === "darwin" ? this.monotonicNow() : this.now()) + MEMORY_RECOVERY_MS;
|
|
61
68
|
this.current = { ...this.current, recovering: true,
|
|
69
|
+
...(this.platform === "linux" && this.current.level === "normal" ? { signal: "recovery" } : {}),
|
|
62
70
|
level: this.current.level === "normal" ? "elevated" : this.current.level };
|
|
63
71
|
return this.snapshot();
|
|
64
72
|
}
|
|
65
73
|
/** Health readers cannot create samples or move recovery deadlines. */
|
|
66
74
|
snapshot() {
|
|
67
|
-
return { ...this.current, memory: this.current.memory && { ...this.current.memory
|
|
75
|
+
return { ...this.current, memory: this.current.memory && { ...this.current.memory,
|
|
76
|
+
...(this.current.memory.linuxPsi !== undefined ? { linuxPsi: this.current.memory.linuxPsi && { ...this.current.memory.linuxPsi } } : {}) },
|
|
77
|
+
trend: this.current.trend && { ...this.current.trend } };
|
|
68
78
|
}
|
|
69
|
-
/**
|
|
79
|
+
/** Only unknown Darwin kernel alarms bypass pressure admission; unavailable Linux PSI uses RAM fallback. */
|
|
70
80
|
advisoryOnly() {
|
|
71
81
|
return this.platform === "darwin" && this.current.level === "unknown";
|
|
72
82
|
}
|
|
@@ -134,6 +144,11 @@ export class MemoryPressure {
|
|
|
134
144
|
if (value && Number.isFinite(value.totalBytes) && value.totalBytes > 0
|
|
135
145
|
&& value.availableBytes !== null && Number.isFinite(value.availableBytes) && value.availableBytes >= 0 && value.availableBytes <= value.totalBytes) {
|
|
136
146
|
memory = { ...value, availableBytes: value.availableBytes };
|
|
147
|
+
if (value.linuxPsi !== undefined) {
|
|
148
|
+
const psi = value.linuxPsi;
|
|
149
|
+
memory.linuxPsi = psi && [psi.someAvg60, psi.fullAvg10].every(n => Number.isFinite(n) && n >= 0 && n <= 100)
|
|
150
|
+
? { ...psi } : null;
|
|
151
|
+
}
|
|
137
152
|
if (value.swapTotalBytes === null || value.swapFreeBytes === null
|
|
138
153
|
|| !Number.isFinite(value.swapTotalBytes) || !Number.isFinite(value.swapFreeBytes)
|
|
139
154
|
|| value.swapTotalBytes < 0 || value.swapFreeBytes < 0 || value.swapFreeBytes > value.swapTotalBytes) {
|
|
@@ -143,27 +158,50 @@ export class MemoryPressure {
|
|
|
143
158
|
}
|
|
144
159
|
catch { /* Unavailable data slows admissions; it cannot deadlock the fleet. */ }
|
|
145
160
|
let level = "unknown";
|
|
161
|
+
let signal = null;
|
|
146
162
|
if (memory) {
|
|
163
|
+
const linux = this.platform === "linux";
|
|
164
|
+
const psi = linux ? memory.linuxPsi : null;
|
|
147
165
|
const critical = Math.max(this.options.criticalBytes ?? 300 * MiB, memory.totalBytes * 0.02);
|
|
148
166
|
const low = Math.max(critical * 2, memory.totalBytes * 0.05);
|
|
149
167
|
const swapRatio = memory.swapTotalBytes && memory.swapFreeBytes !== null
|
|
150
168
|
? memory.swapFreeBytes / memory.swapTotalBytes : null;
|
|
151
169
|
const swapTight = swapRatio !== null && swapRatio <= 0.05;
|
|
152
|
-
const
|
|
170
|
+
const psiCritical = !!psi && psi.fullAvg10 >= LINUX_PSI_THRESHOLDS.fullAvg10Critical;
|
|
171
|
+
const psiFullElevated = !!psi && psi.fullAvg10 >= LINUX_PSI_THRESHOLDS.fullAvg10Elevated;
|
|
172
|
+
const psiSomeElevated = !!psi && psi.someAvg60 >= LINUX_PSI_THRESHOLDS.someAvg60Elevated;
|
|
173
|
+
const ramCritical = memory.availableKind === "available"
|
|
153
174
|
&& (memory.availableBytes < critical || (memory.availableBytes < low && swapTight));
|
|
175
|
+
const swapCanElevate = !linux || (!psi && memory.availableBytes < low * 2);
|
|
176
|
+
const swapLingering = swapCanElevate && swapRatio !== null && swapRatio <= 0.1;
|
|
177
|
+
if (linux) {
|
|
178
|
+
this.ramCriticalHeld = ramCritical || (this.ramCriticalHeld
|
|
179
|
+
&& memory.availableKind === "available" && memory.availableBytes < critical * 1.5);
|
|
180
|
+
this.ramLowHeld = memory.availableBytes < low || (this.ramLowHeld && memory.availableBytes < low * 1.2);
|
|
181
|
+
this.ramSwapHeld = (swapTight && swapCanElevate) || (this.ramSwapHeld && swapLingering);
|
|
182
|
+
}
|
|
183
|
+
const ramCriticalHold = linux ? this.ramCriticalHeld : ramCritical || (this.current.level === "critical"
|
|
184
|
+
&& memory.availableKind === "available" && memory.availableBytes < critical * 1.5);
|
|
185
|
+
const ramLowHold = linux ? this.ramLowHeld : memory.availableBytes < low
|
|
186
|
+
|| (this.current.level === "elevated" && memory.availableBytes < low * 1.2);
|
|
187
|
+
const ramSwapHold = linux ? this.ramSwapHeld : (swapTight && swapCanElevate)
|
|
188
|
+
|| (this.current.level === "elevated" && swapLingering);
|
|
154
189
|
// MemFree alone cannot distinguish healthy reclaimable cache from pressure.
|
|
155
190
|
// It can throttle, but must never impose an indefinite Linux procfs-failure hold.
|
|
156
|
-
if (
|
|
157
|
-
&& memory.availableKind === "available" && memory.availableBytes < critical * 1.5)) {
|
|
191
|
+
if (psiCritical || ramCriticalHold) {
|
|
158
192
|
level = "critical";
|
|
193
|
+
signal = psiCritical ? "psi-full" : memory.availableBytes < critical || !ramCritical ? "available" : "available-swap";
|
|
159
194
|
this.recoveryUntil = 0;
|
|
160
195
|
}
|
|
161
196
|
else {
|
|
162
197
|
if (this.current.level === "critical")
|
|
163
198
|
this.recoveryUntil = at + MEMORY_RECOVERY_MS;
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
199
|
+
// Cold swap is not pressure. Its fallback and release hysteresis need low RAM too.
|
|
200
|
+
level = psiFullElevated || psiSomeElevated || ramLowHold || ramSwapHold
|
|
201
|
+
|| at < this.recoveryUntil ? "elevated" : "normal";
|
|
202
|
+
if (level === "elevated")
|
|
203
|
+
signal = psiFullElevated ? "psi-full" : psiSomeElevated ? "psi-some"
|
|
204
|
+
: ramLowHold ? "available" : ramSwapHold ? "available-swap" : "recovery";
|
|
167
205
|
}
|
|
168
206
|
const last = this.history.at(-1);
|
|
169
207
|
// Admission bursts must not fill history with near-identical microsecond samples.
|
|
@@ -176,6 +214,7 @@ export class MemoryPressure {
|
|
|
176
214
|
else {
|
|
177
215
|
this.history = [];
|
|
178
216
|
this.recoveryUntil = 0;
|
|
217
|
+
this.ramCriticalHeld = this.ramLowHeld = this.ramSwapHeld = false;
|
|
179
218
|
}
|
|
180
219
|
let trend = null;
|
|
181
220
|
const first = this.history[0];
|
|
@@ -189,7 +228,8 @@ export class MemoryPressure {
|
|
|
189
228
|
? (last.memory.swapFreeBytes - first.memory.swapFreeBytes) / minutes : null,
|
|
190
229
|
};
|
|
191
230
|
}
|
|
192
|
-
this.current = { level, memory, sampledAt: at, recovering: at < this.recoveryUntil, samples: this.history.length, trend
|
|
231
|
+
this.current = { level, memory, sampledAt: at, recovering: at < this.recoveryUntil, samples: this.history.length, trend,
|
|
232
|
+
...(this.platform === "linux" ? { signal } : {}) };
|
|
193
233
|
if (this.timer) {
|
|
194
234
|
try {
|
|
195
235
|
this.options.onSample?.(this.snapshot());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-pressure.js","sourceRoot":"","sources":["../src/memory-pressure.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"memory-pressure.js","sourceRoot":"","sources":["../src/memory-pressure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAmB,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AA2BnC,MAAM,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;AACxB,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC;AACvC,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC;AACzC,gFAAgF;AAChF,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,iBAAiB,EAAE,EAAE,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,EAAE,EAAE,CAAC,CAAC;AAE1H,sIAAsI;AACtI,MAAM,OAAO,cAAc;IAyBI;IAxBpB,QAAQ,CAAkB;IAClB,IAAI,CAAmB;IACvB,MAAM,CAAkD;IACxD,YAAY,CAAe;IACpC,QAAQ,GAAkB,IAAI,CAAC;IAC/B,WAAW,GAAsB,IAAI,CAAC;IACtC,YAAY,GAA2C,IAAI,CAAC;IAC5D,KAAK,GAAG,CAAC,CAAC;IACV,OAAO,GAAG,KAAK,CAAC;IAChB,eAAe,GAAG,KAAK,CAAC;IACf,GAAG,CAAe;IAC3B,KAAK,GAA0C,IAAI,CAAC;IACpD,OAAO,GAA2E,EAAE,CAAC;IACrF,SAAS,GAAG,IAAI,GAAG,EAA8C,CAAC;IAClE,aAAa,GAAG,CAAC,CAAC;IAC1B,6EAA6E;IAC7E,6EAA6E;IACrE,eAAe,GAAG,KAAK,CAAC;IACxB,UAAU,GAAG,KAAK,CAAC;IACnB,WAAW,GAAG,KAAK,CAAC;IACpB,OAAO,GAA2B;QACxC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI;KAC5F,CAAC;IAEF,YAA6B,UAAmB,EAAE;QAArB,YAAO,GAAP,OAAO,CAAc;QAChD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,QAAQ,EAAE,CAAC;QAC/C,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,eAAe,EAAE,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC;QAC5H,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;QACnC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;QACtE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,IAAI,IAAI,iBAAiB,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7I,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO;QACvB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC,CAAC;QAChE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;QACrB,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAED,IAAI;QACF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;QACpB,IAAI,IAAI,CAAC,KAAK;YAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,4EAA4E;IAC5E,mBAAmB;QACjB,IAAI,IAAI,CAAC,YAAY,EAAE;YAAE,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChD,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,kBAAkB,CAAC;QAC1G,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI;YAChD,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,UAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxG,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC7E,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED,uEAAuE;IACvE,QAAQ;QACN,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM;gBAC/E,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;YAC1I,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;IAC7D,CAAC;IAED,4GAA4G;IAC5G,YAAY;QACV,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC;IACxE,CAAC;IAED,QAAQ,CAAC,QAAoD;QAC3D,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,6FAA6F;IAC7F,kBAAkB;QAChB,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;QACvC,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;QACzC,IAAI,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC,YAAY,CAAC;QAChD,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,QAAQ,GAAG,gBAAgB;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7H,8FAA8F;QAC9F,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC;IAEO,YAAY;QAClB,IAAI,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC,YAAY,CAAC;QAChD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;YACzC,IAAI,IAAI,CAAC,OAAO,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK;gBAAE,OAAO,IAAI,CAAC;YACtD,OAAO,IAAI,CAAC,MAAO,CAAC,IAAI,EAAE,CAAC;QAC7B,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACd,IAAI,IAAI,CAAC,OAAO,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK;gBAAE,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YACpC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC,EAAE,GAAG,EAAE;YACN,IAAI,IAAI,CAAC,OAAO,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK;gBAAE,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YACpC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,YAAY,KAAK,MAAM;YAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAClF,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;QAC3B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM;QACJ,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAAC,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC;YAAC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;QAAC,CAAC;QACzF,IAAI,KAAK,GAAsB,IAAI,CAAC;QACpC,IAAI,CAAC;YAAC,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,iCAAiC,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAEO,QAAQ,CAAC,KAAwB,EAAE,aAAa,GAAG,IAAI;QAC7D,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QACjF,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACtB,IAAI,MAAM,GAAqD,IAAI,CAAC;QACpE,IAAI,CAAC;YACH,IAAI,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC;mBACjE,KAAK,CAAC,cAAc,KAAK,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC,cAAc,IAAI,CAAC,IAAI,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;gBACrJ,MAAM,GAAG,EAAE,GAAG,KAAK,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC;gBAC5D,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;oBACjC,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC;oBAC3B,MAAM,CAAC,QAAQ,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;wBAC1G,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;gBACxB,CAAC;gBACD,IAAI,KAAK,CAAC,cAAc,KAAK,IAAI,IAAI,KAAK,CAAC,aAAa,KAAK,IAAI;uBAC5D,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC;uBAC/E,KAAK,CAAC,cAAc,GAAG,CAAC,IAAI,KAAK,CAAC,aAAa,GAAG,CAAC,IAAI,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;oBACvG,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC;gBACtD,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,sEAAsE,CAAC,CAAC;QAElF,IAAI,KAAK,GAAwB,SAAS,CAAC;QAC3C,IAAI,MAAM,GAAqC,IAAI,CAAC;QACpD,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC;YACxC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;YAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,GAAG,GAAG,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;YAC7F,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;YAC7D,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,aAAa,KAAK,IAAI;gBACtE,CAAC,CAAC,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC;YACxD,MAAM,SAAS,GAAG,SAAS,KAAK,IAAI,IAAI,SAAS,IAAI,IAAI,CAAC;YAC1D,MAAM,WAAW,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,IAAI,oBAAoB,CAAC,iBAAiB,CAAC;YACrF,MAAM,eAAe,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,IAAI,oBAAoB,CAAC,iBAAiB,CAAC;YACzF,MAAM,eAAe,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,IAAI,oBAAoB,CAAC,iBAAiB,CAAC;YACzF,MAAM,WAAW,GAAG,MAAM,CAAC,aAAa,KAAK,WAAW;mBACnD,CAAC,MAAM,CAAC,cAAc,GAAG,QAAQ,IAAI,CAAC,MAAM,CAAC,cAAc,GAAG,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC;YACtF,MAAM,cAAc,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,cAAc,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;YAC3E,MAAM,aAAa,GAAG,cAAc,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,IAAI,GAAG,CAAC;YAC/E,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,CAAC,eAAe,GAAG,WAAW,IAAI,CAAC,IAAI,CAAC,eAAe;uBACtD,MAAM,CAAC,aAAa,KAAK,WAAW,IAAI,MAAM,CAAC,cAAc,GAAG,QAAQ,GAAG,GAAG,CAAC,CAAC;gBACrF,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,cAAc,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,cAAc,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;gBACxG,IAAI,CAAC,WAAW,GAAG,CAAC,SAAS,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,aAAa,CAAC,CAAC;YAC1F,CAAC;YACD,MAAM,eAAe,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,UAAU;mBACnG,MAAM,CAAC,aAAa,KAAK,WAAW,IAAI,MAAM,CAAC,cAAc,GAAG,QAAQ,GAAG,GAAG,CAAC,CAAC;YACrF,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,GAAG,GAAG;mBACnE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,UAAU,IAAI,MAAM,CAAC,cAAc,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;YAC9E,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,cAAc,CAAC;mBACvE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,UAAU,IAAI,aAAa,CAAC,CAAC;YAC1D,4EAA4E;YAC5E,kFAAkF;YAClF,IAAI,WAAW,IAAI,eAAe,EAAE,CAAC;gBACnC,KAAK,GAAG,UAAU,CAAC;gBACnB,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,GAAG,QAAQ,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC;gBACtH,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,UAAU;oBAAE,IAAI,CAAC,aAAa,GAAG,EAAE,GAAG,kBAAkB,CAAC;gBACpF,mFAAmF;gBACnF,KAAK,GAAG,eAAe,IAAI,eAAe,IAAI,UAAU,IAAI,WAAW;uBAClE,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC;gBACrD,IAAI,KAAK,KAAK,UAAU;oBAAE,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU;wBAC5F,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC;YAC7E,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACjC,kFAAkF;YAClF,IAAI,CAAC,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,gBAAgB,EAAE,CAAC;gBAC9C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;gBAClC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE;oBAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACrD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;YAClB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;YACvB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACpE,CAAC;QACD,IAAI,KAAK,GAAoC,IAAI,CAAC;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,IAAI,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,UAAU,KAAK,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACxG,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;YAC9C,KAAK,GAAG;gBACN,uBAAuB,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,OAAO;gBAC7F,sBAAsB,EAAE,KAAK,CAAC,MAAM,CAAC,aAAa,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,KAAK,IAAI;uBAC5F,KAAK,CAAC,MAAM,CAAC,cAAc,KAAK,IAAI,CAAC,MAAM,CAAC,cAAc;oBAC7D,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI;aAC9E,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK;YACrH,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACrD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,CAAC;gBAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,sDAAsD,CAAC,CAAC;QACpH,CAAC;QACD,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC;gBAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,sCAAsC,CAAC,CAAC;QACrF,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED,8FAA8F;IACtF,cAAc,CAAC,KAAwB,EAAE,aAAsB;QACrE,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACzD,MAAM,MAAM,GAAG,KAAK,EAAE,mBAAmB,CAAC;QAC1C,IAAI,KAAK,GAAwB,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7H,IAAI,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;aACnE,CAAC;YACJ,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,UAAU;gBAAE,IAAI,CAAC,aAAa,GAAG,WAAW,GAAG,kBAAkB,CAAC;YAC7F,IAAI,WAAW,GAAG,IAAI,CAAC,aAAa;gBAAE,KAAK,GAAG,UAAU,CAAC;QAC3D,CAAC;QACD,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3C,IAAI,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,UAAU,GAAG,CAAC;eACpE,MAAM,CAAC,aAAa,KAAK,WAAW,IAAI,MAAM,CAAC,cAAc,KAAK,IAAI;eACtE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,MAAM,CAAC,cAAc,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACxH,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,CAAC,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,gBAAgB,EAAE,CAAC;gBAC9C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;gBACxF,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE;oBAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACrD,CAAC;QACH,CAAC;;YAAM,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,IAAI,KAAK,GAAoC,IAAI,CAAC;QAClD,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,IAAI,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,UAAU,KAAK,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACxG,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;YAC9C,KAAK,GAAG,EAAE,uBAAuB,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,OAAO;gBACrG,sBAAsB,EAAE,KAAK,CAAC,MAAM,CAAC,aAAa,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,KAAK,IAAI;uBAC5F,KAAK,CAAC,MAAM,CAAC,cAAc,KAAK,IAAI,CAAC,MAAM,CAAC,cAAc;oBAC7D,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACpF,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,WAAW,GAAG,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;QACnI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,aAAa,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;gBAClE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;gBAC5B,IAAI,CAAC;oBAAC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,yCAAyC,CAAC,CAAC;YACrG,CAAC;YACD,IAAI,CAAC;gBAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,yCAAyC,CAAC,CAAC;QACvG,CAAC;QACD,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC;gBAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,sCAAsC,CAAC,CAAC;QACrF,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;CACF"}
|
|
@@ -128,5 +128,66 @@ export declare function setCrossInstanceRetryForTests(cfg: {
|
|
|
128
128
|
} | null): void;
|
|
129
129
|
/** Long enough for the relaunched CLI to be listening; matches replace_instance. */
|
|
130
130
|
export declare const PROFILE_HANDOVER_SETTLE_MS = 3000;
|
|
131
|
+
/**
|
|
132
|
+
* #1692: the one creation of a team — create_team (agents) and POST /ui/teams (the web) both come here. Members must be
|
|
133
|
+
* instances fleet.yaml defines (own keys; repeats dropped); an existing team is never overwritten (409); a name every
|
|
134
|
+
* object already has (`__proto__`, `constructor`, `toString`…) is not a team name. The team and its save are one: a
|
|
135
|
+
* save that throws removes it again (500).
|
|
136
|
+
*/
|
|
137
|
+
export declare function commitTeamCreate(fleetConfig: {
|
|
138
|
+
instances: Record<string, unknown>;
|
|
139
|
+
teams?: Record<string, {
|
|
140
|
+
members: string[];
|
|
141
|
+
description?: string;
|
|
142
|
+
}>;
|
|
143
|
+
} | null, args: {
|
|
144
|
+
name: string;
|
|
145
|
+
members: string[];
|
|
146
|
+
description?: string;
|
|
147
|
+
}, save: () => void): {
|
|
148
|
+
ok: true;
|
|
149
|
+
result: {
|
|
150
|
+
created: string;
|
|
151
|
+
members: string[];
|
|
152
|
+
};
|
|
153
|
+
} | {
|
|
154
|
+
ok: false;
|
|
155
|
+
status: 400 | 409 | 500;
|
|
156
|
+
error: string;
|
|
157
|
+
};
|
|
158
|
+
/**
|
|
159
|
+
* #1689: the one update of a team — update_team (agents) and PATCH /ui/teams/<name> (the web) both come here. Own keys
|
|
160
|
+
* only: a team or an instance is one fleet.yaml defines (`__proto__` and `constructor` are not); nothing changes unless
|
|
161
|
+
* everything is valid. `description`: "" clears it. Renaming is not an update (the org chart and agents name teams).
|
|
162
|
+
* The caller saves fleet.yaml after an ok.
|
|
163
|
+
*/
|
|
164
|
+
export declare function applyTeamUpdate(fleetConfig: {
|
|
165
|
+
instances: Record<string, unknown>;
|
|
166
|
+
teams?: Record<string, {
|
|
167
|
+
members: string[];
|
|
168
|
+
description?: string;
|
|
169
|
+
}>;
|
|
170
|
+
} | null, args: {
|
|
171
|
+
name: string;
|
|
172
|
+
add?: string[];
|
|
173
|
+
remove?: string[];
|
|
174
|
+
description?: string;
|
|
175
|
+
}): {
|
|
176
|
+
ok: true;
|
|
177
|
+
result: {
|
|
178
|
+
name: string;
|
|
179
|
+
members: string[];
|
|
180
|
+
description: string | null;
|
|
181
|
+
};
|
|
182
|
+
} | {
|
|
183
|
+
ok: false;
|
|
184
|
+
status: 400 | 404 | 500;
|
|
185
|
+
error: string;
|
|
186
|
+
};
|
|
187
|
+
/**
|
|
188
|
+
* #1689 review: the update and its save as one — a save that fails (an I/O error) puts the team back as it was, so the
|
|
189
|
+
* live fleet never differs from fleet.yaml; that is a 500 (the input was fine), not a 400.
|
|
190
|
+
*/
|
|
191
|
+
export declare function commitTeamUpdate(fleetConfig: Parameters<typeof applyTeamUpdate>[0], args: Parameters<typeof applyTeamUpdate>[1], save: () => void): ReturnType<typeof applyTeamUpdate>;
|
|
131
192
|
export declare const outboundHandlers: Map<string, Handler>;
|
|
132
193
|
export {};
|
|
@@ -11,7 +11,7 @@ import { truncatePreview } from "./channel/markdown-chunk.js";
|
|
|
11
11
|
import { crossInstanceVisibility, senderTopicNotice, targetTopicNotice } from "./cross-instance-notice.js";
|
|
12
12
|
import { instanceSupportsSteer } from "./steer-capability.js";
|
|
13
13
|
import { assignDisplayLabels, displayInstanceName, readStatuslineModel } from "./topic-commands.js";
|
|
14
|
-
import { credentialProfileLogin, credentialSwitchStartsFresh, instanceCredentialProfile } from "./backend/credential-profile.js";
|
|
14
|
+
import { CHAT_PROFILE_LOGIN_BACKENDS, credentialProfileLogin, credentialSwitchStartsFresh, instanceCredentialProfile } from "./backend/credential-profile.js";
|
|
15
15
|
import { kiroEngineCandidates, kiroEngineStatus } from "./kiro-engine-status.js";
|
|
16
16
|
import { formatCrossInstanceInboundMessage, MAX_ASSEMBLED_CROSS_INSTANCE_MESSAGE_BYTES, } from "./cross-instance-envelope.js";
|
|
17
17
|
import { BroadcastArgs, CreateInstanceArgs, CreateTeamArgs, DelegateTaskArgs, DeleteInstanceArgs, DeleteTeamArgs, DeployTemplateArgs, DescribeInstanceArgs, ListDeploymentsArgs, ListInstancesArgs, ListTeamsArgs, ReplaceInstanceArgs, ReportResultArgs, DeliveryStatusArgs, RequestInformationArgs, RestartInstanceArgs, SendToInstanceArgs, PauseInstanceArgs, WakeInstanceArgs, StopInstanceArgs, GetInstanceLogsArgs, GetEffortArgs, KiroEngineStatusArgs, GetUsageArgs, ListModelsArgs, GetFleetConfigArgs, UpdateInstanceConfigArgs, UpdateFleetDefaultsArgs, StartInstanceArgs, TeardownDeploymentArgs, UpdateTeamArgs, validateArgs, } from "./outbound-schemas.js";
|
|
@@ -1039,7 +1039,9 @@ const updateInstanceConfig = (ctx, rawArgs, respond) => {
|
|
|
1039
1039
|
const login = credentialProfileLogin(ctx.dataDir, backendAfter, profileAfter);
|
|
1040
1040
|
if (login.state === "signed-out") {
|
|
1041
1041
|
rollback();
|
|
1042
|
-
|
|
1042
|
+
// #1699 part 2: a claude-code profile can also be signed in from chat, in the browser terminal.
|
|
1043
|
+
const fromChat = CHAT_PROFILE_LOGIN_BACKENDS.has(backendAfter) ? `\n or from chat: /login ${backendAfter} ${profileAfter}` : "";
|
|
1044
|
+
respond(null, `Rejected: credential profile "${profileAfter}" has no ${backendAfter} login yet, and switching to it would leave the agent waiting at a sign-in prompt. Log it in first:\n ${login.loginCommand}${fromChat}`);
|
|
1043
1045
|
return;
|
|
1044
1046
|
}
|
|
1045
1047
|
}
|
|
@@ -1414,30 +1416,50 @@ const broadcast = async (ctx, rawArgs, respond, meta) => {
|
|
|
1414
1416
|
});
|
|
1415
1417
|
};
|
|
1416
1418
|
// ── Teams ────────────────────────────────────────────────────────────────
|
|
1419
|
+
/**
|
|
1420
|
+
* #1692: the one creation of a team — create_team (agents) and POST /ui/teams (the web) both come here. Members must be
|
|
1421
|
+
* instances fleet.yaml defines (own keys; repeats dropped); an existing team is never overwritten (409); a name every
|
|
1422
|
+
* object already has (`__proto__`, `constructor`, `toString`…) is not a team name. The team and its save are one: a
|
|
1423
|
+
* save that throws removes it again (500).
|
|
1424
|
+
*/
|
|
1425
|
+
export function commitTeamCreate(fleetConfig, args, save) {
|
|
1426
|
+
if (!fleetConfig)
|
|
1427
|
+
return { ok: false, status: 500, error: "Fleet config not available" };
|
|
1428
|
+
if (args.name in Object.prototype)
|
|
1429
|
+
return { ok: false, status: 400, error: `Invalid team name: ${args.name}` };
|
|
1430
|
+
const invalid = args.members.filter(m => !Object.hasOwn(fleetConfig.instances, m));
|
|
1431
|
+
if (invalid.length)
|
|
1432
|
+
return { ok: false, status: 400, error: `Invalid instance names: ${invalid.join(", ")}` };
|
|
1433
|
+
if (fleetConfig.teams && Object.hasOwn(fleetConfig.teams, args.name))
|
|
1434
|
+
return { ok: false, status: 409, error: `Team already exists: ${args.name}` };
|
|
1435
|
+
const createdMap = !fleetConfig.teams;
|
|
1436
|
+
const teams = (fleetConfig.teams ??= {});
|
|
1437
|
+
const members = [...new Set(args.members)];
|
|
1438
|
+
const description = args.description?.trim();
|
|
1439
|
+
teams[args.name] = { members, ...(description ? { description } : {}) };
|
|
1440
|
+
try {
|
|
1441
|
+
save();
|
|
1442
|
+
}
|
|
1443
|
+
catch (err) {
|
|
1444
|
+
delete teams[args.name];
|
|
1445
|
+
if (createdMap)
|
|
1446
|
+
delete fleetConfig.teams;
|
|
1447
|
+
return { ok: false, status: 500, error: `Saving fleet.yaml failed; no team was created: ${err?.message ?? String(err)}` };
|
|
1448
|
+
}
|
|
1449
|
+
return { ok: true, result: { created: args.name, members } };
|
|
1450
|
+
}
|
|
1417
1451
|
const createTeam = (ctx, rawArgs, respond) => {
|
|
1418
1452
|
const v = validateArgs(CreateTeamArgs, rawArgs, "create_team");
|
|
1419
1453
|
if (!v.ok) {
|
|
1420
1454
|
respond(null, v.error);
|
|
1421
1455
|
return;
|
|
1422
1456
|
}
|
|
1423
|
-
const
|
|
1424
|
-
if (!
|
|
1425
|
-
respond(null,
|
|
1426
|
-
return;
|
|
1427
|
-
}
|
|
1428
|
-
const invalid = members.filter(m => !ctx.fleetConfig.instances[m]);
|
|
1429
|
-
if (invalid.length) {
|
|
1430
|
-
respond(null, `Invalid instance names: ${invalid.join(", ")}`);
|
|
1457
|
+
const r = commitTeamCreate(ctx.fleetConfig, v.data, () => ctx.saveFleetConfig());
|
|
1458
|
+
if (!r.ok) {
|
|
1459
|
+
respond(null, r.error);
|
|
1431
1460
|
return;
|
|
1432
1461
|
}
|
|
1433
|
-
|
|
1434
|
-
if (ctx.fleetConfig.teams[name]) {
|
|
1435
|
-
respond(null, `Team already exists: ${name}`);
|
|
1436
|
-
return;
|
|
1437
|
-
}
|
|
1438
|
-
ctx.fleetConfig.teams[name] = { members, ...(description ? { description } : {}) };
|
|
1439
|
-
ctx.saveFleetConfig();
|
|
1440
|
-
respond({ created: name, members });
|
|
1462
|
+
respond(r.result);
|
|
1441
1463
|
};
|
|
1442
1464
|
const deleteTeam = (ctx, rawArgs, respond) => {
|
|
1443
1465
|
const v = validateArgs(DeleteTeamArgs, rawArgs, "delete_team");
|
|
@@ -1471,31 +1493,74 @@ const listTeams = (ctx, rawArgs, respond) => {
|
|
|
1471
1493
|
}));
|
|
1472
1494
|
respond(result);
|
|
1473
1495
|
};
|
|
1496
|
+
/**
|
|
1497
|
+
* #1689: the one update of a team — update_team (agents) and PATCH /ui/teams/<name> (the web) both come here. Own keys
|
|
1498
|
+
* only: a team or an instance is one fleet.yaml defines (`__proto__` and `constructor` are not); nothing changes unless
|
|
1499
|
+
* everything is valid. `description`: "" clears it. Renaming is not an update (the org chart and agents name teams).
|
|
1500
|
+
* The caller saves fleet.yaml after an ok.
|
|
1501
|
+
*/
|
|
1502
|
+
export function applyTeamUpdate(fleetConfig, args) {
|
|
1503
|
+
if (!fleetConfig)
|
|
1504
|
+
return { ok: false, status: 500, error: "Fleet config not available" };
|
|
1505
|
+
const teams = fleetConfig.teams;
|
|
1506
|
+
if (!teams || !Object.hasOwn(teams, args.name))
|
|
1507
|
+
return { ok: false, status: 404, error: `Team not found: ${args.name}` };
|
|
1508
|
+
const team = teams[args.name];
|
|
1509
|
+
const invalid = (args.add ?? []).filter(m => !Object.hasOwn(fleetConfig.instances, m));
|
|
1510
|
+
if (invalid.length)
|
|
1511
|
+
return { ok: false, status: 400, error: `Invalid instance names: ${invalid.join(", ")}` };
|
|
1512
|
+
let members = [...team.members];
|
|
1513
|
+
if (args.add?.length)
|
|
1514
|
+
members = [...new Set([...members, ...args.add])];
|
|
1515
|
+
if (args.remove?.length)
|
|
1516
|
+
members = members.filter(m => !args.remove.includes(m));
|
|
1517
|
+
team.members = members;
|
|
1518
|
+
if (args.description !== undefined) {
|
|
1519
|
+
if (args.description.trim())
|
|
1520
|
+
team.description = args.description.trim();
|
|
1521
|
+
else
|
|
1522
|
+
delete team.description;
|
|
1523
|
+
}
|
|
1524
|
+
return { ok: true, result: { name: args.name, members: team.members, description: team.description ?? null } };
|
|
1525
|
+
}
|
|
1526
|
+
/**
|
|
1527
|
+
* #1689 review: the update and its save as one — a save that fails (an I/O error) puts the team back as it was, so the
|
|
1528
|
+
* live fleet never differs from fleet.yaml; that is a 500 (the input was fine), not a 400.
|
|
1529
|
+
*/
|
|
1530
|
+
export function commitTeamUpdate(fleetConfig, args, save) {
|
|
1531
|
+
const teams = fleetConfig?.teams;
|
|
1532
|
+
const team = teams && Object.hasOwn(teams, args.name) ? teams[args.name] : null;
|
|
1533
|
+
const before = team ? { members: [...team.members], hadDescription: Object.hasOwn(team, "description"), description: team.description } : null;
|
|
1534
|
+
const r = applyTeamUpdate(fleetConfig, args);
|
|
1535
|
+
if (!r.ok)
|
|
1536
|
+
return r;
|
|
1537
|
+
try {
|
|
1538
|
+
save();
|
|
1539
|
+
}
|
|
1540
|
+
catch (err) {
|
|
1541
|
+
if (team && before) {
|
|
1542
|
+
team.members = before.members;
|
|
1543
|
+
if (before.hadDescription)
|
|
1544
|
+
team.description = before.description;
|
|
1545
|
+
else
|
|
1546
|
+
delete team.description;
|
|
1547
|
+
}
|
|
1548
|
+
return { ok: false, status: 500, error: `Saving fleet.yaml failed; the team is unchanged: ${err?.message ?? String(err)}` };
|
|
1549
|
+
}
|
|
1550
|
+
return r;
|
|
1551
|
+
}
|
|
1474
1552
|
const updateTeam = (ctx, rawArgs, respond) => {
|
|
1475
1553
|
const v = validateArgs(UpdateTeamArgs, rawArgs, "update_team");
|
|
1476
1554
|
if (!v.ok) {
|
|
1477
1555
|
respond(null, v.error);
|
|
1478
1556
|
return;
|
|
1479
1557
|
}
|
|
1480
|
-
const
|
|
1481
|
-
if (!
|
|
1482
|
-
respond(null,
|
|
1558
|
+
const r = commitTeamUpdate(ctx.fleetConfig, v.data, () => ctx.saveFleetConfig());
|
|
1559
|
+
if (!r.ok) {
|
|
1560
|
+
respond(null, r.error);
|
|
1483
1561
|
return;
|
|
1484
1562
|
}
|
|
1485
|
-
|
|
1486
|
-
if (add?.length) {
|
|
1487
|
-
const invalid = add.filter(m => !ctx.fleetConfig.instances[m]);
|
|
1488
|
-
if (invalid.length) {
|
|
1489
|
-
respond(null, `Invalid instance names: ${invalid.join(", ")}`);
|
|
1490
|
-
return;
|
|
1491
|
-
}
|
|
1492
|
-
team.members = [...new Set([...team.members, ...add])];
|
|
1493
|
-
}
|
|
1494
|
-
if (remove?.length) {
|
|
1495
|
-
team.members = team.members.filter(m => !remove.includes(m));
|
|
1496
|
-
}
|
|
1497
|
-
ctx.saveFleetConfig();
|
|
1498
|
-
respond({ name, members: team.members });
|
|
1563
|
+
respond(r.result);
|
|
1499
1564
|
};
|
|
1500
1565
|
// ── Fleet Templates ────────────────────────────────────────────────────
|
|
1501
1566
|
const deployTemplate = async (ctx, rawArgs, respond) => {
|