@linnlabs/linnkit 0.8.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 (123) hide show
  1. package/CHANGELOG.md +84 -0
  2. package/LICENSE +21 -0
  3. package/README.md +178 -0
  4. package/README.zh-CN.md +182 -0
  5. package/dist/agent-invocation-BHcNfrBV.d.cts +30 -0
  6. package/dist/agent-invocation-BznDaXDs.d.ts +30 -0
  7. package/dist/agentEvents-DEB7Fy_J.d.cts +81 -0
  8. package/dist/agentEvents-DEB7Fy_J.d.ts +81 -0
  9. package/dist/agentSpec-EkmviZjy.d.cts +2621 -0
  10. package/dist/agentSpec-EkmviZjy.d.ts +2621 -0
  11. package/dist/ai-engine.types-BpeU_XQG.d.cts +158 -0
  12. package/dist/ai-engine.types-vZRnQcJa.d.ts +158 -0
  13. package/dist/audit-BaRUGaqv.d.cts +307 -0
  14. package/dist/audit-BaRUGaqv.d.ts +307 -0
  15. package/dist/audit-CtcfART1.d.ts +33 -0
  16. package/dist/audit-LeOrm2hX.d.cts +33 -0
  17. package/dist/checkpointMarker-DAI3wUQu.d.cts +8 -0
  18. package/dist/checkpointMarker-DAI3wUQu.d.ts +8 -0
  19. package/dist/cli.cjs +8028 -0
  20. package/dist/cli.cjs.map +1 -0
  21. package/dist/cli.d.cts +4 -0
  22. package/dist/cli.d.ts +4 -0
  23. package/dist/cli.js +8025 -0
  24. package/dist/cli.js.map +1 -0
  25. package/dist/context-manager.cjs +8704 -0
  26. package/dist/context-manager.cjs.map +1 -0
  27. package/dist/context-manager.d.cts +2190 -0
  28. package/dist/context-manager.d.ts +2190 -0
  29. package/dist/context-manager.js +8650 -0
  30. package/dist/context-manager.js.map +1 -0
  31. package/dist/context-trace-DRi5M4lX.d.ts +239 -0
  32. package/dist/context-trace-HE2qY5Q-.d.cts +239 -0
  33. package/dist/contracts.cjs +1333 -0
  34. package/dist/contracts.cjs.map +1 -0
  35. package/dist/contracts.d.cts +8 -0
  36. package/dist/contracts.d.ts +8 -0
  37. package/dist/contracts.js +1214 -0
  38. package/dist/contracts.js.map +1 -0
  39. package/dist/defaultGraphExecutor-BBswR8wn.d.ts +624 -0
  40. package/dist/defaultGraphExecutor-BIjJj7WF.d.cts +624 -0
  41. package/dist/execution-CAIypb41.d.cts +129 -0
  42. package/dist/execution-CAIypb41.d.ts +129 -0
  43. package/dist/index-CHqwkvGp.d.ts +149 -0
  44. package/dist/index-CJeWHopy.d.ts +584 -0
  45. package/dist/index-Cm-JbzTH.d.cts +1450 -0
  46. package/dist/index-Cvr23YCl.d.cts +23 -0
  47. package/dist/index-DDzuSb0n.d.ts +23 -0
  48. package/dist/index-DO4dQgf2.d.cts +584 -0
  49. package/dist/index-DRBWi1fy.d.ts +1450 -0
  50. package/dist/index-Dl5PLgAv.d.cts +149 -0
  51. package/dist/index.cjs +9577 -0
  52. package/dist/index.cjs.map +1 -0
  53. package/dist/index.d.cts +89 -0
  54. package/dist/index.d.ts +89 -0
  55. package/dist/index.js +9563 -0
  56. package/dist/index.js.map +1 -0
  57. package/dist/messages-XthmnHZ3.d.cts +8007 -0
  58. package/dist/messages-XthmnHZ3.d.ts +8007 -0
  59. package/dist/ports-DaatKJXp.d.cts +90 -0
  60. package/dist/ports-DnLuKfpE.d.ts +90 -0
  61. package/dist/ports.cjs +4 -0
  62. package/dist/ports.cjs.map +1 -0
  63. package/dist/ports.d.cts +7 -0
  64. package/dist/ports.d.ts +7 -0
  65. package/dist/ports.js +3 -0
  66. package/dist/ports.js.map +1 -0
  67. package/dist/quickstart.cjs +7697 -0
  68. package/dist/quickstart.cjs.map +1 -0
  69. package/dist/quickstart.d.cts +24 -0
  70. package/dist/quickstart.d.ts +24 -0
  71. package/dist/quickstart.js +7691 -0
  72. package/dist/quickstart.js.map +1 -0
  73. package/dist/runAgent-CPj_9e58.d.ts +88 -0
  74. package/dist/runAgent-HYKlXbVr.d.cts +88 -0
  75. package/dist/runHandle-CyXvzgzk.d.ts +239 -0
  76. package/dist/runHandle-D3gPsD7B.d.cts +239 -0
  77. package/dist/runtime-kernel/events.cjs +1485 -0
  78. package/dist/runtime-kernel/events.cjs.map +1 -0
  79. package/dist/runtime-kernel/events.d.cts +8 -0
  80. package/dist/runtime-kernel/events.d.ts +8 -0
  81. package/dist/runtime-kernel/events.js +1475 -0
  82. package/dist/runtime-kernel/events.js.map +1 -0
  83. package/dist/runtime-kernel.cjs +8656 -0
  84. package/dist/runtime-kernel.cjs.map +1 -0
  85. package/dist/runtime-kernel.d.cts +19 -0
  86. package/dist/runtime-kernel.d.ts +19 -0
  87. package/dist/runtime-kernel.js +8568 -0
  88. package/dist/runtime-kernel.js.map +1 -0
  89. package/dist/sse-vPyrOPa0.d.cts +1687 -0
  90. package/dist/sse-vPyrOPa0.d.ts +1687 -0
  91. package/dist/testkit.cjs +10613 -0
  92. package/dist/testkit.cjs.map +1 -0
  93. package/dist/testkit.d.cts +284 -0
  94. package/dist/testkit.d.ts +284 -0
  95. package/dist/testkit.js +10593 -0
  96. package/dist/testkit.js.map +1 -0
  97. package/dist/todo-B1PmDlp3.d.cts +2253 -0
  98. package/dist/todo-B1PmDlp3.d.ts +2253 -0
  99. package/dist/tokenizer-DFL4I7-I.d.ts +28 -0
  100. package/dist/tokenizer-DH_JXv-H.d.cts +28 -0
  101. package/dist/toolContracts-Blll0241.d.ts +463 -0
  102. package/dist/toolContracts-CLkQmhTG.d.cts +463 -0
  103. package/docs/README.md +76 -0
  104. package/docs/integration/01-installation.md +94 -0
  105. package/docs/integration/02-quickstart.md +104 -0
  106. package/docs/integration/README.md +223 -0
  107. package/docs/integration/agent-registration-guide.md +330 -0
  108. package/docs/integration/audit.md +64 -0
  109. package/docs/integration/child-runs.md +87 -0
  110. package/docs/integration/constraints-and-pitfalls.md +87 -0
  111. package/docs/integration/context-engineering.md +650 -0
  112. package/docs/integration/context-fences.md +289 -0
  113. package/docs/integration/glossary.md +69 -0
  114. package/docs/integration/llm-provider.md +76 -0
  115. package/docs/integration/persistence.md +44 -0
  116. package/docs/integration/realtime.md +76 -0
  117. package/docs/integration/run-supervisor.md +69 -0
  118. package/docs/integration/telemetry.md +48 -0
  119. package/docs/integration/testing.md +95 -0
  120. package/docs/integration/tool-development-guide.md +362 -0
  121. package/docs/integration/tool-history.md +202 -0
  122. package/docs/integration/tools.md +188 -0
  123. package/package.json +115 -0
