neural-loom 0.2.63 → 0.2.65
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/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +3 -3
- package/.next/cache/.previewinfo +1 -1
- package/.next/cache/.rscinfo +1 -1
- package/.next/cache/.tsbuildinfo +1 -1
- package/.next/fallback-build-manifest.json +3 -3
- package/.next/prerender-manifest.json +3 -3
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +1 -1
- package/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +1 -1
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/index.segments/_full.segment.rsc +1 -1
- package/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/server/app/index.segments/_index.segment.rsc +1 -1
- package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/server/chunks/[root-of-the-server]__0li1h1u._.js +2 -2
- package/.next/server/chunks/[root-of-the-server]__0li1h1u._.js.map +1 -1
- package/.next/server/chunks/[root-of-the-server]__0tq0maq._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0tq0maq._.js.map +1 -1
- package/.next/server/middleware-build-manifest.js +3 -3
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/trace +1 -1
- package/.next/trace-build +1 -1
- package/package.json +1 -1
- package/src/lib/agents/AgentRunner.ts +18 -15
- package/src/lib/agents/SessionManager.ts +2 -0
- /package/.next/static/{APb04GYK6UqdlTOS5yzSV → zUCsAnPxQ6s8RKYlEvQVH}/_buildManifest.js +0 -0
- /package/.next/static/{APb04GYK6UqdlTOS5yzSV → zUCsAnPxQ6s8RKYlEvQVH}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{APb04GYK6UqdlTOS5yzSV → zUCsAnPxQ6s8RKYlEvQVH}/_ssgManifest.js +0 -0
|
@@ -40,9 +40,14 @@ export abstract class AgentRunner {
|
|
|
40
40
|
lastSyncedWorkspaceFolders?: string[];
|
|
41
41
|
tokenUsage: { input: number; output: number; cost: number } = { input: 0, output: 0, cost: 0 };
|
|
42
42
|
agentState: 'idle' | 'thinking' | 'complete' | 'needs-input' = 'idle';
|
|
43
|
+
protected hasAnalyzedInitialState = false;
|
|
43
44
|
private stateTimer: NodeJS.Timeout | null = null;
|
|
44
45
|
private lastLoggedUsage = { input: 0, output: 0, cost: 0 };
|
|
45
46
|
|
|
47
|
+
public resetInitialStateAnalysis(): void {
|
|
48
|
+
this.hasAnalyzedInitialState = false;
|
|
49
|
+
}
|
|
50
|
+
|
|
46
51
|
protected logTokenUsageUpdate(): void {
|
|
47
52
|
if (
|
|
48
53
|
this.tokenUsage.input === this.lastLoggedUsage.input &&
|
|
@@ -142,7 +147,10 @@ export abstract class AgentRunner {
|
|
|
142
147
|
abstract stop(): Promise<void>;
|
|
143
148
|
abstract sendInput(text: string, isRaw?: boolean): Promise<void>;
|
|
144
149
|
getStatus(): RunnerStatus {
|
|
145
|
-
this.
|
|
150
|
+
if (!this.hasAnalyzedInitialState && this.status === 'running') {
|
|
151
|
+
this.analyzeState();
|
|
152
|
+
this.hasAnalyzedInitialState = true;
|
|
153
|
+
}
|
|
146
154
|
return {
|
|
147
155
|
id: this.id,
|
|
148
156
|
name: this.name,
|
|
@@ -212,16 +220,18 @@ export abstract class AgentRunner {
|
|
|
212
220
|
}, 800);
|
|
213
221
|
}
|
|
214
222
|
|
|
215
|
-
|
|
223
|
+
private analyzeState(): void {
|
|
216
224
|
if (this.status !== 'running') {
|
|
217
225
|
this.agentState = 'idle';
|
|
218
226
|
return;
|
|
219
227
|
}
|
|
220
228
|
|
|
221
229
|
const tailLines = this.logs.slice(-5).join("");
|
|
222
|
-
const cleanTail = tailLines.replace(
|
|
230
|
+
const cleanTail = tailLines.replace(/\x1b\[[0-9;]*[a-zA-Z]/g, "").trim();
|
|
223
231
|
|
|
224
|
-
|
|
232
|
+
const isQuestion =
|
|
233
|
+
/(\[y\/n\]|\(y\/n\)|\?|confirm|allow|should I|would you|press enter|proceed)/i.test(cleanTail);
|
|
234
|
+
|
|
225
235
|
const isPrompt =
|
|
226
236
|
cleanTail.endsWith(">") ||
|
|
227
237
|
cleanTail.endsWith("> ") ||
|
|
@@ -229,13 +239,10 @@ export abstract class AgentRunner {
|
|
|
229
239
|
cleanTail.endsWith("$") ||
|
|
230
240
|
cleanTail.endsWith("$ ");
|
|
231
241
|
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
if (isPrompt) {
|
|
238
|
-
if (this.agentState === 'thinking' || this.agentState === 'needs-input') {
|
|
242
|
+
if (isQuestion) {
|
|
243
|
+
this.agentState = 'needs-input';
|
|
244
|
+
} else if (isPrompt) {
|
|
245
|
+
if (this.agentState === 'thinking') {
|
|
239
246
|
this.agentState = 'complete';
|
|
240
247
|
|
|
241
248
|
if (this.stateTimer) clearTimeout(this.stateTimer);
|
|
@@ -245,10 +252,6 @@ export abstract class AgentRunner {
|
|
|
245
252
|
}
|
|
246
253
|
}, 5000);
|
|
247
254
|
}
|
|
248
|
-
} else if (isQuestion) {
|
|
249
|
-
this.agentState = 'needs-input';
|
|
250
|
-
} else {
|
|
251
|
-
this.agentState = 'idle';
|
|
252
255
|
}
|
|
253
256
|
}
|
|
254
257
|
}
|
|
@@ -107,6 +107,7 @@ export class SessionManager {
|
|
|
107
107
|
runner.workspaceRoot = workspaceRoot;
|
|
108
108
|
runner.scopedDirs = scopedDirs;
|
|
109
109
|
|
|
110
|
+
runner.resetInitialStateAnalysis();
|
|
110
111
|
await runner.start();
|
|
111
112
|
this.sessions.set(id, runner);
|
|
112
113
|
SessionPersister.saveSession(runner, true);
|
|
@@ -180,6 +181,7 @@ export class SessionManager {
|
|
|
180
181
|
public async startSession(id: string, resume?: boolean): Promise<boolean> {
|
|
181
182
|
const runner = this.sessions.get(id);
|
|
182
183
|
if (!runner) return false;
|
|
184
|
+
runner.resetInitialStateAnalysis();
|
|
183
185
|
await runner.start(resume);
|
|
184
186
|
SessionPersister.saveSession(runner, true);
|
|
185
187
|
return true;
|
|
File without changes
|
/package/.next/static/{APb04GYK6UqdlTOS5yzSV → zUCsAnPxQ6s8RKYlEvQVH}/_clientMiddlewareManifest.js
RENAMED
|
File without changes
|
|
File without changes
|