@hashgraphonline/conversational-agent 0.1.217 → 0.1.218

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 (286) hide show
  1. package/cli/readme.md +181 -0
  2. package/dist/cjs/constants/entity-references.d.ts +18 -0
  3. package/dist/cjs/constants/form-priorities.d.ts +24 -0
  4. package/dist/cjs/constants/index.d.ts +4 -0
  5. package/dist/cjs/constants/messages.d.ts +19 -0
  6. package/dist/cjs/constants/test-constants.d.ts +42 -0
  7. package/dist/cjs/conversational-agent.d.ts +3 -8
  8. package/dist/cjs/core/{ToolRegistry.d.ts → tool-registry.d.ts} +10 -7
  9. package/dist/{types/execution/ExecutionPipeline.d.ts → cjs/execution/execution-pipeline.d.ts} +3 -3
  10. package/dist/cjs/forms/field-guidance-registry.d.ts +108 -0
  11. package/dist/cjs/forms/form-generator.d.ts +2 -7
  12. package/dist/cjs/forms/index.d.ts +3 -0
  13. package/dist/cjs/forms/types.d.ts +9 -1
  14. package/dist/cjs/index.cjs +1 -1
  15. package/dist/cjs/index.cjs.map +1 -1
  16. package/dist/cjs/index.d.ts +7 -12
  17. package/dist/cjs/langchain/external-tool-wrapper.d.ts +101 -0
  18. package/dist/{types/langchain/FormAwareAgentExecutor.d.ts → cjs/langchain/form-aware-agent-executor.d.ts} +19 -12
  19. package/dist/cjs/langchain/index.d.ts +2 -0
  20. package/dist/{types → cjs/langchain}/langchain-agent.d.ts +15 -7
  21. package/dist/cjs/mcp/adapters/index.d.ts +1 -0
  22. package/dist/cjs/mcp/adapters/langchain.d.ts +1 -1
  23. package/dist/{types/mcp/ContentProcessor.d.ts → cjs/mcp/content-processor.d.ts} +1 -1
  24. package/dist/cjs/mcp/index.d.ts +5 -0
  25. package/dist/{types/mcp/MCPClientManager.d.ts → cjs/mcp/mcp-client-manager.d.ts} +1 -1
  26. package/dist/cjs/memory/{ContentStorage.d.ts → content-storage.d.ts} +4 -4
  27. package/dist/cjs/memory/index.d.ts +5 -7
  28. package/dist/{types/memory/MemoryWindow.d.ts → cjs/memory/memory-window.d.ts} +1 -1
  29. package/dist/{types/memory/SmartMemoryManager.d.ts → cjs/memory/smart-memory-manager.d.ts} +1 -1
  30. package/dist/cjs/services/{ContentStoreManager.d.ts → content-store-manager.d.ts} +6 -6
  31. package/dist/cjs/services/context/resolution-context.d.ts +49 -0
  32. package/dist/cjs/services/entity-resolver.d.ts +58 -0
  33. package/dist/cjs/services/formatters/converters/index.d.ts +2 -0
  34. package/dist/cjs/services/formatters/converters/string-normalization-converter.d.ts +13 -0
  35. package/dist/cjs/services/formatters/converters/topic-id-to-hrl-converter.d.ts +17 -0
  36. package/dist/cjs/services/formatters/format-converter-registry.d.ts +66 -0
  37. package/dist/cjs/services/formatters/index.d.ts +3 -0
  38. package/dist/cjs/services/formatters/types.d.ts +29 -0
  39. package/dist/cjs/services/index.d.ts +3 -0
  40. package/dist/cjs/services/resolution/resolution-pipeline.d.ts +44 -0
  41. package/dist/cjs/tools/index.d.ts +1 -0
  42. package/dist/cjs/utils/index.d.ts +1 -0
  43. package/dist/esm/index.js +40 -16
  44. package/dist/esm/index.js.map +1 -1
  45. package/dist/esm/index10.js +669 -13
  46. package/dist/esm/index10.js.map +1 -1
  47. package/dist/esm/index11.js +310 -95
  48. package/dist/esm/index11.js.map +1 -1
  49. package/dist/esm/index12.js +130 -95
  50. package/dist/esm/index12.js.map +1 -1
  51. package/dist/esm/index13.js +262 -153
  52. package/dist/esm/index13.js.map +1 -1
  53. package/dist/esm/index14.js +100 -664
  54. package/dist/esm/index14.js.map +1 -1
  55. package/dist/esm/index15.js +135 -408
  56. package/dist/esm/index15.js.map +1 -1
  57. package/dist/esm/index16.js +240 -122
  58. package/dist/esm/index16.js.map +1 -1
  59. package/dist/esm/index17.js +147 -135
  60. package/dist/esm/index17.js.map +1 -1
  61. package/dist/esm/index18.js +376 -533
  62. package/dist/esm/index18.js.map +1 -1
  63. package/dist/esm/index19.js +87 -214
  64. package/dist/esm/index19.js.map +1 -1
  65. package/dist/esm/index2.js +21 -4
  66. package/dist/esm/index2.js.map +1 -1
  67. package/dist/esm/index20.js +158 -92
  68. package/dist/esm/index20.js.map +1 -1
  69. package/dist/esm/index21.js +717 -44
  70. package/dist/esm/index21.js.map +1 -1
  71. package/dist/esm/index22.js +58 -96
  72. package/dist/esm/index22.js.map +1 -1
  73. package/dist/esm/index23.js +324 -34
  74. package/dist/esm/index23.js.map +1 -1
  75. package/dist/esm/index24.js +125 -712
  76. package/dist/esm/index24.js.map +1 -1
  77. package/dist/esm/index25.js +113 -133
  78. package/dist/esm/index25.js.map +1 -1
  79. package/dist/esm/index26.js +18 -152
  80. package/dist/esm/index26.js.map +1 -1
  81. package/dist/esm/index27.js +14 -210
  82. package/dist/esm/index27.js.map +1 -1
  83. package/dist/esm/index28.js +70 -173
  84. package/dist/esm/index28.js.map +1 -1
  85. package/dist/esm/index29.js +811 -224
  86. package/dist/esm/index29.js.map +1 -1
  87. package/dist/esm/index30.js +1245 -122
  88. package/dist/esm/index30.js.map +1 -1
  89. package/dist/esm/index31.js +126 -56
  90. package/dist/esm/index31.js.map +1 -1
  91. package/dist/esm/index32.js +111 -24
  92. package/dist/esm/index32.js.map +1 -1
  93. package/dist/esm/index33.js +41 -87
  94. package/dist/esm/index33.js.map +1 -1
  95. package/dist/esm/index34.js +88 -227
  96. package/dist/esm/index34.js.map +1 -1
  97. package/dist/esm/index35.js +24 -0
  98. package/dist/esm/index35.js.map +1 -0
  99. package/dist/esm/index36.js +15 -0
  100. package/dist/esm/index36.js.map +1 -0
  101. package/dist/esm/index37.js +10 -0
  102. package/dist/esm/index37.js.map +1 -0
  103. package/dist/esm/index38.js +8 -0
  104. package/dist/esm/index38.js.map +1 -0
  105. package/dist/esm/index39.js +227 -0
  106. package/dist/esm/index39.js.map +1 -0
  107. package/dist/esm/index40.js +187 -0
  108. package/dist/esm/index40.js.map +1 -0
  109. package/dist/esm/index41.js +30 -0
  110. package/dist/esm/index41.js.map +1 -0
  111. package/dist/esm/index42.js +95 -0
  112. package/dist/esm/index42.js.map +1 -0
  113. package/dist/esm/index5.js +2 -2
  114. package/dist/esm/index5.js.map +1 -1
  115. package/dist/esm/index6.js +44 -67
  116. package/dist/esm/index6.js.map +1 -1
  117. package/dist/esm/index7.js +9 -0
  118. package/dist/esm/index7.js.map +1 -1
  119. package/dist/esm/index8.js +13 -1095
  120. package/dist/esm/index8.js.map +1 -1
  121. package/dist/esm/index9.js +17 -13
  122. package/dist/esm/index9.js.map +1 -1
  123. package/dist/types/constants/entity-references.d.ts +18 -0
  124. package/dist/types/constants/form-priorities.d.ts +24 -0
  125. package/dist/types/constants/index.d.ts +4 -0
  126. package/dist/types/constants/messages.d.ts +19 -0
  127. package/dist/types/constants/test-constants.d.ts +42 -0
  128. package/dist/types/conversational-agent.d.ts +3 -8
  129. package/dist/types/core/{ToolRegistry.d.ts → tool-registry.d.ts} +10 -7
  130. package/dist/{cjs/execution/ExecutionPipeline.d.ts → types/execution/execution-pipeline.d.ts} +3 -3
  131. package/dist/types/forms/field-guidance-registry.d.ts +108 -0
  132. package/dist/types/forms/form-generator.d.ts +2 -7
  133. package/dist/types/forms/index.d.ts +3 -0
  134. package/dist/types/forms/types.d.ts +9 -1
  135. package/dist/types/index.d.ts +7 -12
  136. package/dist/types/langchain/external-tool-wrapper.d.ts +101 -0
  137. package/dist/{cjs/langchain/FormAwareAgentExecutor.d.ts → types/langchain/form-aware-agent-executor.d.ts} +19 -12
  138. package/dist/types/langchain/index.d.ts +2 -0
  139. package/dist/{cjs → types/langchain}/langchain-agent.d.ts +15 -7
  140. package/dist/types/mcp/adapters/index.d.ts +1 -0
  141. package/dist/types/mcp/adapters/langchain.d.ts +1 -1
  142. package/dist/{cjs/mcp/ContentProcessor.d.ts → types/mcp/content-processor.d.ts} +1 -1
  143. package/dist/types/mcp/index.d.ts +5 -0
  144. package/dist/{cjs/mcp/MCPClientManager.d.ts → types/mcp/mcp-client-manager.d.ts} +1 -1
  145. package/dist/types/memory/{ContentStorage.d.ts → content-storage.d.ts} +4 -4
  146. package/dist/types/memory/index.d.ts +5 -7
  147. package/dist/{cjs/memory/MemoryWindow.d.ts → types/memory/memory-window.d.ts} +1 -1
  148. package/dist/{cjs/memory/SmartMemoryManager.d.ts → types/memory/smart-memory-manager.d.ts} +1 -1
  149. package/dist/types/services/{ContentStoreManager.d.ts → content-store-manager.d.ts} +6 -6
  150. package/dist/types/services/context/resolution-context.d.ts +49 -0
  151. package/dist/types/services/entity-resolver.d.ts +58 -0
  152. package/dist/types/services/formatters/converters/index.d.ts +2 -0
  153. package/dist/types/services/formatters/converters/string-normalization-converter.d.ts +13 -0
  154. package/dist/types/services/formatters/converters/topic-id-to-hrl-converter.d.ts +17 -0
  155. package/dist/types/services/formatters/format-converter-registry.d.ts +66 -0
  156. package/dist/types/services/formatters/index.d.ts +3 -0
  157. package/dist/types/services/formatters/types.d.ts +29 -0
  158. package/dist/types/services/index.d.ts +3 -0
  159. package/dist/types/services/resolution/resolution-pipeline.d.ts +44 -0
  160. package/dist/types/tools/index.d.ts +1 -0
  161. package/dist/types/utils/index.d.ts +1 -0
  162. package/package.json +30 -27
  163. package/src/agent-factory.ts +1 -1
  164. package/src/base-agent.ts +9 -0
  165. package/src/config/system-message.ts +2 -15
  166. package/src/constants/entity-references.ts +23 -0
  167. package/src/constants/form-priorities.ts +25 -0
  168. package/src/constants/index.ts +4 -0
  169. package/src/constants/messages.ts +20 -0
  170. package/src/constants/test-constants.ts +49 -0
  171. package/src/conversational-agent.ts +42 -69
  172. package/src/core/{ToolRegistry.ts → tool-registry.ts} +70 -44
  173. package/src/examples/external-tool-wrapper-example.ts +56 -0
  174. package/src/execution/{ExecutionPipeline.ts → execution-pipeline.ts} +3 -3
  175. package/src/forms/field-guidance-registry.ts +415 -0
  176. package/src/forms/field-type-registry.ts +49 -48
  177. package/src/forms/{FormEngine.ts → form-engine.ts} +66 -43
  178. package/src/forms/form-generator.ts +91 -17
  179. package/src/forms/index.ts +4 -1
  180. package/src/forms/types.ts +9 -1
  181. package/src/index.ts +7 -37
  182. package/src/langchain/external-tool-wrapper.ts +90 -0
  183. package/src/langchain/{FormAwareAgentExecutor.ts → form-aware-agent-executor.ts} +579 -351
  184. package/src/langchain/index.ts +2 -0
  185. package/src/{langchain-agent.ts → langchain/langchain-agent.ts} +389 -113
  186. package/src/mcp/adapters/index.ts +1 -0
  187. package/src/mcp/adapters/langchain.ts +27 -18
  188. package/src/mcp/{ContentProcessor.ts → content-processor.ts} +71 -47
  189. package/src/mcp/index.ts +5 -0
  190. package/src/mcp/{MCPClientManager.ts → mcp-client-manager.ts} +2 -2
  191. package/src/memory/{ContentStorage.ts → content-storage.ts} +263 -167
  192. package/src/memory/index.ts +5 -8
  193. package/src/memory/{MemoryWindow.ts → memory-window.ts} +47 -24
  194. package/src/memory/{SmartMemoryManager.ts → smart-memory-manager.ts} +49 -22
  195. package/src/plugins/hbar/HbarPlugin.ts +1 -1
  196. package/src/plugins/hcs-10/HCS10Plugin.ts +46 -28
  197. package/src/scripts/test-external-tool-wrapper.ts +6 -6
  198. package/src/scripts/test-inscribe-form-generation.ts +22 -21
  199. package/src/scripts/test-inscribe-wrapper-verification.ts +5 -4
  200. package/src/services/{ContentStoreManager.ts → content-store-manager.ts} +75 -33
  201. package/src/services/context/resolution-context.ts +80 -0
  202. package/src/services/entity-resolver.ts +425 -0
  203. package/src/services/formatters/converters/index.ts +2 -0
  204. package/src/services/formatters/converters/string-normalization-converter.ts +106 -0
  205. package/src/services/formatters/converters/topic-id-to-hrl-converter.ts +25 -0
  206. package/src/services/formatters/format-converter-registry.ts +229 -0
  207. package/src/services/formatters/index.ts +3 -0
  208. package/src/services/formatters/types.ts +31 -0
  209. package/src/services/index.ts +3 -0
  210. package/src/services/resolution/resolution-pipeline.ts +106 -0
  211. package/src/tools/index.ts +1 -0
  212. package/src/types/content-reference.ts +87 -60
  213. package/src/utils/index.ts +1 -0
  214. package/cli/dist/CLIApp.d.ts +0 -9
  215. package/cli/dist/CLIApp.js +0 -127
  216. package/cli/dist/LocalConversationalAgent.d.ts +0 -37
  217. package/cli/dist/LocalConversationalAgent.js +0 -58
  218. package/cli/dist/app.d.ts +0 -16
  219. package/cli/dist/app.js +0 -13
  220. package/cli/dist/cli.d.ts +0 -2
  221. package/cli/dist/cli.js +0 -51
  222. package/cli/dist/components/AppContainer.d.ts +0 -16
  223. package/cli/dist/components/AppContainer.js +0 -24
  224. package/cli/dist/components/AppScreens.d.ts +0 -2
  225. package/cli/dist/components/AppScreens.js +0 -259
  226. package/cli/dist/components/ChatScreen.d.ts +0 -15
  227. package/cli/dist/components/ChatScreen.js +0 -39
  228. package/cli/dist/components/DebugLoadingScreen.d.ts +0 -5
  229. package/cli/dist/components/DebugLoadingScreen.js +0 -31
  230. package/cli/dist/components/LoadingScreen.d.ts +0 -2
  231. package/cli/dist/components/LoadingScreen.js +0 -16
  232. package/cli/dist/components/LoadingScreenDebug.d.ts +0 -5
  233. package/cli/dist/components/LoadingScreenDebug.js +0 -27
  234. package/cli/dist/components/MCPConfigScreen.d.ts +0 -28
  235. package/cli/dist/components/MCPConfigScreen.js +0 -168
  236. package/cli/dist/components/ScreenRouter.d.ts +0 -12
  237. package/cli/dist/components/ScreenRouter.js +0 -22
  238. package/cli/dist/components/SetupScreen.d.ts +0 -15
  239. package/cli/dist/components/SetupScreen.js +0 -65
  240. package/cli/dist/components/SingleLoadingScreen.d.ts +0 -5
  241. package/cli/dist/components/SingleLoadingScreen.js +0 -27
  242. package/cli/dist/components/StatusBadge.d.ts +0 -7
  243. package/cli/dist/components/StatusBadge.js +0 -28
  244. package/cli/dist/components/TerminalWindow.d.ts +0 -8
  245. package/cli/dist/components/TerminalWindow.js +0 -24
  246. package/cli/dist/components/WelcomeScreen.d.ts +0 -11
  247. package/cli/dist/components/WelcomeScreen.js +0 -47
  248. package/cli/dist/context/AppContext.d.ts +0 -68
  249. package/cli/dist/context/AppContext.js +0 -363
  250. package/cli/dist/hooks/useInitializeAgent.d.ts +0 -19
  251. package/cli/dist/hooks/useInitializeAgent.js +0 -28
  252. package/cli/dist/hooks/useStableState.d.ts +0 -38
  253. package/cli/dist/hooks/useStableState.js +0 -68
  254. package/cli/dist/managers/AgentManager.d.ts +0 -57
  255. package/cli/dist/managers/AgentManager.js +0 -119
  256. package/cli/dist/managers/ConfigManager.d.ts +0 -53
  257. package/cli/dist/managers/ConfigManager.js +0 -173
  258. package/cli/dist/types.d.ts +0 -31
  259. package/cli/dist/types.js +0 -19
  260. package/dist/cjs/context/ReferenceContextManager.d.ts +0 -84
  261. package/dist/cjs/context/ReferenceResponseProcessor.d.ts +0 -76
  262. package/dist/cjs/langchain/FormValidatingToolWrapper.d.ts +0 -81
  263. package/dist/cjs/services/EntityResolver.d.ts +0 -26
  264. package/dist/types/context/ReferenceContextManager.d.ts +0 -84
  265. package/dist/types/context/ReferenceResponseProcessor.d.ts +0 -76
  266. package/dist/types/langchain/FormValidatingToolWrapper.d.ts +0 -81
  267. package/dist/types/services/EntityResolver.d.ts +0 -26
  268. package/src/context/ReferenceContextManager.ts +0 -350
  269. package/src/context/ReferenceResponseProcessor.ts +0 -295
  270. package/src/langchain/FormValidatingToolWrapper.ts +0 -355
  271. package/src/scripts/test-hedera-kit-wrapper.ts +0 -265
  272. package/src/services/EntityResolver.ts +0 -128
  273. /package/dist/cjs/forms/{FormEngine.d.ts → form-engine.d.ts} +0 -0
  274. /package/dist/cjs/memory/{ReferenceIdGenerator.d.ts → reference-id-generator.d.ts} +0 -0
  275. /package/dist/cjs/memory/{TokenCounter.d.ts → token-counter.d.ts} +0 -0
  276. /package/dist/cjs/tools/{EntityResolverTool.d.ts → entity-resolver-tool.d.ts} +0 -0
  277. /package/dist/cjs/utils/{ResponseFormatter.d.ts → response-formatter.d.ts} +0 -0
  278. /package/dist/types/forms/{FormEngine.d.ts → form-engine.d.ts} +0 -0
  279. /package/dist/types/memory/{ReferenceIdGenerator.d.ts → reference-id-generator.d.ts} +0 -0
  280. /package/dist/types/memory/{TokenCounter.d.ts → token-counter.d.ts} +0 -0
  281. /package/dist/types/tools/{EntityResolverTool.d.ts → entity-resolver-tool.d.ts} +0 -0
  282. /package/dist/types/utils/{ResponseFormatter.d.ts → response-formatter.d.ts} +0 -0
  283. /package/src/memory/{ReferenceIdGenerator.ts → reference-id-generator.ts} +0 -0
  284. /package/src/memory/{TokenCounter.ts → token-counter.ts} +0 -0
  285. /package/src/tools/{EntityResolverTool.ts → entity-resolver-tool.ts} +0 -0
  286. /package/src/utils/{ResponseFormatter.ts → response-formatter.ts} +0 -0
