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.
Files changed (128) hide show
  1. package/.github/workflows/ci.yml +15 -20
  2. package/.github/workflows/release.yml +32 -20
  3. package/README.md +11 -20
  4. package/cleanup-unused.patch +108 -0
  5. package/config/app.yaml +32 -13
  6. package/config/memory.yaml +38 -31
  7. package/config/model.yaml +33 -0
  8. package/config/skill.yaml +8 -0
  9. package/config/tool.yaml +50 -17
  10. package/config/tsconfig.json +4 -1
  11. package/dist/chat/builtin-commands.d.ts +8 -0
  12. package/dist/chat/builtin-commands.d.ts.map +1 -0
  13. package/dist/chat/builtin-commands.js +53 -0
  14. package/dist/chat/builtin-commands.js.map +1 -0
  15. package/dist/chat/progress.d.ts +3 -0
  16. package/dist/chat/progress.d.ts.map +1 -0
  17. package/dist/chat/progress.js +23 -0
  18. package/dist/chat/progress.js.map +1 -0
  19. package/dist/chat/response-safety.d.ts +8 -0
  20. package/dist/chat/response-safety.d.ts.map +1 -0
  21. package/dist/chat/response-safety.js +126 -0
  22. package/dist/chat/response-safety.js.map +1 -0
  23. package/dist/chat/step-display.d.ts +2 -0
  24. package/dist/chat/step-display.d.ts.map +1 -0
  25. package/dist/chat/step-display.js +50 -0
  26. package/dist/chat/step-display.js.map +1 -0
  27. package/dist/chat/tool-result.d.ts +4 -0
  28. package/dist/chat/tool-result.d.ts.map +1 -0
  29. package/dist/chat/tool-result.js +24 -0
  30. package/dist/chat/tool-result.js.map +1 -0
  31. package/dist/config.d.ts +11 -6
  32. package/dist/config.d.ts.map +1 -1
  33. package/dist/config.js +26 -12
  34. package/dist/config.js.map +1 -1
  35. package/dist/index.js +308 -151
  36. package/dist/index.js.map +1 -1
  37. package/dist/iterm/direct-command-router.d.ts +24 -0
  38. package/dist/iterm/direct-command-router.d.ts.map +1 -0
  39. package/dist/iterm/direct-command-router.js +213 -0
  40. package/dist/iterm/direct-command-router.js.map +1 -0
  41. package/dist/iterm/session-hint.d.ts +10 -0
  42. package/dist/iterm/session-hint.d.ts.map +1 -0
  43. package/dist/iterm/session-hint.js +43 -0
  44. package/dist/iterm/session-hint.js.map +1 -0
  45. package/dist/iterm/target-panel-policy.d.ts +12 -0
  46. package/dist/iterm/target-panel-policy.d.ts.map +1 -0
  47. package/dist/iterm/target-panel-policy.js +287 -0
  48. package/dist/iterm/target-panel-policy.js.map +1 -0
  49. package/dist/runtime/text-tool-call-recovery.d.ts +23 -0
  50. package/dist/runtime/text-tool-call-recovery.d.ts.map +1 -0
  51. package/dist/runtime/text-tool-call-recovery.js +211 -0
  52. package/dist/runtime/text-tool-call-recovery.js.map +1 -0
  53. package/dist/startup/colors.d.ts +37 -0
  54. package/dist/startup/colors.d.ts.map +1 -0
  55. package/dist/{startup-colors.js → startup/colors.js} +30 -15
  56. package/dist/startup/colors.js.map +1 -0
  57. package/dist/startup/diagnostics.d.ts +8 -0
  58. package/dist/startup/diagnostics.d.ts.map +1 -0
  59. package/dist/startup/diagnostics.js +18 -0
  60. package/dist/startup/diagnostics.js.map +1 -0
  61. package/dist/startup/os.d.ts +10 -0
  62. package/dist/startup/os.d.ts.map +1 -0
  63. package/dist/startup/os.js +67 -0
  64. package/dist/startup/os.js.map +1 -0
  65. package/dist/startup/ui.d.ts +11 -0
  66. package/dist/startup/ui.d.ts.map +1 -0
  67. package/dist/startup/ui.js +49 -0
  68. package/dist/startup/ui.js.map +1 -0
  69. package/package.json +23 -13
  70. package/scripts/internal-package-refs.mjs +158 -0
  71. package/scripts/patch-buildin-cache.sh +1 -4
  72. package/scripts/resolve-deps.js +5 -0
  73. package/scripts/test-llm.mjs +11 -5
  74. package/skills/gpu-ssh-monitor/SKILL.md +22 -3
  75. package/src/chat/builtin-commands.ts +70 -0
  76. package/src/chat/progress.ts +26 -0
  77. package/src/chat/response-safety.ts +134 -0
  78. package/src/chat/step-display.ts +54 -0
  79. package/src/chat/tool-result.ts +22 -0
  80. package/src/config.ts +48 -21
  81. package/src/index.ts +377 -167
  82. package/src/iterm/direct-command-router.ts +274 -0
  83. package/src/iterm/session-hint.ts +49 -0
  84. package/src/iterm/target-panel-policy.ts +341 -0
  85. package/src/runtime/text-tool-call-recovery.ts +257 -0
  86. package/src/{startup-colors.ts → startup/colors.ts} +42 -27
  87. package/src/startup/diagnostics.ts +25 -0
  88. package/src/startup/os.ts +63 -0
  89. package/src/startup/ui.ts +56 -0
  90. package/src/types/marked-terminal.d.ts +3 -0
  91. package/test/builtin-commands.test.mjs +50 -0
  92. package/test/chat-flow.integration.test.mjs +235 -0
  93. package/test/chat-progress.test.mjs +83 -0
  94. package/test/config.test.mjs +22 -0
  95. package/test/diagnostics.test.mjs +45 -0
  96. package/test/direct-command-router.test.mjs +149 -0
  97. package/test/live-iterm-llm.integration.test.mjs +153 -0
  98. package/test/response-safety.test.mjs +44 -0
  99. package/test/session-hint.test.mjs +78 -0
  100. package/test/startup-colors.test.mjs +145 -0
  101. package/test/target-panel-policy.test.mjs +180 -0
  102. package/test/tool-call-recovery.test.mjs +199 -0
  103. package/config/agent.yaml +0 -121
  104. package/config/models.yaml +0 -36
  105. package/config/skills.yaml +0 -4
  106. package/dist/agent.d.ts +0 -14
  107. package/dist/agent.d.ts.map +0 -1
  108. package/dist/agent.js +0 -16
  109. package/dist/agent.js.map +0 -1
  110. package/dist/context.d.ts +0 -12
  111. package/dist/context.d.ts.map +0 -1
  112. package/dist/context.js +0 -20
  113. package/dist/context.js.map +0 -1
  114. package/dist/session-hint.d.ts +0 -4
  115. package/dist/session-hint.d.ts.map +0 -1
  116. package/dist/session-hint.js +0 -25
  117. package/dist/session-hint.js.map +0 -1
  118. package/dist/startup-colors.d.ts +0 -26
  119. package/dist/startup-colors.d.ts.map +0 -1
  120. package/dist/startup-colors.js.map +0 -1
  121. package/dist/target-routing.d.ts +0 -15
  122. package/dist/target-routing.d.ts.map +0 -1
  123. package/dist/target-routing.js +0 -355
  124. package/dist/target-routing.js.map +0 -1
  125. package/src/agent.ts +0 -35
  126. package/src/context.ts +0 -35
  127. package/src/session-hint.ts +0 -28
  128. package/src/target-routing.ts +0 -419
