@roj-ai/sdk 0.1.13 → 0.1.15

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 (154) hide show
  1. package/dist/bootstrap.d.ts +13 -0
  2. package/dist/bootstrap.d.ts.map +1 -1
  3. package/dist/bootstrap.js +3 -1
  4. package/dist/bootstrap.js.map +1 -1
  5. package/dist/config.d.ts +2 -0
  6. package/dist/config.d.ts.map +1 -1
  7. package/dist/config.js +3 -0
  8. package/dist/config.js.map +1 -1
  9. package/dist/core/agents/agent.d.ts +25 -1
  10. package/dist/core/agents/agent.d.ts.map +1 -1
  11. package/dist/core/agents/agent.js +117 -21
  12. package/dist/core/agents/agent.js.map +1 -1
  13. package/dist/core/agents/config.d.ts +7 -0
  14. package/dist/core/agents/config.d.ts.map +1 -1
  15. package/dist/core/agents/context.d.ts +10 -0
  16. package/dist/core/agents/context.d.ts.map +1 -1
  17. package/dist/core/agents/state.d.ts +11 -3
  18. package/dist/core/agents/state.d.ts.map +1 -1
  19. package/dist/core/agents/state.js.map +1 -1
  20. package/dist/core/file-store/file-store.d.ts +5 -1
  21. package/dist/core/file-store/file-store.d.ts.map +1 -1
  22. package/dist/core/file-store/file-store.js +31 -21
  23. package/dist/core/file-store/file-store.js.map +1 -1
  24. package/dist/core/image/vips-resizer.test.js +26 -14
  25. package/dist/core/image/vips-resizer.test.js.map +1 -1
  26. package/dist/core/llm/anthropic.d.ts.map +1 -1
  27. package/dist/core/llm/anthropic.js +11 -8
  28. package/dist/core/llm/anthropic.js.map +1 -1
  29. package/dist/core/llm/cache-breakpoints.d.ts +5 -1
  30. package/dist/core/llm/cache-breakpoints.d.ts.map +1 -1
  31. package/dist/core/llm/cache-breakpoints.js +10 -5
  32. package/dist/core/llm/cache-breakpoints.js.map +1 -1
  33. package/dist/core/sessions/session.d.ts.map +1 -1
  34. package/dist/core/sessions/session.js +10 -0
  35. package/dist/core/sessions/session.js.map +1 -1
  36. package/dist/core/sessions/session.test.js +5 -0
  37. package/dist/core/sessions/session.test.js.map +1 -1
  38. package/dist/core/sessions/state.d.ts.map +1 -1
  39. package/dist/core/sessions/state.js +5 -1
  40. package/dist/core/sessions/state.js.map +1 -1
  41. package/dist/core/tools/executor.test.js +1 -0
  42. package/dist/core/tools/executor.test.js.map +1 -1
  43. package/dist/lib/utils/concurrency.d.ts +25 -0
  44. package/dist/lib/utils/concurrency.d.ts.map +1 -0
  45. package/dist/lib/utils/concurrency.js +69 -0
  46. package/dist/lib/utils/concurrency.js.map +1 -0
  47. package/dist/lib/utils/concurrency.test.d.ts +2 -0
  48. package/dist/lib/utils/concurrency.test.d.ts.map +1 -0
  49. package/dist/lib/utils/concurrency.test.js +135 -0
  50. package/dist/lib/utils/concurrency.test.js.map +1 -0
  51. package/dist/plugins/agent-status/plugin.d.ts.map +1 -1
  52. package/dist/plugins/agent-status/plugin.js +18 -26
  53. package/dist/plugins/agent-status/plugin.js.map +1 -1
  54. package/dist/plugins/context-compact/compaction-live.test.d.ts +17 -0
  55. package/dist/plugins/context-compact/compaction-live.test.d.ts.map +1 -0
  56. package/dist/plugins/context-compact/compaction-live.test.js +177 -0
  57. package/dist/plugins/context-compact/compaction-live.test.js.map +1 -0
  58. package/dist/plugins/context-compact/context-compact.integration.test.js +123 -3
  59. package/dist/plugins/context-compact/context-compact.integration.test.js.map +1 -1
  60. package/dist/plugins/context-compact/context-compactor.d.ts +47 -17
  61. package/dist/plugins/context-compact/context-compactor.d.ts.map +1 -1
  62. package/dist/plugins/context-compact/context-compactor.js +60 -36
  63. package/dist/plugins/context-compact/context-compactor.js.map +1 -1
  64. package/dist/plugins/context-compact/context-compactor.test.js +69 -103
  65. package/dist/plugins/context-compact/context-compactor.test.js.map +1 -1
  66. package/dist/plugins/context-compact/plugin.d.ts +9 -2
  67. package/dist/plugins/context-compact/plugin.d.ts.map +1 -1
  68. package/dist/plugins/context-compact/plugin.js +8 -4
  69. package/dist/plugins/context-compact/plugin.js.map +1 -1
  70. package/dist/plugins/filesystem/filesystem.integration.test.js +36 -0
  71. package/dist/plugins/filesystem/filesystem.integration.test.js.map +1 -1
  72. package/dist/plugins/filesystem/plugin.d.ts.map +1 -1
  73. package/dist/plugins/filesystem/plugin.js +8 -6
  74. package/dist/plugins/filesystem/plugin.js.map +1 -1
  75. package/dist/plugins/mailbox/mailbox.integration.test.js +9 -16
  76. package/dist/plugins/mailbox/mailbox.integration.test.js.map +1 -1
  77. package/dist/plugins/resources/plugin.d.ts.map +1 -1
  78. package/dist/plugins/resources/plugin.js +4 -1
  79. package/dist/plugins/resources/plugin.js.map +1 -1
  80. package/dist/plugins/uploads/plugin.d.ts +12 -0
  81. package/dist/plugins/uploads/plugin.d.ts.map +1 -1
  82. package/dist/plugins/uploads/plugin.js +188 -44
  83. package/dist/plugins/uploads/plugin.js.map +1 -1
  84. package/dist/plugins/uploads/preprocessors/image-classifier.d.ts +9 -0
  85. package/dist/plugins/uploads/preprocessors/image-classifier.d.ts.map +1 -1
  86. package/dist/plugins/uploads/preprocessors/image-classifier.js +4 -1
  87. package/dist/plugins/uploads/preprocessors/image-classifier.js.map +1 -1
  88. package/dist/plugins/uploads/preprocessors/image-classifier.test.d.ts +2 -0
  89. package/dist/plugins/uploads/preprocessors/image-classifier.test.d.ts.map +1 -0
  90. package/dist/plugins/uploads/preprocessors/image-classifier.test.js +113 -0
  91. package/dist/plugins/uploads/preprocessors/image-classifier.test.js.map +1 -0
  92. package/dist/plugins/uploads/preprocessors/markitdown-preprocessor.d.ts.map +1 -1
  93. package/dist/plugins/uploads/preprocessors/markitdown-preprocessor.js +8 -7
  94. package/dist/plugins/uploads/preprocessors/markitdown-preprocessor.js.map +1 -1
  95. package/dist/plugins/uploads/preprocessors/zip-preprocessor.d.ts.map +1 -1
  96. package/dist/plugins/uploads/preprocessors/zip-preprocessor.js +35 -15
  97. package/dist/plugins/uploads/preprocessors/zip-preprocessor.js.map +1 -1
  98. package/dist/plugins/uploads/state.d.ts +1 -0
  99. package/dist/plugins/uploads/state.d.ts.map +1 -1
  100. package/dist/plugins/uploads/state.js +1 -1
  101. package/dist/plugins/uploads/state.js.map +1 -1
  102. package/dist/plugins/uploads/uploads.integration.test.js +97 -0
  103. package/dist/plugins/uploads/uploads.integration.test.js.map +1 -1
  104. package/dist/plugins/user-chat/plugin.d.ts +2 -0
  105. package/dist/plugins/user-chat/plugin.d.ts.map +1 -1
  106. package/dist/plugins/user-chat/plugin.js +47 -3
  107. package/dist/plugins/user-chat/plugin.js.map +1 -1
  108. package/dist/plugins/user-chat/schema.d.ts +10 -0
  109. package/dist/plugins/user-chat/schema.d.ts.map +1 -1
  110. package/dist/plugins/user-chat/schema.js +1 -0
  111. package/dist/plugins/user-chat/schema.js.map +1 -1
  112. package/dist/plugins/user-chat/user-chat.integration.test.js +86 -0
  113. package/dist/plugins/user-chat/user-chat.integration.test.js.map +1 -1
  114. package/dist/transport/http/routes/upload.d.ts.map +1 -1
  115. package/dist/transport/http/routes/upload.js +60 -0
  116. package/dist/transport/http/routes/upload.js.map +1 -1
  117. package/package.json +2 -2
  118. package/src/bootstrap.ts +3 -1
  119. package/src/config.ts +6 -0
  120. package/src/core/agents/agent.ts +134 -20
  121. package/src/core/agents/config.ts +7 -0
  122. package/src/core/agents/context.ts +11 -0
  123. package/src/core/agents/state.ts +11 -4
  124. package/src/core/file-store/file-store.ts +38 -18
  125. package/src/core/image/vips-resizer.test.ts +26 -15
  126. package/src/core/llm/anthropic.ts +19 -12
  127. package/src/core/llm/cache-breakpoints.ts +15 -6
  128. package/src/core/sessions/session.test.ts +6 -0
  129. package/src/core/sessions/session.ts +12 -0
  130. package/src/core/sessions/state.ts +5 -1
  131. package/src/core/tools/executor.test.ts +1 -0
  132. package/src/lib/utils/concurrency.test.ts +169 -0
  133. package/src/lib/utils/concurrency.ts +72 -0
  134. package/src/plugins/agent-status/plugin.ts +18 -25
  135. package/src/plugins/context-compact/compaction-live.test.ts +221 -0
  136. package/src/plugins/context-compact/context-compact.integration.test.ts +135 -3
  137. package/src/plugins/context-compact/context-compactor.test.ts +71 -110
  138. package/src/plugins/context-compact/context-compactor.ts +88 -43
  139. package/src/plugins/context-compact/plugin.ts +19 -10
  140. package/src/plugins/filesystem/filesystem.integration.test.ts +44 -0
  141. package/src/plugins/filesystem/plugin.ts +8 -6
  142. package/src/plugins/mailbox/mailbox.integration.test.ts +12 -18
  143. package/src/plugins/resources/plugin.ts +4 -1
  144. package/src/plugins/uploads/plugin.ts +212 -47
  145. package/src/plugins/uploads/preprocessors/image-classifier.test.ts +142 -0
  146. package/src/plugins/uploads/preprocessors/image-classifier.ts +13 -1
  147. package/src/plugins/uploads/preprocessors/markitdown-preprocessor.ts +8 -8
  148. package/src/plugins/uploads/preprocessors/zip-preprocessor.ts +37 -17
  149. package/src/plugins/uploads/state.ts +1 -1
  150. package/src/plugins/uploads/uploads.integration.test.ts +123 -0
  151. package/src/plugins/user-chat/plugin.ts +60 -3
  152. package/src/plugins/user-chat/schema.ts +10 -1
  153. package/src/plugins/user-chat/user-chat.integration.test.ts +99 -0
  154. package/src/transport/http/routes/upload.ts +87 -0
