iranti 0.3.25 → 0.3.27

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.
@@ -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.25';
54
+ const VERSION = '0.3.27';
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)({
@@ -34,6 +34,7 @@ export interface WorkingMemoryBrief {
34
34
  briefGeneratedAt: string;
35
35
  contextCallCount: number;
36
36
  backfillSuggestion?: BackfillSuggestion | null;
37
+ planProposal?: PlanProposal | null;
37
38
  sessionLedgerLearnings?: SessionLedgerLearning[];
38
39
  sessionCheckpoint?: SessionCheckpointRecord | null;
39
40
  sessionRecovery?: SessionRecoveryInfo | null;
@@ -48,6 +49,20 @@ export interface BackfillSuggestion {
48
49
  sampleKeys: string[];
49
50
  suggestedCommand: string;
50
51
  }
52
+ export type PlanProposalSource = 'heuristic_keyword' | 'checkpoint_continuation' | 'skipped';
53
+ export interface PlanProposalStep {
54
+ n: number;
55
+ description: string;
56
+ rationale?: string;
57
+ }
58
+ export interface PlanProposal {
59
+ suggested: boolean;
60
+ reason: string;
61
+ source: PlanProposalSource;
62
+ steps: PlanProposalStep[];
63
+ taskSignals: string[];
64
+ note?: string;
65
+ }
51
66
  export type SessionStatus = 'active' | 'interrupted' | 'completed' | 'abandoned';
52
67
  export type SessionComplianceStatus = 'healthy' | 'degraded' | 'non_compliant';
53
68
  export type SessionComplianceIssueCode = 'missing_post_response_attend' | 'missing_durable_persistence' | 'missing_writes_across_turns' | 'ignored_injected_memory';
@@ -280,12 +295,24 @@ export interface AttendResult extends ObserveResult {
280
295
  toolCallGuidance?: ToolCallGuidance;
281
296
  toolResultExtraction?: ToolResultExtractionOutcome;
282
297
  writeNudge?: WriteNudge;
298
+ drift?: DriftSignal;
283
299
  }
284
300
  export interface ToolCallGuidance {
285
301
  toolName: PendingToolCallName;
286
302
  derivedEntities: string[];
287
303
  factCount: number;
288
304
  note: string;
305
+ shouldSkip: boolean;
306
+ skipConfidence: number;
307
+ skipReasonCode: 'facts_cover_target' | 'no_facts_for_target' | 'no_entities_derived' | 'memory_not_needed';
308
+ }
309
+ export interface DriftSignal {
310
+ detected: boolean;
311
+ overlap: number;
312
+ drivingTokens: string[];
313
+ missingTokens: string[];
314
+ declaredTaskType: string;
315
+ note: string;
289
316
  }
290
317
  export interface ToolResultExtractionOutcome {
291
318
  toolName: PendingToolCallName;
@@ -386,6 +413,24 @@ export declare function normalizeAutowriteFact(raw: unknown): {
386
413
  confidence: number;
387
414
  } | null;
388
415
  export declare function derivePendingToolCallEntityHints(toolCall: PendingToolCall | undefined, projectEntity: string | null): string[];
416
+ export type PlanSignal = 'ship_release' | 'implement_add' | 'refactor_rewrite' | 'fix_debug' | 'audit_review' | 'migrate' | 'test_author' | 'deploy';
417
+ interface PlanSignalMatch {
418
+ signal: PlanSignal;
419
+ matchedKeyword: string;
420
+ }
421
+ export declare function detectPlanSignals(task: string): PlanSignalMatch[];
422
+ export declare function buildPlanProposal(task: string, inferredTaskType: string, sessionCheckpoint?: SessionCheckpointRecord | null): PlanProposal;
423
+ export interface SkipVerdict {
424
+ shouldSkip: boolean;
425
+ skipConfidence: number;
426
+ skipReasonCode: ToolCallGuidance['skipReasonCode'];
427
+ }
428
+ export declare function deriveSkipVerdict(options: {
429
+ derivedEntities: readonly string[];
430
+ factConfidences: readonly number[];
431
+ memoryWasSkipped: boolean;
432
+ }): SkipVerdict;
433
+ export declare function detectTaskDrift(currentMessage: string, currentContext: string, declaredTaskType: string): DriftSignal | undefined;
389
434
  export declare function readPersistedSessionState(agentId: string): Promise<PersistedSessionState | null>;
390
435
  export declare function summarizeSessionState(agentId: string, checkpoint: SessionCheckpointRecord | null, persistedBriefGeneratedAt?: string, compliance?: SessionComplianceState | null): SessionSummary;
391
436
  /**
@@ -473,4 +518,5 @@ export declare class AttendantInstance {
473
518
  private persistState;
474
519
  private loadPersistedState;
475
520
  }
521
+ export {};
476
522
  //# sourceMappingURL=AttendantInstance.d.ts.map
@@ -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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"}
@@ -12,6 +12,10 @@ exports.parseAutowriteEntity = parseAutowriteEntity;
12
12
  exports.buildToolResultContextLabel = buildToolResultContextLabel;
13
13
  exports.normalizeAutowriteFact = normalizeAutowriteFact;
14
14
  exports.derivePendingToolCallEntityHints = derivePendingToolCallEntityHints;
15
+ exports.detectPlanSignals = detectPlanSignals;
16
+ exports.buildPlanProposal = buildPlanProposal;
17
+ exports.deriveSkipVerdict = deriveSkipVerdict;
18
+ exports.detectTaskDrift = detectTaskDrift;
15
19
  exports.readPersistedSessionState = readPersistedSessionState;
16
20
  exports.summarizeSessionState = summarizeSessionState;
17
21
  exports.injectedFactsAreTaskRelevant = injectedFactsAreTaskRelevant;
@@ -852,6 +856,301 @@ function buildBackfillSuggestion(context, workingMemory) {
852
856
  suggestedCommand: 'iranti handshake --backfill <chat-file>',
853
857
  };
854
858
  }
859
+ // ─── A4: plan proposal heuristic ────────────────────────────────────────────
860
+ //
861
+ // Pure functions used by handshake() to build a short structured plan. These
862
+ // are exported for test access and intentionally contain no LLM calls so the
863
+ // handshake stays fast, deterministic, and snapshot-testable. The templates
864
+ // below are deliberately terse and align with the standing Iranti protocol
865
+ // (e.g. "write after every edit", "verify CI after push").
866
+ const PLAN_MIN_TASK_CHARS = 24;
867
+ const PLAN_SIGNAL_KEYWORDS = {
868
+ ship_release: ['ship', 'release', 'cut v', 'tag v', 'publish'],
869
+ implement_add: ['implement', 'add', 'build', 'create', 'introduce', 'wire'],
870
+ refactor_rewrite: ['refactor', 'rewrite', 'restructure', 'rename', 'extract'],
871
+ fix_debug: ['fix', 'debug', 'bug', 'repair', 'broken'],
872
+ audit_review: ['audit', 'review', 'inspect', 'check', 'verify'],
873
+ migrate: ['migrate', 'port', 'upgrade', 'backfill'],
874
+ test_author: ['test', 'cover', 'regression', 'assert'],
875
+ deploy: ['deploy', 'rollout', 'promote'],
876
+ };
877
+ const PLAN_TEMPLATES = {
878
+ ship_release: [
879
+ { n: 1, description: 'Run tsc --noEmit and the relevant targeted test suite.', rationale: 'Catch type errors and regressions before the commit.' },
880
+ { n: 2, description: 'Run backward-compat regression suites.', rationale: 'Make sure adjacent features still behave.' },
881
+ { n: 3, description: 'Bump version across package.json, clients, and server.ts.', rationale: 'Keep the 5-file version pattern consistent.' },
882
+ { n: 4, description: 'Commit, tag, push, create GitHub Release.', rationale: 'Never npm publish manually — Releases drive publish via CI.' },
883
+ { n: 5, description: 'Watch CI with gh run watch --exit-status and verify all 3 jobs green.', rationale: 'Do not trust the push until Secret Scan + Contract Checks + Release Quality are confirmed green.' },
884
+ ],
885
+ implement_add: [
886
+ { n: 1, description: 'Search Iranti and read existing patterns before writing new code.', rationale: 'Prefer extending established patterns over reinventing.' },
887
+ { n: 2, description: 'Draft the minimum type + data plumbing first.', rationale: 'Shapes force the design before the logic.' },
888
+ { n: 3, description: 'Implement in a single focused edit, iranti_write after each change.', rationale: 'Every edit should leave a durable trail for future sessions.' },
889
+ { n: 4, description: 'Write unit + integration tests, run them locally.', rationale: 'Prove the new surface area before committing.' },
890
+ { n: 5, description: 'Run backward-compat regressions, then commit.', rationale: 'Catch cross-feature breakage before review.' },
891
+ ],
892
+ refactor_rewrite: [
893
+ { n: 1, description: 'Map the current call sites of the symbol or module being changed.', rationale: 'Know the blast radius before editing.' },
894
+ { n: 2, description: 'Sketch the target shape and document the invariant being preserved.', rationale: 'Refactors without a stated invariant drift.' },
895
+ { n: 3, description: 'Perform the refactor in small, compiling increments.', rationale: 'Keep tsc green at every step.' },
896
+ { n: 4, description: 'Run the existing test suite unmodified first.', rationale: 'If old tests still pass, behavior is preserved.' },
897
+ { n: 5, description: 'Add a regression test that locks in the new structural contract.', rationale: 'Prevents silent regression of the refactor goal.' },
898
+ ],
899
+ fix_debug: [
900
+ { n: 1, description: 'Reproduce the bug locally with the minimal repro.', rationale: 'You cannot fix what you cannot reproduce.' },
901
+ { n: 2, description: 'Isolate the failing component with targeted reads and grep.', rationale: 'Narrow the surface before editing.' },
902
+ { n: 3, description: 'Make the smallest change that restores correctness.', rationale: 'Scope creep masks root cause.' },
903
+ { n: 4, description: 'Add a regression test that would have caught the original bug.', rationale: 'Prevents the same bug re-landing later.' },
904
+ { n: 5, description: 'iranti_write the finding, the fix, and the root cause.', rationale: 'Future sessions should not have to rediscover this.' },
905
+ ],
906
+ audit_review: [
907
+ { n: 1, description: 'Enumerate the audit scope: files, subsystems, or issue list.', rationale: 'Audits without scope miss half the surface area.' },
908
+ { n: 2, description: 'For each item, read the current state and iranti_write the finding.', rationale: 'Durable findings are how audits compound across sessions.' },
909
+ { n: 3, description: 'Classify each finding (open / resolved / wontfix) with evidence.', rationale: 'Unclassified findings bit-rot.' },
910
+ { n: 4, description: 'Run the relevant test suites to validate assumptions.', rationale: 'Tests are how assertions become facts.' },
911
+ { n: 5, description: 'Checkpoint the audit summary with open risks and next step.', rationale: 'Hand off cleanly, even if incomplete.' },
912
+ ],
913
+ migrate: [
914
+ { n: 1, description: 'Document the source shape and target shape side by side.', rationale: 'Migrations without a diff have no finish line.' },
915
+ { n: 2, description: 'Write a dry-run path that produces target without mutating source.', rationale: 'Dry runs catch 80% of migration bugs before real data moves.' },
916
+ { n: 3, description: 'Run the dry run, compare against expected, iranti_write the diff.', rationale: 'Evidence for the real run.' },
917
+ { n: 4, description: 'Perform the real migration behind a reversible flag or tx.', rationale: 'Always leave a rollback path.' },
918
+ { n: 5, description: 'Verify + checkpoint + write a post-mortem fact.', rationale: 'Durable record of what changed and why.' },
919
+ ],
920
+ test_author: [
921
+ { n: 1, description: 'Identify the code under test and the contract being locked in.', rationale: 'Tests without a contract are noise.' },
922
+ { n: 2, description: 'Read nearby test files to match conventions.', rationale: 'Consistency reduces review friction.' },
923
+ { n: 3, description: 'Write failing tests first where practical.', rationale: 'TDD catches misaligned assumptions.' },
924
+ { n: 4, description: 'Run the new suite, iterate until green.', rationale: 'Green-on-first-run often means mis-assertion.' },
925
+ { n: 5, description: 'Register the new suite in package.json and iranti_write.', rationale: 'Untracked suites do not run in CI.' },
926
+ ],
927
+ deploy: [
928
+ { n: 1, description: 'Verify CI is green on the target commit before promoting.', rationale: 'Never promote a red build.' },
929
+ { n: 2, description: 'Confirm environment variables and secrets are present.', rationale: 'Most rollouts fail on config, not code.' },
930
+ { n: 3, description: 'Promote, then watch logs and health checks for the first N minutes.', rationale: 'Early rollback is cheap, late rollback is expensive.' },
931
+ { n: 4, description: 'Verify the canary metric crosses the success threshold.', rationale: 'Objective signal beats subjective feeling.' },
932
+ { n: 5, description: 'iranti_write the rollout + any anomalies.', rationale: 'Future deploys inherit this learning.' },
933
+ ],
934
+ };
935
+ function detectPlanSignals(task) {
936
+ const lower = task.toLowerCase();
937
+ const matches = [];
938
+ const seen = new Set();
939
+ for (const signal of Object.keys(PLAN_SIGNAL_KEYWORDS)) {
940
+ for (const keyword of PLAN_SIGNAL_KEYWORDS[signal]) {
941
+ if (lower.includes(keyword) && !seen.has(signal)) {
942
+ matches.push({ signal, matchedKeyword: keyword });
943
+ seen.add(signal);
944
+ break;
945
+ }
946
+ }
947
+ }
948
+ return matches;
949
+ }
950
+ function buildPlanProposal(task, inferredTaskType, sessionCheckpoint) {
951
+ const combined = [task, inferredTaskType].filter(Boolean).join(' ').trim();
952
+ // Checkpoint continuation takes precedence. If a prior interrupted session
953
+ // exists, the plan leads with "resume from checkpoint" so the agent can
954
+ // pick up in place instead of re-deriving a plan from scratch.
955
+ if (sessionCheckpoint?.status === 'interrupted' && sessionCheckpoint.checkpoint) {
956
+ const nextStep = sessionCheckpoint.checkpoint.nextStep?.trim() ?? '';
957
+ const currentStep = sessionCheckpoint.checkpoint.currentStep?.trim() ?? '';
958
+ const steps = [];
959
+ if (nextStep) {
960
+ steps.push({
961
+ n: 1,
962
+ description: `Resume: ${nextStep}`,
963
+ rationale: 'Interrupted session — continue from the recorded next step.',
964
+ });
965
+ }
966
+ if (currentStep) {
967
+ steps.push({
968
+ n: steps.length + 1,
969
+ description: `Re-confirm prior state: ${currentStep}`,
970
+ rationale: 'Verify the recorded current step is still accurate before acting.',
971
+ });
972
+ }
973
+ steps.push({
974
+ n: steps.length + 1,
975
+ description: 'After completing the resumed step, iranti_checkpoint with updated current/next/risks.',
976
+ rationale: 'Close the loop so the next interruption resumes cleanly.',
977
+ });
978
+ return {
979
+ suggested: true,
980
+ reason: 'interrupted_session_checkpoint_found',
981
+ source: 'checkpoint_continuation',
982
+ steps,
983
+ taskSignals: ['resume_from_checkpoint'],
984
+ note: 'This plan was derived from the persisted session checkpoint, not the current task string.',
985
+ };
986
+ }
987
+ // Keyword heuristic for normal (non-resume) tasks.
988
+ const tooShort = combined.length < PLAN_MIN_TASK_CHARS;
989
+ const signals = detectPlanSignals(combined);
990
+ if (tooShort && signals.length === 0) {
991
+ return {
992
+ suggested: false,
993
+ reason: 'task_too_short_and_no_plan_signals_detected',
994
+ source: 'skipped',
995
+ steps: [],
996
+ taskSignals: [],
997
+ };
998
+ }
999
+ if (signals.length === 0) {
1000
+ return {
1001
+ suggested: false,
1002
+ reason: 'no_complexity_keywords_detected',
1003
+ source: 'skipped',
1004
+ steps: [],
1005
+ taskSignals: [],
1006
+ };
1007
+ }
1008
+ // Pick the highest-priority signal (ship > migrate > deploy > refactor >
1009
+ // fix > audit > implement > test) when multiple match, then emit that
1010
+ // template. Priority captures "what matters most to plan around" when a
1011
+ // single task hits several verbs.
1012
+ const priority = [
1013
+ 'ship_release',
1014
+ 'migrate',
1015
+ 'deploy',
1016
+ 'refactor_rewrite',
1017
+ 'fix_debug',
1018
+ 'audit_review',
1019
+ 'implement_add',
1020
+ 'test_author',
1021
+ ];
1022
+ const topSignal = priority.find((sig) => signals.some((s) => s.signal === sig))
1023
+ ?? signals[0].signal;
1024
+ const template = PLAN_TEMPLATES[topSignal];
1025
+ return {
1026
+ suggested: true,
1027
+ reason: `matched_signal_${topSignal}`,
1028
+ source: 'heuristic_keyword',
1029
+ steps: template.map((step) => ({ ...step })),
1030
+ taskSignals: signals.map((s) => s.signal),
1031
+ note: signals.length > 1
1032
+ ? `Multiple plan signals detected (${signals.map((s) => s.signal).join(', ')}); surfaced ${topSignal} template by priority.`
1033
+ : undefined,
1034
+ };
1035
+ }
1036
+ // Confidence on FactInjection is stored 0..100 (see KnowledgeEntry). M1 surfaces
1037
+ // 0..1 to keep the field intuitive on the wire; the helper below scales once.
1038
+ function deriveSkipVerdict(options) {
1039
+ const { derivedEntities, factConfidences, memoryWasSkipped } = options;
1040
+ if (memoryWasSkipped) {
1041
+ // Early return path: decideMemoryNeed already said "no memory needed".
1042
+ // We intentionally do NOT recommend a skip here — absence of facts is
1043
+ // not evidence the tool call is redundant; it's evidence attend never
1044
+ // looked. Hosts that want to skip on this path should gate on
1045
+ // factCount, not on memoryWasSkipped.
1046
+ return {
1047
+ shouldSkip: false,
1048
+ skipConfidence: 0,
1049
+ skipReasonCode: 'memory_not_needed',
1050
+ };
1051
+ }
1052
+ if (derivedEntities.length === 0) {
1053
+ return {
1054
+ shouldSkip: false,
1055
+ skipConfidence: 0,
1056
+ skipReasonCode: 'no_entities_derived',
1057
+ };
1058
+ }
1059
+ if (factConfidences.length === 0) {
1060
+ return {
1061
+ shouldSkip: false,
1062
+ skipConfidence: 0,
1063
+ skipReasonCode: 'no_facts_for_target',
1064
+ };
1065
+ }
1066
+ const mean = factConfidences.reduce((acc, c) => acc + c, 0) / factConfidences.length;
1067
+ // Clamp to [0..100] before scaling to [0..1]; hostile inputs should not
1068
+ // produce negative or >1 confidences on the wire.
1069
+ const clamped = Math.max(0, Math.min(100, mean));
1070
+ return {
1071
+ shouldSkip: true,
1072
+ skipConfidence: Math.round((clamped / 100) * 1000) / 1000,
1073
+ skipReasonCode: 'facts_cover_target',
1074
+ };
1075
+ }
1076
+ // ----------------------------------------------------------------------------
1077
+ // M4: drift detection — pure Jaccard overlap between the current
1078
+ // message/context and the declared (inferred) task type. Hosts can use the
1079
+ // returned DriftSignal to surface "you set out to do X, you're now doing Y"
1080
+ // to the user or to force a task-shift reconvene.
1081
+ // ----------------------------------------------------------------------------
1082
+ const DRIFT_MIN_MESSAGE_CHARS = 20;
1083
+ const DRIFT_JACCARD_MIN = 0.15;
1084
+ const DRIFT_TOKEN_STOP = new Set([
1085
+ 'the', 'and', 'for', 'with', 'that', 'this', 'from', 'into', 'then', 'than',
1086
+ 'are', 'was', 'were', 'has', 'had', 'have', 'but', 'not', 'its', 'it\'s',
1087
+ 'you', 'your', 'our', 'their', 'them', 'they', 'who', 'what', 'when', 'where',
1088
+ 'why', 'how', 'all', 'any', 'each', 'one', 'two', 'new', 'old', 'can', 'will',
1089
+ 'should', 'would', 'could', 'just', 'also', 'now', 'still', 'yet', 'off', 'out',
1090
+ 'ok', 'okay', 'yeah', 'sure', 'keep', 'going', 'done',
1091
+ ]);
1092
+ const DRIFT_MAX_DRIVING_TOKENS = 6;
1093
+ function tokenizeForDrift(text) {
1094
+ if (!text)
1095
+ return new Set();
1096
+ const tokens = text
1097
+ .toLowerCase()
1098
+ .replace(/[^a-z0-9_\s]/g, ' ')
1099
+ .split(/\s+/)
1100
+ .filter((t) => t.length >= 3 && !DRIFT_TOKEN_STOP.has(t));
1101
+ return new Set(tokens);
1102
+ }
1103
+ function detectTaskDrift(currentMessage, currentContext, declaredTaskType) {
1104
+ const combinedCurrent = `${currentMessage ?? ''} ${currentContext ?? ''}`.trim();
1105
+ if (combinedCurrent.length < DRIFT_MIN_MESSAGE_CHARS) {
1106
+ // Too little signal to make a judgment — stay silent.
1107
+ return undefined;
1108
+ }
1109
+ if (!declaredTaskType || declaredTaskType.length < 3) {
1110
+ return undefined;
1111
+ }
1112
+ const currentTokens = tokenizeForDrift(combinedCurrent);
1113
+ const declaredTokens = tokenizeForDrift(declaredTaskType);
1114
+ if (currentTokens.size === 0 || declaredTokens.size === 0) {
1115
+ return undefined;
1116
+ }
1117
+ let intersectionSize = 0;
1118
+ for (const t of currentTokens) {
1119
+ if (declaredTokens.has(t))
1120
+ intersectionSize += 1;
1121
+ }
1122
+ const unionSize = currentTokens.size + declaredTokens.size - intersectionSize;
1123
+ const overlap = unionSize === 0 ? 0 : intersectionSize / unionSize;
1124
+ if (overlap >= DRIFT_JACCARD_MIN) {
1125
+ // No drift detected — return undefined so the field is absent on the
1126
+ // wire for the common healthy case.
1127
+ return undefined;
1128
+ }
1129
+ const drivingTokens = [];
1130
+ for (const t of currentTokens) {
1131
+ if (!declaredTokens.has(t)) {
1132
+ drivingTokens.push(t);
1133
+ if (drivingTokens.length >= DRIFT_MAX_DRIVING_TOKENS)
1134
+ break;
1135
+ }
1136
+ }
1137
+ const missingTokens = [];
1138
+ for (const t of declaredTokens) {
1139
+ if (!currentTokens.has(t)) {
1140
+ missingTokens.push(t);
1141
+ if (missingTokens.length >= DRIFT_MAX_DRIVING_TOKENS)
1142
+ break;
1143
+ }
1144
+ }
1145
+ return {
1146
+ detected: true,
1147
+ overlap: Math.round(overlap * 1000) / 1000,
1148
+ drivingTokens,
1149
+ missingTokens,
1150
+ declaredTaskType,
1151
+ note: `Task drift detected: current context overlaps declared task by ${(overlap * 100).toFixed(1)}%. Driving topic tokens: ${drivingTokens.slice(0, 4).join(', ') || '(none)'}.`,
1152
+ };
1153
+ }
855
1154
  function buildAttendBootstrapTask(latestMessage, currentContext) {
856
1155
  const latest = normalizeMessage(latestMessage);
857
1156
  if (latest) {
@@ -2142,6 +2441,9 @@ class AttendantInstance {
2142
2441
  briefGeneratedAt: new Date().toISOString(),
2143
2442
  contextCallCount: this.contextCallCount,
2144
2443
  backfillSuggestion: buildBackfillSuggestion(context, workingMemoryWithLedger),
2444
+ // A4: plan proposal derived from the task + inferred task type + any
2445
+ // prior interrupted checkpoint. Pure + fast, never calls the LLM.
2446
+ planProposal: buildPlanProposal(context.task, inferredTaskType, this.sessionCheckpoint),
2145
2447
  sessionLedgerLearnings,
2146
2448
  sessionCheckpoint: this.sessionCheckpoint,
2147
2449
  sessionRecovery: isFirstDelivery ? recoveryResult.recovery : null,
@@ -2957,6 +3259,15 @@ If no durable facts can be extracted, return an empty array: [].`,
2957
3259
  // captured via autowrite, and the host should review them before
2958
3260
  // proceeding with any more tool calls.
2959
3261
  const writeNudge = this.maybeBuildWriteNudge() ?? undefined;
3262
+ // M4: drift detection — compare the current message/context against
3263
+ // the declared (inferred) task type in the brief. Only fires on
3264
+ // pre-response and mid-turn; post-response is the closeout for a
3265
+ // reply and drift there is less actionable. Computed once near the
3266
+ // top so every return path can echo the same value without re-running
3267
+ // the tokenization. Pure — no instance state reads beyond brief.
3268
+ const drift = (phase !== 'post-response' && this.brief?.inferredTaskType)
3269
+ ? detectTaskDrift(latestMessage, currentContext, this.brief.inferredTaskType)
3270
+ : undefined;
2960
3271
  let watchedEntitiesChanged = this.updateWatchedEntities(effectiveEntityHints);
2961
3272
  const freshState = await this.detectRelevantFreshState(effectiveEntityHints, latestMessage);
2962
3273
  const observationContext = currentContext.trim().length > 0 ? currentContext : latestMessage;
@@ -3027,6 +3338,9 @@ If no durable facts can be extracted, return an empty array: [].`,
3027
3338
  // calls without a host-initiated write, the agent should see the
3028
3339
  // draft facts before compliance is persisted.
3029
3340
  writeNudge,
3341
+ // M4: drift is gated on phase !== post-response above, so this
3342
+ // will always be undefined here. Field present for shape parity.
3343
+ drift,
3030
3344
  };
3031
3345
  }
3032
3346
  let decision = await this.decideMemoryNeed({
@@ -3099,12 +3413,27 @@ If no durable facts can be extracted, return an empty array: [].`,
3099
3413
  // passed pendingToolCall, echo the derived entities so the agent
3100
3414
  // can see that attend() was tool-call-aware on this call.
3101
3415
  const skipGuidance = input.pendingToolCall
3102
- ? {
3103
- toolName: input.pendingToolCall.name,
3104
- derivedEntities: toolCallHints,
3105
- factCount: 0,
3106
- note: `Memory was not deemed necessary for this ${input.pendingToolCall.name} call. Proceed.`,
3107
- }
3416
+ ? (() => {
3417
+ // M1: derive a structured skip verdict. On the "memory not
3418
+ // needed" early-return path, the verdict is always
3419
+ // shouldSkip=false/memory_not_needed because we never
3420
+ // actually looked up facts absence of retrieval is not
3421
+ // evidence the tool is redundant.
3422
+ const verdict = deriveSkipVerdict({
3423
+ derivedEntities: toolCallHints,
3424
+ factConfidences: [],
3425
+ memoryWasSkipped: true,
3426
+ });
3427
+ return {
3428
+ toolName: input.pendingToolCall.name,
3429
+ derivedEntities: toolCallHints,
3430
+ factCount: 0,
3431
+ note: `Memory was not deemed necessary for this ${input.pendingToolCall.name} call. Proceed.`,
3432
+ shouldSkip: verdict.shouldSkip,
3433
+ skipConfidence: verdict.skipConfidence,
3434
+ skipReasonCode: verdict.skipReasonCode,
3435
+ };
3436
+ })()
3108
3437
  : undefined;
3109
3438
  return {
3110
3439
  shouldInject: matchedUserRules.length > 0,
@@ -3144,6 +3473,10 @@ If no durable facts can be extracted, return an empty array: [].`,
3144
3473
  // needed:true above and this branch is skipped. This field stays
3145
3474
  // wired for shape consistency and for tests that simulate state.
3146
3475
  writeNudge,
3476
+ // M4: drift may fire here even when attend decides no memory is
3477
+ // needed — the agent may be drifting off-task without requiring
3478
+ // memory injection. Surface it so the host can reconvene.
3479
+ drift,
3147
3480
  };
3148
3481
  }
3149
3482
  // Post-compaction recovery: re-surface facts that were recently injected (likely in context
@@ -3297,16 +3630,41 @@ If no durable facts can be extracted, return an empty array: [].`,
3297
3630
  // facts preempted the lookup. Only populated when a tool call was
3298
3631
  // actually passed — no allocation overhead for the common path.
3299
3632
  const toolCallGuidance = input.pendingToolCall
3300
- ? {
3301
- toolName: input.pendingToolCall.name,
3302
- derivedEntities: toolCallHints,
3303
- factCount: structuredFacts.length,
3304
- note: toolCallHints.length === 0
3305
- ? `No entity hints derived from ${input.pendingToolCall.name} args. Memory check ran on message/context only.`
3306
- : structuredFacts.length > 0
3307
- ? `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.`
3308
- : `No stored facts matched the ${input.pendingToolCall.name} target. Proceed with the tool call.`,
3309
- }
3633
+ ? (() => {
3634
+ // M1: derive structured skip verdict. Scored against only the
3635
+ // facts that actually matched the derived entity hints — not
3636
+ // the wider structuredFacts set — so unrelated context-level
3637
+ // facts don't falsely trigger a skip recommendation.
3638
+ const entityCovered = toolCallHints.length > 0
3639
+ ? structuredFacts.filter((fact) => {
3640
+ if (!fact?.entityKey)
3641
+ return false;
3642
+ return toolCallHints.some((hint) => fact.entityKey.startsWith(`${hint}/`) || fact.entityKey === hint);
3643
+ })
3644
+ : [];
3645
+ const factConfidences = entityCovered.map((fact) => fact.confidence ?? 0);
3646
+ const verdict = deriveSkipVerdict({
3647
+ derivedEntities: toolCallHints,
3648
+ factConfidences,
3649
+ memoryWasSkipped: false,
3650
+ });
3651
+ const skipNote = verdict.shouldSkip
3652
+ ? `Iranti surfaced ${entityCovered.length} stored fact(s) for this ${input.pendingToolCall.name} target. shouldSkip=true (confidence ${verdict.skipConfidence}). Read the facts before running the tool — you may not need to run it.`
3653
+ : toolCallHints.length === 0
3654
+ ? `No entity hints derived from ${input.pendingToolCall.name} args. Memory check ran on message/context only.`
3655
+ : entityCovered.length === 0
3656
+ ? `No stored facts matched the ${input.pendingToolCall.name} target. Proceed with the tool call.`
3657
+ : `Facts surfaced but shouldSkip=false (reason=${verdict.skipReasonCode}). Proceed with the tool call.`;
3658
+ return {
3659
+ toolName: input.pendingToolCall.name,
3660
+ derivedEntities: toolCallHints,
3661
+ factCount: entityCovered.length,
3662
+ note: skipNote,
3663
+ shouldSkip: verdict.shouldSkip,
3664
+ skipConfidence: verdict.skipConfidence,
3665
+ skipReasonCode: verdict.skipReasonCode,
3666
+ };
3667
+ })()
3310
3668
  : undefined;
3311
3669
  const attendResult = {
3312
3670
  ...observed,
@@ -3339,6 +3697,11 @@ If no durable facts can be extracted, return an empty array: [].`,
3339
3697
  // draft facts from recentAutowriteBatches so the agent can review
3340
3698
  // them before the next tool call.
3341
3699
  writeNudge,
3700
+ // M4: drift signal — populated only when the current message/context
3701
+ // has diverged from the declared (inferred) task by more than
3702
+ // DRIFT_JACCARD_MIN. Computed once near the top and threaded here
3703
+ // so hosts can surface it alongside injected facts in one reply.
3704
+ drift,
3342
3705
  };
3343
3706
  if (input.suppressEvents !== true) {
3344
3707
  (0, staffEventRegistry_1.getStaffEventEmitter)().emit({