@farukada/langchain-ts-rms 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 (175) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +446 -0
  3. package/dist/app/freshness/evaluator.d.ts +23 -0
  4. package/dist/app/freshness/evaluator.d.ts.map +1 -0
  5. package/dist/app/freshness/evaluator.js +72 -0
  6. package/dist/app/freshness/evaluator.js.map +1 -0
  7. package/dist/app/governance/guardrails.d.ts +51 -0
  8. package/dist/app/governance/guardrails.d.ts.map +1 -0
  9. package/dist/app/governance/guardrails.js +68 -0
  10. package/dist/app/governance/guardrails.js.map +1 -0
  11. package/dist/app/graph/workflow.d.ts +1159 -0
  12. package/dist/app/graph/workflow.d.ts.map +1 -0
  13. package/dist/app/graph/workflow.js +468 -0
  14. package/dist/app/graph/workflow.js.map +1 -0
  15. package/dist/app/queryPlanning/planner.d.ts +18 -0
  16. package/dist/app/queryPlanning/planner.d.ts.map +1 -0
  17. package/dist/app/queryPlanning/planner.js +80 -0
  18. package/dist/app/queryPlanning/planner.js.map +1 -0
  19. package/dist/app/queryRewriting/rewriter.d.ts +32 -0
  20. package/dist/app/queryRewriting/rewriter.d.ts.map +1 -0
  21. package/dist/app/queryRewriting/rewriter.js +111 -0
  22. package/dist/app/queryRewriting/rewriter.js.map +1 -0
  23. package/dist/app/reranking/reranker.d.ts +27 -0
  24. package/dist/app/reranking/reranker.d.ts.map +1 -0
  25. package/dist/app/reranking/reranker.js +67 -0
  26. package/dist/app/reranking/reranker.js.map +1 -0
  27. package/dist/app/state/schema.d.ts +121 -0
  28. package/dist/app/state/schema.d.ts.map +1 -0
  29. package/dist/app/state/schema.js +88 -0
  30. package/dist/app/state/schema.js.map +1 -0
  31. package/dist/app/summarization/summarizationSchema.d.ts +34 -0
  32. package/dist/app/summarization/summarizationSchema.d.ts.map +1 -0
  33. package/dist/app/summarization/summarizationSchema.js +65 -0
  34. package/dist/app/summarization/summarizationSchema.js.map +1 -0
  35. package/dist/app/summarization/summarizer.d.ts +51 -0
  36. package/dist/app/summarization/summarizer.d.ts.map +1 -0
  37. package/dist/app/summarization/summarizer.js +181 -0
  38. package/dist/app/summarization/summarizer.js.map +1 -0
  39. package/dist/app/summarization/synthesisSchema.d.ts +16 -0
  40. package/dist/app/summarization/synthesisSchema.d.ts.map +1 -0
  41. package/dist/app/summarization/synthesisSchema.js +43 -0
  42. package/dist/app/summarization/synthesisSchema.js.map +1 -0
  43. package/dist/app/summarization/synthesizer.d.ts +21 -0
  44. package/dist/app/summarization/synthesizer.d.ts.map +1 -0
  45. package/dist/app/summarization/synthesizer.js +86 -0
  46. package/dist/app/summarization/synthesizer.js.map +1 -0
  47. package/dist/config/env.d.ts +49 -0
  48. package/dist/config/env.d.ts.map +1 -0
  49. package/dist/config/env.js +54 -0
  50. package/dist/config/env.js.map +1 -0
  51. package/dist/domain/contracts.d.ts +59 -0
  52. package/dist/domain/contracts.d.ts.map +1 -0
  53. package/dist/domain/contracts.js +52 -0
  54. package/dist/domain/contracts.js.map +1 -0
  55. package/dist/domain/ports.d.ts +63 -0
  56. package/dist/domain/ports.d.ts.map +1 -0
  57. package/dist/domain/ports.js +2 -0
  58. package/dist/domain/ports.js.map +1 -0
  59. package/dist/domain/researchUtils.d.ts +51 -0
  60. package/dist/domain/researchUtils.d.ts.map +1 -0
  61. package/dist/domain/researchUtils.js +85 -0
  62. package/dist/domain/researchUtils.js.map +1 -0
  63. package/dist/infra/chat/chatModelProvider.d.ts +4 -0
  64. package/dist/infra/chat/chatModelProvider.d.ts.map +1 -0
  65. package/dist/infra/chat/chatModelProvider.js +13 -0
  66. package/dist/infra/chat/chatModelProvider.js.map +1 -0
  67. package/dist/infra/checkpoint/checkpointerFactory.d.ts +38 -0
  68. package/dist/infra/checkpoint/checkpointerFactory.d.ts.map +1 -0
  69. package/dist/infra/checkpoint/checkpointerFactory.js +54 -0
  70. package/dist/infra/checkpoint/checkpointerFactory.js.map +1 -0
  71. package/dist/infra/content/contentExtractor.d.ts +58 -0
  72. package/dist/infra/content/contentExtractor.d.ts.map +1 -0
  73. package/dist/infra/content/contentExtractor.js +296 -0
  74. package/dist/infra/content/contentExtractor.js.map +1 -0
  75. package/dist/infra/embeddings/embeddingProvider.d.ts +4 -0
  76. package/dist/infra/embeddings/embeddingProvider.d.ts.map +1 -0
  77. package/dist/infra/embeddings/embeddingProvider.js +11 -0
  78. package/dist/infra/embeddings/embeddingProvider.js.map +1 -0
  79. package/dist/infra/healthCheck.d.ts +23 -0
  80. package/dist/infra/healthCheck.d.ts.map +1 -0
  81. package/dist/infra/healthCheck.js +57 -0
  82. package/dist/infra/healthCheck.js.map +1 -0
  83. package/dist/infra/observability/tokenCounter.d.ts +30 -0
  84. package/dist/infra/observability/tokenCounter.d.ts.map +1 -0
  85. package/dist/infra/observability/tokenCounter.js +46 -0
  86. package/dist/infra/observability/tokenCounter.js.map +1 -0
  87. package/dist/infra/observability/tracing.d.ts +38 -0
  88. package/dist/infra/observability/tracing.d.ts.map +1 -0
  89. package/dist/infra/observability/tracing.js +92 -0
  90. package/dist/infra/observability/tracing.js.map +1 -0
  91. package/dist/infra/rateLimit/circuitBreaker.d.ts +54 -0
  92. package/dist/infra/rateLimit/circuitBreaker.d.ts.map +1 -0
  93. package/dist/infra/rateLimit/circuitBreaker.js +97 -0
  94. package/dist/infra/rateLimit/circuitBreaker.js.map +1 -0
  95. package/dist/infra/rateLimit/rateLimiter.d.ts +42 -0
  96. package/dist/infra/rateLimit/rateLimiter.d.ts.map +1 -0
  97. package/dist/infra/rateLimit/rateLimiter.js +89 -0
  98. package/dist/infra/rateLimit/rateLimiter.js.map +1 -0
  99. package/dist/infra/search/searxngClient.d.ts +29 -0
  100. package/dist/infra/search/searxngClient.d.ts.map +1 -0
  101. package/dist/infra/search/searxngClient.js +85 -0
  102. package/dist/infra/search/searxngClient.js.map +1 -0
  103. package/dist/infra/search/urlBlocklist.d.ts +28 -0
  104. package/dist/infra/search/urlBlocklist.d.ts.map +1 -0
  105. package/dist/infra/search/urlBlocklist.js +78 -0
  106. package/dist/infra/search/urlBlocklist.js.map +1 -0
  107. package/dist/infra/vector/qdrantClient.d.ts +18 -0
  108. package/dist/infra/vector/qdrantClient.d.ts.map +1 -0
  109. package/dist/infra/vector/qdrantClient.js +82 -0
  110. package/dist/infra/vector/qdrantClient.js.map +1 -0
  111. package/dist/infra/vector/researchRepository.d.ts +39 -0
  112. package/dist/infra/vector/researchRepository.d.ts.map +1 -0
  113. package/dist/infra/vector/researchRepository.js +294 -0
  114. package/dist/infra/vector/researchRepository.js.map +1 -0
  115. package/dist/lib/helpers.d.ts +50 -0
  116. package/dist/lib/helpers.d.ts.map +1 -0
  117. package/dist/lib/helpers.js +124 -0
  118. package/dist/lib/helpers.js.map +1 -0
  119. package/dist/lib/index.d.ts +65 -0
  120. package/dist/lib/index.d.ts.map +1 -0
  121. package/dist/lib/index.js +61 -0
  122. package/dist/lib/index.js.map +1 -0
  123. package/dist/lib/rmsTool.d.ts +28 -0
  124. package/dist/lib/rmsTool.d.ts.map +1 -0
  125. package/dist/lib/rmsTool.js +79 -0
  126. package/dist/lib/rmsTool.js.map +1 -0
  127. package/dist/lib/schemas/lifecycleSchemas.d.ts +42 -0
  128. package/dist/lib/schemas/lifecycleSchemas.d.ts.map +1 -0
  129. package/dist/lib/schemas/lifecycleSchemas.js +176 -0
  130. package/dist/lib/schemas/lifecycleSchemas.js.map +1 -0
  131. package/dist/lib/schemas/researchSchemas.d.ts +23 -0
  132. package/dist/lib/schemas/researchSchemas.d.ts.map +1 -0
  133. package/dist/lib/schemas/researchSchemas.js +83 -0
  134. package/dist/lib/schemas/researchSchemas.js.map +1 -0
  135. package/dist/lib/tools/deleteResearch.d.ts +19 -0
  136. package/dist/lib/tools/deleteResearch.d.ts.map +1 -0
  137. package/dist/lib/tools/deleteResearch.js +37 -0
  138. package/dist/lib/tools/deleteResearch.js.map +1 -0
  139. package/dist/lib/tools/getDatetime.d.ts +7 -0
  140. package/dist/lib/tools/getDatetime.d.ts.map +1 -0
  141. package/dist/lib/tools/getDatetime.js +26 -0
  142. package/dist/lib/tools/getDatetime.js.map +1 -0
  143. package/dist/lib/tools/getResearch.d.ts +19 -0
  144. package/dist/lib/tools/getResearch.d.ts.map +1 -0
  145. package/dist/lib/tools/getResearch.js +32 -0
  146. package/dist/lib/tools/getResearch.js.map +1 -0
  147. package/dist/lib/tools/listResearch.d.ts +25 -0
  148. package/dist/lib/tools/listResearch.d.ts.map +1 -0
  149. package/dist/lib/tools/listResearch.js +41 -0
  150. package/dist/lib/tools/listResearch.js.map +1 -0
  151. package/dist/lib/tools/refreshResearch.d.ts +27 -0
  152. package/dist/lib/tools/refreshResearch.d.ts.map +1 -0
  153. package/dist/lib/tools/refreshResearch.js +81 -0
  154. package/dist/lib/tools/refreshResearch.js.map +1 -0
  155. package/dist/lib/tools/research.d.ts +108 -0
  156. package/dist/lib/tools/research.d.ts.map +1 -0
  157. package/dist/lib/tools/research.js +273 -0
  158. package/dist/lib/tools/research.js.map +1 -0
  159. package/dist/lib/tools/searchResearch.d.ts +25 -0
  160. package/dist/lib/tools/searchResearch.d.ts.map +1 -0
  161. package/dist/lib/tools/searchResearch.js +45 -0
  162. package/dist/lib/tools/searchResearch.js.map +1 -0
  163. package/dist/lib/types.d.ts +51 -0
  164. package/dist/lib/types.d.ts.map +1 -0
  165. package/dist/lib/types.js +2 -0
  166. package/dist/lib/types.js.map +1 -0
  167. package/dist/mcp/index.d.ts +12 -0
  168. package/dist/mcp/index.d.ts.map +1 -0
  169. package/dist/mcp/index.js +12 -0
  170. package/dist/mcp/index.js.map +1 -0
  171. package/dist/mcp/server.d.ts +45 -0
  172. package/dist/mcp/server.d.ts.map +1 -0
  173. package/dist/mcp/server.js +440 -0
  174. package/dist/mcp/server.js.map +1 -0
  175. package/package.json +132 -0
