eklavya 1.91.1 → 1.92.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 (114) hide show
  1. package/README.md +7 -5
  2. package/dist/assets/dashboard.html +151 -3
  3. package/dist/cli-economy.js +434 -0
  4. package/dist/cli-economy.js.map +1 -0
  5. package/dist/cli-memory.js +4 -1
  6. package/dist/cli-memory.js.map +1 -1
  7. package/dist/cli.js +46 -5
  8. package/dist/cli.js.map +1 -1
  9. package/dist/config-path.js +23 -1
  10. package/dist/config-path.js.map +1 -1
  11. package/dist/config.js +63 -0
  12. package/dist/config.js.map +1 -1
  13. package/dist/cost-report.js +67 -0
  14. package/dist/cost-report.js.map +1 -0
  15. package/dist/dashboard.js +79 -1
  16. package/dist/dashboard.js.map +1 -1
  17. package/dist/economy/LICENSE +202 -0
  18. package/dist/economy/envfacts.js +229 -0
  19. package/dist/economy/envfacts.js.map +1 -0
  20. package/dist/economy/loopguard.js +169 -0
  21. package/dist/economy/loopguard.js.map +1 -0
  22. package/dist/economy/pricing.js +54 -0
  23. package/dist/economy/pricing.js.map +1 -0
  24. package/dist/economy/shell-edits.js +238 -0
  25. package/dist/economy/shell-edits.js.map +1 -0
  26. package/dist/economy/signals.js +164 -0
  27. package/dist/economy/signals.js.map +1 -0
  28. package/dist/economy/toolprune.js +209 -0
  29. package/dist/economy/toolprune.js.map +1 -0
  30. package/dist/economy/transcript.js +290 -0
  31. package/dist/economy/transcript.js.map +1 -0
  32. package/dist/feedback-review.js +1 -1
  33. package/dist/feedback-review.js.map +1 -1
  34. package/dist/feedback.js +3 -0
  35. package/dist/feedback.js.map +1 -1
  36. package/dist/guard-note.js +21 -0
  37. package/dist/guard-note.js.map +1 -0
  38. package/dist/hooks/capture-tool.js +61 -11
  39. package/dist/hooks/capture-tool.js.map +1 -1
  40. package/dist/hooks/economy-lib.js +20 -0
  41. package/dist/hooks/economy-lib.js.map +1 -0
  42. package/dist/hooks/file-context.js +1 -1
  43. package/dist/hooks/file-context.js.map +1 -1
  44. package/dist/hooks/lib.js.map +1 -1
  45. package/dist/hooks/memory-lib.js +17 -1
  46. package/dist/hooks/memory-lib.js.map +1 -1
  47. package/dist/hooks/prompt-submit-nudge.js +36 -5
  48. package/dist/hooks/prompt-submit-nudge.js.map +1 -1
  49. package/dist/hooks/session-end.js +32 -0
  50. package/dist/hooks/session-end.js.map +1 -0
  51. package/dist/hooks/session-start.js +34 -0
  52. package/dist/hooks/session-start.js.map +1 -1
  53. package/dist/hooks/stop-quiz-check.js +20 -0
  54. package/dist/hooks/stop-quiz-check.js.map +1 -1
  55. package/dist/hooks/subagent-start.js +19 -3
  56. package/dist/hooks/subagent-start.js.map +1 -1
  57. package/dist/install.js +5 -1
  58. package/dist/install.js.map +1 -1
  59. package/dist/ledger-pending.js +85 -0
  60. package/dist/ledger-pending.js.map +1 -0
  61. package/dist/ledger.js +144 -0
  62. package/dist/ledger.js.map +1 -0
  63. package/dist/loop-guard.js +190 -0
  64. package/dist/loop-guard.js.map +1 -0
  65. package/dist/memory/capture.js +2 -2
  66. package/dist/memory/capture.js.map +1 -1
  67. package/dist/memory/embed.js +37 -0
  68. package/dist/memory/embed.js.map +1 -1
  69. package/dist/memory/pinned.js +175 -0
  70. package/dist/memory/pinned.js.map +1 -0
  71. package/dist/memory/provider.js +66 -0
  72. package/dist/memory/provider.js.map +1 -1
  73. package/dist/memory/recall.js +177 -36
  74. package/dist/memory/recall.js.map +1 -1
  75. package/dist/memory/seam.js +88 -0
  76. package/dist/memory/seam.js.map +1 -0
  77. package/dist/memory/search.js +65 -11
  78. package/dist/memory/search.js.map +1 -1
  79. package/dist/memory/store.js +74 -15
  80. package/dist/memory/store.js.map +1 -1
  81. package/dist/memory/summarize.js.map +1 -1
  82. package/dist/memory/terms.js +100 -0
  83. package/dist/memory/terms.js.map +1 -0
  84. package/dist/memory/tokens.js +28 -7
  85. package/dist/memory/tokens.js.map +1 -1
  86. package/dist/memory/use.js +123 -0
  87. package/dist/memory/use.js.map +1 -0
  88. package/dist/memory/worker.js +16 -1
  89. package/dist/memory/worker.js.map +1 -1
  90. package/dist/migrations/034_memory_keywords.sql +59 -0
  91. package/dist/migrations/035_econ_ledger.sql +69 -0
  92. package/dist/migrations/036_econ_turns.sql +52 -0
  93. package/dist/migrations/037_econ_toolprune.sql +38 -0
  94. package/dist/migrations/038_pinned_facts.sql +48 -0
  95. package/dist/migrations/039_memory_use.sql +34 -0
  96. package/dist/plugin/.claude-plugin/plugin.json +1 -1
  97. package/dist/plugin/hooks/hooks.json +30 -0
  98. package/dist/plugin/skills/CLAUDE.md +1 -1
  99. package/dist/plugin/skills/memory/SKILL.md +2 -1
  100. package/dist/plugin/skills/toolprune/SKILL.md +31 -0
  101. package/dist/statusline.js +2 -2
  102. package/dist/statusline.js.map +1 -1
  103. package/dist/toolprune-store.js +136 -0
  104. package/dist/toolprune-store.js.map +1 -0
  105. package/dist/tools/config_tools.js +30 -0
  106. package/dist/tools/config_tools.js.map +1 -1
  107. package/dist/tools/index.js +2 -1
  108. package/dist/tools/index.js.map +1 -1
  109. package/dist/tools/memory_read_tools.js +8 -0
  110. package/dist/tools/memory_read_tools.js.map +1 -1
  111. package/dist/tools/memory_write_tools.js +21 -0
  112. package/dist/tools/memory_write_tools.js.map +1 -1
  113. package/dist/user-skill/eklavya/SKILL.md +5 -3
  114. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolprune.js","sourceRoot":"","sources":["../../src/economy/toolprune.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,290 @@
