aura-code 0.6.3 → 0.10.1
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 +47 -164
- package/dist/agent/affect.d.ts +13 -0
- package/dist/agent/affect.js +34 -0
- package/dist/agent/affect.js.map +1 -0
- package/dist/agent/compactor.d.ts +27 -4
- package/dist/agent/compactor.js +185 -54
- package/dist/agent/compactor.js.map +1 -1
- package/dist/agent/confess.d.ts +35 -0
- package/dist/agent/confess.js +296 -0
- package/dist/agent/confess.js.map +1 -0
- package/dist/agent/context.d.ts +0 -4
- package/dist/agent/context.js +0 -38
- package/dist/agent/context.js.map +1 -1
- package/dist/agent/domain-expertise.d.ts +22 -0
- package/dist/agent/domain-expertise.js +110 -0
- package/dist/agent/domain-expertise.js.map +1 -0
- package/dist/agent/executive-queue.d.ts +26 -0
- package/dist/agent/executive-queue.js +50 -0
- package/dist/agent/executive-queue.js.map +1 -0
- package/dist/agent/generational-flush.d.ts +28 -0
- package/dist/agent/generational-flush.js +48 -0
- package/dist/agent/generational-flush.js.map +1 -0
- package/dist/agent/loop-profile.d.ts +50 -0
- package/dist/agent/loop-profile.js +88 -0
- package/dist/agent/loop-profile.js.map +1 -0
- package/dist/agent/loop.d.ts +14 -5
- package/dist/agent/loop.js +167 -39
- package/dist/agent/loop.js.map +1 -1
- package/dist/agent/memory-consolidate.d.ts +14 -0
- package/dist/agent/memory-consolidate.js +141 -0
- package/dist/agent/memory-consolidate.js.map +1 -0
- package/dist/agent/mixture.d.ts +33 -0
- package/dist/agent/mixture.js +138 -0
- package/dist/agent/mixture.js.map +1 -0
- package/dist/agent/spawner.js +2 -2
- package/dist/agent/spawner.js.map +1 -1
- package/dist/agent/system-prompt.d.ts +1 -1
- package/dist/agent/system-prompt.js +50 -22
- package/dist/agent/system-prompt.js.map +1 -1
- package/dist/agent/unified-memory.d.ts +15 -0
- package/dist/agent/unified-memory.js +164 -0
- package/dist/agent/unified-memory.js.map +1 -0
- package/dist/checkpoints/engine.d.ts +44 -0
- package/dist/checkpoints/engine.js +324 -0
- package/dist/checkpoints/engine.js.map +1 -0
- package/dist/cli/command-palette.d.ts +26 -0
- package/dist/cli/command-palette.js +133 -0
- package/dist/cli/command-palette.js.map +1 -0
- package/dist/cli/context-health.d.ts +51 -0
- package/dist/cli/context-health.js +187 -0
- package/dist/cli/context-health.js.map +1 -0
- package/dist/cli/diamond.d.ts +67 -0
- package/dist/cli/diamond.js +222 -12
- package/dist/cli/diamond.js.map +1 -1
- package/dist/cli/dic.d.ts +2 -0
- package/dist/cli/dic.js +106 -0
- package/dist/cli/dic.js.map +1 -0
- package/dist/cli/diff-view.d.ts +18 -0
- package/dist/cli/diff-view.js +114 -0
- package/dist/cli/diff-view.js.map +1 -0
- package/dist/cli/display.d.ts +18 -4
- package/dist/cli/display.js +74 -151
- package/dist/cli/display.js.map +1 -1
- package/dist/cli/help-data.d.ts +7 -0
- package/dist/cli/help-data.js +80 -0
- package/dist/cli/help-data.js.map +1 -0
- package/dist/cli/index.js +1002 -852
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/markdown.d.ts +5 -0
- package/dist/cli/markdown.js +128 -0
- package/dist/cli/markdown.js.map +1 -0
- package/dist/cli/model-select.d.ts +39 -0
- package/dist/cli/model-select.js +65 -0
- package/dist/cli/model-select.js.map +1 -0
- package/dist/cli/tui.d.ts +34 -0
- package/dist/cli/tui.js +1176 -0
- package/dist/cli/tui.js.map +1 -0
- package/dist/config/defaults.d.ts +6 -17
- package/dist/config/defaults.js +25 -46
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/project-config.d.ts +2 -6
- package/dist/config/project-config.js +2 -2
- package/dist/config/project-config.js.map +1 -1
- package/dist/doctor/checks.d.ts +18 -0
- package/dist/doctor/checks.js +524 -0
- package/dist/doctor/checks.js.map +1 -0
- package/dist/doctor/index.d.ts +4 -0
- package/dist/doctor/index.js +229 -0
- package/dist/doctor/index.js.map +1 -0
- package/dist/doctor/repair.d.ts +19 -0
- package/dist/doctor/repair.js +126 -0
- package/dist/doctor/repair.js.map +1 -0
- package/dist/doctor/types.d.ts +38 -0
- package/dist/doctor/types.js +10 -0
- package/dist/doctor/types.js.map +1 -0
- package/dist/dream/dream.d.ts +79 -59
- package/dist/dream/dream.js +324 -144
- package/dist/dream/dream.js.map +1 -1
- package/dist/dream/episode.d.ts +17 -0
- package/dist/dream/episode.js +116 -0
- package/dist/dream/episode.js.map +1 -0
- package/dist/kanban/engine.d.ts +26 -0
- package/dist/kanban/engine.js +208 -0
- package/dist/kanban/engine.js.map +1 -0
- package/dist/kanban/types.d.ts +19 -0
- package/dist/kanban/types.js +9 -1
- package/dist/kanban/types.js.map +1 -1
- package/dist/machina/render-html.js +4 -2
- package/dist/machina/render-html.js.map +1 -1
- package/dist/machina/render-terminal.js +11 -4
- package/dist/machina/render-terminal.js.map +1 -1
- package/dist/machina/repair.d.ts +23 -0
- package/dist/machina/repair.js +98 -0
- package/dist/machina/repair.js.map +1 -0
- package/dist/machina/spec.js +12 -12
- package/dist/machina/spec.js.map +1 -1
- package/dist/machina/verify.d.ts +13 -1
- package/dist/machina/verify.js +12 -2
- package/dist/machina/verify.js.map +1 -1
- package/dist/mining/extract.d.ts +34 -0
- package/dist/mining/extract.js +229 -0
- package/dist/mining/extract.js.map +1 -0
- package/dist/mining/refine.d.ts +28 -0
- package/dist/mining/refine.js +256 -0
- package/dist/mining/refine.js.map +1 -0
- package/dist/perception/extractor.js +5 -3
- package/dist/perception/extractor.js.map +1 -1
- package/dist/perception/graph-store.d.ts +0 -11
- package/dist/perception/graph-store.js +0 -33
- package/dist/perception/graph-store.js.map +1 -1
- package/dist/perception/index.d.ts +1 -1
- package/dist/perception/index.js +1 -2
- package/dist/perception/index.js.map +1 -1
- package/dist/plugins/commands.d.ts +38 -0
- package/dist/plugins/commands.js +134 -0
- package/dist/plugins/commands.js.map +1 -0
- package/dist/plugins/frontmatter.d.ts +14 -0
- package/dist/plugins/frontmatter.js +78 -0
- package/dist/plugins/frontmatter.js.map +1 -0
- package/dist/plugins/hooks.d.ts +12 -0
- package/dist/plugins/hooks.js +148 -0
- package/dist/plugins/hooks.js.map +1 -0
- package/dist/plugins/loader.d.ts +7 -0
- package/dist/plugins/loader.js +255 -0
- package/dist/plugins/loader.js.map +1 -0
- package/dist/plugins/market.d.ts +23 -0
- package/dist/plugins/market.js +281 -0
- package/dist/plugins/market.js.map +1 -0
- package/dist/plugins/types.d.ts +90 -0
- package/dist/plugins/types.js +20 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/providers/anthropic-oauth-draft.d.ts +119 -0
- package/dist/providers/anthropic-oauth-draft.js +414 -0
- package/dist/providers/anthropic-oauth-draft.js.map +1 -0
- package/dist/providers/anthropic.d.ts +4 -1
- package/dist/providers/anthropic.js +35 -7
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/factory.d.ts +43 -19
- package/dist/providers/factory.js +183 -129
- package/dist/providers/factory.js.map +1 -1
- package/dist/providers/google.js +9 -22
- package/dist/providers/google.js.map +1 -1
- package/dist/providers/live-models.d.ts +23 -0
- package/dist/providers/live-models.js +145 -0
- package/dist/providers/live-models.js.map +1 -0
- package/dist/providers/openai-compatible.d.ts +1 -12
- package/dist/providers/openai-compatible.js +71 -108
- package/dist/providers/openai-compatible.js.map +1 -1
- package/dist/providers/resilient-factory.js +1 -1
- package/dist/providers/resilient-factory.js.map +1 -1
- package/dist/repl/queue.d.ts +22 -0
- package/dist/repl/queue.js +165 -0
- package/dist/repl/queue.js.map +1 -0
- package/dist/repl/side-channel.d.ts +23 -0
- package/dist/repl/side-channel.js +63 -0
- package/dist/repl/side-channel.js.map +1 -0
- package/dist/research/council.d.ts +2 -0
- package/dist/research/council.js +29 -4
- package/dist/research/council.js.map +1 -1
- package/dist/ruby/alternator.d.ts +11 -30
- package/dist/ruby/alternator.js +59 -38
- package/dist/ruby/alternator.js.map +1 -1
- package/dist/ruby/episode-capture.d.ts +0 -10
- package/dist/ruby/episode-capture.js +0 -33
- package/dist/ruby/episode-capture.js.map +1 -1
- package/dist/ruby/types.js +1 -1
- package/dist/ruby/types.js.map +1 -1
- package/dist/safety/path-jail.d.ts +17 -0
- package/dist/safety/path-jail.js +100 -0
- package/dist/safety/path-jail.js.map +1 -0
- package/dist/safety/permissions.d.ts +12 -21
- package/dist/safety/permissions.js +81 -216
- package/dist/safety/permissions.js.map +1 -1
- package/dist/safety/ssrf.d.ts +29 -0
- package/dist/safety/ssrf.js +185 -0
- package/dist/safety/ssrf.js.map +1 -0
- package/dist/server/index.js +64 -10
- package/dist/server/index.js.map +1 -1
- package/dist/setup/first-run.d.ts +0 -24
- package/dist/setup/first-run.js +10 -344
- package/dist/setup/first-run.js.map +1 -1
- package/dist/setup/key-store.d.ts +12 -0
- package/dist/setup/key-store.js +108 -0
- package/dist/setup/key-store.js.map +1 -0
- package/dist/setup/provider-registry.js +31 -18
- package/dist/setup/provider-registry.js.map +1 -1
- package/dist/setup/provider-test.d.ts +7 -0
- package/dist/setup/provider-test.js +73 -10
- package/dist/setup/provider-test.js.map +1 -1
- package/dist/setup/provider-wizard.d.ts +4 -1
- package/dist/setup/provider-wizard.js +92 -26
- package/dist/setup/provider-wizard.js.map +1 -1
- package/dist/setup/xiaomi.d.ts +1 -1
- package/dist/setup/xiaomi.js +3 -3
- package/dist/setup/xiaomi.js.map +1 -1
- package/dist/tools/browser.js +14 -10
- package/dist/tools/browser.js.map +1 -1
- package/dist/tools/clipboard.js +7 -1
- package/dist/tools/clipboard.js.map +1 -1
- package/dist/tools/dictate.d.ts +60 -0
- package/dist/tools/dictate.js +983 -0
- package/dist/tools/dictate.js.map +1 -0
- package/dist/tools/dictate_patched.js +1057 -0
- package/dist/tools/edit-file.js +10 -2
- package/dist/tools/edit-file.js.map +1 -1
- package/dist/tools/http-request.js +14 -4
- package/dist/tools/http-request.js.map +1 -1
- package/dist/tools/image-read.js +34 -2
- package/dist/tools/image-read.js.map +1 -1
- package/dist/tools/index.d.ts +16 -1
- package/dist/tools/index.js +59 -8
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/mcp.js +12 -0
- package/dist/tools/mcp.js.map +1 -1
- package/dist/tools/read-file.js +10 -14
- package/dist/tools/read-file.js.map +1 -1
- package/dist/tools/telegram-audio-policy.d.ts +30 -0
- package/dist/tools/telegram-audio-policy.js +49 -0
- package/dist/tools/telegram-audio-policy.js.map +1 -0
- package/dist/tools/telegram-bot.js +1136 -537
- package/dist/tools/telegram-bot.js.map +1 -1
- package/dist/tools/telegram-voice.d.ts +18 -5
- package/dist/tools/telegram-voice.js +54 -12
- package/dist/tools/telegram-voice.js.map +1 -1
- package/dist/tools/telegram.d.ts +3 -3
- package/dist/tools/telegram.js +5 -84
- package/dist/tools/telegram.js.map +1 -1
- package/dist/tools/tools.d.ts +2 -14
- package/dist/tools/tools.js +79 -144
- package/dist/tools/tools.js.map +1 -1
- package/dist/tools/web-fetch.js +39 -7
- package/dist/tools/web-fetch.js.map +1 -1
- package/dist/tools/web-search.d.ts +0 -20
- package/dist/tools/web-search.js +40 -137
- package/dist/tools/web-search.js.map +1 -1
- package/dist/util/errors.js +1 -15
- package/dist/util/errors.js.map +1 -1
- package/dist/util/json-repair.d.ts +11 -0
- package/dist/util/json-repair.js +31 -0
- package/dist/util/json-repair.js.map +1 -0
- package/dist/util/rate-limiter.js +2 -8
- package/dist/util/rate-limiter.js.map +1 -1
- package/dist/viz/index.js +793 -792
- package/dist/viz/index.js.map +1 -1
- package/package.json +12 -32
package/dist/agent/loop.js
CHANGED
|
@@ -33,16 +33,23 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.costFor = costFor;
|
|
36
37
|
exports.runAgentLoop = runAgentLoop;
|
|
37
38
|
exports.runAgentLoopVerified = runAgentLoopVerified;
|
|
38
39
|
const path = __importStar(require("path"));
|
|
39
40
|
const index_js_1 = require("../tools/index.js");
|
|
40
41
|
const permissions_js_1 = require("../safety/permissions.js");
|
|
41
42
|
const system_prompt_js_1 = require("./system-prompt.js");
|
|
42
|
-
const defaults_js_1 = require("../config/defaults.js");
|
|
43
43
|
const session_store_js_1 = require("./session-store.js");
|
|
44
44
|
const spawner_js_1 = require("./spawner.js");
|
|
45
|
+
const loop_profile_js_1 = require("./loop-profile.js");
|
|
46
|
+
const engine_js_1 = require("../checkpoints/engine.js");
|
|
47
|
+
const defaults_js_1 = require("../config/defaults.js");
|
|
48
|
+
const executive_queue_js_1 = require("./executive-queue.js");
|
|
45
49
|
const compactor_js_1 = require("./compactor.js");
|
|
50
|
+
const generational_flush_js_1 = require("./generational-flush.js");
|
|
51
|
+
const affect_js_1 = require("./affect.js");
|
|
52
|
+
const context_health_js_1 = require("../cli/context-health.js");
|
|
46
53
|
const PRICING_USD_PER_MTOK = {
|
|
47
54
|
'claude-opus-4-5-20251001': { in: 15, out: 75 },
|
|
48
55
|
'claude-sonnet-4-5-20251001': { in: 3, out: 15 },
|
|
@@ -52,6 +59,10 @@ const PRICING_USD_PER_MTOK = {
|
|
|
52
59
|
'gemini-2.5-pro': { in: 1.25, out: 10 },
|
|
53
60
|
'gemini-2.5-flash': { in: 0.075, out: 0.3 },
|
|
54
61
|
'grok-beta': { in: 5, out: 15 },
|
|
62
|
+
// Zhipu publishes GLM-5 rates only; 5.1/5.2 assumed equal until announced.
|
|
63
|
+
'glm-5.2': { in: 1, out: 3.2 },
|
|
64
|
+
'glm-5.1': { in: 1, out: 3.2 },
|
|
65
|
+
'glm-5': { in: 1, out: 3.2 },
|
|
55
66
|
'mimo-v2.5-pro': { in: 1, out: 4 },
|
|
56
67
|
'mimo-v2.5': { in: 0.5, out: 2 },
|
|
57
68
|
'mimo-v2-flash': { in: 0.1, out: 0.4 },
|
|
@@ -62,7 +73,7 @@ function costFor(model, input, output) {
|
|
|
62
73
|
}
|
|
63
74
|
async function runAgentLoop(opts) {
|
|
64
75
|
const { provider, task, context, permissions, display } = opts;
|
|
65
|
-
const
|
|
76
|
+
const profile = (0, loop_profile_js_1.getLoopProfile)(task, opts.maxTurns);
|
|
66
77
|
const pricingModel = opts.pricingModel ?? provider.model;
|
|
67
78
|
const system = (0, system_prompt_js_1.buildSystemPrompt)(context, provider.name, task);
|
|
68
79
|
const history = [
|
|
@@ -77,29 +88,97 @@ async function runAgentLoop(opts) {
|
|
|
77
88
|
}
|
|
78
89
|
display.agentThinking();
|
|
79
90
|
try {
|
|
80
|
-
return await runLoopBody({ opts, provider, system, history,
|
|
91
|
+
return await runLoopBody({ opts, provider, system, history, profile, pricingModel, display, permissions, turns, toolCallCount, usage });
|
|
81
92
|
}
|
|
82
93
|
finally {
|
|
83
94
|
(0, spawner_js_1.clearSpawner)();
|
|
84
95
|
}
|
|
85
96
|
}
|
|
86
97
|
async function runLoopBody(args) {
|
|
87
|
-
const { opts, provider, system, history,
|
|
98
|
+
const { opts, provider, system, history, profile, pricingModel, display, permissions } = args;
|
|
88
99
|
let { turns, toolCallCount, usage } = args;
|
|
89
100
|
const toolCallLog = [];
|
|
90
|
-
|
|
101
|
+
// Bounded record of state-altering calls; its digest survives compaction so
|
|
102
|
+
// the model never repeats a write/edit/command it already executed.
|
|
103
|
+
const execQueue = new executive_queue_js_1.ExecutiveQueue();
|
|
104
|
+
// Context health tracker: observational visibility into token pressure,
|
|
105
|
+
// compaction ladder, and session cost. Never mutates history itself.
|
|
106
|
+
// Use the caller-provided tracker (so /context can read it) or make one.
|
|
107
|
+
const health = opts.healthTracker ?? new context_health_js_1.ContextHealthTracker(() => system, () => history, provider.model, pricingModel);
|
|
108
|
+
health.updateSystem(system);
|
|
109
|
+
// Stall detection: if the recent turns repeat the exact same tool call(s)
|
|
110
|
+
// (or alternate between the same two), the agent is stuck rather than
|
|
111
|
+
// progressing. Stopping early here saves turns/cost on a run that would
|
|
112
|
+
// otherwise burn out to maxTurns without ever changing course.
|
|
113
|
+
const turnSignatures = [];
|
|
114
|
+
let stall = null;
|
|
115
|
+
// Adaptive widening: a run that hits its profile ceiling while still
|
|
116
|
+
// making progress gets ONE upgrade to profile.widenTo instead of dying
|
|
117
|
+
// with a resume hint. Explicit --max-turns never widens.
|
|
118
|
+
let maxTurns = profile.maxTurns;
|
|
119
|
+
let widened = false;
|
|
120
|
+
// Mutable bag for per-loop state (empty-response retry counter, etc.).
|
|
121
|
+
const loopState = {};
|
|
122
|
+
// Sticky set of triggered conditional tools — survives history compaction.
|
|
123
|
+
const includedTools = new Set();
|
|
124
|
+
while (true) {
|
|
125
|
+
if (turns >= maxTurns) {
|
|
126
|
+
if (profile.widenTo !== undefined && !widened) {
|
|
127
|
+
widened = true;
|
|
128
|
+
maxTurns = profile.widenTo;
|
|
129
|
+
display.warning(`Turn budget (${profile.maxTurns}) reached with work in progress — widening once to ${maxTurns}.`);
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
break;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
// Abort check — user requested stop via :stop / Ctrl+C
|
|
136
|
+
if (opts.abortSignal?.aborted) {
|
|
137
|
+
display.warning('Task cancelled by user — stopping loop.');
|
|
138
|
+
break;
|
|
139
|
+
}
|
|
91
140
|
turns++;
|
|
92
|
-
|
|
93
|
-
//
|
|
94
|
-
//
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
141
|
+
health.incrementTurn();
|
|
142
|
+
// Compaction check runs pre-call: estimateContextTokens measures the
|
|
143
|
+
// payload about to be sent (see its doc for why not per-turn usage sums).
|
|
144
|
+
{
|
|
145
|
+
const compactionExtras = {
|
|
146
|
+
executiveDigest: execQueue.size > 0 ? execQueue.digest() : undefined,
|
|
147
|
+
affectHint: (0, affect_js_1.detectFrustration)(history) ?? undefined,
|
|
148
|
+
};
|
|
149
|
+
// The ladder in compactHistory escalates its own trigger per recap
|
|
150
|
+
// generation; once a recap has been recompacted ROLLOVER_AT_GENERATION
|
|
151
|
+
// times, a further in-place pass would just be lossy recompaction —
|
|
152
|
+
// flush it to the dream store instead (one LLM call) and start clean.
|
|
153
|
+
if ((0, compactor_js_1.getRecapGeneration)(history) >= compactor_js_1.ROLLOVER_AT_GENERATION) {
|
|
154
|
+
const beforeTokens = (0, compactor_js_1.estimateContextTokens)(system, history);
|
|
155
|
+
const { flushed } = await (0, generational_flush_js_1.maybeRollover)(history, opts.context.root, provider, compactionExtras);
|
|
156
|
+
if (flushed) {
|
|
157
|
+
const afterTokens = (0, compactor_js_1.estimateContextTokens)(system, history);
|
|
158
|
+
const generation = (0, compactor_js_1.getRecapGeneration)(history);
|
|
159
|
+
health.recordCompaction(beforeTokens, afterTokens, generation);
|
|
160
|
+
display.compactionEvent?.({ beforeTokens, afterTokens, generation, threshold: beforeTokens });
|
|
161
|
+
await persist(opts.sessionPath, history);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
const estimated = (0, compactor_js_1.estimateContextTokens)(system, history);
|
|
166
|
+
const compacted = (0, compactor_js_1.compactHistory)(history, estimated, provider.model, compactionExtras);
|
|
167
|
+
if (compacted) {
|
|
168
|
+
const afterTokens = (0, compactor_js_1.estimateContextTokens)(system, history);
|
|
169
|
+
const generation = (0, compactor_js_1.getRecapGeneration)(history);
|
|
170
|
+
health.recordCompaction(estimated, afterTokens, generation);
|
|
171
|
+
display.compactionEvent?.({ beforeTokens: estimated, afterTokens, generation, threshold: estimated });
|
|
172
|
+
await persist(opts.sessionPath, history);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
display.contextBar?.(health.snapshot(usage.inputTokens, usage.outputTokens));
|
|
98
177
|
let responseText = '';
|
|
99
178
|
const responseToolCalls = [];
|
|
100
179
|
let finalResponse = null;
|
|
101
180
|
try {
|
|
102
|
-
const stream = provider.stream(system, history, index_js_1.
|
|
181
|
+
const stream = provider.stream(system, history, (0, index_js_1.selectTools)(opts.task, history, includedTools));
|
|
103
182
|
for await (const chunk of stream) {
|
|
104
183
|
switch (chunk.type) {
|
|
105
184
|
case 'text':
|
|
@@ -133,12 +212,6 @@ async function runLoopBody(args) {
|
|
|
133
212
|
}
|
|
134
213
|
catch (e) {
|
|
135
214
|
display.error(`Provider error: ${String(e)}`);
|
|
136
|
-
// If we failed on the first turn without making any tool calls, the assistant
|
|
137
|
-
// never responded. Pop the user's task so we don't poison the chat history
|
|
138
|
-
// with consecutive user messages on the next attempt.
|
|
139
|
-
if (turns === 1 && toolCallCount === 0) {
|
|
140
|
-
history.pop();
|
|
141
|
-
}
|
|
142
215
|
await persist(opts.sessionPath, history);
|
|
143
216
|
return {
|
|
144
217
|
success: false,
|
|
@@ -149,13 +222,36 @@ async function runLoopBody(args) {
|
|
|
149
222
|
}
|
|
150
223
|
if (responseText)
|
|
151
224
|
display.streamEnd();
|
|
225
|
+
// Guard: an empty response with no tools and stop reason "done"
|
|
226
|
+
// usually means the provider returned a silent error / rate-limit /
|
|
227
|
+
// content filter. Retry up to 3 times before accepting it as "done"
|
|
228
|
+
// so sessions don't silently die with no output.
|
|
152
229
|
const noProgress = !responseText && responseToolCalls.length === 0;
|
|
153
|
-
if (
|
|
230
|
+
if (finalResponse?.stopReason === 'done' && noProgress) {
|
|
231
|
+
if (!('_emptyRetries' in loopState))
|
|
232
|
+
loopState._emptyRetries = 0;
|
|
233
|
+
loopState._emptyRetries++;
|
|
234
|
+
if (loopState._emptyRetries <= 3) {
|
|
235
|
+
display.warning(`Empty response from provider (attempt ${loopState._emptyRetries}/3) — retrying…`);
|
|
236
|
+
display.agentThinking();
|
|
237
|
+
continue;
|
|
238
|
+
}
|
|
239
|
+
// Exhausted retries — provider can't produce output
|
|
240
|
+
history.push({ role: 'assistant', content: '' });
|
|
241
|
+
await persist(opts.sessionPath, history);
|
|
242
|
+
return {
|
|
243
|
+
success: false,
|
|
244
|
+
summary: 'Provider returned empty response after 4 attempts — likely rate-limited or filtered',
|
|
245
|
+
turns, toolCallCount, usage, history, toolCallLog,
|
|
246
|
+
costUsd: costFor(pricingModel, usage.inputTokens, usage.outputTokens),
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
if (finalResponse?.stopReason === 'done') {
|
|
154
250
|
history.push({ role: 'assistant', content: responseText });
|
|
155
251
|
await persist(opts.sessionPath, history);
|
|
156
252
|
return {
|
|
157
253
|
success: true,
|
|
158
|
-
summary: responseText
|
|
254
|
+
summary: responseText,
|
|
159
255
|
turns, toolCallCount, usage, history, toolCallLog,
|
|
160
256
|
costUsd: costFor(pricingModel, usage.inputTokens, usage.outputTokens),
|
|
161
257
|
};
|
|
@@ -169,29 +265,23 @@ async function runLoopBody(args) {
|
|
|
169
265
|
content: responseText,
|
|
170
266
|
toolCalls: responseToolCalls,
|
|
171
267
|
});
|
|
268
|
+
// Record this turn's tool-call signature before executing, so a
|
|
269
|
+
// stall is detected even if every call in the streak errors out.
|
|
270
|
+
if (responseToolCalls.length > 0) {
|
|
271
|
+
const signature = JSON.stringify(responseToolCalls.map((c) => ({ name: c.name, input: c.input })));
|
|
272
|
+
turnSignatures.push(signature);
|
|
273
|
+
stall = (0, loop_profile_js_1.detectStall)(turnSignatures, profile.stallThreshold);
|
|
274
|
+
}
|
|
172
275
|
const toolResults = [];
|
|
276
|
+
// One checkpoint per turn, taken lazily before the first mutating call —
|
|
277
|
+
// a turn's writes form one burst, and the engine dedupes identical trees.
|
|
278
|
+
let checkpointedThisTurn = false;
|
|
173
279
|
for (const call of responseToolCalls) {
|
|
174
280
|
toolCallCount++;
|
|
175
281
|
display.toolCall(call.name, call.input);
|
|
176
282
|
let result;
|
|
177
283
|
let isError = false;
|
|
178
284
|
try {
|
|
179
|
-
// If the provider failed to parse this call's arguments as JSON, the
|
|
180
|
-
// input was replaced with a raw-string fallback (see openai-compatible.ts
|
|
181
|
-
// / anthropic.ts) rather than real structured fields. Running a tool
|
|
182
|
-
// against that — or worse, letting the model keep reasoning as if it
|
|
183
|
-
// were valid data — is exactly the kind of malformed context that
|
|
184
|
-
// produces confabulated output downstream (confirmed in a :council run).
|
|
185
|
-
// Fail loudly and immediately instead: tell the model its own call
|
|
186
|
-
// didn't parse, so it can retry with corrected arguments.
|
|
187
|
-
if ('_raw' in call.input) {
|
|
188
|
-
const raw = String(call.input._raw ?? '').slice(0, 300);
|
|
189
|
-
result = `Tool error (${call.name}): your previous call's arguments did not parse as valid JSON and were not executed. Raw fragment received: ${raw}${raw.length >= 300 ? '…' : ''}. Re-issue this call with corrected, valid JSON arguments.`;
|
|
190
|
-
isError = true;
|
|
191
|
-
display.error(result);
|
|
192
|
-
toolResults.push({ id: call.id, name: call.name, content: result, isError: true });
|
|
193
|
-
continue;
|
|
194
|
-
}
|
|
195
285
|
const perm = permissions.check(call.name, call.input);
|
|
196
286
|
if (!perm.allowed) {
|
|
197
287
|
display.toolBlocked(call.name, perm.reason ?? 'not permitted');
|
|
@@ -200,20 +290,44 @@ async function runLoopBody(args) {
|
|
|
200
290
|
}
|
|
201
291
|
if (perm.needsConfirm) {
|
|
202
292
|
const desc = formatCallForConfirmation(call);
|
|
203
|
-
const
|
|
204
|
-
const approved = await doConfirm(`Allow: ${desc}?`);
|
|
293
|
+
const approved = await (opts.confirmFn ?? permissions_js_1.confirm)(`Allow: ${desc}?`);
|
|
205
294
|
if (!approved) {
|
|
206
295
|
display.toolBlocked(call.name, 'denied by user');
|
|
207
296
|
toolResults.push({ id: call.id, name: call.name, content: 'User denied this action.', isError: true });
|
|
208
297
|
continue;
|
|
209
298
|
}
|
|
210
299
|
}
|
|
300
|
+
if (opts.checkpoints !== false && !checkpointedThisTurn && executive_queue_js_1.MUTATING_TOOLS.has(call.name)) {
|
|
301
|
+
checkpointedThisTurn = true;
|
|
302
|
+
try {
|
|
303
|
+
const cp = await (0, engine_js_1.createCheckpoint)(opts.context.root, `turn ${turns}: ${opts.task}`);
|
|
304
|
+
if (cp)
|
|
305
|
+
await (0, engine_js_1.pruneCheckpoints)(opts.context.root, defaults_js_1.DEFAULTS.maxCheckpoints);
|
|
306
|
+
}
|
|
307
|
+
catch { /* checkpointing must never block the tool call */ }
|
|
308
|
+
}
|
|
309
|
+
if (opts.hooks && opts.hooks.length > 0) {
|
|
310
|
+
const { runHooks } = await Promise.resolve().then(() => __importStar(require('../plugins/hooks.js')));
|
|
311
|
+
const pre = await runHooks('PreToolUse', call.name, call.input, opts.hooks, opts.context.root);
|
|
312
|
+
if (pre.block) {
|
|
313
|
+
const why = pre.messages.join('; ') || 'blocked by plugin hook';
|
|
314
|
+
display.toolBlocked(call.name, why);
|
|
315
|
+
toolResults.push({ id: call.id, name: call.name, content: `Blocked by plugin hook: ${why}`, isError: true });
|
|
316
|
+
continue;
|
|
317
|
+
}
|
|
318
|
+
}
|
|
211
319
|
const startMs = Date.now();
|
|
212
320
|
result = await (0, index_js_1.executeTool)(call.name, call.input, opts.context.root);
|
|
213
321
|
const elapsed = Date.now() - startMs;
|
|
214
322
|
display.toolResult(call.name, result, elapsed);
|
|
215
323
|
isError = result.startsWith('Error:') || result.startsWith('Tool error');
|
|
216
324
|
toolCallLog.push({ name: call.name, input: call.input });
|
|
325
|
+
if (!isError)
|
|
326
|
+
execQueue.push(call.name, call.input, turns);
|
|
327
|
+
if (opts.hooks && opts.hooks.length > 0) {
|
|
328
|
+
const { runHooks } = await Promise.resolve().then(() => __importStar(require('../plugins/hooks.js')));
|
|
329
|
+
await runHooks('PostToolUse', call.name, call.input, opts.hooks, opts.context.root, result);
|
|
330
|
+
}
|
|
217
331
|
}
|
|
218
332
|
catch (e) {
|
|
219
333
|
result = `Tool error (${call.name}): ${String(e)}`;
|
|
@@ -222,15 +336,25 @@ async function runLoopBody(args) {
|
|
|
222
336
|
}
|
|
223
337
|
toolResults.push({ id: call.id, name: call.name, content: result, isError });
|
|
224
338
|
}
|
|
339
|
+
health.incrementToolCalls(responseToolCalls.length);
|
|
225
340
|
history.push({ role: 'tool_result', results: toolResults });
|
|
341
|
+
if (stall) {
|
|
342
|
+
display.warning(stall === 'repeat'
|
|
343
|
+
? `Repeated identical tool call ${profile.stallThreshold}x in a row — stopping loop (stall detected)`
|
|
344
|
+
: `Alternating between the same two tool calls ${profile.stallThreshold}x — stopping loop (cycle stall detected)`);
|
|
345
|
+
break;
|
|
346
|
+
}
|
|
226
347
|
display.agentThinking();
|
|
227
348
|
}
|
|
228
349
|
await persist(opts.sessionPath, history);
|
|
229
350
|
const sessionId = opts.sessionPath ? path.basename(opts.sessionPath, '.json') : undefined;
|
|
230
351
|
const resumeHint = sessionId ? ` Type /continue to resume session ${sessionId}` : '';
|
|
352
|
+
const reason = stall === 'repeat' ? 'stalled (repeated identical tool calls)'
|
|
353
|
+
: stall === 'cycle' ? 'stalled (cycling between the same two tool calls)'
|
|
354
|
+
: `ended after ${turns} turns${widened ? `, after widening once from ${profile.maxTurns}` : ''}`;
|
|
231
355
|
return {
|
|
232
356
|
success: false,
|
|
233
|
-
summary: `Loop
|
|
357
|
+
summary: `Loop ${reason}.${resumeHint}`,
|
|
234
358
|
turns, toolCallCount, usage, history, toolCallLog,
|
|
235
359
|
costUsd: costFor(pricingModel, usage.inputTokens, usage.outputTokens),
|
|
236
360
|
};
|
|
@@ -252,6 +376,10 @@ function formatCallForConfirmation(call) {
|
|
|
252
376
|
return `$ ${call.input.command}`;
|
|
253
377
|
if (call.name === 'write_file')
|
|
254
378
|
return `overwrite ${call.input.path}`;
|
|
379
|
+
if (call.name === 'mcp' && call.input.action === 'connect') {
|
|
380
|
+
const args = Array.isArray(call.input.args_list) ? call.input.args_list.join(' ') : '';
|
|
381
|
+
return `spawn MCP server '${call.input.server}': ${call.input.command} ${args}`.trim();
|
|
382
|
+
}
|
|
255
383
|
return `${call.name}(${JSON.stringify(call.input).slice(0, 80)})`;
|
|
256
384
|
}
|
|
257
385
|
//# sourceMappingURL=loop.js.map
|
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,14 @@
|
|
|
1
|
+
export interface ConsolidateResult {
|
|
2
|
+
backupDir: string;
|
|
3
|
+
identityKeys: number;
|
|
4
|
+
projectKeys: number;
|
|
5
|
+
conflicts: string[];
|
|
6
|
+
alreadyDone: boolean;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Merge the identity namespaces into identity.json + project.json.
|
|
10
|
+
* Idempotent: if identity.json already exists it does nothing (unless force).
|
|
11
|
+
*/
|
|
12
|
+
export declare function consolidateMemory(opts?: {
|
|
13
|
+
force?: boolean;
|
|
14
|
+
}): ConsolidateResult;
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.consolidateMemory = consolidateMemory;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const os = __importStar(require("os"));
|
|
40
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
41
|
+
// Memory consolidation — one-time (idempotent) migration that merges the 8
|
|
42
|
+
// overlapping ~/.aura/memory namespaces into a clean structure:
|
|
43
|
+
//
|
|
44
|
+
// identity.json — global identity/facts, prompt-visible everywhere
|
|
45
|
+
// (who Dušan is, who Aura is, preferences, relationship)
|
|
46
|
+
// project.json — machine/project state that isn't identity
|
|
47
|
+
// (paths, recovery notes, service state, tool locations)
|
|
48
|
+
//
|
|
49
|
+
// Originals are backed up to ~/.aura/memory/.pre-unify-<ts>/ first. Conflicting
|
|
50
|
+
// values for the same canonical key are PRESERVED as a CONFLICT entry rather
|
|
51
|
+
// than silently picking a winner (that's where auto-dedupe goes wrong).
|
|
52
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
53
|
+
const MEMORY_DIR = path.join(os.homedir(), '.aura', 'memory');
|
|
54
|
+
// Keys that describe WHO Dušan/Aura are (global identity) vs machine state.
|
|
55
|
+
// Anything not listed as project-state defaults to identity.
|
|
56
|
+
const PROJECT_STATE_KEYS = new Set([
|
|
57
|
+
'learnlight', 'linux-login-recovery', 'webcam-surveillance',
|
|
58
|
+
'update-on-other-machines', 'personal-tools-location',
|
|
59
|
+
'personal-content-save-location', 'sluzbeni-glasnik-grupa',
|
|
60
|
+
'desktop-install-options', 'telegram-bot-status-line',
|
|
61
|
+
'lessonprep_automation_path', 'clipai-pro', 'aura_code_path',
|
|
62
|
+
'aura_code_status', 'system-recovery-state-2026-06-30',
|
|
63
|
+
'weekly-backup-system', 'root-overflow-protection',
|
|
64
|
+
]);
|
|
65
|
+
// Namespaces that hold identity-ish content and should be merged.
|
|
66
|
+
const SOURCE_NAMESPACES = ['default', 'user', 'user_prefs', 'relationship', 'aura-core'];
|
|
67
|
+
function loadJson(file) {
|
|
68
|
+
try {
|
|
69
|
+
return fs.existsSync(file) ? JSON.parse(fs.readFileSync(file, 'utf8')) : {};
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
return {};
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
function norm(s) {
|
|
76
|
+
return s.replace(/\s+/g, ' ').trim().toLowerCase();
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Merge the identity namespaces into identity.json + project.json.
|
|
80
|
+
* Idempotent: if identity.json already exists it does nothing (unless force).
|
|
81
|
+
*/
|
|
82
|
+
function consolidateMemory(opts = {}) {
|
|
83
|
+
const identityFile = path.join(MEMORY_DIR, 'identity.json');
|
|
84
|
+
const projectFile = path.join(MEMORY_DIR, 'project.json');
|
|
85
|
+
if (!opts.force && fs.existsSync(identityFile)) {
|
|
86
|
+
return { backupDir: '', identityKeys: 0, projectKeys: 0, conflicts: [], alreadyDone: true };
|
|
87
|
+
}
|
|
88
|
+
fs.mkdirSync(MEMORY_DIR, { recursive: true });
|
|
89
|
+
// 1. Back up every source namespace first.
|
|
90
|
+
const backupDir = path.join(MEMORY_DIR, `.pre-unify-${Date.now()}`);
|
|
91
|
+
fs.mkdirSync(backupDir, { recursive: true });
|
|
92
|
+
for (const ns of [...SOURCE_NAMESPACES, 'identity', 'project']) {
|
|
93
|
+
const f = path.join(MEMORY_DIR, `${ns}.json`);
|
|
94
|
+
if (fs.existsSync(f))
|
|
95
|
+
fs.copyFileSync(f, path.join(backupDir, `${ns}.json`));
|
|
96
|
+
}
|
|
97
|
+
const identity = {};
|
|
98
|
+
const project = {};
|
|
99
|
+
const conflicts = [];
|
|
100
|
+
// 2. Merge. A key already present with a DIFFERENT value becomes a CONFLICT
|
|
101
|
+
// entry that keeps both, tagged with their source namespaces.
|
|
102
|
+
const place = (target, ns, key, entry) => {
|
|
103
|
+
const existing = target[key];
|
|
104
|
+
if (!existing) {
|
|
105
|
+
target[key] = { value: entry.value, updated: entry.updated };
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
if (norm(existing.value) === norm(entry.value))
|
|
109
|
+
return; // true duplicate — keep one
|
|
110
|
+
// Genuine conflict: preserve both instead of picking a winner.
|
|
111
|
+
const conflictKey = `${key}__CONFLICT`;
|
|
112
|
+
if (!target[conflictKey]) {
|
|
113
|
+
target[conflictKey] = {
|
|
114
|
+
value: `[CONFLICT — reconcile manually]\n(A) ${existing.value}\n(B, from ${ns}) ${entry.value}`,
|
|
115
|
+
updated: new Date().toISOString(),
|
|
116
|
+
};
|
|
117
|
+
conflicts.push(key);
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
target[conflictKey].value += `\n(+, from ${ns}) ${entry.value}`;
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
for (const ns of SOURCE_NAMESPACES) {
|
|
124
|
+
const store = loadJson(path.join(MEMORY_DIR, `${ns}.json`));
|
|
125
|
+
for (const [key, entry] of Object.entries(store)) {
|
|
126
|
+
const target = PROJECT_STATE_KEYS.has(key) ? project : identity;
|
|
127
|
+
place(target, ns, key, entry);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
// 3. Write the consolidated stores.
|
|
131
|
+
fs.writeFileSync(identityFile, JSON.stringify(identity, null, 2), 'utf8');
|
|
132
|
+
fs.writeFileSync(projectFile, JSON.stringify(project, null, 2), 'utf8');
|
|
133
|
+
return {
|
|
134
|
+
backupDir,
|
|
135
|
+
identityKeys: Object.keys(identity).length,
|
|
136
|
+
projectKeys: Object.keys(project).length,
|
|
137
|
+
conflicts,
|
|
138
|
+
alreadyDone: false,
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=memory-consolidate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-consolidate.js","sourceRoot":"","sources":["../../src/agent/memory-consolidate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mixture of Agents — Phase 2: parallel domain sub-agents.
|
|
3
|
+
*
|
|
4
|
+
* For exploratory-shaped tasks (per loop-profile.ts — that's where ambiguity
|
|
5
|
+
* actually benefits from multiple angles), fan out 2-3 read-only sub-agents
|
|
6
|
+
* in parallel, each framed with a different domain lens, then synthesize
|
|
7
|
+
* their reports into one answer with a real model call.
|
|
8
|
+
*
|
|
9
|
+
* Design constraints (see docs/MIXTURE_OF_AGENTS.md):
|
|
10
|
+
* - Read-only only — parallel sub-agents never edit files.
|
|
11
|
+
* - Gated by task shape AND an explicit opt-in (--moa). The N-call cost is
|
|
12
|
+
* real; it stays off the default path until benchmarks justify it.
|
|
13
|
+
* - Synthesis is an actual provider call — reconciling N expert opinions
|
|
14
|
+
* is judgment, not pattern matching.
|
|
15
|
+
*/
|
|
16
|
+
import type { LLMProvider } from '../providers/types.js';
|
|
17
|
+
import type { ProjectContext } from './context.js';
|
|
18
|
+
import type { Display } from '../cli/display.js';
|
|
19
|
+
import type { LoopResult } from './loop.js';
|
|
20
|
+
export interface MixtureOptions {
|
|
21
|
+
provider: LLMProvider;
|
|
22
|
+
task: string;
|
|
23
|
+
context: ProjectContext;
|
|
24
|
+
display: Display;
|
|
25
|
+
/** Optional model pricing id, as in LoopOptions. */
|
|
26
|
+
pricingModel?: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Run the mixture: N parallel read-only sub-agents + one synthesis call.
|
|
30
|
+
* Returns a LoopResult so callers can treat it exactly like a single-agent
|
|
31
|
+
* run (summary display, cost footer, exit codes).
|
|
32
|
+
*/
|
|
33
|
+
export declare function runMixtureOfAgents(opts: MixtureOptions): Promise<LoopResult>;
|