@@ -1,33 +1,53 @@
1
1
  import type { AgentId } from '../../core/agents/schema.js';
2
2
  import type { ContextCompactedEvent } from '../../core/context/state.js';
3
- import type { LLMMessage, LLMProvider } from '../../core/llm/provider.js';
3
+ import type { InferenceResponse, LLMError, LLMMessage } from '../../core/llm/provider.js';
4
4
  import type { ModelId } from '../../core/llm/schema.js';
5
5
  import type { SessionId } from '../../core/sessions/schema.js';
6
6
  import type { Result } from '../../lib/utils/result.js';
7
7
  import type { Logger } from '../../lib/logger/logger.js';
8
+ /**
9
+ * Callback used by the compactor to ask the host (an Agent) to run a side-channel
10
+ * inference reusing its own system prompt, tools, and conversation prefix.
11
+ *
12
+ * Implemented in practice by AgentContext.runAuxiliaryInference, which keeps the
13
+ * agent's prompt cache warm — only the trailing `extraMessages` and the response
14
+ * tokens are paid for; the rest of the prefix is served from cache.
15
+ */
16
+ export type RunInferenceFn = (extraMessages: LLMMessage[]) => Promise<Result<InferenceResponse, LLMError>>;
8
17
  /**
9
18
  * Format a single message for summarization.
10
19
  * Handles all message types including tool calls and tool results.
11
20
  */
