@hashgraphonline/conversational-agent 0.1.218 → 0.1.220

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 (63) hide show
  1. package/dist/cjs/base-agent.d.ts +2 -0
  2. package/dist/cjs/core/tool-registry.d.ts +7 -0
  3. package/dist/cjs/index.cjs +1 -1
  4. package/dist/cjs/index.cjs.map +1 -1
  5. package/dist/cjs/langchain/form-aware-agent-executor.d.ts +14 -3
  6. package/dist/cjs/langchain/form-validating-tool-wrapper.d.ts +81 -0
  7. package/dist/cjs/langchain/index.d.ts +1 -0
  8. package/dist/esm/index.js +7 -4
  9. package/dist/esm/index.js.map +1 -1
  10. package/dist/esm/index10.js +2 -2
  11. package/dist/esm/index21.js +1 -1
  12. package/dist/esm/index23.js +3 -3
  13. package/dist/esm/index25.js +0 -4
  14. package/dist/esm/index25.js.map +1 -1
  15. package/dist/esm/index29.js +78 -9
  16. package/dist/esm/index29.js.map +1 -1
  17. package/dist/esm/index30.js +184 -1215
  18. package/dist/esm/index30.js.map +1 -1
  19. package/dist/esm/index31.js +1193 -116
  20. package/dist/esm/index31.js.map +1 -1
  21. package/dist/esm/index32.js +120 -99
  22. package/dist/esm/index32.js.map +1 -1
  23. package/dist/esm/index33.js +106 -38
  24. package/dist/esm/index33.js.map +1 -1
  25. package/dist/esm/index34.js +41 -98
  26. package/dist/esm/index34.js.map +1 -1
  27. package/dist/esm/index35.js +103 -21
  28. package/dist/esm/index35.js.map +1 -1
  29. package/dist/esm/index36.js +21 -12
  30. package/dist/esm/index36.js.map +1 -1
  31. package/dist/esm/index37.js +11 -6
  32. package/dist/esm/index37.js.map +1 -1
  33. package/dist/esm/index38.js +6 -4
  34. package/dist/esm/index38.js.map +1 -1
  35. package/dist/esm/index39.js +5 -224
  36. package/dist/esm/index39.js.map +1 -1
  37. package/dist/esm/index40.js +213 -142
  38. package/dist/esm/index40.js.map +1 -1
  39. package/dist/esm/index41.js +181 -24
  40. package/dist/esm/index41.js.map +1 -1
  41. package/dist/esm/index42.js +24 -89
  42. package/dist/esm/index42.js.map +1 -1
  43. package/dist/esm/index43.js +95 -0
  44. package/dist/esm/index43.js.map +1 -0
  45. package/dist/esm/index5.js +2 -2
  46. package/dist/esm/index6.js +3 -7
  47. package/dist/esm/index6.js.map +1 -1
  48. package/dist/esm/index7.js.map +1 -1
  49. package/dist/esm/index8.js +1 -1
  50. package/dist/types/base-agent.d.ts +2 -0
  51. package/dist/types/core/tool-registry.d.ts +7 -0
  52. package/dist/types/langchain/form-aware-agent-executor.d.ts +14 -3
  53. package/dist/types/langchain/form-validating-tool-wrapper.d.ts +81 -0
  54. package/dist/types/langchain/index.d.ts +1 -0
  55. package/package.json +1 -1
  56. package/src/base-agent.ts +4 -0
  57. package/src/conversational-agent.ts +3 -14
  58. package/src/core/tool-registry.ts +45 -1
  59. package/src/langchain/form-aware-agent-executor.ts +219 -80
  60. package/src/langchain/form-validating-tool-wrapper.ts +356 -0
  61. package/src/langchain/index.ts +1 -0
  62. package/src/langchain/langchain-agent.ts +24 -104
  63. package/src/services/formatters/format-converter-registry.ts +0 -5
