deepagentsdk 0.11.1 → 0.12.0

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 (103) hide show
  1. package/dist/adapters/elements/index.cjs +324 -0
  2. package/dist/adapters/elements/index.cjs.map +1 -0
  3. package/dist/adapters/elements/index.d.cts +212 -0
  4. package/dist/adapters/elements/index.d.mts +212 -0
  5. package/dist/adapters/elements/index.mjs +320 -0
  6. package/dist/adapters/elements/index.mjs.map +1 -0
  7. package/dist/agent-CrH-He58.mjs +2974 -0
  8. package/dist/agent-CrH-He58.mjs.map +1 -0
  9. package/dist/agent-Cuks-Idh.cjs +3396 -0
  10. package/dist/agent-Cuks-Idh.cjs.map +1 -0
  11. package/dist/chunk-CbDLau6x.cjs +34 -0
  12. package/dist/cli/index.cjs +3162 -0
  13. package/dist/cli/index.cjs.map +1 -0
  14. package/dist/cli/index.d.cts +1 -0
  15. package/dist/cli/index.d.mts +1 -0
  16. package/dist/cli/index.mjs +3120 -0
  17. package/dist/cli/index.mjs.map +1 -0
  18. package/dist/file-saver-BJCqMIb5.mjs +655 -0
  19. package/dist/file-saver-BJCqMIb5.mjs.map +1 -0
  20. package/dist/file-saver-C6O2LAvg.cjs +679 -0
  21. package/dist/file-saver-C6O2LAvg.cjs.map +1 -0
  22. package/dist/index.cjs +1471 -0
  23. package/dist/index.cjs.map +1 -0
  24. package/dist/index.d.cts +1581 -0
  25. package/dist/index.d.mts +1581 -0
  26. package/dist/index.mjs +1371 -0
  27. package/dist/index.mjs.map +1 -0
  28. package/dist/load-79a2H4m0.cjs +163 -0
  29. package/dist/load-79a2H4m0.cjs.map +1 -0
  30. package/dist/load-94gjHorc.mjs +3 -0
  31. package/dist/load-B6CA5js_.mjs +142 -0
  32. package/dist/load-B6CA5js_.mjs.map +1 -0
  33. package/dist/load-C2qVmZMp.cjs +3 -0
  34. package/dist/types-4g9UvXal.d.mts +1151 -0
  35. package/dist/types-IulnvhFg.d.cts +1151 -0
  36. package/package.json +26 -12
  37. package/src/adapters/elements/index.ts +0 -27
  38. package/src/adapters/elements/messageAdapter.ts +0 -165
  39. package/src/adapters/elements/statusAdapter.ts +0 -39
  40. package/src/adapters/elements/types.ts +0 -97
  41. package/src/adapters/elements/useElementsAdapter.ts +0 -261
  42. package/src/agent.ts +0 -1258
  43. package/src/backends/composite.ts +0 -273
  44. package/src/backends/filesystem.ts +0 -692
  45. package/src/backends/index.ts +0 -22
  46. package/src/backends/local-sandbox.ts +0 -175
  47. package/src/backends/persistent.ts +0 -593
  48. package/src/backends/sandbox.ts +0 -510
  49. package/src/backends/state.ts +0 -244
  50. package/src/backends/utils.ts +0 -287
  51. package/src/checkpointer/file-saver.ts +0 -98
  52. package/src/checkpointer/index.ts +0 -5
  53. package/src/checkpointer/kv-saver.ts +0 -82
  54. package/src/checkpointer/memory-saver.ts +0 -82
  55. package/src/checkpointer/types.ts +0 -125
  56. package/src/cli/components/ApiKeyInput.tsx +0 -300
  57. package/src/cli/components/FilePreview.tsx +0 -237
  58. package/src/cli/components/Input.tsx +0 -277
  59. package/src/cli/components/Message.tsx +0 -93
  60. package/src/cli/components/ModelSelection.tsx +0 -338
  61. package/src/cli/components/SlashMenu.tsx +0 -101
  62. package/src/cli/components/StatusBar.tsx +0 -89
  63. package/src/cli/components/Subagent.tsx +0 -91
  64. package/src/cli/components/TodoList.tsx +0 -133
  65. package/src/cli/components/ToolApproval.tsx +0 -70
  66. package/src/cli/components/ToolCall.tsx +0 -144
  67. package/src/cli/components/ToolCallSummary.tsx +0 -175
  68. package/src/cli/components/Welcome.tsx +0 -75
  69. package/src/cli/components/index.ts +0 -24
  70. package/src/cli/hooks/index.ts +0 -12
  71. package/src/cli/hooks/useAgent.ts +0 -933
  72. package/src/cli/index.tsx +0 -1066
  73. package/src/cli/theme.ts +0 -205
  74. package/src/cli/utils/model-list.ts +0 -365
  75. package/src/constants/errors.ts +0 -29
  76. package/src/constants/limits.ts +0 -195
  77. package/src/index.ts +0 -176
  78. package/src/middleware/agent-memory.ts +0 -330
  79. package/src/prompts.ts +0 -196
  80. package/src/skills/index.ts +0 -2
  81. package/src/skills/load.ts +0 -191
  82. package/src/skills/types.ts +0 -53
  83. package/src/tools/execute.ts +0 -167
  84. package/src/tools/filesystem.ts +0 -418
  85. package/src/tools/index.ts +0 -39
  86. package/src/tools/subagent.ts +0 -443
  87. package/src/tools/todos.ts +0 -101
  88. package/src/tools/web.ts +0 -567
  89. package/src/types/backend.ts +0 -177
  90. package/src/types/core.ts +0 -220
  91. package/src/types/events.ts +0 -430
  92. package/src/types/index.ts +0 -94
  93. package/src/types/structured-output.ts +0 -43
  94. package/src/types/subagent.ts +0 -96
  95. package/src/types.ts +0 -22
  96. package/src/utils/approval.ts +0 -213
  97. package/src/utils/events.ts +0 -416
  98. package/src/utils/eviction.ts +0 -181
  99. package/src/utils/index.ts +0 -34
  100. package/src/utils/model-parser.ts +0 -38
  101. package/src/utils/patch-tool-calls.ts +0 -233
  102. package/src/utils/project-detection.ts +0 -32
  103. package/src/utils/summarization.ts +0 -254