1
+ // Translated and adapted from microsoft/TokenEconomizer,
2
+ // tokeneconomizer/trace/claude.py at d3e193b8734ec76230da1e08d7929ba9d14640d8.
3
+ // Licensed under the Apache License, Version 2.0 (see ./LICENSE in this folder).
4
+ // Changes: ported from Python to TypeScript; one pass reads usage, tool calls
5
+ // and the deferred-tool catalog together; the 5-minute and 1-hour cache-write
6
+ // counts are kept apart; usage is split per model, per subagent type and for
7
+ // turns that called Eklavya's own tools; nothing but numbers and names is kept.
8
+ import fs from 'node:fs';
9
+ import path from 'node:path';
10
+ export const zeroUsage = () => ({ input: 0, cacheRead: 0, cacheWrite5m: 0, cacheWrite1h: 0, output: 0 });
11
+ export function addUsage(into, u) {
12
+ into.input += u.input;
13
+ into.cacheRead += u.cacheRead;
14
+ into.cacheWrite5m += u.cacheWrite5m;
15
+ into.cacheWrite1h += u.cacheWrite1h;
16
+ into.output += u.output;
17
+ return into;
18
+ }
19
+ export const totalTokens = (u) => u.input + u.cacheRead + u.cacheWrite5m + u.cacheWrite1h + u.output;
20
+ const num = (v) => (typeof v === 'number' && Number.isFinite(v) && v > 0 ? Math.floor(v) : 0);
21
+ /**
22
+ * One `usage` object as the API returns it. A cache write without the
23
+ * `cache_creation` split is a 5-minute write, the default lifetime.
24
+ */
25
+ export function usageOf(raw) {
26
+ if (!raw || typeof raw !== 'object')
27
+ return null;
28
+ const u = raw;
29
+ const split = (u.cache_creation && typeof u.cache_creation === 'object' ? u.cache_creation : {});
30
+ const w5 = num(split.ephemeral_5m_input_tokens);
31
+ const w1 = num(split.ephemeral_1h_input_tokens);
32
+ const written = num(u.cache_creation_input_tokens);
33
+ return {
34
+ input: num(u.input_tokens),
35
+ cacheRead: num(u.cache_read_input_tokens),
36
+ cacheWrite5m: w5 || w1 ? w5 : written,
37
+ cacheWrite1h: w1,
38
+ output: num(u.output_tokens),
39
+ };
40
+ }
41
+ /** Eklavya's own MCP tools, whichever way the server was registered. */
42
+ export const isEklavyaTool = (name) => /^mcp__(?:plugin_eklavya_eklavya|eklavya)__/.test(name);
43
+ /** A log's lines; a missing file has none. Lines over 8 MB are skipped, not parsed. */
44
+ function lines(file) {
45
+ let text;
46
+ try {
47
+ text = fs.readFileSync(file, 'utf8');
48
+ }
49
+ catch {
50
+ return [];
51
+ }
52
+ return text.split('\n').filter((l) => l && l.length < 8 << 20);
53
+ }
54
+ function parse(line) {
55
+ try {
56
+ const v = JSON.parse(line);
57
+ return v && typeof v === 'object' && !Array.isArray(v) ? v : null;
58
+ }
59
+ catch {
60
+ return null;
61
+ }
62
+ }
63
+ /** Was this entry a prompt the person gave? Not a tool result, a command's output, an interrupt, a summary or a subagent's. */
64
+ export function isPrompt(ev) {
65
+ if (ev.type !== 'user' || ev.isMeta || ev.isSidechain || ev.isCompactSummary)
66
+ return false;
67
+ let content = ev.message?.content;
68
+ if (Array.isArray(content)) {
69
+ const blocks = content.filter((b) => Boolean(b) && typeof b === 'object');
70
+ if (blocks.some((b) => b.type === 'tool_result'))
71
+ return false;
72
+ content = blocks
73
+ .filter((b) => b.type === 'text')
74
+ .map((b) => (typeof b.text === 'string' ? b.text : ''))
75
+ .join(' ');
76
+ }
77
+ return typeof content === 'string' && !content.startsWith('<local-command') && !content.startsWith('[Request interrupted');
78
+ }
79
+ /** `<session>.jsonl` → `<session>/subagents/*.jsonl`, sorted. */
80
+ export function subagentFiles(transcript) {
81
+ const dir = path.join(transcript.replace(/\.jsonl$/, ''), 'subagents');
82
+ try {
83
+ return fs
84
+ .readdirSync(dir)
85
+ .filter((f) => f.endsWith('.jsonl'))
86
+ .sort()
87
+ .map((f) => path.join(dir, f));
88
+ }
89
+ catch {
90
+ return [];
91
+ }
92
+ }
93
+ /**
94
+ * Reads one log's assistant usage and tool calls into `pass`. Returns the
95
+ * agent types its `Agent`/`Task` calls started, by the agent id the result
96
+ * named (the parent's own log only; how subagent files are attributed).
97
+ */
98
+ function readLog(file, pass, head) {
99
+ const spawned = new Map(); // tool_use id → subagent_type
100
+ const agentTypes = new Map(); // agent id → subagent_type
101
+ const deferred = new Set();
102
+ let prompts = 0;
103
+ for (const line of lines(file)) {
104
+ const ev = parse(line);
105
+ if (!ev)
106
+ continue;
107
+ if (head) {
108
+ if (!head.sessionId && typeof ev.sessionId === 'string')
109
+ head.sessionId = ev.sessionId;
110
+ if (!head.cwd && typeof ev.cwd === 'string' && ev.cwd)
111
+ head.cwd = ev.cwd;
112
+ if (!head.version && typeof ev.version === 'string')
113
+ head.version = ev.version;
114
+ if (typeof ev.timestamp === 'string') {
115
+ if (!head.startedAt)
116
+ head.startedAt = ev.timestamp;
117
+ head.endedAt = ev.timestamp;
118
+ }
119
+ const att = ev.attachment;
120
+ if (att && att.type === 'deferred_tools_delta') {
121
+ for (const n of Array.isArray(att.addedNames) ? att.addedNames : [])
122
+ if (typeof n === 'string')
123
+ deferred.add(n);
124
+ for (const n of Array.isArray(att.removedNames) ? att.removedNames : [])
125
+ if (typeof n === 'string')
126
+ deferred.delete(n);
127
+ }
128
+ if (isPrompt(ev))
129
+ prompts++;
130
+ }
131
+ const msg = (ev.message ?? {});
132
+ const content = Array.isArray(msg.content) ? msg.content : [];
133
+ if (ev.type === 'assistant') {
134
+ let eklavya = false;
135
+ for (const b of content) {
136
+ if (!b || b.type !== 'tool_use' || typeof b.name !== 'string')
137
+ continue;
138
+ pass.tools[b.name] = (pass.tools[b.name] ?? 0) + 1;
139
+ if (isEklavyaTool(b.name))
140
+ eklavya = true;
141
+ const input = (b.input ?? {});
142
+ if ((b.name === 'Agent' || b.name === 'Task') && typeof b.id === 'string' && typeof input.subagent_type === 'string') {
143
+ spawned.set(b.id, input.subagent_type);
144
+ }
145
+ }
146
+ const usage = usageOf(msg.usage);
147
+ if (usage) {
148
+ const model = typeof msg.model === 'string' && msg.model ? msg.model : 'unknown';
149
+ let id = typeof msg.id === 'string' && msg.id ? msg.id : '';
150
+ if (!id)
151
+ id = `anon-${file}-${++pass.anon}`;
152
+ const prev = pass.byId.get(id);
153
+ // Later entries of the same message carry the final counts.
154
+ pass.byId.set(id, { usage, model, eklavya: eklavya || Boolean(prev?.eklavya) });
155
+ if (!prev)
156
+ pass.models[model] = (pass.models[model] ?? 0) + 1;
157
+ }
158
+ }
159
+ else if (ev.type === 'user') {
160
+ for (const b of content) {
161
+ if (b && b.type === 'tool_result' && b.is_error === true)
162
+ pass.toolErrors++;
163
+ if (b && b.type === 'tool_result' && typeof b.tool_use_id === 'string' && spawned.has(b.tool_use_id)) {
164
+ const result = (ev.toolUseResult ?? {});
165
+ if (typeof result.agentId === 'string')
166
+ agentTypes.set(result.agentId, spawned.get(b.tool_use_id));
167
+ }
168
+ }
169
+ }
170
+ }
171
+ return { agentTypes, prompts, deferred };
172
+ }
173
+ const fresh = () => ({ byId: new Map(), tools: {}, toolErrors: 0, models: {}, anon: 0 });
174
+ function fold(pass, into, only) {
175
+ for (const r of pass.byId.values()) {
176
+ if (only && !only(r))
177
+ continue;
178
+ addUsage(into.usage, r.usage);
179
+ addUsage((into.byModel[r.model] ??= zeroUsage()), r.usage);
180
+ }
181
+ }
182
+ /** Summarise a session's transcript and its subagents' logs. A missing file reads as an empty session. */
183
+ export function readTranscript(transcript) {
184
+ const head = { sessionId: null, cwd: null, version: null, startedAt: null, endedAt: null };
185
+ const main = fresh();
186
+ const { agentTypes, prompts, deferred } = readLog(transcript, main, head);
187
+ const out = {
188
+ sessionId: head.sessionId ?? null,
189
+ cwd: head.cwd ?? null,
190
+ version: head.version ?? null,
191
+ startedAt: head.startedAt ?? null,
192
+ endedAt: head.endedAt ?? null,
193
+ requests: main.byId.size,
194
+ usage: zeroUsage(),
195
+ byModel: {},
196
+ model: null,
197
+ subagents: {},
198
+ eklavya: { usage: zeroUsage(), byModel: {} },
199
+ tools: { ...main.tools },
200
+ toolErrors: main.toolErrors,
201
+ prompts,
202
+ deferredTools: [...deferred].sort(),
203
+ files: fs.existsSync(transcript) ? 1 : 0,
204
+ };
205
+ fold(main, out);
206
+ fold(main, out.eklavya, (r) => r.eklavya);
207
+ const models = { ...main.models };
208
+ for (const file of subagentFiles(transcript)) {
209
+ out.files++;
210
+ const sub = fresh();
211
+ readLog(file, sub, null);
212
+ const agentId = path.basename(file, '.jsonl').replace(/^agent-/, '');
213
+ const type = agentTypes.get(agentId) ?? 'unknown';
214
+ fold(sub, out);
215
+ fold(sub, (out.subagents[type] ??= { usage: zeroUsage(), byModel: {} }));
216
+ out.requests += sub.byId.size;
217
+ out.toolErrors += sub.toolErrors;
218
+ for (const [name, n] of Object.entries(sub.tools))
219
+ out.tools[name] = (out.tools[name] ?? 0) + n;
220
+ for (const [m, n] of Object.entries(sub.models))
221
+ models[m] = (models[m] ?? 0) + n;
222
+ }
223
+ out.model = Object.entries(models).sort((a, b) => b[1] - a[1] || a[0].localeCompare(b[0]))[0]?.[0] ?? null;
224
+ return out;
225
+ }
226
+ /** Where Claude Code keeps session logs: `$CLAUDE_CONFIG_DIR/projects`, else `~/.claude/projects`. */
227
+ export function projectsDir(env, home) {
228
+ return path.join(env.CLAUDE_CONFIG_DIR || path.join(home, '.claude'), 'projects');
229
+ }
230
+ /** The folder Claude Code files a directory's sessions under: every non-alphanumeric becomes `-`. */
231
+ export const projectFolder = (dir) => dir.replace(/[^A-Za-z0-9]/g, '-');
232
+ /** A session id that is safe in a file name (Claude Code's are UUIDs). */
233
+ export const safeSessionId = (sid) => typeof sid === 'string' && /^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$/.test(sid);
234
+ /** The transcript of `sessionId`, looked up under the checkout's folder first, then every folder. */
235
+ export function findTranscript(projects, sessionId, cwd) {
236
+ if (!safeSessionId(sessionId))
237
+ return null;
238
+ const name = `${sessionId}.jsonl`;
239
+ if (cwd) {
240
+ const direct = path.join(projects, projectFolder(cwd), name);
241
+ if (fs.existsSync(direct))
242
+ return direct;
243
+ }
244
+ let folders = [];
245
+ try {
246
+ folders = fs.readdirSync(projects);
247
+ }
248
+ catch {
249
+ return null;
250
+ }
251
+ for (const folder of folders) {
252
+ const file = path.join(projects, folder, name);
253
+ if (fs.existsSync(file))
254
+ return file;
255
+ }
256
+ return null;
257
+ }
258
+ /**
259
+ * A session's Bash and WebFetch calls with what came back, main thread only,
260
+ * in order: what the environment-fact families read. Held in memory for the
261
+ * fold and dropped; the facts keep only command forms, variable names and hosts.
262
+ */
263
+ export function readCalls(transcript) {
264
+ const pending = new Map();
265
+ const out = [];
266
+ for (const line of lines(transcript)) {
267
+ const ev = parse(line);
268
+ if (!ev || ev.isSidechain)
269
+ continue;
270
+ const content = (ev.message ?? {}).content;
271
+ if (!Array.isArray(content))
272
+ continue;
273
+ for (const b of content) {
274
+ if (!b || typeof b !== 'object')
275
+ continue;
276
+ const input = (b.input ?? {});
277
+ if (b.type === 'tool_use' && typeof b.id === 'string' && (b.name === 'Bash' || b.name === 'WebFetch')) {
278
+ pending.set(b.id, { tool: b.name, input: String((b.name === 'Bash' ? input.command : input.url) ?? '') });
279
+ }
280
+ else if (b.type === 'tool_result' && typeof b.tool_use_id === 'string' && pending.has(b.tool_use_id)) {
281
+ const c = b.content;
282
+ const text = typeof c === 'string' ? c : Array.isArray(c) ? c.map((x) => (x && typeof x === 'object' && typeof x.text === 'string' ? x.text : '')).join('\n') : '';
283
+ out.push({ ...pending.get(b.tool_use_id), output: text.slice(0, 20_000), failed: b.is_error === true });
284
+ pending.delete(b.tool_use_id);
285
+ }
286
+ }
287
+ }
288
+ return out;
289
+ }
290
+ //# sourceMappingURL=transcript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcript.js","sourceRoot":"","sources":["../../src/economy/transcript.ts"],"names":[],"mappings":"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"}
@@ -95,7 +95,7 @@ export const REVIEW_SYSTEM = [
95
95
  'Give no numbers: no scores, ratings, grades or counts anywhere in the output. Words only.',
96
96
  'Be plain, kind and specific.',
97
97
  ].join('\n');