12
21
  export declare function formatMessageForSummary(msg: LLMMessage): string;
13
22
  export interface CompactionConfig {
14
- /** Model ID to use for summarization (required) */
15
- model: ModelId;
16
- /** Token threshold to trigger compaction */
23
+ /**
24
+ * @deprecated No longer used. Summarization runs on the agent's own model via
25
+ * the auxiliary inference callback so the agent's prompt cache is reused.
26
+ * Kept in the interface so existing preset configs continue to type-check.
27
+ */
28
+ model?: ModelId;
29
+ /** Token threshold to trigger compaction. */
17
30
  maxTokens: number;
18
- /** Number of recent messages to keep uncompacted */
31
+ /** Number of recent messages to keep uncompacted. */
19
32
  keepRecentMessages: number;
20
- /** Max tokens for kept recent messages (whichever limit is hit first) */
33
+ /** Max tokens for kept recent messages (whichever limit is hit first). */
21
34
  keepRecentTokens?: number;
22
- /** Target token count after compaction (informational) */
35
+ /** Target token count after compaction (informational). */
23
36
  targetTokens?: number;
24
- /** System prompt for summarization */
37
+ /** Optional override for the trailing summarization instruction sent to the model. */
25
38
  summaryPrompt?: string;
26
- /** Enable history offloading before compaction */
39
+ /** Enable history offloading before compaction. */
27
40
  offloadHistory?: boolean;
28
- /** Path prefix for offloaded history (default: /session/.history/) */
41
+ /** Path prefix for offloaded history (default: /session/.history/). */
29
42
  historyPathPrefix?: string;
30
43
  }
