@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.
- package/dist/cjs/builders/hcs10/hcs10-builder.d.ts +262 -0
- package/dist/cjs/builders/index.d.ts +2 -0
- package/dist/cjs/builders/types.d.ts +10 -0
- package/dist/cjs/index.d.ts +3 -1
- package/dist/cjs/init/init.d.ts +21 -22
- package/dist/cjs/plugins/PluginInterface.d.ts +4 -80
- package/dist/cjs/plugins/PluginRegistry.d.ts +1 -47
- package/dist/cjs/plugins/defi/index.d.ts +7 -4
- package/dist/cjs/plugins/hedera/HbarPricePlugin.d.ts +7 -35
- package/dist/cjs/plugins/index.d.ts +0 -5
- package/dist/cjs/plugins/weather/index.d.ts +6 -5
- package/dist/cjs/standards-agent-kit.cjs +1 -1
- package/dist/cjs/standards-agent-kit.cjs.map +1 -1
- package/dist/cjs/state/state-types.d.ts +8 -8
- package/dist/cjs/tools/hcs10/AcceptConnectionRequestTool.d.ts +40 -0
- package/dist/cjs/tools/hcs10/CheckMessagesTool.d.ts +40 -0
- package/dist/cjs/tools/hcs10/ConnectionMonitorTool.d.ts +134 -0
- package/dist/cjs/tools/hcs10/FindRegistrationsTool.d.ts +34 -0
- package/dist/cjs/tools/hcs10/InitiateConnectionTool.d.ts +43 -0
- package/dist/cjs/tools/hcs10/ListConnectionsTool.d.ts +34 -0
- package/dist/cjs/tools/hcs10/ListUnapprovedConnectionRequestsTool.d.ts +15 -0
- package/dist/cjs/tools/hcs10/ManageConnectionRequestsTool.d.ts +34 -0
- package/dist/cjs/tools/hcs10/RegisterAgentTool.d.ts +218 -0
- package/dist/cjs/tools/hcs10/RetrieveProfileTool.d.ts +33 -0
- package/dist/cjs/tools/hcs10/SendMessageToConnectionTool.d.ts +40 -0
- package/dist/cjs/tools/hcs10/base-hcs10-tools.d.ts +28 -0
- package/dist/cjs/tools/hcs10/hcs10-tool-params.d.ts +18 -0
- package/dist/cjs/tools/hcs10/index.d.ts +13 -0
- package/dist/cjs/tools/index.d.ts +1 -13
- package/dist/es/builders/hcs10/hcs10-builder.d.ts +262 -0
- package/dist/es/builders/index.d.ts +2 -0
- package/dist/es/builders/types.d.ts +10 -0
- package/dist/es/index.d.ts +3 -1
- package/dist/es/init/init.d.ts +21 -22
- package/dist/es/plugins/PluginInterface.d.ts +4 -80
- package/dist/es/plugins/PluginRegistry.d.ts +1 -47
- package/dist/es/plugins/defi/index.d.ts +7 -4
- package/dist/es/plugins/hedera/HbarPricePlugin.d.ts +7 -35
- package/dist/es/plugins/index.d.ts +0 -5
- package/dist/es/plugins/weather/index.d.ts +6 -5
- package/dist/es/standards-agent-kit.es.js +10 -18
- package/dist/es/standards-agent-kit.es.js.map +1 -1
- package/dist/es/standards-agent-kit.es10.js +29 -76
- package/dist/es/standards-agent-kit.es10.js.map +1 -1
- package/dist/es/standards-agent-kit.es11.js +61 -384
- package/dist/es/standards-agent-kit.es11.js.map +1 -1
- package/dist/es/standards-agent-kit.es12.js +22 -190
- package/dist/es/standards-agent-kit.es12.js.map +1 -1
- package/dist/es/standards-agent-kit.es13.js +26 -138
- package/dist/es/standards-agent-kit.es13.js.map +1 -1
- package/dist/es/standards-agent-kit.es14.js +35 -59
- package/dist/es/standards-agent-kit.es14.js.map +1 -1
- package/dist/es/standards-agent-kit.es15.js +11 -117
- package/dist/es/standards-agent-kit.es15.js.map +1 -1
- package/dist/es/standards-agent-kit.es16.js +1 -1
- package/dist/es/standards-agent-kit.es16.js.map +1 -1
- package/dist/es/standards-agent-kit.es17.js +63 -46
- package/dist/es/standards-agent-kit.es17.js.map +1 -1
- package/dist/es/standards-agent-kit.es18.js +25 -74
- package/dist/es/standards-agent-kit.es18.js.map +1 -1
- package/dist/es/standards-agent-kit.es19.js +22 -13
- package/dist/es/standards-agent-kit.es19.js.map +1 -1
- package/dist/es/standards-agent-kit.es2.js +1381 -188
- package/dist/es/standards-agent-kit.es2.js.map +1 -1
- package/dist/es/standards-agent-kit.es20.js +3 -67
- package/dist/es/standards-agent-kit.es20.js.map +1 -1
- package/dist/es/standards-agent-kit.es3.js +285 -347
- package/dist/es/standards-agent-kit.es3.js.map +1 -1
- package/dist/es/standards-agent-kit.es4.js +22 -74
- package/dist/es/standards-agent-kit.es4.js.map +1 -1
- package/dist/es/standards-agent-kit.es5.js +127 -154
- package/dist/es/standards-agent-kit.es5.js.map +1 -1
- package/dist/es/standards-agent-kit.es6.js +21 -88
- package/dist/es/standards-agent-kit.es6.js.map +1 -1
- package/dist/es/standards-agent-kit.es7.js +28 -86
- package/dist/es/standards-agent-kit.es7.js.map +1 -1
- package/dist/es/standards-agent-kit.es8.js +27 -100
- package/dist/es/standards-agent-kit.es8.js.map +1 -1
- package/dist/es/standards-agent-kit.es9.js +35 -117
- package/dist/es/standards-agent-kit.es9.js.map +1 -1
- package/dist/es/state/state-types.d.ts +8 -8
- package/dist/es/tools/hcs10/AcceptConnectionRequestTool.d.ts +40 -0
- package/dist/es/tools/hcs10/CheckMessagesTool.d.ts +40 -0
- package/dist/es/tools/hcs10/ConnectionMonitorTool.d.ts +134 -0
- package/dist/es/tools/hcs10/FindRegistrationsTool.d.ts +34 -0
- package/dist/es/tools/hcs10/InitiateConnectionTool.d.ts +43 -0
- package/dist/es/tools/hcs10/ListConnectionsTool.d.ts +34 -0
- package/dist/es/tools/hcs10/ListUnapprovedConnectionRequestsTool.d.ts +15 -0
- package/dist/es/tools/hcs10/ManageConnectionRequestsTool.d.ts +34 -0
- package/dist/es/tools/hcs10/RegisterAgentTool.d.ts +218 -0
- package/dist/es/tools/hcs10/RetrieveProfileTool.d.ts +33 -0
- package/dist/es/tools/hcs10/SendMessageToConnectionTool.d.ts +40 -0
- package/dist/es/tools/hcs10/base-hcs10-tools.d.ts +28 -0
- package/dist/es/tools/hcs10/hcs10-tool-params.d.ts +18 -0
- package/dist/es/tools/hcs10/index.d.ts +13 -0
- package/dist/es/tools/index.d.ts +1 -13
- package/dist/umd/builders/hcs10/hcs10-builder.d.ts +262 -0
- package/dist/umd/builders/index.d.ts +2 -0
- package/dist/umd/builders/types.d.ts +10 -0
- package/dist/umd/index.d.ts +3 -1
- package/dist/umd/init/init.d.ts +21 -22
- package/dist/umd/plugins/PluginInterface.d.ts +4 -80
- package/dist/umd/plugins/PluginRegistry.d.ts +1 -47
- package/dist/umd/plugins/defi/index.d.ts +7 -4
- package/dist/umd/plugins/hedera/HbarPricePlugin.d.ts +7 -35
- package/dist/umd/plugins/index.d.ts +0 -5
- package/dist/umd/plugins/weather/index.d.ts +6 -5
- package/dist/umd/standards-agent-kit.umd.js +1 -164
- package/dist/umd/standards-agent-kit.umd.js.map +1 -1
- package/dist/umd/state/state-types.d.ts +8 -8
- package/dist/umd/tools/hcs10/AcceptConnectionRequestTool.d.ts +40 -0
- package/dist/umd/tools/hcs10/CheckMessagesTool.d.ts +40 -0
- package/dist/umd/tools/hcs10/ConnectionMonitorTool.d.ts +134 -0
- package/dist/umd/tools/hcs10/FindRegistrationsTool.d.ts +34 -0
- package/dist/umd/tools/hcs10/InitiateConnectionTool.d.ts +43 -0
- package/dist/umd/tools/hcs10/ListConnectionsTool.d.ts +34 -0
- package/dist/umd/tools/hcs10/ListUnapprovedConnectionRequestsTool.d.ts +15 -0
- package/dist/umd/tools/hcs10/ManageConnectionRequestsTool.d.ts +34 -0
- package/dist/umd/tools/hcs10/RegisterAgentTool.d.ts +218 -0
- package/dist/umd/tools/hcs10/RetrieveProfileTool.d.ts +33 -0
- package/dist/umd/tools/hcs10/SendMessageToConnectionTool.d.ts +40 -0
- package/dist/umd/tools/hcs10/base-hcs10-tools.d.ts +28 -0
- package/dist/umd/tools/hcs10/hcs10-tool-params.d.ts +18 -0
- package/dist/umd/tools/hcs10/index.d.ts +13 -0
- package/dist/umd/tools/index.d.ts +1 -13
- package/package.json +41 -41
- package/src/builders/hcs10/hcs10-builder.ts +2108 -0
- package/src/builders/index.ts +2 -0
- package/src/builders/types.ts +11 -0
- package/src/hcs10/HCS10Client.ts +3 -2
- package/src/index.ts +4 -2
- package/src/init/init.ts +85 -63
- package/src/plugins/PluginInterface.ts +15 -94
- package/src/plugins/PluginRegistry.ts +2 -98
- package/src/plugins/defi/index.ts +31 -118
- package/src/plugins/hedera/HbarPricePlugin.ts +19 -100
- package/src/plugins/index.ts +0 -5
- package/src/plugins/weather/index.ts +56 -40
- package/src/state/state-types.ts +9 -11
- package/src/tools/hcs10/AcceptConnectionRequestTool.ts +56 -0
- package/src/tools/hcs10/CheckMessagesTool.ts +73 -0
- package/src/tools/hcs10/ConnectionMonitorTool.ts +111 -0
- package/src/tools/hcs10/FindRegistrationsTool.ts +64 -0
- package/src/tools/hcs10/InitiateConnectionTool.ts +66 -0
- package/src/tools/hcs10/ListConnectionsTool.ts +58 -0
- package/src/tools/hcs10/ListUnapprovedConnectionRequestsTool.ts +26 -0
- package/src/tools/hcs10/ManageConnectionRequestsTool.ts +48 -0
- package/src/tools/hcs10/RegisterAgentTool.ts +213 -0
- package/src/tools/hcs10/RetrieveProfileTool.ts +61 -0
- package/src/tools/hcs10/SendMessageToConnectionTool.ts +45 -0
- package/src/tools/hcs10/base-hcs10-tools.ts +65 -0
- package/src/tools/hcs10/hcs10-tool-params.ts +21 -0
- package/src/tools/hcs10/index.ts +13 -0
- package/src/tools/index.ts +2 -13
- package/src/utils/HederaClient.ts +2 -2
- package/src/utils/ensure-agent-has-hbar.ts +3 -4
- package/dist/cjs/agents/index.d.ts +0 -0
- package/dist/cjs/plugins/BasePlugin.d.ts +0 -28
- package/dist/cjs/plugins/GenericPlugin.d.ts +0 -17
- package/dist/cjs/plugins/HCS10Plugin.d.ts +0 -13
- package/dist/cjs/plugins/PluginLoader.d.ts +0 -38
- package/dist/cjs/plugins/openconvai/OpenConvAIPlugin.d.ts +0 -23
- package/dist/cjs/plugins/openconvai/index.d.ts +0 -1
- package/dist/cjs/tools/AcceptConnectionRequestTool.d.ts +0 -33
- package/dist/cjs/tools/CheckMessagesTool.d.ts +0 -34
- package/dist/cjs/tools/ConnectionMonitorTool.d.ts +0 -100
- package/dist/cjs/tools/ConnectionTool.d.ts +0 -40
- package/dist/cjs/tools/FindRegistrationsTool.d.ts +0 -28
- package/dist/cjs/tools/InitiateConnectionTool.d.ts +0 -30
- package/dist/cjs/tools/ListConnectionsTool.d.ts +0 -33
- package/dist/cjs/tools/ListUnapprovedConnectionRequestsTool.d.ts +0 -41
- package/dist/cjs/tools/ManageConnectionRequestsTool.d.ts +0 -38
- package/dist/cjs/tools/RegisterAgentTool.d.ts +0 -188
- package/dist/cjs/tools/RetrieveProfileTool.d.ts +0 -34
- package/dist/cjs/tools/SendMessageToConnectionTool.d.ts +0 -34
- package/dist/cjs/tools/SendMessageTool.d.ts +0 -40
- package/dist/es/agents/index.d.ts +0 -0
- package/dist/es/plugins/BasePlugin.d.ts +0 -28
- package/dist/es/plugins/GenericPlugin.d.ts +0 -17
- package/dist/es/plugins/HCS10Plugin.d.ts +0 -13
- package/dist/es/plugins/PluginLoader.d.ts +0 -38
- package/dist/es/plugins/openconvai/OpenConvAIPlugin.d.ts +0 -23
- package/dist/es/plugins/openconvai/index.d.ts +0 -1
- package/dist/es/standards-agent-kit.es21.js +0 -92
- package/dist/es/standards-agent-kit.es21.js.map +0 -1
- package/dist/es/standards-agent-kit.es22.js +0 -7
- package/dist/es/standards-agent-kit.es22.js.map +0 -1
- package/dist/es/standards-agent-kit.es23.js +0 -106
- package/dist/es/standards-agent-kit.es23.js.map +0 -1
- package/dist/es/standards-agent-kit.es24.js +0 -7
- package/dist/es/standards-agent-kit.es24.js.map +0 -1
- package/dist/es/standards-agent-kit.es25.js +0 -7
- package/dist/es/standards-agent-kit.es25.js.map +0 -1
- package/dist/es/standards-agent-kit.es26.js +0 -85
- package/dist/es/standards-agent-kit.es26.js.map +0 -1
- package/dist/es/standards-agent-kit.es27.js +0 -28
- package/dist/es/standards-agent-kit.es27.js.map +0 -1
- package/dist/es/tools/AcceptConnectionRequestTool.d.ts +0 -33
- package/dist/es/tools/CheckMessagesTool.d.ts +0 -34
- package/dist/es/tools/ConnectionMonitorTool.d.ts +0 -100
- package/dist/es/tools/ConnectionTool.d.ts +0 -40
- package/dist/es/tools/FindRegistrationsTool.d.ts +0 -28
- package/dist/es/tools/InitiateConnectionTool.d.ts +0 -30
- package/dist/es/tools/ListConnectionsTool.d.ts +0 -33
- package/dist/es/tools/ListUnapprovedConnectionRequestsTool.d.ts +0 -41
- package/dist/es/tools/ManageConnectionRequestsTool.d.ts +0 -38
- package/dist/es/tools/RegisterAgentTool.d.ts +0 -188
- package/dist/es/tools/RetrieveProfileTool.d.ts +0 -34
- package/dist/es/tools/SendMessageToConnectionTool.d.ts +0 -34
- package/dist/es/tools/SendMessageTool.d.ts +0 -40
- package/dist/umd/agents/index.d.ts +0 -0
- package/dist/umd/plugins/BasePlugin.d.ts +0 -28
- package/dist/umd/plugins/GenericPlugin.d.ts +0 -17
- package/dist/umd/plugins/HCS10Plugin.d.ts +0 -13
- package/dist/umd/plugins/PluginLoader.d.ts +0 -38
- package/dist/umd/plugins/openconvai/OpenConvAIPlugin.d.ts +0 -23
- package/dist/umd/plugins/openconvai/index.d.ts +0 -1
- package/dist/umd/tools/AcceptConnectionRequestTool.d.ts +0 -33
- package/dist/umd/tools/CheckMessagesTool.d.ts +0 -34
- package/dist/umd/tools/ConnectionMonitorTool.d.ts +0 -100
- package/dist/umd/tools/ConnectionTool.d.ts +0 -40
- package/dist/umd/tools/FindRegistrationsTool.d.ts +0 -28
- package/dist/umd/tools/InitiateConnectionTool.d.ts +0 -30
- package/dist/umd/tools/ListConnectionsTool.d.ts +0 -33
- package/dist/umd/tools/ListUnapprovedConnectionRequestsTool.d.ts +0 -41
- package/dist/umd/tools/ManageConnectionRequestsTool.d.ts +0 -38
- package/dist/umd/tools/RegisterAgentTool.d.ts +0 -188
- package/dist/umd/tools/RetrieveProfileTool.d.ts +0 -34
- package/dist/umd/tools/SendMessageToConnectionTool.d.ts +0 -34
- package/dist/umd/tools/SendMessageTool.d.ts +0 -40
- package/src/agents/index.ts +0 -1
- package/src/plugins/BasePlugin.ts +0 -37
- package/src/plugins/GenericPlugin.ts +0 -19
- package/src/plugins/HCS10Plugin.ts +0 -14
- package/src/plugins/PluginLoader.ts +0 -121
- package/src/plugins/README.md +0 -113
- package/src/plugins/openconvai/OpenConvAIPlugin.ts +0 -124
- package/src/plugins/openconvai/index.ts +0 -1
- package/src/tools/AcceptConnectionRequestTool.ts +0 -196
- package/src/tools/CheckMessagesTool.ts +0 -194
- package/src/tools/ConnectionMonitorTool.ts +0 -550
- package/src/tools/ConnectionTool.ts +0 -231
- package/src/tools/FindRegistrationsTool.ts +0 -114
- package/src/tools/InitiateConnectionTool.ts +0 -137
- package/src/tools/ListConnectionsTool.ts +0 -158
- package/src/tools/ListUnapprovedConnectionRequestsTool.ts +0 -173
- package/src/tools/ManageConnectionRequestsTool.ts +0 -275
- package/src/tools/RegisterAgentTool.ts +0 -590
- package/src/tools/RetrieveProfileTool.ts +0 -94
- package/src/tools/SendMessageToConnectionTool.ts +0 -142
- 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
|
-
}
|