@visorcraft/idlehands 1.4.6 → 2.0.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/dist/agent/constants.js +12 -0
- package/dist/agent/constants.js.map +1 -0
- package/dist/agent/context-budget.js +103 -0
- package/dist/agent/context-budget.js.map +1 -0
- package/dist/agent/errors.js +8 -0
- package/dist/agent/errors.js.map +1 -0
- package/dist/agent/exec-helpers.js +105 -0
- package/dist/agent/exec-helpers.js.map +1 -0
- package/dist/agent/model-pick.js +21 -0
- package/dist/agent/model-pick.js.map +1 -0
- package/dist/agent/session-utils.js +63 -0
- package/dist/agent/session-utils.js.map +1 -0
- package/dist/agent/subagent-context.js +78 -0
- package/dist/agent/subagent-context.js.map +1 -0
- package/dist/agent/tool-loop-detection.js +91 -20
- package/dist/agent/tool-loop-detection.js.map +1 -1
- package/dist/agent/tool-loop-guard.js.map +1 -1
- package/dist/agent/tool-policy.js +54 -0
- package/dist/agent/tool-policy.js.map +1 -0
- package/dist/agent/tools-schema.js +281 -0
- package/dist/agent/tools-schema.js.map +1 -0
- package/dist/agent.js +191 -641
- package/dist/agent.js.map +1 -1
- package/dist/anton/controller.js +235 -163
- package/dist/anton/controller.js.map +1 -1
- package/dist/anton/lint-baseline.js +64 -0
- package/dist/anton/lint-baseline.js.map +1 -0
- package/dist/anton/preflight.js +7 -0
- package/dist/anton/preflight.js.map +1 -1
- package/dist/anton/prompt.js +71 -71
- package/dist/anton/reporter.js.map +1 -1
- package/dist/anton/runtime-ready.js +120 -0
- package/dist/anton/runtime-ready.js.map +1 -0
- package/dist/anton/session.js +7 -1
- package/dist/anton/session.js.map +1 -1
- package/dist/anton/verifier-utils.js +148 -0
- package/dist/anton/verifier-utils.js.map +1 -0
- package/dist/anton/verifier.js +26 -227
- package/dist/anton/verifier.js.map +1 -1
- package/dist/bot/anton-auto-pin.js +12 -0
- package/dist/bot/anton-auto-pin.js.map +1 -0
- package/dist/bot/anton-commands.js +137 -0
- package/dist/bot/anton-commands.js.map +1 -0
- package/dist/bot/anton-run.js +155 -0
- package/dist/bot/anton-run.js.map +1 -0
- package/dist/bot/anton-status-format.js +18 -0
- package/dist/bot/anton-status-format.js.map +1 -0
- package/dist/bot/basic-commands.js +114 -0
- package/dist/bot/basic-commands.js.map +1 -0
- package/dist/bot/command-format.js.map +1 -1
- package/dist/bot/command-logic.js +8 -728
- package/dist/bot/command-logic.js.map +1 -1
- package/dist/bot/commands.js +18 -1
- package/dist/bot/commands.js.map +1 -1
- package/dist/bot/discord-anton-autopin.js +29 -0
- package/dist/bot/discord-anton-autopin.js.map +1 -0
- package/dist/bot/discord-anton.js +45 -0
- package/dist/bot/discord-anton.js.map +1 -0
- package/dist/bot/discord-commands.js +20 -52
- package/dist/bot/discord-commands.js.map +1 -1
- package/dist/bot/discord-result.js +9 -0
- package/dist/bot/discord-result.js.map +1 -0
- package/dist/bot/discord-routing.js.map +1 -1
- package/dist/bot/discord.js +55 -12
- package/dist/bot/discord.js.map +1 -1
- package/dist/bot/escalation-commands.js +145 -0
- package/dist/bot/escalation-commands.js.map +1 -0
- package/dist/bot/escalation.js.map +1 -1
- package/dist/bot/format.js +0 -5
- package/dist/bot/format.js.map +1 -1
- package/dist/bot/git-status-command.js +28 -0
- package/dist/bot/git-status-command.js.map +1 -0
- package/dist/bot/model-endpoint.js +25 -0
- package/dist/bot/model-endpoint.js.map +1 -0
- package/dist/bot/session-history.js +61 -0
- package/dist/bot/session-history.js.map +1 -0
- package/dist/bot/session-settings.js +89 -0
- package/dist/bot/session-settings.js.map +1 -0
- package/dist/bot/telegram-commands.js +15 -7
- package/dist/bot/telegram-commands.js.map +1 -1
- package/dist/bot/telegram.js +15 -29
- package/dist/bot/telegram.js.map +1 -1
- package/dist/cli/agent-turn.js +8 -2
- package/dist/cli/agent-turn.js.map +1 -1
- package/dist/cli/commands/anton.js +6 -1
- package/dist/cli/commands/anton.js.map +1 -1
- package/dist/cli/commands/model.js +1 -3
- package/dist/cli/commands/model.js.map +1 -1
- package/dist/cli/commands/project.js +1 -1
- package/dist/cli/commands/project.js.map +1 -1
- package/dist/cli/commands/secrets.js +1 -1
- package/dist/cli/commands/secrets.js.map +1 -1
- package/dist/cli/commands/session.js +22 -12
- package/dist/cli/commands/session.js.map +1 -1
- package/dist/cli/guided-onboarding.js +20 -0
- package/dist/cli/guided-onboarding.js.map +1 -0
- package/dist/cli/runtime-cmds.js +8 -133
- package/dist/cli/runtime-cmds.js.map +1 -1
- package/dist/cli/runtime-common.js +35 -0
- package/dist/cli/runtime-common.js.map +1 -0
- package/dist/cli/runtime-detect.js +12 -0
- package/dist/cli/runtime-detect.js.map +1 -0
- package/dist/cli/runtime-host-command.js +7 -0
- package/dist/cli/runtime-host-command.js.map +1 -0
- package/dist/cli/runtime-probe-defaults.js +63 -0
- package/dist/cli/runtime-probe-defaults.js.map +1 -0
- package/dist/cli/runtime-scan-ports.js +30 -0
- package/dist/cli/runtime-scan-ports.js.map +1 -0
- package/dist/cli/setup-bot-step.js +51 -0
- package/dist/cli/setup-bot-step.js.map +1 -0
- package/dist/cli/setup-runtime-forms.js +214 -0
- package/dist/cli/setup-runtime-forms.js.map +1 -0
- package/dist/cli/setup-style.js +8 -0
- package/dist/cli/setup-style.js.map +1 -0
- package/dist/cli/setup-ui.js +146 -0
- package/dist/cli/setup-ui.js.map +1 -0
- package/dist/cli/setup.js +11 -449
- package/dist/cli/setup.js.map +1 -1
- package/dist/client/error-utils.js +37 -0
- package/dist/client/error-utils.js.map +1 -0
- package/dist/client/pressure.js +77 -0
- package/dist/client/pressure.js.map +1 -0
- package/dist/client.js +24 -122
- package/dist/client.js.map +1 -1
- package/dist/config.js +31 -14
- package/dist/config.js.map +1 -1
- package/dist/git.js +8 -2
- package/dist/git.js.map +1 -1
- package/dist/history.js +418 -0
- package/dist/history.js.map +1 -1
- package/dist/hooks/types.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/progress/message-edit-scheduler.js.map +1 -1
- package/dist/progress/turn-progress.js.map +1 -1
- package/dist/runtime/executor.js +4 -1
- package/dist/runtime/executor.js.map +1 -1
- package/dist/runtime/health.js.map +1 -1
- package/dist/runtime/host-runner.js.map +1 -1
- package/dist/safety.js +3 -2
- package/dist/safety.js.map +1 -1
- package/dist/shared/config-utils.js.map +1 -1
- package/dist/tools/exec-core.js +252 -0
- package/dist/tools/exec-core.js.map +1 -0
- package/dist/tools/exec-pty.js +89 -0
- package/dist/tools/exec-pty.js.map +1 -0
- package/dist/tools/exec-utils.js +94 -0
- package/dist/tools/exec-utils.js.map +1 -0
- package/dist/tools/file-discovery.js +144 -0
- package/dist/tools/file-discovery.js.map +1 -0
- package/dist/tools/file-mutations.js +326 -0
- package/dist/tools/file-mutations.js.map +1 -0
- package/dist/tools/file-read.js +133 -0
- package/dist/tools/file-read.js.map +1 -0
- package/dist/tools/patch-apply.js +168 -0
- package/dist/tools/patch-apply.js.map +1 -0
- package/dist/tools/path-safety.js.map +1 -1
- package/dist/tools/replay-utils.js +25 -0
- package/dist/tools/replay-utils.js.map +1 -0
- package/dist/tools/search-utils.js +55 -0
- package/dist/tools/search-utils.js.map +1 -0
- package/dist/tools/sys-notes.js +34 -0
- package/dist/tools/sys-notes.js.map +1 -0
- package/dist/tools/text-utils.js +164 -0
- package/dist/tools/text-utils.js.map +1 -0
- package/dist/tools/undo.js +1 -1
- package/dist/tools/undo.js.map +1 -1
- package/dist/tools/vault-tools.js +36 -0
- package/dist/tools/vault-tools.js.map +1 -0
- package/dist/tools.js +19 -1460
- package/dist/tools.js.map +1 -1
- package/dist/tui/controller.js +5 -2
- package/dist/tui/controller.js.map +1 -1
- package/dist/tui/render.js.map +1 -1
- package/dist/utils.js +2 -2
- package/dist/utils.js.map +1 -1
- package/dist/vault.js +134 -1
- package/dist/vault.js.map +1 -1
- package/dist/watchdog.js +1 -3
- package/dist/watchdog.js.map +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export const MCP_TOOLS_REQUEST_TOKEN = '[[MCP_TOOLS_REQUEST]]';
|
|
2
|
+
export const DEFAULT_SUB_AGENT_SYSTEM_PROMPT = `You are a focused coding sub-agent. Execute only the delegated task.
|
|
3
|
+
- Work in the current directory. Use relative paths for all file operations.
|
|
4
|
+
- Read the target file before editing. You need the exact text for search/replace.
|
|
5
|
+
- Keep tool usage tight and efficient.
|
|
6
|
+
- Prefer surgical edits over rewrites.
|
|
7
|
+
- Do NOT create files outside the working directory unless explicitly requested.
|
|
8
|
+
- When running commands in a subdirectory, use exec's cwd parameter — NOT "cd /path && cmd".
|
|
9
|
+
- Run verification commands when relevant.
|
|
10
|
+
- Return a concise outcome summary.`;
|
|
11
|
+
export const DEFAULT_SUB_AGENT_RESULT_TOKEN_CAP = 4000;
|
|
12
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/agent/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,uBAAuB,GAAG,uBAAuB,CAAC;AAE/D,MAAM,CAAC,MAAM,+BAA+B,GAAG;;;;;;;;oCAQX,CAAC;AAErC,MAAM,CAAC,MAAM,kCAAkC,GAAG,IAAI,CAAC"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context-aware tool result truncation.
|
|
3
|
+
*
|
|
4
|
+
* Prevents oversized tool results from blowing out the context window
|
|
5
|
+
* by pre-truncating before they enter history.
|
|
6
|
+
*/
|
|
7
|
+
// Constants
|
|
8
|
+
const DEFAULT_MAX_SINGLE_RESULT_SHARE = 0.4; // 40% of context max
|
|
9
|
+
const MIN_KEEP_CHARS = 1000;
|
|
10
|
+
const CHARS_PER_TOKEN = 4;
|
|
11
|
+
// Use same format as lens.compactRaw for consistency
|
|
12
|
+
const TRUNCATION_NOTICE_PREFIX = '\n[truncated, ';
|
|
13
|
+
const TRUNCATION_NOTICE_SUFFIX = ' chars total]';
|
|
14
|
+
/**
|
|
15
|
+
* Build truncation notice with total char count (matches lens.compactRaw format).
|
|
16
|
+
*/
|
|
17
|
+
function makeTruncationNotice(totalChars) {
|
|
18
|
+
return `${TRUNCATION_NOTICE_PREFIX}${totalChars}${TRUNCATION_NOTICE_SUFFIX}`;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Truncate text to a target length, trying to break at newlines.
|
|
22
|
+
*/
|
|
23
|
+
function truncateText(text, maxChars, originalLength) {
|
|
24
|
+
if (text.length <= maxChars) {
|
|
25
|
+
return text;
|
|
26
|
+
}
|
|
27
|
+
const notice = makeTruncationNotice(originalLength);
|
|
28
|
+
if (maxChars <= notice.length) {
|
|
29
|
+
return notice;
|
|
30
|
+
}
|
|
31
|
+
const bodyBudget = maxChars - notice.length;
|
|
32
|
+
if (bodyBudget <= MIN_KEEP_CHARS) {
|
|
33
|
+
return text.slice(0, MIN_KEEP_CHARS) + notice;
|
|
34
|
+
}
|
|
35
|
+
// Try to break at a newline
|
|
36
|
+
let cutPoint = bodyBudget;
|
|
37
|
+
const newlinePos = text.lastIndexOf('\n', bodyBudget);
|
|
38
|
+
if (newlinePos > bodyBudget * 0.7) {
|
|
39
|
+
cutPoint = newlinePos;
|
|
40
|
+
}
|
|
41
|
+
return text.slice(0, cutPoint) + notice;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Calculate max chars for a single tool result based on context window.
|
|
45
|
+
*/
|
|
46
|
+
function calculateMaxChars(contextWindow, config) {
|
|
47
|
+
const share = config?.maxSingleResultShare ?? DEFAULT_MAX_SINGLE_RESULT_SHARE;
|
|
48
|
+
const maxTokens = Math.floor(contextWindow * share);
|
|
49
|
+
return maxTokens * CHARS_PER_TOKEN;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Truncate a tool result if it exceeds the context budget.
|
|
53
|
+
*
|
|
54
|
+
* @param content - The tool result content
|
|
55
|
+
* @param contextWindow - Context window size in tokens
|
|
56
|
+
* @param config - Optional configuration overrides
|
|
57
|
+
* @returns Object with truncated content and metadata
|
|
58
|
+
*/
|
|
59
|
+
export function truncateToolResultContent(content, contextWindow, config) {
|
|
60
|
+
const originalLength = content.length;
|
|
61
|
+
const maxChars = calculateMaxChars(contextWindow, config);
|
|
62
|
+
if (originalLength <= maxChars) {
|
|
63
|
+
return { content, truncated: false, originalLength };
|
|
64
|
+
}
|
|
65
|
+
const truncated = truncateText(content, maxChars, originalLength);
|
|
66
|
+
return {
|
|
67
|
+
content: truncated,
|
|
68
|
+
truncated: true,
|
|
69
|
+
originalLength,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Get content from a tool message.
|
|
74
|
+
*/
|
|
75
|
+
function getToolResultContent(msg) {
|
|
76
|
+
const content = msg.content;
|
|
77
|
+
if (typeof content === 'string')
|
|
78
|
+
return content;
|
|
79
|
+
if (Array.isArray(content)) {
|
|
80
|
+
return content
|
|
81
|
+
.filter((p) => p.type === 'text')
|
|
82
|
+
.map((p) => p.text)
|
|
83
|
+
.join('\n');
|
|
84
|
+
}
|
|
85
|
+
return '';
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Enforce context budget on tool result messages.
|
|
89
|
+
* Returns messages with oversized tool results truncated.
|
|
90
|
+
*/
|
|
91
|
+
export function enforceToolResultBudget(messages, contextWindow, config) {
|
|
92
|
+
const maxChars = calculateMaxChars(contextWindow, config);
|
|
93
|
+
return messages.map(msg => {
|
|
94
|
+
if (msg.role !== 'tool')
|
|
95
|
+
return msg;
|
|
96
|
+
const content = getToolResultContent(msg);
|
|
97
|
+
if (content.length <= maxChars)
|
|
98
|
+
return msg;
|
|
99
|
+
const truncated = truncateText(content, maxChars, content.length);
|
|
100
|
+
return { ...msg, content: truncated };
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=context-budget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-budget.js","sourceRoot":"","sources":["../../src/agent/context-budget.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/agent/errors.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,MAAM,OAAO,cAAe,SAAQ,KAAK;IACvC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
const CACHED_EXEC_OBSERVATION_HINT = '[idlehands hint] Reused cached output for repeated read-only exec call (unchanged observation).';
|
|
2
|
+
const REPLAYED_EXEC_HINT = '[idlehands hint] You already ran this exact command. This is the replayed result from your previous execution. Do NOT re-run it — use the output below to continue your task.';
|
|
3
|
+
/** Heuristic: classify shell command as read-only for cache replay safety. */
|
|
4
|
+
export function looksLikeReadOnlyExecCommand(command) {
|
|
5
|
+
let cmd = String(command || '')
|
|
6
|
+
.trim()
|
|
7
|
+
.toLowerCase();
|
|
8
|
+
if (!cmd)
|
|
9
|
+
return false;
|
|
10
|
+
cmd = cmd.replace(/^(\s*cd\s+[^;&|]+\s*(?:&&|;)\s*)+/i, '').trim();
|
|
11
|
+
if (!cmd)
|
|
12
|
+
return false;
|
|
13
|
+
if (/(^|\s)(?:>>?|<<?)\s*/.test(cmd))
|
|
14
|
+
return false;
|
|
15
|
+
if (/\b(?:rm|mv|cp|touch|mkdir|rmdir|chmod|chown|truncate|dd)\b/.test(cmd))
|
|
16
|
+
return false;
|
|
17
|
+
if (/\b(?:sed|perl)\b[^\n]*\s-i\b/.test(cmd))
|
|
18
|
+
return false;
|
|
19
|
+
if (/\btee\b/.test(cmd))
|
|
20
|
+
return false;
|
|
21
|
+
if (/\bgit\b/.test(cmd)) {
|
|
22
|
+
if (/\bgit\b[^\n|;&]*\b(?:add|am|apply|bisect|checkout|switch|clean|clone|commit|fetch|merge|pull|push|rebase|reset|revert|stash)\b/.test(cmd)) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
if (/\bgit\b[^\n|;&]*\b(?:log|show|status|diff|rev-parse|branch(?:\s+--list)?|tag(?:\s+--list)?|ls-files|grep)\b/.test(cmd)) {
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
if (/^\s*(?:grep|rg|ag|ack|find|ls|cat|head|tail|wc|stat)\b/.test(cmd))
|
|
30
|
+
return true;
|
|
31
|
+
if (/\|\s*(?:grep|rg|ag|ack)\b/.test(cmd))
|
|
32
|
+
return true;
|
|
33
|
+
if (/^\s*(?:file|which|type|uname|env|printenv|id|whoami|pwd)\b/.test(cmd))
|
|
34
|
+
return true;
|
|
35
|
+
if (/\bgit\b[^\n|;&]*\b(?:blame|remote|config\s+--(?:get|list|global|local|system))\b/.test(cmd))
|
|
36
|
+
return true;
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
/** Heuristic: command where non-zero rc should be interpreted as failure signal. */
|
|
40
|
+
export function execRcShouldSignalFailure(command) {
|
|
41
|
+
const cmd = String(command || '').toLowerCase();
|
|
42
|
+
if (!cmd)
|
|
43
|
+
return false;
|
|
44
|
+
if (/\b(?:npm|pnpm|yarn)\s+(?:run\s+)?(?:test|build|lint|typecheck|check)\b/.test(cmd))
|
|
45
|
+
return true;
|
|
46
|
+
if (/\bnode\s+--test\b/.test(cmd))
|
|
47
|
+
return true;
|
|
48
|
+
if (/\b(?:pytest|go\s+test|cargo\s+test|ctest|mvn\s+test|gradle\s+test)\b/.test(cmd))
|
|
49
|
+
return true;
|
|
50
|
+
if (/\b(?:cargo\s+build|go\s+build|tsc\b)\b/.test(cmd))
|
|
51
|
+
return true;
|
|
52
|
+
if (/^\s*(?:rg|grep|ag|ack)\b/.test(cmd))
|
|
53
|
+
return false;
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
/** Annotate exec output payload/content with cached observation hint. */
|
|
57
|
+
export function withCachedExecObservationHint(content) {
|
|
58
|
+
if (!content)
|
|
59
|
+
return content;
|
|
60
|
+
try {
|
|
61
|
+
const parsed = JSON.parse(content);
|
|
62
|
+
const out = typeof parsed?.out === 'string' ? parsed.out : '';
|
|
63
|
+
if (out.includes(CACHED_EXEC_OBSERVATION_HINT))
|
|
64
|
+
return content;
|
|
65
|
+
parsed.out = out ? `${out}\n${CACHED_EXEC_OBSERVATION_HINT}` : CACHED_EXEC_OBSERVATION_HINT;
|
|
66
|
+
parsed.cached_observation = true;
|
|
67
|
+
return JSON.stringify(parsed);
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
if (content.includes(CACHED_EXEC_OBSERVATION_HINT))
|
|
71
|
+
return content;
|
|
72
|
+
return `${content}\n${CACHED_EXEC_OBSERVATION_HINT}`;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/** Annotate exec output payload/content with replay hint. */
|
|
76
|
+
export function withReplayedExecHint(content) {
|
|
77
|
+
if (!content)
|
|
78
|
+
return content;
|
|
79
|
+
try {
|
|
80
|
+
const parsed = JSON.parse(content);
|
|
81
|
+
const out = typeof parsed?.out === 'string' ? parsed.out : '';
|
|
82
|
+
if (out.includes(REPLAYED_EXEC_HINT))
|
|
83
|
+
return content;
|
|
84
|
+
parsed.out = out ? `${REPLAYED_EXEC_HINT}\n${out}` : REPLAYED_EXEC_HINT;
|
|
85
|
+
parsed.replayed = true;
|
|
86
|
+
return JSON.stringify(parsed);
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
if (content.includes(REPLAYED_EXEC_HINT))
|
|
90
|
+
return content;
|
|
91
|
+
return `${REPLAYED_EXEC_HINT}\n${content}`;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/** Whether an exec result payload is cacheable (rc===0 JSON payload). */
|
|
95
|
+
export function readOnlyExecCacheable(content) {
|
|
96
|
+
try {
|
|
97
|
+
const parsed = JSON.parse(content);
|
|
98
|
+
const rc = Number(parsed?.rc ?? NaN);
|
|
99
|
+
return Number.isFinite(rc) && rc === 0;
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=exec-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exec-helpers.js","sourceRoot":"","sources":["../../src/agent/exec-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { normalizeModelsResponse } from './review-artifact.js';
|
|
2
|
+
import { makeAbortController } from './session-utils.js';
|
|
3
|
+
/** Pick a default model from endpoint model list (prefer qwen). */
|
|
4
|
+
export async function autoPickModel(client, cached) {
|
|
5
|
+
const ac = makeAbortController();
|
|
6
|
+
const timer = setTimeout(() => ac.abort(), 3000);
|
|
7
|
+
try {
|
|
8
|
+
const models = cached ?? normalizeModelsResponse(await client.models(ac.signal));
|
|
9
|
+
const q = models.data.find((m) => /qwen/i.test(m.id));
|
|
10
|
+
if (q)
|
|
11
|
+
return q.id;
|
|
12
|
+
const first = models.data[0]?.id;
|
|
13
|
+
if (!first)
|
|
14
|
+
throw new Error('No models found on server. Check your endpoint and that a model is loaded.');
|
|
15
|
+
return first;
|
|
16
|
+
}
|
|
17
|
+
finally {
|
|
18
|
+
clearTimeout(timer);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=model-pick.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-pick.js","sourceRoot":"","sources":["../../src/agent/model-pick.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,mEAAmE;AACnE,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAoB,EACpB,MAAwC;IAExC,MAAM,EAAE,GAAG,mBAAmB,EAAE,CAAC;IACjC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;IACjD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAI,uBAAuB,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QACjF,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtD,IAAI,CAAC;YAAE,OAAO,CAAC,CAAC,EAAE,CAAC;QACnB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACjC,IAAI,CAAC,KAAK;YACR,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAC;QAChG,OAAO,KAAK,CAAC;IACf,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/** Node 24: AbortController is global. Wrapped for future portability. */
|
|
2
|
+
export function makeAbortController() {
|
|
3
|
+
return new AbortController();
|
|
4
|
+
}
|
|
5
|
+
/** Ensure assistant always emits user-visible text for a turn. */
|
|
6
|
+
export function ensureInformativeAssistantText(text, ctx) {
|
|
7
|
+
if (String(text ?? '').trim())
|
|
8
|
+
return text;
|
|
9
|
+
if (ctx.toolCalls > 0) {
|
|
10
|
+
return 'I completed the requested tool work, but I have no user-visible response text yet. Ask me to summarize what was done.';
|
|
11
|
+
}
|
|
12
|
+
return `I have no user-visible response text for this turn (turn=${ctx.turns}). Please try again or rephrase your request.`;
|
|
13
|
+
}
|
|
14
|
+
/** Detect context-window/token-limit style errors from provider responses. */
|
|
15
|
+
export function isContextWindowExceededError(err) {
|
|
16
|
+
const status = Number(err?.status ?? NaN);
|
|
17
|
+
const msg = String(err?.message ?? err ?? '');
|
|
18
|
+
if (status === 413)
|
|
19
|
+
return true;
|
|
20
|
+
if (!msg)
|
|
21
|
+
return false;
|
|
22
|
+
return /(exceeds?\s+the\s+available\s+context\s+size|exceed_context|context\s+size|context\s+window|maximum\s+context\s+length|too\s+many\s+tokens|request\s*\(\d+\s*tokens\))/i.test(msg);
|
|
23
|
+
}
|
|
24
|
+
/** Approval mode permissiveness ranking (lower = more restrictive). */
|
|
25
|
+
const APPROVAL_MODE_RANK = {
|
|
26
|
+
plan: 0,
|
|
27
|
+
reject: 1,
|
|
28
|
+
default: 2,
|
|
29
|
+
'auto-edit': 3,
|
|
30
|
+
yolo: 4,
|
|
31
|
+
};
|
|
32
|
+
/** Cap a sub-agent's approval mode at the parent's level. */
|
|
33
|
+
export function capApprovalMode(requested, parentMode) {
|
|
34
|
+
return APPROVAL_MODE_RANK[requested] <= APPROVAL_MODE_RANK[parentMode] ? requested : parentMode;
|
|
35
|
+
}
|
|
36
|
+
/** Flatten user content (text or rich parts) into plain text. */
|
|
37
|
+
export function userContentToText(content) {
|
|
38
|
+
if (typeof content === 'string')
|
|
39
|
+
return content;
|
|
40
|
+
let out = '';
|
|
41
|
+
for (const p of content) {
|
|
42
|
+
if (p?.type !== 'text')
|
|
43
|
+
continue;
|
|
44
|
+
const t = typeof p.text === 'string' ? p.text : '';
|
|
45
|
+
if (!t)
|
|
46
|
+
continue;
|
|
47
|
+
out = out ? `${out}\n${t}` : t;
|
|
48
|
+
}
|
|
49
|
+
return out.trim();
|
|
50
|
+
}
|
|
51
|
+
const DELEGATION_MENTION_RE = /\b(?:spawn[_\-\s]?task|sub[\-\s]?agents?|delegate|delegation)\b/;
|
|
52
|
+
const NEGATION_BEFORE_DELEGATION_RE = /\b(?:do not|don't|dont|no|without|avoid|skip|never)\b[^\n.]{0,90}\b(?:spawn[_\-\s]?task|sub[\-\s]?agents?|delegate|delegation)\b/;
|
|
53
|
+
const NEGATION_AFTER_DELEGATION_RE = /\b(?:spawn[_\-\s]?task|sub[\-\s]?agents?|delegate|delegation)\b[^\n.]{0,50}\b(?:do not|don't|dont|not allowed|forbidden|no)\b/;
|
|
54
|
+
/** Honor explicit anti-delegation instructions in user prompt. */
|
|
55
|
+
export function userDisallowsDelegation(content) {
|
|
56
|
+
const text = userContentToText(content).toLowerCase();
|
|
57
|
+
if (!text)
|
|
58
|
+
return false;
|
|
59
|
+
if (!DELEGATION_MENTION_RE.test(text))
|
|
60
|
+
return false;
|
|
61
|
+
return NEGATION_BEFORE_DELEGATION_RE.test(text) || NEGATION_AFTER_DELEGATION_RE.test(text);
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=session-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-utils.js","sourceRoot":"","sources":["../../src/agent/session-utils.ts"],"names":[],"mappings":"AAEA,0EAA0E;AAC1E,MAAM,UAAU,mBAAmB;IACjC,OAAO,IAAI,eAAe,EAAE,CAAC;AAC/B,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,8BAA8B,CAC5C,IAAY,EACZ,GAAyC;IAEzC,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;QAAE,OAAO,IAAI,CAAC;IAE3C,IAAI,GAAG,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,uHAAuH,CAAC;IACjI,CAAC;IAED,OAAO,4DAA4D,GAAG,CAAC,KAAK,+CAA+C,CAAC;AAC9H,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,4BAA4B,CAAC,GAAY;IACvD,MAAM,MAAM,GAAG,MAAM,CAAE,GAAW,EAAE,MAAM,IAAI,GAAG,CAAC,CAAC;IACnD,MAAM,GAAG,GAAG,MAAM,CAAE,GAAW,EAAE,OAAO,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC;IAEvD,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IAChC,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IAEvB,OAAO,yKAAyK,CAAC,IAAI,CACnL,GAAG,CACJ,CAAC;AACJ,CAAC;AAED,uEAAuE;AACvE,MAAM,kBAAkB,GAAiC;IACvD,IAAI,EAAE,CAAC;IACP,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,CAAC;IACV,WAAW,EAAE,CAAC;IACd,IAAI,EAAE,CAAC;CACR,CAAC;AAEF,6DAA6D;AAC7D,MAAM,UAAU,eAAe,CAAC,SAAuB,EAAE,UAAwB;IAC/E,OAAO,kBAAkB,CAAC,SAAS,CAAC,IAAI,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;AAClG,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,iBAAiB,CAAC,OAAoB;IACpD,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC;IAChD,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,MAAM,CAAC,IAAI,OAAgB,EAAE,CAAC;QACjC,IAAI,CAAC,EAAE,IAAI,KAAK,MAAM;YAAE,SAAS;QACjC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACnD,IAAI,CAAC,CAAC;YAAE,SAAS;QACjB,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;AACpB,CAAC;AAED,MAAM,qBAAqB,GAAG,iEAAiE,CAAC;AAChG,MAAM,6BAA6B,GACjC,kIAAkI,CAAC;AACrI,MAAM,4BAA4B,GAChC,+HAA+H,CAAC;AAElI,kEAAkE;AAClE,MAAM,UAAU,uBAAuB,CAAC,OAAoB;IAC1D,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;IACtD,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IAExB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACpD,OAAO,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7F,CAAC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import fs from 'node:fs/promises';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { isLikelyBinaryBuffer } from './formatting.js';
|
|
4
|
+
/** Build bounded context block from a list of relative files for sub-agent delegation. */
|
|
5
|
+
export async function buildSubAgentContextBlock(cwd, rawFiles) {
|
|
6
|
+
const values = Array.isArray(rawFiles) ? rawFiles : [];
|
|
7
|
+
const files = values
|
|
8
|
+
.map((v) => (typeof v === 'string' ? v.trim() : ''))
|
|
9
|
+
.filter(Boolean)
|
|
10
|
+
.slice(0, 12);
|
|
11
|
+
if (!files.length)
|
|
12
|
+
return { block: '', included: [], skipped: [] };
|
|
13
|
+
const MAX_TOTAL_CHARS = 24_000;
|
|
14
|
+
const MAX_PER_FILE_CHARS = 4_000;
|
|
15
|
+
let total = 0;
|
|
16
|
+
const parts = [];
|
|
17
|
+
const included = [];
|
|
18
|
+
const skipped = [];
|
|
19
|
+
for (const rel of files) {
|
|
20
|
+
const abs = path.resolve(cwd, rel);
|
|
21
|
+
const relFromCwd = path.relative(cwd, abs);
|
|
22
|
+
if (relFromCwd.startsWith('..') || path.isAbsolute(relFromCwd)) {
|
|
23
|
+
skipped.push(`${rel} (outside cwd)`);
|
|
24
|
+
continue;
|
|
25
|
+
}
|
|
26
|
+
let stat;
|
|
27
|
+
try {
|
|
28
|
+
stat = await fs.stat(abs);
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
skipped.push(`${rel} (missing)`);
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
if (!stat?.isFile()) {
|
|
35
|
+
skipped.push(`${rel} (not a file)`);
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
const buf = await fs.readFile(abs).catch(() => null);
|
|
39
|
+
if (!buf) {
|
|
40
|
+
skipped.push(`${rel} (unreadable)`);
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
if (isLikelyBinaryBuffer(buf)) {
|
|
44
|
+
skipped.push(`${rel} (binary)`);
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
const raw = buf.toString('utf8');
|
|
48
|
+
const body = raw.length > MAX_PER_FILE_CHARS
|
|
49
|
+
? `${raw.slice(0, MAX_PER_FILE_CHARS)}\n[truncated: ${raw.length} chars total]`
|
|
50
|
+
: raw;
|
|
51
|
+
const section = `[file:${rel}]\n${body}\n[/file:${rel}]`;
|
|
52
|
+
if (total + section.length > MAX_TOTAL_CHARS) {
|
|
53
|
+
skipped.push(`${rel} (context budget reached)`);
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
parts.push(section);
|
|
57
|
+
included.push(rel);
|
|
58
|
+
total += section.length;
|
|
59
|
+
}
|
|
60
|
+
return { block: parts.join('\n\n'), included, skipped };
|
|
61
|
+
}
|
|
62
|
+
/** Strip heading wrappers from lens projection and return concise body. */
|
|
63
|
+
export function extractLensBody(projection) {
|
|
64
|
+
const lines = String(projection ?? '').split(/\r?\n/);
|
|
65
|
+
if (!lines.length)
|
|
66
|
+
return '';
|
|
67
|
+
let start = 0;
|
|
68
|
+
if (lines[0].startsWith('# '))
|
|
69
|
+
start = 1;
|
|
70
|
+
if (lines[start]?.startsWith('# lens:'))
|
|
71
|
+
start += 1;
|
|
72
|
+
return lines
|
|
73
|
+
.slice(start)
|
|
74
|
+
.filter((line) => line.trim().length > 0)
|
|
75
|
+
.slice(0, 40)
|
|
76
|
+
.join('\n');
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=subagent-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subagent-context.js","sourceRoot":"","sources":["../../src/agent/subagent-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -223,6 +223,79 @@ function consecutiveOutcomeStreak(history, signature, outcomeHash) {
|
|
|
223
223
|
}
|
|
224
224
|
return count;
|
|
225
225
|
}
|
|
226
|
+
/**
|
|
227
|
+
* Detect alternating A→B→A→B... ping-pong patterns in tool call history.
|
|
228
|
+
* Returns detection result with count, tool names, and whether results show no progress.
|
|
229
|
+
*/
|
|
230
|
+
function detectPingPongPattern(history) {
|
|
231
|
+
if (history.length < 4) {
|
|
232
|
+
return { detected: false, count: 0, noProgressEvidence: false };
|
|
233
|
+
}
|
|
234
|
+
// Get the last two distinct signatures
|
|
235
|
+
const last = history[history.length - 1];
|
|
236
|
+
let otherSignature;
|
|
237
|
+
let otherToolName;
|
|
238
|
+
for (let i = history.length - 2; i >= 0; i--) {
|
|
239
|
+
const rec = history[i];
|
|
240
|
+
if (rec.signature !== last.signature) {
|
|
241
|
+
otherSignature = rec.signature;
|
|
242
|
+
otherToolName = rec.toolName;
|
|
243
|
+
break;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
if (!otherSignature || !otherToolName) {
|
|
247
|
+
return { detected: false, count: 0, noProgressEvidence: false };
|
|
248
|
+
}
|
|
249
|
+
// Count alternating pattern from the end
|
|
250
|
+
let alternatingCount = 0;
|
|
251
|
+
let expectedSignature = last.signature;
|
|
252
|
+
const resultsBySignature = new Map();
|
|
253
|
+
for (let i = history.length - 1; i >= 0; i--) {
|
|
254
|
+
const rec = history[i];
|
|
255
|
+
// Check if this matches the expected alternating signature
|
|
256
|
+
if (rec.signature === expectedSignature) {
|
|
257
|
+
alternatingCount++;
|
|
258
|
+
// Track result hashes for no-progress detection
|
|
259
|
+
if (rec.resultHash) {
|
|
260
|
+
const existing = resultsBySignature.get(rec.signature) ?? new Set();
|
|
261
|
+
existing.add(rec.resultHash);
|
|
262
|
+
resultsBySignature.set(rec.signature, existing);
|
|
263
|
+
}
|
|
264
|
+
// Flip expected signature
|
|
265
|
+
expectedSignature = expectedSignature === last.signature ? otherSignature : last.signature;
|
|
266
|
+
}
|
|
267
|
+
else if (rec.signature === otherSignature && expectedSignature === last.signature) {
|
|
268
|
+
// Allow the pattern to start with either signature
|
|
269
|
+
alternatingCount++;
|
|
270
|
+
if (rec.resultHash) {
|
|
271
|
+
const existing = resultsBySignature.get(rec.signature) ?? new Set();
|
|
272
|
+
existing.add(rec.resultHash);
|
|
273
|
+
resultsBySignature.set(rec.signature, existing);
|
|
274
|
+
}
|
|
275
|
+
expectedSignature = last.signature;
|
|
276
|
+
}
|
|
277
|
+
else {
|
|
278
|
+
// Pattern broken
|
|
279
|
+
break;
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
if (alternatingCount < 4) {
|
|
283
|
+
return { detected: false, count: 0, noProgressEvidence: false };
|
|
284
|
+
}
|
|
285
|
+
// Check for "no progress" - each signature should have only 1 unique result hash
|
|
286
|
+
const sigAResults = resultsBySignature.get(last.signature);
|
|
287
|
+
const sigBResults = resultsBySignature.get(otherSignature);
|
|
288
|
+
const noProgressEvidence = (sigAResults?.size === 1 || !sigAResults) &&
|
|
289
|
+
(sigBResults?.size === 1 || !sigBResults) &&
|
|
290
|
+
(sigAResults?.size ?? 0) + (sigBResults?.size ?? 0) >= 2;
|
|
291
|
+
return {
|
|
292
|
+
detected: true,
|
|
293
|
+
count: alternatingCount,
|
|
294
|
+
toolA: last.toolName,
|
|
295
|
+
toolB: otherToolName,
|
|
296
|
+
noProgressEvidence,
|
|
297
|
+
};
|
|
298
|
+
}
|
|
226
299
|
export function detectToolCallLoop(state, toolName, params, config) {
|
|
227
300
|
const cfg = normalizeConfig(config);
|
|
228
301
|
const policy = resolvePolicyForTool(cfg, toolName);
|
|
@@ -265,32 +338,30 @@ export function detectToolCallLoop(state, toolName, params, config) {
|
|
|
265
338
|
count,
|
|
266
339
|
};
|
|
267
340
|
}
|
|
341
|
+
// Enhanced ping-pong detection: check for alternating patterns A→B→A→B...
|
|
342
|
+
// No longer requires read-only tools; checks longer history; escalates to critical
|
|
268
343
|
if (policy.detectors.pingPong && state.history.length >= 4) {
|
|
269
|
-
const
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
c.resultHash &&
|
|
284
|
-
d.resultHash &&
|
|
285
|
-
a.resultHash === c.resultHash &&
|
|
286
|
-
b.resultHash === d.resultHash) {
|
|
344
|
+
const pingPong = detectPingPongPattern(state.history);
|
|
345
|
+
if (pingPong.detected && pingPong.noProgressEvidence) {
|
|
346
|
+
// Escalate to critical after 6+ alternations with no progress
|
|
347
|
+
if (pingPong.count >= 6) {
|
|
348
|
+
return {
|
|
349
|
+
level: 'critical',
|
|
350
|
+
detector: 'ping_pong',
|
|
351
|
+
message: `Critical ping-pong loop: alternating between ${pingPong.toolA} and ${pingPong.toolB} (${pingPong.count}x) with no progress`,
|
|
352
|
+
signature,
|
|
353
|
+
argsHash,
|
|
354
|
+
count: pingPong.count,
|
|
355
|
+
};
|
|
356
|
+
}
|
|
357
|
+
// Warning for 4+ alternations
|
|
287
358
|
return {
|
|
288
359
|
level: 'warning',
|
|
289
360
|
detector: 'ping_pong',
|
|
290
|
-
message: `Detected ping-pong tool loop between ${
|
|
361
|
+
message: `Detected ping-pong tool loop between ${pingPong.toolA} and ${pingPong.toolB} (${pingPong.count}x)`,
|
|
291
362
|
signature,
|
|
292
363
|
argsHash,
|
|
293
|
-
count:
|
|
364
|
+
count: pingPong.count,
|
|
294
365
|
};
|
|
295
366
|
}
|
|
296
367
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-loop-detection.js","sourceRoot":"","sources":["../../src/agent/tool-loop-detection.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tool-loop-detection.js","sourceRoot":"","sources":["../../src/agent/tool-loop-detection.ts"],"names":[],"mappings":"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"}
|