44
+ /**
45
+ * Trailing user-message instruction appended to the agent's full prefix when
46
+ * requesting a summary. The model sees its real system prompt, tools and full
47
+ * conversation, then this instruction last. Phrased to discourage tool calls
48
+ * — Sonnet-class models reliably emit a plain text response under this prompt.
49
+ */
50
+ export declare const DEFAULT_SUMMARY_INSTRUCTION: string;
31
51
  export interface CompactionResult {
32
52
  /** New messages to use (summary + kept messages) */
33
53
  compactedMessages: LLMMessage[];
@@ -59,11 +79,10 @@ export interface HistoryOffloader {
59
79
  offload(agentId: AgentId, content: string, pathPrefix: string): Promise<string>;
60
80
  }
61
81
  export declare class ContextCompactor {
62
- private readonly llmProvider;
63
82
  private readonly logger;
64
83
  private readonly config;
65
84
  private readonly historyOffloader?;
66
- constructor(llmProvider: LLMProvider, logger: Logger, config: CompactionConfig, historyOffloader?: HistoryOffloader | undefined);
85
+ constructor(logger: Logger, config: CompactionConfig, historyOffloader?: HistoryOffloader | undefined);
67
86
  /**
68
87
  * Compute how many recent messages to keep, respecting both count and token limits.
69
88
  * Ensures the kept portion never starts with orphaned tool results (tool messages
@@ -71,18 +90,29 @@ export declare class ContextCompactor {
71
90
  */
72
91
  private computeKeepCount;
73
92
  /**
74
- * Check if compaction is needed based on token count.
93
+ * Check if compaction is needed.
94
+ *
95
+ * Prefers the provider-reported prompt token count from the previous turn
96
+ * (authoritative — comes straight from the model's tokenizer). Falls back
97
+ * to the in-process estimator when no previous metrics exist (first turn).
98
+ *
99
+ * The estimator under-counts JSON-heavy tool-result history by ~2x, so
100
+ * relying on it alone causes the trigger to never fire in long sessions.
75
101
  */
76
- needsCompaction(messages: LLMMessage[]): boolean;
102
+ needsCompaction(messages: LLMMessage[], lastActualPromptTokens?: number): boolean;
77
103
  /**
78
104
  * Compact conversation history if needed.
79
105
  * Returns null if compaction was not needed.
80
106
  */
81
- compactIfNeeded(sessionId: SessionId, agentId: AgentId, messages: LLMMessage[]): Promise<Result<CompactionResult | null, Error>>;
107
+ compactIfNeeded(sessionId: SessionId, agentId: AgentId, messages: LLMMessage[], runInference: RunInferenceFn, lastActualPromptTokens?: number): Promise<Result<CompactionResult | null, Error>>;
82
108
  /**
83
- * Compact conversation history by summarizing older messages.
109
+ * Compact conversation history by asking the agent's own model to summarize
110
+ * the older portion. The summarization call reuses the agent's existing
111
+ * prompt cache via `runInference`, paying only for the trailing instruction
112
+ * (a few hundred tokens) and the summary output — not the whole conversation
113
+ * a second time.
84
114
  */
85
- compact(sessionId: SessionId, agentId: AgentId, messages: LLMMessage[]): Promise<Result<CompactionResult, Error>>;
115
+ compact(sessionId: SessionId, agentId: AgentId, messages: LLMMessage[], runInference: RunInferenceFn, lastActualPromptTokens?: number): Promise<Result<CompactionResult, Error>>;
86
116
  }
87
117
  export declare function createContextCompactedEvent(sessionId: SessionId, agentId: AgentId, result: CompactionResult): ContextCompactedEvent;
88
118
  //# sourceMappingURL=context-compactor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context-compactor.d.ts","sourceRoot":"","sources":["../../../src/plugins/context-compact/context-compactor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context-compactor.d.ts","sourceRoot":"","sources":["../../../src/plugins/context-compact/context-compactor.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { contextEvents } from '../../core/context/state.js';
2
2
  import { withSessionId } from '../../core/events/test-helpers.js';
3
3
  import { estimateMessagesTokens } from '../../core/llm/tokens.js';
4
4
  import { Err, Ok } from '../../lib/utils/result.js';
5
- import { CONTEXT_SUMMARY_PROMPT, wrapContextSummary } from '../../prompts/index.js';
5
+ import { wrapContextSummary } from '../../prompts/index.js';
6
6
  // ============================================================================
7
7
  // Message formatting for summarization
8
8
  // ============================================================================
@@ -56,6 +56,20 @@ function formatToolInput(input) {
56
56
  }
57
57
  return String(input).slice(0, 50);
58
58
  }