package/dist/index.js CHANGED
@@ -1,52 +1,81 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * iTermBot: ReAct agent (LangChain) + Deep agent (DeepAgents).
3
+ * iTermBot: ReAct agent powered by @easynet/agent-runtime.
4
4
  * Usage:
5
- * npm start # interactive: choose agent then chat
6
- * npm run react # use ReAct agent
7
- * npm run deep # use Deep agent
8
- * node dist/index.js react "Your question"
9
- * node dist/index.js deep "Your question"
5
+ * npm start # interactive REPL
6
+ * node dist/index.js "Your question" # single-turn
10
7
  */
11
- import { runAppCli, createStructuredRunEventListener, } from "@easynet/agent-runtime";
12
- import { readFileSync } from "node:fs";
13
- import { dirname, resolve } from "node:path";
14
- import { fileURLToPath } from "node:url";
15
- import { applyStartupPanelColors, restoreSessionColorsSync } from "./startup-colors.js";
16
- import { injectTargetSessionHint } from "./session-hint.js";
17
- import { enableDynamicTargetRouting } from "./target-routing.js";
18
- import { createBotContext } from "./context.js";
8
+ import * as readline from "node:readline";
9
+ import { marked } from "marked";
10
+ import { markedTerminal } from "marked-terminal";
11
+ import { createAgentEventBus, } from "@easynet/agent-common";
12
+ import { resolveConfigPath } from "@easynet/agent-common/config";
13
+ import { createAgentReactRuntime } from "@easynet/agent-runtime";
14
+ import { createAgentModel } from "@easynet/agent-model";
15
+ import { createAgentMemory } from "@easynet/agent-memory";
16
+ import { createAgentTools } from "@easynet/agent-tool";
17
+ import { createAgentSkills } from "@easynet/agent-skill";
18
+ import { runWithTextToolCallRecovery } from "./runtime/text-tool-call-recovery.js";
19
+ import { applyStartupPanelColors, restoreSessionColorsSync } from "./startup/colors.js";
20
+ import { buildSystemPrompt } from "./iterm/session-hint.js";
21
+ import { detectDirectTargetPanelCommand, tryHandleDirectTargetPanelCommand, } from "./iterm/direct-command-router.js";
22
+ import { enforceTargetPanelExecutionPolicy, setTargetPanelHint } from "./iterm/target-panel-policy.js";
23
+ import { runLlmHealthCheck } from "./startup/diagnostics.js";
24
+ import { detectStartupTargetOs } from "./startup/os.js";
25
+ import { createChatProgressEventListener } from "./chat/progress.js";
26
+ import { renderStepLine } from "./chat/step-display.js";
27
+ import { enforceResponseSafetyWithMode } from "./chat/response-safety.js";
28
+ import { tryHandleBuiltinReadCommand } from "./chat/builtin-commands.js";
29
+ import { clearStartupNoise, formatLogPath, getAppVersion, printStartupBanner, printStartupSummary, runStartupStep, StartupProgressRenderer, } from "./startup/ui.js";
30
+ import { loadAppConfig } from "./config.js";
19
31
  let startupColorSnapshots = [];