@@ -1,84 +0,0 @@
1
- import { ContentReference, ReferenceId } from '../types/content-reference';
2
- import { ContentStorage } from '../memory/ContentStorage';
3
- import { Logger } from '@hashgraphonline/standards-sdk';
4
-
5
- export interface ReferenceContext {
6
- reference: ContentReference;
7
- displayedAt: Date;
8
- lastAccessedAt: Date;
9
- contextId: string;
10
- conversationTurn: number;
11
- }
12
- export interface ReferenceDisplayOptions {
13
- maxPreviewLength?: number;
14
- showMetadata?: boolean;
15
- showSize?: boolean;
16
- includeActions?: boolean;
17
- format?: 'inline' | 'card' | 'compact';
18
- }
19
- export interface DisplayResult {
20
- displayText: string;
21
- hasValidReference: boolean;
22
- contextId?: string;
23
- suggestedActions?: string[];
24
- }
25
- /**
26
- * Manages content references within agent conversation context
27
- * Tracks reference usage, provides display formatting, and handles reference validation
28
- */
29
- export declare class ReferenceContextManager {
30
- private activeReferences;
31
- private contentStorage;
32
- private logger;
33
- private conversationTurn;
34
- constructor(contentStorage: ContentStorage, logger: Logger);
35
- /**
36
- * Add a reference to the current conversation context
37
- */
38
- addReference(reference: ContentReference): string;
39
- /**
40
- * Generate display text for a content reference
41
- */
42
- displayReference(reference: ContentReference, options?: ReferenceDisplayOptions): Promise<DisplayResult>;
43
- /**
44
- * Get the most recent reference for "inscribe it" commands
45
- */
46
- getMostRecentReference(): ContentReference | null;
47
- /**
48
- * Get reference by context ID
49
- */
50
- getReferenceByContextId(contextId: string): ContentReference | null;
51
- /**
52
- * Validate all active references and remove invalid ones
53
- */
54
- validateReferences(): Promise<{
55
- valid: number;
56
- invalid: number;
57
- removed: ReferenceId[];
58
- }>;
59
- /**
60
- * Clear old references based on age and usage
61
- */
62
- cleanupOldReferences(maxAgeMs?: number): number;
63
- /**
64
- * Get current context statistics
65
- */
66
- getContextStats(): {
67
- activeReferences: number;
68
- conversationTurn: number;
69
- oldestReference: number | null;
70
- mostRecentReference: number | null;
71
- };
72
- /**
73
- * Clear all references from context
74
- */
75
- clear(): void;
76
- private formatCardReference;
77
- private formatInlineReference;
78
- private formatCompactReference;
79
- private formatInvalidReference;
80
- private formatErrorReference;
81
- private truncateText;
82
- private getOldestReferenceAge;
83
- private getMostRecentReferenceAge;
84
- }
@@ -1,76 +0,0 @@
1
- import { ContentReference, ReferenceId } from '../types/content-reference';
2
- import { ReferenceContextManager, ReferenceDisplayOptions } from './ReferenceContextManager';
3
- import { Logger } from '@hashgraphonline/standards-sdk';
4
-
5
- export interface ResponseProcessingOptions {
6
- autoDisplayReferences?: boolean;
7
- displayOptions?: ReferenceDisplayOptions;
8
- includeReferenceInstructions?: boolean;
9
- contextualizeReferences?: boolean;
10
- }
11
- export interface ProcessedResponse {
12
- content: string;
13
- hasReferences: boolean;
14
- referenceCount: number;
15
- contextIds: string[];
16
- suggestedActions: string[];
17
- }
18
- export interface ReferenceDetectionResult {
19
- hasReferences: boolean;
20
- references: Array<{
21
- reference: ContentReference;
22
- position: number;
23
- originalText: string;
24
- }>;
25
- plainReferences: Array<{
26
- referenceId: ReferenceId;
27
- position: number;
28
- originalText: string;
29
- }>;
30
- }
31
- /**
32
- * Processes agent responses to detect and display content references
33
- * Handles both structured references and plain reference IDs
34
- */
35
- export declare class ReferenceResponseProcessor {
36
- private contextManager;
37
- private logger;
38
- constructor(contextManager: ReferenceContextManager, logger: Logger);
39
- /**
40
- * Process an agent response to handle content references
41
- */
42
- processResponse(responseContent: string, options?: ResponseProcessingOptions): Promise<ProcessedResponse>;
43
- /**
44
- * Detect references in response content
45
- */
46
- private detectReferences;
47
- /**
48
- * Create a preview from content buffer
49
- */
50
- private createPreviewFromContent;
51
- /**
52
- * Validate reference ID format
53
- */
54
- private isValidReferenceId;
55
- /**
56
- * Get reference context statistics
57
- */
58
- getContextStats(): {
59
- activeReferences: number;
60
- conversationTurn: number;
61
- oldestReference: number | null;
62
- mostRecentReference: number | null;
63
- };
64
- /**
65
- * Validate all references in context
66
- */
67
- validateAllReferences(): Promise<{
68
- valid: number;
69
- invalid: number;
70
- removed: ReferenceId[];
71
- }>;
72
- /**
73
- * Clean up old references
74
- */
75
- cleanupOldReferences(maxAgeMs?: number): number;
76
- }
@@ -1,81 +0,0 @@
1
- import { StructuredTool } from '@langchain/core/tools';
2
- import { z } from 'zod';
3
- import { CallbackManagerForToolRun } from '@langchain/core/callbacks/manager';
4
- import { FormGenerator } from '../forms/form-generator';
5
-
6
- export interface FormValidationConfig {
7
- requireAllFields?: boolean;
8
- skipFields?: string[];
9
- customValidation?: (input: unknown) => boolean;
10
- }
11
- /**
12
- * Generic wrapper for StructuredTools that intercepts execution to check for missing required fields
13
- * and generates forms when validation would benefit from user input.
14
- *
15
- * Tools can implement the FormValidatable interface to provide custom validation logic.
16
- * Otherwise, falls back to schema-based validation.
17
- */
18
- export declare class FormValidatingToolWrapper<TSchema extends z.ZodObject<z.ZodRawShape, z.UnknownKeysParam, z.ZodTypeAny>> extends StructuredTool<TSchema> {
19
- private originalTool;
20
- private formGenerator;
21
- private validationConfig;
22
- private logger;
23
- name: string;
24
- description: string;
25
- schema: TSchema;
26
- constructor(originalTool: StructuredTool<TSchema>, formGenerator: FormGenerator, config?: FormValidationConfig);
27
- /**
28
- * Validate the input against the schema
29
- */
30
- private validateInput;
31
- /**
32
- * Gets the shape keys from the schema if it's a ZodObject
33
- */
34
- private getSchemaShape;
35
- /**
36
- * Executes the wrapped tool's original implementation directly, bypassing wrapper logic.
37
- */
38
- executeOriginal(input: Record<string, unknown>, runManager?: CallbackManagerForToolRun): Promise<string>;
39
- /**
40
- * Provides access to the wrapped tool instance for executors that want to bypass the wrapper.
41
- */
42
- getOriginalTool(): StructuredTool<TSchema>;
43
- /**
44
- * Checks if tool implements FormValidatable method
45
- */
46
- private hasFormValidatableMethod;
47
- /**
48
- * Expose FormValidatable methods by delegating to the underlying tool when available.
49
- */
50
- getFormSchema(): z.ZodSchema;
51
- getEssentialFields(): string[];
52
- isFieldEmpty(fieldName: string, value: unknown): boolean;
53
- /**
54
- * Calculates which fields are missing from the input
55
- */
56
- private calculateMissingFields;
57
- /**
58
- * Creates a form message with optional JSON schema
59
- */
60
- private createFormMessage;
61
- /**
62
- * Type guard to check if a schema is a ZodObject
63
- */
64
- private isZodObject;
65
- /**
66
- * Check if we should generate a form for this tool invocation
67
- */
68
- private shouldGenerateForm;
69
- /**
70
- * Checks if input has bypass flags that skip form generation
71
- */
72
- private hasFormBypassFlags;
73
- /**
74
- * Override _call to intercept tool execution
75
- */
76
- protected _call(input: z.infer<TSchema>, runManager?: CallbackManagerForToolRun): Promise<string>;
77
- }
78
- /**
79
- * Wrap a tool with form validation capabilities
80
- */
81
- export declare function wrapToolWithFormValidation<TSchema extends z.ZodObject<z.ZodRawShape, z.UnknownKeysParam, z.ZodTypeAny>>(tool: StructuredTool<TSchema>, formGenerator: FormGenerator, config?: FormValidationConfig): FormValidatingToolWrapper<TSchema>;
@@ -1,26 +0,0 @@
1
- import { EntityAssociation } from '../memory/SmartMemoryManager';
2
-
3
- export interface EntityResolverConfig {
4
- apiKey: string;
5
- modelName?: string;
6
- }
7
- /**
8
- * LLM-based entity resolver that replaces brittle regex patterns
9
- */
10
- export declare class EntityResolver {
11
- private llm;
12
- constructor(config: EntityResolverConfig);
13
- /**
14
- * Resolve entity references using LLM instead of regex
15
- */
16
- resolveReferences(message: string, entities: EntityAssociation[]): Promise<string>;
17
- /**
18
- * Extract entities from agent response using LLM
19
- */
20
- extractEntities(response: unknown, userMessage: string): Promise<Array<{
21
- id: string;
22
- name: string;
23
- type: string;
24
- transactionId?: string;
25
- }>>;
26
- }
@@ -1,350 +0,0 @@
1
- import type { ContentReference, ReferenceId } from '../types/content-reference';
2
- import type { ContentStorage } from '../memory/ContentStorage';
3
- import { Logger } from '@hashgraphonline/standards-sdk';
4
-
5
- export interface ReferenceContext {
6
- reference: ContentReference;
7
- displayedAt: Date;
8
- lastAccessedAt: Date;
9
- contextId: string;
10
- conversationTurn: number;
11
- }
12
-
13
- export interface ReferenceDisplayOptions {
14
- maxPreviewLength?: number;
15
- showMetadata?: boolean;
16
- showSize?: boolean;
17
- includeActions?: boolean;
18
- format?: 'inline' | 'card' | 'compact';
19
- }
20
-
21
- export interface DisplayResult {
22
- displayText: string;
23
- hasValidReference: boolean;
24
- contextId?: string;
25
- suggestedActions?: string[];
26
- }
27
-
28
- /**
29
- * Manages content references within agent conversation context
30
- * Tracks reference usage, provides display formatting, and handles reference validation
31
- */
32
- export class ReferenceContextManager {
33
- private activeReferences: Map<ReferenceId, ReferenceContext> = new Map();
34
- private contentStorage: ContentStorage;
35
- private logger: Logger;
36
- private conversationTurn = 0;
37
-
38
- constructor(contentStorage: ContentStorage, logger: Logger) {
39
- this.contentStorage = contentStorage;
40
- this.logger = logger;
41
- }
42
-
43
- /**
44
- * Add a reference to the current conversation context
45
- */
46
- addReference(reference: ContentReference): string {
47
- this.conversationTurn++;
48
- const contextId = `ctx_${Date.now()}_${reference.referenceId.substring(0, 8)}`;
49
-
50
- const context: ReferenceContext = {
51
- reference,
52
- displayedAt: new Date(),
53
- lastAccessedAt: new Date(),
54
- contextId,
55
- conversationTurn: this.conversationTurn
56
- };
57
-
58
- this.activeReferences.set(reference.referenceId, context);
59
-
60
- this.logger.debug(`Added reference to conversation context: ${reference.referenceId} (${contextId})`);
61
-
62
- return contextId;
63
- }
64
-
65
- /**
66
- * Generate display text for a content reference
67
- */
68
- async displayReference(
69
- reference: ContentReference,
70
- options: ReferenceDisplayOptions = {}
71
- ): Promise<DisplayResult> {
72
- const {
73
- maxPreviewLength = 150,
74
- showMetadata = true,
75
- showSize = true,
76
- includeActions = true,
77
- format = 'card'
78
- } = options;
79
-
80
- try {
81
- const isValid = await this.contentStorage.hasReference(reference.referenceId);
82
- if (!isValid) {
83
- return {
84
- displayText: this.formatInvalidReference(reference, includeActions),
85
- hasValidReference: false,
86
- suggestedActions: ['Request fresh content', 'Use alternative content source']
87
- };
88
- }
89
-
90
- const contextId = this.addReference(reference);
91
-
92
- let displayText = '';
93
-
94
- switch (format) {
95
- case 'inline':
96
- displayText = this.formatInlineReference(reference, maxPreviewLength);
97
- break;
98
- case 'compact':
99
- displayText = this.formatCompactReference(reference, showSize);
100
- break;
101
- case 'card':
102
- default:
103
- displayText = this.formatCardReference(reference, {
104
- maxPreviewLength,
105
- showMetadata,
106
- showSize,
107
- includeActions,
108
- contextId
109
- });
110
- break;
111
- }
112
-
113
- return {
114
- displayText,
115
- hasValidReference: true,
116
- contextId
117
- };
118
- } catch (error) {
119
- this.logger.error('Error displaying reference:', error);
120
- return {
121
- displayText: this.formatErrorReference(reference, error),
122
- hasValidReference: false,
123
- suggestedActions: ['Check reference validity', 'Try again', 'Contact administrator']
124
- };
125
- }
126
- }
127
-
128
- /**
129
- * Get the most recent reference for "inscribe it" commands
130
- */
131
- getMostRecentReference(): ContentReference | null {
132
- if (this.activeReferences.size === 0) {
133
- return null;
134
- }
135
-
136
- let mostRecent: ReferenceContext | null = null;
137
- for (const context of this.activeReferences.values()) {
138
- if (!mostRecent || context.displayedAt > mostRecent.displayedAt) {
139
- mostRecent = context;
140
- }
141
- }
142
-
143
- if (mostRecent) {
144
- mostRecent.lastAccessedAt = new Date();
145
- return mostRecent.reference;
146
- }
147
-
148
- return null;
149
- }
150
-
151
- /**
152
- * Get reference by context ID
153
- */
154
- getReferenceByContextId(contextId: string): ContentReference | null {
155
- for (const context of this.activeReferences.values()) {
156
- if (context.contextId === contextId) {
157
- context.lastAccessedAt = new Date();
158
- return context.reference;
159
- }
160
- }
161
- return null;
162
- }
163
-
164
- /**
165
- * Validate all active references and remove invalid ones
166
- */
167
- async validateReferences(): Promise<{ valid: number; invalid: number; removed: ReferenceId[] }> {
168
- const removed: ReferenceId[] = [];
169
- let valid = 0;
170
- let invalid = 0;
171
-
172
- for (const [referenceId] of this.activeReferences.entries()) {
173
- try {
174
- const isValid = await this.contentStorage.hasReference(referenceId);
175
- if (isValid) {
176
- valid++;
177
- } else {
178
- invalid++;
179
- removed.push(referenceId);
180
- this.activeReferences.delete(referenceId);
181
- this.logger.debug(`Removed invalid reference from context: ${referenceId}`);
182
- }
183
- } catch (error) {
184
- invalid++;
185
- removed.push(referenceId);
186
- this.activeReferences.delete(referenceId);
187
- this.logger.warn(`Error validating reference ${referenceId}:`, error);
188
- }
189
- }
190
-
191
- return { valid, invalid, removed };
192
- }
193
-
194
- /**
195
- * Clear old references based on age and usage
196
- */
197
- cleanupOldReferences(maxAgeMs: number = 30 * 60 * 1000): number {
198
- const cutoffTime = new Date(Date.now() - maxAgeMs);
199
- const toRemove: ReferenceId[] = [];
200
-
201
- for (const [referenceId, context] of this.activeReferences.entries()) {
202
- if (context.lastAccessedAt < cutoffTime) {
203
- toRemove.push(referenceId);
204
- }
205
- }
206
-
207
- toRemove.forEach(referenceId => {
208
- this.activeReferences.delete(referenceId);
209
- });
210
-
211
- if (toRemove.length > 0) {
212
- this.logger.debug(`Cleaned up ${toRemove.length} old references from context`);
213
- }
214
-
215
- return toRemove.length;
216
- }
217
-
218
- /**
219
- * Get current context statistics
220
- */
221
- getContextStats(): {
222
- activeReferences: number;
223
- conversationTurn: number;
224
- oldestReference: number | null;
225
- mostRecentReference: number | null;
226
- } {
227
- return {
228
- activeReferences: this.activeReferences.size,
229
- conversationTurn: this.conversationTurn,
230
- oldestReference: this.getOldestReferenceAge(),
231
- mostRecentReference: this.getMostRecentReferenceAge()
232
- };
233
- }
234
-
235
- /**
236
- * Clear all references from context
237
- */
238
- clear(): void {
239
- this.activeReferences.clear();
240
- this.conversationTurn = 0;
241
- this.logger.debug('Cleared all references from context');
242
- }
243
-
244
- private formatCardReference(
245
- reference: ContentReference,
246
- options: {
247
- maxPreviewLength: number;
248
- showMetadata: boolean;
249
- showSize: boolean;
250
- includeActions: boolean;
251
- contextId: string;
252
- }
253
- ): string {
254
- const { maxPreviewLength, showMetadata, showSize, includeActions, contextId } = options;
255
-
256
- let display = `📄 **Large Content Reference**\n`;
257
- display += `**Preview:** ${this.truncateText(reference.preview, maxPreviewLength)}\n`;
258
-
259
- if (showSize) {
260
- const sizeKB = Math.round(reference.metadata.sizeBytes / 1024);
261
- display += `**Size:** ${sizeKB}KB`;
262
- if (reference.metadata.contentType !== 'binary') {
263
- display += ` (${reference.metadata.contentType})`;
264
- }
265
- display += '\n';
266
- }
267
-
268
- if (showMetadata) {
269
- if (reference.metadata.fileName) {
270
- display += `**File:** ${reference.metadata.fileName}\n`;
271
- }
272
- if (reference.metadata.source) {
273
- display += `**Source:** ${reference.metadata.source}\n`;
274
- }
275
- }
276
-
277
- if (includeActions) {
278
- display += `\n💡 You can say "inscribe it" to inscribe this content to the Hedera Hashgraph.`;
279
- }
280
-
281
- display += `\n\n*Reference ID: ${reference.referenceId.substring(0, 12)}...*`;
282
- display += `\n*Context: ${contextId}*`;
283
-
284
- return display;
285
- }
286
-
287
- private formatInlineReference(reference: ContentReference, maxPreviewLength: number): string {
288
- const sizeKB = Math.round(reference.metadata.sizeBytes / 1024);
289
- return `📄 [${sizeKB}KB ${reference.metadata.contentType}] ${this.truncateText(reference.preview, maxPreviewLength)}`;
290
- }
291
-
292
- private formatCompactReference(reference: ContentReference, showSize: boolean): string {
293
- const sizeKB = Math.round(reference.metadata.sizeBytes / 1024);
294
- const sizeText = showSize ? ` (${sizeKB}KB)` : '';
295
- return `📄 Referenced content${sizeText}: ${reference.metadata.fileName || 'large content'}`;
296
- }
297
-
298
- private formatInvalidReference(reference: ContentReference, includeActions: boolean): string {
299
- let display = `❌ **Content Reference Expired**\n`;
300
- display += `The referenced content is no longer available.\n`;
301
- display += `**Original:** ${this.truncateText(reference.preview, 100)}\n`;
302
-
303
- if (includeActions) {
304
- display += `\n💡 Please request fresh content from the original source.`;
305
- }
306
-
307
- return display;
308
- }
309
-
310
- private formatErrorReference(reference: ContentReference, error: unknown): string {
311
- const errorMsg = error instanceof Error ? error.message : 'Unknown error';
312
- let display = `⚠️ **Reference Error**\n`;
313
- display += `Error accessing referenced content: ${errorMsg}\n`;
314
- display += `**Reference:** ${this.truncateText(reference.preview, 100)}\n`;
315
- return display;
316
- }
317
-
318
- private truncateText(text: string, maxLength: number): string {
319
- if (text.length <= maxLength) {
320
- return text;
321
- }
322
- return text.substring(0, maxLength) + '...';
323
- }
324
-
325
- private getOldestReferenceAge(): number | null {
326
- if (this.activeReferences.size === 0) return null;
327
-
328
- let oldest: Date | null = null;
329
- for (const context of this.activeReferences.values()) {
330
- if (!oldest || context.displayedAt < oldest) {
331
- oldest = context.displayedAt;
332
- }
333
- }
334
-
335
- return oldest ? Date.now() - oldest.getTime() : null;
336
- }
337
-
338
- private getMostRecentReferenceAge(): number | null {
339
- if (this.activeReferences.size === 0) return null;
340
-
341
- let newest: Date | null = null;
342
- for (const context of this.activeReferences.values()) {
343
- if (!newest || context.displayedAt > newest) {
344
- newest = context.displayedAt;
345
- }
346
- }
347
-
348
- return newest ? Date.now() - newest.getTime() : null;
349
- }
350
- }