@hashgraphonline/standards-agent-kit 0.0.37 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (251) hide show
  1. package/dist/cjs/builders/hcs10/hcs10-builder.d.ts +262 -0
  2. package/dist/cjs/builders/index.d.ts +2 -0
  3. package/dist/cjs/builders/types.d.ts +10 -0
  4. package/dist/cjs/index.d.ts +3 -1
  5. package/dist/cjs/init/init.d.ts +21 -22
  6. package/dist/cjs/plugins/PluginInterface.d.ts +4 -80
  7. package/dist/cjs/plugins/PluginRegistry.d.ts +1 -47
  8. package/dist/cjs/plugins/defi/index.d.ts +7 -4
  9. package/dist/cjs/plugins/hedera/HbarPricePlugin.d.ts +7 -35
  10. package/dist/cjs/plugins/index.d.ts +0 -5
  11. package/dist/cjs/plugins/weather/index.d.ts +6 -5
  12. package/dist/cjs/standards-agent-kit.cjs +1 -1
  13. package/dist/cjs/standards-agent-kit.cjs.map +1 -1
  14. package/dist/cjs/state/state-types.d.ts +8 -8
  15. package/dist/cjs/tools/hcs10/AcceptConnectionRequestTool.d.ts +40 -0
  16. package/dist/cjs/tools/hcs10/CheckMessagesTool.d.ts +40 -0
  17. package/dist/cjs/tools/hcs10/ConnectionMonitorTool.d.ts +134 -0
  18. package/dist/cjs/tools/hcs10/FindRegistrationsTool.d.ts +34 -0
  19. package/dist/cjs/tools/hcs10/InitiateConnectionTool.d.ts +43 -0
  20. package/dist/cjs/tools/hcs10/ListConnectionsTool.d.ts +34 -0
  21. package/dist/cjs/tools/hcs10/ListUnapprovedConnectionRequestsTool.d.ts +15 -0
  22. package/dist/cjs/tools/hcs10/ManageConnectionRequestsTool.d.ts +34 -0
  23. package/dist/cjs/tools/hcs10/RegisterAgentTool.d.ts +218 -0
  24. package/dist/cjs/tools/hcs10/RetrieveProfileTool.d.ts +33 -0
  25. package/dist/cjs/tools/hcs10/SendMessageToConnectionTool.d.ts +40 -0
  26. package/dist/cjs/tools/hcs10/base-hcs10-tools.d.ts +28 -0
  27. package/dist/cjs/tools/hcs10/hcs10-tool-params.d.ts +18 -0
  28. package/dist/cjs/tools/hcs10/index.d.ts +13 -0
  29. package/dist/cjs/tools/index.d.ts +1 -13
  30. package/dist/es/builders/hcs10/hcs10-builder.d.ts +262 -0
  31. package/dist/es/builders/index.d.ts +2 -0
  32. package/dist/es/builders/types.d.ts +10 -0
  33. package/dist/es/index.d.ts +3 -1
  34. package/dist/es/init/init.d.ts +21 -22
  35. package/dist/es/plugins/PluginInterface.d.ts +4 -80
  36. package/dist/es/plugins/PluginRegistry.d.ts +1 -47
  37. package/dist/es/plugins/defi/index.d.ts +7 -4
  38. package/dist/es/plugins/hedera/HbarPricePlugin.d.ts +7 -35
  39. package/dist/es/plugins/index.d.ts +0 -5
  40. package/dist/es/plugins/weather/index.d.ts +6 -5
  41. package/dist/es/standards-agent-kit.es.js +10 -18
  42. package/dist/es/standards-agent-kit.es.js.map +1 -1
  43. package/dist/es/standards-agent-kit.es10.js +29 -76
  44. package/dist/es/standards-agent-kit.es10.js.map +1 -1
  45. package/dist/es/standards-agent-kit.es11.js +61 -384
  46. package/dist/es/standards-agent-kit.es11.js.map +1 -1
  47. package/dist/es/standards-agent-kit.es12.js +22 -190
  48. package/dist/es/standards-agent-kit.es12.js.map +1 -1
  49. package/dist/es/standards-agent-kit.es13.js +26 -138
  50. package/dist/es/standards-agent-kit.es13.js.map +1 -1
  51. package/dist/es/standards-agent-kit.es14.js +35 -59
  52. package/dist/es/standards-agent-kit.es14.js.map +1 -1
  53. package/dist/es/standards-agent-kit.es15.js +11 -117
  54. package/dist/es/standards-agent-kit.es15.js.map +1 -1
  55. package/dist/es/standards-agent-kit.es16.js +1 -1
  56. package/dist/es/standards-agent-kit.es16.js.map +1 -1
  57. package/dist/es/standards-agent-kit.es17.js +63 -46
  58. package/dist/es/standards-agent-kit.es17.js.map +1 -1
  59. package/dist/es/standards-agent-kit.es18.js +25 -74
  60. package/dist/es/standards-agent-kit.es18.js.map +1 -1
  61. package/dist/es/standards-agent-kit.es19.js +22 -13
  62. package/dist/es/standards-agent-kit.es19.js.map +1 -1
  63. package/dist/es/standards-agent-kit.es2.js +1381 -188
  64. package/dist/es/standards-agent-kit.es2.js.map +1 -1
  65. package/dist/es/standards-agent-kit.es20.js +3 -67
  66. package/dist/es/standards-agent-kit.es20.js.map +1 -1
  67. package/dist/es/standards-agent-kit.es3.js +285 -347
  68. package/dist/es/standards-agent-kit.es3.js.map +1 -1
  69. package/dist/es/standards-agent-kit.es4.js +22 -74
  70. package/dist/es/standards-agent-kit.es4.js.map +1 -1
  71. package/dist/es/standards-agent-kit.es5.js +127 -154
  72. package/dist/es/standards-agent-kit.es5.js.map +1 -1
  73. package/dist/es/standards-agent-kit.es6.js +21 -88
  74. package/dist/es/standards-agent-kit.es6.js.map +1 -1
  75. package/dist/es/standards-agent-kit.es7.js +28 -86
  76. package/dist/es/standards-agent-kit.es7.js.map +1 -1
  77. package/dist/es/standards-agent-kit.es8.js +27 -100
  78. package/dist/es/standards-agent-kit.es8.js.map +1 -1
  79. package/dist/es/standards-agent-kit.es9.js +35 -117
  80. package/dist/es/standards-agent-kit.es9.js.map +1 -1
  81. package/dist/es/state/state-types.d.ts +8 -8
  82. package/dist/es/tools/hcs10/AcceptConnectionRequestTool.d.ts +40 -0
  83. package/dist/es/tools/hcs10/CheckMessagesTool.d.ts +40 -0
  84. package/dist/es/tools/hcs10/ConnectionMonitorTool.d.ts +134 -0
  85. package/dist/es/tools/hcs10/FindRegistrationsTool.d.ts +34 -0
  86. package/dist/es/tools/hcs10/InitiateConnectionTool.d.ts +43 -0
  87. package/dist/es/tools/hcs10/ListConnectionsTool.d.ts +34 -0
  88. package/dist/es/tools/hcs10/ListUnapprovedConnectionRequestsTool.d.ts +15 -0
  89. package/dist/es/tools/hcs10/ManageConnectionRequestsTool.d.ts +34 -0
  90. package/dist/es/tools/hcs10/RegisterAgentTool.d.ts +218 -0
  91. package/dist/es/tools/hcs10/RetrieveProfileTool.d.ts +33 -0
  92. package/dist/es/tools/hcs10/SendMessageToConnectionTool.d.ts +40 -0
  93. package/dist/es/tools/hcs10/base-hcs10-tools.d.ts +28 -0
  94. package/dist/es/tools/hcs10/hcs10-tool-params.d.ts +18 -0
  95. package/dist/es/tools/hcs10/index.d.ts +13 -0
  96. package/dist/es/tools/index.d.ts +1 -13
  97. package/dist/umd/builders/hcs10/hcs10-builder.d.ts +262 -0
  98. package/dist/umd/builders/index.d.ts +2 -0
  99. package/dist/umd/builders/types.d.ts +10 -0
  100. package/dist/umd/index.d.ts +3 -1
  101. package/dist/umd/init/init.d.ts +21 -22
  102. package/dist/umd/plugins/PluginInterface.d.ts +4 -80
  103. package/dist/umd/plugins/PluginRegistry.d.ts +1 -47
  104. package/dist/umd/plugins/defi/index.d.ts +7 -4
  105. package/dist/umd/plugins/hedera/HbarPricePlugin.d.ts +7 -35
  106. package/dist/umd/plugins/index.d.ts +0 -5
  107. package/dist/umd/plugins/weather/index.d.ts +6 -5
  108. package/dist/umd/standards-agent-kit.umd.js +1 -164
  109. package/dist/umd/standards-agent-kit.umd.js.map +1 -1
  110. package/dist/umd/state/state-types.d.ts +8 -8
  111. package/dist/umd/tools/hcs10/AcceptConnectionRequestTool.d.ts +40 -0
  112. package/dist/umd/tools/hcs10/CheckMessagesTool.d.ts +40 -0
  113. package/dist/umd/tools/hcs10/ConnectionMonitorTool.d.ts +134 -0
  114. package/dist/umd/tools/hcs10/FindRegistrationsTool.d.ts +34 -0
  115. package/dist/umd/tools/hcs10/InitiateConnectionTool.d.ts +43 -0
  116. package/dist/umd/tools/hcs10/ListConnectionsTool.d.ts +34 -0
  117. package/dist/umd/tools/hcs10/ListUnapprovedConnectionRequestsTool.d.ts +15 -0
  118. package/dist/umd/tools/hcs10/ManageConnectionRequestsTool.d.ts +34 -0
  119. package/dist/umd/tools/hcs10/RegisterAgentTool.d.ts +218 -0
  120. package/dist/umd/tools/hcs10/RetrieveProfileTool.d.ts +33 -0
  121. package/dist/umd/tools/hcs10/SendMessageToConnectionTool.d.ts +40 -0
  122. package/dist/umd/tools/hcs10/base-hcs10-tools.d.ts +28 -0
  123. package/dist/umd/tools/hcs10/hcs10-tool-params.d.ts +18 -0
  124. package/dist/umd/tools/hcs10/index.d.ts +13 -0
  125. package/dist/umd/tools/index.d.ts +1 -13
  126. package/package.json +41 -41
  127. package/src/builders/hcs10/hcs10-builder.ts +2108 -0
  128. package/src/builders/index.ts +2 -0
  129. package/src/builders/types.ts +11 -0
  130. package/src/hcs10/HCS10Client.ts +3 -2
  131. package/src/index.ts +4 -2
  132. package/src/init/init.ts +85 -63
  133. package/src/plugins/PluginInterface.ts +15 -94
  134. package/src/plugins/PluginRegistry.ts +2 -98
  135. package/src/plugins/defi/index.ts +31 -118
  136. package/src/plugins/hedera/HbarPricePlugin.ts +19 -100
  137. package/src/plugins/index.ts +0 -5
  138. package/src/plugins/weather/index.ts +56 -40
  139. package/src/state/state-types.ts +9 -11
  140. package/src/tools/hcs10/AcceptConnectionRequestTool.ts +56 -0
  141. package/src/tools/hcs10/CheckMessagesTool.ts +73 -0
  142. package/src/tools/hcs10/ConnectionMonitorTool.ts +111 -0
  143. package/src/tools/hcs10/FindRegistrationsTool.ts +64 -0
  144. package/src/tools/hcs10/InitiateConnectionTool.ts +66 -0
  145. package/src/tools/hcs10/ListConnectionsTool.ts +58 -0
  146. package/src/tools/hcs10/ListUnapprovedConnectionRequestsTool.ts +26 -0
  147. package/src/tools/hcs10/ManageConnectionRequestsTool.ts +48 -0
  148. package/src/tools/hcs10/RegisterAgentTool.ts +213 -0
  149. package/src/tools/hcs10/RetrieveProfileTool.ts +61 -0
  150. package/src/tools/hcs10/SendMessageToConnectionTool.ts +45 -0
  151. package/src/tools/hcs10/base-hcs10-tools.ts +65 -0
  152. package/src/tools/hcs10/hcs10-tool-params.ts +21 -0
  153. package/src/tools/hcs10/index.ts +13 -0
  154. package/src/tools/index.ts +2 -13
  155. package/src/utils/HederaClient.ts +2 -2
  156. package/src/utils/ensure-agent-has-hbar.ts +3 -4
  157. package/dist/cjs/agents/index.d.ts +0 -0
  158. package/dist/cjs/plugins/BasePlugin.d.ts +0 -28
  159. package/dist/cjs/plugins/GenericPlugin.d.ts +0 -17
  160. package/dist/cjs/plugins/HCS10Plugin.d.ts +0 -13
  161. package/dist/cjs/plugins/PluginLoader.d.ts +0 -38
  162. package/dist/cjs/plugins/openconvai/OpenConvAIPlugin.d.ts +0 -23
  163. package/dist/cjs/plugins/openconvai/index.d.ts +0 -1
  164. package/dist/cjs/tools/AcceptConnectionRequestTool.d.ts +0 -33
  165. package/dist/cjs/tools/CheckMessagesTool.d.ts +0 -34
  166. package/dist/cjs/tools/ConnectionMonitorTool.d.ts +0 -100
  167. package/dist/cjs/tools/ConnectionTool.d.ts +0 -40
  168. package/dist/cjs/tools/FindRegistrationsTool.d.ts +0 -28
  169. package/dist/cjs/tools/InitiateConnectionTool.d.ts +0 -30
  170. package/dist/cjs/tools/ListConnectionsTool.d.ts +0 -33
  171. package/dist/cjs/tools/ListUnapprovedConnectionRequestsTool.d.ts +0 -41
  172. package/dist/cjs/tools/ManageConnectionRequestsTool.d.ts +0 -38
  173. package/dist/cjs/tools/RegisterAgentTool.d.ts +0 -188
  174. package/dist/cjs/tools/RetrieveProfileTool.d.ts +0 -34
  175. package/dist/cjs/tools/SendMessageToConnectionTool.d.ts +0 -34
  176. package/dist/cjs/tools/SendMessageTool.d.ts +0 -40
  177. package/dist/es/agents/index.d.ts +0 -0
  178. package/dist/es/plugins/BasePlugin.d.ts +0 -28
  179. package/dist/es/plugins/GenericPlugin.d.ts +0 -17
  180. package/dist/es/plugins/HCS10Plugin.d.ts +0 -13
  181. package/dist/es/plugins/PluginLoader.d.ts +0 -38
  182. package/dist/es/plugins/openconvai/OpenConvAIPlugin.d.ts +0 -23
  183. package/dist/es/plugins/openconvai/index.d.ts +0 -1
  184. package/dist/es/standards-agent-kit.es21.js +0 -92
  185. package/dist/es/standards-agent-kit.es21.js.map +0 -1
  186. package/dist/es/standards-agent-kit.es22.js +0 -7
  187. package/dist/es/standards-agent-kit.es22.js.map +0 -1
  188. package/dist/es/standards-agent-kit.es23.js +0 -106
  189. package/dist/es/standards-agent-kit.es23.js.map +0 -1
  190. package/dist/es/standards-agent-kit.es24.js +0 -7
  191. package/dist/es/standards-agent-kit.es24.js.map +0 -1
  192. package/dist/es/standards-agent-kit.es25.js +0 -7
  193. package/dist/es/standards-agent-kit.es25.js.map +0 -1
  194. package/dist/es/standards-agent-kit.es26.js +0 -85
  195. package/dist/es/standards-agent-kit.es26.js.map +0 -1
  196. package/dist/es/standards-agent-kit.es27.js +0 -28
  197. package/dist/es/standards-agent-kit.es27.js.map +0 -1
  198. package/dist/es/tools/AcceptConnectionRequestTool.d.ts +0 -33
  199. package/dist/es/tools/CheckMessagesTool.d.ts +0 -34
  200. package/dist/es/tools/ConnectionMonitorTool.d.ts +0 -100
  201. package/dist/es/tools/ConnectionTool.d.ts +0 -40
  202. package/dist/es/tools/FindRegistrationsTool.d.ts +0 -28
  203. package/dist/es/tools/InitiateConnectionTool.d.ts +0 -30
  204. package/dist/es/tools/ListConnectionsTool.d.ts +0 -33
  205. package/dist/es/tools/ListUnapprovedConnectionRequestsTool.d.ts +0 -41
  206. package/dist/es/tools/ManageConnectionRequestsTool.d.ts +0 -38
  207. package/dist/es/tools/RegisterAgentTool.d.ts +0 -188
  208. package/dist/es/tools/RetrieveProfileTool.d.ts +0 -34
  209. package/dist/es/tools/SendMessageToConnectionTool.d.ts +0 -34
  210. package/dist/es/tools/SendMessageTool.d.ts +0 -40
  211. package/dist/umd/agents/index.d.ts +0 -0
  212. package/dist/umd/plugins/BasePlugin.d.ts +0 -28
  213. package/dist/umd/plugins/GenericPlugin.d.ts +0 -17
  214. package/dist/umd/plugins/HCS10Plugin.d.ts +0 -13
  215. package/dist/umd/plugins/PluginLoader.d.ts +0 -38
  216. package/dist/umd/plugins/openconvai/OpenConvAIPlugin.d.ts +0 -23
  217. package/dist/umd/plugins/openconvai/index.d.ts +0 -1
  218. package/dist/umd/tools/AcceptConnectionRequestTool.d.ts +0 -33
  219. package/dist/umd/tools/CheckMessagesTool.d.ts +0 -34
  220. package/dist/umd/tools/ConnectionMonitorTool.d.ts +0 -100
  221. package/dist/umd/tools/ConnectionTool.d.ts +0 -40
  222. package/dist/umd/tools/FindRegistrationsTool.d.ts +0 -28
  223. package/dist/umd/tools/InitiateConnectionTool.d.ts +0 -30
  224. package/dist/umd/tools/ListConnectionsTool.d.ts +0 -33
  225. package/dist/umd/tools/ListUnapprovedConnectionRequestsTool.d.ts +0 -41
  226. package/dist/umd/tools/ManageConnectionRequestsTool.d.ts +0 -38
  227. package/dist/umd/tools/RegisterAgentTool.d.ts +0 -188
  228. package/dist/umd/tools/RetrieveProfileTool.d.ts +0 -34
  229. package/dist/umd/tools/SendMessageToConnectionTool.d.ts +0 -34
  230. package/dist/umd/tools/SendMessageTool.d.ts +0 -40
  231. package/src/agents/index.ts +0 -1
  232. package/src/plugins/BasePlugin.ts +0 -37
  233. package/src/plugins/GenericPlugin.ts +0 -19
  234. package/src/plugins/HCS10Plugin.ts +0 -14
  235. package/src/plugins/PluginLoader.ts +0 -121
  236. package/src/plugins/README.md +0 -113
  237. package/src/plugins/openconvai/OpenConvAIPlugin.ts +0 -124
  238. package/src/plugins/openconvai/index.ts +0 -1
  239. package/src/tools/AcceptConnectionRequestTool.ts +0 -196
  240. package/src/tools/CheckMessagesTool.ts +0 -194
  241. package/src/tools/ConnectionMonitorTool.ts +0 -550
  242. package/src/tools/ConnectionTool.ts +0 -231
  243. package/src/tools/FindRegistrationsTool.ts +0 -114
  244. package/src/tools/InitiateConnectionTool.ts +0 -137
  245. package/src/tools/ListConnectionsTool.ts +0 -158
  246. package/src/tools/ListUnapprovedConnectionRequestsTool.ts +0 -173
  247. package/src/tools/ManageConnectionRequestsTool.ts +0 -275
  248. package/src/tools/RegisterAgentTool.ts +0 -590
  249. package/src/tools/RetrieveProfileTool.ts +0 -94
  250. package/src/tools/SendMessageToConnectionTool.ts +0 -142
  251. package/src/tools/SendMessageTool.ts +0 -116