20
- let stopDynamicTargetRouting = null;
32
+ let unpatchTargetPanelPolicy = null;
33
+ marked.use(markedTerminal({
34
+ code: false,
35
+ width: Math.max(80, process.stdout.columns ?? 100),
36
+ reflowText: true,
37
+ heading: (text, level) => `\n${"#".repeat(level)} ${text}\n`,
38
+ }));
39
+ function renderMarkdownForTerminal(text) {
40
+ try {
41
+ const rendered = marked.parse(text);
42
+ return rendered.trimEnd();
43
+ }
44
+ catch {
45
+ return text;
46
+ }
47
+ }
48
+ let conversationTurn = 0;
49
+ function supportsColor() {
50
+ return Boolean(process.stdout.isTTY) && !process.env.NO_COLOR;
51
+ }
52
+ function colorize(text, code) {
53
+ if (!supportsColor())
54
+ return text;
55
+ return `${code}${text}\x1b[0m`;
56
+ }
57
+ function divider(char = "─") {
58
+ const width = Math.max(50, Math.min(process.stdout.columns ?? 100, 120));
59
+ return char.repeat(width);
60
+ }
61
+ function printUserMessage(turn, text) {
62
+ console.log(`\n${colorize(divider("─"), "\x1b[2m")}`);
63
+ console.log(colorize(`[Turn ${turn}] USER`, "\x1b[1m\x1b[36m"));
64
+ console.log(text);
65
+ }
66
+ function printBotMessage(text, turn = conversationTurn) {
67
+ const rendered = renderMarkdownForTerminal(text);
68
+ console.log(colorize(`[Turn ${turn}] iTermBot`, "\x1b[1m\x1b[32m"));
69
+ console.log(rendered);
70
+ console.log(colorize(divider("─"), "\x1b[2m"));
71
+ }
21
72
  function sanitizeSessionId(input) {
22
73
  return input.replace(/[^a-zA-Z0-9_-]/g, "_").slice(0, 64);
23
74
  }
