@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.
Files changed (180) hide show
  1. package/dist/agent/constants.js +12 -0
  2. package/dist/agent/constants.js.map +1 -0
  3. package/dist/agent/context-budget.js +103 -0
  4. package/dist/agent/context-budget.js.map +1 -0
  5. package/dist/agent/errors.js +8 -0
  6. package/dist/agent/errors.js.map +1 -0
  7. package/dist/agent/exec-helpers.js +105 -0
  8. package/dist/agent/exec-helpers.js.map +1 -0
  9. package/dist/agent/model-pick.js +21 -0
  10. package/dist/agent/model-pick.js.map +1 -0
  11. package/dist/agent/session-utils.js +63 -0
  12. package/dist/agent/session-utils.js.map +1 -0
  13. package/dist/agent/subagent-context.js +78 -0
  14. package/dist/agent/subagent-context.js.map +1 -0
  15. package/dist/agent/tool-loop-detection.js +91 -20
  16. package/dist/agent/tool-loop-detection.js.map +1 -1
  17. package/dist/agent/tool-loop-guard.js.map +1 -1
  18. package/dist/agent/tool-policy.js +54 -0
  19. package/dist/agent/tool-policy.js.map +1 -0
  20. package/dist/agent/tools-schema.js +281 -0
  21. package/dist/agent/tools-schema.js.map +1 -0
  22. package/dist/agent.js +191 -641
  23. package/dist/agent.js.map +1 -1
  24. package/dist/anton/controller.js +235 -163
  25. package/dist/anton/controller.js.map +1 -1
  26. package/dist/anton/lint-baseline.js +64 -0
  27. package/dist/anton/lint-baseline.js.map +1 -0
  28. package/dist/anton/preflight.js +7 -0
  29. package/dist/anton/preflight.js.map +1 -1
  30. package/dist/anton/prompt.js +71 -71
  31. package/dist/anton/reporter.js.map +1 -1
  32. package/dist/anton/runtime-ready.js +120 -0
  33. package/dist/anton/runtime-ready.js.map +1 -0
  34. package/dist/anton/session.js +7 -1
  35. package/dist/anton/session.js.map +1 -1
  36. package/dist/anton/verifier-utils.js +148 -0
  37. package/dist/anton/verifier-utils.js.map +1 -0
  38. package/dist/anton/verifier.js +26 -227
  39. package/dist/anton/verifier.js.map +1 -1
  40. package/dist/bot/anton-auto-pin.js +12 -0
  41. package/dist/bot/anton-auto-pin.js.map +1 -0
  42. package/dist/bot/anton-commands.js +137 -0
  43. package/dist/bot/anton-commands.js.map +1 -0
  44. package/dist/bot/anton-run.js +155 -0
  45. package/dist/bot/anton-run.js.map +1 -0
  46. package/dist/bot/anton-status-format.js +18 -0
  47. package/dist/bot/anton-status-format.js.map +1 -0
  48. package/dist/bot/basic-commands.js +114 -0
  49. package/dist/bot/basic-commands.js.map +1 -0
  50. package/dist/bot/command-format.js.map +1 -1
  51. package/dist/bot/command-logic.js +8 -728
  52. package/dist/bot/command-logic.js.map +1 -1
  53. package/dist/bot/commands.js +18 -1
  54. package/dist/bot/commands.js.map +1 -1
  55. package/dist/bot/discord-anton-autopin.js +29 -0
  56. package/dist/bot/discord-anton-autopin.js.map +1 -0
  57. package/dist/bot/discord-anton.js +45 -0
  58. package/dist/bot/discord-anton.js.map +1 -0
  59. package/dist/bot/discord-commands.js +20 -52
  60. package/dist/bot/discord-commands.js.map +1 -1
  61. package/dist/bot/discord-result.js +9 -0
  62. package/dist/bot/discord-result.js.map +1 -0
  63. package/dist/bot/discord-routing.js.map +1 -1
  64. package/dist/bot/discord.js +55 -12
  65. package/dist/bot/discord.js.map +1 -1
  66. package/dist/bot/escalation-commands.js +145 -0
  67. package/dist/bot/escalation-commands.js.map +1 -0
  68. package/dist/bot/escalation.js.map +1 -1
  69. package/dist/bot/format.js +0 -5
  70. package/dist/bot/format.js.map +1 -1
  71. package/dist/bot/git-status-command.js +28 -0
  72. package/dist/bot/git-status-command.js.map +1 -0
  73. package/dist/bot/model-endpoint.js +25 -0
  74. package/dist/bot/model-endpoint.js.map +1 -0
  75. package/dist/bot/session-history.js +61 -0
  76. package/dist/bot/session-history.js.map +1 -0
  77. package/dist/bot/session-settings.js +89 -0
  78. package/dist/bot/session-settings.js.map +1 -0
  79. package/dist/bot/telegram-commands.js +15 -7
  80. package/dist/bot/telegram-commands.js.map +1 -1
  81. package/dist/bot/telegram.js +15 -29
  82. package/dist/bot/telegram.js.map +1 -1
  83. package/dist/cli/agent-turn.js +8 -2
  84. package/dist/cli/agent-turn.js.map +1 -1
  85. package/dist/cli/commands/anton.js +6 -1
  86. package/dist/cli/commands/anton.js.map +1 -1
  87. package/dist/cli/commands/model.js +1 -3
  88. package/dist/cli/commands/model.js.map +1 -1
  89. package/dist/cli/commands/project.js +1 -1
  90. package/dist/cli/commands/project.js.map +1 -1
  91. package/dist/cli/commands/secrets.js +1 -1
  92. package/dist/cli/commands/secrets.js.map +1 -1
  93. package/dist/cli/commands/session.js +22 -12
  94. package/dist/cli/commands/session.js.map +1 -1
  95. package/dist/cli/guided-onboarding.js +20 -0
  96. package/dist/cli/guided-onboarding.js.map +1 -0
  97. package/dist/cli/runtime-cmds.js +8 -133
  98. package/dist/cli/runtime-cmds.js.map +1 -1
  99. package/dist/cli/runtime-common.js +35 -0
  100. package/dist/cli/runtime-common.js.map +1 -0
  101. package/dist/cli/runtime-detect.js +12 -0
  102. package/dist/cli/runtime-detect.js.map +1 -0
  103. package/dist/cli/runtime-host-command.js +7 -0
  104. package/dist/cli/runtime-host-command.js.map +1 -0
  105. package/dist/cli/runtime-probe-defaults.js +63 -0
  106. package/dist/cli/runtime-probe-defaults.js.map +1 -0
  107. package/dist/cli/runtime-scan-ports.js +30 -0
  108. package/dist/cli/runtime-scan-ports.js.map +1 -0
  109. package/dist/cli/setup-bot-step.js +51 -0
  110. package/dist/cli/setup-bot-step.js.map +1 -0
  111. package/dist/cli/setup-runtime-forms.js +214 -0
  112. package/dist/cli/setup-runtime-forms.js.map +1 -0
  113. package/dist/cli/setup-style.js +8 -0
  114. package/dist/cli/setup-style.js.map +1 -0
  115. package/dist/cli/setup-ui.js +146 -0
  116. package/dist/cli/setup-ui.js.map +1 -0
  117. package/dist/cli/setup.js +11 -449
  118. package/dist/cli/setup.js.map +1 -1
  119. package/dist/client/error-utils.js +37 -0
  120. package/dist/client/error-utils.js.map +1 -0
  121. package/dist/client/pressure.js +77 -0
  122. package/dist/client/pressure.js.map +1 -0
  123. package/dist/client.js +24 -122
  124. package/dist/client.js.map +1 -1
  125. package/dist/config.js +31 -14
  126. package/dist/config.js.map +1 -1
  127. package/dist/git.js +8 -2
  128. package/dist/git.js.map +1 -1
  129. package/dist/history.js +418 -0
  130. package/dist/history.js.map +1 -1
  131. package/dist/hooks/types.js.map +1 -1
  132. package/dist/index.js.map +1 -1
  133. package/dist/progress/message-edit-scheduler.js.map +1 -1
  134. package/dist/progress/turn-progress.js.map +1 -1
  135. package/dist/runtime/executor.js +4 -1
  136. package/dist/runtime/executor.js.map +1 -1
  137. package/dist/runtime/health.js.map +1 -1
  138. package/dist/runtime/host-runner.js.map +1 -1
  139. package/dist/safety.js +3 -2
  140. package/dist/safety.js.map +1 -1
  141. package/dist/shared/config-utils.js.map +1 -1
  142. package/dist/tools/exec-core.js +252 -0
  143. package/dist/tools/exec-core.js.map +1 -0
  144. package/dist/tools/exec-pty.js +89 -0
  145. package/dist/tools/exec-pty.js.map +1 -0
  146. package/dist/tools/exec-utils.js +94 -0
  147. package/dist/tools/exec-utils.js.map +1 -0
  148. package/dist/tools/file-discovery.js +144 -0
  149. package/dist/tools/file-discovery.js.map +1 -0
  150. package/dist/tools/file-mutations.js +326 -0
  151. package/dist/tools/file-mutations.js.map +1 -0
  152. package/dist/tools/file-read.js +133 -0
  153. package/dist/tools/file-read.js.map +1 -0
  154. package/dist/tools/patch-apply.js +168 -0
  155. package/dist/tools/patch-apply.js.map +1 -0
  156. package/dist/tools/path-safety.js.map +1 -1
  157. package/dist/tools/replay-utils.js +25 -0
  158. package/dist/tools/replay-utils.js.map +1 -0
  159. package/dist/tools/search-utils.js +55 -0
  160. package/dist/tools/search-utils.js.map +1 -0
  161. package/dist/tools/sys-notes.js +34 -0
  162. package/dist/tools/sys-notes.js.map +1 -0
  163. package/dist/tools/text-utils.js +164 -0
  164. package/dist/tools/text-utils.js.map +1 -0
  165. package/dist/tools/undo.js +1 -1
  166. package/dist/tools/undo.js.map +1 -1
  167. package/dist/tools/vault-tools.js +36 -0
  168. package/dist/tools/vault-tools.js.map +1 -0
  169. package/dist/tools.js +19 -1460
  170. package/dist/tools.js.map +1 -1
  171. package/dist/tui/controller.js +5 -2
  172. package/dist/tui/controller.js.map +1 -1
  173. package/dist/tui/render.js.map +1 -1
  174. package/dist/utils.js +2 -2
  175. package/dist/utils.js.map +1 -1
  176. package/dist/vault.js +134 -1
  177. package/dist/vault.js.map +1 -1
  178. package/dist/watchdog.js +1 -3
  179. package/dist/watchdog.js.map +1 -1
  180. 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,8 @@