@@ -1,173 +0,0 @@
1
- import { StructuredTool, ToolParams } from '@langchain/core/tools';
2
- import { z } from 'zod';
3
- import {
4
- IStateManager,
5
- } from '../state/state-types';
6
- import { HCS10Client } from '../hcs10/HCS10Client';
7
- import {
8
- Logger,
9
- Connection,
10
- } from '@hashgraphonline/standards-sdk';
11
-
12
-
13
- type ListPendingRequestsToolParams = ToolParams & {
14
- hcsClient: HCS10Client;
15
- stateManager: IStateManager;
16
- };
17
-
18
- export class ListUnapprovedConnectionRequestsTool extends StructuredTool {
19
- name = 'list_unapproved_connection_requests';
20
- description =
21
- 'Lists all connection requests that are not fully established, including incoming requests needing approval and outgoing requests waiting for confirmation.';
22
- schema = z.object({
23
- sortBy: z
24
- .enum(['time_asc', 'time_desc', 'name_asc', 'name_desc'])
25
- .optional()
26
- .describe(
27
- 'Optional sorting criteria for the requests list (default: time_desc, newest first)'
28
- ),
29
- limit: z
30
- .number()
31
- .optional()
32
- .describe(
33
- 'Optional limit on the number of requests to return (default: all)'
34
- ),
35
- });
36
-
37
- private hcsClient: HCS10Client;
38
- private stateManager: IStateManager;
39
- private logger: Logger;
40
-
41
- constructor({
42
- hcsClient,
43
- stateManager,
44
- ...rest
45
- }: ListPendingRequestsToolParams) {
46
- super(rest);
47
- this.hcsClient = hcsClient;
48
- this.stateManager = stateManager;
49
- this.logger = Logger.getInstance({
50
- module: 'ListPendingRequestsTool',
51
- level: 'debug',
52
- });
53
- }
54
-
55
- protected async _call({
56
- sortBy = 'time_desc',
57
- limit,
58
- }: z.infer<this['schema']>): Promise<string> {
59
- const currentAgent = this.stateManager.getCurrentAgent();
60
- if (!currentAgent) {
61
- return 'Error: Cannot list pending requests. No agent is currently active. Please register or select an agent first.';
62
- }
63
-
64
- try {
65
- const pendingRequests = await this.findAllPendingRequests();
66
- return this.formatRequestsList(pendingRequests, sortBy, limit);
67
- } catch (error) {
68
- this.logger.error(`Error in ${this.name}: ${error}`);
69
- return `Error listing pending requests: ${
70
- error instanceof Error ? error.message : String(error)
71
- }`;
72
- }
73
- }
74
-
75
- /**
76
- * Processes the connection connectionMap to find all requests
77
- * that are not fully established (incoming unapproved and outgoing pending).
78
- */
79
- private async findAllPendingRequests(): Promise<Connection[]> {
80
- const connectionsManager = this.stateManager.getConnectionsManager();
81
- if (!connectionsManager) {
82
- return [];
83
- }
84
- const currentAgent = this.stateManager.getCurrentAgent();
85
- if (!currentAgent) {
86
- return [];
87
- }
88
-
89
- await connectionsManager.fetchConnectionData(currentAgent.accountId);
90
- const pendingRequests = connectionsManager.getPendingRequests();
91
- const connectionsNeedingConfirmation = connectionsManager.getConnectionsNeedingConfirmation();
92
-
93
- return [...pendingRequests, ...connectionsNeedingConfirmation];
94
- }
95
-
96
- /**
97
- * Formats the list of pending requests for display.
98
- */
99
- private formatRequestsList(
100
- requests: Connection[],
101
- sortBy: string,
102
- limit?: number
103
- ): string {
104
- if (requests.length === 0) {
105
- return 'No pending connection requests found (incoming or outgoing).';
106
- }
107
-
108
- const sortedRequests = this.sortRequests(requests, sortBy);
109
- const limitedRequests = limit
110
- ? sortedRequests.slice(0, limit)
111
- : sortedRequests;
112
-
113
- let output = `Found ${requests.length} pending connection request(s):\n\n`;
114
-
115
- limitedRequests.forEach((request, index) => {
116
- const statusIndicator =
117
- request.status === 'needs_confirmation'
118
- ? '🟠 Incoming'
119
- : '⚪️ Outgoing';
120
- output += `${index + 1}. ${statusIndicator} - ID: ${request.uniqueRequestKey}\n`;
121
- output += ` ${
122
- request.status === 'needs_confirmation' ? 'From:' : 'To: '
123
- } ${request.targetAgentName} (${request.targetAccountId})\n`;
124
- output += ` Sent/Rcvd: ${request.created.toLocaleString()}\n`;
125
- if (request.memo) {
126
- output += ` Memo: ${request.memo}\n`;
127
- }
128
- if (request.profileInfo?.bio) {
129
- output += ` Bio: ${request.profileInfo.bio.substring(0, 100)}${
130
- request.profileInfo.bio.length > 100 ? '...' : ''
131
- }\n`;
132
- }
133
- output += '\n';
134
- });
135
-
136
- output +=
137
- 'Use related tools (manage_requests, accept_request) to handle these items.';
138
- return output;
139
- }
140
-
141
- /**
142
- * Sorts connection requests based on the specified criteria.
143
- */
144
- private sortRequests(
145
- requests: Connection[],
146
- sortBy: string
147
- ): Connection[] {
148
- const requestsCopy = [...requests];
149
-
150
- switch (sortBy) {
151
- case 'time_asc':
152
- return requestsCopy.sort(
153
- (a, b) => a.created.getTime() - b.created.getTime()
154
- );
155
- case 'time_desc':
156
- return requestsCopy.sort(
157
- (a, b) => b.created.getTime() - a.created.getTime()
158
- );
159
- case 'name_asc':
160
- return requestsCopy.sort((a, b) =>
161
- a.targetAgentName?.localeCompare(b?.targetAgentName || '') || 0
162
- );
163
- case 'name_desc':
164
- return requestsCopy.sort((a, b) =>
165
- b.targetAgentName?.localeCompare(a?.targetAgentName || '') || 0
166
- );
167
- default:
168
- return requestsCopy.sort(
169
- (a, b) => b.created.getTime() - a.created.getTime()
170
- );
171
- }
172
- }
173
- }
@@ -1,275 +0,0 @@
1
- import { StructuredTool, ToolParams } from '@langchain/core/tools';
2
- import { z } from 'zod';
3
- import { HCS10Client } from '../hcs10/HCS10Client';
4
- import { IStateManager } from '../state/state-types';
5
- import { Logger } from '@hashgraphonline/standards-sdk';
6
-
7
- export interface ManageConnectionRequestsToolParams extends ToolParams {
8
- hcsClient: HCS10Client;
9
- stateManager: IStateManager;
10
- }
11
-
12
- /**
13
- * A tool for managing incoming connection requests in a LangChain-compatible way.
14
- * This tool allows an agent to list, view details of, and accept/reject incoming connection requests.
15
- */
16
- export class ManageConnectionRequestsTool extends StructuredTool {
17
- name = 'manage_connection_requests';
18
- description =
19
- 'Manage incoming connection requests. List pending requests, view details about requesting agents, and reject connection requests. Use the separate "accept_connection_request" tool to accept.';
20
- schema = z.object({
21
- action: z
22
- .enum(['list', 'view', 'reject'])
23
- .describe(
24
- 'The action to perform: list all requests, view details of a specific request, or reject a request'
25
- ),
26
- requestKey: z
27
- .string()
28
- .optional()
29
- .describe(
30
- 'The unique request key to view or reject (required for view and reject actions)'
31
- ),
32
- });
33
-
34
- private hcsClient: HCS10Client;
35
- private stateManager: IStateManager;
36
- private logger: Logger;
37
- private lastRefreshTime: number = 0;
38
- private refreshIntervalMs = 30000;
39
-
40
- constructor({
41
- hcsClient,
42
- stateManager,
43
- ...rest
44
- }: ManageConnectionRequestsToolParams) {
45
- super(rest);
46
- this.hcsClient = hcsClient;
47
- this.stateManager = stateManager;
48
- this.logger = Logger.getInstance({
49
- module: 'ManageConnectionRequestsTool',
50
- level: 'debug',
51
- });
52
- }
53
-
54
- protected async _call({
55
- action,
56
- requestKey,
57
- }: z.infer<this['schema']>): Promise<string> {
58
- const currentAgent = this.stateManager.getCurrentAgent();
59
- if (!currentAgent) {
60
- return 'Error: Cannot manage connection requests. No agent is currently active. Please register or select an agent first.';
61
- }
62
-
63
- if ((action === 'view' || action === 'reject') && requestKey === undefined) {
64
- return `Error: Request key is required for the "${action}" action. Use the "list" action first to see available requests.`;
65
- }
66
-
67
- try {
68
- await this.refreshRequestsIfNeeded();
69
-
70
- switch (action) {
71
- case 'list':
72
- return this.listRequests();
73
- case 'view':
74
- return this.viewRequest(requestKey!);
75
- case 'reject':
76
- return this.rejectRequest(requestKey!);
77
- default:
78
- return `Error: Unsupported action: ${action}`;
79
- }
80
- } catch (error) {
81
- this.logger.error(`Error in ManageConnectionRequestsTool: ${error}`);
82
- return `Error managing connection requests: ${
83
- error instanceof Error ? error.message : String(error)
84
- }`;
85
- }
86
- }
87
-
88
- private async refreshRequestsIfNeeded(): Promise<void> {
89
- const now = Date.now();
90
- if (now - this.lastRefreshTime > this.refreshIntervalMs) {
91
- await this.refreshRequests();
92
- this.lastRefreshTime = now;
93
- }
94
- }
95
-
96
- private async refreshRequests(): Promise<void> {
97
- try {
98
- const { accountId } = this.hcsClient.getAccountAndSigner();
99
- if (!accountId) {
100
- throw new Error('Could not determine account ID for current agent');
101
- }
102
-
103
- const connectionManager = this.stateManager.getConnectionsManager();
104
- if (!connectionManager) {
105
- throw new Error('ConnectionsManager not initialized');
106
- }
107
-
108
- await connectionManager.fetchConnectionData(accountId);
109
- } catch (error) {
110
- this.logger.error(`Error refreshing connection requests: ${error}`);
111
- throw error;
112
- }
113
- }
114
-
115
- private listRequests(): string {
116
- const connectionsManager = this.stateManager.getConnectionsManager();
117
- if (!connectionsManager) {
118
- return 'Error: ConnectionsManager not initialized';
119
- }
120
-
121
- const pendingRequests = connectionsManager.getPendingRequests();
122
- const needsConfirmation =
123
- connectionsManager.getConnectionsNeedingConfirmation();
124
-
125
- const allRequests = [...pendingRequests, ...needsConfirmation];
126
-
127
- if (allRequests.length === 0) {
128
- console.log('No pending connection requests found.', allRequests);
129
- return 'No pending connection requests found.';
130
- }
131
-
132
- let output = `Found ${allRequests.length} pending connection request(s):\n\n`;
133
- const sortedRequests = [...allRequests].sort(
134
- (a, b) => b.created.getTime() - a.created.getTime()
135
- );
136
-
137
- sortedRequests.forEach((request, index) => {
138
- // Create a display ID for the connection request
139
- const requestType = request.needsConfirmation ? '🟠 Incoming' : '⚪️ Outgoing';
140
- const requestIdDisplay = request.uniqueRequestKey ||
141
- `${request.connectionRequestId || request.inboundRequestId || 'unknown'}`;
142
-
143
- output += `${index + 1}. ${requestType} - Key: ${requestIdDisplay}\n`;
144
- output += ` ${request.needsConfirmation ? 'From' : 'To'}: ${
145
- request.targetAgentName || `Agent ${request.targetAccountId}`
146
- } (${request.targetAccountId})\n`;
147
- output += ` Sent/Rcvd: ${request.created.toLocaleString()}\n`;
148
-
149
- if (request.memo) {
150
- output += ` Memo: ${request.memo}\n`;
151
- }
152
-
153
- if (request.profileInfo && request.profileInfo.bio) {
154
- output += ` Bio: ${request.profileInfo.bio}\n`;
155
- }
156
-
157
- output += '\n';
158
- });
159
-
160
- output +=
161
- 'To view more details about a request, use action="view" with the specific requestKey.\n';
162
- output +=
163
- 'To reject a request, use action="reject" with the specific requestKey.';
164
- return output;
165
- }
166
-
167
- private viewRequest(requestKey: string): string {
168
- const connectionsManager = this.stateManager.getConnectionsManager();
169
- if (!connectionsManager) {
170
- return 'Error: ConnectionsManager not initialized';
171
- }
172
-
173
- const pendingRequests = connectionsManager.getPendingRequests();
174
- const needsConfirmation =
175
- connectionsManager.getConnectionsNeedingConfirmation();
176
-
177
- const allRequests = [...pendingRequests, ...needsConfirmation];
178
-
179
- // Find the request with the matching unique key or fallback to sequence number
180
- const request = allRequests.find(
181
- (r) =>
182
- (r.uniqueRequestKey === requestKey) ||
183
- (r.connectionRequestId?.toString() === requestKey) ||
184
- (r.inboundRequestId?.toString() === requestKey)
185
- );
186
-
187
- if (!request) {
188
- return `Error: Request with key ${requestKey} not found or no longer pending.`;
189
- }
190
-
191
- // Create a display ID for the connection request
192
- const requestType = request.needsConfirmation ? 'Incoming' : 'Outgoing';
193
- const uniqueKey = request.uniqueRequestKey ||
194
- `${request.connectionRequestId || request.inboundRequestId || 'unknown'}`;
195
-
196
- let output = `Details for ${requestType} connection request: ${uniqueKey}\n\n`;
197
- output += `${request.needsConfirmation ? 'Requestor' : 'Target'} ID: ${request.targetAccountId}\n`;
198
- output += `${request.needsConfirmation ? 'Requestor' : 'Target'} Name: ${
199
- request.targetAgentName || `Agent ${request.targetAccountId}`
200
- }\n`;
201
- output += `Received: ${request.created.toLocaleString()}\n`;
202
-
203
- if (request.memo) {
204
- output += `Memo: ${request.memo}\n`;
205
- }
206
-
207
- if (request.profileInfo) {
208
- output += '\nAgent Profile Information:\n';
209
-
210
- if (request.profileInfo.display_name || request.profileInfo.alias) {
211
- output += `Name: ${
212
- request.profileInfo.display_name || request.profileInfo.alias
213
- }\n`;
214
- }
215
-
216
- if (request.profileInfo.type !== undefined) {
217
- output += `Type: ${request.profileInfo.type}\n`;
218
- }
219
-
220
- if (request.profileInfo.bio) {
221
- output += `Bio: ${request.profileInfo.bio}\n`;
222
- }
223
- }
224
-
225
- output += '\nActions:\n';
226
- output += `- To reject this request: action="reject", requestKey="${uniqueKey}"\n`;
227
- output +=
228
- 'Use the separate "accept_connection_request" tool to accept requests.';
229
- return output;
230
- }
231
-
232
- private async rejectRequest(requestKey: string): Promise<string> {
233
- const connectionsManager = this.stateManager.getConnectionsManager();
234
- if (!connectionsManager) {
235
- return 'Error: ConnectionsManager not initialized';
236
- }
237
-
238
- const pendingRequests = connectionsManager.getPendingRequests();
239
- const needsConfirmation =
240
- connectionsManager.getConnectionsNeedingConfirmation();
241
-
242
- const allRequests = [...pendingRequests, ...needsConfirmation];
243
-
244
- // Find the request with the matching unique key or fallback to sequence number
245
- const request = allRequests.find(
246
- (r) =>
247
- (r.uniqueRequestKey === requestKey) ||
248
- (r.connectionRequestId?.toString() === requestKey) ||
249
- (r.inboundRequestId?.toString() === requestKey)
250
- );
251
-
252
- if (!request) {
253
- return `Error: Request with key ${requestKey} not found or no longer pending.`;
254
- }
255
-
256
- // Mark as processed in ConnectionsManager based on the appropriate ID
257
- if (request.inboundRequestId) {
258
- // For needs_confirmation requests
259
- connectionsManager.markConnectionRequestProcessed(
260
- request.targetInboundTopicId || '',
261
- request.inboundRequestId
262
- );
263
- } else if (request.connectionRequestId) {
264
- // For pending requests
265
- connectionsManager.markConnectionRequestProcessed(
266
- request.originTopicId || '',
267
- request.connectionRequestId
268
- );
269
- }
270
-
271
- return `Connection request from ${
272
- request.targetAgentName || `Agent ${request.targetAccountId}`
273
- } was rejected.`;
274
- }
275
- }