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.
Files changed (112) hide show
  1. package/LICENSE +123 -0
  2. package/NOTICE +45 -0
  3. package/README.md +178 -0
  4. package/dist/auth/index.d.ts +103 -0
  5. package/dist/bus/bus-event.d.ts +10 -0
  6. package/dist/bus/global.d.ts +7 -0
  7. package/dist/bus/index.d.ts +26 -0
  8. package/dist/cli/auth.d.ts +11 -0
  9. package/dist/cli/index.d.ts +1 -0
  10. package/dist/cli/ui.d.ts +26 -0
  11. package/dist/command/index.d.ts +54 -0
  12. package/dist/config/config.d.ts +6756 -0
  13. package/dist/config/index.d.ts +2 -0
  14. package/dist/config/markdown.d.ts +415 -0
  15. package/dist/constants/index.d.ts +9 -0
  16. package/dist/diff/engine.d.ts +15 -0
  17. package/dist/diff/index.d.ts +8 -0
  18. package/dist/diff/types.d.ts +66 -0
  19. package/dist/file/ignore.d.ts +7 -0
  20. package/dist/flag/index.d.ts +19 -0
  21. package/dist/gateway/bridge.d.ts +11 -0
  22. package/dist/gateway/handlers/llm.d.ts +7 -0
  23. package/dist/gateway/handlers/permission.d.ts +15 -0
  24. package/dist/gateway/handlers/session.d.ts +7 -0
  25. package/dist/gateway/handlers/system.d.ts +7 -0
  26. package/dist/gateway/handlers/tool.d.ts +7 -0
  27. package/dist/gateway/index.d.ts +17 -0
  28. package/dist/gateway/protocol.d.ts +159 -0
  29. package/dist/gateway/router.d.ts +7 -0
  30. package/dist/gateway/server.d.ts +24 -0
  31. package/dist/global/index.d.ts +11 -0
  32. package/dist/index.d.ts +2 -0
  33. package/dist/index.js +2 -0
  34. package/dist/permission/index.d.ts +2 -0
  35. package/dist/permission/permission.d.ts +172 -0
  36. package/dist/permission/types.d.ts +109 -0
  37. package/dist/project/index.d.ts +3 -0
  38. package/dist/project/instance.d.ts +33 -0
  39. package/dist/project/project.d.ts +82 -0
  40. package/dist/project/state.d.ts +4 -0
  41. package/dist/prompt/index.d.ts +5 -0
  42. package/dist/prompt/system.d.ts +24 -0
  43. package/dist/provider/index.d.ts +3 -0
  44. package/dist/provider/models.d.ts +17 -0
  45. package/dist/provider/provider.d.ts +844 -0
  46. package/dist/provider/types.d.ts +328 -0
  47. package/dist/session/context-optimization.d.ts +160 -0
  48. package/dist/session/index.d.ts +4 -0
  49. package/dist/session/llm.d.ts +29 -0
  50. package/dist/session/session.d.ts +400 -0
  51. package/dist/session/types.d.ts +544 -0
  52. package/dist/snapshot/index.d.ts +40 -0
  53. package/dist/storage/index.d.ts +1 -0
  54. package/dist/storage/storage.d.ts +34 -0
  55. package/dist/tool/bash.d.ts +19 -0
  56. package/dist/tool/edit.d.ts +21 -0
  57. package/dist/tool/glob.d.ts +15 -0
  58. package/dist/tool/grep.d.ts +20 -0
  59. package/dist/tool/image.d.ts +23 -0
  60. package/dist/tool/index.d.ts +11 -0
  61. package/dist/tool/ls.d.ts +14 -0
  62. package/dist/tool/read.d.ts +17 -0
  63. package/dist/tool/registry.d.ts +30 -0
  64. package/dist/tool/todo.d.ts +76 -0
  65. package/dist/tool/tool.d.ts +65 -0
  66. package/dist/tool/write.d.ts +16 -0
  67. package/dist/tui/App.d.ts +10 -0
  68. package/dist/tui/components/Header.d.ts +12 -0
  69. package/dist/tui/components/Message/AssistantMessage.d.ts +10 -0
  70. package/dist/tui/components/Message/ReasoningMessage.d.ts +20 -0
  71. package/dist/tui/components/Message/ToolCallMessage.d.ts +25 -0
  72. package/dist/tui/components/Message/UserMessage.d.ts +11 -0
  73. package/dist/tui/components/Message/index.d.ts +13 -0
  74. package/dist/tui/components/PermissionPrompt.d.ts +6 -0
  75. package/dist/tui/components/PromptInput.d.ts +32 -0
  76. package/dist/tui/components/REPL.d.ts +17 -0
  77. package/dist/tui/components/Spinner.d.ts +13 -0
  78. package/dist/tui/components/StatusBar.d.ts +12 -0
  79. package/dist/tui/components/TodoList.d.ts +17 -0
  80. package/dist/tui/components/WelcomeBox.d.ts +13 -0
  81. package/dist/tui/components/dialogs/DiagnosticsPanel.d.ts +12 -0
  82. package/dist/tui/components/dialogs/HelpPanel.d.ts +11 -0
  83. package/dist/tui/components/dialogs/ModelSelector.d.ts +14 -0
  84. package/dist/tui/components/dialogs/PermissionPrompt.d.ts +17 -0
  85. package/dist/tui/components/dialogs/SessionPicker.d.ts +15 -0
  86. package/dist/tui/components/dialogs/index.d.ts +10 -0
  87. package/dist/tui/components/diff/DiffHunk.d.ts +12 -0
  88. package/dist/tui/components/diff/DiffLine.d.ts +14 -0
  89. package/dist/tui/components/diff/DiffStats.d.ts +12 -0
  90. package/dist/tui/components/diff/DiffView.d.ts +15 -0
  91. package/dist/tui/components/diff/index.d.ts +9 -0
  92. package/dist/tui/hooks/usePermission.d.ts +26 -0
  93. package/dist/tui/index.d.ts +15 -0
  94. package/dist/tui/theme.d.ts +27 -0
  95. package/dist/tui/utils/Cursor.d.ts +37 -0
  96. package/dist/tui/utils/clipboard.d.ts +3 -0
  97. package/dist/tui/utils/keypress.d.ts +39 -0
  98. package/dist/tui/utils/markdown.d.ts +13 -0
  99. package/dist/tui/utils/openContent.d.ts +22 -0
  100. package/dist/util/context.d.ts +10 -0
  101. package/dist/util/debug.d.ts +51 -0
  102. package/dist/util/error.d.ts +294 -0
  103. package/dist/util/example-commands.d.ts +18 -0
  104. package/dist/util/filesystem.d.ts +17 -0
  105. package/dist/util/id.d.ts +24 -0
  106. package/dist/util/iife.d.ts +1 -0
  107. package/dist/util/index.d.ts +7 -0
  108. package/dist/util/lazy.d.ts +1 -0
  109. package/dist/util/log.d.ts +26 -0
  110. package/dist/util/timeout.d.ts +1 -0
  111. package/dist/util/wildcard.d.ts +8 -0
  112. 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,4 @@
1
+ export * from "./types";
2
+ export { Session } from "./session";
3
+ export { LLM } from "./llm";
4
+ export { ContextOptimization } from "./context-optimization";
@@ -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
+ }