@@ -1,10 +1,15 @@
1
- const FIELD_PRIORITIES = {
2
- ESSENTIAL: "essential",
3
- COMMON: "common",
4
- ADVANCED: "advanced",
5
- EXPERT: "expert"
1
+ import { EntityFormat } from "./index26.js";
2
+ const ENTITY_PATTERNS = {
3
+ TOPIC_REFERENCE: "the topic",
4
+ TOKEN_REFERENCE: "the token"
6
5
  };
6
+ ({
7
+ TOPIC: EntityFormat.TOPIC_ID,
8
+ TOKEN: EntityFormat.TOKEN_ID,
9
+ ACCOUNT: EntityFormat.ACCOUNT_ID,
10
+ CONTRACT: EntityFormat.CONTRACT_ID
11
+ });
7
12
  export {
8
- FIELD_PRIORITIES
13
+ ENTITY_PATTERNS
9
14
  };
10
15
  //# sourceMappingURL=index37.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index37.js","sources":["../../src/constants/form-priorities.ts"],"sourcesContent":["/**\n * Form field priorities for progressive disclosure\n */\nexport const FIELD_PRIORITIES = {\n ESSENTIAL: 'essential',\n COMMON: 'common', \n ADVANCED: 'advanced',\n EXPERT: 'expert'\n} as const;\n\n/**\n * Form field types\n */\nexport const FORM_FIELD_TYPES = {\n TEXT: 'text',\n NUMBER: 'number',\n SELECT: 'select',\n CHECKBOX: 'checkbox',\n TEXTAREA: 'textarea',\n FILE: 'file',\n ARRAY: 'array',\n OBJECT: 'object',\n CURRENCY: 'currency',\n PERCENTAGE: 'percentage',\n} as const;"],"names":[],"mappings":"AAGO,MAAM,mBAAmB;AAAA,EAC9B,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,QAAQ;AACV;"}
1
+ {"version":3,"file":"index37.js","sources":["../../src/constants/entity-references.ts"],"sourcesContent":["/**\n * Common entity reference patterns used across the application\n */\nexport const ENTITY_PATTERNS = {\n TOPIC_REFERENCE: 'the topic',\n TOKEN_REFERENCE: 'the token',\n ACCOUNT_REFERENCE: 'the account',\n TRANSACTION_REFERENCE: 'the transaction',\n CONTRACT_REFERENCE: 'the contract',\n} as const;\n\n/**\n * Entity type identifiers\n */\nimport { EntityFormat } from '../services/formatters/types';\n\nexport const ENTITY_TYPES = {\n TOPIC: EntityFormat.TOPIC_ID,\n TOKEN: EntityFormat.TOKEN_ID,\n ACCOUNT: EntityFormat.ACCOUNT_ID,\n TRANSACTION: 'transaction',\n CONTRACT: EntityFormat.CONTRACT_ID,\n} as const;\n"],"names":[],"mappings":";AAGO,MAAM,kBAAkB;AAAA,EAC7B,iBAAiB;AAAA,EACjB,iBAAiB;AAInB;AAAA,CAO4B;AAAA,EAC1B,OAAO,aAAa;AAAA,EACpB,OAAO,aAAa;AAAA,EACpB,SAAS,aAAa;AAAA,EAEtB,UAAU,aAAa;AACzB;"}
@@ -1,8 +1,10 @@
1
- const ERROR_MESSAGES = {
2
- TOO_MANY_REQUESTS: "Too many requests. Please wait a moment and try again.",
3
- RATE_LIMITED: "I'm receiving too many requests right now. Please wait a moment and try again."
1
+ const FIELD_PRIORITIES = {
2
+ ESSENTIAL: "essential",
3
+ COMMON: "common",
4
+ ADVANCED: "advanced",
5
+ EXPERT: "expert"
4
6
  };
5
7
  export {
6
- ERROR_MESSAGES
8
+ FIELD_PRIORITIES
7
9
  };
8
10
  //# sourceMappingURL=index38.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index38.js","sources":["../../src/constants/messages.ts"],"sourcesContent":["/**\n * Common error messages and user feedback strings\n */\nexport const ERROR_MESSAGES = {\n TOO_MANY_REQUESTS: 'Too many requests. Please wait a moment and try again.',\n RATE_LIMITED: \"I'm receiving too many requests right now. Please wait a moment and try again.\",\n SYSTEM_ERROR: 'System error occurred',\n INVALID_INPUT: 'Invalid input provided',\n NETWORK_ERROR: 'Network error occurred',\n} as const;\n\n/**\n * Common success and status messages\n */\nexport const STATUS_MESSAGES = {\n OPERATION_SUCCESSFUL: 'Operation completed successfully',\n PROCESSING: 'Processing your request...',\n READY: 'Ready to process requests',\n INITIALIZING: 'Initializing...',\n} as const;"],"names":[],"mappings":"AAGO,MAAM,iBAAiB;AAAA,EAC5B,mBAAmB;AAAA,EACnB,cAAc;AAIhB;"}
1
+ {"version":3,"file":"index38.js","sources":["../../src/constants/form-priorities.ts"],"sourcesContent":["/**\n * Form field priorities for progressive disclosure\n */\nexport const FIELD_PRIORITIES = {\n ESSENTIAL: 'essential',\n COMMON: 'common', \n ADVANCED: 'advanced',\n EXPERT: 'expert'\n} as const;\n\n/**\n * Form field types\n */\nexport const FORM_FIELD_TYPES = {\n TEXT: 'text',\n NUMBER: 'number',\n SELECT: 'select',\n CHECKBOX: 'checkbox',\n TEXTAREA: 'textarea',\n FILE: 'file',\n ARRAY: 'array',\n OBJECT: 'object',\n CURRENCY: 'currency',\n PERCENTAGE: 'percentage',\n} as const;"],"names":[],"mappings":"AAGO,MAAM,mBAAmB;AAAA,EAC9B,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,QAAQ;AACV;"}
@@ -1,227 +1,8 @@
1
- import { z } from "zod";
2
- import { Logger } from "@hashgraphonline/standards-sdk";
3
- import { FormGenerator } from "./index10.js";
4
- import { isFormValidatable } from "@hashgraphonline/standards-agent-kit";
5
- class ToolRegistry {
6
- constructor(logger) {
7
- this.tools = /* @__PURE__ */ new Map();
8
- this.formGenerator = new FormGenerator();
9
- this.logger = logger || new Logger({ module: "ToolRegistry" });
10
- }
11
- /**
12
- * Register a tool with the registry
13
- */
14
- registerTool(tool, options = {}) {
15
- const capabilities = this.analyzeToolCapabilities(tool);
16
- const metadata = {
17
- name: tool.name,
18
- version: "1.0.0",
19
- category: options.metadata?.category || "core",
20
- description: tool.description,
21
- capabilities,
22
- dependencies: [],
23
- schema: tool.schema,
24
- ...options.metadata
25
- };
26
- try {
27
- if (!metadata.entityResolutionPreferences) {
28
- const schemaRecord = tool.schema;
29
- const rawPrefs = schemaRecord && typeof schemaRecord === "object" && schemaRecord["_entityResolutionPreferences"];
30
- if (rawPrefs && typeof rawPrefs === "object") {
31
- metadata.entityResolutionPreferences = rawPrefs;
32
- }
33
- }
34
- } catch {
35
- }
36
- try {
37
- const schemaRecord = tool.schema;
38
- const schemaDef = schemaRecord && schemaRecord._def;
39
- if (schemaDef?.typeName === "ZodObject") {
40
- const shape = typeof schemaDef.shape === "function" ? schemaDef.shape?.() || {} : schemaDef.shape || {};
41
- const metadataField = shape["metadata"];
42
- const isStringArray = !!metadataField && metadataField._def?.typeName === "ZodArray" && metadataField._def?.type?._def?.typeName === "ZodString";
43
- if (isStringArray && typeof tool.description === "string") {
44
- if (!metadata.entityResolutionPreferences) {
45
- metadata.entityResolutionPreferences = {
46
- inscription: "hrl"
47
- };
48
- }
49
- const note = " NOTE: When referencing inscriptions or media, provide canonical Hashlink Resource Locators (e.g., hcs://<standard>/<topicId>) rather than external URLs or embedded JSON.";
50
- if (!tool.description.includes("Hashlink Resource Locators")) {
51
- tool.description = `${tool.description}${note}`;
52
- }
53
- }
54
- }
55
- } catch {
56
- }
57
- let finalTool = tool;
58
- try {
59
- if (metadata.entityResolutionPreferences) {
60
- finalTool["entityResolutionPreferences"] = metadata.entityResolutionPreferences;
61
- }
62
- } catch {
63
- }
64
- const entry = {
65
- tool: finalTool,
66
- metadata,
67
- originalTool: tool
68
- };
69
- this.tools.set(tool.name, entry);
70
- }
71
- /**
72
- * Get a tool by name
73
- */
74
- getTool(name) {
75
- return this.tools.get(name) || null;
76
- }
77
- /**
78
- * Get tools by capability
79
- */
80
- getToolsByCapability(capability, value) {
81
- const results = [];
82
- for (const entry of this.tools.values()) {
83
- if (value !== void 0) {
84
- if (entry.metadata.capabilities[capability] === value) {
85
- results.push(entry);
86
- }
87
- } else if (entry.metadata.capabilities[capability]) {
88
- results.push(entry);
89
- }
90
- }
91
- return results;
92
- }
93
- /**
94
- * Get tools by query
95
- */
96
- getToolsByQuery(query) {
97
- const results = [];
98
- for (const entry of this.tools.values()) {
99
- let matches = true;
100
- if (query.name && entry.metadata.name !== query.name) {
101
- matches = false;
102
- }
103
- if (query.category && entry.metadata.category !== query.category) {
104
- matches = false;
105
- }
106
- if (query.capabilities) {
107
- for (const [key, value] of Object.entries(query.capabilities)) {
108
- if (entry.metadata.capabilities[key] !== value) {
109
- matches = false;
110
- break;
111
- }
112
- }
113
- }
114
- if (matches) {
115
- results.push(entry);
116
- }
117
- }
118
- return results;
119
- }
120
- /**
121
- * Get all registered tools
122
- */
123
- getAllTools() {
124
- return Array.from(this.tools.values()).map((entry) => entry.tool);
125
- }
126
- /**
127
- * Get all registry entries
128
- */
129
- getAllRegistryEntries() {
130
- return Array.from(this.tools.values());
131
- }
132
- /**
133
- * Get all tool names
134
- */
135
- getToolNames() {
136
- return Array.from(this.tools.keys());
137
- }
138
- /**
139
- * Check if a tool is registered
140
- */
141
- hasTool(name) {
142
- return this.tools.has(name);
143
- }
144
- /**
145
- * Unregister a tool
146
- */
147
- unregisterTool(name) {
148
- return this.tools.delete(name);
149
- }
150
- /**
151
- * Clear all tools
152
- */
153
- clear() {
154
- this.tools.clear();
155
- }
156
- /**
157
- * Analyze tool capabilities
158
- */
159
- analyzeToolCapabilities(tool) {
160
- const implementsFormValidatable = isFormValidatable(tool);
161
- const hasRenderConfig = this.hasRenderConfig(tool);
162
- const isZodObjectLike = this.isZodObjectLike(tool.schema);
163
- const supportsFormValidation = implementsFormValidatable || hasRenderConfig;
164
- const requiresWrapper = supportsFormValidation && isZodObjectLike;
165
- let priority = "medium";
166
- let category = "core";
167
- if (supportsFormValidation && requiresWrapper) {
168
- priority = "critical";
169
- } else if (supportsFormValidation) {
170
- priority = "high";
171
- } else if (tool.description?.toLowerCase().includes("query") || tool.description?.toLowerCase().includes("search")) {
172
- priority = "low";
173
- }
174
- const toolAsAny = tool;
175
- if (tool.constructor.name.includes("MCP") || toolAsAny.isMCPTool) {
176
- category = "mcp";
177
- } else if (toolAsAny.isExtension || tool.constructor.name.includes("Extension")) {
178
- category = "extension";
179
- }
180
- return {
181
- supportsFormValidation,
182
- requiresWrapper,
183
- priority,
184
- category
185
- };
186
- }
187
- /**
188
- * Check if tool has render configuration
189
- */
190
- hasRenderConfig(tool) {
191
- const schema = tool.schema;
192
- return !!(schema && schema._renderConfig);
193
- }
194
- /**
195
- * Check if schema is ZodObject-like
196
- */
197
- isZodObjectLike(schema) {
198
- if (!schema || typeof schema !== "object") {
199
- return false;
200
- }
201
- const schemaRecord = schema;
202
- const schemaDef = schemaRecord._def;
203
- return schema instanceof z.ZodObject || schemaDef?.typeName === "ZodObject" || "shape" in schemaRecord && typeof schemaRecord.shape === "object";
204
- }
205
- /**
206
- * Get statistics about the registry
207
- */
208
- getStatistics() {
209
- const stats = {
210
- totalTools: this.tools.size,
211
- wrappedTools: 0,
212
- unwrappedTools: 0,
213
- categoryCounts: { core: 0, extension: 0, mcp: 0 },
214
- priorityCounts: { low: 0, medium: 0, high: 0, critical: 0 }
215
- };
216
- for (const entry of this.tools.values()) {
217
- stats.unwrappedTools++;
218
- stats.categoryCounts[entry.metadata.category]++;
219
- stats.priorityCounts[entry.metadata.capabilities.priority]++;
220
- }
221
- return stats;
222
- }
223
- }
1
+ const ERROR_MESSAGES = {
2
+ TOO_MANY_REQUESTS: "Too many requests. Please wait a moment and try again.",
3
+ RATE_LIMITED: "I'm receiving too many requests right now. Please wait a moment and try again."
4
+ };
224
5
  export {
225
- ToolRegistry
6
+ ERROR_MESSAGES
226
7
  };
227
8
  //# sourceMappingURL=index39.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index39.js","sources":["../../src/core/tool-registry.ts"],"sourcesContent":["import { StructuredTool } from '@langchain/core/tools';\nimport { z } from 'zod';\nimport { Logger } from '@hashgraphonline/standards-sdk';\nimport { FormGenerator } from '../forms/form-generator';\nimport { isFormValidatable } from '@hashgraphonline/standards-agent-kit';\n\n/**\n * Tool capabilities configuration for registry entries\n */\nexport interface ToolCapabilities {\n supportsFormValidation: boolean;\n requiresWrapper: boolean;\n priority: 'low' | 'medium' | 'high' | 'critical';\n category: 'core' | 'extension' | 'mcp';\n}\n\n/**\n * Entity resolution format preferences for tools\n */\nexport interface EntityResolutionPreferences {\n inscription?: 'hrl' | 'topicId' | 'metadata' | 'any';\n token?: 'tokenId' | 'address' | 'symbol' | 'any';\n nft?: 'serialNumber' | 'metadata' | 'hrl' | 'any';\n account?: 'accountId' | 'alias' | 'evmAddress' | 'any';\n}\n\n/**\n * Tool metadata for comprehensive tool information\n */\nexport interface ToolMetadata {\n name: string;\n version: string;\n category: ToolCapabilities['category'];\n description: string;\n capabilities: ToolCapabilities;\n dependencies: string[];\n schema: unknown;\n entityResolutionPreferences?: EntityResolutionPreferences;\n}\n\n/**\n * Registry entry containing tool instance and metadata\n */\nexport interface ToolRegistryEntry {\n tool: StructuredTool;\n metadata: ToolMetadata;\n originalTool: StructuredTool;\n}\n\n/**\n * Options for tool registration\n */\nexport interface ToolRegistrationOptions {\n forceWrapper?: boolean;\n skipWrapper?: boolean;\n wrapperConfig?: {\n requireAllFields?: boolean;\n skipFields?: string[];\n };\n metadata?: Partial<ToolMetadata>;\n}\n\n/**\n * Query interface for finding tools\n */\nexport interface ToolQuery {\n name?: string;\n category?: ToolMetadata['category'];\n capabilities?: Partial<ToolCapabilities>;\n}\n\n/**\n * Centralized tool registry for managing tool lifecycle\n */\nexport class ToolRegistry {\n private tools = new Map<string, ToolRegistryEntry>();\n private formGenerator: FormGenerator;\n private logger: Logger;\n\n constructor(logger?: Logger) {\n this.formGenerator = new FormGenerator();\n this.logger = logger || new Logger({ module: 'ToolRegistry' });\n }\n\n /**\n * Register a tool with the registry\n */\n registerTool(\n tool: StructuredTool,\n options: ToolRegistrationOptions = {}\n ): void {\n const capabilities = this.analyzeToolCapabilities(tool);\n const metadata: ToolMetadata = {\n name: tool.name,\n version: '1.0.0',\n category: options.metadata?.category || 'core',\n description: tool.description,\n capabilities,\n dependencies: [],\n schema: tool.schema,\n ...options.metadata,\n };\n\n try {\n if (!metadata.entityResolutionPreferences) {\n const schemaRecord = tool.schema as unknown as Record<string, unknown>;\n const rawPrefs =\n schemaRecord &&\n typeof schemaRecord === 'object' &&\n (schemaRecord as Record<string, unknown>)[\n '_entityResolutionPreferences'\n ];\n if (rawPrefs && typeof rawPrefs === 'object') {\n metadata.entityResolutionPreferences = rawPrefs as unknown as EntityResolutionPreferences;\n }\n }\n } catch {\n }\n\n try {\n const schemaRecord = tool.schema as unknown as Record<string, unknown>;\n const schemaDef = (schemaRecord && (schemaRecord as Record<string, unknown>)._def) as\n | { typeName?: string; shape?: unknown }\n | undefined;\n if (schemaDef?.typeName === 'ZodObject') {\n const shape: Record<string, unknown> =\n typeof (schemaDef as { shape?: () => Record<string, unknown> }).shape === 'function'\n ? ((schemaDef as { shape: () => Record<string, unknown> }).shape?.() || {})\n : ((schemaDef as { shape?: Record<string, unknown> }).shape || {});\n\n const metadataField = shape['metadata'] as\n | { _def?: { typeName?: string; type?: { _def?: { typeName?: string } } } }\n | undefined;\n const isStringArray =\n !!metadataField &&\n metadataField._def?.typeName === 'ZodArray' &&\n metadataField._def?.type?._def?.typeName === 'ZodString';\n\n if (isStringArray && typeof tool.description === 'string') {\n if (!metadata.entityResolutionPreferences) {\n metadata.entityResolutionPreferences = {\n inscription: 'hrl',\n } as EntityResolutionPreferences;\n }\n const note =\n ' NOTE: When referencing inscriptions or media, provide canonical Hashlink Resource Locators (e.g., hcs://<standard>/<topicId>) rather than external URLs or embedded JSON.';\n if (!tool.description.includes('Hashlink Resource Locators')) {\n (tool as unknown as { description: string }).description = `${tool.description}${note}`;\n }\n }\n }\n } catch {}\n\n let finalTool: StructuredTool = tool;\n\n try {\n if (metadata.entityResolutionPreferences) {\n (finalTool as unknown as Record<string, unknown>)[\n 'entityResolutionPreferences'\n ] = metadata.entityResolutionPreferences;\n }\n } catch {\n }\n\n const entry: ToolRegistryEntry = {\n tool: finalTool,\n metadata,\n originalTool: tool,\n };\n\n this.tools.set(tool.name, entry);\n }\n\n /**\n * Get a tool by name\n */\n getTool(name: string): ToolRegistryEntry | null {\n return this.tools.get(name) || null;\n }\n\n /**\n * Get tools by capability\n */\n getToolsByCapability(\n capability: keyof ToolCapabilities,\n value?: unknown\n ): ToolRegistryEntry[] {\n const results: ToolRegistryEntry[] = [];\n\n for (const entry of this.tools.values()) {\n if (value !== undefined) {\n if (entry.metadata.capabilities[capability] === value) {\n results.push(entry);\n }\n } else if (entry.metadata.capabilities[capability]) {\n results.push(entry);\n }\n }\n\n return results;\n }\n\n /**\n * Get tools by query\n */\n getToolsByQuery(query: ToolQuery): ToolRegistryEntry[] {\n const results: ToolRegistryEntry[] = [];\n\n for (const entry of this.tools.values()) {\n let matches = true;\n\n if (query.name && entry.metadata.name !== query.name) {\n matches = false;\n }\n\n if (query.category && entry.metadata.category !== query.category) {\n matches = false;\n }\n\n if (query.capabilities) {\n for (const [key, value] of Object.entries(query.capabilities)) {\n if (\n entry.metadata.capabilities[key as keyof ToolCapabilities] !== value\n ) {\n matches = false;\n break;\n }\n }\n }\n\n if (matches) {\n results.push(entry);\n }\n }\n\n return results;\n }\n\n /**\n * Get all registered tools\n */\n getAllTools(): StructuredTool[] {\n return Array.from(this.tools.values()).map((entry) => entry.tool);\n }\n\n /**\n * Get all registry entries\n */\n getAllRegistryEntries(): ToolRegistryEntry[] {\n return Array.from(this.tools.values());\n }\n\n /**\n * Get all tool names\n */\n getToolNames(): string[] {\n return Array.from(this.tools.keys());\n }\n\n /**\n * Check if a tool is registered\n */\n hasTool(name: string): boolean {\n return this.tools.has(name);\n }\n\n /**\n * Unregister a tool\n */\n unregisterTool(name: string): boolean {\n return this.tools.delete(name);\n }\n\n /**\n * Clear all tools\n */\n clear(): void {\n this.tools.clear();\n }\n\n /**\n * Analyze tool capabilities\n */\n private analyzeToolCapabilities(tool: StructuredTool): ToolCapabilities {\n const implementsFormValidatable = isFormValidatable(tool);\n const hasRenderConfig = this.hasRenderConfig(tool);\n const isZodObjectLike = this.isZodObjectLike(tool.schema);\n\n const supportsFormValidation = implementsFormValidatable || hasRenderConfig;\n const requiresWrapper = supportsFormValidation && isZodObjectLike;\n\n let priority: ToolCapabilities['priority'] = 'medium';\n let category: ToolCapabilities['category'] = 'core';\n\n if (supportsFormValidation && requiresWrapper) {\n priority = 'critical';\n } else if (supportsFormValidation) {\n priority = 'high';\n } else if (\n tool.description?.toLowerCase().includes('query') ||\n tool.description?.toLowerCase().includes('search')\n ) {\n priority = 'low';\n }\n\n const toolAsAny = tool as unknown as Record<string, unknown>;\n if (tool.constructor.name.includes('MCP') || toolAsAny.isMCPTool) {\n category = 'mcp';\n } else if (\n toolAsAny.isExtension ||\n tool.constructor.name.includes('Extension')\n ) {\n category = 'extension';\n }\n\n return {\n supportsFormValidation,\n requiresWrapper,\n priority,\n category,\n };\n }\n\n /**\n * Check if tool has render configuration\n */\n private hasRenderConfig(tool: StructuredTool): boolean {\n const schema = tool.schema as Record<string, unknown>;\n return !!(schema && schema._renderConfig);\n }\n\n\n /**\n * Check if schema is ZodObject-like\n */\n private isZodObjectLike(schema: unknown): boolean {\n if (!schema || typeof schema !== 'object') {\n return false;\n }\n\n const schemaRecord = schema as Record<string, unknown>;\n const schemaDef = schemaRecord._def as Record<string, unknown> | undefined;\n\n return (\n schema instanceof z.ZodObject ||\n schemaDef?.typeName === 'ZodObject' ||\n ('shape' in schemaRecord && typeof schemaRecord.shape === 'object')\n );\n }\n\n /**\n * Get statistics about the registry\n */\n getStatistics(): {\n totalTools: number;\n wrappedTools: number;\n unwrappedTools: number;\n categoryCounts: Record<ToolCapabilities['category'], number>;\n priorityCounts: Record<ToolCapabilities['priority'], number>;\n } {\n const stats = {\n totalTools: this.tools.size,\n wrappedTools: 0,\n unwrappedTools: 0,\n categoryCounts: { core: 0, extension: 0, mcp: 0 } as Record<\n ToolCapabilities['category'],\n number\n >,\n priorityCounts: { low: 0, medium: 0, high: 0, critical: 0 } as Record<\n ToolCapabilities['priority'],\n number\n >,\n };\n\n for (const entry of this.tools.values()) {\n stats.unwrappedTools++;\n\n stats.categoryCounts[entry.metadata.category]++;\n stats.priorityCounts[entry.metadata.capabilities.priority]++;\n }\n\n return stats;\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index39.js","sources":["../../src/constants/messages.ts"],"sourcesContent":["/**\n * Common error messages and user feedback strings\n */\nexport const ERROR_MESSAGES = {\n TOO_MANY_REQUESTS: 'Too many requests. Please wait a moment and try again.',\n RATE_LIMITED: \"I'm receiving too many requests right now. Please wait a moment and try again.\",\n SYSTEM_ERROR: 'System error occurred',\n INVALID_INPUT: 'Invalid input provided',\n NETWORK_ERROR: 'Network error occurred',\n} as const;\n\n/**\n * Common success and status messages\n */\nexport const STATUS_MESSAGES = {\n OPERATION_SUCCESSFUL: 'Operation completed successfully',\n PROCESSING: 'Processing your request...',\n READY: 'Ready to process requests',\n INITIALIZING: 'Initializing...',\n} as const;"],"names":[],"mappings":"AAGO,MAAM,iBAAiB;AAAA,EAC5B,mBAAmB;AAAA,EACnB,cAAc;AAIhB;"}