@@ -0,0 +1,1159 @@
1
+ import { type BaseCheckpointSaver } from "@langchain/langgraph";
2
+ import type { BaseChatModel } from "@langchain/core/language_models/chat_models";
3
+ import type { EmbeddingsInterface } from "@langchain/core/embeddings";
4
+ import type { IResearchRepository } from "../../domain/ports.js";
5
+ import type { Research } from "../../domain/contracts.js";
6
+ import type { TokenUsageCollector } from "../../infra/observability/tokenCounter.js";
7
+ /** Canonical node name constants used by both the graph and event mapping. */
8
+ export declare const RMS_NODE_NAMES: {
9
+ readonly FRESHNESS_CHECKER: "freshnessChecker";
10
+ readonly GUARDRAIL: "guardrail";
11
+ readonly QUERY_PLANNER: "queryPlanner";
12
+ readonly SEARCHER: "searcher";
13
+ readonly QUERY_REWRITER: "queryRewriter";
14
+ readonly RERANKER: "reranker";
15
+ readonly HUMAN_APPROVAL: "human_approval";
16
+ readonly SUMMARIZER: "summarizer";
17
+ readonly PERSISTER: "persister";
18
+ };
19
+ export interface WorkflowDeps {
20
+ researchRepository: IResearchRepository;
21
+ /** Inject for testing; otherwise uses createChatModelProvider() */
22
+ chatModel?: BaseChatModel | undefined;
23
+ /** Inject for testing; otherwise uses createEmbeddingProvider() */
24
+ embeddings?: EmbeddingsInterface | undefined;
25
+ /** Default freshness threshold in days */
26
+ freshnessDays?: number | undefined;
27
+ /**
28
+ * Inject a checkpointer; defaults to MemorySaver (in-memory, not for production).
29
+ * For production, use `@langchain/langgraph-checkpoint-sqlite` or
30
+ * `@langchain/langgraph-checkpoint-postgres`.
31
+ */
32
+ checkpointer?: BaseCheckpointSaver;
33
+ /** Fired when new research is successfully persisted. */
34
+ onResearchComplete?: (research: Research) => void | Promise<void>;
35
+ /** Fired when the workflow requires human approval. */
36
+ onApprovalRequired?: (subject: string, confidence: number) => void | Promise<void>;
37
+ /** Fired when a fresh cached research entry is returned. */
38
+ onCacheHit?: (research: Research) => void | Promise<void>;
39
+ /**
40
+ * Token usage collector for accumulating LLM token counts.
41
+ * When provided, the persister node writes final usage into state.
42
+ */
43
+ tokenCollector?: TokenUsageCollector;
44
+ }
45
+ /**
46
+ * Builds the RMS LangGraph workflow:
47
+ * freshnessChecker -> (conditional) -> searcher -> summarizer -> persister
48
+ *
49
+ * RMS produces research summaries for autonomous agents.
50
+ * Guardrail gating and HITL interrupt are supported for sensitive queries.
51
+ */
52
+ export declare function createRmsWorkflow(deps: WorkflowDeps): import("@langchain/langgraph").CompiledStateGraph<{
53
+ subject: string;
54
+ tenantId: string | undefined;
55
+ forceRefresh: boolean;
56
+ maxResults: number;
57
+ freshnessDays: number;
58
+ cachedResearch: {
59
+ id: string;
60
+ subject: string;
61
+ summary: string;
62
+ sourceSummaries: {
63
+ url: string;
64
+ title: string;
65
+ keyTakeaways: string;
66
+ relevance: number;
67
+ tags: string[];
68
+ language: string;
69
+ }[];
70
+ sourceUrls: string[];
71
+ searchQueries: string[];
72
+ status: "active" | "stale" | "refreshing" | "archived" | "low_confidence";
73
+ confidenceScore: number;
74
+ sourceCount: number;
75
+ tags: string[];
76
+ language: string;
77
+ rawResultCount: number;
78
+ metadata: Record<string, unknown>;
79
+ createdAt?: string | undefined;
80
+ updatedAt?: string | undefined;
81
+ expiresAt?: string | undefined;
82
+ tenantId?: string | undefined;
83
+ keyFindings?: string[] | undefined;
84
+ limitations?: string[] | undefined;
85
+ } | undefined;
86
+ isFresh: boolean;
87
+ searchResults: import("../../infra/search/searxngClient.js").SearxngSearchResult[];
88
+ summarization: import("../summarization/summarizer.js").SummarizationResult | undefined;
89
+ research: {
90
+ id: string;
91
+ subject: string;
92
+ summary: string;
93
+ sourceSummaries: {
94
+ url: string;
95
+ title: string;
96
+ keyTakeaways: string;
97
+ relevance: number;
98
+ tags: string[];
99
+ language: string;
100
+ }[];
101
+ sourceUrls: string[];
102
+ searchQueries: string[];
103
+ status: "active" | "stale" | "refreshing" | "archived" | "low_confidence";
104
+ confidenceScore: number;
105
+ sourceCount: number;
106
+ tags: string[];
107
+ language: string;
108
+ rawResultCount: number;
109
+ metadata: Record<string, unknown>;
110
+ createdAt?: string | undefined;
111
+ updatedAt?: string | undefined;
112
+ expiresAt?: string | undefined;
113
+ tenantId?: string | undefined;
114
+ keyFindings?: string[] | undefined;
115
+ limitations?: string[] | undefined;
116
+ } | undefined;
117
+ source: "cache" | "web" | "cache+web";
118
+ currentPhase: import("../state/schema.js").RmsPhase;
119
+ error: string | undefined;
120
+ traceId: string | undefined;
121
+ metadata: Record<string, unknown> | undefined;
122
+ rewriteCount: number;
123
+ originalSubject: string | undefined;
124
+ rewrittenQuery: string | undefined;
125
+ relevanceScore: number | undefined;
126
+ plannedQueries: string[];
127
+ tokenUsage: {
128
+ promptTokens: number;
129
+ completionTokens: number;
130
+ };
131
+ }, {
132
+ subject?: string;
133
+ tenantId?: string | undefined;
134
+ forceRefresh?: boolean | import("@langchain/langgraph").OverwriteValue<boolean>;
135
+ maxResults?: number | import("@langchain/langgraph").OverwriteValue<number>;
136
+ freshnessDays?: number | import("@langchain/langgraph").OverwriteValue<number>;
137
+ cachedResearch?: {
138
+ id: string;
139
+ subject: string;
140
+ summary: string;
141
+ sourceSummaries: {
142
+ url: string;
143
+ title: string;
144
+ keyTakeaways: string;
145
+ relevance: number;
146
+ tags: string[];
147
+ language: string;
148
+ }[];
149
+ sourceUrls: string[];
150
+ searchQueries: string[];
151
+ status: "active" | "stale" | "refreshing" | "archived" | "low_confidence";
152
+ confidenceScore: number;
153
+ sourceCount: number;
154
+ tags: string[];
155
+ language: string;
156
+ rawResultCount: number;
157
+ metadata: Record<string, unknown>;
158
+ createdAt?: string | undefined;
159
+ updatedAt?: string | undefined;
160
+ expiresAt?: string | undefined;
161
+ tenantId?: string | undefined;
162
+ keyFindings?: string[] | undefined;
163
+ limitations?: string[] | undefined;
164
+ } | undefined;
165
+ isFresh?: boolean | import("@langchain/langgraph").OverwriteValue<boolean>;
166
+ searchResults?: import("../../infra/search/searxngClient.js").SearxngSearchResult[] | import("@langchain/langgraph").OverwriteValue<import("../../infra/search/searxngClient.js").SearxngSearchResult[]>;
167
+ summarization?: import("../summarization/summarizer.js").SummarizationResult | undefined;
168
+ research?: {
169
+ id: string;
170
+ subject: string;
171
+ summary: string;
172
+ sourceSummaries: {
173
+ url: string;
174
+ title: string;
175
+ keyTakeaways: string;
176
+ relevance: number;
177
+ tags: string[];
178
+ language: string;
179
+ }[];
180
+ sourceUrls: string[];
181
+ searchQueries: string[];
182
+ status: "active" | "stale" | "refreshing" | "archived" | "low_confidence";
183
+ confidenceScore: number;
184
+ sourceCount: number;
185
+ tags: string[];
186
+ language: string;
187
+ rawResultCount: number;
188
+ metadata: Record<string, unknown>;
189
+ createdAt?: string | undefined;
190
+ updatedAt?: string | undefined;
191
+ expiresAt?: string | undefined;
192
+ tenantId?: string | undefined;
193
+ keyFindings?: string[] | undefined;
194
+ limitations?: string[] | undefined;
195
+ } | undefined;
196
+ source?: "cache" | "web" | "cache+web" | import("@langchain/langgraph").OverwriteValue<"cache" | "web" | "cache+web">;
197
+ currentPhase?: import("../state/schema.js").RmsPhase | import("@langchain/langgraph").OverwriteValue<import("../state/schema.js").RmsPhase>;
198
+ error?: string | undefined;
199
+ traceId?: string | undefined;
200
+ metadata?: Record<string, unknown> | undefined;
201
+ rewriteCount?: number | import("@langchain/langgraph").OverwriteValue<number>;
202
+ originalSubject?: string | undefined;
203
+ rewrittenQuery?: string | undefined;
204
+ relevanceScore?: number | undefined;
205
+ plannedQueries?: string[] | import("@langchain/langgraph").OverwriteValue<string[]>;
206
+ tokenUsage?: {
207
+ promptTokens: number;
208
+ completionTokens: number;
209
+ } | import("@langchain/langgraph").OverwriteValue<{
210
+ promptTokens: number;
211
+ completionTokens: number;
212
+ }>;
213
+ }, "summarizer" | "queryRewriter" | "reranker" | "queryPlanner" | "freshnessChecker" | "guardrail" | "searcher" | "human_approval" | "persister" | "__start__", {
214
+ subject: import("@langchain/langgraph").LastValue<string>;
215
+ tenantId: import("@langchain/langgraph").LastValue<string | undefined>;
216
+ forceRefresh: import("@langchain/langgraph").BaseChannel<boolean, boolean | import("@langchain/langgraph").OverwriteValue<boolean>, unknown>;
217
+ maxResults: import("@langchain/langgraph").BaseChannel<number, number | import("@langchain/langgraph").OverwriteValue<number>, unknown>;
218
+ freshnessDays: import("@langchain/langgraph").BaseChannel<number, number | import("@langchain/langgraph").OverwriteValue<number>, unknown>;
219
+ cachedResearch: import("@langchain/langgraph").LastValue<{
220
+ id: string;
221
+ subject: string;
222
+ summary: string;
223
+ sourceSummaries: {
224
+ url: string;
225
+ title: string;
226
+ keyTakeaways: string;
227
+ relevance: number;
228
+ tags: string[];
229
+ language: string;
230
+ }[];
231
+ sourceUrls: string[];
232
+ searchQueries: string[];
233
+ status: "active" | "stale" | "refreshing" | "archived" | "low_confidence";
234
+ confidenceScore: number;
235
+ sourceCount: number;
236
+ tags: string[];
237
+ language: string;
238
+ rawResultCount: number;
239
+ metadata: Record<string, unknown>;
240
+ createdAt?: string | undefined;
241
+ updatedAt?: string | undefined;
242
+ expiresAt?: string | undefined;
243
+ tenantId?: string | undefined;
244
+ keyFindings?: string[] | undefined;
245
+ limitations?: string[] | undefined;
246
+ } | undefined>;
247
+ isFresh: import("@langchain/langgraph").BaseChannel<boolean, boolean | import("@langchain/langgraph").OverwriteValue<boolean>, unknown>;
248
+ searchResults: import("@langchain/langgraph").BaseChannel<import("../../infra/search/searxngClient.js").SearxngSearchResult[], import("../../infra/search/searxngClient.js").SearxngSearchResult[] | import("@langchain/langgraph").OverwriteValue<import("../../infra/search/searxngClient.js").SearxngSearchResult[]>, unknown>;
249
+ summarization: import("@langchain/langgraph").LastValue<import("../summarization/summarizer.js").SummarizationResult | undefined>;
250
+ research: import("@langchain/langgraph").LastValue<{
251
+ id: string;
252
+ subject: string;
253
+ summary: string;
254
+ sourceSummaries: {
255
+ url: string;
256
+ title: string;
257
+ keyTakeaways: string;
258
+ relevance: number;
259
+ tags: string[];
260
+ language: string;
261
+ }[];
262
+ sourceUrls: string[];
263
+ searchQueries: string[];
264
+ status: "active" | "stale" | "refreshing" | "archived" | "low_confidence";
265
+ confidenceScore: number;
266
+ sourceCount: number;
267
+ tags: string[];
268
+ language: string;
269
+ rawResultCount: number;
270
+ metadata: Record<string, unknown>;
271
+ createdAt?: string | undefined;
272
+ updatedAt?: string | undefined;
273
+ expiresAt?: string | undefined;
274
+ tenantId?: string | undefined;
275
+ keyFindings?: string[] | undefined;
276
+ limitations?: string[] | undefined;
277
+ } | undefined>;
278
+ source: import("@langchain/langgraph").BaseChannel<"cache" | "web" | "cache+web", "cache" | "web" | "cache+web" | import("@langchain/langgraph").OverwriteValue<"cache" | "web" | "cache+web">, unknown>;
279
+ currentPhase: import("@langchain/langgraph").BaseChannel<import("../state/schema.js").RmsPhase, import("../state/schema.js").RmsPhase | import("@langchain/langgraph").OverwriteValue<import("../state/schema.js").RmsPhase>, unknown>;
280
+ error: import("@langchain/langgraph").LastValue<string | undefined>;
281
+ traceId: import("@langchain/langgraph").LastValue<string | undefined>;
282
+ metadata: import("@langchain/langgraph").LastValue<Record<string, unknown> | undefined>;
283
+ rewriteCount: import("@langchain/langgraph").BaseChannel<number, number | import("@langchain/langgraph").OverwriteValue<number>, unknown>;
284
+ originalSubject: import("@langchain/langgraph").LastValue<string | undefined>;
285
+ rewrittenQuery: import("@langchain/langgraph").LastValue<string | undefined>;
286
+ relevanceScore: import("@langchain/langgraph").LastValue<number | undefined>;
287
+ plannedQueries: import("@langchain/langgraph").BaseChannel<string[], string[] | import("@langchain/langgraph").OverwriteValue<string[]>, unknown>;
288
+ tokenUsage: import("@langchain/langgraph").BaseChannel<{
289
+ promptTokens: number;
290
+ completionTokens: number;
291
+ }, {
292
+ promptTokens: number;
293
+ completionTokens: number;
294
+ } | import("@langchain/langgraph").OverwriteValue<{
295
+ promptTokens: number;
296
+ completionTokens: number;
297
+ }>, unknown>;
298
+ }, {
299
+ subject: import("@langchain/langgraph").LastValue<string>;
300
+ tenantId: import("@langchain/langgraph").LastValue<string | undefined>;
301
+ forceRefresh: import("@langchain/langgraph").BaseChannel<boolean, boolean | import("@langchain/langgraph").OverwriteValue<boolean>, unknown>;
302
+ maxResults: import("@langchain/langgraph").BaseChannel<number, number | import("@langchain/langgraph").OverwriteValue<number>, unknown>;
303
+ freshnessDays: import("@langchain/langgraph").BaseChannel<number, number | import("@langchain/langgraph").OverwriteValue<number>, unknown>;
304
+ cachedResearch: import("@langchain/langgraph").LastValue<{
305
+ id: string;
306
+ subject: string;
307
+ summary: string;
308
+ sourceSummaries: {
309
+ url: string;
310
+ title: string;
311
+ keyTakeaways: string;
312
+ relevance: number;
313
+ tags: string[];
314
+ language: string;
315
+ }[];
316
+ sourceUrls: string[];
317
+ searchQueries: string[];
318
+ status: "active" | "stale" | "refreshing" | "archived" | "low_confidence";
319
+ confidenceScore: number;
320
+ sourceCount: number;
321
+ tags: string[];
322
+ language: string;
323
+ rawResultCount: number;
324
+ metadata: Record<string, unknown>;
325
+ createdAt?: string | undefined;
326
+ updatedAt?: string | undefined;
327
+ expiresAt?: string | undefined;
328
+ tenantId?: string | undefined;
329
+ keyFindings?: string[] | undefined;
330
+ limitations?: string[] | undefined;
331
+ } | undefined>;
332
+ isFresh: import("@langchain/langgraph").BaseChannel<boolean, boolean | import("@langchain/langgraph").OverwriteValue<boolean>, unknown>;
333
+ searchResults: import("@langchain/langgraph").BaseChannel<import("../../infra/search/searxngClient.js").SearxngSearchResult[], import("../../infra/search/searxngClient.js").SearxngSearchResult[] | import("@langchain/langgraph").OverwriteValue<import("../../infra/search/searxngClient.js").SearxngSearchResult[]>, unknown>;
334
+ summarization: import("@langchain/langgraph").LastValue<import("../summarization/summarizer.js").SummarizationResult | undefined>;
335
+ research: import("@langchain/langgraph").LastValue<{
336
+ id: string;
337
+ subject: string;
338
+ summary: string;
339
+ sourceSummaries: {
340
+ url: string;
341
+ title: string;
342
+ keyTakeaways: string;
343
+ relevance: number;
344
+ tags: string[];
345
+ language: string;
346
+ }[];
347
+ sourceUrls: string[];
348
+ searchQueries: string[];
349
+ status: "active" | "stale" | "refreshing" | "archived" | "low_confidence";
350
+ confidenceScore: number;
351
+ sourceCount: number;
352
+ tags: string[];
353
+ language: string;
354
+ rawResultCount: number;
355
+ metadata: Record<string, unknown>;
356
+ createdAt?: string | undefined;
357
+ updatedAt?: string | undefined;
358
+ expiresAt?: string | undefined;
359
+ tenantId?: string | undefined;
360
+ keyFindings?: string[] | undefined;
361
+ limitations?: string[] | undefined;
362
+ } | undefined>;
363
+ source: import("@langchain/langgraph").BaseChannel<"cache" | "web" | "cache+web", "cache" | "web" | "cache+web" | import("@langchain/langgraph").OverwriteValue<"cache" | "web" | "cache+web">, unknown>;
364
+ currentPhase: import("@langchain/langgraph").BaseChannel<import("../state/schema.js").RmsPhase, import("../state/schema.js").RmsPhase | import("@langchain/langgraph").OverwriteValue<import("../state/schema.js").RmsPhase>, unknown>;
365
+ error: import("@langchain/langgraph").LastValue<string | undefined>;
366
+ traceId: import("@langchain/langgraph").LastValue<string | undefined>;
367
+ metadata: import("@langchain/langgraph").LastValue<Record<string, unknown> | undefined>;
368
+ rewriteCount: import("@langchain/langgraph").BaseChannel<number, number | import("@langchain/langgraph").OverwriteValue<number>, unknown>;
369
+ originalSubject: import("@langchain/langgraph").LastValue<string | undefined>;
370
+ rewrittenQuery: import("@langchain/langgraph").LastValue<string | undefined>;
371
+ relevanceScore: import("@langchain/langgraph").LastValue<number | undefined>;
372
+ plannedQueries: import("@langchain/langgraph").BaseChannel<string[], string[] | import("@langchain/langgraph").OverwriteValue<string[]>, unknown>;
373
+ tokenUsage: import("@langchain/langgraph").BaseChannel<{
374
+ promptTokens: number;
375
+ completionTokens: number;
376
+ }, {
377
+ promptTokens: number;
378
+ completionTokens: number;
379
+ } | import("@langchain/langgraph").OverwriteValue<{
380
+ promptTokens: number;
381
+ completionTokens: number;
382
+ }>, unknown>;
383
+ }, import("@langchain/langgraph").StateDefinition, {
384
+ freshnessChecker: import("@langchain/langgraph").UpdateType<{
385
+ subject: import("@langchain/langgraph").LastValue<string>;
386
+ tenantId: import("@langchain/langgraph").LastValue<string | undefined>;
387
+ forceRefresh: import("@langchain/langgraph").BaseChannel<boolean, boolean | import("@langchain/langgraph").OverwriteValue<boolean>, unknown>;
388
+ maxResults: import("@langchain/langgraph").BaseChannel<number, number | import("@langchain/langgraph").OverwriteValue<number>, unknown>;
389
+ freshnessDays: import("@langchain/langgraph").BaseChannel<number, number | import("@langchain/langgraph").OverwriteValue<number>, unknown>;
390
+ cachedResearch: import("@langchain/langgraph").LastValue<{
391
+ id: string;
392
+ subject: string;
393
+ summary: string;
394
+ sourceSummaries: {
395
+ url: string;
396
+ title: string;
397
+ keyTakeaways: string;
398
+ relevance: number;
399
+ tags: string[];
400
+ language: string;
401
+ }[];
402
+ sourceUrls: string[];
403
+ searchQueries: string[];
404
+ status: "active" | "stale" | "refreshing" | "archived" | "low_confidence";
405
+ confidenceScore: number;
406
+ sourceCount: number;
407
+ tags: string[];
408
+ language: string;
409
+ rawResultCount: number;
410
+ metadata: Record<string, unknown>;
411
+ createdAt?: string | undefined;
412
+ updatedAt?: string | undefined;
413
+ expiresAt?: string | undefined;
414
+ tenantId?: string | undefined;
415
+ keyFindings?: string[] | undefined;
416
+ limitations?: string[] | undefined;
417
+ } | undefined>;
418
+ isFresh: import("@langchain/langgraph").BaseChannel<boolean, boolean | import("@langchain/langgraph").OverwriteValue<boolean>, unknown>;
419
+ searchResults: import("@langchain/langgraph").BaseChannel<import("../../infra/search/searxngClient.js").SearxngSearchResult[], import("../../infra/search/searxngClient.js").SearxngSearchResult[] | import("@langchain/langgraph").OverwriteValue<import("../../infra/search/searxngClient.js").SearxngSearchResult[]>, unknown>;
420
+ summarization: import("@langchain/langgraph").LastValue<import("../summarization/summarizer.js").SummarizationResult | undefined>;
421
+ research: import("@langchain/langgraph").LastValue<{
422
+ id: string;
423
+ subject: string;
424
+ summary: string;
425
+ sourceSummaries: {
426
+ url: string;
427
+ title: string;
428
+ keyTakeaways: string;
429
+ relevance: number;
430
+ tags: string[];
431
+ language: string;
432
+ }[];
433
+ sourceUrls: string[];
434
+ searchQueries: string[];
435
+ status: "active" | "stale" | "refreshing" | "archived" | "low_confidence";
436
+ confidenceScore: number;
437
+ sourceCount: number;
438
+ tags: string[];
439
+ language: string;
440
+ rawResultCount: number;
441
+ metadata: Record<string, unknown>;
442
+ createdAt?: string | undefined;
443
+ updatedAt?: string | undefined;
444
+ expiresAt?: string | undefined;
445
+ tenantId?: string | undefined;
446
+ keyFindings?: string[] | undefined;
447
+ limitations?: string[] | undefined;
448
+ } | undefined>;
449
+ source: import("@langchain/langgraph").BaseChannel<"cache" | "web" | "cache+web", "cache" | "web" | "cache+web" | import("@langchain/langgraph").OverwriteValue<"cache" | "web" | "cache+web">, unknown>;
450
+ currentPhase: import("@langchain/langgraph").BaseChannel<import("../state/schema.js").RmsPhase, import("../state/schema.js").RmsPhase | import("@langchain/langgraph").OverwriteValue<import("../state/schema.js").RmsPhase>, unknown>;
451
+ error: import("@langchain/langgraph").LastValue<string | undefined>;
452
+ traceId: import("@langchain/langgraph").LastValue<string | undefined>;
453
+ metadata: import("@langchain/langgraph").LastValue<Record<string, unknown> | undefined>;
454
+ rewriteCount: import("@langchain/langgraph").BaseChannel<number, number | import("@langchain/langgraph").OverwriteValue<number>, unknown>;
455
+ originalSubject: import("@langchain/langgraph").LastValue<string | undefined>;
456
+ rewrittenQuery: import("@langchain/langgraph").LastValue<string | undefined>;
457
+ relevanceScore: import("@langchain/langgraph").LastValue<number | undefined>;
458
+ plannedQueries: import("@langchain/langgraph").BaseChannel<string[], string[] | import("@langchain/langgraph").OverwriteValue<string[]>, unknown>;
459
+ tokenUsage: import("@langchain/langgraph").BaseChannel<{
460
+ promptTokens: number;
461
+ completionTokens: number;
462
+ }, {
463
+ promptTokens: number;
464
+ completionTokens: number;
465
+ } | import("@langchain/langgraph").OverwriteValue<{
466
+ promptTokens: number;
467
+ completionTokens: number;
468
+ }>, unknown>;
469
+ }>;
470
+ guardrail: import("@langchain/langgraph").UpdateType<{
471
+ subject: import("@langchain/langgraph").LastValue<string>;
472
+ tenantId: import("@langchain/langgraph").LastValue<string | undefined>;
473
+ forceRefresh: import("@langchain/langgraph").BaseChannel<boolean, boolean | import("@langchain/langgraph").OverwriteValue<boolean>, unknown>;
474
+ maxResults: import("@langchain/langgraph").BaseChannel<number, number | import("@langchain/langgraph").OverwriteValue<number>, unknown>;
475
+ freshnessDays: import("@langchain/langgraph").BaseChannel<number, number | import("@langchain/langgraph").OverwriteValue<number>, unknown>;
476
+ cachedResearch: import("@langchain/langgraph").LastValue<{
477
+ id: string;
478
+ subject: string;
479
+ summary: string;
480
+ sourceSummaries: {
481
+ url: string;
482
+ title: string;
483
+ keyTakeaways: string;
484
+ relevance: number;
485
+ tags: string[];
486
+ language: string;
487
+ }[];
488
+ sourceUrls: string[];
489
+ searchQueries: string[];
490
+ status: "active" | "stale" | "refreshing" | "archived" | "low_confidence";
491
+ confidenceScore: number;
492
+ sourceCount: number;
493
+ tags: string[];
494
+ language: string;
495
+ rawResultCount: number;
496
+ metadata: Record<string, unknown>;
497
+ createdAt?: string | undefined;
498
+ updatedAt?: string | undefined;
499
+ expiresAt?: string | undefined;
500
+ tenantId?: string | undefined;
501
+ keyFindings?: string[] | undefined;
502
+ limitations?: string[] | undefined;
503
+ } | undefined>;
504
+ isFresh: import("@langchain/langgraph").BaseChannel<boolean, boolean | import("@langchain/langgraph").OverwriteValue<boolean>, unknown>;
505
+ searchResults: import("@langchain/langgraph").BaseChannel<import("../../infra/search/searxngClient.js").SearxngSearchResult[], import("../../infra/search/searxngClient.js").SearxngSearchResult[] | import("@langchain/langgraph").OverwriteValue<import("../../infra/search/searxngClient.js").SearxngSearchResult[]>, unknown>;
506
+ summarization: import("@langchain/langgraph").LastValue<import("../summarization/summarizer.js").SummarizationResult | undefined>;
507
+ research: import("@langchain/langgraph").LastValue<{
508
+ id: string;
509
+ subject: string;
510
+ summary: string;
511
+ sourceSummaries: {
512
+ url: string;
513
+ title: string;
514
+ keyTakeaways: string;
515
+ relevance: number;
516
+ tags: string[];
517
+ language: string;
518
+ }[];
519
+ sourceUrls: string[];
520
+ searchQueries: string[];
521
+ status: "active" | "stale" | "refreshing" | "archived" | "low_confidence";
522
+ confidenceScore: number;
523
+ sourceCount: number;
524
+ tags: string[];
525
+ language: string;
526
+ rawResultCount: number;
527
+ metadata: Record<string, unknown>;
528
+ createdAt?: string | undefined;
529
+ updatedAt?: string | undefined;
530
+ expiresAt?: string | undefined;
531
+ tenantId?: string | undefined;
532
+ keyFindings?: string[] | undefined;
533
+ limitations?: string[] | undefined;
534
+ } | undefined>;
535
+ source: import("@langchain/langgraph").BaseChannel<"cache" | "web" | "cache+web", "cache" | "web" | "cache+web" | import("@langchain/langgraph").OverwriteValue<"cache" | "web" | "cache+web">, unknown>;
536
+ currentPhase: import("@langchain/langgraph").BaseChannel<import("../state/schema.js").RmsPhase, import("../state/schema.js").RmsPhase | import("@langchain/langgraph").OverwriteValue<import("../state/schema.js").RmsPhase>, unknown>;
537
+ error: import("@langchain/langgraph").LastValue<string | undefined>;
538
+ traceId: import("@langchain/langgraph").LastValue<string | undefined>;
539
+ metadata: import("@langchain/langgraph").LastValue<Record<string, unknown> | undefined>;
540
+ rewriteCount: import("@langchain/langgraph").BaseChannel<number, number | import("@langchain/langgraph").OverwriteValue<number>, unknown>;
541
+ originalSubject: import("@langchain/langgraph").LastValue<string | undefined>;
542
+ rewrittenQuery: import("@langchain/langgraph").LastValue<string | undefined>;
543
+ relevanceScore: import("@langchain/langgraph").LastValue<number | undefined>;
544
+ plannedQueries: import("@langchain/langgraph").BaseChannel<string[], string[] | import("@langchain/langgraph").OverwriteValue<string[]>, unknown>;
545
+ tokenUsage: import("@langchain/langgraph").BaseChannel<{
546
+ promptTokens: number;
547
+ completionTokens: number;
548
+ }, {
549
+ promptTokens: number;
550
+ completionTokens: number;
551
+ } | import("@langchain/langgraph").OverwriteValue<{
552
+ promptTokens: number;
553
+ completionTokens: number;
554
+ }>, unknown>;
555
+ }>;
556
+ queryPlanner: import("@langchain/langgraph").UpdateType<{
557
+ subject: import("@langchain/langgraph").LastValue<string>;
558
+ tenantId: import("@langchain/langgraph").LastValue<string | undefined>;
559
+ forceRefresh: import("@langchain/langgraph").BaseChannel<boolean, boolean | import("@langchain/langgraph").OverwriteValue<boolean>, unknown>;
560
+ maxResults: import("@langchain/langgraph").BaseChannel<number, number | import("@langchain/langgraph").OverwriteValue<number>, unknown>;
561
+ freshnessDays: import("@langchain/langgraph").BaseChannel<number, number | import("@langchain/langgraph").OverwriteValue<number>, unknown>;
562
+ cachedResearch: import("@langchain/langgraph").LastValue<{
563
+ id: string;
564
+ subject: string;
565
+ summary: string;
566
+ sourceSummaries: {
567
+ url: string;
568
+ title: string;
569
+ keyTakeaways: string;
570
+ relevance: number;
571
+ tags: string[];
572
+ language: string;
573
+ }[];
574
+ sourceUrls: string[];
575
+ searchQueries: string[];
576
+ status: "active" | "stale" | "refreshing" | "archived" | "low_confidence";
577
+ confidenceScore: number;
578
+ sourceCount: number;
579
+ tags: string[];
580
+ language: string;
581
+ rawResultCount: number;
582
+ metadata: Record<string, unknown>;
583
+ createdAt?: string | undefined;
584
+ updatedAt?: string | undefined;
585
+ expiresAt?: string | undefined;
586
+ tenantId?: string | undefined;
587
+ keyFindings?: string[] | undefined;
588
+ limitations?: string[] | undefined;
589
+ } | undefined>;
590
+ isFresh: import("@langchain/langgraph").BaseChannel<boolean, boolean | import("@langchain/langgraph").OverwriteValue<boolean>, unknown>;
591
+ searchResults: import("@langchain/langgraph").BaseChannel<import("../../infra/search/searxngClient.js").SearxngSearchResult[], import("../../infra/search/searxngClient.js").SearxngSearchResult[] | import("@langchain/langgraph").OverwriteValue<import("../../infra/search/searxngClient.js").SearxngSearchResult[]>, unknown>;
592
+ summarization: import("@langchain/langgraph").LastValue<import("../summarization/summarizer.js").SummarizationResult | undefined>;
593
+ research: import("@langchain/langgraph").LastValue<{
594
+ id: string;
595
+ subject: string;
596
+ summary: string;
597
+ sourceSummaries: {
598
+ url: string;
599
+ title: string;
600
+ keyTakeaways: string;
601
+ relevance: number;
602
+ tags: string[];
603
+ language: string;
604
+ }[];
605
+ sourceUrls: string[];
606
+ searchQueries: string[];
607
+ status: "active" | "stale" | "refreshing" | "archived" | "low_confidence";
608
+ confidenceScore: number;
609
+ sourceCount: number;
610
+ tags: string[];
611
+ language: string;
612
+ rawResultCount: number;
613
+ metadata: Record<string, unknown>;
614
+ createdAt?: string | undefined;
615
+ updatedAt?: string | undefined;
616
+ expiresAt?: string | undefined;
617
+ tenantId?: string | undefined;
618
+ keyFindings?: string[] | undefined;
619
+ limitations?: string[] | undefined;
620
+ } | undefined>;
621
+ source: import("@langchain/langgraph").BaseChannel<"cache" | "web" | "cache+web", "cache" | "web" | "cache+web" | import("@langchain/langgraph").OverwriteValue<"cache" | "web" | "cache+web">, unknown>;
622
+ currentPhase: import("@langchain/langgraph").BaseChannel<import("../state/schema.js").RmsPhase, import("../state/schema.js").RmsPhase | import("@langchain/langgraph").OverwriteValue<import("../state/schema.js").RmsPhase>, unknown>;
623
+ error: import("@langchain/langgraph").LastValue<string | undefined>;
624
+ traceId: import("@langchain/langgraph").LastValue<string | undefined>;
625
+ metadata: import("@langchain/langgraph").LastValue<Record<string, unknown> | undefined>;
626
+ rewriteCount: import("@langchain/langgraph").BaseChannel<number, number | import("@langchain/langgraph").OverwriteValue<number>, unknown>;
627
+ originalSubject: import("@langchain/langgraph").LastValue<string | undefined>;
628
+ rewrittenQuery: import("@langchain/langgraph").LastValue<string | undefined>;
629
+ relevanceScore: import("@langchain/langgraph").LastValue<number | undefined>;
630
+ plannedQueries: import("@langchain/langgraph").BaseChannel<string[], string[] | import("@langchain/langgraph").OverwriteValue<string[]>, unknown>;
631
+ tokenUsage: import("@langchain/langgraph").BaseChannel<{
632
+ promptTokens: number;
633
+ completionTokens: number;
634
+ }, {
635
+ promptTokens: number;
636
+ completionTokens: number;
637
+ } | import("@langchain/langgraph").OverwriteValue<{
638
+ promptTokens: number;
639
+ completionTokens: number;
640
+ }>, unknown>;
641
+ }>;
642
+ searcher: import("@langchain/langgraph").UpdateType<{
643
+ subject: import("@langchain/langgraph").LastValue<string>;
644
+ tenantId: import("@langchain/langgraph").LastValue<string | undefined>;
645
+ forceRefresh: import("@langchain/langgraph").BaseChannel<boolean, boolean | import("@langchain/langgraph").OverwriteValue<boolean>, unknown>;
646
+ maxResults: import("@langchain/langgraph").BaseChannel<number, number | import("@langchain/langgraph").OverwriteValue<number>, unknown>;
647
+ freshnessDays: import("@langchain/langgraph").BaseChannel<number, number | import("@langchain/langgraph").OverwriteValue<number>, unknown>;
648
+ cachedResearch: import("@langchain/langgraph").LastValue<{
649
+ id: string;
650
+ subject: string;
651
+ summary: string;
652
+ sourceSummaries: {
653
+ url: string;
654
+ title: string;
655
+ keyTakeaways: string;
656
+ relevance: number;
657
+ tags: string[];
658
+ language: string;
659
+ }[];
660
+ sourceUrls: string[];
661
+ searchQueries: string[];
662
+ status: "active" | "stale" | "refreshing" | "archived" | "low_confidence";
663
+ confidenceScore: number;
664
+ sourceCount: number;
665
+ tags: string[];
666
+ language: string;
667
+ rawResultCount: number;
668
+ metadata: Record<string, unknown>;
669
+ createdAt?: string | undefined;
670
+ updatedAt?: string | undefined;
671
+ expiresAt?: string | undefined;
672
+ tenantId?: string | undefined;
673
+ keyFindings?: string[] | undefined;
674
+ limitations?: string[] | undefined;
675
+ } | undefined>;
676
+ isFresh: import("@langchain/langgraph").BaseChannel<boolean, boolean | import("@langchain/langgraph").OverwriteValue<boolean>, unknown>;
677
+ searchResults: import("@langchain/langgraph").BaseChannel<import("../../infra/search/searxngClient.js").SearxngSearchResult[], import("../../infra/search/searxngClient.js").SearxngSearchResult[] | import("@langchain/langgraph").OverwriteValue<import("../../infra/search/searxngClient.js").SearxngSearchResult[]>, unknown>;
678
+ summarization: import("@langchain/langgraph").LastValue<import("../summarization/summarizer.js").SummarizationResult | undefined>;
679
+ research: import("@langchain/langgraph").LastValue<{
680
+ id: string;
681
+ subject: string;
682
+ summary: string;
683
+ sourceSummaries: {
684
+ url: string;
685
+ title: string;
686
+ keyTakeaways: string;
687
+ relevance: number;
688
+ tags: string[];
689
+ language: string;
690
+ }[];
691
+ sourceUrls: string[];
692
+ searchQueries: string[];
693
+ status: "active" | "stale" | "refreshing" | "archived" | "low_confidence";
694
+ confidenceScore: number;
695
+ sourceCount: number;
696
+ tags: string[];
697
+ language: string;
698
+ rawResultCount: number;
699
+ metadata: Record<string, unknown>;
700
+ createdAt?: string | undefined;
701
+ updatedAt?: string | undefined;
702
+ expiresAt?: string | undefined;
703
+ tenantId?: string | undefined;
704
+ keyFindings?: string[] | undefined;
705
+ limitations?: string[] | undefined;
706
+ } | undefined>;
707
+ source: import("@langchain/langgraph").BaseChannel<"cache" | "web" | "cache+web", "cache" | "web" | "cache+web" | import("@langchain/langgraph").OverwriteValue<"cache" | "web" | "cache+web">, unknown>;
708
+ currentPhase: import("@langchain/langgraph").BaseChannel<import("../state/schema.js").RmsPhase, import("../state/schema.js").RmsPhase | import("@langchain/langgraph").OverwriteValue<import("../state/schema.js").RmsPhase>, unknown>;
709
+ error: import("@langchain/langgraph").LastValue<string | undefined>;
710
+ traceId: import("@langchain/langgraph").LastValue<string | undefined>;
711
+ metadata: import("@langchain/langgraph").LastValue<Record<string, unknown> | undefined>;
712
+ rewriteCount: import("@langchain/langgraph").BaseChannel<number, number | import("@langchain/langgraph").OverwriteValue<number>, unknown>;
713
+ originalSubject: import("@langchain/langgraph").LastValue<string | undefined>;
714
+ rewrittenQuery: import("@langchain/langgraph").LastValue<string | undefined>;
715
+ relevanceScore: import("@langchain/langgraph").LastValue<number | undefined>;
716
+ plannedQueries: import("@langchain/langgraph").BaseChannel<string[], string[] | import("@langchain/langgraph").OverwriteValue<string[]>, unknown>;
717
+ tokenUsage: import("@langchain/langgraph").BaseChannel<{
718
+ promptTokens: number;
719
+ completionTokens: number;
720
+ }, {
721
+ promptTokens: number;
722
+ completionTokens: number;
723
+ } | import("@langchain/langgraph").OverwriteValue<{
724
+ promptTokens: number;
725
+ completionTokens: number;
726
+ }>, unknown>;
727
+ }>;
728
+ queryRewriter: import("@langchain/langgraph").UpdateType<{
729
+ subject: import("@langchain/langgraph").LastValue<string>;
730
+ tenantId: import("@langchain/langgraph").LastValue<string | undefined>;
731
+ forceRefresh: import("@langchain/langgraph").BaseChannel<boolean, boolean | import("@langchain/langgraph").OverwriteValue<boolean>, unknown>;
732
+ maxResults: import("@langchain/langgraph").BaseChannel<number, number | import("@langchain/langgraph").OverwriteValue<number>, unknown>;
733
+ freshnessDays: import("@langchain/langgraph").BaseChannel<number, number | import("@langchain/langgraph").OverwriteValue<number>, unknown>;
734
+ cachedResearch: import("@langchain/langgraph").LastValue<{
735
+ id: string;
736
+ subject: string;
737
+ summary: string;
738
+ sourceSummaries: {
739
+ url: string;
740
+ title: string;
741
+ keyTakeaways: string;
742
+ relevance: number;
743
+ tags: string[];
744
+ language: string;
745
+ }[];
746
+ sourceUrls: string[];
747
+ searchQueries: string[];
748
+ status: "active" | "stale" | "refreshing" | "archived" | "low_confidence";
749
+ confidenceScore: number;
750
+ sourceCount: number;
751
+ tags: string[];
752
+ language: string;
753
+ rawResultCount: number;
754
+ metadata: Record<string, unknown>;
755
+ createdAt?: string | undefined;
756
+ updatedAt?: string | undefined;
757
+ expiresAt?: string | undefined;
758
+ tenantId?: string | undefined;
759
+ keyFindings?: string[] | undefined;
760
+ limitations?: string[] | undefined;
761
+ } | undefined>;
762
+ isFresh: import("@langchain/langgraph").BaseChannel<boolean, boolean | import("@langchain/langgraph").OverwriteValue<boolean>, unknown>;
763
+ searchResults: import("@langchain/langgraph").BaseChannel<import("../../infra/search/searxngClient.js").SearxngSearchResult[], import("../../infra/search/searxngClient.js").SearxngSearchResult[] | import("@langchain/langgraph").OverwriteValue<import("../../infra/search/searxngClient.js").SearxngSearchResult[]>, unknown>;
764
+ summarization: import("@langchain/langgraph").LastValue<import("../summarization/summarizer.js").SummarizationResult | undefined>;
765
+ research: import("@langchain/langgraph").LastValue<{
766
+ id: string;
767
+ subject: string;
768
+ summary: string;
769
+ sourceSummaries: {
770
+ url: string;
771
+ title: string;
772
+ keyTakeaways: string;
773
+ relevance: number;
774
+ tags: string[];
775
+ language: string;
776
+ }[];
777
+ sourceUrls: string[];
778
+ searchQueries: string[];
779
+ status: "active" | "stale" | "refreshing" | "archived" | "low_confidence";
780
+ confidenceScore: number;
781
+ sourceCount: number;
782
+ tags: string[];
783
+ language: string;
784
+ rawResultCount: number;
785
+ metadata: Record<string, unknown>;
786
+ createdAt?: string | undefined;
787
+ updatedAt?: string | undefined;
788
+ expiresAt?: string | undefined;
789
+ tenantId?: string | undefined;
790
+ keyFindings?: string[] | undefined;
791
+ limitations?: string[] | undefined;
792
+ } | undefined>;
793
+ source: import("@langchain/langgraph").BaseChannel<"cache" | "web" | "cache+web", "cache" | "web" | "cache+web" | import("@langchain/langgraph").OverwriteValue<"cache" | "web" | "cache+web">, unknown>;
794
+ currentPhase: import("@langchain/langgraph").BaseChannel<import("../state/schema.js").RmsPhase, import("../state/schema.js").RmsPhase | import("@langchain/langgraph").OverwriteValue<import("../state/schema.js").RmsPhase>, unknown>;
795
+ error: import("@langchain/langgraph").LastValue<string | undefined>;
796
+ traceId: import("@langchain/langgraph").LastValue<string | undefined>;
797
+ metadata: import("@langchain/langgraph").LastValue<Record<string, unknown> | undefined>;
798
+ rewriteCount: import("@langchain/langgraph").BaseChannel<number, number | import("@langchain/langgraph").OverwriteValue<number>, unknown>;
799
+ originalSubject: import("@langchain/langgraph").LastValue<string | undefined>;
800
+ rewrittenQuery: import("@langchain/langgraph").LastValue<string | undefined>;
801
+ relevanceScore: import("@langchain/langgraph").LastValue<number | undefined>;
802
+ plannedQueries: import("@langchain/langgraph").BaseChannel<string[], string[] | import("@langchain/langgraph").OverwriteValue<string[]>, unknown>;
803
+ tokenUsage: import("@langchain/langgraph").BaseChannel<{
804
+ promptTokens: number;
805
+ completionTokens: number;
806
+ }, {
807
+ promptTokens: number;
808
+ completionTokens: number;
809
+ } | import("@langchain/langgraph").OverwriteValue<{
810
+ promptTokens: number;
811
+ completionTokens: number;
812
+ }>, unknown>;
813
+ }>;
814
+ reranker: import("@langchain/langgraph").UpdateType<{
815
+ subject: import("@langchain/langgraph").LastValue<string>;
816
+ tenantId: import("@langchain/langgraph").LastValue<string | undefined>;
817
+ forceRefresh: import("@langchain/langgraph").BaseChannel<boolean, boolean | import("@langchain/langgraph").OverwriteValue<boolean>, unknown>;
818
+ maxResults: import("@langchain/langgraph").BaseChannel<number, number | import("@langchain/langgraph").OverwriteValue<number>, unknown>;
819
+ freshnessDays: import("@langchain/langgraph").BaseChannel<number, number | import("@langchain/langgraph").OverwriteValue<number>, unknown>;
820
+ cachedResearch: import("@langchain/langgraph").LastValue<{
821
+ id: string;
822
+ subject: string;
823
+ summary: string;
824
+ sourceSummaries: {
825
+ url: string;
826
+ title: string;
827
+ keyTakeaways: string;
828
+ relevance: number;
829
+ tags: string[];
830
+ language: string;
831
+ }[];
832
+ sourceUrls: string[];
833
+ searchQueries: string[];
834
+ status: "active" | "stale" | "refreshing" | "archived" | "low_confidence";
835
+ confidenceScore: number;
836
+ sourceCount: number;
837
+ tags: string[];
838
+ language: string;
839
+ rawResultCount: number;
840
+ metadata: Record<string, unknown>;
841
+ createdAt?: string | undefined;
842
+ updatedAt?: string | undefined;
843
+ expiresAt?: string | undefined;
844
+ tenantId?: string | undefined;
845
+ keyFindings?: string[] | undefined;
846
+ limitations?: string[] | undefined;
847
+ } | undefined>;
848
+ isFresh: import("@langchain/langgraph").BaseChannel<boolean, boolean | import("@langchain/langgraph").OverwriteValue<boolean>, unknown>;
849
+ searchResults: import("@langchain/langgraph").BaseChannel<import("../../infra/search/searxngClient.js").SearxngSearchResult[], import("../../infra/search/searxngClient.js").SearxngSearchResult[] | import("@langchain/langgraph").OverwriteValue<import("../../infra/search/searxngClient.js").SearxngSearchResult[]>, unknown>;
850
+ summarization: import("@langchain/langgraph").LastValue<import("../summarization/summarizer.js").SummarizationResult | undefined>;
851
+ research: import("@langchain/langgraph").LastValue<{
852
+ id: string;
853
+ subject: string;
854
+ summary: string;
855
+ sourceSummaries: {
856
+ url: string;
857
+ title: string;
858
+ keyTakeaways: string;
859
+ relevance: number;
860
+ tags: string[];
861
+ language: string;
862
+ }[];
863
+ sourceUrls: string[];
864
+ searchQueries: string[];
865
+ status: "active" | "stale" | "refreshing" | "archived" | "low_confidence";
866
+ confidenceScore: number;
867
+ sourceCount: number;
868
+ tags: string[];
869
+ language: string;
870
+ rawResultCount: number;
871
+ metadata: Record<string, unknown>;
872
+ createdAt?: string | undefined;
873
+ updatedAt?: string | undefined;
874
+ expiresAt?: string | undefined;
875
+ tenantId?: string | undefined;
876
+ keyFindings?: string[] | undefined;
877
+ limitations?: string[] | undefined;
878
+ } | undefined>;
879
+ source: import("@langchain/langgraph").BaseChannel<"cache" | "web" | "cache+web", "cache" | "web" | "cache+web" | import("@langchain/langgraph").OverwriteValue<"cache" | "web" | "cache+web">, unknown>;
880
+ currentPhase: import("@langchain/langgraph").BaseChannel<import("../state/schema.js").RmsPhase, import("../state/schema.js").RmsPhase | import("@langchain/langgraph").OverwriteValue<import("../state/schema.js").RmsPhase>, unknown>;
881
+ error: import("@langchain/langgraph").LastValue<string | undefined>;
882
+ traceId: import("@langchain/langgraph").LastValue<string | undefined>;
883
+ metadata: import("@langchain/langgraph").LastValue<Record<string, unknown> | undefined>;
884
+ rewriteCount: import("@langchain/langgraph").BaseChannel<number, number | import("@langchain/langgraph").OverwriteValue<number>, unknown>;
885
+ originalSubject: import("@langchain/langgraph").LastValue<string | undefined>;
886
+ rewrittenQuery: import("@langchain/langgraph").LastValue<string | undefined>;
887
+ relevanceScore: import("@langchain/langgraph").LastValue<number | undefined>;
888
+ plannedQueries: import("@langchain/langgraph").BaseChannel<string[], string[] | import("@langchain/langgraph").OverwriteValue<string[]>, unknown>;
889
+ tokenUsage: import("@langchain/langgraph").BaseChannel<{
890
+ promptTokens: number;
891
+ completionTokens: number;
892
+ }, {
893
+ promptTokens: number;
894
+ completionTokens: number;
895
+ } | import("@langchain/langgraph").OverwriteValue<{
896
+ promptTokens: number;
897
+ completionTokens: number;
898
+ }>, unknown>;
899
+ }>;
900
+ human_approval: import("@langchain/langgraph").UpdateType<{
901
+ subject: import("@langchain/langgraph").LastValue<string>;
902
+ tenantId: import("@langchain/langgraph").LastValue<string | undefined>;
903
+ forceRefresh: import("@langchain/langgraph").BaseChannel<boolean, boolean | import("@langchain/langgraph").OverwriteValue<boolean>, unknown>;
904
+ maxResults: import("@langchain/langgraph").BaseChannel<number, number | import("@langchain/langgraph").OverwriteValue<number>, unknown>;
905
+ freshnessDays: import("@langchain/langgraph").BaseChannel<number, number | import("@langchain/langgraph").OverwriteValue<number>, unknown>;
906
+ cachedResearch: import("@langchain/langgraph").LastValue<{
907
+ id: string;
908
+ subject: string;
909
+ summary: string;
910
+ sourceSummaries: {
911
+ url: string;
912
+ title: string;
913
+ keyTakeaways: string;
914
+ relevance: number;
915
+ tags: string[];
916
+ language: string;
917
+ }[];
918
+ sourceUrls: string[];
919
+ searchQueries: string[];
920
+ status: "active" | "stale" | "refreshing" | "archived" | "low_confidence";
921
+ confidenceScore: number;
922
+ sourceCount: number;
923
+ tags: string[];
924
+ language: string;
925
+ rawResultCount: number;
926
+ metadata: Record<string, unknown>;
927
+ createdAt?: string | undefined;
928
+ updatedAt?: string | undefined;
929
+ expiresAt?: string | undefined;
930
+ tenantId?: string | undefined;
931
+ keyFindings?: string[] | undefined;
932
+ limitations?: string[] | undefined;
933
+ } | undefined>;
934
+ isFresh: import("@langchain/langgraph").BaseChannel<boolean, boolean | import("@langchain/langgraph").OverwriteValue<boolean>, unknown>;
935
+ searchResults: import("@langchain/langgraph").BaseChannel<import("../../infra/search/searxngClient.js").SearxngSearchResult[], import("../../infra/search/searxngClient.js").SearxngSearchResult[] | import("@langchain/langgraph").OverwriteValue<import("../../infra/search/searxngClient.js").SearxngSearchResult[]>, unknown>;
936
+ summarization: import("@langchain/langgraph").LastValue<import("../summarization/summarizer.js").SummarizationResult | undefined>;
937
+ research: import("@langchain/langgraph").LastValue<{
938
+ id: string;
939
+ subject: string;
940
+ summary: string;
941
+ sourceSummaries: {
942
+ url: string;
943
+ title: string;
944
+ keyTakeaways: string;
945
+ relevance: number;
946
+ tags: string[];
947
+ language: string;
948
+ }[];
949
+ sourceUrls: string[];
950
+ searchQueries: string[];
951
+ status: "active" | "stale" | "refreshing" | "archived" | "low_confidence";
952
+ confidenceScore: number;
953
+ sourceCount: number;
954
+ tags: string[];
955
+ language: string;
956
+ rawResultCount: number;
957
+ metadata: Record<string, unknown>;
958
+ createdAt?: string | undefined;
959
+ updatedAt?: string | undefined;
960
+ expiresAt?: string | undefined;
961
+ tenantId?: string | undefined;
962
+ keyFindings?: string[] | undefined;
963
+ limitations?: string[] | undefined;
964
+ } | undefined>;
965
+ source: import("@langchain/langgraph").BaseChannel<"cache" | "web" | "cache+web", "cache" | "web" | "cache+web" | import("@langchain/langgraph").OverwriteValue<"cache" | "web" | "cache+web">, unknown>;
966
+ currentPhase: import("@langchain/langgraph").BaseChannel<import("../state/schema.js").RmsPhase, import("../state/schema.js").RmsPhase | import("@langchain/langgraph").OverwriteValue<import("../state/schema.js").RmsPhase>, unknown>;
967
+ error: import("@langchain/langgraph").LastValue<string | undefined>;
968
+ traceId: import("@langchain/langgraph").LastValue<string | undefined>;
969
+ metadata: import("@langchain/langgraph").LastValue<Record<string, unknown> | undefined>;
970
+ rewriteCount: import("@langchain/langgraph").BaseChannel<number, number | import("@langchain/langgraph").OverwriteValue<number>, unknown>;
971
+ originalSubject: import("@langchain/langgraph").LastValue<string | undefined>;
972
+ rewrittenQuery: import("@langchain/langgraph").LastValue<string | undefined>;
973
+ relevanceScore: import("@langchain/langgraph").LastValue<number | undefined>;
974
+ plannedQueries: import("@langchain/langgraph").BaseChannel<string[], string[] | import("@langchain/langgraph").OverwriteValue<string[]>, unknown>;
975
+ tokenUsage: import("@langchain/langgraph").BaseChannel<{
976
+ promptTokens: number;
977
+ completionTokens: number;
978
+ }, {
979
+ promptTokens: number;
980
+ completionTokens: number;
981
+ } | import("@langchain/langgraph").OverwriteValue<{
982
+ promptTokens: number;
983
+ completionTokens: number;
984
+ }>, unknown>;
985
+ }>;
986
+ summarizer: import("@langchain/langgraph").UpdateType<{
987
+ subject: import("@langchain/langgraph").LastValue<string>;
988
+ tenantId: import("@langchain/langgraph").LastValue<string | undefined>;
989
+ forceRefresh: import("@langchain/langgraph").BaseChannel<boolean, boolean | import("@langchain/langgraph").OverwriteValue<boolean>, unknown>;
990
+ maxResults: import("@langchain/langgraph").BaseChannel<number, number | import("@langchain/langgraph").OverwriteValue<number>, unknown>;
991
+ freshnessDays: import("@langchain/langgraph").BaseChannel<number, number | import("@langchain/langgraph").OverwriteValue<number>, unknown>;
992
+ cachedResearch: import("@langchain/langgraph").LastValue<{
993
+ id: string;
994
+ subject: string;
995
+ summary: string;
996
+ sourceSummaries: {
997
+ url: string;
998
+ title: string;
999
+ keyTakeaways: string;
1000
+ relevance: number;
1001
+ tags: string[];
1002
+ language: string;
1003
+ }[];
1004
+ sourceUrls: string[];
1005
+ searchQueries: string[];
1006
+ status: "active" | "stale" | "refreshing" | "archived" | "low_confidence";
1007
+ confidenceScore: number;
1008
+ sourceCount: number;
1009
+ tags: string[];
1010
+ language: string;
1011
+ rawResultCount: number;
1012
+ metadata: Record<string, unknown>;
1013
+ createdAt?: string | undefined;
1014
+ updatedAt?: string | undefined;
1015
+ expiresAt?: string | undefined;
1016
+ tenantId?: string | undefined;
1017
+ keyFindings?: string[] | undefined;
1018
+ limitations?: string[] | undefined;
1019
+ } | undefined>;
1020
+ isFresh: import("@langchain/langgraph").BaseChannel<boolean, boolean | import("@langchain/langgraph").OverwriteValue<boolean>, unknown>;
1021
+ searchResults: import("@langchain/langgraph").BaseChannel<import("../../infra/search/searxngClient.js").SearxngSearchResult[], import("../../infra/search/searxngClient.js").SearxngSearchResult[] | import("@langchain/langgraph").OverwriteValue<import("../../infra/search/searxngClient.js").SearxngSearchResult[]>, unknown>;
1022
+ summarization: import("@langchain/langgraph").LastValue<import("../summarization/summarizer.js").SummarizationResult | undefined>;
1023
+ research: import("@langchain/langgraph").LastValue<{
1024
+ id: string;
1025
+ subject: string;
1026
+ summary: string;
1027
+ sourceSummaries: {
1028
+ url: string;
1029
+ title: string;
1030
+ keyTakeaways: string;
1031
+ relevance: number;
1032
+ tags: string[];
1033
+ language: string;
1034
+ }[];
1035
+ sourceUrls: string[];
1036
+ searchQueries: string[];
1037
+ status: "active" | "stale" | "refreshing" | "archived" | "low_confidence";
1038
+ confidenceScore: number;
1039
+ sourceCount: number;
1040
+ tags: string[];
1041
+ language: string;
1042
+ rawResultCount: number;
1043
+ metadata: Record<string, unknown>;
1044
+ createdAt?: string | undefined;
1045
+ updatedAt?: string | undefined;
1046
+ expiresAt?: string | undefined;
1047
+ tenantId?: string | undefined;
1048
+ keyFindings?: string[] | undefined;
1049
+ limitations?: string[] | undefined;
1050
+ } | undefined>;
1051
+ source: import("@langchain/langgraph").BaseChannel<"cache" | "web" | "cache+web", "cache" | "web" | "cache+web" | import("@langchain/langgraph").OverwriteValue<"cache" | "web" | "cache+web">, unknown>;
1052
+ currentPhase: import("@langchain/langgraph").BaseChannel<import("../state/schema.js").RmsPhase, import("../state/schema.js").RmsPhase | import("@langchain/langgraph").OverwriteValue<import("../state/schema.js").RmsPhase>, unknown>;
1053
+ error: import("@langchain/langgraph").LastValue<string | undefined>;
1054
+ traceId: import("@langchain/langgraph").LastValue<string | undefined>;
1055
+ metadata: import("@langchain/langgraph").LastValue<Record<string, unknown> | undefined>;
1056
+ rewriteCount: import("@langchain/langgraph").BaseChannel<number, number | import("@langchain/langgraph").OverwriteValue<number>, unknown>;
1057
+ originalSubject: import("@langchain/langgraph").LastValue<string | undefined>;
1058
+ rewrittenQuery: import("@langchain/langgraph").LastValue<string | undefined>;
1059
+ relevanceScore: import("@langchain/langgraph").LastValue<number | undefined>;
1060
+ plannedQueries: import("@langchain/langgraph").BaseChannel<string[], string[] | import("@langchain/langgraph").OverwriteValue<string[]>, unknown>;
1061
+ tokenUsage: import("@langchain/langgraph").BaseChannel<{
1062
+ promptTokens: number;
1063
+ completionTokens: number;
1064
+ }, {
1065
+ promptTokens: number;
1066
+ completionTokens: number;
1067
+ } | import("@langchain/langgraph").OverwriteValue<{
1068
+ promptTokens: number;
1069
+ completionTokens: number;
1070
+ }>, unknown>;
1071
+ }>;
1072
+ persister: import("@langchain/langgraph").UpdateType<{
1073
+ subject: import("@langchain/langgraph").LastValue<string>;
1074
+ tenantId: import("@langchain/langgraph").LastValue<string | undefined>;
1075
+ forceRefresh: import("@langchain/langgraph").BaseChannel<boolean, boolean | import("@langchain/langgraph").OverwriteValue<boolean>, unknown>;
1076
+ maxResults: import("@langchain/langgraph").BaseChannel<number, number | import("@langchain/langgraph").OverwriteValue<number>, unknown>;
1077
+ freshnessDays: import("@langchain/langgraph").BaseChannel<number, number | import("@langchain/langgraph").OverwriteValue<number>, unknown>;
1078
+ cachedResearch: import("@langchain/langgraph").LastValue<{
1079
+ id: string;
1080
+ subject: string;
1081
+ summary: string;
1082
+ sourceSummaries: {
1083
+ url: string;
1084
+ title: string;
1085
+ keyTakeaways: string;
1086
+ relevance: number;
1087
+ tags: string[];
1088
+ language: string;
1089
+ }[];
1090
+ sourceUrls: string[];
1091
+ searchQueries: string[];
1092
+ status: "active" | "stale" | "refreshing" | "archived" | "low_confidence";
1093
+ confidenceScore: number;
1094
+ sourceCount: number;
1095
+ tags: string[];
1096
+ language: string;
1097
+ rawResultCount: number;
1098
+ metadata: Record<string, unknown>;
1099
+ createdAt?: string | undefined;
1100
+ updatedAt?: string | undefined;
1101
+ expiresAt?: string | undefined;
1102
+ tenantId?: string | undefined;
1103
+ keyFindings?: string[] | undefined;
1104
+ limitations?: string[] | undefined;
1105
+ } | undefined>;
1106
+ isFresh: import("@langchain/langgraph").BaseChannel<boolean, boolean | import("@langchain/langgraph").OverwriteValue<boolean>, unknown>;
1107
+ searchResults: import("@langchain/langgraph").BaseChannel<import("../../infra/search/searxngClient.js").SearxngSearchResult[], import("../../infra/search/searxngClient.js").SearxngSearchResult[] | import("@langchain/langgraph").OverwriteValue<import("../../infra/search/searxngClient.js").SearxngSearchResult[]>, unknown>;
1108
+ summarization: import("@langchain/langgraph").LastValue<import("../summarization/summarizer.js").SummarizationResult | undefined>;
1109
+ research: import("@langchain/langgraph").LastValue<{
1110
+ id: string;
1111
+ subject: string;
1112
+ summary: string;
1113
+ sourceSummaries: {
1114
+ url: string;
1115
+ title: string;
1116
+ keyTakeaways: string;
1117
+ relevance: number;
1118
+ tags: string[];
1119
+ language: string;
1120
+ }[];
1121
+ sourceUrls: string[];
1122
+ searchQueries: string[];
1123
+ status: "active" | "stale" | "refreshing" | "archived" | "low_confidence";
1124
+ confidenceScore: number;
1125
+ sourceCount: number;
1126
+ tags: string[];
1127
+ language: string;
1128
+ rawResultCount: number;
1129
+ metadata: Record<string, unknown>;
1130
+ createdAt?: string | undefined;
1131
+ updatedAt?: string | undefined;
1132
+ expiresAt?: string | undefined;
1133
+ tenantId?: string | undefined;
1134
+ keyFindings?: string[] | undefined;
1135
+ limitations?: string[] | undefined;
1136
+ } | undefined>;
1137
+ source: import("@langchain/langgraph").BaseChannel<"cache" | "web" | "cache+web", "cache" | "web" | "cache+web" | import("@langchain/langgraph").OverwriteValue<"cache" | "web" | "cache+web">, unknown>;
1138
+ currentPhase: import("@langchain/langgraph").BaseChannel<import("../state/schema.js").RmsPhase, import("../state/schema.js").RmsPhase | import("@langchain/langgraph").OverwriteValue<import("../state/schema.js").RmsPhase>, unknown>;
1139
+ error: import("@langchain/langgraph").LastValue<string | undefined>;
1140
+ traceId: import("@langchain/langgraph").LastValue<string | undefined>;
1141
+ metadata: import("@langchain/langgraph").LastValue<Record<string, unknown> | undefined>;
1142
+ rewriteCount: import("@langchain/langgraph").BaseChannel<number, number | import("@langchain/langgraph").OverwriteValue<number>, unknown>;
1143
+ originalSubject: import("@langchain/langgraph").LastValue<string | undefined>;
1144
+ rewrittenQuery: import("@langchain/langgraph").LastValue<string | undefined>;
1145
+ relevanceScore: import("@langchain/langgraph").LastValue<number | undefined>;
1146
+ plannedQueries: import("@langchain/langgraph").BaseChannel<string[], string[] | import("@langchain/langgraph").OverwriteValue<string[]>, unknown>;
1147
+ tokenUsage: import("@langchain/langgraph").BaseChannel<{
1148
+ promptTokens: number;
1149
+ completionTokens: number;
1150
+ }, {
1151
+ promptTokens: number;
1152
+ completionTokens: number;
1153
+ } | import("@langchain/langgraph").OverwriteValue<{
1154
+ promptTokens: number;
1155
+ completionTokens: number;
1156
+ }>, unknown>;
1157
+ }>;
1158
+ }, unknown, unknown>;
1159
+ //# sourceMappingURL=workflow.d.ts.map