@@ -1,254 +0,0 @@
1
- /**
2
- * Conversation summarization utility.
3
- *
4
- * Automatically summarizes older messages when approaching token limits
5
- * to prevent context overflow while preserving important context.
6
- */
7
-
8
- import { generateText, type LanguageModel } from "ai";
9
- import type { ModelMessage } from "../types";
10
- import { estimateTokens } from "./eviction";
11
- import {
12
- DEFAULT_SUMMARIZATION_THRESHOLD as CENTRALIZED_THRESHOLD,
13
- DEFAULT_KEEP_MESSAGES as CENTRALIZED_KEEP,
14
- } from "../constants/limits";
15
-
16
- /**
17
- * Default token threshold before triggering summarization.
18
- * 170k tokens is a safe threshold for most models.
19
- */
20
- export const DEFAULT_SUMMARIZATION_THRESHOLD = CENTRALIZED_THRESHOLD;
21
-
22
- /**
23
- * Default number of recent messages to keep intact.
24
- */
25
- export const DEFAULT_KEEP_MESSAGES = CENTRALIZED_KEEP;
26
-
27
- /**
28
- * Options for summarization.
29
- */
30
- export interface SummarizationOptions {
31
- /** Model to use for summarization (AI SDK LanguageModel instance) */
32
- model: LanguageModel;
33
- /** Token threshold to trigger summarization (default: 170000) */
34
- tokenThreshold?: number;
35
- /** Number of recent messages to keep intact (default: 6) */
36
- keepMessages?: number;
37
- /** Generation options to pass through */
38
- generationOptions?: any;
39
- /** Advanced options to pass through */
40
- advancedOptions?: any;
41
- }
42
-
43
- /**
44
- * Result of summarization check.
45
- */
46
- export interface SummarizationResult {
47
- /** Whether summarization was needed */
48
- summarized: boolean;
49
- /** The processed messages (either original or with summary) */
50
- messages: ModelMessage[];
51
- /** Token count before processing */
52
- tokensBefore?: number;
53
- /** Token count after processing */
54
- tokensAfter?: number;
55
- }
56
-
57
- /**
58
- * Estimate total tokens in a messages array.
59
- */
60
- export function estimateMessagesTokens(messages: ModelMessage[]): number {
61
- let total = 0;
62
-
63
- for (const message of messages) {
64
- if (typeof message.content === "string") {
65
- total += estimateTokens(message.content);
66
- } else if (Array.isArray(message.content)) {
67
- for (const part of message.content) {
68
- if (typeof part === "object" && part !== null && "text" in part) {
69
- total += estimateTokens(String(part.text));
70
- }
71
- }
72
- }
73
- }
74
-
75
- return total;
76
- }
77
-
78
- /**
79
- * Extract text content from a message.
80
- */
81
- function getMessageText(message: ModelMessage): string {
82
- if (typeof message.content === "string") {
83
- return message.content;
84
- }
85
-
86
- if (Array.isArray(message.content)) {
87
- return message.content
88
- .map((part) => {
89
- if (typeof part === "object" && part !== null && "text" in part) {
90
- return String(part.text);
91
- }
92
- if (typeof part === "object" && part !== null && "type" in part) {
93
- if (part.type === "tool-call") {
94
- return `[Tool call: ${(part as { toolName?: string }).toolName || "unknown"}]`;
95
- }
96
- if (part.type === "tool-result") {
97
- return `[Tool result]`;
98
- }
99
- }
100
- return "";
101
- })
102
- .filter(Boolean)
103
- .join("\n");
104
- }
105
-
106
- return "";
107
- }
108
-
109
- /**
110
- * Format messages for summarization prompt.
111
- */
112
- function formatMessagesForSummary(messages: ModelMessage[]): string {
113
- return messages
114
- .map((msg) => {
115
- const role = msg.role === "user" ? "User" : msg.role === "assistant" ? "Assistant" : "System";
116
- const text = getMessageText(msg);
117
- return `${role}: ${text}`;
118
- })
119
- .join("\n\n");
120
- }
121
-
122
- /**
123
- * Generate a summary of conversation messages.
124
- */
125
- async function generateSummary(
126
- messages: ModelMessage[],
127
- model: LanguageModel,
128
- generationOptions?: any,
129
- advancedOptions?: any
130
- ): Promise<string> {
131
- const conversationText = formatMessagesForSummary(messages);
132
-
133
- const generateTextOptions: any = {
134
- model,
135
- system: `You are a conversation summarizer. Your task is to create a concise but comprehensive summary of the conversation that preserves:
136
- 1. Key decisions and conclusions
137
- 2. Important context and background information
138
- 3. Any tasks or todos mentioned
139
- 4. Technical details that may be referenced later
140
- 5. The overall flow and progression of the conversation
141
-
142
- Keep the summary focused and avoid redundancy. The summary should allow someone to understand the conversation context without reading the full history.`,
143
- prompt: `Please summarize the following conversation:\n\n${conversationText}`,
144
- };
145
-
146
- // Add passthrough options
147
- if (generationOptions) {
148
- Object.assign(generateTextOptions, generationOptions);
149
- }
150
- if (advancedOptions) {
151
- Object.assign(generateTextOptions, advancedOptions);
152
- }
153
-
154
- const result = await generateText(generateTextOptions);
155
- return result.text;
156
- }
157
-
158
- /**
159
- * Summarize older messages when approaching token limits.
160
- *
161
- * This function checks if the total tokens in the messages exceed the threshold.
162
- * If so, it summarizes older messages while keeping recent ones intact.
163
- *
164
- * @param messages - Array of conversation messages
165
- * @param options - Summarization options
166
- * @returns Processed messages with optional summary
167
- *
168
- * @example
169
- * ```typescript
170
- * import { anthropic } from '@ai-sdk/anthropic';
171
- *
172
- * const result = await summarizeIfNeeded(messages, {
173
- * model: anthropic('claude-haiku-4-5-20251001'),
174
- * tokenThreshold: 170000,
175
- * keepMessages: 6,
176
- * });
177
- *
178
- * if (result.summarized) {
179
- * console.log(`Reduced from ${result.tokensBefore} to ${result.tokensAfter} tokens`);
180
- * }
181
- * ```
182
- */
183
- export async function summarizeIfNeeded(
184
- messages: ModelMessage[],
185
- options: SummarizationOptions
186
- ): Promise<SummarizationResult> {
187
- const {
188
- model,
189
- tokenThreshold = DEFAULT_SUMMARIZATION_THRESHOLD,
190
- keepMessages = DEFAULT_KEEP_MESSAGES,
191
- } = options;
192
-
193
- // Estimate current token count
194
- const tokensBefore = estimateMessagesTokens(messages);
195
-
196
- // Check if summarization is needed
197
- if (tokensBefore < tokenThreshold) {
198
- return {
199
- summarized: false,
200
- messages,
201
- tokensBefore,
202
- };
203
- }
204
-
205
- // Not enough messages to summarize
206
- if (messages.length <= keepMessages) {
207
- return {
208
- summarized: false,
209
- messages,
210
- tokensBefore,
211
- };
212
- }
213
-
214
- // Split messages: older ones to summarize, recent ones to keep
215
- const messagesToSummarize = messages.slice(0, -keepMessages);
216
- const messagesToKeep = messages.slice(-keepMessages);
217
-
218
- // Generate summary
219
- const summary = await generateSummary(
220
- messagesToSummarize,
221
- model,
222
- options.generationOptions,
223
- options.advancedOptions
224
- );
225
-
226
- // Create summary message
227
- const summaryMessage: ModelMessage = {
228
- role: "system",
229
- content: `[Previous conversation summary]\n${summary}\n\n[End of summary - recent messages follow]`,
230
- } as ModelMessage;
231
-
232
- // Combine summary with recent messages
233
- const newMessages = [summaryMessage, ...messagesToKeep];
234
- const tokensAfter = estimateMessagesTokens(newMessages);
235
-
236
- return {
237
- summarized: true,
238
- messages: newMessages,
239
- tokensBefore,
240
- tokensAfter,
241
- };
242
- }
243
-
244
- /**
245
- * Check if messages need summarization without performing it.
246
- */
247
- export function needsSummarization(
248
- messages: ModelMessage[],
249
- tokenThreshold: number = DEFAULT_SUMMARIZATION_THRESHOLD
250
- ): boolean {
251
- const tokens = estimateMessagesTokens(messages);
252
- return tokens >= tokenThreshold;
253
- }
254
-