itermbot 1.0.2 → 1.0.4
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/.github/workflows/ci.yml +15 -20
- package/.github/workflows/release.yml +32 -20
- package/README.md +11 -20
- package/cleanup-unused.patch +108 -0
- package/config/app.yaml +32 -13
- package/config/memory.yaml +38 -31
- package/config/model.yaml +33 -0
- package/config/skill.yaml +8 -0
- package/config/tool.yaml +50 -17
- package/config/tsconfig.json +4 -1
- package/dist/chat/builtin-commands.d.ts +8 -0
- package/dist/chat/builtin-commands.d.ts.map +1 -0
- package/dist/chat/builtin-commands.js +53 -0
- package/dist/chat/builtin-commands.js.map +1 -0
- package/dist/chat/progress.d.ts +3 -0
- package/dist/chat/progress.d.ts.map +1 -0
- package/dist/chat/progress.js +23 -0
- package/dist/chat/progress.js.map +1 -0
- package/dist/chat/response-safety.d.ts +8 -0
- package/dist/chat/response-safety.d.ts.map +1 -0
- package/dist/chat/response-safety.js +126 -0
- package/dist/chat/response-safety.js.map +1 -0
- package/dist/chat/step-display.d.ts +2 -0
- package/dist/chat/step-display.d.ts.map +1 -0
- package/dist/chat/step-display.js +50 -0
- package/dist/chat/step-display.js.map +1 -0
- package/dist/chat/tool-result.d.ts +4 -0
- package/dist/chat/tool-result.d.ts.map +1 -0
- package/dist/chat/tool-result.js +24 -0
- package/dist/chat/tool-result.js.map +1 -0
- package/dist/config.d.ts +11 -6
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +26 -12
- package/dist/config.js.map +1 -1
- package/dist/index.js +308 -151
- package/dist/index.js.map +1 -1
- package/dist/iterm/direct-command-router.d.ts +24 -0
- package/dist/iterm/direct-command-router.d.ts.map +1 -0
- package/dist/iterm/direct-command-router.js +213 -0
- package/dist/iterm/direct-command-router.js.map +1 -0
- package/dist/iterm/session-hint.d.ts +10 -0
- package/dist/iterm/session-hint.d.ts.map +1 -0
- package/dist/iterm/session-hint.js +43 -0
- package/dist/iterm/session-hint.js.map +1 -0
- package/dist/iterm/target-panel-policy.d.ts +12 -0
- package/dist/iterm/target-panel-policy.d.ts.map +1 -0
- package/dist/iterm/target-panel-policy.js +287 -0
- package/dist/iterm/target-panel-policy.js.map +1 -0
- package/dist/runtime/text-tool-call-recovery.d.ts +23 -0
- package/dist/runtime/text-tool-call-recovery.d.ts.map +1 -0
- package/dist/runtime/text-tool-call-recovery.js +211 -0
- package/dist/runtime/text-tool-call-recovery.js.map +1 -0
- package/dist/startup/colors.d.ts +37 -0
- package/dist/startup/colors.d.ts.map +1 -0
- package/dist/{startup-colors.js → startup/colors.js} +30 -15
- package/dist/startup/colors.js.map +1 -0
- package/dist/startup/diagnostics.d.ts +8 -0
- package/dist/startup/diagnostics.d.ts.map +1 -0
- package/dist/startup/diagnostics.js +18 -0
- package/dist/startup/diagnostics.js.map +1 -0
- package/dist/startup/os.d.ts +10 -0
- package/dist/startup/os.d.ts.map +1 -0
- package/dist/startup/os.js +67 -0
- package/dist/startup/os.js.map +1 -0
- package/dist/startup/ui.d.ts +11 -0
- package/dist/startup/ui.d.ts.map +1 -0
- package/dist/startup/ui.js +49 -0
- package/dist/startup/ui.js.map +1 -0
- package/package.json +23 -13
- package/scripts/internal-package-refs.mjs +158 -0
- package/scripts/patch-buildin-cache.sh +1 -4
- package/scripts/resolve-deps.js +5 -0
- package/scripts/test-llm.mjs +11 -5
- package/skills/gpu-ssh-monitor/SKILL.md +22 -3
- package/src/chat/builtin-commands.ts +70 -0
- package/src/chat/progress.ts +26 -0
- package/src/chat/response-safety.ts +134 -0
- package/src/chat/step-display.ts +54 -0
- package/src/chat/tool-result.ts +22 -0
- package/src/config.ts +48 -21
- package/src/index.ts +377 -167
- package/src/iterm/direct-command-router.ts +274 -0
- package/src/iterm/session-hint.ts +49 -0
- package/src/iterm/target-panel-policy.ts +341 -0
- package/src/runtime/text-tool-call-recovery.ts +257 -0
- package/src/{startup-colors.ts → startup/colors.ts} +42 -27
- package/src/startup/diagnostics.ts +25 -0
- package/src/startup/os.ts +63 -0
- package/src/startup/ui.ts +56 -0
- package/src/types/marked-terminal.d.ts +3 -0
- package/test/builtin-commands.test.mjs +50 -0
- package/test/chat-flow.integration.test.mjs +235 -0
- package/test/chat-progress.test.mjs +83 -0
- package/test/config.test.mjs +22 -0
- package/test/diagnostics.test.mjs +45 -0
- package/test/direct-command-router.test.mjs +149 -0
- package/test/live-iterm-llm.integration.test.mjs +153 -0
- package/test/response-safety.test.mjs +44 -0
- package/test/session-hint.test.mjs +78 -0
- package/test/startup-colors.test.mjs +145 -0
- package/test/target-panel-policy.test.mjs +180 -0
- package/test/tool-call-recovery.test.mjs +199 -0
- package/config/agent.yaml +0 -121
- package/config/models.yaml +0 -36
- package/config/skills.yaml +0 -4
- package/dist/agent.d.ts +0 -14
- package/dist/agent.d.ts.map +0 -1
- package/dist/agent.js +0 -16
- package/dist/agent.js.map +0 -1
- package/dist/context.d.ts +0 -12
- package/dist/context.d.ts.map +0 -1
- package/dist/context.js +0 -20
- package/dist/context.js.map +0 -1
- package/dist/session-hint.d.ts +0 -4
- package/dist/session-hint.d.ts.map +0 -1
- package/dist/session-hint.js +0 -25
- package/dist/session-hint.js.map +0 -1
- package/dist/startup-colors.d.ts +0 -26
- package/dist/startup-colors.d.ts.map +0 -1
- package/dist/startup-colors.js.map +0 -1
- package/dist/target-routing.d.ts +0 -15
- package/dist/target-routing.d.ts.map +0 -1
- package/dist/target-routing.js +0 -355
- package/dist/target-routing.js.map +0 -1
- package/src/agent.ts +0 -35
- package/src/context.ts +0 -35
- package/src/session-hint.ts +0 -28
- package/src/target-routing.ts +0 -419
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import { asRecord, normalizeToolList, shortToolName, } from "@easynet/agent-common/utils";
|
|
2
|
+
import { AgentContextTokens } from "@easynet/agent-common/context";
|
|
3
|
+
function normalizeToolInvokeResult(raw) {
|
|
4
|
+
return raw;
|
|
5
|
+
}
|
|
6
|
+
function stringifyToolResult(value) {
|
|
7
|
+
if (typeof value === "string")
|
|
8
|
+
return value;
|
|
9
|
+
try {
|
|
10
|
+
return JSON.stringify(value, null, 2);
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
return String(value);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
function collectToolObservationText(messages) {
|
|
17
|
+
if (!Array.isArray(messages))
|
|
18
|
+
return "";
|
|
19
|
+
const chunks = [];
|
|
20
|
+
for (const message of messages) {
|
|
21
|
+
const rec = asRecord(message);
|
|
22
|
+
if (!rec)
|
|
23
|
+
continue;
|
|
24
|
+
const type = typeof rec.type === "string" ? rec.type.toLowerCase() : "";
|
|
25
|
+
const role = typeof rec.role === "string" ? rec.role.toLowerCase() : "";
|
|
26
|
+
const isToolMessage = type.includes("tool") || role.includes("tool") || typeof rec.tool_call_id === "string";
|
|
27
|
+
if (!isToolMessage)
|
|
28
|
+
continue;
|
|
29
|
+
const content = rec.content;
|
|
30
|
+
if (typeof content === "string" && content.trim().length > 0) {
|
|
31
|
+
chunks.push(content.trim());
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
if (Array.isArray(content)) {
|
|
35
|
+
const joined = content
|
|
36
|
+
.map((part) => {
|
|
37
|
+
if (typeof part === "string")
|
|
38
|
+
return part;
|
|
39
|
+
const obj = asRecord(part);
|
|
40
|
+
return typeof obj?.text === "string" ? obj.text : "";
|
|
41
|
+
})
|
|
42
|
+
.join(" ")
|
|
43
|
+
.trim();
|
|
44
|
+
if (joined)
|
|
45
|
+
chunks.push(joined);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return chunks.join("\n");
|
|
49
|
+
}
|
|
50
|
+
function isToolLike(tool) {
|
|
51
|
+
return Boolean(tool
|
|
52
|
+
&& typeof tool === "object"
|
|
53
|
+
&& typeof tool.name === "string"
|
|
54
|
+
&& typeof tool.invoke === "function");
|
|
55
|
+
}
|
|
56
|
+
function extractToolCallPayload(text) {
|
|
57
|
+
const match = text.match(/<tool-call>\s*([\s\S]*?)\s*<\/tool-call>/i);
|
|
58
|
+
if (match?.[1]) {
|
|
59
|
+
try {
|
|
60
|
+
const parsed = JSON.parse(match[1]);
|
|
61
|
+
const name = typeof parsed.name === "string" ? parsed.name.trim() : "";
|
|
62
|
+
const args = asRecord(parsed.arguments) ?? {};
|
|
63
|
+
if (!name)
|
|
64
|
+
return null;
|
|
65
|
+
return { name, arguments: args };
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
const fnMatch = text.match(/<function=([^\s>]+)>([\s\S]*)/i);
|
|
72
|
+
if (!fnMatch?.[1])
|
|
73
|
+
return null;
|
|
74
|
+
const name = fnMatch[1].trim();
|
|
75
|
+
if (!name)
|
|
76
|
+
return null;
|
|
77
|
+
const tail = fnMatch[2] ?? "";
|
|
78
|
+
const args = {};
|
|
79
|
+
const paramRe = /<parameter=([^>]+)>\s*([\s\S]*?)(?=<parameter=[^>]+>|$)/gi;
|
|
80
|
+
for (const m of tail.matchAll(paramRe)) {
|
|
81
|
+
const key = (m[1] ?? "").trim();
|
|
82
|
+
const raw = (m[2] ?? "").trim();
|
|
83
|
+
if (!key || !raw)
|
|
84
|
+
continue;
|
|
85
|
+
if (/^-?\d+$/.test(raw)) {
|
|
86
|
+
args[key] = Number(raw);
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
args[key] = raw;
|
|
90
|
+
}
|
|
91
|
+
return { name, arguments: args };
|
|
92
|
+
}
|
|
93
|
+
function findToolByName(runtime, requestedName) {
|
|
94
|
+
const rawTools = runtime.context.get(AgentContextTokens.Tools);
|
|
95
|
+
const tools = normalizeToolList(rawTools, isToolLike);
|
|
96
|
+
if (tools.length === 0)
|
|
97
|
+
return null;
|
|
98
|
+
const exact = tools.find((tool) => shortToolName(tool.name) === requestedName);
|
|
99
|
+
if (exact)
|
|
100
|
+
return exact;
|
|
101
|
+
const contains = tools.find((tool) => tool.name.includes(requestedName));
|
|
102
|
+
return contains ?? null;
|
|
103
|
+
}
|
|
104
|
+
function buildRecoveredEvidence(raw) {
|
|
105
|
+
const root = asRecord(raw);
|
|
106
|
+
const result = asRecord(root?.result);
|
|
107
|
+
if (!result)
|
|
108
|
+
return "";
|
|
109
|
+
const blockedToolRaw = typeof result.blockedTool === "string" ? result.blockedTool : "";
|
|
110
|
+
const blockedTool = blockedToolRaw.split(".").pop() ?? blockedToolRaw;
|
|
111
|
+
const requestedPath = typeof result.requestedPath === "string" ? result.requestedPath : "";
|
|
112
|
+
const resolvedPath = typeof result.resolvedPath === "string" ? result.resolvedPath : "";
|
|
113
|
+
const pathFallbackUsed = typeof result.pathFallbackUsed === "boolean" ? result.pathFallbackUsed : false;
|
|
114
|
+
const outputRoot = asRecord(result.output);
|
|
115
|
+
const outputResult = asRecord(outputRoot?.result);
|
|
116
|
+
const outputText = typeof outputResult?.output === "string" ? outputResult.output : "";
|
|
117
|
+
if (blockedTool !== "listDir")
|
|
118
|
+
return "";
|
|
119
|
+
const listingLines = outputText
|
|
120
|
+
.split("\n")
|
|
121
|
+
.map((line) => line.trim())
|
|
122
|
+
.filter((line) => line.length > 0 && (line.startsWith("./") || line.startsWith("../") || line.startsWith("/")))
|
|
123
|
+
.slice(0, 120);
|
|
124
|
+
const parts = [
|
|
125
|
+
"Structured execution facts:",
|
|
126
|
+
`- blockedTool: ${blockedTool}`,
|
|
127
|
+
`- requestedPath: ${requestedPath || "(unknown)"}`,
|
|
128
|
+
`- resolvedPath: ${resolvedPath || requestedPath || "(unknown)"}`,
|
|
129
|
+
`- pathFallbackUsed: ${String(pathFallbackUsed)}`,
|
|
130
|
+
];
|
|
131
|
+
if (listingLines.length > 0) {
|
|
132
|
+
parts.push("- extractedListing:");
|
|
133
|
+
parts.push(listingLines.join("\n"));
|
|
134
|
+
}
|
|
135
|
+
return parts.join("\n");
|
|
136
|
+
}
|
|
137
|
+
function formatStepNumber(stepNumber) {
|
|
138
|
+
return String(Math.max(0, stepNumber)).padStart(2, "0");
|
|
139
|
+
}
|
|
140
|
+
function writeStepRunStart(writer, label) {
|
|
141
|
+
writer("");
|
|
142
|
+
writer(`=== Steps: ${label} ===`);
|
|
143
|
+
return Date.now();
|
|
144
|
+
}
|
|
145
|
+
function writeStepStart(writer, stepNumber, action) {
|
|
146
|
+
writer(`[${formatStepNumber(stepNumber)}] ▶ ${action}`);
|
|
147
|
+
}
|
|
148
|
+
function writeStepDone(writer, stepNumber, action) {
|
|
149
|
+
writer(`[${formatStepNumber(stepNumber)}] ✓ ${action}`);
|
|
150
|
+
}
|
|
151
|
+
function writeStepProgress(writer, completed, total) {
|
|
152
|
+
writer(` progress ${completed}/${total}`);
|
|
153
|
+
}
|
|
154
|
+
function writeStepRunDone(writer, startedAtMs, steps) {
|
|
155
|
+
const elapsed = Math.max(0, Math.round(Date.now() - startedAtMs));
|
|
156
|
+
writer(`=== Steps complete: ${steps} step(s), ${elapsed}ms ===`);
|
|
157
|
+
writer("");
|
|
158
|
+
}
|
|
159
|
+
function formatRecoveredToolResult(payloadName, raw) {
|
|
160
|
+
const recoveredEvidence = buildRecoveredEvidence(raw);
|
|
161
|
+
if (recoveredEvidence) {
|
|
162
|
+
return [
|
|
163
|
+
"### Recovered Tool Result",
|
|
164
|
+
`- Tool: \`${payloadName}\``,
|
|
165
|
+
"",
|
|
166
|
+
recoveredEvidence,
|
|
167
|
+
].join("\n");
|
|
168
|
+
}
|
|
169
|
+
return stringifyToolResult(raw);
|
|
170
|
+
}
|
|
171
|
+
function mergeTargetHintForItermTool(toolName, args, hint) {
|
|
172
|
+
if (!toolName.includes("itermRunCommandInSession"))
|
|
173
|
+
return args;
|
|
174
|
+
return {
|
|
175
|
+
...args,
|
|
176
|
+
...(args.windowId == null && hint?.windowId != null ? { windowId: hint.windowId } : {}),
|
|
177
|
+
...(args.tabIndex == null && hint?.tabIndex != null ? { tabIndex: hint.tabIndex } : {}),
|
|
178
|
+
...(args.sessionId == null && hint?.sessionId ? { sessionId: hint.sessionId } : {}),
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
export async function runWithTextToolCallRecovery(runtime, userInput, writer = console.log, targetHint) {
|
|
182
|
+
const first = await runtime.run(userInput);
|
|
183
|
+
const firstText = (first.text ?? "").trim();
|
|
184
|
+
const payload = extractToolCallPayload(firstText);
|
|
185
|
+
if (!payload) {
|
|
186
|
+
return { text: firstText, recovered: false, evidenceText: collectToolObservationText(first.messages) };
|
|
187
|
+
}
|
|
188
|
+
const tool = findToolByName(runtime, payload.name);
|
|
189
|
+
if (!tool)
|
|
190
|
+
return { text: firstText, recovered: false, evidenceText: collectToolObservationText(first.messages) };
|
|
191
|
+
const recoveryStartedAtMs = writeStepRunStart(writer, "recover text tool-call");
|
|
192
|
+
writeStepStart(writer, 1, `execute recovered tool call: ${payload.name}`);
|
|
193
|
+
const mergedArgs = mergeTargetHintForItermTool(tool.name, payload.arguments, targetHint);
|
|
194
|
+
if (tool.name.includes("itermRunCommandInSession")) {
|
|
195
|
+
const cmd = typeof mergedArgs.command === "string" ? mergedArgs.command.trim() : "";
|
|
196
|
+
if (cmd)
|
|
197
|
+
writer(" reason: Because the previous step produced a literal tool-call, execute it first to recover deterministic evidence.");
|
|
198
|
+
}
|
|
199
|
+
const raw = normalizeToolInvokeResult(await tool.invoke(mergedArgs));
|
|
200
|
+
writeStepDone(writer, 1, `execute recovered tool call: ${payload.name}`);
|
|
201
|
+
writeStepProgress(writer, 1, 2);
|
|
202
|
+
writeStepStart(writer, 2, "finalize response from recovered tool result");
|
|
203
|
+
const toolResult = stringifyToolResult(raw);
|
|
204
|
+
const secondText = formatRecoveredToolResult(payload.name, raw);
|
|
205
|
+
writeStepDone(writer, 2, "finalize response from recovered tool result");
|
|
206
|
+
writeStepProgress(writer, 2, 2);
|
|
207
|
+
writeStepRunDone(writer, recoveryStartedAtMs, 2);
|
|
208
|
+
return { text: secondText || toolResult, recovered: true, evidenceText: toolResult };
|
|
209
|
+
}
|
|
210
|
+
export const runWithToolCallRecovery = runWithTextToolCallRecovery;
|
|
211
|
+
//# sourceMappingURL=text-tool-call-recovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-tool-call-recovery.js","sourceRoot":"","sources":["../../src/runtime/text-tool-call-recovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { itermListCurrentWindowSessions, itermSplitPane, itermSetSessionColors } from "@easynet/agent-tool-buildin/iterm";
|
|
2
|
+
export declare const CHAT_BG = "#1E2D3D";
|
|
3
|
+
export declare const CHAT_FG = "#D4D7DC";
|
|
4
|
+
export declare const TARGET_BG = "#2A2A2A";
|
|
5
|
+
export declare const TARGET_FG = "#E8E0D4";
|
|
6
|
+
export interface SessionColorSnapshot {
|
|
7
|
+
windowId: number;
|
|
8
|
+
tabIndex: number;
|
|
9
|
+
sessionId: string;
|
|
10
|
+
background: [number, number, number];
|
|
11
|
+
foreground: [number, number, number];
|
|
12
|
+
}
|
|
13
|
+
export declare function restoreSessionColorsSync(snapshots: SessionColorSnapshot[]): void;
|
|
14
|
+
export interface StartupResult {
|
|
15
|
+
chatSessionId: string | null;
|
|
16
|
+
targetSessionId: string | null;
|
|
17
|
+
windowId: number | null;
|
|
18
|
+
tabIndex: number | null;
|
|
19
|
+
colorSnapshots: SessionColorSnapshot[];
|
|
20
|
+
}
|
|
21
|
+
type ListSessionsResult = Awaited<ReturnType<typeof itermListCurrentWindowSessions>>;
|
|
22
|
+
export interface StartupPanelColorDeps {
|
|
23
|
+
getProcessTty: () => string | null;
|
|
24
|
+
listCurrentWindowSessions: () => Promise<ListSessionsResult>;
|
|
25
|
+
splitPane: typeof itermSplitPane;
|
|
26
|
+
setSessionColors: typeof itermSetSessionColors;
|
|
27
|
+
captureSessionColors: (args: {
|
|
28
|
+
windowId: number;
|
|
29
|
+
tabIndex: number;
|
|
30
|
+
sessionId: string;
|
|
31
|
+
}) => SessionColorSnapshot | null;
|
|
32
|
+
onError: (message: string, error?: unknown) => void;
|
|
33
|
+
}
|
|
34
|
+
export declare function applyStartupPanelColorsWithDeps(deps: StartupPanelColorDeps): Promise<StartupResult>;
|
|
35
|
+
export declare function applyStartupPanelColors(): Promise<StartupResult>;
|
|
36
|
+
export {};
|
|
37
|
+
//# sourceMappingURL=colors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../src/startup/colors.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,8BAA8B,EAC9B,cAAc,EACd,qBAAqB,EACtB,MAAM,mCAAmC,CAAC;AAO3C,eAAO,MAAM,OAAO,YAAY,CAAC;AACjC,eAAO,MAAM,OAAO,YAAY,CAAC;AAGjC,eAAO,MAAM,SAAS,YAAY,CAAC;AACnC,eAAO,MAAM,SAAS,YAAY,CAAC;AAanC,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAkED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,oBAAoB,EAAE,GAAG,IAAI,CAyBhF;AA4BD,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,cAAc,EAAE,oBAAoB,EAAE,CAAC;CACxC;AAED,KAAK,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,8BAA8B,CAAC,CAAC,CAAC;AAErF,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACnC,yBAAyB,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC7D,SAAS,EAAE,OAAO,cAAc,CAAC;IACjC,gBAAgB,EAAE,OAAO,qBAAqB,CAAC;IAC/C,oBAAoB,EAAE,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,oBAAoB,GAAG,IAAI,CAAC;IACvH,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CACrD;AAgBD,wBAAsB,+BAA+B,CACnD,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,aAAa,CAAC,CA8HxB;AAED,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,aAAa,CAAC,CAEtE"}
|
|
@@ -79,9 +79,6 @@ function captureSessionColorsSync(args) {
|
|
|
79
79
|
return null;
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
|
-
export function captureSessionColorsByIdSync(args) {
|
|
83
|
-
return captureSessionColorsSync(args);
|
|
84
|
-
}
|
|
85
82
|
export function restoreSessionColorsSync(snapshots) {
|
|
86
83
|
for (const s of snapshots) {
|
|
87
84
|
try {
|
|
@@ -136,7 +133,22 @@ function findProcessTty() {
|
|
|
136
133
|
}
|
|
137
134
|
return null;
|
|
138
135
|
}
|
|
139
|
-
|
|
136
|
+
function createDefaultDeps() {
|
|
137
|
+
return {
|
|
138
|
+
getProcessTty: findProcessTty,
|
|
139
|
+
listCurrentWindowSessions: itermListCurrentWindowSessions,
|
|
140
|
+
splitPane: itermSplitPane,
|
|
141
|
+
setSessionColors: itermSetSessionColors,
|
|
142
|
+
captureSessionColors: captureSessionColorsSync,
|
|
143
|
+
onError: (message, error) => {
|
|
144
|
+
if (error === undefined)
|
|
145
|
+
console.error(message);
|
|
146
|
+
else
|
|
147
|
+
console.error(message, error instanceof Error ? error.message : error);
|
|
148
|
+
},
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
export async function applyStartupPanelColorsWithDeps(deps) {
|
|
140
152
|
const empty = {
|
|
141
153
|
chatSessionId: null,
|
|
142
154
|
targetSessionId: null,
|
|
@@ -144,8 +156,8 @@ export async function applyStartupPanelColors() {
|
|
|
144
156
|
tabIndex: null,
|
|
145
157
|
colorSnapshots: [],
|
|
146
158
|
};
|
|
147
|
-
const myTty =
|
|
148
|
-
const { result } = await
|
|
159
|
+
const myTty = deps.getProcessTty();
|
|
160
|
+
const { result } = await deps.listCurrentWindowSessions();
|
|
149
161
|
if (result.count === 0)
|
|
150
162
|
return empty;
|
|
151
163
|
let sessions = result.sessions;
|
|
@@ -153,7 +165,7 @@ export async function applyStartupPanelColors() {
|
|
|
153
165
|
? sessions.find((s) => s.tty === myTty)
|
|
154
166
|
: sessions.find((s) => s.isCurrentSession);
|
|
155
167
|
if (!chatSession) {
|
|
156
|
-
|
|
168
|
+
deps.onError(`startup-colors: could not identify chat session (tty=${myTty}), skipping`);
|
|
157
169
|
return empty;
|
|
158
170
|
}
|
|
159
171
|
let currentTabIndex = chatSession.tabIndex;
|
|
@@ -164,14 +176,14 @@ export async function applyStartupPanelColors() {
|
|
|
164
176
|
// If only chat panel exists, split once to create target panel on startup.
|
|
165
177
|
if (sameTabSessions.length === 1 && chatSessionId) {
|
|
166
178
|
try {
|
|
167
|
-
await
|
|
179
|
+
await deps.splitPane({
|
|
168
180
|
windowId,
|
|
169
181
|
tabIndex: currentTabIndex,
|
|
170
182
|
sessionId: chatSessionId,
|
|
171
183
|
direction: "vertical",
|
|
172
184
|
activate: false,
|
|
173
185
|
});
|
|
174
|
-
const refreshed = await
|
|
186
|
+
const refreshed = await deps.listCurrentWindowSessions();
|
|
175
187
|
sessions = refreshed.result.sessions;
|
|
176
188
|
const preservedChat = sessions.find((s) => s.sessionId === chatSessionId);
|
|
177
189
|
if (preservedChat) {
|
|
@@ -183,7 +195,7 @@ export async function applyStartupPanelColors() {
|
|
|
183
195
|
targetSessions = sameTabSessions.filter((s) => s.sessionId !== chatSessionId);
|
|
184
196
|
}
|
|
185
197
|
catch (err) {
|
|
186
|
-
|
|
198
|
+
deps.onError("startup-colors: failed to auto-split single panel:", err);
|
|
187
199
|
}
|
|
188
200
|
}
|
|
189
201
|
const selectedTarget = targetSessions[0] ?? null;
|
|
@@ -203,7 +215,7 @@ export async function applyStartupPanelColors() {
|
|
|
203
215
|
if (!s.sessionId || seen.has(s.sessionId))
|
|
204
216
|
continue;
|
|
205
217
|
seen.add(s.sessionId);
|
|
206
|
-
const snapshot =
|
|
218
|
+
const snapshot = deps.captureSessionColors({
|
|
207
219
|
windowId,
|
|
208
220
|
tabIndex: currentTabIndex,
|
|
209
221
|
sessionId: s.sessionId,
|
|
@@ -214,7 +226,7 @@ export async function applyStartupPanelColors() {
|
|
|
214
226
|
}
|
|
215
227
|
const tasks = [];
|
|
216
228
|
if (chatSession.sessionId) {
|
|
217
|
-
tasks.push(
|
|
229
|
+
tasks.push(deps.setSessionColors({
|
|
218
230
|
windowId,
|
|
219
231
|
tabIndex: currentTabIndex,
|
|
220
232
|
sessionId: chatSession.sessionId,
|
|
@@ -223,7 +235,7 @@ export async function applyStartupPanelColors() {
|
|
|
223
235
|
}));
|
|
224
236
|
}
|
|
225
237
|
if (selectedTarget?.sessionId) {
|
|
226
|
-
tasks.push(
|
|
238
|
+
tasks.push(deps.setSessionColors({
|
|
227
239
|
windowId,
|
|
228
240
|
tabIndex: currentTabIndex,
|
|
229
241
|
sessionId: selectedTarget.sessionId,
|
|
@@ -234,9 +246,12 @@ export async function applyStartupPanelColors() {
|
|
|
234
246
|
const results = await Promise.allSettled(tasks);
|
|
235
247
|
for (const r of results) {
|
|
236
248
|
if (r.status === "rejected") {
|
|
237
|
-
|
|
249
|
+
deps.onError("startup-colors: failed to set color on a session:", r.reason);
|
|
238
250
|
}
|
|
239
251
|
}
|
|
240
252
|
return startupResult;
|
|
241
253
|
}
|
|
242
|
-
|
|
254
|
+
export async function applyStartupPanelColors() {
|
|
255
|
+
return applyStartupPanelColorsWithDeps(createDefaultDeps());
|
|
256
|
+
}
|
|
257
|
+
//# sourceMappingURL=colors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"colors.js","sourceRoot":"","sources":["../../src/startup/colors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/startup/diagnostics.ts"],"names":[],"mappings":"AAKA,KAAK,gBAAgB,GAAG;IACtB,OAAO,EAAE;QACP,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,CAAC,CAAC;KAC3B,CAAC;CACH,CAAC;AAEF,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAalF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { AgentContextTokens } from "@easynet/agent-common/context";
|
|
2
|
+
import { extractTextFromLlmOutput } from "@easynet/agent-common/utils";
|
|
3
|
+
const LLM_HEALTHCHECK_PROMPT = "Health check: reply with OK only.";
|
|
4
|
+
export async function runLlmHealthCheck(runtime) {
|
|
5
|
+
const llm = runtime.context.get(AgentContextTokens.ChatModel);
|
|
6
|
+
const timeoutMs = Number(process.env.ITERMBOT_LLM_HEALTHCHECK_TIMEOUT_MS ?? "12000");
|
|
7
|
+
const timeout = Number.isFinite(timeoutMs) && timeoutMs > 0 ? timeoutMs : 12000;
|
|
8
|
+
const invokePromise = llm.invoke(LLM_HEALTHCHECK_PROMPT);
|
|
9
|
+
const timeoutPromise = new Promise((_, reject) => {
|
|
10
|
+
setTimeout(() => reject(new Error(`LLM health check timeout (${timeout}ms)`)), timeout);
|
|
11
|
+
});
|
|
12
|
+
const output = await Promise.race([invokePromise, timeoutPromise]);
|
|
13
|
+
const text = extractTextFromLlmOutput(output);
|
|
14
|
+
if (!text)
|
|
15
|
+
throw new Error("LLM health check returned empty response");
|
|
16
|
+
return text.length > 32 ? `${text.slice(0, 32)}...` : text;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=diagnostics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/startup/diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAEvE,MAAM,sBAAsB,GAAG,mCAAmC,CAAC;AAQnE,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,OAAyB;IAC/D,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAkD,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAC/G,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,mCAAmC,IAAI,OAAO,CAAC,CAAC;IACrF,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;IAEhF,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;IACzD,MAAM,cAAc,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;QACtD,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,6BAA6B,OAAO,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC1F,CAAC,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC;IACnE,MAAM,IAAI,GAAG,wBAAwB,CAAC,MAAM,CAAC,CAAC;IAC9C,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IACvE,OAAO,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7D,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface StartupOsInfo {
|
|
2
|
+
os: string;
|
|
3
|
+
source: "target-panel" | "local-fallback";
|
|
4
|
+
}
|
|
5
|
+
export declare function detectStartupTargetOs(args: {
|
|
6
|
+
windowId?: number;
|
|
7
|
+
tabIndex?: number;
|
|
8
|
+
sessionId?: string;
|
|
9
|
+
}): Promise<StartupOsInfo>;
|
|
10
|
+
//# sourceMappingURL=os.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"os.d.ts","sourceRoot":"","sources":["../../src/startup/os.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,cAAc,GAAG,gBAAgB,CAAC;CAC3C;AAqCD,wBAAsB,qBAAqB,CAAC,IAAI,EAAE;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,aAAa,CAAC,CAgBzB"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { itermRunCommandInSession } from "@easynet/agent-tool-buildin/iterm";
|
|
2
|
+
function normalizeOsName(raw) {
|
|
3
|
+
const normalized = raw.trim();
|
|
4
|
+
if (!normalized)
|
|
5
|
+
return "unknown";
|
|
6
|
+
if (/^darwin$/i.test(normalized))
|
|
7
|
+
return "darwin";
|
|
8
|
+
if (/^linux$/i.test(normalized))
|
|
9
|
+
return "linux";
|
|
10
|
+
if (/^(msys|mingw|cygwin|windows_nt)/i.test(normalized))
|
|
11
|
+
return "windows";
|
|
12
|
+
if (/^freebsd$/i.test(normalized))
|
|
13
|
+
return "freebsd";
|
|
14
|
+
if (/^openbsd$/i.test(normalized))
|
|
15
|
+
return "openbsd";
|
|
16
|
+
if (/^netbsd$/i.test(normalized))
|
|
17
|
+
return "netbsd";
|
|
18
|
+
if (/^sunos$/i.test(normalized))
|
|
19
|
+
return "sunos";
|
|
20
|
+
if (/^aix$/i.test(normalized))
|
|
21
|
+
return "aix";
|
|
22
|
+
return normalized.toLowerCase();
|
|
23
|
+
}
|
|
24
|
+
function inferFromLocalProcessPlatform() {
|
|
25
|
+
const p = process.platform;
|
|
26
|
+
if (p === "darwin")
|
|
27
|
+
return "darwin";
|
|
28
|
+
if (p === "linux")
|
|
29
|
+
return "linux";
|
|
30
|
+
if (p === "win32")
|
|
31
|
+
return "windows";
|
|
32
|
+
return p;
|
|
33
|
+
}
|
|
34
|
+
function extractOsFromCommandOutput(output) {
|
|
35
|
+
if (typeof output !== "string" || !output.trim())
|
|
36
|
+
return "unknown";
|
|
37
|
+
const lines = output
|
|
38
|
+
.split("\n")
|
|
39
|
+
.map((line) => line.trim())
|
|
40
|
+
.filter((line) => line.length > 0);
|
|
41
|
+
for (const line of lines) {
|
|
42
|
+
const match = line.match(/\b(Darwin|Linux|FreeBSD|OpenBSD|NetBSD|SunOS|AIX|MSYS|MINGW|CYGWIN|Windows_NT)\b/i);
|
|
43
|
+
if (match?.[1])
|
|
44
|
+
return normalizeOsName(match[1]);
|
|
45
|
+
}
|
|
46
|
+
return "unknown";
|
|
47
|
+
}
|
|
48
|
+
export async function detectStartupTargetOs(args) {
|
|
49
|
+
try {
|
|
50
|
+
const out = await itermRunCommandInSession({
|
|
51
|
+
command: "uname -s",
|
|
52
|
+
waitMs: 400,
|
|
53
|
+
maxOutputLines: 120,
|
|
54
|
+
windowId: args.windowId,
|
|
55
|
+
tabIndex: args.tabIndex,
|
|
56
|
+
sessionId: args.sessionId,
|
|
57
|
+
});
|
|
58
|
+
const detected = extractOsFromCommandOutput(out?.result?.output);
|
|
59
|
+
if (detected !== "unknown")
|
|
60
|
+
return { os: detected, source: "target-panel" };
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
// fall back to local process platform
|
|
64
|
+
}
|
|
65
|
+
return { os: inferFromLocalProcessPlatform(), source: "local-fallback" };
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=os.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"os.js","sourceRoot":"","sources":["../../src/startup/os.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAO7E,SAAS,eAAe,CAAC,GAAW;IAClC,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC,UAAU;QAAE,OAAO,SAAS,CAAC;IAClC,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,QAAQ,CAAC;IAClD,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,OAAO,CAAC;IAChD,IAAI,kCAAkC,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1E,IAAI,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,SAAS,CAAC;IACpD,IAAI,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,SAAS,CAAC;IACpD,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,QAAQ,CAAC;IAClD,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,OAAO,CAAC;IAChD,IAAI,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAO,UAAU,CAAC,WAAW,EAAE,CAAC;AAClC,CAAC;AAED,SAAS,6BAA6B;IACpC,MAAM,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;IAC3B,IAAI,CAAC,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IACpC,IAAI,CAAC,KAAK,OAAO;QAAE,OAAO,OAAO,CAAC;IAClC,IAAI,CAAC,KAAK,OAAO;QAAE,OAAO,SAAS,CAAC;IACpC,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,0BAA0B,CAAC,MAAe;IACjD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;QAAE,OAAO,SAAS,CAAC;IACnE,MAAM,KAAK,GAAG,MAAM;SACjB,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,mFAAmF,CAAC,CAAC;QAC9G,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC;YAAE,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,IAI3C;IACC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,wBAAwB,CAAC;YACzC,OAAO,EAAE,UAAU;YACnB,MAAM,EAAE,GAAG;YACX,cAAc,EAAE,GAAG;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,0BAA0B,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACjE,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;IAC9E,CAAC;IAAC,MAAM,CAAC;QACP,sCAAsC;IACxC,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,6BAA6B,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;AAC3E,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { formatLogPath, runStartupStep, StartupProgressRenderer, toErrorMessage } from "@easynet/agent-common/cli";
|
|
2
|
+
export { formatLogPath, runStartupStep, StartupProgressRenderer, toErrorMessage };
|
|
3
|
+
export declare function clearStartupNoise(): void;
|
|
4
|
+
export declare function printStartupBanner(): void;
|
|
5
|
+
export declare function getAppVersion(): string;
|
|
6
|
+
export declare function printStartupSummary(args: {
|
|
7
|
+
version: string;
|
|
8
|
+
responseSafetyMode?: string;
|
|
9
|
+
targetOs?: string;
|
|
10
|
+
}): void;
|
|
11
|
+
//# sourceMappingURL=ui.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/startup/ui.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,aAAa,EACb,cAAc,EACd,uBAAuB,EACvB,cAAc,EACf,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,uBAAuB,EAAE,cAAc,EAAE,CAAC;AAElF,wBAAgB,iBAAiB,IAAI,IAAI,CAGxC;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAYzC;AAED,wBAAgB,aAAa,IAAI,MAAM,CAStC;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAanH"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { dirname, resolve } from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { formatLogPath, runStartupStep, StartupProgressRenderer, toErrorMessage, } from "@easynet/agent-common/cli";
|
|
5
|
+
export { formatLogPath, runStartupStep, StartupProgressRenderer, toErrorMessage };
|
|
6
|
+
export function clearStartupNoise() {
|
|
7
|
+
if (!process.stdout.isTTY)
|
|
8
|
+
return;
|
|
9
|
+
process.stdout.write("\x1b[2J\x1b[H");
|
|
10
|
+
}
|
|
11
|
+
export function printStartupBanner() {
|
|
12
|
+
const lines = [
|
|
13
|
+
" _ _____ ____ _ ",
|
|
14
|
+
" (_)_ _|__ _ __ _ __ ___ | __ ) ___ | |_ ",
|
|
15
|
+
" | | | |/ _ \\ '__| '_ ` _ \\| _ \\ / _ \\| __|",
|
|
16
|
+
" | | | | __/ | | | | | | | |_) | (_) | |_ ",
|
|
17
|
+
" |_| |_|\\___|_| |_| |_| |_|____/ \\___/ \\__|",
|
|
18
|
+
" iTermBot ",
|
|
19
|
+
];
|
|
20
|
+
console.log("--------------------------------------------------------------------------------------------------");
|
|
21
|
+
console.log(`\n${lines.join("\n")}`);
|
|
22
|
+
console.log(" Observe the terminal. Act with precision.\n");
|
|
23
|
+
}
|
|
24
|
+
export function getAppVersion() {
|
|
25
|
+
try {
|
|
26
|
+
const currentFile = fileURLToPath(import.meta.url);
|
|
27
|
+
const packageJsonPath = resolve(dirname(currentFile), "../package.json");
|
|
28
|
+
const parsed = JSON.parse(readFileSync(packageJsonPath, "utf8"));
|
|
29
|
+
return typeof parsed.version === "string" ? parsed.version : "unknown";
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return "unknown";
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export function printStartupSummary(args) {
|
|
36
|
+
console.log("\n--------------------------------------------------------------------------------------------------");
|
|
37
|
+
console.log(`Version : v${args.version}`);
|
|
38
|
+
console.log(`Workspace : ${process.cwd()}`);
|
|
39
|
+
if (args.targetOs) {
|
|
40
|
+
console.log(`Target OS : ${args.targetOs}`);
|
|
41
|
+
}
|
|
42
|
+
if (args.responseSafetyMode) {
|
|
43
|
+
console.log(`Safety : response mode=${args.responseSafetyMode}`);
|
|
44
|
+
}
|
|
45
|
+
console.log("");
|
|
46
|
+
console.log("Commands : list tools, list skills, exit");
|
|
47
|
+
console.log("--------------------------------------------------------------------------------------------------\n");
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=ui.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/startup/ui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EACL,aAAa,EACb,cAAc,EACd,uBAAuB,EACvB,cAAc,GACf,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,uBAAuB,EAAE,cAAc,EAAE,CAAC;AAElF,MAAM,UAAU,iBAAiB;IAC/B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK;QAAE,OAAO;IAClC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,MAAM,KAAK,GAAG;QACZ,8CAA8C;QAC9C,8CAA8C;QAC9C,kDAAkD;QAClD,8CAA8C;QAC9C,iDAAiD;QACjD,8CAA8C;KAC/C,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,oGAAoG,CAAC,CAAC;IAClH,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnD,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,iBAAiB,CAAC,CAAC;QACzE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAA0B,CAAC;QAC1F,OAAO,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IACzE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAyE;IAC3G,OAAO,CAAC,GAAG,CAAC,sGAAsG,CAAC,CAAC;IACpH,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,eAAe,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC5C,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9C,CAAC;IACD,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,sGAAsG,CAAC,CAAC;AACtH,CAAC"}
|