iranti 0.3.22 → 0.3.23
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/scripts/iranti-mcp.js +8 -3
- package/dist/src/api/server.js +1 -1
- package/dist/src/attendant/AttendantInstance.d.ts +21 -0
- package/dist/src/attendant/AttendantInstance.d.ts.map +1 -1
- package/dist/src/attendant/AttendantInstance.js +266 -10
- package/dist/src/attendant/AttendantInstance.js.map +1 -1
- package/dist/src/lib/providers/mock.d.ts +98 -0
- package/dist/src/lib/providers/mock.d.ts.map +1 -1
- package/dist/src/lib/providers/mock.js +219 -15
- package/dist/src/lib/providers/mock.js.map +1 -1
- package/dist/src/sdk/index.d.ts +6 -0
- package/dist/src/sdk/index.d.ts.map +1 -1
- package/dist/src/sdk/index.js +1 -0
- package/dist/src/sdk/index.js.map +1 -1
- package/package.json +5 -1
|
@@ -490,7 +490,7 @@ Do not use this as a per-turn retrieval tool; use iranti_attend.`,
|
|
|
490
490
|
description: `Ask Iranti whether memory should be injected before the next LLM turn.
|
|
491
491
|
REQUIRED CALL SEQUENCE — follow this every turn, regardless of host:
|
|
492
492
|
1. Call with phase='pre-response' BEFORE replying to the user.
|
|
493
|
-
2. Call BEFORE any lookup tool (Read, Grep, Glob, Bash, WebSearch, WebFetch) where Iranti might already hold the answer.
|
|
493
|
+
2. Call BEFORE any lookup tool (Read, Grep, Glob, Bash, WebSearch, WebFetch) where Iranti might already hold the answer. When you do, pass the pendingToolCall field so Iranti can derive entity hints from the tool target (file, URL, query) and preempt the lookup with stored facts.
|
|
494
494
|
3. If you just ran Edit/Write/Bash/WebSearch/WebFetch since your last iranti_write, call iranti_write FIRST — then attend.
|
|
495
495
|
4. Call with phase='post-response' AFTER every reply, without exception.
|
|
496
496
|
|
|
@@ -508,11 +508,15 @@ checkpoint state before closing the turn.`,
|
|
|
508
508
|
entityHints: z.array(z.string()).optional().describe('Optional entity hints in entityType/entityId format.'),
|
|
509
509
|
maxFacts: z.number().int().min(1).max(20).optional().describe('Maximum facts to inject.'),
|
|
510
510
|
forceInject: z.boolean().optional().describe('Force a memory injection decision.'),
|
|
511
|
-
phase: z.enum(['pre-response', 'post-response', 'mid-turn']).optional().describe("Call phase: 'pre-response' before replying, 'post-response' after replying.
|
|
511
|
+
phase: z.enum(['pre-response', 'post-response', 'mid-turn']).optional().describe("Call phase: 'pre-response' before replying, 'post-response' after replying, 'mid-turn' for discovery-triggered re-attends within the same turn (e.g. after reading a new file or hitting a new entity). Mid-turn attends dedup facts already injected this turn, default to a smaller fact budget (3), and skip user-rule re-scans."),
|
|
512
|
+
pendingToolCall: z.object({
|
|
513
|
+
name: z.enum(['Read', 'Grep', 'Glob', 'Bash', 'WebSearch', 'WebFetch']).describe('The name of the read-only tool the agent is about to run.'),
|
|
514
|
+
args: z.record(z.string(), z.unknown()).optional().describe('The tool arguments (e.g. {file_path: "src/foo.ts"} for Read, {pattern: "src/**/*.ts"} for Glob, {command: "cat scripts/bar.ts"} for Bash, {url: "https://example.com"} for WebFetch, {query: "vector backend"} for WebSearch).'),
|
|
515
|
+
}).optional().describe('Describe the read-only tool call the agent is about to make. Iranti derives entity hints from the tool target (file path, URL, query) and surfaces any stored facts BEFORE the tool runs, so you can preempt redundant Read/Grep/Bash/WebFetch/WebSearch calls with stored memory. The result includes a toolCallGuidance field summarising what was derived.'),
|
|
512
516
|
agent: z.string().optional().describe('Override the default agent id.'),
|
|
513
517
|
agentId: z.string().optional().describe('Alias for agent. Override the default agent id.'),
|
|
514
518
|
},
|
|
515
|
-
}, async ({ latestMessage, message, currentContext, entityHints, maxFacts, forceInject, phase, agent, agentId }) => {
|
|
519
|
+
}, async ({ latestMessage, message, currentContext, entityHints, maxFacts, forceInject, phase, pendingToolCall, agent, agentId }) => {
|
|
516
520
|
const resolvedAgent = resolveToolAgent(agent, agentId);
|
|
517
521
|
syncRuntimeLedgerContext(iranti, undefined, resolvedAgent);
|
|
518
522
|
const resolvedLatestMessage = resolveAttendLatestMessage({ latestMessage, message });
|
|
@@ -565,6 +569,7 @@ checkpoint state before closing the turn.`,
|
|
|
565
569
|
maxFacts,
|
|
566
570
|
forceInject,
|
|
567
571
|
phase,
|
|
572
|
+
pendingToolCall,
|
|
568
573
|
});
|
|
569
574
|
const factsBlock = result.facts.length > 0
|
|
570
575
|
? (0, hostMemoryFormatting_1.formatStructuredFactBlock)(result.facts, {
|
package/dist/src/api/server.js
CHANGED
|
@@ -51,7 +51,7 @@ const RUNTIME_AUTHORITY = (0, runtimeLifecycle_1.resolveRuntimeAuthorityFromEnv)
|
|
|
51
51
|
const INSTANCE_DIR = RUNTIME_AUTHORITY.instanceDir;
|
|
52
52
|
const INSTANCE_RUNTIME_FILE = RUNTIME_AUTHORITY.runtimeFile;
|
|
53
53
|
const INSTANCE_NAME = process.env.IRANTI_INSTANCE_NAME?.trim() || (INSTANCE_DIR ? path_1.default.basename(INSTANCE_DIR) : 'adhoc');
|
|
54
|
-
const VERSION = '0.3.
|
|
54
|
+
const VERSION = '0.3.23';
|
|
55
55
|
const PORT_RAW = (process.env.IRANTI_PORT ?? '3001').trim();
|
|
56
56
|
const PORT = Number.parseInt(PORT_RAW, 10);
|
|
57
57
|
const runtimeMetadataHealth = (0, healthChecks_1.createHealthCheckState)({
|
|
@@ -216,13 +216,20 @@ export interface ObserveResult {
|
|
|
216
216
|
name: string;
|
|
217
217
|
reason: string;
|
|
218
218
|
}>;
|
|
219
|
+
midTurnFilteredKeys?: string[];
|
|
219
220
|
};
|
|
220
221
|
}
|
|
222
|
+
export type PendingToolCallName = 'Read' | 'Grep' | 'Glob' | 'Bash' | 'WebSearch' | 'WebFetch';
|
|
223
|
+
export interface PendingToolCall {
|
|
224
|
+
name: PendingToolCallName;
|
|
225
|
+
args?: Record<string, unknown>;
|
|
226
|
+
}
|
|
221
227
|
export interface AttendInput extends ObserveInput {
|
|
222
228
|
latestMessage?: string;
|
|
223
229
|
forceInject?: boolean;
|
|
224
230
|
suppressEvents?: boolean;
|
|
225
231
|
phase?: 'pre-response' | 'post-response' | 'mid-turn';
|
|
232
|
+
pendingToolCall?: PendingToolCall;
|
|
226
233
|
}
|
|
227
234
|
export interface SessionCheckpointInput extends AgentContext {
|
|
228
235
|
sessionId?: string;
|
|
@@ -257,6 +264,13 @@ export interface AttendResult extends ObserveResult {
|
|
|
257
264
|
memoryResultsConsidered?: number;
|
|
258
265
|
postResponseCapture?: PostResponseCaptureInfo;
|
|
259
266
|
matchedUserRules?: MatchedUserRule[];
|
|
267
|
+
toolCallGuidance?: ToolCallGuidance;
|
|
268
|
+
}
|
|
269
|
+
export interface ToolCallGuidance {
|
|
270
|
+
toolName: PendingToolCallName;
|
|
271
|
+
derivedEntities: string[];
|
|
272
|
+
factCount: number;
|
|
273
|
+
note: string;
|
|
260
274
|
}
|
|
261
275
|
export interface PostResponseCaptureInfo {
|
|
262
276
|
factsExtracted: number;
|
|
@@ -307,6 +321,13 @@ export declare function extractRuleTriggers(properties: Record<string, unknown>
|
|
|
307
321
|
export declare function matchesRuleTriggers(triggers: string[], contextTokens: Set<string>, contextLower: string): boolean;
|
|
308
322
|
export declare function formatMatchedUserRules(rules: MatchedUserRule[]): string;
|
|
309
323
|
export declare function extractFilePathEntityHints(text: string, projectEntity: string | null): string[];
|
|
324
|
+
/**
|
|
325
|
+
* Derive entity hints from a pending tool call. Pure, stateless, safe to call
|
|
326
|
+
* from tests. Callers should merge the result into `effectiveEntityHints`
|
|
327
|
+
* *after* text-derived hints so text signals still take precedence when a hint
|
|
328
|
+
* appears in both places.
|
|
329
|
+
*/
|
|
330
|
+
export declare function derivePendingToolCallEntityHints(toolCall: PendingToolCall | undefined, projectEntity: string | null): string[];
|
|
310
331
|
export declare function readPersistedSessionState(agentId: string): Promise<PersistedSessionState | null>;
|
|
311
332
|
export declare function summarizeSessionState(agentId: string, checkpoint: SessionCheckpointRecord | null, persistedBriefGeneratedAt?: string, compliance?: SessionComplianceState | null): SessionSummary;
|
|
312
333
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AttendantInstance.d.ts","sourceRoot":"","sources":["../../../src/attendant/AttendantInstance.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AttendantInstance.d.ts","sourceRoot":"","sources":["../../../src/attendant/AttendantInstance.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ exports.extractRuleTriggers = extractRuleTriggers;
|
|
|
7
7
|
exports.matchesRuleTriggers = matchesRuleTriggers;
|
|
8
8
|
exports.formatMatchedUserRules = formatMatchedUserRules;
|
|
9
9
|
exports.extractFilePathEntityHints = extractFilePathEntityHints;
|
|
10
|
+
exports.derivePendingToolCallEntityHints = derivePendingToolCallEntityHints;
|
|
10
11
|
exports.readPersistedSessionState = readPersistedSessionState;
|
|
11
12
|
exports.summarizeSessionState = summarizeSessionState;
|
|
12
13
|
exports.injectedFactsAreTaskRelevant = injectedFactsAreTaskRelevant;
|
|
@@ -60,6 +61,11 @@ const SESSION_INTERRUPTION_TTL_MS = 5 * 60 * 1000;
|
|
|
60
61
|
const PERSISTENCE_WARNING_THRESHOLD = 3;
|
|
61
62
|
const PERSISTENCE_NON_COMPLIANT_THRESHOLD = 5;
|
|
62
63
|
const ENTITY_DETECTION_WINDOW_CHARS = 1500;
|
|
64
|
+
// A1: mid-turn attends default to a smaller fact budget than pre-response.
|
|
65
|
+
// The agent is already deep in the task with a working memory frame; the point
|
|
66
|
+
// of a mid-turn attend is to surface 1-3 NEW facts on a topic shift, not to
|
|
67
|
+
// re-dump the whole briefing.
|
|
68
|
+
const MID_TURN_DEFAULT_MAX_FACTS = 3;
|
|
63
69
|
const MIN_ENTITY_CONFIDENCE = 0.75;
|
|
64
70
|
const MEMORY_DECISION_CONTEXT_WINDOW_CHARS = 2000;
|
|
65
71
|
const LEDGER_WORKING_MEMORY_PREFIX = 'system/session_ledger/recent_learning_';
|
|
@@ -447,6 +453,174 @@ function extractFilePathEntityHints(text, projectEntity) {
|
|
|
447
453
|
}
|
|
448
454
|
return hints;
|
|
449
455
|
}
|
|
456
|
+
// ─── A2: Pending Tool-Call Entity Hints ─────────────────────────────────────
|
|
457
|
+
//
|
|
458
|
+
// Derive entity hints from a structured tool call that the agent is about to
|
|
459
|
+
// make. This lets attend() preempt redundant read-only tool calls by surfacing
|
|
460
|
+
// stored facts keyed to the target of the tool call (a file, a URL, a query).
|
|
461
|
+
//
|
|
462
|
+
// We deliberately keep this a PURE function so it is trivially unit-testable
|
|
463
|
+
// and so the caller can exercise different tool shapes without spinning up an
|
|
464
|
+
// attendant. It returns entity hints in `entityType/entityId` form.
|
|
465
|
+
function normalizeWebToken(value, maxLen = 48) {
|
|
466
|
+
return value
|
|
467
|
+
.toLowerCase()
|
|
468
|
+
.replace(/[^a-z0-9]+/g, '_')
|
|
469
|
+
.replace(/^_+|_+$/g, '')
|
|
470
|
+
.slice(0, maxLen);
|
|
471
|
+
}
|
|
472
|
+
function deriveFileEntityFromPath(rawPath, projectId, seen, hints) {
|
|
473
|
+
const trimmed = rawPath.trim();
|
|
474
|
+
if (!trimmed)
|
|
475
|
+
return;
|
|
476
|
+
const basename = trimmed.replace(/\\/g, '/').split('/').pop() ?? '';
|
|
477
|
+
// Strip trailing args like "foo.ts:42" or "foo.ts,bar.ts"
|
|
478
|
+
const stripped = basename.split(/[,:()]/)[0] ?? basename;
|
|
479
|
+
const nameWithoutExt = stripped
|
|
480
|
+
.replace(/\.\w+$/, '')
|
|
481
|
+
.replace(/[^a-zA-Z0-9]/g, '_')
|
|
482
|
+
.toLowerCase();
|
|
483
|
+
if (!nameWithoutExt || nameWithoutExt.length < 2)
|
|
484
|
+
return;
|
|
485
|
+
const hint = `project/${projectId}/file/${nameWithoutExt}`;
|
|
486
|
+
if (!seen.has(hint)) {
|
|
487
|
+
seen.add(hint);
|
|
488
|
+
hints.push(hint);
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
function scanStringForPathEntities(text, projectId, seen, hints) {
|
|
492
|
+
if (!text)
|
|
493
|
+
return;
|
|
494
|
+
FILE_PATH_PATTERN.lastIndex = 0;
|
|
495
|
+
let match;
|
|
496
|
+
while ((match = FILE_PATH_PATTERN.exec(text)) !== null) {
|
|
497
|
+
deriveFileEntityFromPath(match[1], projectId, seen, hints);
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
function extractBasenameFromGlobPattern(pattern) {
|
|
501
|
+
// A glob like "src/**/*.ts" has no meaningful basename; one like
|
|
502
|
+
// "tests/attendant/run_mid_turn_attend_tests.ts" does. We only derive a
|
|
503
|
+
// file entity from the last segment if it looks like a literal filename.
|
|
504
|
+
const segments = pattern.replace(/\\/g, '/').split('/');
|
|
505
|
+
for (let i = segments.length - 1; i >= 0; i--) {
|
|
506
|
+
const seg = segments[i];
|
|
507
|
+
if (!seg || seg.includes('*') || seg.includes('?') || seg === '.' || seg === '..')
|
|
508
|
+
continue;
|
|
509
|
+
if (/\.\w+$/.test(seg))
|
|
510
|
+
return seg;
|
|
511
|
+
}
|
|
512
|
+
return null;
|
|
513
|
+
}
|
|
514
|
+
/**
|
|
515
|
+
* Derive entity hints from a pending tool call. Pure, stateless, safe to call
|
|
516
|
+
* from tests. Callers should merge the result into `effectiveEntityHints`
|
|
517
|
+
* *after* text-derived hints so text signals still take precedence when a hint
|
|
518
|
+
* appears in both places.
|
|
519
|
+
*/
|
|
520
|
+
function derivePendingToolCallEntityHints(toolCall, projectEntity) {
|
|
521
|
+
if (!toolCall || !projectEntity)
|
|
522
|
+
return [];
|
|
523
|
+
const parsed = (0, entity_resolution_1.parseEntityString)(projectEntity);
|
|
524
|
+
const projectId = parsed.entityId;
|
|
525
|
+
if (!projectId)
|
|
526
|
+
return [];
|
|
527
|
+
const args = (toolCall.args ?? {});
|
|
528
|
+
const seen = new Set();
|
|
529
|
+
const hints = [];
|
|
530
|
+
switch (toolCall.name) {
|
|
531
|
+
case 'Read': {
|
|
532
|
+
const filePath = typeof args.file_path === 'string' ? args.file_path : '';
|
|
533
|
+
if (filePath) {
|
|
534
|
+
deriveFileEntityFromPath(filePath, projectId, seen, hints);
|
|
535
|
+
}
|
|
536
|
+
break;
|
|
537
|
+
}
|
|
538
|
+
case 'Grep': {
|
|
539
|
+
// Grep has pattern + optional path + optional glob. Only path/glob
|
|
540
|
+
// can yield file-level entities; the regex pattern itself is
|
|
541
|
+
// content-level and gets surfaced via the existing text hints from
|
|
542
|
+
// latestMessage/currentContext.
|
|
543
|
+
if (typeof args.path === 'string') {
|
|
544
|
+
deriveFileEntityFromPath(args.path, projectId, seen, hints);
|
|
545
|
+
}
|
|
546
|
+
if (typeof args.glob === 'string') {
|
|
547
|
+
const base = extractBasenameFromGlobPattern(args.glob);
|
|
548
|
+
if (base)
|
|
549
|
+
deriveFileEntityFromPath(base, projectId, seen, hints);
|
|
550
|
+
}
|
|
551
|
+
break;
|
|
552
|
+
}
|
|
553
|
+
case 'Glob': {
|
|
554
|
+
if (typeof args.pattern === 'string') {
|
|
555
|
+
const base = extractBasenameFromGlobPattern(args.pattern);
|
|
556
|
+
if (base)
|
|
557
|
+
deriveFileEntityFromPath(base, projectId, seen, hints);
|
|
558
|
+
// If the pattern has no literal basename, fall through to the
|
|
559
|
+
// project entity so stored project-level facts still surface.
|
|
560
|
+
}
|
|
561
|
+
if (typeof args.path === 'string') {
|
|
562
|
+
deriveFileEntityFromPath(args.path, projectId, seen, hints);
|
|
563
|
+
}
|
|
564
|
+
break;
|
|
565
|
+
}
|
|
566
|
+
case 'Bash': {
|
|
567
|
+
// Scan the command string for embedded paths. This covers
|
|
568
|
+
// `cat src/foo.ts`, `rm ./dist/bar.js`, `node scripts/baz.ts`, etc.
|
|
569
|
+
const command = typeof args.command === 'string' ? args.command : '';
|
|
570
|
+
scanStringForPathEntities(command, projectId, seen, hints);
|
|
571
|
+
break;
|
|
572
|
+
}
|
|
573
|
+
case 'WebSearch': {
|
|
574
|
+
const query = typeof args.query === 'string' ? args.query : '';
|
|
575
|
+
const token = normalizeWebToken(query);
|
|
576
|
+
if (token) {
|
|
577
|
+
const hint = `web/search_${token}`;
|
|
578
|
+
if (!seen.has(hint)) {
|
|
579
|
+
seen.add(hint);
|
|
580
|
+
hints.push(hint);
|
|
581
|
+
}
|
|
582
|
+
}
|
|
583
|
+
break;
|
|
584
|
+
}
|
|
585
|
+
case 'WebFetch': {
|
|
586
|
+
const url = typeof args.url === 'string' ? args.url : '';
|
|
587
|
+
if (url) {
|
|
588
|
+
try {
|
|
589
|
+
const parsedUrl = new URL(url);
|
|
590
|
+
const host = normalizeWebToken(parsedUrl.hostname);
|
|
591
|
+
if (host) {
|
|
592
|
+
const hostHint = `web/${host}`;
|
|
593
|
+
if (!seen.has(hostHint)) {
|
|
594
|
+
seen.add(hostHint);
|
|
595
|
+
hints.push(hostHint);
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
const path = normalizeWebToken(parsedUrl.pathname);
|
|
599
|
+
if (host && path && path.length >= 2) {
|
|
600
|
+
const pathHint = `web/${host}_${path}`;
|
|
601
|
+
if (!seen.has(pathHint)) {
|
|
602
|
+
seen.add(pathHint);
|
|
603
|
+
hints.push(pathHint);
|
|
604
|
+
}
|
|
605
|
+
}
|
|
606
|
+
}
|
|
607
|
+
catch {
|
|
608
|
+
// Non-URL string — fall back to a normalized token entity.
|
|
609
|
+
const token = normalizeWebToken(url);
|
|
610
|
+
if (token) {
|
|
611
|
+
const hint = `web/${token}`;
|
|
612
|
+
if (!seen.has(hint)) {
|
|
613
|
+
seen.add(hint);
|
|
614
|
+
hints.push(hint);
|
|
615
|
+
}
|
|
616
|
+
}
|
|
617
|
+
}
|
|
618
|
+
}
|
|
619
|
+
break;
|
|
620
|
+
}
|
|
621
|
+
}
|
|
622
|
+
return hints;
|
|
623
|
+
}
|
|
450
624
|
function advisoryTaskTokens(taskType) {
|
|
451
625
|
if (!taskType)
|
|
452
626
|
return [];
|
|
@@ -2323,11 +2497,22 @@ class AttendantInstance {
|
|
|
2323
2497
|
const baseEntityHints = this.resolveAttendEntityHints(input.entityHints, latestMessage);
|
|
2324
2498
|
// File-change demand-driven recall: extract file path mentions and add as entity hints
|
|
2325
2499
|
const filePathHints = extractFilePathEntityHints(`${latestMessage}\n${currentContext}`, (0, autoRemember_1.getProjectMemoryEntity)() ?? null);
|
|
2326
|
-
|
|
2327
|
-
|
|
2328
|
-
|
|
2329
|
-
//
|
|
2330
|
-
const
|
|
2500
|
+
// A2: tool-call triggered retrieval. If the caller says "I'm about to
|
|
2501
|
+
// run Read(file_path=X) / Grep / Bash / WebFetch / WebSearch", derive
|
|
2502
|
+
// structured entity hints from the tool arguments BEFORE the tool
|
|
2503
|
+
// runs, so stored facts can preempt the lookup.
|
|
2504
|
+
const toolCallHints = derivePendingToolCallEntityHints(input.pendingToolCall, (0, autoRemember_1.getProjectMemoryEntity)() ?? null);
|
|
2505
|
+
const allExtraHints = filePathHints.length === 0 && toolCallHints.length === 0
|
|
2506
|
+
? null
|
|
2507
|
+
: [...filePathHints, ...toolCallHints];
|
|
2508
|
+
const effectiveEntityHints = allExtraHints === null
|
|
2509
|
+
? baseEntityHints
|
|
2510
|
+
: [...new Set([...baseEntityHints, ...allExtraHints])];
|
|
2511
|
+
// User operating rules: load rules whose triggers match the current context.
|
|
2512
|
+
// Mid-turn attends skip this — rules were already surfaced at pre-response,
|
|
2513
|
+
// and reloading them on every mid-turn call would duplicate context and burn
|
|
2514
|
+
// an LLM call on the trigger match.
|
|
2515
|
+
const matchedUserRules = (phase !== 'post-response' && phase !== 'mid-turn')
|
|
2331
2516
|
? await this.loadMatchingUserRules(`${latestMessage}\n${currentContext}`)
|
|
2332
2517
|
: [];
|
|
2333
2518
|
let watchedEntitiesChanged = this.updateWatchedEntities(effectiveEntityHints);
|
|
@@ -2447,6 +2632,17 @@ class AttendantInstance {
|
|
|
2447
2632
|
await this.persistState();
|
|
2448
2633
|
}
|
|
2449
2634
|
(0, metrics_1.timeEnd)('attendant.attend_ms', t0);
|
|
2635
|
+
// A2: even on the "memory not needed" early return, if the caller
|
|
2636
|
+
// passed pendingToolCall, echo the derived entities so the agent
|
|
2637
|
+
// can see that attend() was tool-call-aware on this call.
|
|
2638
|
+
const skipGuidance = input.pendingToolCall
|
|
2639
|
+
? {
|
|
2640
|
+
toolName: input.pendingToolCall.name,
|
|
2641
|
+
derivedEntities: toolCallHints,
|
|
2642
|
+
factCount: 0,
|
|
2643
|
+
note: `Memory was not deemed necessary for this ${input.pendingToolCall.name} call. Proceed.`,
|
|
2644
|
+
}
|
|
2645
|
+
: undefined;
|
|
2450
2646
|
return {
|
|
2451
2647
|
shouldInject: matchedUserRules.length > 0,
|
|
2452
2648
|
reason: 'memory_not_needed',
|
|
@@ -2472,21 +2668,28 @@ class AttendantInstance {
|
|
|
2472
2668
|
hintsResolved: 0,
|
|
2473
2669
|
dropped: [{ name: latestMessage || '(none)', reason: 'memory_not_needed' }],
|
|
2474
2670
|
},
|
|
2671
|
+
toolCallGuidance: skipGuidance,
|
|
2475
2672
|
};
|
|
2476
2673
|
}
|
|
2477
2674
|
// Post-compaction recovery: re-surface facts that were recently injected (likely in context
|
|
2478
2675
|
// just before the compact) without blocking them on the already-in-context filter.
|
|
2479
2676
|
// The flag is set by handshake(postCompaction:true) and consumed exactly once here.
|
|
2480
2677
|
const postCompactionRecoveryKeys = [];
|
|
2481
|
-
let
|
|
2678
|
+
let effectiveMaxFacts = input.maxFacts;
|
|
2482
2679
|
if (this.postCompactionPending) {
|
|
2483
2680
|
const recentInjections = this.pendingMemoryAttributions.slice(-5);
|
|
2484
2681
|
for (const attr of recentInjections) {
|
|
2485
2682
|
postCompactionRecoveryKeys.push(...attr.injectedKeys);
|
|
2486
2683
|
}
|
|
2487
|
-
|
|
2684
|
+
effectiveMaxFacts = Math.min((input.maxFacts ?? 5) * 2, 10);
|
|
2488
2685
|
this.postCompactionPending = false;
|
|
2489
2686
|
}
|
|
2687
|
+
else if (phase === 'mid-turn' && input.maxFacts === undefined) {
|
|
2688
|
+
// A1: mid-turn attends default to a smaller fact budget than pre-response.
|
|
2689
|
+
// The agent already has a working-memory frame from the pre-response attend;
|
|
2690
|
+
// mid-turn is about surfacing 1-3 NEW facts on a topic shift, not re-dumping briefs.
|
|
2691
|
+
effectiveMaxFacts = MID_TURN_DEFAULT_MAX_FACTS;
|
|
2692
|
+
}
|
|
2490
2693
|
const observeEntityHints = effectiveEntityHints.length > 0 ? effectiveEntityHints : freshState.entities;
|
|
2491
2694
|
const allObserveEntityHints = postCompactionRecoveryKeys.length > 0
|
|
2492
2695
|
? [...new Set([
|
|
@@ -2499,7 +2702,7 @@ class AttendantInstance {
|
|
|
2499
2702
|
: observeEntityHints;
|
|
2500
2703
|
const observed = await this.observe({
|
|
2501
2704
|
currentContext: observationContext,
|
|
2502
|
-
maxFacts:
|
|
2705
|
+
maxFacts: effectiveMaxFacts,
|
|
2503
2706
|
entityHints: allObserveEntityHints,
|
|
2504
2707
|
priorityKeys: expandContinuityPriorityKeys(Array.from(new Set([
|
|
2505
2708
|
...(mandatoryRecall.key ? [mandatoryRecall.key] : []),
|
|
@@ -2523,7 +2726,31 @@ class AttendantInstance {
|
|
|
2523
2726
|
const remainder = slashIdx2 === -1 ? '' : fact.entityKey.slice(slashIdx2);
|
|
2524
2727
|
return { ...fact, entityKey: `${canonicalPersonalType}/${canonicalPersonalId}${remainder}` };
|
|
2525
2728
|
});
|
|
2526
|
-
|
|
2729
|
+
// A1: mid-turn dedup — drop facts whose entityKey was already injected earlier
|
|
2730
|
+
// in the SAME turn. pendingMemoryAttributions is reset at post-response, so any
|
|
2731
|
+
// entry in that list belongs to the current turn. This prevents mid-turn attends
|
|
2732
|
+
// from spamming the agent with facts it already has in working memory from a
|
|
2733
|
+
// previous pre-response or mid-turn attend call.
|
|
2734
|
+
const midTurnFilteredKeys = [];
|
|
2735
|
+
let factsAfterDedup = remappedFacts;
|
|
2736
|
+
if (phase === 'mid-turn' && this.pendingMemoryAttributions.length > 0) {
|
|
2737
|
+
const alreadyInjectedThisTurn = new Set();
|
|
2738
|
+
for (const attr of this.pendingMemoryAttributions) {
|
|
2739
|
+
for (const key of attr.injectedKeys) {
|
|
2740
|
+
alreadyInjectedThisTurn.add(key);
|
|
2741
|
+
}
|
|
2742
|
+
}
|
|
2743
|
+
if (alreadyInjectedThisTurn.size > 0) {
|
|
2744
|
+
factsAfterDedup = remappedFacts.filter((fact) => {
|
|
2745
|
+
if (alreadyInjectedThisTurn.has(fact.entityKey)) {
|
|
2746
|
+
midTurnFilteredKeys.push(fact.entityKey);
|
|
2747
|
+
return false;
|
|
2748
|
+
}
|
|
2749
|
+
return true;
|
|
2750
|
+
});
|
|
2751
|
+
}
|
|
2752
|
+
}
|
|
2753
|
+
const structuredFacts = (0, hostMemoryFormatting_1.assignStructuredFactIds)(factsAfterDedup);
|
|
2527
2754
|
watchedEntitiesChanged = this.updateWatchedEntities(observed.entitiesResolved?.map((entry) => entry.canonicalEntity) ?? []) || watchedEntitiesChanged;
|
|
2528
2755
|
this.markSharedStateObserved(observeEntityHints.length > 0 ? observeEntityHints : freshState.entities);
|
|
2529
2756
|
let reason = 'memory_needed_injected';
|
|
@@ -2532,8 +2759,14 @@ class AttendantInstance {
|
|
|
2532
2759
|
const memoryResultsConsidered = observed.totalFound;
|
|
2533
2760
|
let searchSuggestion;
|
|
2534
2761
|
if (!shouldInject) {
|
|
2762
|
+
// A1: if mid-turn dedup ate everything observe returned, treat it as
|
|
2763
|
+
// "already in context" — the agent has these facts from an earlier attend.
|
|
2764
|
+
const allDroppedByMidTurnDedup = phase === 'mid-turn'
|
|
2765
|
+
&& midTurnFilteredKeys.length > 0
|
|
2766
|
+
&& remappedFacts.length > 0
|
|
2767
|
+
&& factsAfterDedup.length === 0;
|
|
2535
2768
|
const allAlreadyInContext = observed.totalFound > 0 && observed.alreadyPresent >= observed.totalFound;
|
|
2536
|
-
reason = allAlreadyInContext ? 'memory_needed_but_in_context' : 'memory_checked_no_match';
|
|
2769
|
+
reason = (allAlreadyInContext || allDroppedByMidTurnDedup) ? 'memory_needed_but_in_context' : 'memory_checked_no_match';
|
|
2537
2770
|
if (reason === 'memory_checked_no_match') {
|
|
2538
2771
|
const terms = tokenizeForSearch(latestMessage).slice(0, 6);
|
|
2539
2772
|
const alternativeEntities = (observed.entitiesResolved ?? [])
|
|
@@ -2564,8 +2797,30 @@ class AttendantInstance {
|
|
|
2564
2797
|
}),
|
|
2565
2798
|
]
|
|
2566
2799
|
: [];
|
|
2800
|
+
// A1: when mid-turn dedup filtered keys, surface them in debug so the
|
|
2801
|
+
// caller (and tests) can reason about which facts were suppressed.
|
|
2802
|
+
const debugWithMidTurn = (midTurnFilteredKeys.length > 0 && observed.debug)
|
|
2803
|
+
? { ...observed.debug, midTurnFilteredKeys: [...midTurnFilteredKeys] }
|
|
2804
|
+
: observed.debug;
|
|
2805
|
+
// A2: if the caller supplied pendingToolCall, surface a guidance block
|
|
2806
|
+
// so the agent can see what entities were derived and how many stored
|
|
2807
|
+
// facts preempted the lookup. Only populated when a tool call was
|
|
2808
|
+
// actually passed — no allocation overhead for the common path.
|
|
2809
|
+
const toolCallGuidance = input.pendingToolCall
|
|
2810
|
+
? {
|
|
2811
|
+
toolName: input.pendingToolCall.name,
|
|
2812
|
+
derivedEntities: toolCallHints,
|
|
2813
|
+
factCount: structuredFacts.length,
|
|
2814
|
+
note: toolCallHints.length === 0
|
|
2815
|
+
? `No entity hints derived from ${input.pendingToolCall.name} args. Memory check ran on message/context only.`
|
|
2816
|
+
: structuredFacts.length > 0
|
|
2817
|
+
? `Iranti surfaced ${structuredFacts.length} stored fact(s) for this ${input.pendingToolCall.name} call. Read them before running the tool — you may not need to run it.`
|
|
2818
|
+
: `No stored facts matched the ${input.pendingToolCall.name} target. Proceed with the tool call.`,
|
|
2819
|
+
}
|
|
2820
|
+
: undefined;
|
|
2567
2821
|
const attendResult = {
|
|
2568
2822
|
...observed,
|
|
2823
|
+
debug: debugWithMidTurn,
|
|
2569
2824
|
facts: structuredFacts,
|
|
2570
2825
|
shouldInject: structuredFacts.length > 0 || matchedUserRules.length > 0,
|
|
2571
2826
|
reason,
|
|
@@ -2579,6 +2834,7 @@ class AttendantInstance {
|
|
|
2579
2834
|
memoryResultsConsidered,
|
|
2580
2835
|
matchedUserRules: matchedUserRules.length > 0 ? matchedUserRules : undefined,
|
|
2581
2836
|
usageGuidance: buildUsageGuidance('attend', this.turnsWithoutWrite),
|
|
2837
|
+
toolCallGuidance,
|
|
2582
2838
|
};
|
|
2583
2839
|
if (input.suppressEvents !== true) {
|
|
2584
2840
|
(0, staffEventRegistry_1.getStaffEventEmitter)().emit({
|