1
+ /** Errors that should break the outer agent loop, not be caught by per-tool handlers. */
2
+ export class AgentLoopBreak extends Error {
3
+ constructor(message) {
4
+ super(message);
5
+ this.name = 'AgentLoopBreak';
6
+ }
7
+ }
8
+ //# sourceMappingURL=errors.js.map
@@ -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 tail = state.history.slice(-4);
270
- const [a, b, c, d] = tail;
271
- // Ping-pong: A→B→A→B with same outcomes each time
272
- // But only flag if at least one is a read-only tool (avoid false positives on legitimate edit patterns)
273
- const readOnlyTools = new Set(['read_file', 'read_files', 'list_dir', 'search_files', 'exec']);
274
- const isAReadOnly = readOnlyTools.has(a.toolName);
275
- const isBReadOnly = readOnlyTools.has(b.toolName);
276
- const hasReadOnly = isAReadOnly || isBReadOnly;
277
- if (hasReadOnly &&
278
- a.signature === c.signature &&
279
- b.signature === d.signature &&
280
- a.signature !== b.signature &&
281
- a.resultHash &&
282
- b.resultHash &&
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 ${a.toolName} and ${b.toolName}`,
361
+ message: `Detected ping-pong tool loop between ${pingPong.toolA} and ${pingPong.toolB} (${pingPong.count}x)`,
291
362
  signature,
292
363
  argsHash,
293
- count: 4,
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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"}