@songsid/agend 2.1.10 → 2.1.11-beta.2
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/backend/antigravity.js +3 -2
- package/dist/backend/antigravity.js.map +1 -1
- package/dist/backend/claude-code.d.ts +7 -0
- package/dist/backend/claude-code.js +107 -3
- package/dist/backend/claude-code.js.map +1 -1
- package/dist/backend/cli-env-probe-worker.js +2 -10
- package/dist/backend/cli-env-probe-worker.js.map +1 -1
- package/dist/backend/cli-env-probe.d.ts +14 -0
- package/dist/backend/cli-env-probe.js +13 -0
- package/dist/backend/cli-env-probe.js.map +1 -0
- package/dist/backend/codex-metadata.d.ts +14 -0
- package/dist/backend/codex-metadata.js +70 -0
- package/dist/backend/codex-metadata.js.map +1 -0
- package/dist/backend/codex.d.ts +1 -2
- package/dist/backend/codex.js +112 -65
- package/dist/backend/codex.js.map +1 -1
- package/dist/backend/effort-metadata.d.ts +32 -0
- package/dist/backend/effort-metadata.js +21 -0
- package/dist/backend/effort-metadata.js.map +1 -0
- package/dist/backend/grok.js +3 -2
- package/dist/backend/grok.js.map +1 -1
- package/dist/backend/kiro-engine-ledger.d.ts +36 -0
- package/dist/backend/kiro-engine-ledger.js +113 -0
- package/dist/backend/kiro-engine-ledger.js.map +1 -0
- package/dist/backend/kiro-kas-store.d.ts +11 -0
- package/dist/backend/kiro-kas-store.js +67 -0
- package/dist/backend/kiro-kas-store.js.map +1 -0
- package/dist/backend/kiro-v3-identity.d.ts +28 -0
- package/dist/backend/kiro-v3-identity.js +213 -0
- package/dist/backend/kiro-v3-identity.js.map +1 -0
- package/dist/backend/kiro.d.ts +10 -0
- package/dist/backend/kiro.js +53 -5
- package/dist/backend/kiro.js.map +1 -1
- package/dist/backend/muse.js +3 -2
- package/dist/backend/muse.js.map +1 -1
- package/dist/backend/opencode-permission.d.ts +49 -0
- package/dist/backend/opencode-permission.js +181 -0
- package/dist/backend/opencode-permission.js.map +1 -0
- package/dist/backend/opencode.d.ts +37 -4
- package/dist/backend/opencode.js +112 -25
- package/dist/backend/opencode.js.map +1 -1
- package/dist/backend/types.d.ts +29 -1
- package/dist/backend/types.js.map +1 -1
- package/dist/channel/adapters/discord.js +35 -26
- package/dist/channel/adapters/discord.js.map +1 -1
- package/dist/channel/ipc-bridge.d.ts +1 -0
- package/dist/channel/ipc-bridge.js +1 -1
- package/dist/channel/ipc-bridge.js.map +1 -1
- package/dist/channel/mcp-tools.js +2 -0
- package/dist/channel/mcp-tools.js.map +1 -1
- package/dist/cli.js +48 -6
- package/dist/cli.js.map +1 -1
- package/dist/command-table.d.ts +99 -0
- package/dist/command-table.js +125 -0
- package/dist/command-table.js.map +1 -0
- package/dist/config.js +1 -0
- package/dist/config.js.map +1 -1
- package/dist/daemon.d.ts +60 -0
- package/dist/daemon.js +274 -14
- package/dist/daemon.js.map +1 -1
- package/dist/delivery-outbox.d.ts +16 -0
- package/dist/delivery-outbox.js +55 -6
- package/dist/delivery-outbox.js.map +1 -1
- package/dist/doctor.d.ts +3 -1
- package/dist/doctor.js +11 -0
- package/dist/doctor.js.map +1 -1
- package/dist/e2e-isolation.d.ts +122 -0
- package/dist/e2e-isolation.js +386 -0
- package/dist/e2e-isolation.js.map +1 -0
- package/dist/fleet-context.d.ts +2 -2
- package/dist/fleet-control-audit.d.ts +83 -0
- package/dist/fleet-control-audit.js +195 -0
- package/dist/fleet-control-audit.js.map +1 -0
- package/dist/fleet-manager.d.ts +69 -35
- package/dist/fleet-manager.js +596 -845
- package/dist/fleet-manager.js.map +1 -1
- package/dist/full-restart.js +2 -1
- package/dist/full-restart.js.map +1 -1
- package/dist/general-knowledge/skills/fleet-config/SKILL.md +3 -2
- package/dist/general-knowledge/skills/kiro-engine-migration/SKILL.md +56 -0
- package/dist/host-memory.d.ts +16 -0
- package/dist/host-memory.js +32 -0
- package/dist/host-memory.js.map +1 -0
- package/dist/instance-lifecycle.d.ts +2 -0
- package/dist/instance-lifecycle.js +18 -1
- package/dist/instance-lifecycle.js.map +1 -1
- package/dist/kiro-engine-status.d.ts +71 -0
- package/dist/kiro-engine-status.js +68 -0
- package/dist/kiro-engine-status.js.map +1 -0
- package/dist/locale.js +72 -16
- package/dist/locale.js.map +1 -1
- package/dist/log-tail.d.ts +34 -0
- package/dist/log-tail.js +66 -0
- package/dist/log-tail.js.map +1 -0
- package/dist/logger.d.ts +15 -0
- package/dist/logger.js +89 -1
- package/dist/logger.js.map +1 -1
- package/dist/login-controller.d.ts +1 -3
- package/dist/login-controller.js +2 -6
- package/dist/login-controller.js.map +1 -1
- package/dist/login-flows.d.ts +0 -8
- package/dist/login-flows.js +11 -11
- package/dist/login-flows.js.map +1 -1
- package/dist/login-manager.d.ts +5 -20
- package/dist/login-manager.js +0 -53
- package/dist/login-manager.js.map +1 -1
- package/dist/login-window-lock.d.ts +1 -1
- package/dist/login-window-lock.js +1 -1
- package/dist/memory-pressure.d.ts +41 -0
- package/dist/memory-pressure.js +117 -0
- package/dist/memory-pressure.js.map +1 -0
- package/dist/outbound-handlers.js +16 -1
- package/dist/outbound-handlers.js.map +1 -1
- package/dist/outbound-schemas.d.ts +3 -0
- package/dist/outbound-schemas.js +3 -0
- package/dist/outbound-schemas.js.map +1 -1
- package/dist/paths.d.ts +19 -0
- package/dist/paths.js +18 -5
- package/dist/paths.js.map +1 -1
- package/dist/probe-worker-pool.d.ts +28 -0
- package/dist/probe-worker-pool.js +129 -0
- package/dist/probe-worker-pool.js.map +1 -0
- package/dist/resource-report.d.ts +31 -0
- package/dist/resource-report.js +209 -0
- package/dist/resource-report.js.map +1 -0
- package/dist/rollout-index.d.ts +66 -0
- package/dist/rollout-index.js +124 -0
- package/dist/rollout-index.js.map +1 -0
- package/dist/slash-authz.d.ts +50 -0
- package/dist/slash-authz.js +19 -0
- package/dist/slash-authz.js.map +1 -0
- package/dist/spawn-gate.d.ts +13 -1
- package/dist/spawn-gate.js +108 -39
- package/dist/spawn-gate.js.map +1 -1
- package/dist/storm-window.d.ts +42 -0
- package/dist/storm-window.js +84 -1
- package/dist/storm-window.js.map +1 -1
- package/dist/tool-permissions.js +4 -2
- package/dist/tool-permissions.js.map +1 -1
- package/dist/topic-commands.d.ts +29 -2
- package/dist/topic-commands.js +77 -21
- package/dist/topic-commands.js.map +1 -1
- package/dist/transcript-sources.d.ts +21 -4
- package/dist/transcript-sources.js +55 -41
- package/dist/transcript-sources.js.map +1 -1
- package/dist/types.d.ts +5 -1
- package/dist/ui/settings.html +14 -13
- package/dist/ui/web-terminal/terminal-input.js +69 -0
- package/dist/ui/web-terminal/terminal.css +6 -0
- package/dist/ui/web-terminal/terminal.html +9 -1
- package/dist/ui/web-terminal/terminal.js +31 -2
- package/dist/web-terminal-http.js +1 -0
- package/dist/web-terminal-http.js.map +1 -1
- package/package.json +1 -1
package/dist/login-manager.js
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import { extractLoginHint } from "./login-flows.js";
|
|
2
1
|
const POLL_INTERVAL_MS = 2_000;
|
|
3
|
-
const MENU_KEY_GAP_MS = 200;
|
|
4
2
|
export class LoginSession {
|
|
5
3
|
flow;
|
|
6
4
|
tmux;
|
|
@@ -10,8 +8,6 @@ export class LoginSession {
|
|
|
10
8
|
state = "starting";
|
|
11
9
|
pollTimer = null;
|
|
12
10
|
timeoutTimer = null;
|
|
13
|
-
sentUrl = null;
|
|
14
|
-
lastInputPrompt = null;
|
|
15
11
|
finished = false;
|
|
16
12
|
/** Single-flight teardown: every cancel/finish caller — and start() — joins this one promise. */
|
|
17
13
|
finishing = null;
|
|
@@ -66,31 +62,6 @@ export class LoginSession {
|
|
|
66
62
|
this.timeoutTimer.unref?.();
|
|
67
63
|
this.schedulePoll();
|
|
68
64
|
}
|
|
69
|
-
/** Admin picked menu option N: Down×N then Enter, matching the CLI selector. */
|
|
70
|
-
async selectMenuOption(index) {
|
|
71
|
-
if (this.state !== "menu" || !this.flow.menu)
|
|
72
|
-
return false;
|
|
73
|
-
if (!Number.isInteger(index) || index < 0 || index >= this.flow.menu.options.length)
|
|
74
|
-
return false;
|
|
75
|
-
this.state = "waiting";
|
|
76
|
-
for (let i = 0; i < index; i++) {
|
|
77
|
-
await this.tmux.sendSpecialKey("Down");
|
|
78
|
-
await delay(MENU_KEY_GAP_MS);
|
|
79
|
-
}
|
|
80
|
-
await this.tmux.sendSpecialKey("Enter");
|
|
81
|
-
return true;
|
|
82
|
-
}
|
|
83
|
-
/** Paste admin-supplied text (authorization code, start URL, region). */
|
|
84
|
-
async submitInput(text) {
|
|
85
|
-
if (this.state === "done")
|
|
86
|
-
return false;
|
|
87
|
-
// pasteText presses Enter itself; the retry Enter is for TUIs that swallow
|
|
88
|
-
// the first one, harmless for a line-input prompt.
|
|
89
|
-
const ok = await this.tmux.pasteText(text, { retryEnter: false });
|
|
90
|
-
if (ok && this.state === "input")
|
|
91
|
-
this.state = "waiting";
|
|
92
|
-
return ok;
|
|
93
|
-
}
|
|
94
65
|
async cancel(reason = "cancelled") {
|
|
95
66
|
await this.finish(false, reason);
|
|
96
67
|
}
|
|
@@ -125,27 +96,6 @@ export class LoginSession {
|
|
|
125
96
|
: `CLI exited with code ${status.exitCode}${tail ? ` — ${tail}` : ""}`);
|
|
126
97
|
return;
|
|
127
98
|
}
|
|
128
|
-
if (this.flow.menu && this.state === "starting" && this.flow.menu.promptPattern.test(pane)) {
|
|
129
|
-
this.state = "menu";
|
|
130
|
-
await this.events.onMenu(this.flow.menu.options);
|
|
131
|
-
}
|
|
132
|
-
const hint = extractLoginHint(pane, this.flow);
|
|
133
|
-
if (hint.url && hint.url !== this.sentUrl) {
|
|
134
|
-
this.sentUrl = hint.url;
|
|
135
|
-
if (this.state === "starting")
|
|
136
|
-
this.state = "waiting";
|
|
137
|
-
await this.events.onAuthHint(hint.url, hint.code);
|
|
138
|
-
}
|
|
139
|
-
if (this.flow.inputPrompt) {
|
|
140
|
-
const match = pane.match(this.flow.inputPrompt);
|
|
141
|
-
// Notify once per distinct prompt: "Enter Start URL" then "Enter Region"
|
|
142
|
-
// are two prompts, but a persistent "Paste code here" line is one.
|
|
143
|
-
if (match && match[0] !== this.lastInputPrompt) {
|
|
144
|
-
this.lastInputPrompt = match[0];
|
|
145
|
-
this.state = "input";
|
|
146
|
-
await this.events.onNeedInput(match[0]);
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
99
|
this.schedulePoll();
|
|
150
100
|
}
|
|
151
101
|
/** Remove whatever the startup may have created; true only when confirmed absent. */
|
|
@@ -185,7 +135,4 @@ export class LoginSession {
|
|
|
185
135
|
await this.events.onDone(cleanupFailed ? { ok, detail, cleanupFailed: true } : { ok, detail });
|
|
186
136
|
}
|
|
187
137
|
}
|
|
188
|
-
function delay(ms) {
|
|
189
|
-
return new Promise(resolve => setTimeout(resolve, ms));
|
|
190
|
-
}
|
|
191
138
|
//# sourceMappingURL=login-manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login-manager.js","sourceRoot":"","sources":["../src/login-manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"login-manager.js","sourceRoot":"","sources":["../src/login-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Fleet-wide "one login/install window at a time" reservation.
|
|
3
3
|
*
|
|
4
|
-
* Web login
|
|
4
|
+
* Web login and the install `/login` runs all share this lock. The
|
|
5
5
|
* claim is SYNCHRONOUS and must be taken before the caller's first await
|
|
6
6
|
* (auth pre-check, tmux ensureSession, …) — a check-then-await-then-claim
|
|
7
7
|
* sequence lets two concurrent starts both pass (sol B1, round 1).
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { type HostMemory } from "./host-memory.js";
|
|
2
|
+
export type MemoryPressureLevel = "normal" | "elevated" | "critical" | "unknown";
|
|
3
|
+
export interface MemoryPressureSnapshot {
|
|
4
|
+
level: MemoryPressureLevel;
|
|
5
|
+
memory: HostMemory | null;
|
|
6
|
+
sampledAt: number | null;
|
|
7
|
+
recovering: boolean;
|
|
8
|
+
samples: number;
|
|
9
|
+
/** Change per minute over the bounded observation window; negative means draining. */
|
|
10
|
+
trend: {
|
|
11
|
+
availableBytesPerMinute: number;
|
|
12
|
+
swapFreeBytesPerMinute: number | null;
|
|
13
|
+
} | null;
|
|
14
|
+
}
|
|
15
|
+
interface Options {
|
|
16
|
+
read?: () => HostMemory;
|
|
17
|
+
now?: () => number;
|
|
18
|
+
onSample?: (snapshot: MemoryPressureSnapshot) => void;
|
|
19
|
+
criticalBytes?: number;
|
|
20
|
+
}
|
|
21
|
+
export declare const MEMORY_SAMPLE_MS = 30000;
|
|
22
|
+
export declare const MEMORY_RECOVERY_MS = 30000;
|
|
23
|
+
/** One fleet sampler/policy, shared by spawn admission and health. No subprocesses. */
|
|
24
|
+
export declare class MemoryPressure {
|
|
25
|
+
private readonly options;
|
|
26
|
+
private readonly read;
|
|
27
|
+
private readonly now;
|
|
28
|
+
private timer;
|
|
29
|
+
private history;
|
|
30
|
+
private recoveryUntil;
|
|
31
|
+
private current;
|
|
32
|
+
constructor(options?: Options);
|
|
33
|
+
start(): void;
|
|
34
|
+
stop(): void;
|
|
35
|
+
/** Sampling may detect recovery before a long admission backoff expires. */
|
|
36
|
+
startRecoveryWindow(): MemoryPressureSnapshot;
|
|
37
|
+
/** Health readers cannot create samples or move recovery deadlines. */
|
|
38
|
+
snapshot(): MemoryPressureSnapshot;
|
|
39
|
+
sample(): MemoryPressureSnapshot;
|
|
40
|
+
}
|
|
41
|
+
export {};
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { readHostMemory } from "./host-memory.js";
|
|
2
|
+
const MiB = 1024 * 1024;
|
|
3
|
+
export const MEMORY_SAMPLE_MS = 30_000;
|
|
4
|
+
export const MEMORY_RECOVERY_MS = 30_000;
|
|
5
|
+
/** One fleet sampler/policy, shared by spawn admission and health. No subprocesses. */
|
|
6
|
+
export class MemoryPressure {
|
|
7
|
+
options;
|
|
8
|
+
read;
|
|
9
|
+
now;
|
|
10
|
+
timer = null;
|
|
11
|
+
history = [];
|
|
12
|
+
recoveryUntil = 0;
|
|
13
|
+
current = {
|
|
14
|
+
level: "unknown", memory: null, sampledAt: null, recovering: false, samples: 0, trend: null,
|
|
15
|
+
};
|
|
16
|
+
constructor(options = {}) {
|
|
17
|
+
this.options = options;
|
|
18
|
+
this.read = options.read ?? readHostMemory;
|
|
19
|
+
this.now = options.now ?? Date.now;
|
|
20
|
+
}
|
|
21
|
+
start() {
|
|
22
|
+
if (this.timer)
|
|
23
|
+
return;
|
|
24
|
+
this.timer = setInterval(() => this.sample(), MEMORY_SAMPLE_MS);
|
|
25
|
+
this.timer.unref?.();
|
|
26
|
+
this.sample();
|
|
27
|
+
}
|
|
28
|
+
stop() {
|
|
29
|
+
if (this.timer)
|
|
30
|
+
clearInterval(this.timer);
|
|
31
|
+
this.timer = null;
|
|
32
|
+
}
|
|
33
|
+
/** Sampling may detect recovery before a long admission backoff expires. */
|
|
34
|
+
startRecoveryWindow() {
|
|
35
|
+
this.recoveryUntil = this.now() + MEMORY_RECOVERY_MS;
|
|
36
|
+
this.current = { ...this.current, recovering: true,
|
|
37
|
+
level: this.current.level === "normal" ? "elevated" : this.current.level };
|
|
38
|
+
return this.snapshot();
|
|
39
|
+
}
|
|
40
|
+
/** Health readers cannot create samples or move recovery deadlines. */
|
|
41
|
+
snapshot() {
|
|
42
|
+
return { ...this.current, memory: this.current.memory && { ...this.current.memory }, trend: this.current.trend && { ...this.current.trend } };
|
|
43
|
+
}
|
|
44
|
+
sample() {
|
|
45
|
+
const at = this.now();
|
|
46
|
+
let memory = null;
|
|
47
|
+
try {
|
|
48
|
+
const value = this.read();
|
|
49
|
+
if (Number.isFinite(value.totalBytes) && value.totalBytes > 0
|
|
50
|
+
&& Number.isFinite(value.availableBytes) && value.availableBytes >= 0 && value.availableBytes <= value.totalBytes) {
|
|
51
|
+
memory = { ...value };
|
|
52
|
+
if (value.swapTotalBytes === null || value.swapFreeBytes === null
|
|
53
|
+
|| !Number.isFinite(value.swapTotalBytes) || !Number.isFinite(value.swapFreeBytes)
|
|
54
|
+
|| value.swapTotalBytes < 0 || value.swapFreeBytes < 0 || value.swapFreeBytes > value.swapTotalBytes) {
|
|
55
|
+
memory.swapTotalBytes = memory.swapFreeBytes = null;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
catch { /* Unavailable data slows admissions; it cannot deadlock the fleet. */ }
|
|
60
|
+
let level = "unknown";
|
|
61
|
+
if (memory) {
|
|
62
|
+
const critical = Math.max(this.options.criticalBytes ?? 300 * MiB, memory.totalBytes * 0.02);
|
|
63
|
+
const low = Math.max(critical * 2, memory.totalBytes * 0.05);
|
|
64
|
+
const swapRatio = memory.swapTotalBytes && memory.swapFreeBytes !== null
|
|
65
|
+
? memory.swapFreeBytes / memory.swapTotalBytes : null;
|
|
66
|
+
const swapTight = swapRatio !== null && swapRatio <= 0.05;
|
|
67
|
+
const criticalNow = memory.availableKind === "available"
|
|
68
|
+
&& (memory.availableBytes < critical || (memory.availableBytes < low && swapTight));
|
|
69
|
+
// MemFree alone cannot distinguish healthy reclaimable cache from pressure.
|
|
70
|
+
// It can throttle, but must never impose an indefinite Linux procfs-failure hold.
|
|
71
|
+
if (criticalNow || (this.current.level === "critical"
|
|
72
|
+
&& memory.availableKind === "available" && memory.availableBytes < critical * 1.5)) {
|
|
73
|
+
level = "critical";
|
|
74
|
+
this.recoveryUntil = 0;
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
if (this.current.level === "critical")
|
|
78
|
+
this.recoveryUntil = at + MEMORY_RECOVERY_MS;
|
|
79
|
+
const lingering = this.current.level === "elevated"
|
|
80
|
+
&& (memory.availableBytes < low * 1.2 || (swapRatio !== null && swapRatio <= 0.1));
|
|
81
|
+
level = memory.availableBytes < low || swapTight || lingering || at < this.recoveryUntil ? "elevated" : "normal";
|
|
82
|
+
}
|
|
83
|
+
const last = this.history.at(-1);
|
|
84
|
+
// Admission bursts must not fill history with near-identical microsecond samples.
|
|
85
|
+
if (!last || at - last.at >= MEMORY_SAMPLE_MS) {
|
|
86
|
+
this.history.push({ at, memory });
|
|
87
|
+
if (this.history.length > 12)
|
|
88
|
+
this.history.shift();
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
this.history = [];
|
|
93
|
+
this.recoveryUntil = 0;
|
|
94
|
+
}
|
|
95
|
+
let trend = null;
|
|
96
|
+
const first = this.history[0];
|
|
97
|
+
const last = this.history.at(-1);
|
|
98
|
+
if (first && last && last.at - first.at >= 60_000 && first.memory.totalBytes === last.memory.totalBytes) {
|
|
99
|
+
const minutes = (last.at - first.at) / 60_000;
|
|
100
|
+
trend = {
|
|
101
|
+
availableBytesPerMinute: (last.memory.availableBytes - first.memory.availableBytes) / minutes,
|
|
102
|
+
swapFreeBytesPerMinute: first.memory.swapFreeBytes !== null && last.memory.swapFreeBytes !== null
|
|
103
|
+
&& first.memory.swapTotalBytes === last.memory.swapTotalBytes
|
|
104
|
+
? (last.memory.swapFreeBytes - first.memory.swapFreeBytes) / minutes : null,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
this.current = { level, memory, sampledAt: at, recovering: at < this.recoveryUntil, samples: this.history.length, trend };
|
|
108
|
+
if (this.timer) {
|
|
109
|
+
try {
|
|
110
|
+
this.options.onSample?.(this.snapshot());
|
|
111
|
+
}
|
|
112
|
+
catch { /* Diagnostics must not break admission or polling. */ }
|
|
113
|
+
}
|
|
114
|
+
return this.snapshot();
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=memory-pressure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-pressure.js","sourceRoot":"","sources":["../src/memory-pressure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAmB,MAAM,kBAAkB,CAAC;AAoBnE,MAAM,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;AACxB,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC;AACvC,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAEzC,uFAAuF;AACvF,MAAM,OAAO,cAAc;IAUI;IATZ,IAAI,CAAmB;IACvB,GAAG,CAAe;IAC3B,KAAK,GAA0C,IAAI,CAAC;IACpD,OAAO,GAA8C,EAAE,CAAC;IACxD,aAAa,GAAG,CAAC,CAAC;IAClB,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,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,cAAc,CAAC;QAC3C,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;IACrC,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO;QACvB,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,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,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,kBAAkB,CAAC;QACrD,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI;YAChD,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,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;IAChJ,CAAC;IAED,MAAM;QACJ,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACtB,IAAI,MAAM,GAAsB,IAAI,CAAC;QACrC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC1B,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC;mBACxD,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC,cAAc,IAAI,CAAC,IAAI,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;gBACpH,MAAM,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;gBACtB,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,EAAE,CAAC;YACX,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,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,4EAA4E;YAC5E,kFAAkF;YAClF,IAAI,WAAW,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,UAAU;mBAChD,MAAM,CAAC,aAAa,KAAK,WAAW,IAAI,MAAM,CAAC,cAAc,GAAG,QAAQ,GAAG,GAAG,CAAC,EAAE,CAAC;gBACrF,KAAK,GAAG,UAAU,CAAC;gBACnB,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,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,UAAU;uBAC9C,CAAC,MAAM,CAAC,cAAc,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,KAAK,IAAI,IAAI,SAAS,IAAI,GAAG,CAAC,CAAC,CAAC;gBACrF,KAAK,GAAG,MAAM,CAAC,cAAc,GAAG,GAAG,IAAI,SAAS,IAAI,SAAS,IAAI,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC;YACnH,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;QACzB,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,EAAE,CAAC;QAC1H,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,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;CACF"}
|
|
@@ -10,8 +10,9 @@ import { truncatePreview } from "./channel/markdown-chunk.js";
|
|
|
10
10
|
import { backendSupportsSteer } from "./steer-capability.js";
|
|
11
11
|
import { readStatuslineModel } from "./topic-commands.js";
|
|
12
12
|
import { credentialProfileLogin, credentialSwitchStartsFresh, instanceCredentialProfile } from "./backend/credential-profile.js";
|
|
13
|
+
import { kiroEngineCandidates, kiroEngineStatus } from "./kiro-engine-status.js";
|
|
13
14
|
import { formatCrossInstanceInboundMessage, MAX_ASSEMBLED_CROSS_INSTANCE_MESSAGE_BYTES, } from "./cross-instance-envelope.js";
|
|
14
|
-
import { BroadcastArgs, CreateInstanceArgs, CreateTeamArgs, DelegateTaskArgs, DeleteInstanceArgs, DeleteTeamArgs, DeployTemplateArgs, DescribeInstanceArgs, ListDeploymentsArgs, ListInstancesArgs, ListTeamsArgs, ReplaceInstanceArgs, ReportResultArgs, DeliveryStatusArgs, RequestInformationArgs, RestartInstanceArgs, SendToInstanceArgs, PauseInstanceArgs, WakeInstanceArgs, StopInstanceArgs, GetInstanceLogsArgs, GetEffortArgs, GetUsageArgs, ListModelsArgs, GetFleetConfigArgs, UpdateInstanceConfigArgs, UpdateFleetDefaultsArgs, StartInstanceArgs, TeardownDeploymentArgs, UpdateTeamArgs, validateArgs, } from "./outbound-schemas.js";
|
|
15
|
+
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";
|
|
15
16
|
const HOME_DIR = homedir();
|
|
16
17
|
function formatByteSize(bytes) {
|
|
17
18
|
if (bytes < 1024)
|
|
@@ -730,6 +731,19 @@ const getFleetStatus = (ctx, rawArgs, respond) => {
|
|
|
730
731
|
const stopped = names.length - running - paused;
|
|
731
732
|
respond({ total: names.length, running, paused, stopped });
|
|
732
733
|
};
|
|
734
|
+
const kiroEngineStatusHandler = (ctx, rawArgs, respond) => {
|
|
735
|
+
const v = validateArgs(KiroEngineStatusArgs, rawArgs, "kiro_engine_status");
|
|
736
|
+
if (!v.ok) {
|
|
737
|
+
respond(null, v.error);
|
|
738
|
+
return;
|
|
739
|
+
}
|
|
740
|
+
const status = kiroEngineStatus(kiroEngineCandidates(ctx.fleetConfig, ctx.classicChannels), { name: v.data.name });
|
|
741
|
+
if (v.data.name && status.instances.length === 0) {
|
|
742
|
+
respond(null, `'${v.data.name}' is not a kiro-cli instance in this fleet`);
|
|
743
|
+
return;
|
|
744
|
+
}
|
|
745
|
+
respond(status);
|
|
746
|
+
};
|
|
733
747
|
const getEffort = (ctx, rawArgs, respond, meta) => {
|
|
734
748
|
const v = validateArgs(GetEffortArgs, rawArgs, "get_effort");
|
|
735
749
|
if (!v.ok) {
|
|
@@ -1700,6 +1714,7 @@ export const outboundHandlers = new Map([
|
|
|
1700
1714
|
["stop_instance", stopInstance],
|
|
1701
1715
|
["get_fleet_status", getFleetStatus],
|
|
1702
1716
|
["get_effort", getEffort],
|
|
1717
|
+
["kiro_engine_status", kiroEngineStatusHandler],
|
|
1703
1718
|
["get_usage", getUsage],
|
|
1704
1719
|
["list_models", listModels],
|
|
1705
1720
|
["get_instance_logs", getInstanceLogs],
|