atom-lite 0.4.1 → 0.6.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/CHANGELOG.md +35 -1
- package/README.md +41 -108
- package/dist/agent/loop.d.ts +15 -0
- package/dist/agent/loop.js +277 -57
- package/dist/agent/loop.js.map +1 -1
- package/dist/agent/model-turn.d.ts +37 -0
- package/dist/agent/model-turn.js +53 -0
- package/dist/agent/model-turn.js.map +1 -0
- package/dist/agent/system-prompt.d.ts +1 -0
- package/dist/agent/system-prompt.js +23 -0
- package/dist/agent/system-prompt.js.map +1 -0
- package/dist/agent/turn-recorder.d.ts +33 -0
- package/dist/agent/turn-recorder.js +74 -0
- package/dist/agent/turn-recorder.js.map +1 -0
- package/dist/agent/types.d.ts +15 -0
- package/dist/cli/app.js +570 -68
- package/dist/cli/app.js.map +1 -1
- package/dist/cli/commands.d.ts +3 -0
- package/dist/cli/commands.js +20 -5
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/diff-view.d.ts +18 -0
- package/dist/cli/diff-view.js +66 -0
- package/dist/cli/diff-view.js.map +1 -0
- package/dist/cli/main.js +2 -2
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/mouse.js +4 -1
- package/dist/cli/mouse.js.map +1 -1
- package/dist/cli/panel.js +8 -8
- package/dist/cli/panel.js.map +1 -1
- package/dist/cli/status-line.d.ts +2 -0
- package/dist/cli/status-line.js +9 -1
- package/dist/cli/status-line.js.map +1 -1
- package/dist/cli/stream-text.js +1 -0
- package/dist/cli/stream-text.js.map +1 -1
- package/dist/cli/theme.d.ts +1 -1
- package/dist/cli/theme.js +2 -0
- package/dist/cli/theme.js.map +1 -1
- package/dist/cli/tool-box.d.ts +1 -1
- package/dist/cli/tool-box.js +44 -39
- package/dist/cli/tool-box.js.map +1 -1
- package/dist/cli/transcript.d.ts +15 -1
- package/dist/cli/transcript.js +40 -1
- package/dist/cli/transcript.js.map +1 -1
- package/dist/cli/trust-prompt.d.ts +24 -0
- package/dist/cli/trust-prompt.js +89 -0
- package/dist/cli/trust-prompt.js.map +1 -0
- package/dist/config/defaults.d.ts +6 -5
- package/dist/config/defaults.js +8 -3
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/load.js +33 -3
- package/dist/config/load.js.map +1 -1
- package/dist/config/paths.d.ts +2 -0
- package/dist/config/paths.js +12 -1
- package/dist/config/paths.js.map +1 -1
- package/dist/config/schema.d.ts +14 -14
- package/dist/config/schema.js +6 -5
- package/dist/config/schema.js.map +1 -1
- package/dist/context/manager.d.ts +17 -3
- package/dist/context/manager.js +129 -41
- package/dist/context/manager.js.map +1 -1
- package/dist/extensions/api.d.ts +51 -1
- package/dist/extensions/api.js +124 -6
- package/dist/extensions/api.js.map +1 -1
- package/dist/extensions/discovery.d.ts +16 -0
- package/dist/extensions/discovery.js +191 -108
- package/dist/extensions/discovery.js.map +1 -1
- package/dist/extensions/loader.d.ts +42 -1
- package/dist/extensions/loader.js +272 -32
- package/dist/extensions/loader.js.map +1 -1
- package/dist/extensions/session-manager.d.ts +44 -0
- package/dist/extensions/session-manager.js +137 -0
- package/dist/extensions/session-manager.js.map +1 -0
- package/dist/extensions/tool-adapter.d.ts +12 -0
- package/dist/extensions/tool-adapter.js +157 -0
- package/dist/extensions/tool-adapter.js.map +1 -0
- package/dist/extensions/trust.d.ts +2 -0
- package/dist/extensions/trust.js +32 -17
- package/dist/extensions/trust.js.map +1 -1
- package/dist/extensions/types.d.ts +45 -3
- package/dist/extensions/ui.d.ts +21 -0
- package/dist/extensions/ui.js +75 -0
- package/dist/extensions/ui.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/stdio-transport.js +3 -20
- package/dist/mcp/stdio-transport.js.map +1 -1
- package/dist/runtime/modes.d.ts +3 -0
- package/dist/runtime/modes.js +8 -0
- package/dist/runtime/modes.js.map +1 -0
- package/dist/runtime/scheduler.d.ts +4 -3
- package/dist/runtime/scheduler.js +7 -105
- package/dist/runtime/scheduler.js.map +1 -1
- package/dist/runtime/tool-executor.d.ts +18 -0
- package/dist/runtime/tool-executor.js +136 -0
- package/dist/runtime/tool-executor.js.map +1 -0
- package/dist/security/process.d.ts +10 -0
- package/dist/security/process.js +36 -0
- package/dist/security/process.js.map +1 -1
- package/dist/sessions/store.js +2 -3
- package/dist/sessions/store.js.map +1 -1
- package/dist/skills/registry.js +8 -1
- package/dist/skills/registry.js.map +1 -1
- package/dist/tools/bash.js +7 -4
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/glob.d.ts +2 -0
- package/dist/tools/glob.js +97 -0
- package/dist/tools/glob.js.map +1 -0
- package/dist/tools/grep.d.ts +2 -0
- package/dist/tools/grep.js +290 -0
- package/dist/tools/grep.js.map +1 -0
- package/dist/tools/index.d.ts +2 -0
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/types.d.ts +8 -0
- package/dist/types.d.ts +0 -3
- package/dist/types.js +1 -4
- package/dist/types.js.map +1 -1
- package/package.json +5 -2
- package/skills/atom-lite-extensions/SKILL.md +240 -0
- package/skills/caveman/SKILL.md +89 -0
- package/skills/code-review/SKILL.md +46 -0
- package/skills/optimization/SKILL.md +51 -0
package/dist/agent/loop.js
CHANGED
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
import { DEFAULT_LIMITS } from "../types.js";
|
|
2
2
|
import { executeToolBatch } from "../runtime/scheduler.js";
|
|
3
3
|
import { ContextManager } from "../context/manager.js";
|
|
4
|
+
import { DEFAULT_SYSTEM_PROMPT } from "./system-prompt.js";
|
|
5
|
+
import { runModelTurn } from "./model-turn.js";
|
|
6
|
+
import { TurnRecorder } from "./turn-recorder.js";
|
|
4
7
|
export class AgentRuntime {
|
|
5
8
|
provider;
|
|
6
9
|
model;
|
|
7
10
|
workspace;
|
|
8
11
|
approvals;
|
|
12
|
+
mode;
|
|
13
|
+
maxTokensPerSession;
|
|
14
|
+
maxTokensPerTurn;
|
|
15
|
+
totalTokensUsed;
|
|
9
16
|
contextManager;
|
|
10
17
|
onEvent;
|
|
11
18
|
tools;
|
|
@@ -13,6 +20,8 @@ export class AgentRuntime {
|
|
|
13
20
|
bashConcurrency;
|
|
14
21
|
toolMap;
|
|
15
22
|
limits;
|
|
23
|
+
extensionDispatch;
|
|
24
|
+
steeringQueue;
|
|
16
25
|
systemPrompt;
|
|
17
26
|
contextWindow;
|
|
18
27
|
contextUsed;
|
|
@@ -21,6 +30,10 @@ export class AgentRuntime {
|
|
|
21
30
|
this.model = options.model ?? "default";
|
|
22
31
|
this.workspace = options.workspace ?? process.cwd();
|
|
23
32
|
this.approvals = options.approvals;
|
|
33
|
+
this.mode = options.mode ?? "plan";
|
|
34
|
+
this.maxTokensPerSession = options.maxTokensPerSession ?? null;
|
|
35
|
+
this.maxTokensPerTurn = options.maxTokensPerTurn ?? null;
|
|
36
|
+
this.totalTokensUsed = 0;
|
|
24
37
|
this.onEvent = options.onEvent;
|
|
25
38
|
this.tools = options.tools;
|
|
26
39
|
this.effort = options.effort ?? "medium";
|
|
@@ -28,7 +41,7 @@ export class AgentRuntime {
|
|
|
28
41
|
this.contextManager =
|
|
29
42
|
options.contextManager ??
|
|
30
43
|
new ContextManager({
|
|
31
|
-
systemPrompt: options.systemPrompt ??
|
|
44
|
+
systemPrompt: options.systemPrompt ?? DEFAULT_SYSTEM_PROMPT,
|
|
32
45
|
maxInputTokens: null,
|
|
33
46
|
reserveOutputTokens: 4096,
|
|
34
47
|
compactAtPercent: 85,
|
|
@@ -38,7 +51,9 @@ export class AgentRuntime {
|
|
|
38
51
|
});
|
|
39
52
|
this.toolMap = new Map(options.tools.map((t) => [t.definition.name, t]));
|
|
40
53
|
this.limits = { ...DEFAULT_LIMITS, ...(options.limits ?? {}) };
|
|
41
|
-
this.
|
|
54
|
+
this.extensionDispatch = options.extensionDispatch;
|
|
55
|
+
this.steeringQueue = options.steeringQueue;
|
|
56
|
+
this.systemPrompt = options.systemPrompt ?? DEFAULT_SYSTEM_PROMPT;
|
|
42
57
|
this.contextWindow = options.contextWindow;
|
|
43
58
|
this.contextManager.setModelContextWindow(options.contextWindow);
|
|
44
59
|
}
|
|
@@ -76,6 +91,29 @@ export class AgentRuntime {
|
|
|
76
91
|
setEffort(effort) {
|
|
77
92
|
this.effort = effort;
|
|
78
93
|
}
|
|
94
|
+
setMode(mode) {
|
|
95
|
+
this.mode = mode;
|
|
96
|
+
}
|
|
97
|
+
getMode() {
|
|
98
|
+
return this.mode;
|
|
99
|
+
}
|
|
100
|
+
setSteeringQueue(queue) {
|
|
101
|
+
this.steeringQueue = queue;
|
|
102
|
+
}
|
|
103
|
+
async compactSession(session, focus) {
|
|
104
|
+
const summary = await this.contextManager.compactHistory(this.workspace, session.messages, focus);
|
|
105
|
+
if (summary) {
|
|
106
|
+
this.contextManager.setSessionMemory(summary, this.contextManager.getLastCompactionCoveredCount());
|
|
107
|
+
if (typeof session.appendEvent === "function") {
|
|
108
|
+
session.appendEvent({
|
|
109
|
+
type: "context_compacted",
|
|
110
|
+
summary,
|
|
111
|
+
coveredCount: this.contextManager.getLastCompactionCoveredCount(),
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return summary;
|
|
116
|
+
}
|
|
79
117
|
/** Replace the toolset, e.g. after MCP discovery or a list_changed refresh. */
|
|
80
118
|
setTools(tools) {
|
|
81
119
|
this.tools = tools;
|
|
@@ -85,65 +123,89 @@ export class AgentRuntime {
|
|
|
85
123
|
return this.effort;
|
|
86
124
|
}
|
|
87
125
|
async runAgentTurn(input, session, signal) {
|
|
126
|
+
// Restore any persisted session memory for resumed sessions.
|
|
127
|
+
const events = session.events;
|
|
128
|
+
if (Array.isArray(events)) {
|
|
129
|
+
const latest = [...events].reverse().find((e) => e?.type === "context_compacted");
|
|
130
|
+
this.contextManager.setSessionMemory(typeof latest?.summary === "string" ? latest.summary : null, typeof latest?.coveredCount === "number" ? latest.coveredCount : undefined);
|
|
131
|
+
}
|
|
88
132
|
session.appendMessage({ role: "user", content: [{ type: "text", text: input }] });
|
|
89
|
-
|
|
133
|
+
await this.extensionDispatch?.("turn_start", { type: "turn_start" });
|
|
134
|
+
let forceContinue = false;
|
|
90
135
|
const start = Date.now();
|
|
91
|
-
|
|
136
|
+
while (true) {
|
|
137
|
+
forceContinue = false;
|
|
138
|
+
// Drain any steering messages into the session before the next model turn.
|
|
139
|
+
if (this.steeringQueue && this.steeringQueue.length > 0) {
|
|
140
|
+
while (this.steeringQueue.length > 0) {
|
|
141
|
+
const msg = this.steeringQueue.shift();
|
|
142
|
+
session.appendMessage({
|
|
143
|
+
role: "user",
|
|
144
|
+
content: [{ type: "text", text: msg }],
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
}
|
|
92
148
|
if (signal.aborted) {
|
|
93
149
|
throw new Error("USER_CANCELLED");
|
|
94
150
|
}
|
|
95
|
-
if (Date.now() - start > this.limits.maxExecutionMs) {
|
|
96
|
-
return "TASK_BUDGET_REACHED";
|
|
97
|
-
}
|
|
98
151
|
const messages = await this.contextManager.build(this.workspace, session.messages);
|
|
99
152
|
if (this.contextManager.consumeCompaction()) {
|
|
100
153
|
// Peers treat usage as unknown after compaction until the next
|
|
101
154
|
// assistant response reports fresh numbers.
|
|
102
155
|
this.contextUsed = undefined;
|
|
103
156
|
this.emitContextUsage();
|
|
157
|
+
const summary = this.contextManager.consumeCompactionSummary();
|
|
158
|
+
const coveredCount = this.contextManager.consumeCompactionCoveredCount();
|
|
159
|
+
if (summary && typeof session.appendEvent === "function") {
|
|
160
|
+
session.appendEvent({
|
|
161
|
+
type: "context_compacted",
|
|
162
|
+
summary,
|
|
163
|
+
coveredCount,
|
|
164
|
+
});
|
|
165
|
+
}
|
|
104
166
|
}
|
|
105
|
-
|
|
167
|
+
let response;
|
|
168
|
+
let streamedText = "";
|
|
169
|
+
await this.extensionDispatch?.("before_provider_request", {
|
|
170
|
+
type: "before_provider_request",
|
|
171
|
+
messages,
|
|
172
|
+
tools: this.tools.map((t) => t.definition),
|
|
173
|
+
});
|
|
174
|
+
for await (const ev of runModelTurn({
|
|
175
|
+
provider: this.provider,
|
|
106
176
|
model: this.model,
|
|
107
177
|
messages,
|
|
108
178
|
tools: this.tools.map((t) => t.definition),
|
|
179
|
+
effort: this.effort,
|
|
109
180
|
signal,
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
let streamedText = "";
|
|
114
|
-
if (typeof this.provider.stream === "function") {
|
|
115
|
-
// Stream tokens as they arrive.
|
|
116
|
-
for await (const ev of this.provider.stream(request)) {
|
|
117
|
-
if (ev.type === "thinking") {
|
|
118
|
-
this.onEvent?.({ type: "thinking_delta", text: ev.text });
|
|
119
|
-
}
|
|
120
|
-
else if (ev.type === "text") {
|
|
121
|
-
streamedText += ev.text;
|
|
122
|
-
this.onEvent?.({ type: "assistant_delta", text: ev.text });
|
|
123
|
-
}
|
|
124
|
-
else if (ev.type === "done") {
|
|
125
|
-
response = ev.response;
|
|
126
|
-
}
|
|
181
|
+
})) {
|
|
182
|
+
if (ev.type === "thinking_delta") {
|
|
183
|
+
this.onEvent?.({ type: "thinking_delta", text: ev.text });
|
|
127
184
|
}
|
|
128
|
-
if (
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
};
|
|
185
|
+
else if (ev.type === "assistant_delta") {
|
|
186
|
+
streamedText += ev.text;
|
|
187
|
+
this.onEvent?.({ type: "assistant_delta", text: ev.text });
|
|
188
|
+
}
|
|
189
|
+
else if (ev.type === "assistant_text") {
|
|
190
|
+
streamedText = ev.text;
|
|
191
|
+
this.onEvent?.({ type: "assistant_text", text: ev.text });
|
|
192
|
+
}
|
|
193
|
+
else if (ev.type === "final") {
|
|
194
|
+
response = ev.response;
|
|
195
|
+
streamedText = ev.streamedText;
|
|
135
196
|
}
|
|
136
197
|
}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
198
|
+
await this.extensionDispatch?.("after_provider_response", {
|
|
199
|
+
type: "after_provider_response",
|
|
200
|
+
response,
|
|
201
|
+
});
|
|
202
|
+
const recorder = new TurnRecorder({
|
|
203
|
+
session,
|
|
204
|
+
onEvent: this.onEvent,
|
|
205
|
+
extensionDispatch: this.extensionDispatch,
|
|
206
|
+
});
|
|
207
|
+
const text = await recorder.recordAssistant(response, streamedText);
|
|
145
208
|
if (response.usage) {
|
|
146
|
-
this.onEvent?.({ type: "usage", input: response.usage.input, output: response.usage.output });
|
|
147
209
|
const used = (response.usage.input ?? 0) + (response.usage.output ?? 0);
|
|
148
210
|
if (used > 0) {
|
|
149
211
|
// The latest assistant step's prompt + generated tokens is the
|
|
@@ -151,21 +213,91 @@ export class AgentRuntime {
|
|
|
151
213
|
this.contextUsed = used;
|
|
152
214
|
this.emitContextUsage();
|
|
153
215
|
}
|
|
216
|
+
const turnTokens = used > 0 ? used : 0;
|
|
217
|
+
if (this.maxTokensPerTurn !== null &&
|
|
218
|
+
turnTokens > this.maxTokensPerTurn) {
|
|
219
|
+
this.onEvent?.({
|
|
220
|
+
type: "budget_warning",
|
|
221
|
+
scope: "turn",
|
|
222
|
+
used: turnTokens,
|
|
223
|
+
limit: this.maxTokensPerTurn,
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
if (turnTokens > 0) {
|
|
227
|
+
this.totalTokensUsed += turnTokens;
|
|
228
|
+
}
|
|
229
|
+
if (this.maxTokensPerSession !== null &&
|
|
230
|
+
this.totalTokensUsed > this.maxTokensPerSession) {
|
|
231
|
+
this.onEvent?.({
|
|
232
|
+
type: "budget_warning",
|
|
233
|
+
scope: "session",
|
|
234
|
+
used: this.totalTokensUsed,
|
|
235
|
+
limit: this.maxTokensPerSession,
|
|
236
|
+
});
|
|
237
|
+
await this.extensionDispatch?.("agent_settled", {
|
|
238
|
+
type: "agent_settled",
|
|
239
|
+
});
|
|
240
|
+
return "TOKEN_BUDGET_REACHED";
|
|
241
|
+
}
|
|
154
242
|
}
|
|
155
|
-
const text = streamedText || (response.message.content?.map((p) => (p.type === "text" ? p.text : "")).join("") ?? "");
|
|
156
243
|
const toolCalls = response.toolCalls ?? [];
|
|
157
244
|
if (toolCalls.length === 0) {
|
|
158
|
-
|
|
245
|
+
// turn_end / agent_before_settle continuation handling.
|
|
246
|
+
let continued = false;
|
|
247
|
+
const turnResults = await this.extensionDispatch?.("turn_end", {
|
|
248
|
+
type: "turn_end",
|
|
249
|
+
});
|
|
250
|
+
for (const r of turnResults ?? []) {
|
|
251
|
+
if (r && r.continue)
|
|
252
|
+
continued = true;
|
|
253
|
+
}
|
|
254
|
+
if (continued) {
|
|
255
|
+
forceContinue = true;
|
|
256
|
+
continue;
|
|
257
|
+
}
|
|
258
|
+
const settleResults = await this.extensionDispatch?.("agent_before_settle", { type: "agent_before_settle" });
|
|
259
|
+
for (const r of settleResults ?? []) {
|
|
260
|
+
if (r && r.continue)
|
|
261
|
+
continued = true;
|
|
262
|
+
}
|
|
263
|
+
if (continued) {
|
|
264
|
+
forceContinue = true;
|
|
265
|
+
continue;
|
|
266
|
+
}
|
|
267
|
+
await this.extensionDispatch?.("agent_settled", {
|
|
268
|
+
type: "agent_settled",
|
|
269
|
+
});
|
|
159
270
|
return text;
|
|
160
271
|
}
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
272
|
+
// Emit tool_call events; allow mutation and block decisions.
|
|
273
|
+
const blocked = new Set();
|
|
274
|
+
let terminate = false;
|
|
275
|
+
for (const call of toolCalls) {
|
|
276
|
+
const payload = {
|
|
277
|
+
type: "tool_call",
|
|
278
|
+
toolCallId: call.id,
|
|
279
|
+
name: call.name,
|
|
280
|
+
input: call.arguments,
|
|
281
|
+
};
|
|
282
|
+
const results = await this.extensionDispatch?.("tool_call", payload);
|
|
283
|
+
// Apply in-place mutation.
|
|
284
|
+
if (payload.input && payload.input !== call.arguments) {
|
|
285
|
+
call.arguments = payload.input;
|
|
286
|
+
}
|
|
287
|
+
for (const r of results ?? []) {
|
|
288
|
+
if (r && typeof r === "object") {
|
|
289
|
+
if (r.block)
|
|
290
|
+
blocked.add(call.id);
|
|
291
|
+
if (r.terminate)
|
|
292
|
+
terminate = true;
|
|
293
|
+
if (r.input)
|
|
294
|
+
call.arguments = r.input;
|
|
295
|
+
}
|
|
296
|
+
}
|
|
166
297
|
}
|
|
167
298
|
const ctx = {
|
|
168
299
|
workspace: this.workspace,
|
|
300
|
+
mode: this.mode,
|
|
169
301
|
signal,
|
|
170
302
|
maxBashTimeMs: this.limits.maxBashTimeMs,
|
|
171
303
|
maxToolOutputBytes: this.limits.maxToolOutputBytes,
|
|
@@ -178,24 +310,112 @@ export class AgentRuntime {
|
|
|
178
310
|
stream,
|
|
179
311
|
text,
|
|
180
312
|
});
|
|
313
|
+
void this.extensionDispatch?.("tool_execution_update", {
|
|
314
|
+
type: "tool_execution_update",
|
|
315
|
+
toolCallId: call.id,
|
|
316
|
+
name: call.name,
|
|
317
|
+
stream,
|
|
318
|
+
text,
|
|
319
|
+
});
|
|
181
320
|
},
|
|
182
321
|
};
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
322
|
+
// Wrapped tool map emits tool_execution_start/end.
|
|
323
|
+
const wrappedToolMap = new Map(this.toolMap);
|
|
324
|
+
for (const [name, tool] of this.toolMap) {
|
|
325
|
+
wrappedToolMap.set(name, {
|
|
326
|
+
...tool,
|
|
327
|
+
execute: async (call, ctx2) => {
|
|
328
|
+
await this.extensionDispatch?.("tool_execution_start", {
|
|
329
|
+
type: "tool_execution_start",
|
|
330
|
+
toolCallId: call.id,
|
|
331
|
+
name: call.name,
|
|
332
|
+
args: call.arguments,
|
|
333
|
+
});
|
|
334
|
+
let result;
|
|
335
|
+
try {
|
|
336
|
+
result = await tool.execute(call, ctx2);
|
|
337
|
+
}
|
|
338
|
+
catch (err) {
|
|
339
|
+
result = {
|
|
340
|
+
toolCallId: call.id,
|
|
341
|
+
name: call.name,
|
|
342
|
+
content: `COMMAND_FAILED: ${err instanceof Error ? err.message : String(err)}`,
|
|
343
|
+
isError: true,
|
|
344
|
+
};
|
|
345
|
+
}
|
|
346
|
+
await this.extensionDispatch?.("tool_execution_end", {
|
|
347
|
+
type: "tool_execution_end",
|
|
348
|
+
toolCallId: call.id,
|
|
349
|
+
name: call.name,
|
|
350
|
+
result,
|
|
351
|
+
isError: result?.isError,
|
|
352
|
+
});
|
|
353
|
+
return result;
|
|
354
|
+
},
|
|
190
355
|
});
|
|
191
|
-
|
|
356
|
+
}
|
|
357
|
+
const blockedResults = new Map();
|
|
358
|
+
for (const call of toolCalls) {
|
|
359
|
+
if (!blocked.has(call.id))
|
|
360
|
+
continue;
|
|
361
|
+
const reason = "blocked by extension";
|
|
362
|
+
const r = {
|
|
363
|
+
toolCallId: call.id,
|
|
364
|
+
name: call.name,
|
|
365
|
+
content: reason,
|
|
366
|
+
isError: true,
|
|
367
|
+
};
|
|
368
|
+
blockedResults.set(call.id, r);
|
|
369
|
+
await this.extensionDispatch?.("tool_execution_start", {
|
|
370
|
+
type: "tool_execution_start",
|
|
371
|
+
toolCallId: call.id,
|
|
372
|
+
name: call.name,
|
|
373
|
+
args: call.arguments,
|
|
374
|
+
});
|
|
375
|
+
await this.extensionDispatch?.("tool_execution_end", {
|
|
376
|
+
type: "tool_execution_end",
|
|
377
|
+
toolCallId: call.id,
|
|
378
|
+
name: call.name,
|
|
379
|
+
result: r,
|
|
380
|
+
isError: true,
|
|
381
|
+
});
|
|
382
|
+
}
|
|
383
|
+
const execCalls = toolCalls.filter((c) => !blocked.has(c.id));
|
|
384
|
+
const execResults = await executeToolBatch(execCalls, wrappedToolMap, ctx, this.limits.maxParallelToolCalls, signal, undefined, this.bashConcurrency);
|
|
385
|
+
const resultMap = new Map();
|
|
386
|
+
for (const r of blockedResults.values())
|
|
387
|
+
resultMap.set(r.toolCallId, r);
|
|
388
|
+
for (const r of execResults) {
|
|
389
|
+
// Emit tool_result event and allow patches.
|
|
390
|
+
const payload = {
|
|
192
391
|
type: "tool_result",
|
|
193
392
|
toolCallId: r.toolCallId,
|
|
194
393
|
name: r.name,
|
|
195
394
|
content: r.content,
|
|
395
|
+
details: r.details,
|
|
396
|
+
structuredContent: r.structuredContent,
|
|
196
397
|
isError: r.isError,
|
|
197
|
-
|
|
398
|
+
usage: r.usage,
|
|
399
|
+
};
|
|
400
|
+
await this.extensionDispatch?.("tool_result", payload);
|
|
401
|
+
r.content = payload.content ?? r.content;
|
|
402
|
+
r.details = payload.details ?? r.details;
|
|
403
|
+
r.structuredContent = payload.structuredContent ?? r.structuredContent;
|
|
404
|
+
r.isError = payload.isError ?? r.isError;
|
|
405
|
+
r.usage = payload.usage ?? r.usage;
|
|
406
|
+
resultMap.set(r.toolCallId, r);
|
|
407
|
+
}
|
|
408
|
+
const orderedResults = toolCalls
|
|
409
|
+
.map((c) => resultMap.get(c.id))
|
|
410
|
+
.filter(Boolean);
|
|
411
|
+
for (const r of orderedResults) {
|
|
412
|
+
recorder.recordToolResult(r);
|
|
413
|
+
}
|
|
414
|
+
if (terminate) {
|
|
415
|
+
await this.extensionDispatch?.("agent_settled", {
|
|
416
|
+
type: "agent_settled",
|
|
198
417
|
});
|
|
418
|
+
return text;
|
|
199
419
|
}
|
|
200
420
|
}
|
|
201
421
|
return "TASK_BUDGET_REACHED";
|
package/dist/agent/loop.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/agent/loop.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/agent/loop.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { Message, ModelRequest } from "../types.js";
|
|
2
|
+
import type { ProviderAdapter } from "../providers/types.js";
|
|
3
|
+
export interface ModelTurnRequest {
|
|
4
|
+
provider: ProviderAdapter;
|
|
5
|
+
model: string;
|
|
6
|
+
messages: Message[];
|
|
7
|
+
tools: ModelRequest["tools"];
|
|
8
|
+
effort: string;
|
|
9
|
+
signal: AbortSignal;
|
|
10
|
+
}
|
|
11
|
+
export type ModelTurnEvent = {
|
|
12
|
+
type: "thinking_delta";
|
|
13
|
+
text: string;
|
|
14
|
+
} | {
|
|
15
|
+
type: "assistant_delta";
|
|
16
|
+
text: string;
|
|
17
|
+
} | {
|
|
18
|
+
type: "assistant_text";
|
|
19
|
+
text: string;
|
|
20
|
+
} | {
|
|
21
|
+
type: "final";
|
|
22
|
+
response: {
|
|
23
|
+
message: Message;
|
|
24
|
+
toolCalls?: ModelRequest extends {
|
|
25
|
+
tools: infer T;
|
|
26
|
+
} ? unknown : unknown;
|
|
27
|
+
usage?: {
|
|
28
|
+
input?: number;
|
|
29
|
+
output?: number;
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
streamedText: string;
|
|
33
|
+
};
|
|
34
|
+
export declare class ModelTurn {
|
|
35
|
+
static run(request: ModelTurnRequest): AsyncGenerator<ModelTurnEvent, any, any>;
|
|
36
|
+
}
|
|
37
|
+
export declare function runModelTurn(request: ModelTurnRequest): AsyncGenerator<ModelTurnEvent>;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export class ModelTurn {
|
|
2
|
+
static run(request) {
|
|
3
|
+
return runModelTurn(request);
|
|
4
|
+
}
|
|
5
|
+
}
|
|
6
|
+
export async function* runModelTurn(request) {
|
|
7
|
+
const modelRequest = {
|
|
8
|
+
model: request.model,
|
|
9
|
+
messages: request.messages,
|
|
10
|
+
tools: request.tools,
|
|
11
|
+
signal: request.signal,
|
|
12
|
+
options: { effort: request.effort },
|
|
13
|
+
};
|
|
14
|
+
if (typeof request.provider.stream === "function") {
|
|
15
|
+
let response;
|
|
16
|
+
let streamedText = "";
|
|
17
|
+
for await (const ev of request.provider.stream(modelRequest)) {
|
|
18
|
+
if (ev.type === "thinking") {
|
|
19
|
+
yield { type: "thinking_delta", text: ev.text };
|
|
20
|
+
}
|
|
21
|
+
else if (ev.type === "text") {
|
|
22
|
+
streamedText += ev.text;
|
|
23
|
+
yield { type: "assistant_delta", text: ev.text };
|
|
24
|
+
}
|
|
25
|
+
else if (ev.type === "done") {
|
|
26
|
+
response = ev.response;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
if (!response) {
|
|
30
|
+
response = {
|
|
31
|
+
message: {
|
|
32
|
+
role: "assistant",
|
|
33
|
+
content: streamedText
|
|
34
|
+
? [{ type: "text", text: streamedText }]
|
|
35
|
+
: undefined,
|
|
36
|
+
},
|
|
37
|
+
toolCalls: [],
|
|
38
|
+
finishReason: "stop",
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
yield { type: "final", response, streamedText };
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
const response = await request.provider.generate(modelRequest);
|
|
45
|
+
const text = response.message.content
|
|
46
|
+
?.map((p) => (p.type === "text" ? p.text : ""))
|
|
47
|
+
.join("") ?? "";
|
|
48
|
+
if (text) {
|
|
49
|
+
yield { type: "assistant_text", text };
|
|
50
|
+
}
|
|
51
|
+
yield { type: "final", response, streamedText: text };
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=model-turn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-turn.js","sourceRoot":"","sources":["../../src/agent/model-turn.ts"],"names":[],"mappings":"AA0BA,MAAM,OAAO,SAAS;IACpB,MAAM,CAAC,GAAG,CAAC,OAAyB;QAClC,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;CACF;AAED,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,YAAY,CACjC,OAAyB;IAEzB,MAAM,YAAY,GAAiB;QACjC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE;KACpC,CAAC;IAEF,IAAI,OAAO,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QAClD,IAAI,QAAa,CAAC;QAClB,IAAI,YAAY,GAAG,EAAE,CAAC;QACtB,IAAI,KAAK,EAAE,MAAM,EAAE,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;YAC7D,IAAI,EAAE,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC3B,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;YAClD,CAAC;iBAAM,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC9B,YAAY,IAAI,EAAE,CAAC,IAAI,CAAC;gBACxB,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;YACnD,CAAC;iBAAM,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC9B,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC;YACzB,CAAC;QACH,CAAC;QACD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,QAAQ,GAAG;gBACT,OAAO,EAAE;oBACP,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE,YAAY;wBACnB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;wBACxC,CAAC,CAAC,SAAS;iBACd;gBACD,SAAS,EAAE,EAAE;gBACb,YAAY,EAAE,MAAM;aACrB,CAAC;QACJ,CAAC;QACD,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;QAChD,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC/D,MAAM,IAAI,GACR,QAAQ,CAAC,OAAO,CAAC,OAAO;QACtB,EAAE,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SACnD,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;IACpB,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC;IACzC,CAAC;IACD,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;AACxD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const DEFAULT_SYSTEM_PROMPT = "You are Atom-lite, an AI coding agent built by Beast-ofcourse[Bhavin bogam]\n\nYour goal is to understand the user's intent and accomplish tasks accurately with minimal overhead.\n\n- Explore the codebase before making changes.\n- Use tools proactively; never guess when you can verify.\n- Prefer simple, maintainable solutions over unnecessary complexity.\n- Execute independent tool calls in parallel when safe.\n- Read relevant context before editing.\n- Preserve existing conventions and avoid unrelated changes.\n- Verify changes with tests, builds, or other appropriate checks.\n- Recover intelligently from errors instead of repeating failed approaches.\n- Be honest about limitations, failures, and unverified results.\n- Manage context efficiently; retain important information during compaction.\n- Ask for clarification only when genuinely necessary.\n- Never claim to have performed an action you did not perform.\n\nYou are autonomous, but not reckless. Prioritize correctness, efficiency, and user intent.\n\nBe concise. Focus on execution, not narration.";
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// Default system prompt for Atom-lite. Kept short: project instructions and
|
|
2
|
+
// the skill index are appended by ContextManager on top of this.
|
|
3
|
+
export const DEFAULT_SYSTEM_PROMPT = `You are Atom-lite, an AI coding agent built by Beast-ofcourse[Bhavin bogam]
|
|
4
|
+
|
|
5
|
+
Your goal is to understand the user's intent and accomplish tasks accurately with minimal overhead.
|
|
6
|
+
|
|
7
|
+
- Explore the codebase before making changes.
|
|
8
|
+
- Use tools proactively; never guess when you can verify.
|
|
9
|
+
- Prefer simple, maintainable solutions over unnecessary complexity.
|
|
10
|
+
- Execute independent tool calls in parallel when safe.
|
|
11
|
+
- Read relevant context before editing.
|
|
12
|
+
- Preserve existing conventions and avoid unrelated changes.
|
|
13
|
+
- Verify changes with tests, builds, or other appropriate checks.
|
|
14
|
+
- Recover intelligently from errors instead of repeating failed approaches.
|
|
15
|
+
- Be honest about limitations, failures, and unverified results.
|
|
16
|
+
- Manage context efficiently; retain important information during compaction.
|
|
17
|
+
- Ask for clarification only when genuinely necessary.
|
|
18
|
+
- Never claim to have performed an action you did not perform.
|
|
19
|
+
|
|
20
|
+
You are autonomous, but not reckless. Prioritize correctness, efficiency, and user intent.
|
|
21
|
+
|
|
22
|
+
Be concise. Focus on execution, not narration.`;
|
|
23
|
+
//# sourceMappingURL=system-prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../../src/agent/system-prompt.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,iEAAiE;AAEjE,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;+CAmBU,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { Message } from "../types.js";
|
|
2
|
+
export interface TurnRecorderOptions {
|
|
3
|
+
session: {
|
|
4
|
+
appendMessage(message: Message): void;
|
|
5
|
+
};
|
|
6
|
+
onEvent?: (event: unknown) => void;
|
|
7
|
+
extensionDispatch?: (event: string, payload: any) => Promise<any[]> | any[];
|
|
8
|
+
}
|
|
9
|
+
export declare class TurnRecorder {
|
|
10
|
+
private session;
|
|
11
|
+
private onEvent;
|
|
12
|
+
private extensionDispatch;
|
|
13
|
+
constructor(options: TurnRecorderOptions);
|
|
14
|
+
recordAssistant(response: {
|
|
15
|
+
message: Message;
|
|
16
|
+
toolCalls?: Array<{
|
|
17
|
+
id: string;
|
|
18
|
+
name: string;
|
|
19
|
+
arguments: Record<string, unknown>;
|
|
20
|
+
}>;
|
|
21
|
+
usage?: {
|
|
22
|
+
input?: number;
|
|
23
|
+
output?: number;
|
|
24
|
+
};
|
|
25
|
+
}, streamedText: string): Promise<string>;
|
|
26
|
+
recordToolResult(result: {
|
|
27
|
+
toolCallId: string;
|
|
28
|
+
name: string;
|
|
29
|
+
content: string;
|
|
30
|
+
isError?: boolean;
|
|
31
|
+
diff?: string[];
|
|
32
|
+
}): void;
|
|
33
|
+
}
|