98
- export const REVIEW_CALL = { schema: REVIEW_SCHEMA, system: REVIEW_SYSTEM };
98
+ export const REVIEW_CALL = { schema: REVIEW_SCHEMA, system: REVIEW_SYSTEM, source: 'feedback' };
99
99
  /** The fence tags the prompts are wrapped in, and so the ones a prompt may not spell. */
100
100
  const FENCE_TAGS = ['prompt', 'prompts'];
101
101
  /** The prompts as the model reads them: numbered from 1, each fenced as data. */
@@ -1 +1 @@
1
- {"version":3,"file":"feedback-review.js","sourceRoot":"","sources":["../src/feedback-review.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"feedback-review.js","sourceRoot":"","sources":["../src/feedback-review.ts"],"names":[],"mappings":"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"}
package/dist/feedback.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { meterProviderCalls } from './ledger.js';
1
2
  import { ownWords } from './memory/recall.js';
2
3
  import { reviewPrompts, REVIEW_LIMIT } from './feedback-review.js';
3
4
  import { runtimeCli } from './update.js';
@@ -112,6 +113,8 @@ export async function generateFeedback(db, config, opts) {
112
113
  return { status: 'off' };
113
114
  if (!config.memory.enabled)
114
115
  return { status: 'needs_memory' };
116
+ // The review's model call is charged to the cost ledger.
117
+ meterProviderCalls(db, config, { project: opts.project });
115
118
  const observer = config.providers.observer;
116
119
  if (!observer)
117
120
  return { status: 'needs_observer' };
@@ -1 +1 @@
1
- {"version":3,"file":"feedback.js","sourceRoot":"","sources":["../src/feedback.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,YAAY,EAAiC,MAAM,sBAAsB,CAAC;AAClG,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAElF;;;;;GAKG;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC;AA2CjC,MAAM,KAAK,GAAG,CAAC,CAAS,EAAe,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAE7G;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,MAAqB;IACnD,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;AAC1D,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,eAAe,CAAC,EAAY;IAC1C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,4DAA4D,CAAC,CAAC,GAAG,EAAwB,CAAC;QACjH,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,EAAY;IAC1C,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,OAAO,CAAC,oEAAoE,CAAC,CAAC,GAAG,EAAE,KAAK,SAAS,CAAC;IAC9G,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,EAAY,EAAE,IAAiB;IAC5D,MAAM,IAAI,GAAG,EAAE;SACZ,OAAO,CACN;;qFAE+E,CAChF;SACA,GAAG,CACF,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EACtF,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,KAAK,CACpE,CAAC;IACJ,OAAO,IAAI,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAClE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,EAAY,EAAE,EAAU;IAC1D,MAAM,IAAI,GAAG,EAAE;SACZ,OAAO,CAAC,sGAAsG,CAAC;SAC/G,GAAG,CAAC,EAAE,CAAC,CAAC;IACX,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC;QAAE,OAAO,cAAc,CAAC;IAC5C,OAAO,EAAE,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;AACnG,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,cAAc,CAAC,EAAY,EAAE,EAAU;IACrD,OAAO,EAAE,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;AACnF,CAAC;AAED,gGAAgG;AAChG,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AACjC,+FAA+F;AAC/F,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC;AAC9B,2FAA2F;AAC3F,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAWtC;;;;;GAKG;AACH,SAAS,iBAAiB,CAAC,EAAY,EAAE,OAAe,EAAE,SAAiB;IACzE,MAAM,IAAI,GAAG,EAAE;SACZ,OAAO,CAAC,wHAAwH,CAAC;SACjI,GAAG,CAAC,OAAO,EAAE,SAAS,CAAmC,CAAC;IAC7D,OAAO,IAAI;SACR,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;SAC7E,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAClD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,iBAAiB,CAAC;SACjD,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC;SAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;AACjF,CAAC;AAED,oGAAoG;AACpG,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;AAEpF;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,EAAY,EACZ,MAAqB,EACrB,IAA2F;IAE3F,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO;QAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IACvD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;IAC9D,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;IAC3C,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;IACnD,IAAI,eAAe,CAAC,EAAE,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAEtD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,cAAc,GAAG,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;IAChF,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,WAAW,GAAG,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;IAClF,MAAM,QAAQ,GAAG,EAAE;SAChB,OAAO,CACN;qEAC+D,OAAO;;;;6CAI/B,CACxC;SACA,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,CAA4C,CAAC;IAE9G,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,yFAAyF,CAAC,CAAC;IACnH,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,oBAAoB,CAAC,EAAE,CAAC;QACxD,MAAM,OAAO,GAAG,iBAAiB,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;QAClE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACpB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;YACxC,SAAS;QACX,CAAC;QACD,IAAI,GAAG,CAAC;QACR,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACjG,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,sEAAsE;YACtE,oEAAoE;YACpE,IAAI,WAAW,CAAC,GAAG,CAAE,GAAqB,CAAC,UAAU,CAAC;gBAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;YACnF,MAAM,GAAG,GAAG,GAAoB,CAAC;YACjC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,UAAU,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACpF,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QAC9B,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;QACxC,MAAM,EAAE,GAAG,cAAc,CAAC,EAAE,EAAE;YAC5B,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,QAAQ,EAAE,MAAM,CAAC,EAAE;YACnB,MAAM,EAAE,MAAM,CAAC,IAAI;YACnB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,KAAK,EAAE,QAAQ,CAAC,KAAK;SACtB,CAAC,CAAC;QACH,4EAA4E;QAC5E,qEAAqE;QACrE,IAAI,EAAE,KAAK,IAAI;YAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QAC9C,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACrC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;IAC5D,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAC/B,CAAC;AAED,4DAA4D;AAC5D,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,GAAG,MAAM,CAAC;AAC7C,MAAM,SAAS,GAAG,qBAAqB,CAAC;AAExC;;;;;;;;;GASG;AACH,MAAM,UAAU,uBAAuB,CACrC,EAAY,EACZ,MAAqB,EACrB,IAA2D;IAE3D,IAAI,CAAC;QACH,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ;YAAE,OAAO;QACnE,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM;YAAE,OAAO;QACjD,IAAI,eAAe,CAAC,EAAE,CAAC;YAAE,OAAO;QAChC,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QACrB,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAkC,CAAC;QAC/G,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC,GAAG,iBAAiB;YAAE,OAAO;QACnE,EAAE,CAAC,OAAO,CAAC,mGAAmG,CAAC,CAAC,GAAG,CACjH,SAAS,EACT,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAC5B,CAAC;QACF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,CAAC,EAAE;YACjG,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,QAAQ;YACf,WAAW,EAAE,IAAI;YACjB,GAAG,EAAE,IAAI,CAAC,GAAG;SACd,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC5B,KAAK,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,uCAAuC;IACzC,CAAC;AACH,CAAC;AAkBD,4EAA4E;AAC5E,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAC;AAE/B;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,EAAY,EAAE,GAA6D;IACzG,MAAM,GAAG,GAAoB,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAC9J,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,KAAK,IAAI;YAC/B,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,sEAAsE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAE3F,CAAC;QACd,MAAM,IAAI,GAAG,EAAE;aACZ,OAAO,CACN;;mEAE2D,CAC5D;aACA,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,UAAU,CAAkH,CAAC;QACrJ,GAAG,CAAC,WAAW,GAAG,EAAE,EAAE,WAAW,IAAI,IAAI,CAAC;QAC1C,GAAG,CAAC,QAAQ,GAAG,EAAE,EAAE,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC;QAC7C,GAAG,CAAC,IAAI,GAAG,EAAE,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;QACjC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACvB,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACvB,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC3B,MAAM,KAAK,GAAG,iBAAiB,CAAC,EAAE,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACpE,IAAI,KAAK;YAAE,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;IAC/G,CAAC;IAAC,MAAM,CAAC;QACP,iCAAiC;IACnC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,WAAW,CAAC,EAAY,EAAE,EAAU;IAClD,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC,GAAG,CAAC,EAAE,CAAuB,CAAC;IAClG,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACjC,CAAC;AAaD,4FAA4F;AAC5F,MAAM,UAAU,gBAAgB,CAC9B,EAAY,EACZ,CAAwD;IAExD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACzD,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;IACjD,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1C,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE;SACpB,OAAO,CAAC,8EAA8E,KAAK,EAAE,CAAC;SAC9F,GAAG,CAAC,GAAG,IAAI,CAAkB,CAAC;IACjC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9D,MAAM,IAAI,GAAG,EAAE;SACZ,OAAO,CACN,kEAAkE,KAAK;+DACd,CAC1D;SACA,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG,CAAa,CAAC;IACnD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC3B,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACrB,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,eAAe,EAAE,GAAG,CAAC,eAAgB;YACrC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;YAC/B,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SAC1C,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;AAC5C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,EAAY,EAAE,MAAqB;IACjE,IAAI,OAAO,GAA0B,IAAI,CAAC;IAC1C,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,eAAe,CAAC,EAAE,CAAC,CAAC;QAChC,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACtC,YAAY,GAAI,EAAE,CAAC,OAAO,CAAC,4EAA4E,CAAC,CAAC,GAAG,EAAoB,CAAC,CAAC,CAAC;QACnI,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,qFAAqF,CAAC,CAAC,GAAG,EAErG,CAAC;QACd,MAAM,GAAG,IAAI,EAAE,OAAO,KAAK,QAAQ,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,sCAAsC;IACxC,CAAC;IACD,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO;QAChC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO;QAC7B,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,KAAK,IAAI;QAC5C,OAAO;QACP,0EAA0E;QAC1E,iFAAiF;QACjF,MAAM,EAAE,OAAO,KAAK,IAAI,IAAI,eAAe,CAAC,MAAM,CAAC;QACnD,YAAY;QACZ,MAAM;KACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"feedback.js","sourceRoot":"","sources":["../src/feedback.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * The loop guard's word in the status bar (issue #262), kept in its own file
3
+ * so `eklavya statusline`, which runs on every refresh, loads nothing else.
4
+ */
5
+ /** The status-line note while the session's open turn has had a notice. */
6
+ export function guardNote(db, sessionId) {
7
+ try {
8
+ const row = db
9
+ .prepare(`SELECT noticed, nudges FROM econ_turns WHERE session_id = ? AND agent_id = '' AND closed_at IS NULL ORDER BY id DESC LIMIT 1`)
10
+ .get(sessionId);
11
+ if (row?.noticed)
12
+ return 'loop guard: this turn looks stuck';
13
+ if (row?.nudges)
14
+ return 'loop guard: redirected';
15
+ return null;
16
+ }
17
+ catch {
18
+ return null;
19
+ }
20
+ }
21
+ //# sourceMappingURL=guard-note.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guard-note.js","sourceRoot":"","sources":["../src/guard-note.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,2EAA2E;AAC3E,MAAM,UAAU,SAAS,CAAC,EAAqB,EAAE,SAAiB;IAChE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE;aACX,OAAO,CAAC,8HAA8H,CAAC;aACvI,GAAG,CAAC,SAAS,CAAoD,CAAC;QACrE,IAAI,GAAG,EAAE,OAAO;YAAE,OAAO,mCAAmC,CAAC;QAC7D,IAAI,GAAG,EAAE,MAAM;YAAE,OAAO,wBAAwB,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * PostToolUse (every tool): record what the agent just did.
2
+ * PostToolUse (every tool) and PostToolUseFailure: record what the agent just did.
3
3
  *
4
4
  * This is the memory half's main intake. It matches every tool rather than one,
5
5
  * so it is the hook that runs most often in a session — which is why it does
@@ -10,6 +10,9 @@
10
10
  * teaches is a capture path that makes every tool call slower.
11
11
  */
12
12
  import { run, openExisting, config, cwdOf, sessionId } from './lib.js';
13
+ import { foldCall } from '../loop-guard.js';
14
+ import { economyOff, runtimeCliPath } from './economy-lib.js';
15
+ import { startDetached } from '../ledger-pending.js';
13
16
  import { batchIfFull, identityOf, record } from './capture-lib.js';
14
17
  import { policyFrom } from '../memory/capture.js';
15
18
  import { clip, clipTail } from '../memory/privacy.js';
@@ -104,7 +107,7 @@ function bodyFor(input, failed, policy) {
104
107
  parts.push(keys.map((k) => `${k}=${clip(text(toolInput[k]), 200, policy)}`).join(' '));
105
108
  }
106
109
  if (failed)
107
- parts.push(clip(String(errorText(input.tool_response)), 800, policy));
110
+ parts.push(clip(errorText(input), 800, policy));
108
111
  else {
109
112
  const result = excerpt(input.tool_name, input.tool_response, policy);
110
113
  if (result)
@@ -112,16 +115,27 @@ function bodyFor(input, failed, policy) {
112
115
  }
113
116
  return parts.join('\n');
114
117
  }
115
- /** Only called once `failed` has seen an object. */
116
- function errorText(response) {
117
- const r = response;
118
+ /**
119
+ * The failure's message: `PostToolUseFailure` sends it as `error`; a failed
120
+ * `PostToolUse` response carries it in `error` or `stderr`.
121
+ */
122
+ function errorText(input) {
123
+ if (input.hook_event_name === 'PostToolUseFailure') {
124
+ const text = typeof input.error === 'string' ? input.error : JSON.stringify(input.error ?? '');
125
+ return input.is_interrupt ? `(interrupted) ${text}` : text;
126
+ }
127
+ const r = input.tool_response;
118
128
  if (typeof r.error === 'string')
119
129
  return r.error;
120
130
  if (typeof r.stderr === 'string')
121
131
  return r.stderr;
122
132
  return '';
123
133
  }
124
- function failed(response) {
134
+ /** A `PostToolUseFailure` event, or a `PostToolUse` whose response says it failed. */
135
+ function failed(input) {
136
+ if (input.hook_event_name === 'PostToolUseFailure')
137
+ return true;
138
+ const response = input.tool_response;
125
139
  if (!response || typeof response !== 'object')
126
140
  return false;
127
141
  const r = response;
@@ -136,22 +150,55 @@ function kindFor(tool, isError) {
136
150
  return 'file_read';
137
151
  return 'tool_use';
138
152
  }
153
+ /** The guard's view of the call: its result text, and whether the host said it failed. */
154
+ function guardCall(db, config, input, sid, tool) {
155
+ try {
156
+ const isFailure = input.hook_event_name === 'PostToolUseFailure';
157
+ const result = isFailure ? errorText(input) : resultText(input.tool_response);
158
+ const response = input.tool_response;
159
+ const hostFailed = isFailure || failed(input) ? true : response && typeof response === 'object' && 'success' in response ? false : null;
160
+ return foldCall(db, config, {
161
+ sessionId: sid,
162
+ agentId: input.agent_id ?? null,
163
+ tool,
164
+ args: input.tool_input ?? {},
165
+ result,
166
+ failed: hostFailed,
167
+ headless: process.env.CLAUDE_CODE_SESSION_ATTENDED === '0',
168
+ toolUseId: typeof input.tool_use_id === 'string' && input.tool_use_id ? input.tool_use_id : null,
169
+ });
170
+ }
171
+ catch {
172
+ return {};
173
+ }
174
+ }
139
175
  await run(async (input) => {
140
176
  const db = openExisting();
141
177
  if (!db)
142
178
  return 0;
143
179
  const cwd = cwdOf(input);
144
180
  const resolved = config(cwd);
145
- // Capture is independent of `mode`: someone who turned quizzing off did not
146
- // ask for their project history to stop being recorded (PRD CFG-01).
147
- if (!resolved.config.memory.enabled)
148
- return 0;
149
181
  const tool = input.tool_name ?? '';
150
182
  if (!tool)
151
183
  return 0;
152
184
  const sid = sessionId(input, db);
185
+ // The loop guard folds every call, memory or not (issue #262). Whatever it
186
+ // has to say leaves as this hook's one output.
187
+ const guard = sid && resolved.config.economy.loopguard !== 'off' && !economyOff() ? guardCall(db, resolved.config, input, sid, tool) : {};
188
+ // The judge is a model call: a detached process, never awaited.
189
+ if (guard.judgeTurn)
190
+ startDetached(runtimeCliPath(), ['judge', String(guard.judgeTurn)]);
191
+ if (guard.stop)
192
+ process.stdout.write(`${JSON.stringify({ continue: false, stopReason: guard.stop })}\n`);
193
+ else if (guard.context) {
194
+ process.stdout.write(`${JSON.stringify({ hookSpecificOutput: { hookEventName: input.hook_event_name ?? 'PostToolUse', additionalContext: guard.context } })}\n`);
195
+ }
153
196
  const identity = identityOf(input, cwd, sid);
154
- const isError = failed(input.tool_response);
197
+ // Capture is independent of `mode`: someone who turned quizzing off did not
198
+ // ask for their project history to stop being recorded (PRD CFG-01).
199
+ if (!resolved.config.memory.enabled)
200
+ return 0;
201
+ const isError = failed(input);
155
202
  const body = bodyFor(input, isError, policyFrom(resolved.config));
156
203
  if (!body.trim())
157
204
  return 0;
@@ -161,6 +208,9 @@ await run(async (input) => {
161
208
  title: tool,
162
209
  body,
163
210
  files: filesFrom(input.tool_input),
211
+ // One failure is one event: `PostToolUse` with a failed response and
212
+ // `PostToolUseFailure` for the same call share this id.
213
+ hostId: isError && typeof input.tool_use_id === 'string' && input.tool_use_id ? `${input.tool_use_id}` : null,
164
214
  });
165
215
  batchIfFull(db, resolved, identity);
166
216
  return 0;