aura-code 0.5.0 → 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/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 -23
- 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 +49 -13
- 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 -146
- 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 +1001 -788
- 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 -39
- 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 -36
- package/dist/dream/dream.js +327 -117
- 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/dream/okf.d.ts +10 -0
- package/dist/dream/okf.js +280 -0
- package/dist/dream/okf.js.map +1 -0
- package/dist/dream/parser.d.ts +60 -0
- package/dist/dream/parser.js +176 -0
- package/dist/dream/parser.js.map +1 -0
- package/dist/dream/reconcile.d.ts +69 -0
- package/dist/dream/reconcile.js +303 -0
- package/dist/dream/reconcile.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/index.d.ts +16 -0
- package/dist/machina/index.js +61 -0
- package/dist/machina/index.js.map +1 -0
- package/dist/machina/render-html.d.ts +2 -0
- package/dist/machina/render-html.js +191 -0
- package/dist/machina/render-html.js.map +1 -0
- package/dist/machina/render-terminal.d.ts +2 -0
- package/dist/machina/render-terminal.js +99 -0
- package/dist/machina/render-terminal.js.map +1 -0
- 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.d.ts +61 -0
- package/dist/machina/spec.js +124 -0
- package/dist/machina/spec.js.map +1 -0
- package/dist/machina/verify.d.ts +39 -0
- package/dist/machina/verify.js +95 -0
- package/dist/machina/verify.js.map +1 -0
- 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 +34 -6
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/factory.d.ts +71 -14
- package/dist/providers/factory.js +205 -124
- package/dist/providers/factory.js.map +1 -1
- package/dist/providers/google.js +8 -21
- 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/rem/graph.d.ts +72 -0
- package/dist/rem/graph.js +139 -0
- package/dist/rem/graph.js.map +1 -0
- package/dist/rem/index.d.ts +16 -0
- package/dist/rem/index.js +60 -0
- package/dist/rem/index.js.map +1 -0
- package/dist/rem/render-html.d.ts +2 -0
- package/dist/rem/render-html.js +189 -0
- package/dist/rem/render-html.js.map +1 -0
- package/dist/rem/render-terminal.d.ts +4 -0
- package/dist/rem/render-terminal.js +94 -0
- package/dist/rem/render-terminal.js.map +1 -0
- 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 +5 -2
- package/dist/research/council.js +73 -10
- 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 +6 -4
- 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/gmail-tool.d.ts +5 -1
- package/dist/tools/gmail-tool.js +151 -11
- package/dist/tools/gmail-tool.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 -539
- 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.js +2 -3
- 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/dist/viz/reader.d.ts +33 -0
- package/dist/viz/reader.js +343 -0
- package/dist/viz/reader.js.map +1 -0
- package/package.json +13 -32
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.maybeRollover = maybeRollover;
|
|
4
|
+
const compactor_js_1 = require("./compactor.js");
|
|
5
|
+
const dream_js_1 = require("../dream/dream.js");
|
|
6
|
+
const FLUSH_SYSTEM = [
|
|
7
|
+
'You distill an in-progress coding session\'s compacted history into durable memory bullets.',
|
|
8
|
+
'Write ONLY markdown bullet points, one per line, each starting with "- ".',
|
|
9
|
+
'Each bullet must be a concrete, standalone fact: a decision made, a file touched, a root cause found, or an unresolved thread.',
|
|
10
|
+
'Be specific — file names, exact behavior, not generic advice. No headers, no prose paragraphs.',
|
|
11
|
+
].join(' ');
|
|
12
|
+
/** Per-process counter for sessionFlushFile's uniqueness suffix. */
|
|
13
|
+
let flushSeq = 0;
|
|
14
|
+
/**
|
|
15
|
+
* Flush the current recap to the dream store and replace it in `history`
|
|
16
|
+
* with a pointer line + a freshly regenerated executive digest and affect
|
|
17
|
+
* hint (never the old recap's text — that's what's being flushed). Mutates
|
|
18
|
+
* `history` in place, matching compactHistory's contract. No-ops if there's
|
|
19
|
+
* no recap to flush.
|
|
20
|
+
*/
|
|
21
|
+
async function maybeRollover(history, sessionRoot, provider, extras = {}) {
|
|
22
|
+
const recapIndex = (0, compactor_js_1.findRecapIndex)(history);
|
|
23
|
+
if (recapIndex === -1)
|
|
24
|
+
return { flushed: false };
|
|
25
|
+
const recap = history[recapIndex];
|
|
26
|
+
flushSeq++;
|
|
27
|
+
const flushPath = (0, dream_js_1.sessionFlushFile)(sessionRoot, flushSeq);
|
|
28
|
+
await (0, dream_js_1.distillText)({
|
|
29
|
+
systemPrompt: FLUSH_SYSTEM,
|
|
30
|
+
userContent: recap.content,
|
|
31
|
+
provider,
|
|
32
|
+
outPath: flushPath,
|
|
33
|
+
});
|
|
34
|
+
const pointer = {
|
|
35
|
+
role: 'assistant',
|
|
36
|
+
content: [
|
|
37
|
+
`[Session context flushed to memory (${flushPath}) — continuing with a fresh context window.]`,
|
|
38
|
+
...(extras.affectHint ? [extras.affectHint] : []),
|
|
39
|
+
...(extras.executiveDigest ? ['', extras.executiveDigest] : []),
|
|
40
|
+
].join('\n'),
|
|
41
|
+
};
|
|
42
|
+
// Note: the pointer's content deliberately does NOT start with compactor's
|
|
43
|
+
// RECAP_MARKER, so getRecapGeneration(history) reads back to 0 next time —
|
|
44
|
+
// this message is ordinary content from here on, not a growing recap.
|
|
45
|
+
history.splice(recapIndex, 1, pointer);
|
|
46
|
+
return { flushed: true, flushPath };
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=generational-flush.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generational-flush.js","sourceRoot":"","sources":["../../src/agent/generational-flush.ts"],"names":[],"mappings":";;AAsCA,sCAmCC;AA5DD,iDAAgD;AAChD,gDAAkE;AAElE,MAAM,YAAY,GAAG;IACnB,6FAA6F;IAC7F,2EAA2E;IAC3E,gIAAgI;IAChI,gGAAgG;CACjG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEZ,oEAAoE;AACpE,IAAI,QAAQ,GAAG,CAAC,CAAC;AAOjB;;;;;;GAMG;AACI,KAAK,UAAU,aAAa,CACjC,OAAyB,EACzB,WAAmB,EACnB,QAAqB,EACrB,SAA4D,EAAE;IAE9D,MAAM,UAAU,GAAG,IAAA,6BAAc,EAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,UAAU,KAAK,CAAC,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAEjD,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAA2C,CAAC;IAC5E,QAAQ,EAAE,CAAC;IACX,MAAM,SAAS,GAAG,IAAA,2BAAgB,EAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAE1D,MAAM,IAAA,sBAAW,EAAC;QAChB,YAAY,EAAE,YAAY;QAC1B,WAAW,EAAE,KAAK,CAAC,OAAO;QAC1B,QAAQ;QACR,OAAO,EAAE,SAAS;KACnB,CAAC,CAAC;IAEH,MAAM,OAAO,GAAmB;QAC9B,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE;YACP,uCAAuC,SAAS,8CAA8C;YAC9F,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACjD,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SAChE,CAAC,IAAI,CAAC,IAAI,CAAC;KACb,CAAC;IAEF,2EAA2E;IAC3E,2EAA2E;IAC3E,sEAAsE;IACtE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;IAEvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Task classification for turn-budget sizing.
|
|
3
|
+
*
|
|
4
|
+
* Cheap heuristics only — no LLM call. Spending a model turn to decide
|
|
5
|
+
* how many turns to allow defeats the purpose. This is pattern matching
|
|
6
|
+
* on the task string, nothing more.
|
|
7
|
+
*/
|
|
8
|
+
export type TaskShape = 'single-file' | 'multi-file' | 'exploratory';
|
|
9
|
+
export interface LoopProfile {
|
|
10
|
+
maxTurns: number;
|
|
11
|
+
shape: TaskShape;
|
|
12
|
+
/** How many identical consecutive turn-signatures count as a stall. */
|
|
13
|
+
stallThreshold: number;
|
|
14
|
+
/**
|
|
15
|
+
* One-time budget upgrade: if the run hits maxTurns while still making
|
|
16
|
+
* progress (not stalled), widen once to this ceiling instead of ending
|
|
17
|
+
* with a resume hint. Absent for shapes already at the top tier and
|
|
18
|
+
* whenever the user passed an explicit --max-turns (a hard ceiling).
|
|
19
|
+
*/
|
|
20
|
+
widenTo?: number;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Classify a task string into a rough shape. Defaults to 'single-file'
|
|
24
|
+
* when nothing matches — the common case (fix X, add Y to file Z).
|
|
25
|
+
*/
|
|
26
|
+
export declare function classifyTask(task: string): TaskShape;
|
|
27
|
+
/**
|
|
28
|
+
* Get the loop profile for a task.
|
|
29
|
+
*
|
|
30
|
+
* @param task The task prompt.
|
|
31
|
+
* @param override Explicit maxTurns from CLI flag or config — always wins,
|
|
32
|
+
* and is a hard ceiling (no adaptive widening past it).
|
|
33
|
+
*/
|
|
34
|
+
export declare function getLoopProfile(task: string, override?: number): LoopProfile;
|
|
35
|
+
export type StallKind = 'repeat' | 'cycle';
|
|
36
|
+
/**
|
|
37
|
+
* Detect a stalled run from the sequence of per-turn tool-call signatures.
|
|
38
|
+
*
|
|
39
|
+
* - 'repeat': the last `threshold` signatures are identical (A A A) — the
|
|
40
|
+
* agent retrying the same call verbatim.
|
|
41
|
+
* - 'cycle': the last `2 * threshold` signatures alternate between two
|
|
42
|
+
* distinct signatures (A B A B A B) — the agent bouncing between two
|
|
43
|
+
* equally-wrong edits. Requires `threshold` full repetitions of the pair,
|
|
44
|
+
* so it is strictly harder to trigger than 'repeat'.
|
|
45
|
+
*
|
|
46
|
+
* Exact-match only, deliberately conservative: a false stop on a run that
|
|
47
|
+
* was making slow progress is worse than a few wasted turns, since a human
|
|
48
|
+
* can always resume a stopped session.
|
|
49
|
+
*/
|
|
50
|
+
export declare function detectStall(signatures: string[], threshold: number): StallKind | null;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Task classification for turn-budget sizing.
|
|
4
|
+
*
|
|
5
|
+
* Cheap heuristics only — no LLM call. Spending a model turn to decide
|
|
6
|
+
* how many turns to allow defeats the purpose. This is pattern matching
|
|
7
|
+
* on the task string, nothing more.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.classifyTask = classifyTask;
|
|
11
|
+
exports.getLoopProfile = getLoopProfile;
|
|
12
|
+
exports.detectStall = detectStall;
|
|
13
|
+
const MULTI_FILE_SIGNALS = [
|
|
14
|
+
'all endpoints', 'every file', 'across the', 'throughout the',
|
|
15
|
+
'all files', 'each file', 'entire codebase', 'orchestrate',
|
|
16
|
+
];
|
|
17
|
+
const EXPLORATORY_SIGNALS = [
|
|
18
|
+
'explain', 'analyze', 'investigate', 'research', 'understand',
|
|
19
|
+
'why does', 'why is', 'how does', 'what causes', 'diagnose',
|
|
20
|
+
];
|
|
21
|
+
/**
|
|
22
|
+
* Classify a task string into a rough shape. Defaults to 'single-file'
|
|
23
|
+
* when nothing matches — the common case (fix X, add Y to file Z).
|
|
24
|
+
*/
|
|
25
|
+
function classifyTask(task) {
|
|
26
|
+
const lower = task.toLowerCase();
|
|
27
|
+
if (MULTI_FILE_SIGNALS.some((s) => lower.includes(s))) {
|
|
28
|
+
return 'multi-file';
|
|
29
|
+
}
|
|
30
|
+
if (EXPLORATORY_SIGNALS.some((s) => lower.includes(s))) {
|
|
31
|
+
return 'exploratory';
|
|
32
|
+
}
|
|
33
|
+
return 'single-file';
|
|
34
|
+
}
|
|
35
|
+
const PROFILES = {
|
|
36
|
+
'single-file': { maxTurns: 30, stallThreshold: 3, widenTo: 80 },
|
|
37
|
+
'multi-file': { maxTurns: 150, stallThreshold: 4 },
|
|
38
|
+
'exploratory': { maxTurns: 80, stallThreshold: 4 },
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Get the loop profile for a task.
|
|
42
|
+
*
|
|
43
|
+
* @param task The task prompt.
|
|
44
|
+
* @param override Explicit maxTurns from CLI flag or config — always wins,
|
|
45
|
+
* and is a hard ceiling (no adaptive widening past it).
|
|
46
|
+
*/
|
|
47
|
+
function getLoopProfile(task, override) {
|
|
48
|
+
const shape = classifyTask(task);
|
|
49
|
+
const base = PROFILES[shape];
|
|
50
|
+
if (override !== undefined) {
|
|
51
|
+
return { shape, maxTurns: override, stallThreshold: base.stallThreshold };
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
shape,
|
|
55
|
+
maxTurns: base.maxTurns,
|
|
56
|
+
stallThreshold: base.stallThreshold,
|
|
57
|
+
widenTo: base.widenTo,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Detect a stalled run from the sequence of per-turn tool-call signatures.
|
|
62
|
+
*
|
|
63
|
+
* - 'repeat': the last `threshold` signatures are identical (A A A) — the
|
|
64
|
+
* agent retrying the same call verbatim.
|
|
65
|
+
* - 'cycle': the last `2 * threshold` signatures alternate between two
|
|
66
|
+
* distinct signatures (A B A B A B) — the agent bouncing between two
|
|
67
|
+
* equally-wrong edits. Requires `threshold` full repetitions of the pair,
|
|
68
|
+
* so it is strictly harder to trigger than 'repeat'.
|
|
69
|
+
*
|
|
70
|
+
* Exact-match only, deliberately conservative: a false stop on a run that
|
|
71
|
+
* was making slow progress is worse than a few wasted turns, since a human
|
|
72
|
+
* can always resume a stopped session.
|
|
73
|
+
*/
|
|
74
|
+
function detectStall(signatures, threshold) {
|
|
75
|
+
const tail = signatures.slice(-threshold);
|
|
76
|
+
if (tail.length === threshold && tail.every((s) => s === tail[0])) {
|
|
77
|
+
return 'repeat';
|
|
78
|
+
}
|
|
79
|
+
const pairTail = signatures.slice(-2 * threshold);
|
|
80
|
+
if (pairTail.length === 2 * threshold) {
|
|
81
|
+
const [a, b] = pairTail;
|
|
82
|
+
if (a !== b && pairTail.every((s, i) => s === (i % 2 === 0 ? a : b))) {
|
|
83
|
+
return 'cycle';
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=loop-profile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loop-profile.js","sourceRoot":"","sources":["../../src/agent/loop-profile.ts"],"names":[],"mappings":"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"}
|
package/dist/agent/loop.d.ts
CHANGED
|
@@ -25,12 +25,20 @@ export interface LoopOptions {
|
|
|
25
25
|
disableSpawn?: boolean;
|
|
26
26
|
/** Internal: skip post-task verification (used by runWithVerification wrapper). */
|
|
27
27
|
verify?: boolean;
|
|
28
|
-
/**
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
28
|
+
/** Shadow-git checkpoints before mutating tool calls (default: true; no-op outside a git repo). */
|
|
29
|
+
checkpoints?: boolean;
|
|
30
|
+
/** Plugin hooks fired around tool execution (PreToolUse can block). */
|
|
31
|
+
hooks?: import('../plugins/types.js').HookEntry[];
|
|
32
|
+
/** Optional abort signal — when aborted the loop stops after the current tool turn. */
|
|
33
|
+
abortSignal?: AbortSignal;
|
|
34
|
+
/** Confirmation prompt override for needs-confirm tool calls. Defaults to the
|
|
35
|
+
* terminal readline confirm — embedded callers (alternator, bots) supply
|
|
36
|
+
* their own so confirmation isn't silently impossible off-terminal. */
|
|
33
37
|
confirmFn?: (message: string) => Promise<boolean>;
|
|
38
|
+
/** Optional shared context-health tracker (e.g. the REPL's). When omitted the
|
|
39
|
+
* loop creates an internal one. Passing it in lets a /context command read
|
|
40
|
+
* the accumulated compaction history and per-turn snapshots. */
|
|
41
|
+
healthTracker?: import('../cli/context-health.js').ContextHealthTracker;
|
|
34
42
|
}
|
|
35
43
|
export interface LoopResult {
|
|
36
44
|
success: boolean;
|
|
@@ -52,6 +60,7 @@ export interface TokenUsage {
|
|
|
52
60
|
outputTokens: number;
|
|
53
61
|
totalTokens: number;
|
|
54
62
|
}
|
|
63
|
+
export declare function costFor(model: string, input: number, output: number): number;
|
|
55
64
|
export declare function runAgentLoop(opts: LoopOptions): Promise<LoopResult>;
|
|
56
65
|
export declare function runAgentLoopVerified(opts: LoopOptions, config: VerificationConfig, projectRoot: string): Promise<{
|
|
57
66
|
loopResult: LoopResult;
|
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,7 +265,17 @@ 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);
|
|
@@ -184,20 +290,44 @@ async function runLoopBody(args) {
|
|
|
184
290
|
}
|
|
185
291
|
if (perm.needsConfirm) {
|
|
186
292
|
const desc = formatCallForConfirmation(call);
|
|
187
|
-
const
|
|
188
|
-
const approved = await doConfirm(`Allow: ${desc}?`);
|
|
293
|
+
const approved = await (opts.confirmFn ?? permissions_js_1.confirm)(`Allow: ${desc}?`);
|
|
189
294
|
if (!approved) {
|
|
190
295
|
display.toolBlocked(call.name, 'denied by user');
|
|
191
296
|
toolResults.push({ id: call.id, name: call.name, content: 'User denied this action.', isError: true });
|
|
192
297
|
continue;
|
|
193
298
|
}
|
|
194
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
|
+
}
|
|
195
319
|
const startMs = Date.now();
|
|
196
320
|
result = await (0, index_js_1.executeTool)(call.name, call.input, opts.context.root);
|
|
197
321
|
const elapsed = Date.now() - startMs;
|
|
198
322
|
display.toolResult(call.name, result, elapsed);
|
|
199
323
|
isError = result.startsWith('Error:') || result.startsWith('Tool error');
|
|
200
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
|
+
}
|
|
201
331
|
}
|
|
202
332
|
catch (e) {
|
|
203
333
|
result = `Tool error (${call.name}): ${String(e)}`;
|
|
@@ -206,15 +336,25 @@ async function runLoopBody(args) {
|
|
|
206
336
|
}
|
|
207
337
|
toolResults.push({ id: call.id, name: call.name, content: result, isError });
|
|
208
338
|
}
|
|
339
|
+
health.incrementToolCalls(responseToolCalls.length);
|
|
209
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
|
+
}
|
|
210
347
|
display.agentThinking();
|
|
211
348
|
}
|
|
212
349
|
await persist(opts.sessionPath, history);
|
|
213
350
|
const sessionId = opts.sessionPath ? path.basename(opts.sessionPath, '.json') : undefined;
|
|
214
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}` : ''}`;
|
|
215
355
|
return {
|
|
216
356
|
success: false,
|
|
217
|
-
summary: `Loop
|
|
357
|
+
summary: `Loop ${reason}.${resumeHint}`,
|
|
218
358
|
turns, toolCallCount, usage, history, toolCallLog,
|
|
219
359
|
costUsd: costFor(pricingModel, usage.inputTokens, usage.outputTokens),
|
|
220
360
|
};
|
|
@@ -236,6 +376,10 @@ function formatCallForConfirmation(call) {
|
|
|
236
376
|
return `$ ${call.input.command}`;
|
|
237
377
|
if (call.name === 'write_file')
|
|
238
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
|
+
}
|
|
239
383
|
return `${call.name}(${JSON.stringify(call.input).slice(0, 80)})`;
|
|
240
384
|
}
|
|
241
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;
|