@@ -0,0 +1,239 @@
1
+ import { A as AiMessage } from './messages-XthmnHZ3.js';
2
+ import { g as AgentSpecContextTracePolicy, e as AgentSpecContextPolicy } from './agentSpec-EkmviZjy.js';
3
+ import { e as RuntimeEvent } from './todo-B1PmDlp3.js';
4
+
5
+ type MessageType = AiMessage['type'];
6
+ type MessageRole = AiMessage['role'];
7
+ interface ChatMessage {
8
+ id?: string;
9
+ timestamp?: number;
10
+ role: MessageRole;
11
+ content: string;
12
+ type?: MessageType;
13
+ name?: string;
14
+ metadata?: Record<string, unknown>;
15
+ }
16
+ interface ChatProjectMetadata {
17
+ id?: string;
18
+ name?: string;
19
+ description?: string;
20
+ }
21
+ interface ChatDocumentMetadata {
22
+ id?: string;
23
+ title?: string;
24
+ }
25
+ interface ChatUserQuote {
26
+ text: string;
27
+ source?: Record<string, unknown>;
28
+ displayLabel?: string;
29
+ }
30
+ interface RecentRejection {
31
+ suggestionText: string;
32
+ userContinuedWith?: string;
33
+ }
34
+ interface GenerateRequest {
35
+ prompt: string;
36
+ promptKey: string;
37
+ conversationHistory?: ChatMessage[];
38
+ contextBefore?: string;
39
+ contextAfter?: string;
40
+ currentBlockContent?: string;
41
+ current_paragraph?: string;
42
+ documentFragment?: string;
43
+ modelId?: string;
44
+ conversationId?: string;
45
+ projectMetadata?: ChatProjectMetadata;
46
+ documentMetadata?: ChatDocumentMetadata;
47
+ userQuote?: ChatUserQuote;
48
+ completionLengthHint?: string;
49
+ recentRejections?: RecentRejection[];
50
+ intentKey?: 'continue_paragraph' | 'list_next_item' | 'bridge_to_suffix_delimiter' | 'rewrite_after_large_delete' | 'structure_editing';
51
+ intentConfidence?: number;
52
+ intentConstraints?: string[];
53
+ behaviorSummary?: {
54
+ totalEvents: number;
55
+ totalInsertedChars: number;
56
+ totalDeletedChars: number;
57
+ recentDeletedChars?: number;
58
+ hasLargeRecentDelete?: boolean;
59
+ typingSpeedCps?: number;
60
+ };
61
+ }
62
+ interface GenerateResponse {
63
+ generatedText: string;
64
+ }
65
+
66
+ interface MessageProcessingState {
67
+ message: AiMessage;
68
+ originalIndex: number;
69
+ action: 'keep_core' | 'keep_working_memory' | 'summarize' | 'skip';
70
+ tokens: number;
71
+ processedContent?: string;
72
+ contentType?: 'full' | 'final_answer_only' | 'thinking_only';
73
+ phase?: string;
74
+ replacementSourceIds?: string[];
75
+ }
76
+ interface SummarizationCallbacks {
77
+ onSummarizationStart?: () => void;
78
+ onSummarizationEnd?: (info: {
79
+ originalMessageCount: number;
80
+ summaryTokenCount?: number;
81
+ newSummaryId?: string;
82
+ summaryEvent?: RuntimeEvent;
83
+ }) => void;
84
+ onSummarizationError?: (error: Error) => void;
85
+ }
86
+ interface ProviderContext<TConfig = unknown> {
87
+ totalBudget: number;
88
+ config: TConfig;
89
+ debugMode: boolean;
90
+ estimateTokens: (message: AiMessage) => number;
91
+ summarizationCallbacks?: SummarizationCallbacks;
92
+ /**
93
+ * Host 注入的注册式 AI 调用入口。
94
+ *
95
+ * 中文备注:调用方必须通过 request.promptKey / agentId 解析已注册 agent/chat;
96
+ * framework 不应在 Provider 内直接发起裸 LLM call。
97
+ */
98
+ generate?: (request: GenerateRequest) => Promise<GenerateResponse>;
99
+ }
100
+ interface ProviderResult {
101
+ states: MessageProcessingState[];
102
+ tokensUsed: number;
103
+ strategiesApplied: string[];
104
+ stats: {
105
+ processedCount: number;
106
+ skippedCount: number;
107
+ addedCount: number;
108
+ };
109
+ events?: RuntimeEvent[];
110
+ }
111
+ declare const TOOL_HISTORY_OVERFLOW_ERROR_CODE: "TOOL_HISTORY_OVERFLOW";
112
+ declare const SUMMARIZATION_FAILED_ERROR_CODE: "SUMMARIZATION_FAILED";
113
+ type ContextProviderErrorCode = 'context_provider_failed' | typeof SUMMARIZATION_FAILED_ERROR_CODE | typeof TOOL_HISTORY_OVERFLOW_ERROR_CODE;
114
+ interface ContextProviderErrorOptions {
115
+ code: ContextProviderErrorCode;
116
+ fatal?: boolean;
117
+ providerName: string;
118
+ message: string;
119
+ cause?: unknown;
120
+ }
121
+ /**
122
+ * Provider 内部向 pipeline 传递的结构化错误。
123
+ *
124
+ * 中文备注:
125
+ * - pipeline 只能依赖 code/fatal 这类稳定字段做控制流判断;
126
+ * - message 只用于日志和用户可见错误,不再承担协议语义。
127
+ */
128
+ declare class ContextProviderError extends Error {
129
+ readonly code: ContextProviderErrorCode;
130
+ readonly fatal: boolean;
131
+ readonly providerName: string;
132
+ readonly cause?: unknown;
133
+ constructor(options: ContextProviderErrorOptions);
134
+ }
135
+ declare function isContextProviderError(error: unknown): error is ContextProviderError;
136
+ interface IContextProvider<TConfig = unknown> {
137
+ readonly name: string;
138
+ readonly description: string;
139
+ readonly priority: number;
140
+ provide(states: MessageProcessingState[], availableBudget: number, context: ProviderContext<TConfig>): Promise<ProviderResult>;
141
+ shouldSkip?(states: MessageProcessingState[], availableBudget: number, context: ProviderContext<TConfig>): boolean;
142
+ }
143
+ declare abstract class BaseContextProvider<TConfig = unknown> implements IContextProvider<TConfig> {
144
+ abstract readonly name: string;
145
+ abstract readonly description: string;
146
+ abstract readonly priority: number;
147
+ abstract provide(states: MessageProcessingState[], availableBudget: number, context: ProviderContext<TConfig>): Promise<ProviderResult>;
148
+ shouldSkip(_states: MessageProcessingState[], availableBudget: number, _context: ProviderContext<TConfig>): boolean;
149
+ protected debug(message: string, data?: Record<string, unknown>, context?: ProviderContext<TConfig>): void;
150
+ protected createResult(states: MessageProcessingState[], tokensUsed?: number, strategiesApplied?: string[], stats?: {
151
+ processedCount: number;
152
+ skippedCount: number;
153
+ addedCount: number;
154
+ }, events?: RuntimeEvent[]): ProviderResult;
155
+ }
156
+
157
+ type ContextTraceEvent = ContextTraceProviderEvent | ContextTraceMessageDecisionEvent;
158
+ interface ContextTraceProviderEvent {
159
+ kind: 'provider';
160
+ providerName: string;
161
+ skipped: boolean;
162
+ durationMs: number;
163
+ beforeTokens: number;
164
+ afterTokens: number;
165
+ tokenDelta: number;
166
+ tokensUsed: number;
167
+ beforeKeptCount: number;
168
+ afterKeptCount: number;
169
+ strategiesApplied: string[];
170
+ remainingBudget: number;
171
+ }
172
+ interface ContextTraceMessageDecisionEvent {
173
+ kind: 'message-decision';
174
+ originalIndex: number;
175
+ messageId?: string;
176
+ role: AiMessage['role'];
177
+ type: AiMessage['type'];
178
+ action: MessageProcessingState['action'];
179
+ phase?: string;
180
+ tokens: number;
181
+ kept: boolean;
182
+ reason: string;
183
+ replacementSourceIds?: string[];
184
+ }
185
+ interface ContextTrace {
186
+ enabled: true;
187
+ includeMessageIds: boolean;
188
+ includeTokenBreakdown: boolean;
189
+ maxTraceEvents: number;
190
+ overflowed: boolean;
191
+ effectivePolicy?: AgentSpecContextPolicy;
192
+ totalBudget: number;
193
+ originalCount: number;
194
+ finalCount: number;
195
+ finalTokens: number;
196
+ truncated: boolean;
197
+ events: ContextTraceEvent[];
198
+ }
199
+ interface ContextTraceCollectorOptions {
200
+ policy?: AgentSpecContextTracePolicy;
201
+ effectivePolicy?: AgentSpecContextPolicy;
202
+ totalBudget: number;
203
+ originalCount: number;
204
+ }
205
+ interface ProviderTraceInput {
206
+ providerName: string;
207
+ skipped: boolean;
208
+ durationMs: number;
209
+ beforeStates: ReadonlyArray<MessageProcessingState>;
210
+ afterStates: ReadonlyArray<MessageProcessingState>;
211
+ tokensUsed: number;
212
+ strategiesApplied: readonly string[];
213
+ remainingBudget: number;
214
+ }
215
+ /**
216
+ * ContextTrace 的最小采集器。
217
+ *
218
+ * 中文备注:
219
+ * - trace 只描述“本次上下文构建如何选择消息”,不进入 LLM 输入;
220
+ * - 采集器内部做 maxTraceEvents 限流,避免观测数据反过来膨胀。
221
+ */
222
+ declare class ContextTraceCollector {
223
+ private readonly includeMessageIds;
224
+ private readonly includeTokenBreakdown;
225
+ private readonly maxTraceEvents;
226
+ private readonly effectivePolicy?;
227
+ private readonly totalBudget;
228
+ private readonly originalCount;
229
+ private readonly events;
230
+ private overflowed;
231
+ private constructor();
232
+ static create(options: ContextTraceCollectorOptions): ContextTraceCollector | undefined;
233
+ recordProvider(input: ProviderTraceInput): void;
234
+ recordMessageDecisions(states: ReadonlyArray<MessageProcessingState>): void;
235
+ build(finalMessages: ReadonlyArray<AiMessage>, finalTokens: number): ContextTrace;
236
+ private push;
237
+ }
238
+
239
+ export { BaseContextProvider as B, type ChatMessage as C, type GenerateRequest as G, type IContextProvider as I, type MessageProcessingState as M, type ProviderContext as P, type RecentRejection as R, type SummarizationCallbacks as S, TOOL_HISTORY_OVERFLOW_ERROR_CODE as T, type ProviderResult as a, ContextTraceCollector as b, type GenerateResponse as c, type ContextTrace as d, type ChatDocumentMetadata as e, type ChatProjectMetadata as f, type ChatUserQuote as g, ContextProviderError as h, type ContextProviderErrorCode as i, type ContextProviderErrorOptions as j, type ContextTraceEvent as k, type ContextTraceMessageDecisionEvent as l, type ContextTraceProviderEvent as m, type MessageRole as n, type MessageType as o, SUMMARIZATION_FAILED_ERROR_CODE as p, isContextProviderError as q };
@@ -0,0 +1,239 @@
1
+ import { A as AiMessage } from './messages-XthmnHZ3.cjs';
2
+ import { g as AgentSpecContextTracePolicy, e as AgentSpecContextPolicy } from './agentSpec-EkmviZjy.cjs';
3
+ import { e as RuntimeEvent } from './todo-B1PmDlp3.cjs';
4
+
5
+ type MessageType = AiMessage['type'];
6
+ type MessageRole = AiMessage['role'];
7
+ interface ChatMessage {
8
+ id?: string;
9
+ timestamp?: number;
10
+ role: MessageRole;
11
+ content: string;
12
+ type?: MessageType;
13
+ name?: string;
14
+ metadata?: Record<string, unknown>;
15
+ }
16
+ interface ChatProjectMetadata {
17
+ id?: string;
18
+ name?: string;
19
+ description?: string;
20
+ }
21
+ interface ChatDocumentMetadata {
22
+ id?: string;
23
+ title?: string;
24
+ }
25
+ interface ChatUserQuote {
26
+ text: string;
27
+ source?: Record<string, unknown>;
28
+ displayLabel?: string;
29
+ }
30
+ interface RecentRejection {
31
+ suggestionText: string;
32
+ userContinuedWith?: string;
33
+ }
34
+ interface GenerateRequest {
35
+ prompt: string;
36
+ promptKey: string;
37
+ conversationHistory?: ChatMessage[];
38
+ contextBefore?: string;
39
+ contextAfter?: string;
40
+ currentBlockContent?: string;
41
+ current_paragraph?: string;
42
+ documentFragment?: string;
43
+ modelId?: string;
44
+ conversationId?: string;
45
+ projectMetadata?: ChatProjectMetadata;
46
+ documentMetadata?: ChatDocumentMetadata;
47
+ userQuote?: ChatUserQuote;
48
+ completionLengthHint?: string;
49
+ recentRejections?: RecentRejection[];
50
+ intentKey?: 'continue_paragraph' | 'list_next_item' | 'bridge_to_suffix_delimiter' | 'rewrite_after_large_delete' | 'structure_editing';
51
+ intentConfidence?: number;
52
+ intentConstraints?: string[];
53
+ behaviorSummary?: {
54
+ totalEvents: number;
55
+ totalInsertedChars: number;
56
+ totalDeletedChars: number;
57
+ recentDeletedChars?: number;
58
+ hasLargeRecentDelete?: boolean;
59
+ typingSpeedCps?: number;
60
+ };
61
+ }
62
+ interface GenerateResponse {
63
+ generatedText: string;
64
+ }
65
+
66
+ interface MessageProcessingState {
67
+ message: AiMessage;
68
+ originalIndex: number;
69
+ action: 'keep_core' | 'keep_working_memory' | 'summarize' | 'skip';
70
+ tokens: number;
71
+ processedContent?: string;
72
+ contentType?: 'full' | 'final_answer_only' | 'thinking_only';
73
+ phase?: string;
74
+ replacementSourceIds?: string[];
75
+ }
76
+ interface SummarizationCallbacks {
77
+ onSummarizationStart?: () => void;
78
+ onSummarizationEnd?: (info: {
79
+ originalMessageCount: number;
80
+ summaryTokenCount?: number;
81
+ newSummaryId?: string;
82
+ summaryEvent?: RuntimeEvent;
83
+ }) => void;
84
+ onSummarizationError?: (error: Error) => void;
85
+ }
86
+ interface ProviderContext<TConfig = unknown> {
87
+ totalBudget: number;
88
+ config: TConfig;
89
+ debugMode: boolean;
90
+ estimateTokens: (message: AiMessage) => number;
91
+ summarizationCallbacks?: SummarizationCallbacks;
92
+ /**
93
+ * Host 注入的注册式 AI 调用入口。
94
+ *
95
+ * 中文备注:调用方必须通过 request.promptKey / agentId 解析已注册 agent/chat;
96
+ * framework 不应在 Provider 内直接发起裸 LLM call。
97
+ */
98
+ generate?: (request: GenerateRequest) => Promise<GenerateResponse>;
99
+ }
100
+ interface ProviderResult {
101
+ states: MessageProcessingState[];
102
+ tokensUsed: number;
103
+ strategiesApplied: string[];
104
+ stats: {
105
+ processedCount: number;
106
+ skippedCount: number;
107
+ addedCount: number;
108
+ };
109
+ events?: RuntimeEvent[];
110
+ }
111
+ declare const TOOL_HISTORY_OVERFLOW_ERROR_CODE: "TOOL_HISTORY_OVERFLOW";
112
+ declare const SUMMARIZATION_FAILED_ERROR_CODE: "SUMMARIZATION_FAILED";
113
+ type ContextProviderErrorCode = 'context_provider_failed' | typeof SUMMARIZATION_FAILED_ERROR_CODE | typeof TOOL_HISTORY_OVERFLOW_ERROR_CODE;
114
+ interface ContextProviderErrorOptions {
115
+ code: ContextProviderErrorCode;
116
+ fatal?: boolean;
117
+ providerName: string;
118
+ message: string;
119
+ cause?: unknown;
120
+ }
121
+ /**
122
+ * Provider 内部向 pipeline 传递的结构化错误。
123
+ *
124
+ * 中文备注:
125
+ * - pipeline 只能依赖 code/fatal 这类稳定字段做控制流判断;
126
+ * - message 只用于日志和用户可见错误,不再承担协议语义。
127
+ */
128
+ declare class ContextProviderError extends Error {
129
+ readonly code: ContextProviderErrorCode;
130
+ readonly fatal: boolean;
131
+ readonly providerName: string;
132
+ readonly cause?: unknown;
133
+ constructor(options: ContextProviderErrorOptions);
134
+ }
135
+ declare function isContextProviderError(error: unknown): error is ContextProviderError;
136
+ interface IContextProvider<TConfig = unknown> {
137
+ readonly name: string;
138
+ readonly description: string;
139
+ readonly priority: number;
140
+ provide(states: MessageProcessingState[], availableBudget: number, context: ProviderContext<TConfig>): Promise<ProviderResult>;
141
+ shouldSkip?(states: MessageProcessingState[], availableBudget: number, context: ProviderContext<TConfig>): boolean;
142
+ }
143
+ declare abstract class BaseContextProvider<TConfig = unknown> implements IContextProvider<TConfig> {
144
+ abstract readonly name: string;
145
+ abstract readonly description: string;
146
+ abstract readonly priority: number;
147
+ abstract provide(states: MessageProcessingState[], availableBudget: number, context: ProviderContext<TConfig>): Promise<ProviderResult>;
148
+ shouldSkip(_states: MessageProcessingState[], availableBudget: number, _context: ProviderContext<TConfig>): boolean;
149
+ protected debug(message: string, data?: Record<string, unknown>, context?: ProviderContext<TConfig>): void;
150
+ protected createResult(states: MessageProcessingState[], tokensUsed?: number, strategiesApplied?: string[], stats?: {
151
+ processedCount: number;
152
+ skippedCount: number;
153
+ addedCount: number;
154
+ }, events?: RuntimeEvent[]): ProviderResult;
155
+ }
156
+
157
+ type ContextTraceEvent = ContextTraceProviderEvent | ContextTraceMessageDecisionEvent;
158
+ interface ContextTraceProviderEvent {
159
+ kind: 'provider';
160
+ providerName: string;
161
+ skipped: boolean;
162
+ durationMs: number;
163
+ beforeTokens: number;
164
+ afterTokens: number;
165
+ tokenDelta: number;
166
+ tokensUsed: number;
167
+ beforeKeptCount: number;
168
+ afterKeptCount: number;
169
+ strategiesApplied: string[];
170
+ remainingBudget: number;
171
+ }
172
+ interface ContextTraceMessageDecisionEvent {
173
+ kind: 'message-decision';
174
+ originalIndex: number;
175
+ messageId?: string;
176
+ role: AiMessage['role'];
177
+ type: AiMessage['type'];
178
+ action: MessageProcessingState['action'];
179
+ phase?: string;
180
+ tokens: number;
181
+ kept: boolean;
182
+ reason: string;
183
+ replacementSourceIds?: string[];
184
+ }
185
+ interface ContextTrace {
186
+ enabled: true;
187
+ includeMessageIds: boolean;
188
+ includeTokenBreakdown: boolean;
189
+ maxTraceEvents: number;
190
+ overflowed: boolean;
191
+ effectivePolicy?: AgentSpecContextPolicy;
192
+ totalBudget: number;
193
+ originalCount: number;
194
+ finalCount: number;
195
+ finalTokens: number;
196
+ truncated: boolean;
197
+ events: ContextTraceEvent[];
198
+ }
199
+ interface ContextTraceCollectorOptions {
200
+ policy?: AgentSpecContextTracePolicy;
201
+ effectivePolicy?: AgentSpecContextPolicy;
202
+ totalBudget: number;
203
+ originalCount: number;
204
+ }
205
+ interface ProviderTraceInput {
206
+ providerName: string;
207
+ skipped: boolean;
208
+ durationMs: number;
209
+ beforeStates: ReadonlyArray<MessageProcessingState>;
210
+ afterStates: ReadonlyArray<MessageProcessingState>;
211
+ tokensUsed: number;
212
+ strategiesApplied: readonly string[];
213
+ remainingBudget: number;
214
+ }
215
+ /**
216
+ * ContextTrace 的最小采集器。
217
+ *
218
+ * 中文备注:
219
+ * - trace 只描述“本次上下文构建如何选择消息”,不进入 LLM 输入;
220
+ * - 采集器内部做 maxTraceEvents 限流,避免观测数据反过来膨胀。
221
+ */
222
+ declare class ContextTraceCollector {
223
+ private readonly includeMessageIds;
224
+ private readonly includeTokenBreakdown;
225
+ private readonly maxTraceEvents;
226
+ private readonly effectivePolicy?;
227
+ private readonly totalBudget;
228
+ private readonly originalCount;
229
+ private readonly events;
230
+ private overflowed;
231
+ private constructor();
232
+ static create(options: ContextTraceCollectorOptions): ContextTraceCollector | undefined;
233
+ recordProvider(input: ProviderTraceInput): void;
234
+ recordMessageDecisions(states: ReadonlyArray<MessageProcessingState>): void;
235
+ build(finalMessages: ReadonlyArray<AiMessage>, finalTokens: number): ContextTrace;
236
+ private push;
237
+ }
238
+
239
+ export { BaseContextProvider as B, type ChatMessage as C, type GenerateRequest as G, type IContextProvider as I, type MessageProcessingState as M, type ProviderContext as P, type RecentRejection as R, type SummarizationCallbacks as S, TOOL_HISTORY_OVERFLOW_ERROR_CODE as T, type ProviderResult as a, ContextTraceCollector as b, type GenerateResponse as c, type ContextTrace as d, type ChatDocumentMetadata as e, type ChatProjectMetadata as f, type ChatUserQuote as g, ContextProviderError as h, type ContextProviderErrorCode as i, type ContextProviderErrorOptions as j, type ContextTraceEvent as k, type ContextTraceMessageDecisionEvent as l, type ContextTraceProviderEvent as m, type MessageRole as n, type MessageType as o, SUMMARIZATION_FAILED_ERROR_CODE as p, isContextProviderError as q };