24
- function configureThreadMemoryNamespace(ctx, args) {
25
- const appConfig = ctx.config.app;
26
- const agents = appConfig?.agent;
27
- const defaultBaseNamespace = "user:itermbot";
28
- const baseNamespace = agents?.react?.memory?.namespace ??
29
- agents?.deep?.memory?.namespace ??
30
- defaultBaseNamespace;
31
- const mode = agents?.react?.memory?.namespace_mode ?? agents?.deep?.memory?.namespace_mode ?? "thread";
32
- const seed = args.chatSessionId ? sanitizeSessionId(args.chatSessionId) : `local_${Date.now().toString(36)}`;
33
- const threadNamespace = mode === "fixed" ? baseNamespace : `${baseNamespace}:thread:${seed}`;
34
- if (!ctx.config.app)
35
- ctx.config.app = {};
36
- if (!ctx.config.app.agent)
37
- ctx.config.app.agent = {};
38
- for (const agentName of ["react", "deep"]) {
39
- const current = ctx.config.app.agent[agentName] ?? {};
40
- const currentMemory = current.memory ?? {};
41
- ctx.config.app.agent[agentName] = {
42
- ...current,
43
- memory: {
44
- ...currentMemory,
45
- namespace: threadNamespace,
46
- },
47
- };
48
- }
49
- return threadNamespace;
75
+ function buildNamespace(chatSessionId) {
76
+ const base = "user:itermbot";
77
+ const seed = chatSessionId ? sanitizeSessionId(chatSessionId) : `local_${Date.now().toString(36)}`;
78
+ return `${base}:thread:${seed}`;
50
79
  }
51
80
  function ensureItermEnvironmentOrExit() {
52
81
  const termProgram = process.env.TERM_PROGRAM?.trim();
@@ -58,122 +87,250 @@ function ensureItermEnvironmentOrExit() {
58
87
  console.error("Please run iTermBot inside iTerm2 and try again.");
59
88
  process.exit(1);
60
89
  }
61
- function printStartupBanner() {
62
- const lines = [
63
- " _ _____ ____ _ ",
64
- " (_)_ _|__ _ __ _ __ ___ | __ ) ___ | |_ ",
65
- " | | | |/ _ \\ '__| '_ ` _ \\| _ \\ / _ \\| __|",
66
- " | | | | __/ | | | | | | | |_) | (_) | |_ ",
67
- " |_| |_|\\___|_| |_| |_| |_|____/ \\___/ \\__|",
68
- " iTermBot ",
69
- ];
70
- console.log("--------------------------------------------------------------------------------------------------");
71
- console.log(`\n${lines.join("\n")}`);
72
- console.log(" Observe the terminal. Act with precision.\n");
73
- }
74
- function clearStartupNoise() {
75
- if (!process.stdout.isTTY)
76
- return;
77
- process.stdout.write("\x1b[2J\x1b[H");
90
+ async function buildRuntime(systemPrompt, namespace, startup, maxSteps) {
91
+ createAgentEventBus();
92
+ await createAgentModel({
93
+ configPath: resolveConfigPath("config/model.yaml", process.cwd()),
94
+ });
95
+ const memoryConfigPath = resolveConfigPath("config/memory.yaml", process.cwd());
96
+ await createAgentMemory({ configPath: memoryConfigPath });
97
+ const tools = createAgentTools({
98
+ configFilePath: resolveConfigPath("config/tool.yaml", process.cwd()),
99
+ coreTools: { sandboxRoot: process.cwd() },
100
+ });
101
+ setTargetPanelHint({
102
+ windowId: startup.windowId ?? undefined,
103
+ tabIndex: startup.tabIndex ?? undefined,
104
+ sessionId: startup.targetSessionId ?? undefined,
105
+ });
106
+ if (unpatchTargetPanelPolicy)
107
+ unpatchTargetPanelPolicy();
108
+ unpatchTargetPanelPolicy = enforceTargetPanelExecutionPolicy(tools);
109
+ await createAgentSkills(resolveConfigPath("config/skill.yaml", process.cwd()));
110
+ return createAgentReactRuntime({
111
+ systemPrompt,
112
+ namespace,
113
+ ...(typeof maxSteps === "number" ? { maxSteps } : {}),
114
+ });
78
115
  }
79
- function getAppVersion() {
80
- try {
81
- const currentFile = fileURLToPath(import.meta.url);
82
- const packageJsonPath = resolve(dirname(currentFile), "../package.json");
83
- const parsed = JSON.parse(readFileSync(packageJsonPath, "utf8"));
84
- return typeof parsed.version === "string" ? parsed.version : "unknown";
116
+ async function runInteractive(runtime) {
117
+ const rl = readline.createInterface({
118
+ input: process.stdin,
119
+ output: process.stdout,
120
+ terminal: true,
121
+ });
122
+ const ask = () => {
123
+ rl.question("\nyou> ", async (input) => {
124
+ const trimmed = input.trim();
125
+ if (trimmed === "exit" || trimmed === "quit") {
126
+ rl.close();
127
+ return;
128
+ }
129
+ if (!trimmed) {
130
+ ask();
131
+ return;
132
+ }
133
+ conversationTurn += 1;
134
+ const turn = conversationTurn;
135
+ printUserMessage(turn, trimmed);
136
+ try {
137
+ const builtin = tryHandleBuiltinReadCommand(trimmed, runtime);
138
+ if (builtin !== null) {
139
+ printBotMessage(builtin, turn);
140
+ ask();
141
+ return;
142
+ }
143
+ const directOutput = await tryHandleDirectCommandWithProgress(trimmed, runtime);
144
+ if (directOutput !== null) {
145
+ printBotMessage(directOutput, turn);
146
+ ask();
147
+ return;
148
+ }
149
+ const recoveryWriter = printSteps ? writeStepLine : () => { };
150
+ const result = await runWithTextToolCallRecovery(runtime, trimmed, recoveryWriter, {
151
+ windowId: startup.windowId ?? undefined,
152
+ tabIndex: startup.tabIndex ?? undefined,
153
+ sessionId: startup.targetSessionId ?? undefined,
154
+ });
155
+ const safeText = enforceResponseSafetyWithMode(result.text, responseSafetyMode, {
156
+ evidenceText: result.evidenceText,
157
+ targetOs: startupTargetOs,
158
+ });
159
+ if (safeText)
160
+ printBotMessage(safeText, turn);
161
+ }
162
+ catch (error) {
163
+ console.error("Error:", error instanceof Error ? error.message : String(error));
164
+ }
165
+ ask();
166
+ });
167
+ };
168
+ rl.on("close", () => {
169
+ shutdown();
170
+ process.exit(0);
171
+ });
172
+ ask();
173
+ }
174
+ function shutdown() {
175
+ if (unpatchTargetPanelPolicy) {
176
+ unpatchTargetPanelPolicy();
177
+ unpatchTargetPanelPolicy = null;
85
178
  }
86
- catch {
87
- return "unknown";
179
+ setTargetPanelHint(null);
180
+ if (startupColorSnapshots.length > 0) {
181
+ restoreSessionColorsSync(startupColorSnapshots);
88
182
  }
89
183
  }
90
- function printStartupSummary(args) {
91
- console.log("--------------------------------------------------------------------------------------------------");
92
- console.log(`Version : v${args.version}`);
93
- console.log(`Workspace : ${process.cwd()}`);
94
- console.log("");
95
- console.log("Commands : list tools, list skills, exit");
96
- console.log("--------------------------------------------------------------------------------------------------\n");
97
- }
98
- ensureItermEnvironmentOrExit();
99
- clearStartupNoise();
100
- printStartupBanner();
101
- runAppCli({
102
- appName: "iTermBot",
103
- createBotContext,
104
- ui: {
105
- assistantLabel: "iTermBot",
106
- useColor: true,
107
- echoUserQuestion: false,
108
- processingSpinner: true,
109
- processingText: false,
110
- loadingText: "Loading config, LLM, memory, tools...",
111
- loadingSpinner: true,
112
- readyText: false,
113
- interactiveIntro: false,
114
- },
115
- eventListener: createStructuredRunEventListener((line) => console.log(line)),
116
- onShutdown: () => {
117
- if (stopDynamicTargetRouting) {
118
- stopDynamicTargetRouting();
119
- stopDynamicTargetRouting = null;
120
- }
121
- if (startupColorSnapshots.length > 0) {
122
- restoreSessionColorsSync(startupColorSnapshots);
184
+ process.on("SIGINT", () => { shutdown(); process.exit(0); });
185
+ process.on("SIGTERM", () => { shutdown(); process.exit(0); });
186
+ let startup = {
187
+ chatSessionId: null,
188
+ targetSessionId: null,
189
+ windowId: null,
190
+ tabIndex: null,
191
+ colorSnapshots: [],
192
+ };
193
+ let responseSafetyMode = "balanced";
194
+ let startupTargetOs = "";
195
+ let printSteps = false;
196
+ let maxSteps = 16;
197
+ function formatStepNumber(stepNumber) {
198
+ return String(Math.max(0, stepNumber)).padStart(2, "0");
199
+ }
200
+ function writeStepLine(line) {
201
+ console.log(renderStepLine(line));
202
+ }
203
+ async function tryHandleDirectCommandWithProgress(input, runtime) {
204
+ const verbose = process.env.ITB_VERBOSE_DIRECT_ROUTE?.trim() === "1" || printSteps;
205
+ const startedAt = Date.now();
206
+ const writeStep = (line) => console.log(renderStepLine(line));
207
+ if (verbose) {
208
+ writeStep("");
209
+ writeStep("=== Steps: direct command routing ===");
210
+ writeStep(`[${formatStepNumber(1)}] detect/translate direct command`);
211
+ }
212
+ try {
213
+ const directIntent = detectDirectTargetPanelCommand(input);
214
+ if (verbose && directIntent?.command) {
215
+ const reason = directIntent.reason === "raw_shell_command"
216
+ ? "Because your input is an executable shell command, execute it directly in the target panel."
217
+ : "Because you explicitly requested direct terminal execution, execute it directly in the target panel.";
218
+ writeStep(` reason: ${reason}`);
123
219
  }
124
- },
125
- onReady: async (ctx) => {
126
- const startup = await applyStartupPanelColors();
127
- const routingState = {
128
- chatSessionId: startup.chatSessionId,
129
- chatWindowId: startup.windowId,
130
- chatTabIndex: startup.tabIndex,
131
- targetSessionId: startup.targetSessionId,
132
- windowId: startup.windowId,
133
- tabIndex: startup.tabIndex,
134
- };
135
- stopDynamicTargetRouting = enableDynamicTargetRouting(ctx, routingState);
136
- configureThreadMemoryNamespace(ctx, {
137
- chatSessionId: startup.chatSessionId,
138
- });
139
- startupColorSnapshots = startup.colorSnapshots;
140
- printStartupSummary({
141
- version: getAppVersion(),
142
- });
143
- injectTargetSessionHint(ctx, {
144
- ...startup,
145
- targetSessionId: routingState.targetSessionId,
146
- windowId: routingState.windowId,
147
- tabIndex: routingState.tabIndex,
220
+ const directOutput = await tryHandleDirectTargetPanelCommand(input, runtime, {
221
+ windowId: startup.windowId ?? undefined,
222
+ tabIndex: startup.tabIndex ?? undefined,
223
+ sessionId: startup.targetSessionId ?? undefined,
148
224
  });
149
- },
150
- interactiveCommands: {
151
- "list tools": (ctx) => {
152
- const tools = ctx.tools
153
- .map((tool) => ({
154
- name: typeof tool.name === "string" ? tool.name : "(unnamed-tool)",
155
- description: typeof tool.description === "string" && tool.description.trim().length > 0
156
- ? tool.description.trim()
157
- : "No description",
158
- }))
159
- .sort((a, b) => a.name.localeCompare(b.name));
160
- console.log(`Available tools (${tools.length}):`);
161
- for (const tool of tools) {
162
- console.log(`- ${tool.name}: ${tool.description}`);
225
+ if (directOutput === null) {
226
+ if (verbose) {
227
+ writeStep(`[${formatStepNumber(1)}] detect/translate direct command (fallback to agent)`);
228
+ writeStep(" progress 1/1");
229
+ writeStep("=== Steps complete: 1 step(s) ===");
230
+ writeStep("");
163
231
  }
164
- },
165
- "list skills": (ctx) => {
166
- const skills = (ctx.skillSet?.list() ?? [])
167
- .map((skill) => ({
168
- name: skill.name,
169
- description: (skill.description ?? "").trim() || "No description",
170
- }))
171
- .sort((a, b) => a.name.localeCompare(b.name));
172
- console.log(`Available skills (${skills.length}):`);
173
- for (const skill of skills) {
174
- console.log(`- ${skill.name}: ${skill.description}`);
175
- }
176
- },
177
- },
232
+ return null;
233
+ }
234
+ if (verbose) {
235
+ const elapsed = Date.now() - startedAt;
236
+ writeStep(`[${formatStepNumber(1)}] ✓ detect/translate direct command (${elapsed}ms)`);
237
+ writeStep(" progress 1/1");
238
+ writeStep(`=== Steps complete: 1 step(s), ${elapsed}ms ===`);
239
+ writeStep("");
240
+ }
241
+ return directOutput;
242
+ }
243
+ catch (error) {
244
+ const message = error instanceof Error ? error.message : String(error);
245
+ if (verbose) {
246
+ const elapsed = Date.now() - startedAt;
247
+ writeStep(`[${formatStepNumber(1)}] ✖ detect/translate direct command`);
248
+ writeStep(` error: ${message}`);
249
+ writeStep(" progress 1/1");
250
+ writeStep(`=== Steps complete: 1 step(s), ${elapsed}ms ===`);
251
+ writeStep("");
252
+ }
253
+ throw error;
254
+ }
255
+ }
256
+ async function main() {
257
+ ensureItermEnvironmentOrExit();
258
+ clearStartupNoise();
259
+ printStartupBanner();
260
+ const progress = new StartupProgressRenderer();
261
+ // 1. Load app config (prompt templates only)
262
+ const appConfigPath = resolveConfigPath("config/app.yaml", process.cwd());
263
+ const appConfig = await runStartupStep(progress, "init app config", () => loadAppConfig(appConfigPath), () => formatLogPath(appConfigPath));
264
+ printSteps = appConfig.printSteps === true;
265
+ maxSteps = appConfig.maxSteps ?? 16;
266
+ responseSafetyMode = appConfig.responseSafetyMode ?? "balanced";
267
+ // 2. Identify iTerm panels and apply colors
268
+ startup = await runStartupStep(progress, "init iTerm panels", () => applyStartupPanelColors());
269
+ startupColorSnapshots = startup.colorSnapshots;
270
+ // 3. Detect target panel OS early so command translation can be OS-aware.
271
+ const osInfo = await runStartupStep(progress, "detect target os", () => detectStartupTargetOs({
272
+ windowId: startup.windowId ?? undefined,
273
+ tabIndex: startup.tabIndex ?? undefined,
274
+ sessionId: startup.targetSessionId ?? undefined,
275
+ }), (info) => `${info.os} (${info.source})`);
276
+ startupTargetOs = osInfo.os;
277
+ process.env.ITB_TARGET_OS = osInfo.os;
278
+ // 4. Build system prompt and namespace
279
+ const namespace = buildNamespace(startup.chatSessionId);
280
+ const systemPrompt = buildSystemPrompt(appConfig.promptTemplates, startup, "", {
281
+ targetOs: startupTargetOs,
282
+ });
283
+ // 5. Create agent runtime (model/memory/tools registered by application)
284
+ let runtime;
285
+ await runStartupStep(progress, "init agent runtime", async () => { runtime = await buildRuntime(systemPrompt, namespace, startup, maxSteps); }, () => `namespace=${namespace}`);
286
+ // 6. Subscribe to agent events for UI output
287
+ if (printSteps) {
288
+ const listener = createChatProgressEventListener(console.log);
289
+ runtime.events.subscribe(listener);
290
+ }
291
+ // 7. LLM health check — call LLM directly, not through agent loop
292
+ await runStartupStep(progress, "check llm health", () => runLlmHealthCheck(runtime), (label) => label);
293
+ printStartupSummary({ version: getAppVersion(), responseSafetyMode, targetOs: startupTargetOs });
294
+ // 8. Single-turn or interactive REPL
295
+ const args = process.argv.slice(2);
296
+ const question = args.find((a) => !a.startsWith("-") && a !== "react" && a !== "deep");
297
+ if (question) {
298
+ conversationTurn += 1;
299
+ const turn = conversationTurn;
300
+ printUserMessage(turn, question);
301
+ const builtin = tryHandleBuiltinReadCommand(question, runtime);
302
+ if (builtin !== null) {
303
+ printBotMessage(builtin, turn);
304
+ shutdown();
305
+ return;
306
+ }
307
+ const directOutput = await tryHandleDirectCommandWithProgress(question, runtime);
308
+ if (directOutput !== null) {
309
+ printBotMessage(directOutput, turn);
310
+ }
311
+ else {
312
+ const recoveryWriter = printSteps ? writeStepLine : () => { };
313
+ const result = await runWithTextToolCallRecovery(runtime, question, recoveryWriter, {
314
+ windowId: startup.windowId ?? undefined,
315
+ tabIndex: startup.tabIndex ?? undefined,
316
+ sessionId: startup.targetSessionId ?? undefined,
317
+ });
318
+ const safeText = enforceResponseSafetyWithMode(result.text, responseSafetyMode, {
319
+ evidenceText: result.evidenceText,
320
+ targetOs: startupTargetOs,
321
+ });
322
+ if (safeText)
323
+ printBotMessage(safeText, turn);
324
+ }
325
+ shutdown();
326
+ }
327
+ else {
328
+ await runInteractive(runtime);
329
+ }
330
+ }
331
+ main().catch((error) => {
332
+ console.error(error instanceof Error ? error.message : String(error));
333
+ shutdown();
334
+ process.exit(1);
178
335
  });
179
336
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ type RuntimeLike = {
2
+ context: {
3
+ get<T>(token: unknown): T;
4
+ };
5
+ };
6
+ export interface DirectTargetCommand {
7
+ command: string;
8
+ reason: string;
9
+ }
10
+ export interface DirectTargetHint {
11
+ windowId?: number;
12
+ tabIndex?: number;
13
+ sessionId?: string;
14
+ }
15
+ export interface DirectCommandIntentRule {
16
+ pattern?: string;
17
+ command?: string;
18
+ reason?: string;
19
+ }
20
+ export declare function setDirectCommandIntentRules(_rules: DirectCommandIntentRule[] | null | undefined): void;
21
+ export declare function detectDirectTargetPanelCommand(input: string): DirectTargetCommand | null;
22
+ export declare function tryHandleDirectTargetPanelCommand(input: string, runtime: RuntimeLike, targetHint?: DirectTargetHint): Promise<string | null>;
23
+ export {};
24
+ //# sourceMappingURL=direct-command-router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"direct-command-router.d.ts","sourceRoot":"","sources":["../../src/iterm/direct-command-router.ts"],"names":[],"mappings":"AAMA,KAAK,WAAW,GAAG;IACjB,OAAO,EAAE;QACP,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,CAAC,CAAC;KAC3B,CAAC;CACH,CAAC;AAOF,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAWD,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,uBAAuB,EAAE,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAAG;AAuD1G,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAWxF;AA8ID,wBAAsB,iCAAiC,CACrD,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,WAAW,EACpB,UAAU,CAAC,EAAE,gBAAgB,GAC5B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAkBxB"}