@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.
- package/LICENSE +21 -0
- package/README.md +446 -0
- package/dist/app/freshness/evaluator.d.ts +23 -0
- package/dist/app/freshness/evaluator.d.ts.map +1 -0
- package/dist/app/freshness/evaluator.js +72 -0
- package/dist/app/freshness/evaluator.js.map +1 -0
- package/dist/app/governance/guardrails.d.ts +51 -0
- package/dist/app/governance/guardrails.d.ts.map +1 -0
- package/dist/app/governance/guardrails.js +68 -0
- package/dist/app/governance/guardrails.js.map +1 -0
- package/dist/app/graph/workflow.d.ts +1159 -0
- package/dist/app/graph/workflow.d.ts.map +1 -0
- package/dist/app/graph/workflow.js +468 -0
- package/dist/app/graph/workflow.js.map +1 -0
- package/dist/app/queryPlanning/planner.d.ts +18 -0
- package/dist/app/queryPlanning/planner.d.ts.map +1 -0
- package/dist/app/queryPlanning/planner.js +80 -0
- package/dist/app/queryPlanning/planner.js.map +1 -0
- package/dist/app/queryRewriting/rewriter.d.ts +32 -0
- package/dist/app/queryRewriting/rewriter.d.ts.map +1 -0
- package/dist/app/queryRewriting/rewriter.js +111 -0
- package/dist/app/queryRewriting/rewriter.js.map +1 -0
- package/dist/app/reranking/reranker.d.ts +27 -0
- package/dist/app/reranking/reranker.d.ts.map +1 -0
- package/dist/app/reranking/reranker.js +67 -0
- package/dist/app/reranking/reranker.js.map +1 -0
- package/dist/app/state/schema.d.ts +121 -0
- package/dist/app/state/schema.d.ts.map +1 -0
- package/dist/app/state/schema.js +88 -0
- package/dist/app/state/schema.js.map +1 -0
- package/dist/app/summarization/summarizationSchema.d.ts +34 -0
- package/dist/app/summarization/summarizationSchema.d.ts.map +1 -0
- package/dist/app/summarization/summarizationSchema.js +65 -0
- package/dist/app/summarization/summarizationSchema.js.map +1 -0
- package/dist/app/summarization/summarizer.d.ts +51 -0
- package/dist/app/summarization/summarizer.d.ts.map +1 -0
- package/dist/app/summarization/summarizer.js +181 -0
- package/dist/app/summarization/summarizer.js.map +1 -0
- package/dist/app/summarization/synthesisSchema.d.ts +16 -0
- package/dist/app/summarization/synthesisSchema.d.ts.map +1 -0
- package/dist/app/summarization/synthesisSchema.js +43 -0
- package/dist/app/summarization/synthesisSchema.js.map +1 -0
- package/dist/app/summarization/synthesizer.d.ts +21 -0
- package/dist/app/summarization/synthesizer.d.ts.map +1 -0
- package/dist/app/summarization/synthesizer.js +86 -0
- package/dist/app/summarization/synthesizer.js.map +1 -0
- package/dist/config/env.d.ts +49 -0
- package/dist/config/env.d.ts.map +1 -0
- package/dist/config/env.js +54 -0
- package/dist/config/env.js.map +1 -0
- package/dist/domain/contracts.d.ts +59 -0
- package/dist/domain/contracts.d.ts.map +1 -0
- package/dist/domain/contracts.js +52 -0
- package/dist/domain/contracts.js.map +1 -0
- package/dist/domain/ports.d.ts +63 -0
- package/dist/domain/ports.d.ts.map +1 -0
- package/dist/domain/ports.js +2 -0
- package/dist/domain/ports.js.map +1 -0
- package/dist/domain/researchUtils.d.ts +51 -0
- package/dist/domain/researchUtils.d.ts.map +1 -0
- package/dist/domain/researchUtils.js +85 -0
- package/dist/domain/researchUtils.js.map +1 -0
- package/dist/infra/chat/chatModelProvider.d.ts +4 -0
- package/dist/infra/chat/chatModelProvider.d.ts.map +1 -0
- package/dist/infra/chat/chatModelProvider.js +13 -0
- package/dist/infra/chat/chatModelProvider.js.map +1 -0
- package/dist/infra/checkpoint/checkpointerFactory.d.ts +38 -0
- package/dist/infra/checkpoint/checkpointerFactory.d.ts.map +1 -0
- package/dist/infra/checkpoint/checkpointerFactory.js +54 -0
- package/dist/infra/checkpoint/checkpointerFactory.js.map +1 -0
- package/dist/infra/content/contentExtractor.d.ts +58 -0
- package/dist/infra/content/contentExtractor.d.ts.map +1 -0
- package/dist/infra/content/contentExtractor.js +296 -0
- package/dist/infra/content/contentExtractor.js.map +1 -0
- package/dist/infra/embeddings/embeddingProvider.d.ts +4 -0
- package/dist/infra/embeddings/embeddingProvider.d.ts.map +1 -0
- package/dist/infra/embeddings/embeddingProvider.js +11 -0
- package/dist/infra/embeddings/embeddingProvider.js.map +1 -0
- package/dist/infra/healthCheck.d.ts +23 -0
- package/dist/infra/healthCheck.d.ts.map +1 -0
- package/dist/infra/healthCheck.js +57 -0
- package/dist/infra/healthCheck.js.map +1 -0
- package/dist/infra/observability/tokenCounter.d.ts +30 -0
- package/dist/infra/observability/tokenCounter.d.ts.map +1 -0
- package/dist/infra/observability/tokenCounter.js +46 -0
- package/dist/infra/observability/tokenCounter.js.map +1 -0
- package/dist/infra/observability/tracing.d.ts +38 -0
- package/dist/infra/observability/tracing.d.ts.map +1 -0
- package/dist/infra/observability/tracing.js +92 -0
- package/dist/infra/observability/tracing.js.map +1 -0
- package/dist/infra/rateLimit/circuitBreaker.d.ts +54 -0
- package/dist/infra/rateLimit/circuitBreaker.d.ts.map +1 -0
- package/dist/infra/rateLimit/circuitBreaker.js +97 -0
- package/dist/infra/rateLimit/circuitBreaker.js.map +1 -0
- package/dist/infra/rateLimit/rateLimiter.d.ts +42 -0
- package/dist/infra/rateLimit/rateLimiter.d.ts.map +1 -0
- package/dist/infra/rateLimit/rateLimiter.js +89 -0
- package/dist/infra/rateLimit/rateLimiter.js.map +1 -0
- package/dist/infra/search/searxngClient.d.ts +29 -0
- package/dist/infra/search/searxngClient.d.ts.map +1 -0
- package/dist/infra/search/searxngClient.js +85 -0
- package/dist/infra/search/searxngClient.js.map +1 -0
- package/dist/infra/search/urlBlocklist.d.ts +28 -0
- package/dist/infra/search/urlBlocklist.d.ts.map +1 -0
- package/dist/infra/search/urlBlocklist.js +78 -0
- package/dist/infra/search/urlBlocklist.js.map +1 -0
- package/dist/infra/vector/qdrantClient.d.ts +18 -0
- package/dist/infra/vector/qdrantClient.d.ts.map +1 -0
- package/dist/infra/vector/qdrantClient.js +82 -0
- package/dist/infra/vector/qdrantClient.js.map +1 -0
- package/dist/infra/vector/researchRepository.d.ts +39 -0
- package/dist/infra/vector/researchRepository.d.ts.map +1 -0
- package/dist/infra/vector/researchRepository.js +294 -0
- package/dist/infra/vector/researchRepository.js.map +1 -0
- package/dist/lib/helpers.d.ts +50 -0
- package/dist/lib/helpers.d.ts.map +1 -0
- package/dist/lib/helpers.js +124 -0
- package/dist/lib/helpers.js.map +1 -0
- package/dist/lib/index.d.ts +65 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +61 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/rmsTool.d.ts +28 -0
- package/dist/lib/rmsTool.d.ts.map +1 -0
- package/dist/lib/rmsTool.js +79 -0
- package/dist/lib/rmsTool.js.map +1 -0
- package/dist/lib/schemas/lifecycleSchemas.d.ts +42 -0
- package/dist/lib/schemas/lifecycleSchemas.d.ts.map +1 -0
- package/dist/lib/schemas/lifecycleSchemas.js +176 -0
- package/dist/lib/schemas/lifecycleSchemas.js.map +1 -0
- package/dist/lib/schemas/researchSchemas.d.ts +23 -0
- package/dist/lib/schemas/researchSchemas.d.ts.map +1 -0
- package/dist/lib/schemas/researchSchemas.js +83 -0
- package/dist/lib/schemas/researchSchemas.js.map +1 -0
- package/dist/lib/tools/deleteResearch.d.ts +19 -0
- package/dist/lib/tools/deleteResearch.d.ts.map +1 -0
- package/dist/lib/tools/deleteResearch.js +37 -0
- package/dist/lib/tools/deleteResearch.js.map +1 -0
- package/dist/lib/tools/getDatetime.d.ts +7 -0
- package/dist/lib/tools/getDatetime.d.ts.map +1 -0
- package/dist/lib/tools/getDatetime.js +26 -0
- package/dist/lib/tools/getDatetime.js.map +1 -0
- package/dist/lib/tools/getResearch.d.ts +19 -0
- package/dist/lib/tools/getResearch.d.ts.map +1 -0
- package/dist/lib/tools/getResearch.js +32 -0
- package/dist/lib/tools/getResearch.js.map +1 -0
- package/dist/lib/tools/listResearch.d.ts +25 -0
- package/dist/lib/tools/listResearch.d.ts.map +1 -0
- package/dist/lib/tools/listResearch.js +41 -0
- package/dist/lib/tools/listResearch.js.map +1 -0
- package/dist/lib/tools/refreshResearch.d.ts +27 -0
- package/dist/lib/tools/refreshResearch.d.ts.map +1 -0
- package/dist/lib/tools/refreshResearch.js +81 -0
- package/dist/lib/tools/refreshResearch.js.map +1 -0
- package/dist/lib/tools/research.d.ts +108 -0
- package/dist/lib/tools/research.d.ts.map +1 -0
- package/dist/lib/tools/research.js +273 -0
- package/dist/lib/tools/research.js.map +1 -0
- package/dist/lib/tools/searchResearch.d.ts +25 -0
- package/dist/lib/tools/searchResearch.d.ts.map +1 -0
- package/dist/lib/tools/searchResearch.js +45 -0
- package/dist/lib/tools/searchResearch.js.map +1 -0
- package/dist/lib/types.d.ts +51 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js +2 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/mcp/index.d.ts +12 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +12 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/server.d.ts +45 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +440 -0
- package/dist/mcp/server.js.map +1 -0
- 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":"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"}
|
|
@@ -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"}
|