jiva-core 0.3.3 → 0.3.4-dev.3c78d8b
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/README.md +232 -570
- package/dist/code/agent.d.ts +105 -0
- package/dist/code/agent.d.ts.map +1 -0
- package/dist/code/agent.js +697 -0
- package/dist/code/agent.js.map +1 -0
- package/dist/code/file-lock.d.ts +15 -0
- package/dist/code/file-lock.d.ts.map +1 -0
- package/dist/code/file-lock.js +36 -0
- package/dist/code/file-lock.js.map +1 -0
- package/dist/code/lsp/client.d.ts +30 -0
- package/dist/code/lsp/client.d.ts.map +1 -0
- package/dist/code/lsp/client.js +181 -0
- package/dist/code/lsp/client.js.map +1 -0
- package/dist/code/lsp/language.d.ts +12 -0
- package/dist/code/lsp/language.d.ts.map +1 -0
- package/dist/code/lsp/language.js +145 -0
- package/dist/code/lsp/language.js.map +1 -0
- package/dist/code/lsp/manager.d.ts +39 -0
- package/dist/code/lsp/manager.d.ts.map +1 -0
- package/dist/code/lsp/manager.js +108 -0
- package/dist/code/lsp/manager.js.map +1 -0
- package/dist/code/lsp/server.d.ts +15 -0
- package/dist/code/lsp/server.d.ts.map +1 -0
- package/dist/code/lsp/server.js +78 -0
- package/dist/code/lsp/server.js.map +1 -0
- package/dist/code/tools/bash.d.ts +3 -0
- package/dist/code/tools/bash.d.ts.map +1 -0
- package/dist/code/tools/bash.js +110 -0
- package/dist/code/tools/bash.js.map +1 -0
- package/dist/code/tools/edit.d.ts +11 -0
- package/dist/code/tools/edit.d.ts.map +1 -0
- package/dist/code/tools/edit.js +459 -0
- package/dist/code/tools/edit.js.map +1 -0
- package/dist/code/tools/glob.d.ts +3 -0
- package/dist/code/tools/glob.d.ts.map +1 -0
- package/dist/code/tools/glob.js +62 -0
- package/dist/code/tools/glob.js.map +1 -0
- package/dist/code/tools/grep.d.ts +3 -0
- package/dist/code/tools/grep.d.ts.map +1 -0
- package/dist/code/tools/grep.js +147 -0
- package/dist/code/tools/grep.js.map +1 -0
- package/dist/code/tools/index.d.ts +31 -0
- package/dist/code/tools/index.d.ts.map +1 -0
- package/dist/code/tools/index.js +9 -0
- package/dist/code/tools/index.js.map +1 -0
- package/dist/code/tools/read.d.ts +3 -0
- package/dist/code/tools/read.d.ts.map +1 -0
- package/dist/code/tools/read.js +120 -0
- package/dist/code/tools/read.js.map +1 -0
- package/dist/code/tools/spawn.d.ts +3 -0
- package/dist/code/tools/spawn.d.ts.map +1 -0
- package/dist/code/tools/spawn.js +49 -0
- package/dist/code/tools/spawn.js.map +1 -0
- package/dist/code/tools/write.d.ts +3 -0
- package/dist/code/tools/write.d.ts.map +1 -0
- package/dist/code/tools/write.js +82 -0
- package/dist/code/tools/write.js.map +1 -0
- package/dist/core/agent-interface.d.ts +54 -0
- package/dist/core/agent-interface.d.ts.map +1 -0
- package/dist/core/agent-interface.js +8 -0
- package/dist/core/agent-interface.js.map +1 -0
- package/dist/core/config.d.ts +71 -0
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +16 -0
- package/dist/core/config.js.map +1 -1
- package/dist/core/conversation-manager.d.ts +4 -1
- package/dist/core/conversation-manager.d.ts.map +1 -1
- package/dist/core/conversation-manager.js +47 -17
- package/dist/core/conversation-manager.js.map +1 -1
- package/dist/core/dual-agent.d.ts +3 -10
- package/dist/core/dual-agent.d.ts.map +1 -1
- package/dist/core/dual-agent.js +42 -117
- package/dist/core/dual-agent.js.map +1 -1
- package/dist/core/manager-agent.d.ts +30 -1
- package/dist/core/manager-agent.d.ts.map +1 -1
- package/dist/core/manager-agent.js +109 -17
- package/dist/core/manager-agent.js.map +1 -1
- package/dist/core/worker-agent.d.ts +5 -2
- package/dist/core/worker-agent.d.ts.map +1 -1
- package/dist/core/worker-agent.js +48 -51
- package/dist/core/worker-agent.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/interfaces/cli/index.js +88 -25
- package/dist/interfaces/cli/index.js.map +1 -1
- package/dist/interfaces/cli/repl.d.ts +8 -2
- package/dist/interfaces/cli/repl.d.ts.map +1 -1
- package/dist/interfaces/cli/repl.js +39 -3
- package/dist/interfaces/cli/repl.js.map +1 -1
- package/dist/interfaces/http/routes/chat.js +2 -2
- package/dist/interfaces/http/routes/chat.js.map +1 -1
- package/dist/interfaces/http/session-manager.d.ts +7 -4
- package/dist/interfaces/http/session-manager.d.ts.map +1 -1
- package/dist/interfaces/http/session-manager.js +38 -15
- package/dist/interfaces/http/session-manager.js.map +1 -1
- package/dist/models/base.d.ts +8 -0
- package/dist/models/base.d.ts.map +1 -1
- package/dist/models/harmony.d.ts +7 -1
- package/dist/models/harmony.d.ts.map +1 -1
- package/dist/models/harmony.js +21 -3
- package/dist/models/harmony.js.map +1 -1
- package/dist/models/krutrim.d.ts +30 -0
- package/dist/models/krutrim.d.ts.map +1 -1
- package/dist/models/krutrim.js +51 -8
- package/dist/models/krutrim.js.map +1 -1
- package/package.json +8 -6
package/dist/core/config.d.ts
CHANGED
|
@@ -57,6 +57,32 @@ declare const ModelConfigSchema: z.ZodObject<{
|
|
|
57
57
|
defaultModel: string;
|
|
58
58
|
useHarmonyFormat?: boolean | undefined;
|
|
59
59
|
}>;
|
|
60
|
+
declare const CodeModeConfigSchema: z.ZodObject<{
|
|
61
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
62
|
+
lsp: z.ZodOptional<z.ZodObject<{
|
|
63
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
64
|
+
}, "strip", z.ZodTypeAny, {
|
|
65
|
+
enabled: boolean;
|
|
66
|
+
}, {
|
|
67
|
+
enabled?: boolean | undefined;
|
|
68
|
+
}>>;
|
|
69
|
+
maxIterations: z.ZodDefault<z.ZodNumber>;
|
|
70
|
+
includeMcp: z.ZodDefault<z.ZodBoolean>;
|
|
71
|
+
}, "strip", z.ZodTypeAny, {
|
|
72
|
+
enabled: boolean;
|
|
73
|
+
maxIterations: number;
|
|
74
|
+
includeMcp: boolean;
|
|
75
|
+
lsp?: {
|
|
76
|
+
enabled: boolean;
|
|
77
|
+
} | undefined;
|
|
78
|
+
}, {
|
|
79
|
+
enabled?: boolean | undefined;
|
|
80
|
+
lsp?: {
|
|
81
|
+
enabled?: boolean | undefined;
|
|
82
|
+
} | undefined;
|
|
83
|
+
maxIterations?: number | undefined;
|
|
84
|
+
includeMcp?: boolean | undefined;
|
|
85
|
+
}>;
|
|
60
86
|
declare const JivaConfigSchema: z.ZodObject<{
|
|
61
87
|
models: z.ZodObject<{
|
|
62
88
|
reasoning: z.ZodOptional<z.ZodObject<{
|
|
@@ -221,6 +247,32 @@ declare const JivaConfigSchema: z.ZodObject<{
|
|
|
221
247
|
}>>;
|
|
222
248
|
activePersona: z.ZodOptional<z.ZodString>;
|
|
223
249
|
debug: z.ZodDefault<z.ZodBoolean>;
|
|
250
|
+
codeMode: z.ZodOptional<z.ZodObject<{
|
|
251
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
252
|
+
lsp: z.ZodOptional<z.ZodObject<{
|
|
253
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
254
|
+
}, "strip", z.ZodTypeAny, {
|
|
255
|
+
enabled: boolean;
|
|
256
|
+
}, {
|
|
257
|
+
enabled?: boolean | undefined;
|
|
258
|
+
}>>;
|
|
259
|
+
maxIterations: z.ZodDefault<z.ZodNumber>;
|
|
260
|
+
includeMcp: z.ZodDefault<z.ZodBoolean>;
|
|
261
|
+
}, "strip", z.ZodTypeAny, {
|
|
262
|
+
enabled: boolean;
|
|
263
|
+
maxIterations: number;
|
|
264
|
+
includeMcp: boolean;
|
|
265
|
+
lsp?: {
|
|
266
|
+
enabled: boolean;
|
|
267
|
+
} | undefined;
|
|
268
|
+
}, {
|
|
269
|
+
enabled?: boolean | undefined;
|
|
270
|
+
lsp?: {
|
|
271
|
+
enabled?: boolean | undefined;
|
|
272
|
+
} | undefined;
|
|
273
|
+
maxIterations?: number | undefined;
|
|
274
|
+
includeMcp?: boolean | undefined;
|
|
275
|
+
}>>;
|
|
224
276
|
}, "strip", z.ZodTypeAny, {
|
|
225
277
|
models: {
|
|
226
278
|
reasoning?: {
|
|
@@ -261,6 +313,14 @@ declare const JivaConfigSchema: z.ZodObject<{
|
|
|
261
313
|
defaultDirectivePath?: string | undefined;
|
|
262
314
|
} | undefined;
|
|
263
315
|
activePersona?: string | undefined;
|
|
316
|
+
codeMode?: {
|
|
317
|
+
enabled: boolean;
|
|
318
|
+
maxIterations: number;
|
|
319
|
+
includeMcp: boolean;
|
|
320
|
+
lsp?: {
|
|
321
|
+
enabled: boolean;
|
|
322
|
+
} | undefined;
|
|
323
|
+
} | undefined;
|
|
264
324
|
}, {
|
|
265
325
|
models: {
|
|
266
326
|
reasoning?: {
|
|
@@ -301,9 +361,18 @@ declare const JivaConfigSchema: z.ZodObject<{
|
|
|
301
361
|
} | undefined;
|
|
302
362
|
activePersona?: string | undefined;
|
|
303
363
|
debug?: boolean | undefined;
|
|
364
|
+
codeMode?: {
|
|
365
|
+
enabled?: boolean | undefined;
|
|
366
|
+
lsp?: {
|
|
367
|
+
enabled?: boolean | undefined;
|
|
368
|
+
} | undefined;
|
|
369
|
+
maxIterations?: number | undefined;
|
|
370
|
+
includeMcp?: boolean | undefined;
|
|
371
|
+
} | undefined;
|
|
304
372
|
}>;
|
|
305
373
|
export type MCPServerConfig = z.infer<typeof MCPServerConfigSchema>;
|
|
306
374
|
export type ModelConfig = z.infer<typeof ModelConfigSchema>;
|
|
375
|
+
export type CodeModeConfig = z.infer<typeof CodeModeConfigSchema>;
|
|
307
376
|
export type JivaConfig = z.infer<typeof JivaConfigSchema>;
|
|
308
377
|
export declare class ConfigManager {
|
|
309
378
|
private store;
|
|
@@ -328,6 +397,8 @@ export declare class ConfigManager {
|
|
|
328
397
|
getDefaultDirectivePath(): string | undefined;
|
|
329
398
|
setActivePersona(name: string | null): void;
|
|
330
399
|
getActivePersona(): string | undefined;
|
|
400
|
+
getCodeMode(): CodeModeConfig | undefined;
|
|
401
|
+
setCodeModeEnabled(enabled: boolean): void;
|
|
331
402
|
reset(): void;
|
|
332
403
|
getConfigPath(): string;
|
|
333
404
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAc1B,CAAC;AAEF,QAAA,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;EAOrB,CAAC;AAEH,QAAA,MAAM,gBAAgB
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAc1B,CAAC;AAEF,QAAA,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;EAOrB,CAAC;AAEH,QAAA,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;EAOxB,CAAC;AAEH,QAAA,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAapB,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,qBAAa,aAAa;IACxB,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgB;IAEvC,OAAO;IAMP,MAAM,CAAC,WAAW,IAAI,aAAa;IAOnC,YAAY,IAAI,OAAO;IAKvB,SAAS,IAAI,UAAU;IAIvB,iBAAiB,CAAC,MAAM,EAAE,WAAW;IAKrC,kBAAkB,CAAC,MAAM,EAAE,WAAW;IAKtC,iBAAiB,IAAI,WAAW,GAAG,SAAS;IAI5C,kBAAkB,IAAI,WAAW,GAAG,SAAS;IAI7C,mBAAmB,CAAC,MAAM,EAAE,WAAW;IAKvC,mBAAmB,IAAI,WAAW,GAAG,SAAS;IAI9C,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe;IAKlD,eAAe,CAAC,IAAI,EAAE,MAAM;IAI5B,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC;IAIhD,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAIvD,QAAQ,CAAC,OAAO,EAAE,OAAO;IAIzB,OAAO,IAAI,OAAO;IAIlB,uBAAuB,CAAC,IAAI,EAAE,MAAM;IAIpC,uBAAuB,IAAI,MAAM,GAAG,SAAS;IAI7C,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAQpC,gBAAgB,IAAI,MAAM,GAAG,SAAS;IAItC,WAAW,IAAI,cAAc,GAAG,SAAS;IAIzC,kBAAkB,CAAC,OAAO,EAAE,OAAO;IAKnC,KAAK;IAIL,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,wBAAwB;IAyBxB;;OAEG;IACH,cAAc;CAsBf;AAED,eAAO,MAAM,aAAa,eAA8B,CAAC"}
|
package/dist/core/config.js
CHANGED
|
@@ -22,6 +22,14 @@ const ModelConfigSchema = z.object({
|
|
|
22
22
|
defaultModel: z.string(),
|
|
23
23
|
useHarmonyFormat: z.boolean().optional(),
|
|
24
24
|
});
|
|
25
|
+
const CodeModeConfigSchema = z.object({
|
|
26
|
+
enabled: z.boolean().default(false),
|
|
27
|
+
lsp: z.object({
|
|
28
|
+
enabled: z.boolean().default(true),
|
|
29
|
+
}).optional(),
|
|
30
|
+
maxIterations: z.number().default(50),
|
|
31
|
+
includeMcp: z.boolean().default(false),
|
|
32
|
+
});
|
|
25
33
|
const JivaConfigSchema = z.object({
|
|
26
34
|
models: z.object({
|
|
27
35
|
reasoning: ModelConfigSchema.optional(),
|
|
@@ -34,6 +42,7 @@ const JivaConfigSchema = z.object({
|
|
|
34
42
|
}).optional(),
|
|
35
43
|
activePersona: z.string().optional(),
|
|
36
44
|
debug: z.boolean().default(false),
|
|
45
|
+
codeMode: CodeModeConfigSchema.optional(),
|
|
37
46
|
});
|
|
38
47
|
export class ConfigManager {
|
|
39
48
|
store;
|
|
@@ -113,6 +122,13 @@ export class ConfigManager {
|
|
|
113
122
|
getActivePersona() {
|
|
114
123
|
return this.store.get('activePersona');
|
|
115
124
|
}
|
|
125
|
+
getCodeMode() {
|
|
126
|
+
return this.store.get('codeMode');
|
|
127
|
+
}
|
|
128
|
+
setCodeModeEnabled(enabled) {
|
|
129
|
+
const current = this.store.get('codeMode') || {};
|
|
130
|
+
this.store.set('codeMode', { ...current, enabled });
|
|
131
|
+
}
|
|
116
132
|
reset() {
|
|
117
133
|
this.store.clear();
|
|
118
134
|
}
|
package/dist/core/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,+BAA+B,EAAE,MAAM,sBAAsB,CAAC;AAEvE,6BAA6B;AAC7B,0DAA0D;AAC1D,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,kCAAkC;IAClC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACpC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAEpC,iCAAiC;IACjC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAChC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAExC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CACnC,CAAC,CAAC,MAAM,CACP,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,EAClE,EAAE,OAAO,EAAE,mEAAmE,EAAE,CACjF,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC1B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC;IACzD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACzC,CAAC,CAAC;AAEH,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,SAAS,EAAE,iBAAiB,CAAC,QAAQ,EAAE;QACvC,UAAU,EAAE,iBAAiB,CAAC,QAAQ,EAAE;QACxC,WAAW,EAAE,iBAAiB,CAAC,QAAQ,EAAE;KAC1C,CAAC;IACF,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,QAAQ,EAAE;IACtD,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC;QAClB,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC5C,CAAC,CAAC,QAAQ,EAAE;IACb,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,9 +43,12 @@ export declare class ConversationManager {
|
|
|
43
43
|
*/
|
|
44
44
|
deleteConversation(id: string): Promise<void>;
|
|
45
45
|
/**
|
|
46
|
-
* Condense conversation history using the model
|
|
46
|
+
* Condense conversation history using the model.
|
|
47
47
|
*
|
|
48
48
|
* This reduces token usage while preserving important context.
|
|
49
|
+
* Uses a structured opencode-style template (Goal / Instructions / Discoveries /
|
|
50
|
+
* Accomplished / Relevant files) that makes the summary actionable for the next agent turn.
|
|
51
|
+
*
|
|
49
52
|
* Strategy: Keep system/developer messages (WITHOUT directive - agent will add fresh directive),
|
|
50
53
|
* condense middle messages, keep recent messages.
|
|
51
54
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-manager.d.ts","sourceRoot":"","sources":["../../src/core/conversation-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,qBAAqB,CAAuB;gBAExC,eAAe,EAAE,eAAe,EAAE,YAAY,CAAC,EAAE,iBAAiB;IAK9E,OAAO,CAAC,YAAY,CAAC,CAAoB;IAEzC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAM9B;;OAEG;IACG,gBAAgB,CACpB,QAAQ,EAAE,OAAO,EAAE,EACnB,SAAS,CAAC,EAAE,MAAM,EAClB,cAAc,CAAC,EAAE,MAAM,EACvB,YAAY,CAAC,EAAE,iBAAiB,GAC/B,OAAO,CAAC,MAAM,CAAC;IAyDlB;;OAEG;IACG,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAkB9D;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAgB1D;;OAEG;IACG,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAcnD
|
|
1
|
+
{"version":3,"file":"conversation-manager.d.ts","sourceRoot":"","sources":["../../src/core/conversation-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,qBAAqB,CAAuB;gBAExC,eAAe,EAAE,eAAe,EAAE,YAAY,CAAC,EAAE,iBAAiB;IAK9E,OAAO,CAAC,YAAY,CAAC,CAAoB;IAEzC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAM9B;;OAEG;IACG,gBAAgB,CACpB,QAAQ,EAAE,OAAO,EAAE,EACnB,SAAS,CAAC,EAAE,MAAM,EAClB,cAAc,CAAC,EAAE,MAAM,EACvB,YAAY,CAAC,EAAE,iBAAiB,GAC/B,OAAO,CAAC,MAAM,CAAC;IAyDlB;;OAEG;IACG,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAkB9D;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAgB1D;;OAEG;IACG,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAcnD;;;;;;;;;;;;OAYG;IACG,oBAAoB,CACxB,QAAQ,EAAE,OAAO,EAAE,EACnB,YAAY,EAAE,iBAAiB,EAC/B,kBAAkB,GAAE,MAAW,GAC9B,OAAO,CAAC,OAAO,EAAE,CAAC;IA2GrB;;OAEG;IACG,aAAa,CACjB,QAAQ,EAAE,OAAO,EAAE,EACnB,YAAY,EAAE,iBAAiB,GAC9B,OAAO,CAAC,MAAM,CAAC;IAuDlB;;OAEG;IACH,OAAO,CAAC,eAAe;IAKvB;;OAEG;IACG,eAAe,CACnB,QAAQ,EAAE,OAAO,EAAE,EACnB,YAAY,EAAE,iBAAiB,GAC9B,OAAO,CAAC,MAAM,CAAC;IA4BlB;;OAEG;IACG,QAAQ,CACZ,QAAQ,EAAE,OAAO,EAAE,EACnB,SAAS,CAAC,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,iBAAiB,GAC/B,OAAO,CAAC,IAAI,CAAC;IAQhB;;OAEG;IACH,wBAAwB,IAAI,MAAM,GAAG,IAAI;IAIzC;;OAEG;IACH,wBAAwB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI;CAG9D"}
|
|
@@ -124,9 +124,12 @@ export class ConversationManager {
|
|
|
124
124
|
}
|
|
125
125
|
}
|
|
126
126
|
/**
|
|
127
|
-
* Condense conversation history using the model
|
|
127
|
+
* Condense conversation history using the model.
|
|
128
128
|
*
|
|
129
129
|
* This reduces token usage while preserving important context.
|
|
130
|
+
* Uses a structured opencode-style template (Goal / Instructions / Discoveries /
|
|
131
|
+
* Accomplished / Relevant files) that makes the summary actionable for the next agent turn.
|
|
132
|
+
*
|
|
130
133
|
* Strategy: Keep system/developer messages (WITHOUT directive - agent will add fresh directive),
|
|
131
134
|
* condense middle messages, keep recent messages.
|
|
132
135
|
*
|
|
@@ -151,34 +154,61 @@ export class ConversationManager {
|
|
|
151
154
|
return messages;
|
|
152
155
|
}
|
|
153
156
|
try {
|
|
154
|
-
// Create a summary of the middle section
|
|
157
|
+
// Create a summary of the middle section using opencode's structured template
|
|
155
158
|
const conversationText = middleMessages
|
|
156
159
|
.map(msg => {
|
|
157
|
-
|
|
158
|
-
|
|
160
|
+
if (msg.role === 'tool') {
|
|
161
|
+
const content = typeof msg.content === 'string' ? msg.content : JSON.stringify(msg.content);
|
|
162
|
+
return `[Tool result]: ${content.substring(0, 300)}${content.length > 300 ? '...' : ''}`;
|
|
163
|
+
}
|
|
164
|
+
const role = msg.role === 'assistant' ? 'Assistant' : msg.role === 'user' ? 'User' : msg.role;
|
|
165
|
+
const content = typeof msg.content === 'string' ? msg.content : JSON.stringify(msg.content);
|
|
166
|
+
return `${role}: ${content}`;
|
|
159
167
|
})
|
|
160
168
|
.join('\n\n');
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
169
|
+
// Structured compaction prompt (ported from opencode's compaction.ts)
|
|
170
|
+
const summaryPrompt = `Provide a detailed summary for continuing our conversation. The summary will be used so another agent can read it and continue the work.
|
|
171
|
+
|
|
172
|
+
When constructing the summary, follow this template:
|
|
173
|
+
|
|
174
|
+
## Goal
|
|
175
|
+
|
|
176
|
+
[What goal(s) is the user trying to accomplish?]
|
|
177
|
+
|
|
178
|
+
## Instructions
|
|
179
|
+
|
|
180
|
+
- [What important instructions did the user give that are still relevant]
|
|
181
|
+
- [If there is a plan or spec, include information about it so the next agent can continue using it]
|
|
182
|
+
|
|
183
|
+
## Discoveries
|
|
184
|
+
|
|
185
|
+
[What notable things were learned during this conversation that would be useful for the next agent to know when continuing the work]
|
|
186
|
+
|
|
187
|
+
## Accomplished
|
|
188
|
+
|
|
189
|
+
[What work has been completed, what work is still in progress, and what work is left?]
|
|
190
|
+
|
|
191
|
+
## Relevant files / directories
|
|
192
|
+
|
|
193
|
+
[Construct a structured list of relevant files that have been read, edited, or created that pertain to the task at hand. If all the files in a directory are relevant, include the path to the directory.]
|
|
194
|
+
|
|
195
|
+
---
|
|
166
196
|
|
|
167
|
-
|
|
197
|
+
Conversation to summarise:
|
|
198
|
+
${conversationText}
|
|
168
199
|
|
|
169
|
-
|
|
170
|
-
${conversationText}`;
|
|
200
|
+
Keep the summary focused and complete — include file paths, function names, and specific changes made.`;
|
|
171
201
|
const response = await orchestrator.chat({
|
|
172
202
|
messages: [
|
|
173
203
|
{ role: 'user', content: summaryPrompt }
|
|
174
204
|
],
|
|
175
|
-
temperature: 0.1, // Low temperature for deterministic
|
|
176
|
-
maxTokens:
|
|
205
|
+
temperature: 0.1, // Low temperature for deterministic summarisation
|
|
206
|
+
maxTokens: 1500,
|
|
177
207
|
});
|
|
178
|
-
// Create condensed message
|
|
208
|
+
// Create condensed message (role: 'user' so it's valid in all API formats)
|
|
179
209
|
const condensedMessage = {
|
|
180
|
-
role: '
|
|
181
|
-
content: `[
|
|
210
|
+
role: 'user',
|
|
211
|
+
content: `[Context compacted — previous conversation history summarised]\n\n${response.content}\n\n[Continuing conversation...]`,
|
|
182
212
|
};
|
|
183
213
|
// Return: system + developer + condensed summary + recent messages
|
|
184
214
|
// Note: directive is NOT included here - agent adds it dynamically
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-manager.js","sourceRoot":"","sources":["../../src/core/conversation-manager.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"conversation-manager.js","sourceRoot":"","sources":["../../src/core/conversation-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAe5C,MAAM,OAAO,mBAAmB;IACtB,eAAe,CAAkB;IACjC,qBAAqB,GAAkB,IAAI,CAAC;IAEpD,YAAY,eAAgC,EAAE,YAAgC;QAC5E,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAEO,YAAY,CAAqB;IAEzC;;OAEG;IACK,sBAAsB;QAC5B,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACjE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1D,OAAO,QAAQ,SAAS,IAAI,MAAM,EAAE,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CACpB,QAAmB,EACnB,SAAkB,EAClB,cAAuB,EACvB,YAAgC;QAEhC,MAAM,OAAO,GAAG,cAAc,IAAI,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAE9F,oEAAoE;QACpE,MAAM,iBAAiB,GAAG,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC;QAE5D,yCAAyC;QACzC,IAAI,YAAY,GAA6B,IAAI,CAAC;QAClD,IAAI,IAAI,CAAC,qBAAqB,IAAI,OAAO,KAAK,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACzE,IAAI,CAAC;gBACH,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YACtE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,0BAA0B;YAC5B,CAAC;QACH,CAAC;QAED,qFAAqF;QACrF,IAAI,KAAK,GAAG,YAAY,EAAE,QAAQ,EAAE,KAAK,CAAC;QAC1C,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;QACjE,IAAI,CAAC,KAAK,IAAI,cAAc,IAAI,iBAAiB,EAAE,CAAC;YAClD,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;YAChD,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;YAC9D,MAAM,CAAC,IAAI,CAAC,oBAAoB,KAAK,EAAE,CAAC,CAAC;QAC3C,CAAC;aAAM,IAAI,CAAC,KAAK,IAAI,cAAc,EAAE,CAAC;YACpC,+DAA+D;YAC/D,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;YAC3D,IAAI,YAAY,IAAI,OAAO,YAAY,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAC7D,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;gBACrD,IAAI,YAAY,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;oBACrC,KAAK,IAAI,KAAK,CAAC;gBACjB,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAyB;YACrC,EAAE,EAAE,OAAO;YACX,KAAK;YACL,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpE,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACjC,YAAY,EAAE,QAAQ,CAAC,MAAM;YAC7B,SAAS;YACT,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO;SACzC,CAAC;QAEF,MAAM,YAAY,GAAsB;YACtC,QAAQ;YACR,QAAQ;SACT,CAAC;QAEF,MAAM,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAE1D,IAAI,CAAC,qBAAqB,GAAG,OAAO,CAAC;QACrC,MAAM,CAAC,KAAK,CAAC,uBAAuB,OAAO,EAAE,CAAC,CAAC;QAE/C,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,EAAU;QAC/B,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;YAErE,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAAC;YACnD,CAAC;YAED,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;YAChC,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC;YAE3C,OAAO,YAAY,CAAC;QACtB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;YACzD,MAAM,IAAI,KAAK,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB;QACrB,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,CAAC;YAErE,2CAA2C;YAC3C,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC1B,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAC9D,CAAC;YAEF,OAAO,aAAa,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;YACpD,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CAAC,EAAU;QACjC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;YAClD,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC;YAE5C,IAAI,IAAI,CAAC,qBAAqB,KAAK,EAAE,EAAE,CAAC;gBACtC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;YACpC,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;YAC3D,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,oBAAoB,CACxB,QAAmB,EACnB,YAA+B,EAC/B,qBAA6B,EAAE;QAE/B,IAAI,QAAQ,CAAC,MAAM,IAAI,kBAAkB,EAAE,CAAC;YAC1C,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,4BAA4B,QAAQ,CAAC,MAAM,MAAM,kBAAkB,WAAW,CAAC,CAAC;QAE5F,+FAA+F;QAC/F,sFAAsF;QACtF,MAAM,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,gBAAgB,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAErC,iCAAiC;QACjC,MAAM,WAAW,GAAG,EAAE,CAAC;QACvB,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC;QAEpD,wCAAwC;QACxC,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;QAEvD,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,IAAI,CAAC;YACH,8EAA8E;YAC9E,MAAM,gBAAgB,GAAG,cAAc;iBACpC,GAAG,CAAC,GAAG,CAAC,EAAE;gBACT,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBACxB,MAAM,OAAO,GAAG,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;oBAC5F,OAAO,kBAAkB,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;gBAC3F,CAAC;gBACD,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;gBAC9F,MAAM,OAAO,GAAG,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC5F,OAAO,GAAG,IAAI,KAAK,OAAO,EAAE,CAAC;YAC/B,CAAC,CAAC;iBACD,IAAI,CAAC,MAAM,CAAC,CAAC;YAEhB,sEAAsE;YACtE,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4B1B,gBAAgB;;uGAEqF,CAAC;YAElG,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC;gBACvC,QAAQ,EAAE;oBACR,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE;iBACzC;gBACD,WAAW,EAAE,GAAG,EAAE,kDAAkD;gBACpE,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;YAEH,2EAA2E;YAC3E,MAAM,gBAAgB,GAAY;gBAChC,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,qEAAqE,QAAQ,CAAC,OAAO,kCAAkC;aACjI,CAAC;YAEF,mEAAmE;YACnE,mEAAmE;YACnE,MAAM,MAAM,GAAG;gBACb,aAAa;gBACb,gBAAgB;gBAChB,gBAAgB;gBAChB,GAAG,cAAc;aAClB,CAAC;YAEF,MAAM,CAAC,OAAO,CAAC,2BAA2B,QAAQ,CAAC,MAAM,MAAM,MAAM,CAAC,MAAM,WAAW,CAAC,CAAC;YAEzF,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;YACvD,+BAA+B;YAC/B,OAAO;gBACL,aAAa;gBACb,gBAAgB;gBAChB,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,kBAAkB,GAAG,CAAC,CAAC;aAC3C,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CACjB,QAAmB,EACnB,YAA+B;QAE/B,IAAI,CAAC;YACH,yBAAyB;YACzB,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;YAC/D,IAAI,CAAC,YAAY,IAAI,OAAO,YAAY,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAC9D,OAAO,uBAAuB,CAAC;YACjC,CAAC;YAED,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC;YAEzC,wEAAwE;YACxE,IAAI,WAAW,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;gBAC7B,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;YAClD,CAAC;YAED,+CAA+C;YAC/C,MAAM,WAAW,GAAG,2FAA2F,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;YAE/I,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC;gBACvC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;gBAClD,WAAW,EAAE,GAAG,EAAE,qDAAqD;gBACvE,SAAS,EAAE,EAAE;aACd,CAAC,CAAC;YAEH,qBAAqB;YACrB,IAAI,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACpC,2BAA2B;YAC3B,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;YAC1C,8BAA8B;YAC9B,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YACrC,eAAe;YACf,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;gBACtB,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC;YACzC,CAAC;YAED,oEAAoE;YACpE,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC3E,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC5C,IAAI,WAAW,CAAC,MAAM,GAAG,EAAE;oBAAE,KAAK,IAAI,KAAK,CAAC;YAC9C,CAAC;YAED,OAAO,KAAK,IAAI,uBAAuB,CAAC;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;YAChD,mCAAmC;YACnC,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;YAC/D,IAAI,YAAY,IAAI,OAAO,YAAY,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAC7D,IAAI,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC5D,IAAI,YAAY,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE;oBAAE,QAAQ,IAAI,KAAK,CAAC;gBACxD,OAAO,QAAQ,CAAC;YAClB,CAAC;YACD,OAAO,uBAAuB,CAAC;QACjC,CAAC;IACH,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,GAAW;QACjC,IAAI,CAAC,GAAG;YAAE,OAAO,GAAG,CAAC;QACrB,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CACnB,QAAmB,EACnB,YAA+B;QAE/B,IAAI,CAAC;YACH,yDAAyD;YACzD,MAAM,YAAY,GAAG,QAAQ;iBAC1B,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC;iBAClC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC;iBACvB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,wBAAwB;iBACpC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEd,MAAM,aAAa,GAAG;;EAE1B,YAAY;;SAEL,CAAC;YAEJ,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC;gBACvC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;gBACpD,WAAW,EAAE,GAAG,EAAE,uDAAuD;gBACzE,SAAS,EAAE,GAAG;aACf,CAAC,CAAC;YAEH,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;YAClD,OAAO,cAAc,CAAC;QACxB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CACZ,QAAmB,EACnB,SAAkB,EAClB,YAAgC;QAEhC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,qBAAqB,IAAI,SAAS,EAAE,YAAY,CAAC,CAAC;QAC1G,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED;;OAEG;IACH,wBAAwB;QACtB,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,wBAAwB,CAAC,EAA6B;QACpD,IAAI,CAAC,qBAAqB,GAAG,EAAE,IAAI,IAAI,CAAC;IAC1C,CAAC;CACF"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Dual Agent System - Coordinates Manager
|
|
2
|
+
* Dual Agent System - Coordinates Manager and Worker agents
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* - Manager: High-level planning and
|
|
4
|
+
* Two-agent architecture:
|
|
5
|
+
* - Manager: High-level planning, review, and synthesis
|
|
6
6
|
* - Worker: Task execution with tools
|
|
7
|
-
* - Client: Adaptive validation and quality control
|
|
8
7
|
*/
|
|
9
8
|
import { ModelOrchestrator } from '../models/orchestrator.js';
|
|
10
9
|
import { MCPServerManager } from '../mcp/server-manager.js';
|
|
@@ -43,7 +42,6 @@ export declare class DualAgent {
|
|
|
43
42
|
private agentSpawner;
|
|
44
43
|
private manager;
|
|
45
44
|
private worker;
|
|
46
|
-
private client;
|
|
47
45
|
private maxSubtasks;
|
|
48
46
|
private maxIterations;
|
|
49
47
|
private maxAgentDepth;
|
|
@@ -66,11 +64,6 @@ export declare class DualAgent {
|
|
|
66
64
|
* the full execution persona block (avoids Client trying to direct execution).
|
|
67
65
|
*/
|
|
68
66
|
private buildValidationContext;
|
|
69
|
-
/**
|
|
70
|
-
* Determine corrective strategy for a subtask based on CompletionSignal.
|
|
71
|
-
* Returns a description of the action taken, or null if no correction needed.
|
|
72
|
-
*/
|
|
73
|
-
private applyCorrectionStrategy;
|
|
74
67
|
/**
|
|
75
68
|
* Process user message using dual-agent architecture
|
|
76
69
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dual-agent.d.ts","sourceRoot":"","sources":["../../src/core/dual-agent.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"dual-agent.d.ts","sourceRoot":"","sources":["../../src/core/dual-agent.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAOlD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,iBAAiB,CAAC;IAChC,UAAU,EAAE,gBAAgB,CAAC;IAC7B,SAAS,EAAE,gBAAgB,CAAC;IAC5B,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,CAAC,EAAE;QACL,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,YAAY,CAAoB;IACxC,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,mBAAmB,CAA6B;IACxD,OAAO,CAAC,cAAc,CAAwB;IAC9C,OAAO,CAAC,YAAY,CAA6B;IAEjD,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,MAAM,CAAc;IAE5B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,mBAAmB,CAAS;IAEpC,OAAO,CAAC,uBAAuB,CAAiB;gBAEpC,MAAM,EAAE,eAAe;IAoDnC;;;;;;;OAOG;IACH,OAAO,CAAC,iBAAiB;IAoDzB;;;;OAIG;IACH,OAAO,CAAC,sBAAsB;IAyB9B;;OAEG;IACG,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;YA6K7C,kBAAkB;IAgBhC,OAAO,CAAC,gBAAgB;IAclB,OAAO;IAYb,iBAAiB;IASjB,sBAAsB,IAAI,OAAO,EAAE;IAInC,YAAY,IAAI,gBAAgB;IAIhC,aAAa,IAAI,gBAAgB;IAIjC,sBAAsB,IAAI,mBAAmB,GAAG,IAAI;IAIpD,iBAAiB,IAAI,cAAc,GAAG,IAAI;IAI1C;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAO5C;;OAEG;IACH,eAAe,IAAI,YAAY,GAAG,IAAI;IAIhC,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAiB1C,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY3C,iBAAiB;CAOxB"}
|
package/dist/core/dual-agent.js
CHANGED
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Dual Agent System - Coordinates Manager
|
|
2
|
+
* Dual Agent System - Coordinates Manager and Worker agents
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* - Manager: High-level planning and
|
|
4
|
+
* Two-agent architecture:
|
|
5
|
+
* - Manager: High-level planning, review, and synthesis
|
|
6
6
|
* - Worker: Task execution with tools
|
|
7
|
-
* - Client: Adaptive validation and quality control
|
|
8
7
|
*/
|
|
9
8
|
import { AgentSpawner } from './agent-spawner.js';
|
|
10
9
|
import { ManagerAgent } from './manager-agent.js';
|
|
11
10
|
import { WorkerAgent } from './worker-agent.js';
|
|
12
|
-
import { ClientAgent } from './client-agent.js';
|
|
13
11
|
import { serializeAgentContext } from './utils/serialize-agent-context.js';
|
|
14
12
|
import { logger } from '../utils/logger.js';
|
|
15
13
|
import { orchestrationLogger } from '../utils/orchestration-logger.js';
|
|
@@ -22,7 +20,6 @@ export class DualAgent {
|
|
|
22
20
|
agentSpawner = null;
|
|
23
21
|
manager;
|
|
24
22
|
worker;
|
|
25
|
-
client;
|
|
26
23
|
maxSubtasks;
|
|
27
24
|
maxIterations;
|
|
28
25
|
maxAgentDepth;
|
|
@@ -36,14 +33,13 @@ export class DualAgent {
|
|
|
36
33
|
this.conversationManager = config.conversationManager || null;
|
|
37
34
|
this.personaManager = config.personaManager || null;
|
|
38
35
|
this.maxSubtasks = config.maxSubtasks || 10;
|
|
39
|
-
this.maxIterations = config.maxIterations ||
|
|
36
|
+
this.maxIterations = config.maxIterations || 20;
|
|
40
37
|
this.maxAgentDepth = config.maxAgentDepth ?? 1; // Default: only Manager can spawn
|
|
41
38
|
this.autoSave = config.autoSave !== false;
|
|
42
39
|
this.condensingThreshold = config.condensingThreshold || 30;
|
|
43
|
-
// Initialize agents (
|
|
40
|
+
// Initialize agents (Manager + Worker architecture)
|
|
44
41
|
this.manager = new ManagerAgent(this.orchestrator, this.workspace, this.personaManager || undefined);
|
|
45
42
|
this.worker = new WorkerAgent(this.orchestrator, this.mcpManager, this.workspace, this.maxIterations, this.personaManager || undefined);
|
|
46
|
-
this.client = new ClientAgent(this.orchestrator, this.mcpManager);
|
|
47
43
|
// Initialize AgentSpawner - always available as a baseline tool
|
|
48
44
|
// Create a PersonaManager if one wasn't provided
|
|
49
45
|
let spawnerPersonaManager = this.personaManager;
|
|
@@ -59,7 +55,7 @@ export class DualAgent {
|
|
|
59
55
|
currentDepth: 0,
|
|
60
56
|
});
|
|
61
57
|
this.worker.setAgentSpawner(this.agentSpawner);
|
|
62
|
-
logger.info('[*]
|
|
58
|
+
logger.info('[*] Two-agent system initialized (Manager + Worker)');
|
|
63
59
|
logger.info(`[*] Agent spawn depth limit: ${this.maxAgentDepth} (${this.maxAgentDepth === 1 ? 'only Manager can spawn' : `${this.maxAgentDepth} levels deep`})`);
|
|
64
60
|
if (this.personaManager) {
|
|
65
61
|
const activePersona = this.personaManager.getActivePersona();
|
|
@@ -147,46 +143,6 @@ VALIDATION GUIDANCE:
|
|
|
147
143
|
- Validate that Worker's tool usage is consistent with the skills it was expected to apply.
|
|
148
144
|
- Validate that any mandatory steps or safety constraints defined above were followed.`;
|
|
149
145
|
}
|
|
150
|
-
/**
|
|
151
|
-
* Determine corrective strategy for a subtask based on CompletionSignal.
|
|
152
|
-
* Returns a description of the action taken, or null if no correction needed.
|
|
153
|
-
*/
|
|
154
|
-
applyCorrectionStrategy(signal, subtask, retryCount, maxRetries, subtasksToExecute, results) {
|
|
155
|
-
if (signal.confidence === 'high')
|
|
156
|
-
return null;
|
|
157
|
-
const strategy = signal.suggestedStrategy || 'retry';
|
|
158
|
-
// Budget exhausted
|
|
159
|
-
if (retryCount >= maxRetries) {
|
|
160
|
-
if (signal.progressMade) {
|
|
161
|
-
logger.info(`[DualAgent] Retry budget exhausted but progress was made — continuing to synthesis`);
|
|
162
|
-
return null;
|
|
163
|
-
}
|
|
164
|
-
logger.warn(`[DualAgent] Retry budget exhausted with no progress — skipping subtask`);
|
|
165
|
-
return null; // handled by caller
|
|
166
|
-
}
|
|
167
|
-
switch (strategy) {
|
|
168
|
-
case 'retry':
|
|
169
|
-
return subtask; // re-queue same instruction
|
|
170
|
-
case 'rephrase':
|
|
171
|
-
return `[CLARIFIED] ${subtask} — Please ensure the correct tools and approach are used. Avoid scope drift.`;
|
|
172
|
-
case 'decompose':
|
|
173
|
-
// Manager would ideally split this; we approximate by re-queuing with guidance
|
|
174
|
-
return `[DECOMPOSE] Break this task into smaller concrete steps and execute them: ${subtask}`;
|
|
175
|
-
case 'skip':
|
|
176
|
-
logger.warn(`[DualAgent] Strategy=skip for subtask: ${subtask}`);
|
|
177
|
-
return null; // caller skips
|
|
178
|
-
case 'escalate':
|
|
179
|
-
// Do NOT overwrite results[] here. The Worker's actual result (with
|
|
180
|
-
// specific tool error detail from failedTools) was already pushed into
|
|
181
|
-
// results[] before Client validation ran. The approved:false flag on
|
|
182
|
-
// that entry is enough for synthesizeResponse() to handle it honestly.
|
|
183
|
-
// Pushing a generic ⚠️ string would lose the specific error information.
|
|
184
|
-
logger.warn(`[DualAgent] Escalating subtask to user — evidence-backed failure, no retry: ${subtask}`);
|
|
185
|
-
return null;
|
|
186
|
-
default:
|
|
187
|
-
return subtask;
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
146
|
/**
|
|
191
147
|
* Process user message using dual-agent architecture
|
|
192
148
|
*/
|
|
@@ -219,6 +175,24 @@ VALIDATION GUIDANCE:
|
|
|
219
175
|
context: serializeAgentContext(agentContext, 'manager'),
|
|
220
176
|
}, agentContext);
|
|
221
177
|
orchestrationLogger.logPhaseEnd('PLANNING', Date.now() - phaseStartTime);
|
|
178
|
+
// Conversational short-circuit: skip execution entirely for greetings, thank-yous, etc.
|
|
179
|
+
if (plan.conversational) {
|
|
180
|
+
logger.info('[DualAgent] Conversational message — returning direct reply');
|
|
181
|
+
const directReply = await this.manager.directReply(this.userConversationHistory, agentContext);
|
|
182
|
+
this.userConversationHistory.push({ role: 'assistant', content: directReply });
|
|
183
|
+
if (this.autoSave && this.conversationManager) {
|
|
184
|
+
await this.conversationManager.autoSave(this.userConversationHistory, this.workspace.getWorkspaceDir(), this.orchestrator);
|
|
185
|
+
}
|
|
186
|
+
logger.info('\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
|
|
187
|
+
logger.info('[+] Complete: 1 iteration, 0 tools used (conversational)');
|
|
188
|
+
logger.info('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n');
|
|
189
|
+
return {
|
|
190
|
+
content: directReply,
|
|
191
|
+
iterations: 1,
|
|
192
|
+
toolsUsed: [],
|
|
193
|
+
plan: { subtasks: [], reasoning: plan.reasoning },
|
|
194
|
+
};
|
|
195
|
+
}
|
|
222
196
|
// PHASE 2: Execute subtasks with per-subtask retry budget
|
|
223
197
|
logger.info('\n[PHASE 2: Execution]');
|
|
224
198
|
logger.info('─────────────────────────────────────────');
|
|
@@ -226,8 +200,8 @@ VALIDATION GUIDANCE:
|
|
|
226
200
|
orchestrationLogger.logPhaseStart('EXECUTION');
|
|
227
201
|
const results = [];
|
|
228
202
|
const subtasksToExecute = plan.subtasks.slice(0, this.maxSubtasks);
|
|
229
|
-
|
|
230
|
-
|
|
203
|
+
// Max 1 retry per original subtask — keyed by original subtask text (not correction text)
|
|
204
|
+
const MAX_RETRIES_PER_SUBTASK = 1;
|
|
231
205
|
const subtaskRetryCounts = new Map();
|
|
232
206
|
for (let i = 0; i < subtasksToExecute.length; i++) {
|
|
233
207
|
const subtask = subtasksToExecute[i];
|
|
@@ -239,78 +213,30 @@ VALIDATION GUIDANCE:
|
|
|
239
213
|
}, agentContext);
|
|
240
214
|
totalIterations += 1;
|
|
241
215
|
allToolsUsed.push(...workerResult.toolsUsed);
|
|
242
|
-
//
|
|
243
|
-
const
|
|
244
|
-
agentContext);
|
|
245
|
-
// Record result alongside Client's approval verdict.
|
|
246
|
-
// The synthesis phase uses this to produce an honest response when
|
|
247
|
-
// some subtasks were not completed successfully.
|
|
216
|
+
// Manager reviews Worker's result — fast-path for common cases, LLM only for edge cases
|
|
217
|
+
const review = await this.manager.reviewSubtaskResult(subtask, workerResult, userMessage);
|
|
248
218
|
results.push({
|
|
249
219
|
subtask,
|
|
250
220
|
result: workerResult.result,
|
|
251
|
-
|
|
221
|
+
accepted: review.accepted,
|
|
252
222
|
});
|
|
253
|
-
if (!
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
//
|
|
257
|
-
|
|
258
|
-
const
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
logger.info(`[DualAgent]
|
|
263
|
-
const rawCorrection = this.applyCorrectionStrategy(signal, subtask, retryCount, MAX_RETRIES_PER_SUBTASK, subtasksToExecute, results);
|
|
264
|
-
const correction = rawCorrection ? `${contextCorrectionPrefix}${rawCorrection}` : null;
|
|
265
|
-
if (correction) {
|
|
266
|
-
// Deduplicate against the pending queue only — NOT against results.
|
|
267
|
-
// Correction subtasks intentionally re-execute something that failed,
|
|
268
|
-
// so checking results would always flag a retry as a duplicate.
|
|
269
|
-
const normalizedCorrection = correction.toLowerCase().trim();
|
|
270
|
-
const isDuplicate = subtasksToExecute.some(existing => existing.toLowerCase().trim() === normalizedCorrection);
|
|
271
|
-
if (isDuplicate) {
|
|
272
|
-
logger.warn(`[DualAgent] Skipping duplicate correction subtask`);
|
|
273
|
-
}
|
|
274
|
-
else if (subtasksToExecute.length < this.maxSubtasks) {
|
|
275
|
-
// Insert correction immediately after current position so it runs
|
|
276
|
-
// BEFORE any subsequent subtasks that may depend on this one.
|
|
277
|
-
subtasksToExecute.splice(i + 1, 0, correction);
|
|
278
|
-
subtaskRetryCounts.set(subtask, retryCount + 1);
|
|
279
|
-
logger.info(`[DualAgent] Inserted correction at position ${i + 2} via ${signal.suggestedStrategy} (${subtasksToExecute.length} total, retry ${retryCount + 1}/${MAX_RETRIES_PER_SUBTASK})`);
|
|
280
|
-
}
|
|
281
|
-
else {
|
|
282
|
-
logger.warn(`[DualAgent] Cannot add correction — maxSubtasks (${this.maxSubtasks}) reached`);
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
else if (!signal.progressMade && retryCount >= MAX_RETRIES_PER_SUBTASK) {
|
|
286
|
-
logger.warn(`[DualAgent] No progress after ${MAX_RETRIES_PER_SUBTASK} retries — skipping subtask`);
|
|
287
|
-
}
|
|
223
|
+
if (!review.accepted && review.specificCorrection) {
|
|
224
|
+
// Determine the original subtask key for retry counting.
|
|
225
|
+
// Correction subtasks always start fresh — map them back to the original via
|
|
226
|
+
// their position in the queue vs the original plan length.
|
|
227
|
+
const originalSubtask = plan.subtasks[Math.min(i, plan.subtasks.length - 1)] || subtask;
|
|
228
|
+
const retryCount = subtaskRetryCounts.get(originalSubtask) || 0;
|
|
229
|
+
if (retryCount < MAX_RETRIES_PER_SUBTASK && subtasksToExecute.length < this.maxSubtasks) {
|
|
230
|
+
subtasksToExecute.splice(i + 1, 0, review.specificCorrection);
|
|
231
|
+
subtaskRetryCounts.set(originalSubtask, retryCount + 1);
|
|
232
|
+
logger.info(`[DualAgent] Inserted targeted retry at position ${i + 2} (retry ${retryCount + 1}/${MAX_RETRIES_PER_SUBTASK})`);
|
|
288
233
|
}
|
|
289
|
-
else
|
|
290
|
-
|
|
291
|
-
logger.info(`[Client] Validation failed: ${validation.issues.join(', ')}`);
|
|
292
|
-
logger.info(`[Client] Requesting correction: ${validation.nextAction}`);
|
|
293
|
-
const correction = `${contextCorrectionPrefix}${validation.nextAction}`;
|
|
294
|
-
const normalizedCorrection = correction.toLowerCase().trim();
|
|
295
|
-
// Only deduplicate against the pending queue — corrections are intentional
|
|
296
|
-
// re-attempts, so matching against results would always skip them.
|
|
297
|
-
const isDuplicate = subtasksToExecute.some(existing => existing.toLowerCase().trim() === normalizedCorrection);
|
|
298
|
-
if (isDuplicate) {
|
|
299
|
-
logger.warn(`[Client] Skipping duplicate correction subtask`);
|
|
300
|
-
}
|
|
301
|
-
else if (subtasksToExecute.length < this.maxSubtasks) {
|
|
302
|
-
// Insert correction immediately after current position so it runs
|
|
303
|
-
// BEFORE any subsequent subtasks that may depend on this one.
|
|
304
|
-
subtasksToExecute.splice(i + 1, 0, correction);
|
|
305
|
-
logger.info(`[Client] Inserted correction at position ${i + 2} (${subtasksToExecute.length} total)`);
|
|
306
|
-
}
|
|
307
|
-
else {
|
|
308
|
-
logger.warn(`[Client] Cannot add correction - maxSubtasks (${this.maxSubtasks}) reached`);
|
|
309
|
-
}
|
|
234
|
+
else {
|
|
235
|
+
logger.warn(`[DualAgent] Retry budget exhausted or queue full — accepting partial result`);
|
|
310
236
|
}
|
|
311
237
|
}
|
|
312
238
|
else {
|
|
313
|
-
logger.info(`[
|
|
239
|
+
logger.info(`[Manager] Subtask accepted`);
|
|
314
240
|
}
|
|
315
241
|
}
|
|
316
242
|
orchestrationLogger.logPhaseEnd('EXECUTION', Date.now() - executionStartTime);
|
|
@@ -380,7 +306,6 @@ VALIDATION GUIDANCE:
|
|
|
380
306
|
resetConversation() {
|
|
381
307
|
this.userConversationHistory = [];
|
|
382
308
|
this.manager.resetConversation();
|
|
383
|
-
this.client.resetSessionState();
|
|
384
309
|
// Null out the conversation ID so the next autoSave generates a fresh file
|
|
385
310
|
// rather than continuing to append to the previous conversation's storage entry.
|
|
386
311
|
this.conversationManager?.setCurrentConversationId(null);
|