@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,61 @@
1
+ // ── Public API entrypoint for @farukada/langchain-ts-rms ──
2
+ // Tool composite factories
3
+ export { createRmsLifecycleTools, createRmsToolFromEnv, createRmsLifecycleToolsFromEnv, createAllRmsToolsFromEnv, } from "./rmsTool.js";
4
+ // Individual tool factories
5
+ export { createResearchTool, buildWorkflowDeps, conductResearchDirect, streamResearch, } from "./tools/research.js";
6
+ export { createGetResearchTool } from "./tools/getResearch.js";
7
+ export { createListResearchTool } from "./tools/listResearch.js";
8
+ export { createSearchResearchTool } from "./tools/searchResearch.js";
9
+ export { createDeleteResearchTool } from "./tools/deleteResearch.js";
10
+ export { createGetDatetimeTool } from "./tools/getDatetime.js";
11
+ export { createRefreshResearchTool } from "./tools/refreshResearch.js";
12
+ // Helpers
13
+ export { stripNulls, normalizeInput, paginate, wrapToolResponse, getResearchOrThrow, matchesFilters, sanitizeNumericValues, } from "./helpers.js";
14
+ // Schemas
15
+ export { RmsResearchInputSchema, laxBool, laxInt, laxFloat } from "./schemas/researchSchemas.js";
16
+ export { GetResearchInputSchema, ListResearchInputSchema, SearchResearchInputSchema, DeleteResearchInputSchema, GetDateTimeInputSchema, RefreshResearchInputSchema, coerceLifecycleInput, } from "./schemas/lifecycleSchemas.js";
17
+ export { RMS_NODE_NAMES } from "../app/graph/workflow.js";
18
+ export { summarizeTokenUsage } from "./helpers.js";
19
+ // Domain contracts
20
+ export { ResearchSchema, ResearchStatusSchema, SourceSummarySchema, RESPONSE_CONTRACT_VERSION, } from "../domain/contracts.js";
21
+ export { isResearchFresh, calculateExpiresAt, buildResearch, buildCompositeSummary, mergeResearchMetadata, getResearchAge, getResearchAgeDays, } from "../domain/researchUtils.js";
22
+ // Core logic
23
+ export { evaluateFreshness } from "../app/freshness/evaluator.js";
24
+ export { summarizeSearchResults, normalizeTags } from "../app/summarization/summarizer.js";
25
+ export { SourceSummaryOutputSchema, BatchSummaryOutputSchema, } from "../app/summarization/summarizationSchema.js";
26
+ export { synthesizeSummary } from "../app/summarization/synthesizer.js";
27
+ export { SynthesisOutputSchema } from "../app/summarization/synthesisSchema.js";
28
+ // Query rewriting (agentic RAG)
29
+ export { evaluateQueryRelevance, MAX_REWRITES, MIN_RELEVANCE_SCORE, } from "../app/queryRewriting/rewriter.js";
30
+ // Re-ranking
31
+ export { rerankSearchResults } from "../app/reranking/reranker.js";
32
+ // Query planning
33
+ export { planSearchQueries } from "../app/queryPlanning/planner.js";
34
+ export { QueryPlanOutputSchema } from "../app/queryPlanning/planner.js";
35
+ // LangGraph workflow
36
+ export { createRmsWorkflow } from "../app/graph/workflow.js";
37
+ export { RmsStateAnnotation } from "../app/state/schema.js";
38
+ // Governance
39
+ export { checkGuardrail, requiresHumanApproval, evaluateGuardrails, DEFAULT_FORBIDDEN_PATTERNS, DEFAULT_MAX_SEARCH_COUNT, DEFAULT_MIN_CONFIDENCE, } from "../app/governance/guardrails.js";
40
+ // Infrastructure factories
41
+ export { createEmbeddingProvider } from "../infra/embeddings/embeddingProvider.js";
42
+ export { createChatModelProvider } from "../infra/chat/chatModelProvider.js";
43
+ export { performSearch } from "../infra/search/searxngClient.js";
44
+ export { isBlockedUrl, filterBlockedUrls, DEFAULT_BLOCKED_DOMAINS, } from "../infra/search/urlBlocklist.js";
45
+ export { extractContent, extractTextFromHtml, batchExtractContent, } from "../infra/content/contentExtractor.js";
46
+ export { createQdrantClient, bootstrapQdrantCollections, RESEARCH_COLLECTION, } from "../infra/vector/qdrantClient.js";
47
+ export { ResearchRepository } from "../infra/vector/researchRepository.js";
48
+ // Observability
49
+ export { log, logInfo, logWarn, logError, logDebug, setLogWriter, setLogSilent, setLogLevel, withNodeTiming, ErrorCodes, } from "../infra/observability/tracing.js";
50
+ // Config
51
+ export { loadEnv, resetEnv } from "../config/env.js";
52
+ // Checkpointer
53
+ export { createCheckpointer } from "../infra/checkpoint/checkpointerFactory.js";
54
+ // Health Check
55
+ export { checkHealth } from "../infra/healthCheck.js";
56
+ // Rate Limiting
57
+ export { TokenBucketLimiter, searchLimiter, contentLimiter, createSearchLimiter, createContentLimiter, } from "../infra/rateLimit/rateLimiter.js";
58
+ export { CircuitBreaker, searchBreaker, contentBreaker, } from "../infra/rateLimit/circuitBreaker.js";
59
+ // Token Usage
60
+ export { TokenUsageCollector } from "../infra/observability/tokenCounter.js";
61
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { StructuredToolInterface } from "@langchain/core/tools";
2
+ import type { RmsToolDeps, CreateRmsToolFromEnvOptions, AllRmsTools } from "./types.js";
3
+ import { createResearchTool } from "./tools/research.js";
4
+ import { createGetResearchTool } from "./tools/getResearch.js";
5
+ import { createListResearchTool } from "./tools/listResearch.js";
6
+ import { createSearchResearchTool } from "./tools/searchResearch.js";
7
+ import { createDeleteResearchTool } from "./tools/deleteResearch.js";
8
+ import { createGetDatetimeTool } from "./tools/getDatetime.js";
9
+ import { createRefreshResearchTool } from "./tools/refreshResearch.js";
10
+ export { createResearchTool, createGetResearchTool, createListResearchTool, createSearchResearchTool, createDeleteResearchTool, createGetDatetimeTool, createRefreshResearchTool, };
11
+ /**
12
+ * Creates all RMS lifecycle tools (get, list, search, delete, refresh, datetime).
13
+ * Does NOT include the main research tool.
14
+ */
15
+ export declare function createRmsLifecycleTools(deps: RmsToolDeps): StructuredToolInterface[];
16
+ /**
17
+ * Creates the main `rms_research` tool from environment variables.
18
+ */
19
+ export declare function createRmsToolFromEnv(options?: CreateRmsToolFromEnvOptions): Promise<StructuredToolInterface>;
20
+ /**
21
+ * Creates all lifecycle tools from environment variables.
22
+ */
23
+ export declare function createRmsLifecycleToolsFromEnv(options?: CreateRmsToolFromEnvOptions): Promise<StructuredToolInterface[]>;
24
+ /**
25
+ * Creates ALL RMS tools (research + lifecycle) from environment variables.
26
+ */
27
+ export declare function createAllRmsToolsFromEnv(options?: CreateRmsToolFromEnvOptions): Promise<AllRmsTools>;
28
+ //# sourceMappingURL=rmsTool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rmsTool.d.ts","sourceRoot":"","sources":["../../src/lib/rmsTool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,2BAA2B,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACxF,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAWvE,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,EACxB,qBAAqB,EACrB,yBAAyB,GAC1B,CAAC;AAIF;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,WAAW,GAAG,uBAAuB,EAAE,CASpF;AA2BD;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,CAAC,EAAE,2BAA2B,GACpC,OAAO,CAAC,uBAAuB,CAAC,CAGlC;AAED;;GAEG;AACH,wBAAsB,8BAA8B,CAClD,OAAO,CAAC,EAAE,2BAA2B,GACpC,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAGpC;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,CAAC,EAAE,2BAA2B,GACpC,OAAO,CAAC,WAAW,CAAC,CAMtB"}
@@ -0,0 +1,79 @@
1
+ import { createResearchTool } from "./tools/research.js";
2
+ import { createGetResearchTool } from "./tools/getResearch.js";
3
+ import { createListResearchTool } from "./tools/listResearch.js";
4
+ import { createSearchResearchTool } from "./tools/searchResearch.js";
5
+ import { createDeleteResearchTool } from "./tools/deleteResearch.js";
6
+ import { createGetDatetimeTool } from "./tools/getDatetime.js";
7
+ import { createRefreshResearchTool } from "./tools/refreshResearch.js";
8
+ import { createEmbeddingProvider } from "../infra/embeddings/embeddingProvider.js";
9
+ import { createChatModelProvider } from "../infra/chat/chatModelProvider.js";
10
+ import { ResearchRepository } from "../infra/vector/researchRepository.js";
11
+ import { createQdrantClient } from "../infra/vector/qdrantClient.js";
12
+ import { createCheckpointer } from "../infra/checkpoint/checkpointerFactory.js";
13
+ import { loadEnv } from "../config/env.js";
14
+ // ── Re-exports for convenience ──
15
+ export { createResearchTool, createGetResearchTool, createListResearchTool, createSearchResearchTool, createDeleteResearchTool, createGetDatetimeTool, createRefreshResearchTool, };
16
+ // ── Composite factories ──
17
+ /**
18
+ * Creates all RMS lifecycle tools (get, list, search, delete, refresh, datetime).
19
+ * Does NOT include the main research tool.
20
+ */
21
+ export function createRmsLifecycleTools(deps) {
22
+ return [
23
+ createGetResearchTool(deps),
24
+ createListResearchTool(deps),
25
+ createSearchResearchTool(deps),
26
+ createDeleteResearchTool(deps),
27
+ createRefreshResearchTool(deps),
28
+ createGetDatetimeTool(),
29
+ ];
30
+ }
31
+ /**
32
+ * Internal: builds RmsToolDeps from environment variables.
33
+ * Creates a single shared Qdrant client and passes it to the repository.
34
+ */
35
+ async function buildEnvDeps(options) {
36
+ const env = loadEnv();
37
+ const embeddings = createEmbeddingProvider();
38
+ const chatModel = createChatModelProvider();
39
+ const client = createQdrantClient();
40
+ const checkpointer = await createCheckpointer();
41
+ const researchRepository = new ResearchRepository({ embeddings, client });
42
+ const deps = {
43
+ researchRepository,
44
+ embeddings,
45
+ chatModel,
46
+ checkpointer,
47
+ freshnessDays: options?.freshnessDays ?? env.RMS_FRESHNESS_DAYS,
48
+ };
49
+ if (options?.toolName)
50
+ deps.toolName = options.toolName;
51
+ if (options?.toolDescription)
52
+ deps.toolDescription = options.toolDescription;
53
+ return deps;
54
+ }
55
+ /**
56
+ * Creates the main `rms_research` tool from environment variables.
57
+ */
58
+ export async function createRmsToolFromEnv(options) {
59
+ const deps = await buildEnvDeps(options);
60
+ return createResearchTool(deps);
61
+ }
62
+ /**
63
+ * Creates all lifecycle tools from environment variables.
64
+ */
65
+ export async function createRmsLifecycleToolsFromEnv(options) {
66
+ const deps = await buildEnvDeps(options);
67
+ return createRmsLifecycleTools(deps);
68
+ }
69
+ /**
70
+ * Creates ALL RMS tools (research + lifecycle) from environment variables.
71
+ */
72
+ export async function createAllRmsToolsFromEnv(options) {
73
+ const deps = await buildEnvDeps(options);
74
+ return {
75
+ researchTool: createResearchTool(deps),
76
+ lifecycleTools: createRmsLifecycleTools(deps),
77
+ };
78
+ }
79
+ //# sourceMappingURL=rmsTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rmsTool.js","sourceRoot":"","sources":["../../src/lib/rmsTool.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AACnF,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAE7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAChF,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,mCAAmC;AAEnC,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,EACxB,qBAAqB,EACrB,yBAAyB,GAC1B,CAAC;AAEF,4BAA4B;AAE5B;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAiB;IACvD,OAAO;QACL,qBAAqB,CAAC,IAAI,CAAC;QAC3B,sBAAsB,CAAC,IAAI,CAAC;QAC5B,wBAAwB,CAAC,IAAI,CAAC;QAC9B,wBAAwB,CAAC,IAAI,CAAC;QAC9B,yBAAyB,CAAC,IAAI,CAAC;QAC/B,qBAAqB,EAAE;KACxB,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,YAAY,CAAC,OAAqC;IAC/D,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;IACtB,MAAM,UAAU,GAAG,uBAAuB,EAAE,CAAC;IAC7C,MAAM,SAAS,GAAG,uBAAuB,EAAE,CAAC;IAC5C,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;IACpC,MAAM,YAAY,GAAG,MAAM,kBAAkB,EAAE,CAAC;IAEhD,MAAM,kBAAkB,GAAG,IAAI,kBAAkB,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;IAE1E,MAAM,IAAI,GAAgB;QACxB,kBAAkB;QAClB,UAAU;QACV,SAAS;QACT,YAAY;QACZ,aAAa,EAAE,OAAO,EAAE,aAAa,IAAI,GAAG,CAAC,kBAAkB;KAChE,CAAC;IACF,IAAI,OAAO,EAAE,QAAQ;QAAE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IACxD,IAAI,OAAO,EAAE,eAAe;QAAE,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IAC7E,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAAqC;IAErC,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;IACzC,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,OAAqC;IAErC,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;IACzC,OAAO,uBAAuB,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,OAAqC;IAErC,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;IACzC,OAAO;QACL,YAAY,EAAE,kBAAkB,CAAC,IAAI,CAAC;QACtC,cAAc,EAAE,uBAAuB,CAAC,IAAI,CAAC;KAC9C,CAAC;AACJ,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { z } from "zod/v4";
2
+ /**
3
+ * Coerce LLM-sent string booleans / string numbers in raw tool input.
4
+ * Returns a shallow copy with coerced values; the original is not mutated.
5
+ *
6
+ * Apply to tool inputs containing laxBool / laxInt fields. Tools whose
7
+ * schemas only declare uuid / string inputs can skip this.
8
+ */
9
+ export declare function coerceLifecycleInput<T extends Record<string, unknown>>(raw: T): T;
10
+ export declare const GetResearchInputSchema: z.ZodObject<{
11
+ researchId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
12
+ research_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
13
+ id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
14
+ }, z.core.$strip>;
15
+ export declare const ListResearchInputSchema: z.ZodObject<{
16
+ status: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodString]>>>;
17
+ tenantId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
18
+ tenant_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
19
+ limit: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>>;
20
+ offset: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>>;
21
+ }, z.core.$strip>;
22
+ export declare const SearchResearchInputSchema: z.ZodObject<{
23
+ query: z.ZodString;
24
+ tenantId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
25
+ tenant_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
26
+ tags: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodString]>>>;
27
+ limit: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>>;
28
+ }, z.core.$strip>;
29
+ export declare const DeleteResearchInputSchema: z.ZodObject<{
30
+ researchId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
31
+ research_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
32
+ id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
33
+ }, z.core.$strip>;
34
+ export declare const GetDateTimeInputSchema: z.ZodObject<{}, z.core.$strip>;
35
+ export declare const RefreshResearchInputSchema: z.ZodObject<{
36
+ researchId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
37
+ research_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
38
+ id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
39
+ maxResults: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>>;
40
+ max_results: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>>;
41
+ }, z.core.$strip>;
42
+ //# sourceMappingURL=lifecycleSchemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycleSchemas.d.ts","sourceRoot":"","sources":["../../../src/lib/schemas/lifecycleSchemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAmB3B;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CA+CjF;AAID,eAAO,MAAM,sBAAsB;;;;iBAkB/B,CAAC;AAEL,eAAO,MAAM,uBAAuB;;;;;;iBAyBlC,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;;;iBAgBpC,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;iBAkBlC,CAAC;AAEL,eAAO,MAAM,sBAAsB,gCAE4C,CAAC;AAEhF,eAAO,MAAM,0BAA0B;;;;;;iBAuBnC,CAAC"}
@@ -0,0 +1,176 @@
1
+ import { z } from "zod/v4";
2
+ import { laxInt } from "./researchSchemas.js";
3
+ /* -------------------------------------------------------------------------- */
4
+ /* Runtime coercion helper */
5
+ /* */
6
+ /* LLMs sometimes send booleans as strings ("true"/"false", "1"/"0", */
7
+ /* "yes"/"no") and numbers as strings ("100") or even "null". */
8
+ /* This helper normalizes the raw input BEFORE Zod schema parsing so that */
9
+ /* the JSON Schema–safe schemas can still accept messy LLM output. */
10
+ /* -------------------------------------------------------------------------- */
11
+ const BOOL_TRUE = new Set(["true", "1", "yes", "on"]);
12
+ const BOOL_FALSE = new Set(["false", "0", "no", "off"]);
13
+ const BOOL_FIELDS = new Set(["forceRefresh", "force_refresh"]);
14
+ const INT_FIELDS = new Set(["maxResults", "max_results", "limit", "offset"]);
15
+ const ARRAY_FIELDS = new Set(["status", "tags"]);
16
+ /**
17
+ * Coerce LLM-sent string booleans / string numbers in raw tool input.
18
+ * Returns a shallow copy with coerced values; the original is not mutated.
19
+ *
20
+ * Apply to tool inputs containing laxBool / laxInt fields. Tools whose
21
+ * schemas only declare uuid / string inputs can skip this.
22
+ */
23
+ export function coerceLifecycleInput(raw) {
24
+ const out = { ...raw };
25
+ for (const key of Object.keys(out)) {
26
+ const val = out[key];
27
+ // Treat the string "null" the same as actual null
28
+ if (val === "null") {
29
+ out[key] = null;
30
+ continue;
31
+ }
32
+ // Coerce string values for array fields
33
+ if (ARRAY_FIELDS.has(key) && typeof val === "string") {
34
+ const trimmed = val.trim();
35
+ if (trimmed === "" || trimmed === "undefined") {
36
+ out[key] = undefined;
37
+ }
38
+ else {
39
+ out[key] = [trimmed];
40
+ }
41
+ continue;
42
+ }
43
+ // Clean array fields that contain "null" strings or empty strings
44
+ if (ARRAY_FIELDS.has(key) && Array.isArray(val)) {
45
+ const cleaned = val.filter((v) => v !== null && v !== "null" && v !== "");
46
+ out[key] = cleaned.length > 0 ? cleaned : undefined;
47
+ continue;
48
+ }
49
+ // Coerce string booleans
50
+ if (BOOL_FIELDS.has(key) && typeof val === "string") {
51
+ const s = val.toLowerCase().trim();
52
+ if (BOOL_TRUE.has(s))
53
+ out[key] = true;
54
+ else if (BOOL_FALSE.has(s))
55
+ out[key] = false;
56
+ continue;
57
+ }
58
+ // Coerce string integers
59
+ if (INT_FIELDS.has(key) && typeof val === "string") {
60
+ const n = Number(val);
61
+ out[key] = Number.isFinite(n) ? Math.trunc(n) : undefined;
62
+ continue;
63
+ }
64
+ }
65
+ return out;
66
+ }
67
+ // ── Lifecycle schemas ──
68
+ export const GetResearchInputSchema = z
69
+ .object({
70
+ researchId: z
71
+ .string()
72
+ .min(1)
73
+ .nullable()
74
+ .optional()
75
+ .meta({ description: "The UUID of the research entry to retrieve" }),
76
+ research_id: z
77
+ .string()
78
+ .min(1)
79
+ .nullable()
80
+ .optional()
81
+ .meta({ description: "Alias for researchId" }),
82
+ id: z.string().min(1).nullable().optional().meta({ description: "Alias for researchId" }),
83
+ })
84
+ .refine((data) => !!(data.researchId ?? data.research_id ?? data.id), {
85
+ message: "One of researchId, research_id, or id must be provided",
86
+ });
87
+ export const ListResearchInputSchema = z.object({
88
+ status: z
89
+ .union([z.array(z.string()), z.string()])
90
+ .nullable()
91
+ .optional()
92
+ .meta({
93
+ description: "Filter by status(es): active, stale, refreshing, archived, low_confidence",
94
+ examples: ["active", ["active", "stale"]],
95
+ }),
96
+ tenantId: z.string().nullable().optional().meta({ description: "Filter by tenant ID" }),
97
+ tenant_id: z.string().nullable().optional().meta({ description: "Alias for tenantId" }),
98
+ limit: laxInt
99
+ .nullable()
100
+ .optional()
101
+ .meta({
102
+ description: "Maximum number of results to return. Defaults to 20.",
103
+ examples: [10, 20, 50],
104
+ }),
105
+ offset: laxInt
106
+ .nullable()
107
+ .optional()
108
+ .meta({
109
+ description: "Offset for pagination. Defaults to 0.",
110
+ examples: [0, 20, 40],
111
+ }),
112
+ });
113
+ export const SearchResearchInputSchema = z.object({
114
+ query: z
115
+ .string()
116
+ .min(1)
117
+ .meta({ description: "Semantic search query to find relevant research entries" }),
118
+ tenantId: z.string().nullable().optional().meta({ description: "Filter by tenant ID" }),
119
+ tenant_id: z.string().nullable().optional().meta({ description: "Alias for tenantId" }),
120
+ tags: z
121
+ .union([z.array(z.string()), z.string()])
122
+ .nullable()
123
+ .optional()
124
+ .meta({ description: "Filter by tags" }),
125
+ limit: laxInt
126
+ .nullable()
127
+ .optional()
128
+ .meta({ description: "Maximum number of results. Defaults to 5." }),
129
+ });
130
+ export const DeleteResearchInputSchema = z
131
+ .object({
132
+ researchId: z
133
+ .string()
134
+ .min(1)
135
+ .nullable()
136
+ .optional()
137
+ .meta({ description: "The UUID of the research entry to delete" }),
138
+ research_id: z
139
+ .string()
140
+ .min(1)
141
+ .nullable()
142
+ .optional()
143
+ .meta({ description: "Alias for researchId" }),
144
+ id: z.string().min(1).nullable().optional().meta({ description: "Alias for researchId" }),
145
+ })
146
+ .refine((data) => !!(data.researchId ?? data.research_id ?? data.id), {
147
+ message: "One of researchId, research_id, or id must be provided",
148
+ });
149
+ export const GetDateTimeInputSchema = z
150
+ .object({})
151
+ .describe("No input required. Returns the current date, time, and timezone.");
152
+ export const RefreshResearchInputSchema = z
153
+ .object({
154
+ researchId: z
155
+ .string()
156
+ .min(1)
157
+ .nullable()
158
+ .optional()
159
+ .meta({ description: "The UUID of the research entry to force-refresh" }),
160
+ research_id: z
161
+ .string()
162
+ .min(1)
163
+ .nullable()
164
+ .optional()
165
+ .meta({ description: "Alias for researchId" }),
166
+ id: z.string().min(1).nullable().optional().meta({ description: "Alias for researchId" }),
167
+ maxResults: laxInt
168
+ .nullable()
169
+ .optional()
170
+ .meta({ description: "Maximum search results to process during refresh. Defaults to 10." }),
171
+ max_results: laxInt.nullable().optional().meta({ description: "Alias for maxResults" }),
172
+ })
173
+ .refine((data) => !!(data.researchId ?? data.research_id ?? data.id), {
174
+ message: "One of researchId, research_id, or id must be provided",
175
+ });
176
+ //# sourceMappingURL=lifecycleSchemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycleSchemas.js","sourceRoot":"","sources":["../../../src/lib/schemas/lifecycleSchemas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { z } from "zod/v4";
2
+ /** Boolean that also accepts string representations (JSON Schema compat). */
3
+ export declare const laxBool: z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>;
4
+ /** Integer that also accepts string representations (JSON Schema compat). */
5
+ export declare const laxInt: z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>;
6
+ /** Float that also accepts string representations (JSON Schema compat). */
7
+ export declare const laxFloat: z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>;
8
+ export declare const RmsResearchInputSchema: z.ZodObject<{
9
+ subject: z.ZodOptional<z.ZodNullable<z.ZodString>>;
10
+ topic: z.ZodOptional<z.ZodNullable<z.ZodString>>;
11
+ query: z.ZodOptional<z.ZodNullable<z.ZodString>>;
12
+ question: z.ZodOptional<z.ZodNullable<z.ZodString>>;
13
+ tenantId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
14
+ tenant_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
15
+ forceRefresh: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>>;
16
+ force_refresh: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>>;
17
+ maxResults: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>>;
18
+ max_results: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>>;
19
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
20
+ traceId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
21
+ }, z.core.$strip>;
22
+ export type RmsResearchInput = z.infer<typeof RmsResearchInputSchema>;
23
+ //# sourceMappingURL=researchSchemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"researchSchemas.d.ts","sourceRoot":"","sources":["../../../src/lib/schemas/researchSchemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAW3B,6EAA6E;AAC7E,eAAO,MAAM,OAAO,kDAAqC,CAAC;AAE1D,6EAA6E;AAC7E,eAAO,MAAM,MAAM,iDAA0C,CAAC;AAE9D,2EAA2E;AAC3E,eAAO,MAAM,QAAQ,iDAAoC,CAAC;AAI1D,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;iBAiE/B,CAAC;AAEL,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC"}
@@ -0,0 +1,83 @@
1
+ import { z } from "zod/v4";
2
+ /* -------------------------------------------------------------------------- */
3
+ /* JSON Schema–safe lax types */
4
+ /* */
5
+ /* These schemas avoid `.transform()` which Zod v4's `toJSONSchema()` */
6
+ /* refuses to serialize. LLM string coercion happens in */
7
+ /* `coerceLifecycleInput()` BEFORE schema parsing so the proper branch */
8
+ /* of each union matches. */
9
+ /* -------------------------------------------------------------------------- */
10
+ /** Boolean that also accepts string representations (JSON Schema compat). */
11
+ export const laxBool = z.union([z.boolean(), z.string()]);
12
+ /** Integer that also accepts string representations (JSON Schema compat). */
13
+ export const laxInt = z.union([z.number().int(), z.string()]);
14
+ /** Float that also accepts string representations (JSON Schema compat). */
15
+ export const laxFloat = z.union([z.number(), z.string()]);
16
+ // ── Main research tool input schema ──
17
+ export const RmsResearchInputSchema = z
18
+ .object({
19
+ subject: z
20
+ .string()
21
+ .min(1)
22
+ .nullable()
23
+ .optional()
24
+ .meta({
25
+ title: "subject",
26
+ description: "The research topic or question to investigate",
27
+ examples: ["latest trends in AI safety", "React server components best practices"],
28
+ }),
29
+ topic: z
30
+ .string()
31
+ .min(1)
32
+ .nullable()
33
+ .optional()
34
+ .meta({ description: "Alias for subject — the research topic" }),
35
+ query: z
36
+ .string()
37
+ .min(1)
38
+ .nullable()
39
+ .optional()
40
+ .meta({ description: "Alias for subject — the research query" }),
41
+ question: z
42
+ .string()
43
+ .min(1)
44
+ .nullable()
45
+ .optional()
46
+ .meta({ description: "Alias for subject — the research question" }),
47
+ tenantId: z
48
+ .string()
49
+ .nullable()
50
+ .optional()
51
+ .meta({ description: "Optional tenant ID for multi-tenancy isolation" }),
52
+ tenant_id: z.string().nullable().optional().meta({ description: "Alias for tenantId" }),
53
+ forceRefresh: laxBool
54
+ .nullable()
55
+ .optional()
56
+ .meta({
57
+ description: "Force re-research even if cached data is fresh. Defaults to false.",
58
+ examples: [false, true],
59
+ }),
60
+ force_refresh: laxBool.nullable().optional().meta({ description: "Alias for forceRefresh" }),
61
+ maxResults: laxInt
62
+ .nullable()
63
+ .optional()
64
+ .meta({
65
+ description: "Maximum number of web search results to process. Defaults to 10.",
66
+ examples: [5, 10, 20],
67
+ }),
68
+ max_results: laxInt.nullable().optional().meta({ description: "Alias for maxResults" }),
69
+ metadata: z
70
+ .record(z.string(), z.unknown())
71
+ .nullable()
72
+ .optional()
73
+ .meta({ description: "Optional extra metadata to attach to the research entry" }),
74
+ traceId: z
75
+ .string()
76
+ .nullable()
77
+ .optional()
78
+ .meta({ description: "Optional trace ID for observability correlation" }),
79
+ })
80
+ .refine((data) => !!(data.subject ?? data.topic ?? data.query ?? data.question), {
81
+ message: "At least one of subject, topic, query, or question must be provided",
82
+ });
83
+ //# sourceMappingURL=researchSchemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"researchSchemas.js","sourceRoot":"","sources":["../../../src/lib/schemas/researchSchemas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { RmsToolDeps } from "../types.js";
2
+ /**
3
+ * Creates the `rms_delete_research` tool.
4
+ * Deletes a research entry by its UUID.
5
+ */
6
+ export declare function createDeleteResearchTool(deps: RmsToolDeps): import("@langchain/core/tools").DynamicStructuredTool<import("zod/v4").ZodObject<{
7
+ researchId: import("zod/v4").ZodOptional<import("zod/v4").ZodNullable<import("zod/v4").ZodString>>;
8
+ research_id: import("zod/v4").ZodOptional<import("zod/v4").ZodNullable<import("zod/v4").ZodString>>;
9
+ id: import("zod/v4").ZodOptional<import("zod/v4").ZodNullable<import("zod/v4").ZodString>>;
10
+ }, import("zod/v4/core").$strip>, {
11
+ researchId?: string | null | undefined;
12
+ research_id?: string | null | undefined;
13
+ id?: string | null | undefined;
14
+ }, {
15
+ researchId?: string | null | undefined;
16
+ research_id?: string | null | undefined;
17
+ id?: string | null | undefined;
18
+ }, string, unknown, "rms_delete_research">;
19
+ //# sourceMappingURL=deleteResearch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deleteResearch.d.ts","sourceRoot":"","sources":["../../../src/lib/tools/deleteResearch.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAK/C;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,WAAW;;;;;;;;;;;;2CA8BzD"}
@@ -0,0 +1,37 @@
1
+ import { tool } from "@langchain/core/tools";
2
+ import { DeleteResearchInputSchema, coerceLifecycleInput } from "../schemas/lifecycleSchemas.js";
3
+ import { stripNulls, normalizeInput, wrapToolResponse, getResearchOrThrow } from "../helpers.js";
4
+ import { logError, ErrorCodes } from "../../infra/observability/tracing.js";
5
+ /**
6
+ * Creates the `rms_delete_research` tool.
7
+ * Deletes a research entry by its UUID.
8
+ */
9
+ export function createDeleteResearchTool(deps) {
10
+ return tool(async (rawInput) => {
11
+ try {
12
+ const input = normalizeInput(stripNulls(coerceLifecycleInput(rawInput)));
13
+ const researchId = input["researchId"];
14
+ // Verify it exists first
15
+ await getResearchOrThrow(deps.researchRepository, researchId);
16
+ await deps.researchRepository.deleteByIds([researchId]);
17
+ return wrapToolResponse({
18
+ deleted: true,
19
+ researchId,
20
+ });
21
+ }
22
+ catch (err) {
23
+ logError("rms_delete_research failed", {
24
+ errorCode: ErrorCodes.RESEARCH_NOT_FOUND,
25
+ error: err instanceof Error ? err.message : String(err),
26
+ });
27
+ return wrapToolResponse({
28
+ error: err instanceof Error ? err.message : String(err),
29
+ });
30
+ }
31
+ }, {
32
+ name: "rms_delete_research",
33
+ description: "Delete a specific research entry from the cache by its UUID. The entry is permanently removed. Use this to clean up outdated or irrelevant research data.",
34
+ schema: DeleteResearchInputSchema,
35
+ });
36
+ }
37
+ //# sourceMappingURL=deleteResearch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deleteResearch.js","sourceRoot":"","sources":["../../../src/lib/tools/deleteResearch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAE7C,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACjG,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACjG,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AAE5E;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAAiB;IACxD,OAAO,IAAI,CACT,KAAK,EAAE,QAAQ,EAAE,EAAE;QACjB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,cAAc,CAAC,UAAU,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACzE,MAAM,UAAU,GAAG,KAAK,CAAC,YAAY,CAAW,CAAC;YACjD,yBAAyB;YACzB,MAAM,kBAAkB,CAAC,IAAI,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;YAC9D,MAAM,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;YACxD,OAAO,gBAAgB,CAAC;gBACtB,OAAO,EAAE,IAAI;gBACb,UAAU;aACX,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,4BAA4B,EAAE;gBACrC,SAAS,EAAE,UAAU,CAAC,kBAAkB;gBACxC,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACxD,CAAC,CAAC;YACH,OAAO,gBAAgB,CAAC;gBACtB,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACxD,CAAC,CAAC;QACL,CAAC;IACH,CAAC,EACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EACT,2JAA2J;QAC7J,MAAM,EAAE,yBAAyB;KAClC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Creates the `rms_get_datetime` tool.
3
+ * Returns the current date, time, and timezone — useful for agents
4
+ * that need to know "now" for freshness decisions.
5
+ */
6
+ export declare function createGetDatetimeTool(): import("@langchain/core/tools").DynamicStructuredTool<import("zod/v4").ZodObject<{}, import("zod/v4/core").$strip>, Record<string, never>, Record<string, never>, string, unknown, "rms_get_datetime">;
7
+ //# sourceMappingURL=getDatetime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getDatetime.d.ts","sourceRoot":"","sources":["../../../src/lib/tools/getDatetime.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,wBAAgB,qBAAqB,2MAoBpC"}