59
+ /**
60
+ * Trailing user-message instruction appended to the agent's full prefix when
61
+ * requesting a summary. The model sees its real system prompt, tools and full
62
+ * conversation, then this instruction last. Phrased to discourage tool calls
63
+ * — Sonnet-class models reliably emit a plain text response under this prompt.
64
+ */
65
+ export const DEFAULT_SUMMARY_INSTRUCTION = '[CONTEXT COMPACTION REQUEST]\n'
66
+ + 'The conversation above is approaching the context budget. Produce a concise '
67
+ + 'summary (under 600 words) of everything discussed and decided so far. Cover: '
68
+ + 'completed tasks and their outcomes, key decisions and rationale, current state '
69
+ + 'of any in-progress work, important file paths or identifiers, and outstanding '
70
+ + 'questions.\n\n'
71
+ + 'Reply with plain text only. Do NOT call any tools. Do NOT acknowledge this '
72
+ + 'request — just emit the summary directly.';
59
73
  // ============================================================================
60
74
  // History Offloader
61
75
  // ============================================================================
@@ -65,12 +79,10 @@ export const DEFAULT_HISTORY_PATH_PREFIX = '/session/.history/';
65
79
  // Context Compactor
66
80
  // ============================================================================
67
81
  export class ContextCompactor {
68
- llmProvider;
69
82
  logger;
70
83
  config;
71
84
  historyOffloader;
72
- constructor(llmProvider, logger, config, historyOffloader) {
73
- this.llmProvider = llmProvider;
85
+ constructor(logger, config, historyOffloader) {
74
86
  this.logger = logger;
75
87
  this.config = config;
76
88
  this.historyOffloader = historyOffloader;
@@ -105,35 +117,47 @@ export class ContextCompactor {
105
117
  return count;
106
118
  }
107
119
  /**
108
- * Check if compaction is needed based on token count.
120
+ * Check if compaction is needed.
121
+ *
122
+ * Prefers the provider-reported prompt token count from the previous turn
123
+ * (authoritative — comes straight from the model's tokenizer). Falls back
124
+ * to the in-process estimator when no previous metrics exist (first turn).
125
+ *
126
+ * The estimator under-counts JSON-heavy tool-result history by ~2x, so
127
+ * relying on it alone causes the trigger to never fire in long sessions.
109
128
  */
110
- needsCompaction(messages) {
111
- const tokens = estimateMessagesTokens(messages);
129
+ needsCompaction(messages, lastActualPromptTokens) {
130
+ const tokens = lastActualPromptTokens ?? estimateMessagesTokens(messages);
112
131
  return tokens > this.config.maxTokens;
113
132
  }
114
133
  /**
115
134
  * Compact conversation history if needed.
116
135
  * Returns null if compaction was not needed.
117
136
  */
118
- async compactIfNeeded(sessionId, agentId, messages) {
119
- if (!this.needsCompaction(messages)) {
137
+ async compactIfNeeded(sessionId, agentId, messages, runInference, lastActualPromptTokens) {
138
+ if (!this.needsCompaction(messages, lastActualPromptTokens)) {
120
139
  return Ok(null);
121
140
  }
122
- return this.compact(sessionId, agentId, messages);
141
+ return this.compact(sessionId, agentId, messages, runInference, lastActualPromptTokens);
123
142
  }
124
143
  /**
125
- * Compact conversation history by summarizing older messages.
144
+ * Compact conversation history by asking the agent's own model to summarize
145
+ * the older portion. The summarization call reuses the agent's existing
146
+ * prompt cache via `runInference`, paying only for the trailing instruction
147
+ * (a few hundred tokens) and the summary output — not the whole conversation
148
+ * a second time.
126
149
  */
127
- async compact(sessionId, agentId, messages) {
128
- const originalTokens = estimateMessagesTokens(messages);
150
+ async compact(sessionId, agentId, messages, runInference, lastActualPromptTokens) {
151
+ const originalTokens = lastActualPromptTokens ?? estimateMessagesTokens(messages);
129
152
  this.logger.info('Starting context compaction', {
130
153
  sessionId,
131
154
  agentId,
132
155
  messageCount: messages.length,
133
- estimatedTokens: originalTokens,
156
+ originalTokens,
157
+ actualTokensReported: lastActualPromptTokens !== undefined,
134
158
  });
135
- // Split messages: keep recent, compact older
136
- // Respect both count limit and token budget (whichever is hit first)
159
+ // Split messages: keep recent, compact older.
160
+ // Respect both count limit and token budget (whichever is hit first).
137
161
  const keepCount = this.computeKeepCount(messages);
138
162
  const toCompact = messages.slice(0, messages.length - keepCount);
139
163
  const toKeep = messages.slice(messages.length - keepCount);
@@ -147,20 +171,17 @@ export class ContextCompactor {
147
171
  messagesRemoved: 0,
148
172
  });
149
173
  }
150
- // Format messages for summarization
151
- const conversationText = toCompact
152
- .map(formatMessageForSummary)
153
- .join('\n\n');
154
- // Offload history if enabled
174
+ // Offload the dropped messages to disk for forensics / replay.
175
+ // Best-effort; failures are logged but don't block compaction.
155
176
  let historyPath;
156
177
  if (this.config.offloadHistory && this.historyOffloader) {
157
178
  try {
179
+ const conversationText = toCompact.map(formatMessageForSummary).join('\n\n');
158
180
  const pathPrefix = this.config.historyPathPrefix ?? DEFAULT_HISTORY_PATH_PREFIX;
159
181
  historyPath = await this.historyOffloader.offload(agentId, conversationText, pathPrefix);
160
182
  this.logger.info('History offloaded', { sessionId, agentId, historyPath });
161
183
  }
162
184
  catch (error) {
163
- // History offloading is best-effort, log and continue
164
185
  this.logger.warn('Failed to offload history', {
165
186
  sessionId,
166
187
  agentId,
@@ -168,18 +189,14 @@ export class ContextCompactor {
168
189
  });
169
190
  }
170
191
  }
171
- // Generate summary using LLM
172
- const summaryResult = await this.llmProvider.inference({
173
- model: this.config.model,
174
- systemPrompt: this.config.summaryPrompt ?? CONTEXT_SUMMARY_PROMPT,
175
- messages: [
176
- {
177
- role: 'user',
178
- content: `Please summarize this conversation:\n\n${conversationText}`,
179
- },
180
- ],
181
- tools: [],
182
- });
192
+ // Inline summarization: append the instruction as a trailing user message
193
+ // and let the host run inference with the agent's full live prefix. The
194
+ // agent's prompt cache from the previous turn covers everything up to
195
+ // (but not including) this instruction.
196
+ const summaryInstruction = this.config.summaryPrompt ?? DEFAULT_SUMMARY_INSTRUCTION;
197
+ const summaryResult = await runInference([
198
+ { role: 'user', content: summaryInstruction },
199
+ ]);
183
200
  if (!summaryResult.ok) {
184
201
  const llmError = summaryResult.error;
185
202
  this.logger.error('Failed to generate summary', new Error(llmError.message), {
@@ -190,9 +207,16 @@ export class ContextCompactor {
190
207
  return Err(new Error(`Compaction failed: ${llmError.message}`));
191
208
  }
192
209
  const summary = summaryResult.value.content ?? '';
193
- // Create summary message (with history reference if offloaded)
210
+ if (!summary.trim()) {
211
+ this.logger.warn('Summarization returned empty content', { sessionId, agentId });
212
+ return Err(new Error('Compaction failed: model returned empty summary'));
213
+ }
214
+ // Replace the compacted portion with a single user-role summary message.
215
+ // Using `user` role (not `system`) so the wrap reads as part of the
216
+ // conversation flow — Anthropic recommends user-role for arbitrary
217
+ // mid-conversation context blocks.
194
218
  const summaryMessage = {
195
- role: 'system',
219
+ role: 'user',
196
220
  content: wrapContextSummary(summary, historyPath),
197
221
  };
198
222
  const compactedMessages = [summaryMessage, ...toKeep];
@@ -1 +1 @@
1
- {"version":3,"file":"context-compactor.js","sourceRoot":"","sources":["../../../src/plugins/context-compact/context-compactor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context-compactor.js","sourceRoot":"","sources":["../../../src/plugins/context-compact/context-compactor.ts"],"names":[],"mappings":"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"}