@hashgraphonline/standards-agent-kit 0.0.38 → 0.2.1

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 (252) hide show
  1. package/README.md +137 -170
  2. package/dist/cjs/builders/hcs10/hcs10-builder.d.ts +262 -0
  3. package/dist/cjs/builders/index.d.ts +2 -0
  4. package/dist/cjs/builders/types.d.ts +10 -0
  5. package/dist/cjs/index.d.ts +3 -1
  6. package/dist/cjs/init/init.d.ts +21 -22
  7. package/dist/cjs/plugins/PluginInterface.d.ts +4 -80
  8. package/dist/cjs/plugins/PluginRegistry.d.ts +1 -47
  9. package/dist/cjs/plugins/defi/index.d.ts +7 -4
  10. package/dist/cjs/plugins/hedera/HbarPricePlugin.d.ts +7 -35
  11. package/dist/cjs/plugins/index.d.ts +0 -5
  12. package/dist/cjs/plugins/weather/index.d.ts +6 -5
  13. package/dist/cjs/standards-agent-kit.cjs +1 -1
  14. package/dist/cjs/standards-agent-kit.cjs.map +1 -1
  15. package/dist/cjs/state/state-types.d.ts +8 -8
  16. package/dist/cjs/tools/hcs10/AcceptConnectionRequestTool.d.ts +40 -0
  17. package/dist/cjs/tools/hcs10/CheckMessagesTool.d.ts +40 -0
  18. package/dist/cjs/tools/hcs10/ConnectionMonitorTool.d.ts +134 -0
  19. package/dist/cjs/tools/hcs10/FindRegistrationsTool.d.ts +34 -0
  20. package/dist/cjs/tools/hcs10/InitiateConnectionTool.d.ts +43 -0
  21. package/dist/cjs/tools/hcs10/ListConnectionsTool.d.ts +34 -0
  22. package/dist/cjs/tools/hcs10/ListUnapprovedConnectionRequestsTool.d.ts +15 -0
  23. package/dist/cjs/tools/hcs10/ManageConnectionRequestsTool.d.ts +34 -0
  24. package/dist/cjs/tools/hcs10/RegisterAgentTool.d.ts +218 -0
  25. package/dist/cjs/tools/hcs10/RetrieveProfileTool.d.ts +33 -0
  26. package/dist/cjs/tools/hcs10/SendMessageToConnectionTool.d.ts +40 -0
  27. package/dist/cjs/tools/hcs10/base-hcs10-tools.d.ts +28 -0
  28. package/dist/cjs/tools/hcs10/hcs10-tool-params.d.ts +18 -0
  29. package/dist/cjs/tools/hcs10/index.d.ts +13 -0
  30. package/dist/cjs/tools/index.d.ts +1 -13
  31. package/dist/es/builders/hcs10/hcs10-builder.d.ts +262 -0
  32. package/dist/es/builders/index.d.ts +2 -0
  33. package/dist/es/builders/types.d.ts +10 -0
  34. package/dist/es/index.d.ts +3 -1
  35. package/dist/es/init/init.d.ts +21 -22
  36. package/dist/es/plugins/PluginInterface.d.ts +4 -80
  37. package/dist/es/plugins/PluginRegistry.d.ts +1 -47
  38. package/dist/es/plugins/defi/index.d.ts +7 -4
  39. package/dist/es/plugins/hedera/HbarPricePlugin.d.ts +7 -35
  40. package/dist/es/plugins/index.d.ts +0 -5
  41. package/dist/es/plugins/weather/index.d.ts +6 -5
  42. package/dist/es/standards-agent-kit.es.js +10 -18
  43. package/dist/es/standards-agent-kit.es.js.map +1 -1
  44. package/dist/es/standards-agent-kit.es10.js +29 -76
  45. package/dist/es/standards-agent-kit.es10.js.map +1 -1
  46. package/dist/es/standards-agent-kit.es11.js +61 -384
  47. package/dist/es/standards-agent-kit.es11.js.map +1 -1
  48. package/dist/es/standards-agent-kit.es12.js +22 -190
  49. package/dist/es/standards-agent-kit.es12.js.map +1 -1
  50. package/dist/es/standards-agent-kit.es13.js +26 -138
  51. package/dist/es/standards-agent-kit.es13.js.map +1 -1
  52. package/dist/es/standards-agent-kit.es14.js +35 -59
  53. package/dist/es/standards-agent-kit.es14.js.map +1 -1
  54. package/dist/es/standards-agent-kit.es15.js +11 -117
  55. package/dist/es/standards-agent-kit.es15.js.map +1 -1
  56. package/dist/es/standards-agent-kit.es16.js +1 -1
  57. package/dist/es/standards-agent-kit.es16.js.map +1 -1
  58. package/dist/es/standards-agent-kit.es17.js +63 -46
  59. package/dist/es/standards-agent-kit.es17.js.map +1 -1
  60. package/dist/es/standards-agent-kit.es18.js +25 -74
  61. package/dist/es/standards-agent-kit.es18.js.map +1 -1
  62. package/dist/es/standards-agent-kit.es19.js +22 -13
  63. package/dist/es/standards-agent-kit.es19.js.map +1 -1
  64. package/dist/es/standards-agent-kit.es2.js +1381 -188
  65. package/dist/es/standards-agent-kit.es2.js.map +1 -1
  66. package/dist/es/standards-agent-kit.es20.js +3 -67
  67. package/dist/es/standards-agent-kit.es20.js.map +1 -1
  68. package/dist/es/standards-agent-kit.es3.js +285 -347
  69. package/dist/es/standards-agent-kit.es3.js.map +1 -1
  70. package/dist/es/standards-agent-kit.es4.js +22 -74
  71. package/dist/es/standards-agent-kit.es4.js.map +1 -1
  72. package/dist/es/standards-agent-kit.es5.js +127 -154
  73. package/dist/es/standards-agent-kit.es5.js.map +1 -1
  74. package/dist/es/standards-agent-kit.es6.js +21 -88
  75. package/dist/es/standards-agent-kit.es6.js.map +1 -1
  76. package/dist/es/standards-agent-kit.es7.js +28 -86
  77. package/dist/es/standards-agent-kit.es7.js.map +1 -1
  78. package/dist/es/standards-agent-kit.es8.js +27 -100
  79. package/dist/es/standards-agent-kit.es8.js.map +1 -1
  80. package/dist/es/standards-agent-kit.es9.js +35 -117
  81. package/dist/es/standards-agent-kit.es9.js.map +1 -1
  82. package/dist/es/state/state-types.d.ts +8 -8
  83. package/dist/es/tools/hcs10/AcceptConnectionRequestTool.d.ts +40 -0
  84. package/dist/es/tools/hcs10/CheckMessagesTool.d.ts +40 -0
  85. package/dist/es/tools/hcs10/ConnectionMonitorTool.d.ts +134 -0
  86. package/dist/es/tools/hcs10/FindRegistrationsTool.d.ts +34 -0
  87. package/dist/es/tools/hcs10/InitiateConnectionTool.d.ts +43 -0
  88. package/dist/es/tools/hcs10/ListConnectionsTool.d.ts +34 -0
  89. package/dist/es/tools/hcs10/ListUnapprovedConnectionRequestsTool.d.ts +15 -0
  90. package/dist/es/tools/hcs10/ManageConnectionRequestsTool.d.ts +34 -0
  91. package/dist/es/tools/hcs10/RegisterAgentTool.d.ts +218 -0
  92. package/dist/es/tools/hcs10/RetrieveProfileTool.d.ts +33 -0
  93. package/dist/es/tools/hcs10/SendMessageToConnectionTool.d.ts +40 -0
  94. package/dist/es/tools/hcs10/base-hcs10-tools.d.ts +28 -0
  95. package/dist/es/tools/hcs10/hcs10-tool-params.d.ts +18 -0
  96. package/dist/es/tools/hcs10/index.d.ts +13 -0
  97. package/dist/es/tools/index.d.ts +1 -13
  98. package/dist/umd/builders/hcs10/hcs10-builder.d.ts +262 -0
  99. package/dist/umd/builders/index.d.ts +2 -0
  100. package/dist/umd/builders/types.d.ts +10 -0
  101. package/dist/umd/index.d.ts +3 -1
  102. package/dist/umd/init/init.d.ts +21 -22
  103. package/dist/umd/plugins/PluginInterface.d.ts +4 -80
  104. package/dist/umd/plugins/PluginRegistry.d.ts +1 -47
  105. package/dist/umd/plugins/defi/index.d.ts +7 -4
  106. package/dist/umd/plugins/hedera/HbarPricePlugin.d.ts +7 -35
  107. package/dist/umd/plugins/index.d.ts +0 -5
  108. package/dist/umd/plugins/weather/index.d.ts +6 -5
  109. package/dist/umd/standards-agent-kit.umd.js +1 -194
  110. package/dist/umd/standards-agent-kit.umd.js.map +1 -1
  111. package/dist/umd/state/state-types.d.ts +8 -8
  112. package/dist/umd/tools/hcs10/AcceptConnectionRequestTool.d.ts +40 -0
  113. package/dist/umd/tools/hcs10/CheckMessagesTool.d.ts +40 -0
  114. package/dist/umd/tools/hcs10/ConnectionMonitorTool.d.ts +134 -0
  115. package/dist/umd/tools/hcs10/FindRegistrationsTool.d.ts +34 -0
  116. package/dist/umd/tools/hcs10/InitiateConnectionTool.d.ts +43 -0
  117. package/dist/umd/tools/hcs10/ListConnectionsTool.d.ts +34 -0
  118. package/dist/umd/tools/hcs10/ListUnapprovedConnectionRequestsTool.d.ts +15 -0
  119. package/dist/umd/tools/hcs10/ManageConnectionRequestsTool.d.ts +34 -0
  120. package/dist/umd/tools/hcs10/RegisterAgentTool.d.ts +218 -0
  121. package/dist/umd/tools/hcs10/RetrieveProfileTool.d.ts +33 -0
  122. package/dist/umd/tools/hcs10/SendMessageToConnectionTool.d.ts +40 -0
  123. package/dist/umd/tools/hcs10/base-hcs10-tools.d.ts +28 -0
  124. package/dist/umd/tools/hcs10/hcs10-tool-params.d.ts +18 -0
  125. package/dist/umd/tools/hcs10/index.d.ts +13 -0
  126. package/dist/umd/tools/index.d.ts +1 -13
  127. package/package.json +40 -37
  128. package/src/builders/hcs10/hcs10-builder.ts +2108 -0
  129. package/src/builders/index.ts +2 -0
  130. package/src/builders/types.ts +11 -0
  131. package/src/hcs10/HCS10Client.ts +3 -2
  132. package/src/index.ts +4 -2
  133. package/src/init/init.ts +85 -63
  134. package/src/plugins/PluginInterface.ts +15 -94
  135. package/src/plugins/PluginRegistry.ts +2 -98
  136. package/src/plugins/defi/index.ts +30 -117
  137. package/src/plugins/hedera/HbarPricePlugin.ts +19 -100
  138. package/src/plugins/index.ts +0 -5
  139. package/src/plugins/weather/index.ts +56 -40
  140. package/src/state/state-types.ts +9 -11
  141. package/src/tools/hcs10/AcceptConnectionRequestTool.ts +56 -0
  142. package/src/tools/hcs10/CheckMessagesTool.ts +73 -0
  143. package/src/tools/hcs10/ConnectionMonitorTool.ts +111 -0
  144. package/src/tools/hcs10/FindRegistrationsTool.ts +64 -0
  145. package/src/tools/hcs10/InitiateConnectionTool.ts +66 -0
  146. package/src/tools/hcs10/ListConnectionsTool.ts +58 -0
  147. package/src/tools/hcs10/ListUnapprovedConnectionRequestsTool.ts +26 -0
  148. package/src/tools/hcs10/ManageConnectionRequestsTool.ts +48 -0
  149. package/src/tools/hcs10/RegisterAgentTool.ts +213 -0
  150. package/src/tools/hcs10/RetrieveProfileTool.ts +61 -0
  151. package/src/tools/hcs10/SendMessageToConnectionTool.ts +45 -0
  152. package/src/tools/hcs10/base-hcs10-tools.ts +65 -0
  153. package/src/tools/hcs10/hcs10-tool-params.ts +21 -0
  154. package/src/tools/hcs10/index.ts +13 -0
  155. package/src/tools/index.ts +2 -13
  156. package/src/utils/HederaClient.ts +2 -2
  157. package/src/utils/ensure-agent-has-hbar.ts +3 -4
  158. package/dist/cjs/agents/index.d.ts +0 -0
  159. package/dist/cjs/plugins/BasePlugin.d.ts +0 -28
  160. package/dist/cjs/plugins/GenericPlugin.d.ts +0 -17
  161. package/dist/cjs/plugins/HCS10Plugin.d.ts +0 -13
  162. package/dist/cjs/plugins/PluginLoader.d.ts +0 -38
  163. package/dist/cjs/plugins/openconvai/OpenConvAIPlugin.d.ts +0 -23
  164. package/dist/cjs/plugins/openconvai/index.d.ts +0 -1
  165. package/dist/cjs/tools/AcceptConnectionRequestTool.d.ts +0 -33
  166. package/dist/cjs/tools/CheckMessagesTool.d.ts +0 -34
  167. package/dist/cjs/tools/ConnectionMonitorTool.d.ts +0 -100
  168. package/dist/cjs/tools/ConnectionTool.d.ts +0 -40
  169. package/dist/cjs/tools/FindRegistrationsTool.d.ts +0 -28
  170. package/dist/cjs/tools/InitiateConnectionTool.d.ts +0 -30
  171. package/dist/cjs/tools/ListConnectionsTool.d.ts +0 -33
  172. package/dist/cjs/tools/ListUnapprovedConnectionRequestsTool.d.ts +0 -41
  173. package/dist/cjs/tools/ManageConnectionRequestsTool.d.ts +0 -38
  174. package/dist/cjs/tools/RegisterAgentTool.d.ts +0 -188
  175. package/dist/cjs/tools/RetrieveProfileTool.d.ts +0 -34
  176. package/dist/cjs/tools/SendMessageToConnectionTool.d.ts +0 -34
  177. package/dist/cjs/tools/SendMessageTool.d.ts +0 -40
  178. package/dist/es/agents/index.d.ts +0 -0
  179. package/dist/es/plugins/BasePlugin.d.ts +0 -28
  180. package/dist/es/plugins/GenericPlugin.d.ts +0 -17
  181. package/dist/es/plugins/HCS10Plugin.d.ts +0 -13
  182. package/dist/es/plugins/PluginLoader.d.ts +0 -38
  183. package/dist/es/plugins/openconvai/OpenConvAIPlugin.d.ts +0 -23
  184. package/dist/es/plugins/openconvai/index.d.ts +0 -1
  185. package/dist/es/standards-agent-kit.es21.js +0 -92
  186. package/dist/es/standards-agent-kit.es21.js.map +0 -1
  187. package/dist/es/standards-agent-kit.es22.js +0 -7
  188. package/dist/es/standards-agent-kit.es22.js.map +0 -1
  189. package/dist/es/standards-agent-kit.es23.js +0 -106
  190. package/dist/es/standards-agent-kit.es23.js.map +0 -1
  191. package/dist/es/standards-agent-kit.es24.js +0 -7
  192. package/dist/es/standards-agent-kit.es24.js.map +0 -1
  193. package/dist/es/standards-agent-kit.es25.js +0 -7
  194. package/dist/es/standards-agent-kit.es25.js.map +0 -1
  195. package/dist/es/standards-agent-kit.es26.js +0 -85
  196. package/dist/es/standards-agent-kit.es26.js.map +0 -1
  197. package/dist/es/standards-agent-kit.es27.js +0 -28
  198. package/dist/es/standards-agent-kit.es27.js.map +0 -1
  199. package/dist/es/tools/AcceptConnectionRequestTool.d.ts +0 -33
  200. package/dist/es/tools/CheckMessagesTool.d.ts +0 -34
  201. package/dist/es/tools/ConnectionMonitorTool.d.ts +0 -100
  202. package/dist/es/tools/ConnectionTool.d.ts +0 -40
  203. package/dist/es/tools/FindRegistrationsTool.d.ts +0 -28
  204. package/dist/es/tools/InitiateConnectionTool.d.ts +0 -30
  205. package/dist/es/tools/ListConnectionsTool.d.ts +0 -33
  206. package/dist/es/tools/ListUnapprovedConnectionRequestsTool.d.ts +0 -41
  207. package/dist/es/tools/ManageConnectionRequestsTool.d.ts +0 -38
  208. package/dist/es/tools/RegisterAgentTool.d.ts +0 -188
  209. package/dist/es/tools/RetrieveProfileTool.d.ts +0 -34
  210. package/dist/es/tools/SendMessageToConnectionTool.d.ts +0 -34
  211. package/dist/es/tools/SendMessageTool.d.ts +0 -40
  212. package/dist/umd/agents/index.d.ts +0 -0
  213. package/dist/umd/plugins/BasePlugin.d.ts +0 -28
  214. package/dist/umd/plugins/GenericPlugin.d.ts +0 -17
  215. package/dist/umd/plugins/HCS10Plugin.d.ts +0 -13
  216. package/dist/umd/plugins/PluginLoader.d.ts +0 -38
  217. package/dist/umd/plugins/openconvai/OpenConvAIPlugin.d.ts +0 -23
  218. package/dist/umd/plugins/openconvai/index.d.ts +0 -1
  219. package/dist/umd/tools/AcceptConnectionRequestTool.d.ts +0 -33
  220. package/dist/umd/tools/CheckMessagesTool.d.ts +0 -34
  221. package/dist/umd/tools/ConnectionMonitorTool.d.ts +0 -100
  222. package/dist/umd/tools/ConnectionTool.d.ts +0 -40
  223. package/dist/umd/tools/FindRegistrationsTool.d.ts +0 -28
  224. package/dist/umd/tools/InitiateConnectionTool.d.ts +0 -30
  225. package/dist/umd/tools/ListConnectionsTool.d.ts +0 -33
  226. package/dist/umd/tools/ListUnapprovedConnectionRequestsTool.d.ts +0 -41
  227. package/dist/umd/tools/ManageConnectionRequestsTool.d.ts +0 -38
  228. package/dist/umd/tools/RegisterAgentTool.d.ts +0 -188
  229. package/dist/umd/tools/RetrieveProfileTool.d.ts +0 -34
  230. package/dist/umd/tools/SendMessageToConnectionTool.d.ts +0 -34
  231. package/dist/umd/tools/SendMessageTool.d.ts +0 -40
  232. package/src/agents/index.ts +0 -1
  233. package/src/plugins/BasePlugin.ts +0 -37
  234. package/src/plugins/GenericPlugin.ts +0 -19
  235. package/src/plugins/HCS10Plugin.ts +0 -14
  236. package/src/plugins/PluginLoader.ts +0 -121
  237. package/src/plugins/README.md +0 -113
  238. package/src/plugins/openconvai/OpenConvAIPlugin.ts +0 -124
  239. package/src/plugins/openconvai/index.ts +0 -1
  240. package/src/tools/AcceptConnectionRequestTool.ts +0 -196
  241. package/src/tools/CheckMessagesTool.ts +0 -194
  242. package/src/tools/ConnectionMonitorTool.ts +0 -550
  243. package/src/tools/ConnectionTool.ts +0 -231
  244. package/src/tools/FindRegistrationsTool.ts +0 -114
  245. package/src/tools/InitiateConnectionTool.ts +0 -137
  246. package/src/tools/ListConnectionsTool.ts +0 -158
  247. package/src/tools/ListUnapprovedConnectionRequestsTool.ts +0 -173
  248. package/src/tools/ManageConnectionRequestsTool.ts +0 -275
  249. package/src/tools/RegisterAgentTool.ts +0 -590
  250. package/src/tools/RetrieveProfileTool.ts +0 -94
  251. package/src/tools/SendMessageToConnectionTool.ts +0 -142
  252. 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
- }