portercode 0.1.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.
- package/LICENSE +123 -0
- package/NOTICE +45 -0
- package/README.md +178 -0
- package/dist/auth/index.d.ts +103 -0
- package/dist/bus/bus-event.d.ts +10 -0
- package/dist/bus/global.d.ts +7 -0
- package/dist/bus/index.d.ts +26 -0
- package/dist/cli/auth.d.ts +11 -0
- package/dist/cli/index.d.ts +1 -0
- package/dist/cli/ui.d.ts +26 -0
- package/dist/command/index.d.ts +54 -0
- package/dist/config/config.d.ts +6756 -0
- package/dist/config/index.d.ts +2 -0
- package/dist/config/markdown.d.ts +415 -0
- package/dist/constants/index.d.ts +9 -0
- package/dist/diff/engine.d.ts +15 -0
- package/dist/diff/index.d.ts +8 -0
- package/dist/diff/types.d.ts +66 -0
- package/dist/file/ignore.d.ts +7 -0
- package/dist/flag/index.d.ts +19 -0
- package/dist/gateway/bridge.d.ts +11 -0
- package/dist/gateway/handlers/llm.d.ts +7 -0
- package/dist/gateway/handlers/permission.d.ts +15 -0
- package/dist/gateway/handlers/session.d.ts +7 -0
- package/dist/gateway/handlers/system.d.ts +7 -0
- package/dist/gateway/handlers/tool.d.ts +7 -0
- package/dist/gateway/index.d.ts +17 -0
- package/dist/gateway/protocol.d.ts +159 -0
- package/dist/gateway/router.d.ts +7 -0
- package/dist/gateway/server.d.ts +24 -0
- package/dist/global/index.d.ts +11 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/permission/index.d.ts +2 -0
- package/dist/permission/permission.d.ts +172 -0
- package/dist/permission/types.d.ts +109 -0
- package/dist/project/index.d.ts +3 -0
- package/dist/project/instance.d.ts +33 -0
- package/dist/project/project.d.ts +82 -0
- package/dist/project/state.d.ts +4 -0
- package/dist/prompt/index.d.ts +5 -0
- package/dist/prompt/system.d.ts +24 -0
- package/dist/provider/index.d.ts +3 -0
- package/dist/provider/models.d.ts +17 -0
- package/dist/provider/provider.d.ts +844 -0
- package/dist/provider/types.d.ts +328 -0
- package/dist/session/context-optimization.d.ts +160 -0
- package/dist/session/index.d.ts +4 -0
- package/dist/session/llm.d.ts +29 -0
- package/dist/session/session.d.ts +400 -0
- package/dist/session/types.d.ts +544 -0
- package/dist/snapshot/index.d.ts +40 -0
- package/dist/storage/index.d.ts +1 -0
- package/dist/storage/storage.d.ts +34 -0
- package/dist/tool/bash.d.ts +19 -0
- package/dist/tool/edit.d.ts +21 -0
- package/dist/tool/glob.d.ts +15 -0
- package/dist/tool/grep.d.ts +20 -0
- package/dist/tool/image.d.ts +23 -0
- package/dist/tool/index.d.ts +11 -0
- package/dist/tool/ls.d.ts +14 -0
- package/dist/tool/read.d.ts +17 -0
- package/dist/tool/registry.d.ts +30 -0
- package/dist/tool/todo.d.ts +76 -0
- package/dist/tool/tool.d.ts +65 -0
- package/dist/tool/write.d.ts +16 -0
- package/dist/tui/App.d.ts +10 -0
- package/dist/tui/components/Header.d.ts +12 -0
- package/dist/tui/components/Message/AssistantMessage.d.ts +10 -0
- package/dist/tui/components/Message/ReasoningMessage.d.ts +20 -0
- package/dist/tui/components/Message/ToolCallMessage.d.ts +25 -0
- package/dist/tui/components/Message/UserMessage.d.ts +11 -0
- package/dist/tui/components/Message/index.d.ts +13 -0
- package/dist/tui/components/PermissionPrompt.d.ts +6 -0
- package/dist/tui/components/PromptInput.d.ts +32 -0
- package/dist/tui/components/REPL.d.ts +17 -0
- package/dist/tui/components/Spinner.d.ts +13 -0
- package/dist/tui/components/StatusBar.d.ts +12 -0
- package/dist/tui/components/TodoList.d.ts +17 -0
- package/dist/tui/components/WelcomeBox.d.ts +13 -0
- package/dist/tui/components/dialogs/DiagnosticsPanel.d.ts +12 -0
- package/dist/tui/components/dialogs/HelpPanel.d.ts +11 -0
- package/dist/tui/components/dialogs/ModelSelector.d.ts +14 -0
- package/dist/tui/components/dialogs/PermissionPrompt.d.ts +17 -0
- package/dist/tui/components/dialogs/SessionPicker.d.ts +15 -0
- package/dist/tui/components/dialogs/index.d.ts +10 -0
- package/dist/tui/components/diff/DiffHunk.d.ts +12 -0
- package/dist/tui/components/diff/DiffLine.d.ts +14 -0
- package/dist/tui/components/diff/DiffStats.d.ts +12 -0
- package/dist/tui/components/diff/DiffView.d.ts +15 -0
- package/dist/tui/components/diff/index.d.ts +9 -0
- package/dist/tui/hooks/usePermission.d.ts +26 -0
- package/dist/tui/index.d.ts +15 -0
- package/dist/tui/theme.d.ts +27 -0
- package/dist/tui/utils/Cursor.d.ts +37 -0
- package/dist/tui/utils/clipboard.d.ts +3 -0
- package/dist/tui/utils/keypress.d.ts +39 -0
- package/dist/tui/utils/markdown.d.ts +13 -0
- package/dist/tui/utils/openContent.d.ts +22 -0
- package/dist/util/context.d.ts +10 -0
- package/dist/util/debug.d.ts +51 -0
- package/dist/util/error.d.ts +294 -0
- package/dist/util/example-commands.d.ts +18 -0
- package/dist/util/filesystem.d.ts +17 -0
- package/dist/util/id.d.ts +24 -0
- package/dist/util/iife.d.ts +1 -0
- package/dist/util/index.d.ts +7 -0
- package/dist/util/lazy.d.ts +1 -0
- package/dist/util/log.d.ts +26 -0
- package/dist/util/timeout.d.ts +1 -0
- package/dist/util/wildcard.d.ts +8 -0
- package/package.json +72 -0
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
import z from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* Model capabilities and configuration types
|
|
4
|
+
*/
|
|
5
|
+
export declare const ModelCapabilities: z.ZodObject<{
|
|
6
|
+
temperature: z.ZodDefault<z.ZodBoolean>;
|
|
7
|
+
reasoning: z.ZodDefault<z.ZodBoolean>;
|
|
8
|
+
vision: z.ZodDefault<z.ZodBoolean>;
|
|
9
|
+
toolUse: z.ZodDefault<z.ZodBoolean>;
|
|
10
|
+
streaming: z.ZodDefault<z.ZodBoolean>;
|
|
11
|
+
}, "strip", z.ZodTypeAny, {
|
|
12
|
+
temperature: boolean;
|
|
13
|
+
reasoning: boolean;
|
|
14
|
+
vision: boolean;
|
|
15
|
+
toolUse: boolean;
|
|
16
|
+
streaming: boolean;
|
|
17
|
+
}, {
|
|
18
|
+
temperature?: boolean | undefined;
|
|
19
|
+
reasoning?: boolean | undefined;
|
|
20
|
+
vision?: boolean | undefined;
|
|
21
|
+
toolUse?: boolean | undefined;
|
|
22
|
+
streaming?: boolean | undefined;
|
|
23
|
+
}>;
|
|
24
|
+
export type ModelCapabilities = z.infer<typeof ModelCapabilities>;
|
|
25
|
+
export declare const ModelCost: z.ZodObject<{
|
|
26
|
+
input: z.ZodNumber;
|
|
27
|
+
output: z.ZodNumber;
|
|
28
|
+
cacheRead: z.ZodOptional<z.ZodNumber>;
|
|
29
|
+
cacheWrite: z.ZodOptional<z.ZodNumber>;
|
|
30
|
+
}, "strip", z.ZodTypeAny, {
|
|
31
|
+
input: number;
|
|
32
|
+
output: number;
|
|
33
|
+
cacheRead?: number | undefined;
|
|
34
|
+
cacheWrite?: number | undefined;
|
|
35
|
+
}, {
|
|
36
|
+
input: number;
|
|
37
|
+
output: number;
|
|
38
|
+
cacheRead?: number | undefined;
|
|
39
|
+
cacheWrite?: number | undefined;
|
|
40
|
+
}>;
|
|
41
|
+
export type ModelCost = z.infer<typeof ModelCost>;
|
|
42
|
+
export declare const ModelLimits: z.ZodObject<{
|
|
43
|
+
context: z.ZodNumber;
|
|
44
|
+
output: z.ZodNumber;
|
|
45
|
+
}, "strip", z.ZodTypeAny, {
|
|
46
|
+
output: number;
|
|
47
|
+
context: number;
|
|
48
|
+
}, {
|
|
49
|
+
output: number;
|
|
50
|
+
context: number;
|
|
51
|
+
}>;
|
|
52
|
+
export type ModelLimits = z.infer<typeof ModelLimits>;
|
|
53
|
+
export declare const ModelInfo: z.ZodObject<{
|
|
54
|
+
id: z.ZodString;
|
|
55
|
+
name: z.ZodString;
|
|
56
|
+
provider: z.ZodString;
|
|
57
|
+
family: z.ZodOptional<z.ZodString>;
|
|
58
|
+
capabilities: z.ZodObject<{
|
|
59
|
+
temperature: z.ZodDefault<z.ZodBoolean>;
|
|
60
|
+
reasoning: z.ZodDefault<z.ZodBoolean>;
|
|
61
|
+
vision: z.ZodDefault<z.ZodBoolean>;
|
|
62
|
+
toolUse: z.ZodDefault<z.ZodBoolean>;
|
|
63
|
+
streaming: z.ZodDefault<z.ZodBoolean>;
|
|
64
|
+
}, "strip", z.ZodTypeAny, {
|
|
65
|
+
temperature: boolean;
|
|
66
|
+
reasoning: boolean;
|
|
67
|
+
vision: boolean;
|
|
68
|
+
toolUse: boolean;
|
|
69
|
+
streaming: boolean;
|
|
70
|
+
}, {
|
|
71
|
+
temperature?: boolean | undefined;
|
|
72
|
+
reasoning?: boolean | undefined;
|
|
73
|
+
vision?: boolean | undefined;
|
|
74
|
+
toolUse?: boolean | undefined;
|
|
75
|
+
streaming?: boolean | undefined;
|
|
76
|
+
}>;
|
|
77
|
+
cost: z.ZodObject<{
|
|
78
|
+
input: z.ZodNumber;
|
|
79
|
+
output: z.ZodNumber;
|
|
80
|
+
cacheRead: z.ZodOptional<z.ZodNumber>;
|
|
81
|
+
cacheWrite: z.ZodOptional<z.ZodNumber>;
|
|
82
|
+
}, "strip", z.ZodTypeAny, {
|
|
83
|
+
input: number;
|
|
84
|
+
output: number;
|
|
85
|
+
cacheRead?: number | undefined;
|
|
86
|
+
cacheWrite?: number | undefined;
|
|
87
|
+
}, {
|
|
88
|
+
input: number;
|
|
89
|
+
output: number;
|
|
90
|
+
cacheRead?: number | undefined;
|
|
91
|
+
cacheWrite?: number | undefined;
|
|
92
|
+
}>;
|
|
93
|
+
limits: z.ZodObject<{
|
|
94
|
+
context: z.ZodNumber;
|
|
95
|
+
output: z.ZodNumber;
|
|
96
|
+
}, "strip", z.ZodTypeAny, {
|
|
97
|
+
output: number;
|
|
98
|
+
context: number;
|
|
99
|
+
}, {
|
|
100
|
+
output: number;
|
|
101
|
+
context: number;
|
|
102
|
+
}>;
|
|
103
|
+
status: z.ZodDefault<z.ZodEnum<["active", "beta", "deprecated"]>>;
|
|
104
|
+
}, "strip", z.ZodTypeAny, {
|
|
105
|
+
status: "active" | "beta" | "deprecated";
|
|
106
|
+
id: string;
|
|
107
|
+
name: string;
|
|
108
|
+
provider: string;
|
|
109
|
+
capabilities: {
|
|
110
|
+
temperature: boolean;
|
|
111
|
+
reasoning: boolean;
|
|
112
|
+
vision: boolean;
|
|
113
|
+
toolUse: boolean;
|
|
114
|
+
streaming: boolean;
|
|
115
|
+
};
|
|
116
|
+
cost: {
|
|
117
|
+
input: number;
|
|
118
|
+
output: number;
|
|
119
|
+
cacheRead?: number | undefined;
|
|
120
|
+
cacheWrite?: number | undefined;
|
|
121
|
+
};
|
|
122
|
+
limits: {
|
|
123
|
+
output: number;
|
|
124
|
+
context: number;
|
|
125
|
+
};
|
|
126
|
+
family?: string | undefined;
|
|
127
|
+
}, {
|
|
128
|
+
id: string;
|
|
129
|
+
name: string;
|
|
130
|
+
provider: string;
|
|
131
|
+
capabilities: {
|
|
132
|
+
temperature?: boolean | undefined;
|
|
133
|
+
reasoning?: boolean | undefined;
|
|
134
|
+
vision?: boolean | undefined;
|
|
135
|
+
toolUse?: boolean | undefined;
|
|
136
|
+
streaming?: boolean | undefined;
|
|
137
|
+
};
|
|
138
|
+
cost: {
|
|
139
|
+
input: number;
|
|
140
|
+
output: number;
|
|
141
|
+
cacheRead?: number | undefined;
|
|
142
|
+
cacheWrite?: number | undefined;
|
|
143
|
+
};
|
|
144
|
+
limits: {
|
|
145
|
+
output: number;
|
|
146
|
+
context: number;
|
|
147
|
+
};
|
|
148
|
+
status?: "active" | "beta" | "deprecated" | undefined;
|
|
149
|
+
family?: string | undefined;
|
|
150
|
+
}>;
|
|
151
|
+
export type ModelInfo = z.infer<typeof ModelInfo>;
|
|
152
|
+
export declare const ProviderInfo: z.ZodObject<{
|
|
153
|
+
id: z.ZodString;
|
|
154
|
+
name: z.ZodString;
|
|
155
|
+
envKeys: z.ZodArray<z.ZodString, "many">;
|
|
156
|
+
models: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
157
|
+
id: z.ZodString;
|
|
158
|
+
name: z.ZodString;
|
|
159
|
+
provider: z.ZodString;
|
|
160
|
+
family: z.ZodOptional<z.ZodString>;
|
|
161
|
+
capabilities: z.ZodObject<{
|
|
162
|
+
temperature: z.ZodDefault<z.ZodBoolean>;
|
|
163
|
+
reasoning: z.ZodDefault<z.ZodBoolean>;
|
|
164
|
+
vision: z.ZodDefault<z.ZodBoolean>;
|
|
165
|
+
toolUse: z.ZodDefault<z.ZodBoolean>;
|
|
166
|
+
streaming: z.ZodDefault<z.ZodBoolean>;
|
|
167
|
+
}, "strip", z.ZodTypeAny, {
|
|
168
|
+
temperature: boolean;
|
|
169
|
+
reasoning: boolean;
|
|
170
|
+
vision: boolean;
|
|
171
|
+
toolUse: boolean;
|
|
172
|
+
streaming: boolean;
|
|
173
|
+
}, {
|
|
174
|
+
temperature?: boolean | undefined;
|
|
175
|
+
reasoning?: boolean | undefined;
|
|
176
|
+
vision?: boolean | undefined;
|
|
177
|
+
toolUse?: boolean | undefined;
|
|
178
|
+
streaming?: boolean | undefined;
|
|
179
|
+
}>;
|
|
180
|
+
cost: z.ZodObject<{
|
|
181
|
+
input: z.ZodNumber;
|
|
182
|
+
output: z.ZodNumber;
|
|
183
|
+
cacheRead: z.ZodOptional<z.ZodNumber>;
|
|
184
|
+
cacheWrite: z.ZodOptional<z.ZodNumber>;
|
|
185
|
+
}, "strip", z.ZodTypeAny, {
|
|
186
|
+
input: number;
|
|
187
|
+
output: number;
|
|
188
|
+
cacheRead?: number | undefined;
|
|
189
|
+
cacheWrite?: number | undefined;
|
|
190
|
+
}, {
|
|
191
|
+
input: number;
|
|
192
|
+
output: number;
|
|
193
|
+
cacheRead?: number | undefined;
|
|
194
|
+
cacheWrite?: number | undefined;
|
|
195
|
+
}>;
|
|
196
|
+
limits: z.ZodObject<{
|
|
197
|
+
context: z.ZodNumber;
|
|
198
|
+
output: z.ZodNumber;
|
|
199
|
+
}, "strip", z.ZodTypeAny, {
|
|
200
|
+
output: number;
|
|
201
|
+
context: number;
|
|
202
|
+
}, {
|
|
203
|
+
output: number;
|
|
204
|
+
context: number;
|
|
205
|
+
}>;
|
|
206
|
+
status: z.ZodDefault<z.ZodEnum<["active", "beta", "deprecated"]>>;
|
|
207
|
+
}, "strip", z.ZodTypeAny, {
|
|
208
|
+
status: "active" | "beta" | "deprecated";
|
|
209
|
+
id: string;
|
|
210
|
+
name: string;
|
|
211
|
+
provider: string;
|
|
212
|
+
capabilities: {
|
|
213
|
+
temperature: boolean;
|
|
214
|
+
reasoning: boolean;
|
|
215
|
+
vision: boolean;
|
|
216
|
+
toolUse: boolean;
|
|
217
|
+
streaming: boolean;
|
|
218
|
+
};
|
|
219
|
+
cost: {
|
|
220
|
+
input: number;
|
|
221
|
+
output: number;
|
|
222
|
+
cacheRead?: number | undefined;
|
|
223
|
+
cacheWrite?: number | undefined;
|
|
224
|
+
};
|
|
225
|
+
limits: {
|
|
226
|
+
output: number;
|
|
227
|
+
context: number;
|
|
228
|
+
};
|
|
229
|
+
family?: string | undefined;
|
|
230
|
+
}, {
|
|
231
|
+
id: string;
|
|
232
|
+
name: string;
|
|
233
|
+
provider: string;
|
|
234
|
+
capabilities: {
|
|
235
|
+
temperature?: boolean | undefined;
|
|
236
|
+
reasoning?: boolean | undefined;
|
|
237
|
+
vision?: boolean | undefined;
|
|
238
|
+
toolUse?: boolean | undefined;
|
|
239
|
+
streaming?: boolean | undefined;
|
|
240
|
+
};
|
|
241
|
+
cost: {
|
|
242
|
+
input: number;
|
|
243
|
+
output: number;
|
|
244
|
+
cacheRead?: number | undefined;
|
|
245
|
+
cacheWrite?: number | undefined;
|
|
246
|
+
};
|
|
247
|
+
limits: {
|
|
248
|
+
output: number;
|
|
249
|
+
context: number;
|
|
250
|
+
};
|
|
251
|
+
status?: "active" | "beta" | "deprecated" | undefined;
|
|
252
|
+
family?: string | undefined;
|
|
253
|
+
}>>;
|
|
254
|
+
}, "strip", z.ZodTypeAny, {
|
|
255
|
+
id: string;
|
|
256
|
+
name: string;
|
|
257
|
+
envKeys: string[];
|
|
258
|
+
models: Record<string, {
|
|
259
|
+
status: "active" | "beta" | "deprecated";
|
|
260
|
+
id: string;
|
|
261
|
+
name: string;
|
|
262
|
+
provider: string;
|
|
263
|
+
capabilities: {
|
|
264
|
+
temperature: boolean;
|
|
265
|
+
reasoning: boolean;
|
|
266
|
+
vision: boolean;
|
|
267
|
+
toolUse: boolean;
|
|
268
|
+
streaming: boolean;
|
|
269
|
+
};
|
|
270
|
+
cost: {
|
|
271
|
+
input: number;
|
|
272
|
+
output: number;
|
|
273
|
+
cacheRead?: number | undefined;
|
|
274
|
+
cacheWrite?: number | undefined;
|
|
275
|
+
};
|
|
276
|
+
limits: {
|
|
277
|
+
output: number;
|
|
278
|
+
context: number;
|
|
279
|
+
};
|
|
280
|
+
family?: string | undefined;
|
|
281
|
+
}>;
|
|
282
|
+
}, {
|
|
283
|
+
id: string;
|
|
284
|
+
name: string;
|
|
285
|
+
envKeys: string[];
|
|
286
|
+
models: Record<string, {
|
|
287
|
+
id: string;
|
|
288
|
+
name: string;
|
|
289
|
+
provider: string;
|
|
290
|
+
capabilities: {
|
|
291
|
+
temperature?: boolean | undefined;
|
|
292
|
+
reasoning?: boolean | undefined;
|
|
293
|
+
vision?: boolean | undefined;
|
|
294
|
+
toolUse?: boolean | undefined;
|
|
295
|
+
streaming?: boolean | undefined;
|
|
296
|
+
};
|
|
297
|
+
cost: {
|
|
298
|
+
input: number;
|
|
299
|
+
output: number;
|
|
300
|
+
cacheRead?: number | undefined;
|
|
301
|
+
cacheWrite?: number | undefined;
|
|
302
|
+
};
|
|
303
|
+
limits: {
|
|
304
|
+
output: number;
|
|
305
|
+
context: number;
|
|
306
|
+
};
|
|
307
|
+
status?: "active" | "beta" | "deprecated" | undefined;
|
|
308
|
+
family?: string | undefined;
|
|
309
|
+
}>;
|
|
310
|
+
}>;
|
|
311
|
+
export type ProviderInfo = z.infer<typeof ProviderInfo>;
|
|
312
|
+
/**
|
|
313
|
+
* Provider configuration from user config
|
|
314
|
+
*/
|
|
315
|
+
export declare const ProviderConfig: z.ZodObject<{
|
|
316
|
+
apiKey: z.ZodOptional<z.ZodString>;
|
|
317
|
+
baseUrl: z.ZodOptional<z.ZodString>;
|
|
318
|
+
options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
319
|
+
}, "strip", z.ZodTypeAny, {
|
|
320
|
+
options?: Record<string, any> | undefined;
|
|
321
|
+
apiKey?: string | undefined;
|
|
322
|
+
baseUrl?: string | undefined;
|
|
323
|
+
}, {
|
|
324
|
+
options?: Record<string, any> | undefined;
|
|
325
|
+
apiKey?: string | undefined;
|
|
326
|
+
baseUrl?: string | undefined;
|
|
327
|
+
}>;
|
|
328
|
+
export type ProviderConfig = z.infer<typeof ProviderConfig>;
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context Optimization Module
|
|
3
|
+
*
|
|
4
|
+
* Handles context overflow detection, pruning, and auto-compaction.
|
|
5
|
+
* Based on code-cli/opencode methodology:
|
|
6
|
+
* - Overflow: triggers when tokens > (context_limit - output_max)
|
|
7
|
+
* - Pruning: removes old tool outputs (20k min savings, 40k protected)
|
|
8
|
+
* - Compaction: generates summary to reduce context
|
|
9
|
+
*/
|
|
10
|
+
export interface TokenUsage {
|
|
11
|
+
input: number;
|
|
12
|
+
output: number;
|
|
13
|
+
cacheRead?: number;
|
|
14
|
+
cacheWrite?: number;
|
|
15
|
+
}
|
|
16
|
+
export interface OverflowCheckOptions {
|
|
17
|
+
tokens: TokenUsage;
|
|
18
|
+
contextLimit: number;
|
|
19
|
+
outputLimit?: number;
|
|
20
|
+
autoEnabled: boolean;
|
|
21
|
+
}
|
|
22
|
+
export interface ContextPercentageOptions {
|
|
23
|
+
tokens: TokenUsage;
|
|
24
|
+
contextLimit: number;
|
|
25
|
+
}
|
|
26
|
+
export interface ToolResultPart {
|
|
27
|
+
type: "tool-result";
|
|
28
|
+
id: string;
|
|
29
|
+
messageId: string;
|
|
30
|
+
sessionId: string;
|
|
31
|
+
toolCallId: string;
|
|
32
|
+
toolName?: string;
|
|
33
|
+
output: string;
|
|
34
|
+
metadata?: {
|
|
35
|
+
tokenEstimate?: number;
|
|
36
|
+
[key: string]: unknown;
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
export interface PrunablePartInfo {
|
|
40
|
+
part: ToolResultPart;
|
|
41
|
+
tokens: number;
|
|
42
|
+
}
|
|
43
|
+
export interface PruningAnalysis {
|
|
44
|
+
prunableParts: PrunablePartInfo[];
|
|
45
|
+
potentialSavings: number;
|
|
46
|
+
totalTokens: number;
|
|
47
|
+
}
|
|
48
|
+
export interface CompactionCheckOptions {
|
|
49
|
+
isOverflow: boolean;
|
|
50
|
+
potentialPruneSavings: number;
|
|
51
|
+
}
|
|
52
|
+
export interface SimpleMessage {
|
|
53
|
+
role: "user" | "assistant" | "system";
|
|
54
|
+
content: string;
|
|
55
|
+
}
|
|
56
|
+
export interface CompactedMessage {
|
|
57
|
+
role: "user";
|
|
58
|
+
content: string;
|
|
59
|
+
isCompacted: true;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Context Optimization - Static utilities for managing context window
|
|
63
|
+
*/
|
|
64
|
+
export declare const ContextOptimization: {
|
|
65
|
+
/**
|
|
66
|
+
* Minimum token savings required to trigger pruning
|
|
67
|
+
* Must save at least 20,000 tokens to be worth pruning
|
|
68
|
+
*/
|
|
69
|
+
PRUNE_MINIMUM: number;
|
|
70
|
+
/**
|
|
71
|
+
* Token threshold for protecting recent content from pruning
|
|
72
|
+
* Last 40,000 tokens are protected from removal
|
|
73
|
+
*/
|
|
74
|
+
PRUNE_PROTECT: number;
|
|
75
|
+
/**
|
|
76
|
+
* Maximum output tokens to reserve for model response
|
|
77
|
+
* Matches Claude's typical max output
|
|
78
|
+
*/
|
|
79
|
+
OUTPUT_TOKEN_MAX: number;
|
|
80
|
+
/**
|
|
81
|
+
* Tools whose outputs should never be pruned
|
|
82
|
+
* Skills are protected because they may contain important state
|
|
83
|
+
*/
|
|
84
|
+
PROTECTED_TOOLS: readonly ["skill"];
|
|
85
|
+
/**
|
|
86
|
+
* Warning threshold percentage (60%)
|
|
87
|
+
*/
|
|
88
|
+
WARNING_THRESHOLD: number;
|
|
89
|
+
/**
|
|
90
|
+
* Critical threshold percentage (80%)
|
|
91
|
+
*/
|
|
92
|
+
CRITICAL_THRESHOLD: number;
|
|
93
|
+
/**
|
|
94
|
+
* Check if context is overflowing
|
|
95
|
+
* Overflow occurs when total tokens exceed usable context
|
|
96
|
+
* (context_limit - output_reserved)
|
|
97
|
+
*/
|
|
98
|
+
isOverflow(options: OverflowCheckOptions): boolean;
|
|
99
|
+
/**
|
|
100
|
+
* Calculate usable context after reserving space for output
|
|
101
|
+
* Uses the smaller of OUTPUT_TOKEN_MAX or model's output limit
|
|
102
|
+
*/
|
|
103
|
+
calculateUsableContext(contextLimit: number, outputLimit?: number): number;
|
|
104
|
+
/**
|
|
105
|
+
* Calculate percentage of context window used
|
|
106
|
+
*/
|
|
107
|
+
getContextPercentage(options: ContextPercentageOptions): number;
|
|
108
|
+
/**
|
|
109
|
+
* Check if we should show a warning (60%+ usage)
|
|
110
|
+
*/
|
|
111
|
+
shouldWarn(percentage: number): boolean;
|
|
112
|
+
/**
|
|
113
|
+
* Check if we should show critical warning (80%+ usage)
|
|
114
|
+
*/
|
|
115
|
+
shouldShowCritical(percentage: number): boolean;
|
|
116
|
+
/**
|
|
117
|
+
* Check if pruning would be worthwhile
|
|
118
|
+
* Only prune if we can save at least PRUNE_MINIMUM tokens
|
|
119
|
+
*/
|
|
120
|
+
shouldPrune(potentialSavings: number): boolean;
|
|
121
|
+
/**
|
|
122
|
+
* Check if a tool's output should be protected from pruning
|
|
123
|
+
*/
|
|
124
|
+
isProtectedTool(toolName: string): boolean;
|
|
125
|
+
/**
|
|
126
|
+
* Calculate total tokens from usage object
|
|
127
|
+
* Includes input, output, and cache tokens
|
|
128
|
+
*/
|
|
129
|
+
calculateTotalTokens(tokens: TokenUsage): number;
|
|
130
|
+
/**
|
|
131
|
+
* Estimate tokens from text content
|
|
132
|
+
* Uses ~4 characters per token as a rough estimate
|
|
133
|
+
*/
|
|
134
|
+
estimateTokens(text: string): number;
|
|
135
|
+
/**
|
|
136
|
+
* Analyze parts to find prunable tool results
|
|
137
|
+
* Protects recent content (within PRUNE_PROTECT threshold)
|
|
138
|
+
* and outputs from protected tools
|
|
139
|
+
*/
|
|
140
|
+
analyzePrunableParts(parts: ToolResultPart[]): PruningAnalysis;
|
|
141
|
+
/**
|
|
142
|
+
* Prune content by truncating long outputs
|
|
143
|
+
* Keeps first few and last few lines for context
|
|
144
|
+
*/
|
|
145
|
+
pruneContent(output: string, maxLength?: number): string;
|
|
146
|
+
/**
|
|
147
|
+
* Determine if compaction is needed
|
|
148
|
+
* Returns true if overflow and pruning won't save enough
|
|
149
|
+
*/
|
|
150
|
+
shouldCompact(options: CompactionCheckOptions): boolean;
|
|
151
|
+
/**
|
|
152
|
+
* Generate the prompt for creating a conversation summary
|
|
153
|
+
*/
|
|
154
|
+
getCompactionPrompt(messages: SimpleMessage[]): string;
|
|
155
|
+
/**
|
|
156
|
+
* Create a compacted message from a summary
|
|
157
|
+
*/
|
|
158
|
+
createCompactedMessage(summary: string): CompactedMessage;
|
|
159
|
+
};
|
|
160
|
+
export type { OverflowCheckOptions as ContextOverflowOptions };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { streamText, type ModelMessage, type Tool } from "ai";
|
|
2
|
+
import type { ModelInfo } from "../provider/types";
|
|
3
|
+
export declare namespace LLM {
|
|
4
|
+
interface StreamOptions {
|
|
5
|
+
sessionId: string;
|
|
6
|
+
model: ModelInfo;
|
|
7
|
+
messages: ModelMessage[];
|
|
8
|
+
system?: string[];
|
|
9
|
+
tools?: Record<string, Tool>;
|
|
10
|
+
temperature?: number;
|
|
11
|
+
maxTokens?: number;
|
|
12
|
+
signal?: AbortSignal;
|
|
13
|
+
}
|
|
14
|
+
interface StreamResult {
|
|
15
|
+
stream: AsyncIterable<any>;
|
|
16
|
+
response: Promise<any>;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Stream a response from the LLM
|
|
20
|
+
*/
|
|
21
|
+
function stream(options: StreamOptions): Promise<ReturnType<typeof streamText>>;
|
|
22
|
+
/**
|
|
23
|
+
* Calculate token usage cost
|
|
24
|
+
*/
|
|
25
|
+
function calculateCost(model: ModelInfo, usage: {
|
|
26
|
+
inputTokens?: number;
|
|
27
|
+
outputTokens?: number;
|
|
28
|
+
}): number;
|
|
29
|
+
}
|