@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,391 +1,68 @@
|
|
|
1
|
-
import { StructuredTool } from "@langchain/core/tools";
|
|
2
1
|
import { z } from "zod";
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
2
|
+
import { BaseHCS10TransactionTool } from "./standards-agent-kit.es4.js";
|
|
3
|
+
const ConnectionMonitorZodSchema = z.object({
|
|
4
|
+
acceptAll: z.boolean().optional().describe(
|
|
5
|
+
"Whether to automatically accept all incoming connection requests. Default is false."
|
|
6
|
+
),
|
|
7
|
+
targetAccountId: z.string().optional().describe(
|
|
8
|
+
"If provided, only accept connection requests from this specific account ID."
|
|
9
|
+
),
|
|
10
|
+
hbarFees: z.array(
|
|
11
|
+
z.object({
|
|
12
|
+
amount: z.number(),
|
|
13
|
+
collectorAccount: z.string().optional()
|
|
14
|
+
})
|
|
15
|
+
).optional().describe(
|
|
16
|
+
"Array of HBAR fee amounts to charge per message (with optional collector accounts)."
|
|
17
|
+
),
|
|
18
|
+
tokenFees: z.array(
|
|
19
|
+
z.object({
|
|
20
|
+
amount: z.number(),
|
|
21
|
+
tokenId: z.string(),
|
|
22
|
+
collectorAccount: z.string().optional()
|
|
23
|
+
})
|
|
24
|
+
).optional().describe(
|
|
25
|
+
"Array of token fee amounts and IDs to charge per message (with optional collector accounts)."
|
|
26
|
+
),
|
|
27
|
+
exemptAccountIds: z.array(z.string()).optional().describe(
|
|
28
|
+
"Array of account IDs to exempt from ALL fees set in this request."
|
|
29
|
+
),
|
|
30
|
+
monitorDurationSeconds: z.number().optional().describe(
|
|
31
|
+
"How long to monitor for incoming requests in seconds. Default is 120."
|
|
32
|
+
),
|
|
33
|
+
defaultCollectorAccount: z.string().optional().describe(
|
|
34
|
+
"Default account to collect fees if not specified at the fee level. Defaults to the agent account."
|
|
35
|
+
)
|
|
36
|
+
});
|
|
37
|
+
class ConnectionMonitorTool extends BaseHCS10TransactionTool {
|
|
38
|
+
constructor(params) {
|
|
39
|
+
super(params);
|
|
12
40
|
this.name = "monitor_connections";
|
|
13
|
-
this.description = "Monitors for incoming connection requests and accepts them with optional fee settings. Use this to watch for connection requests and accept them, optionally setting HBAR or token fees on the connection.";
|
|
14
|
-
this.
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
),
|
|
18
|
-
targetAccountId: z.string().optional().describe(
|
|
19
|
-
"If provided, only accept connection requests from this specific account ID."
|
|
20
|
-
),
|
|
21
|
-
hbarFees: z.array(
|
|
22
|
-
z.object({
|
|
23
|
-
amount: z.number(),
|
|
24
|
-
collectorAccount: z.string().optional()
|
|
25
|
-
})
|
|
26
|
-
).optional().describe(
|
|
27
|
-
"Array of HBAR fee amounts to charge per message (with optional collector accounts)."
|
|
28
|
-
),
|
|
29
|
-
tokenFees: z.array(
|
|
30
|
-
z.object({
|
|
31
|
-
amount: z.number(),
|
|
32
|
-
tokenId: z.string(),
|
|
33
|
-
collectorAccount: z.string().optional()
|
|
34
|
-
})
|
|
35
|
-
).optional().describe(
|
|
36
|
-
"Array of token fee amounts and IDs to charge per message (with optional collector accounts)."
|
|
37
|
-
),
|
|
38
|
-
exemptAccountIds: z.array(z.string()).optional().describe(
|
|
39
|
-
"Array of account IDs to exempt from ALL fees set in this request."
|
|
40
|
-
),
|
|
41
|
-
monitorDurationSeconds: z.number().optional().describe(
|
|
42
|
-
"How long to monitor for incoming requests in seconds. Default is 60."
|
|
43
|
-
),
|
|
44
|
-
defaultCollectorAccount: z.string().optional().describe(
|
|
45
|
-
"Default account to collect fees if not specified at the fee level. Defaults to the agent account."
|
|
46
|
-
)
|
|
47
|
-
});
|
|
48
|
-
this.isMonitoring = false;
|
|
49
|
-
this.hcsClient = hcsClient;
|
|
50
|
-
this.stateManager = stateManager;
|
|
51
|
-
this.logger = Logger.getInstance({
|
|
52
|
-
module: "ConnectionMonitorTool",
|
|
53
|
-
level: "error"
|
|
54
|
-
});
|
|
55
|
-
this.listConnectionsTool = new ListConnectionsTool({
|
|
56
|
-
stateManager,
|
|
57
|
-
hcsClient,
|
|
58
|
-
...rest
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
updateClient(newClient) {
|
|
62
|
-
this.hcsClient = newClient;
|
|
63
|
-
this.logger.info("Updated HCS10Client instance for ConnectionMonitorTool");
|
|
64
|
-
this.listConnectionsTool = new ListConnectionsTool({
|
|
65
|
-
stateManager: this.stateManager,
|
|
66
|
-
hcsClient: newClient
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
async _call({
|
|
70
|
-
acceptAll = false,
|
|
71
|
-
targetAccountId,
|
|
72
|
-
hbarFees = [],
|
|
73
|
-
tokenFees = [],
|
|
74
|
-
exemptAccountIds,
|
|
75
|
-
monitorDurationSeconds = 60,
|
|
76
|
-
defaultCollectorAccount
|
|
77
|
-
}) {
|
|
78
|
-
const currentAgent = this.stateManager.getCurrentAgent();
|
|
79
|
-
if (!currentAgent) {
|
|
80
|
-
return "Error: Cannot monitor for connections. No agent is currently active. Please register or select an agent first.";
|
|
81
|
-
}
|
|
82
|
-
if (this.isMonitoring) {
|
|
83
|
-
return "Already monitoring for connection requests. Please wait for the current monitoring session to complete.";
|
|
84
|
-
}
|
|
85
|
-
try {
|
|
86
|
-
this.isMonitoring = true;
|
|
87
|
-
const inboundTopicId = await this.hcsClient.getInboundTopicId();
|
|
88
|
-
if (!inboundTopicId) {
|
|
89
|
-
this.isMonitoring = false;
|
|
90
|
-
return "Error: Could not find inbound topic ID for the current agent.";
|
|
91
|
-
}
|
|
92
|
-
this.logger.info(
|
|
93
|
-
`Starting to monitor inbound topic ${inboundTopicId} for connection requests...`
|
|
94
|
-
);
|
|
95
|
-
const feeConfig = this.createFeeConfig(
|
|
96
|
-
hbarFees,
|
|
97
|
-
tokenFees,
|
|
98
|
-
exemptAccountIds,
|
|
99
|
-
targetAccountId,
|
|
100
|
-
defaultCollectorAccount
|
|
101
|
-
);
|
|
102
|
-
const endTime = Date.now() + monitorDurationSeconds * 1e3;
|
|
103
|
-
const pollIntervalMs = 3e3;
|
|
104
|
-
let lastSequenceNumber = 0;
|
|
105
|
-
let connectionRequestsFound = 0;
|
|
106
|
-
let acceptedConnections = 0;
|
|
107
|
-
let skippedRequests = 0;
|
|
108
|
-
while (Date.now() < endTime) {
|
|
109
|
-
try {
|
|
110
|
-
await this.listConnectionsTool.invoke({
|
|
111
|
-
includeDetails: false,
|
|
112
|
-
showPending: false
|
|
113
|
-
});
|
|
114
|
-
const currentConnections = this.stateManager.listConnections();
|
|
115
|
-
const connectionsByAccountAndRequest = /* @__PURE__ */ new Map();
|
|
116
|
-
currentConnections.filter((conn) => conn.status === "established" && !conn.isPending).forEach((conn) => {
|
|
117
|
-
if (!connectionsByAccountAndRequest.has(conn.targetAccountId)) {
|
|
118
|
-
connectionsByAccountAndRequest.set(
|
|
119
|
-
conn.targetAccountId,
|
|
120
|
-
/* @__PURE__ */ new Set()
|
|
121
|
-
);
|
|
122
|
-
}
|
|
123
|
-
if (conn.connectionRequestId) {
|
|
124
|
-
connectionsByAccountAndRequest.get(conn.targetAccountId)?.add(String(conn.connectionRequestId));
|
|
125
|
-
}
|
|
126
|
-
});
|
|
127
|
-
const messagesResult = await this.hcsClient.getMessages(
|
|
128
|
-
inboundTopicId
|
|
129
|
-
);
|
|
130
|
-
const newMessages = messagesResult.messages.filter((msg) => {
|
|
131
|
-
if (!msg.sequence_number || msg.sequence_number <= lastSequenceNumber) {
|
|
132
|
-
return false;
|
|
133
|
-
}
|
|
134
|
-
lastSequenceNumber = Math.max(
|
|
135
|
-
lastSequenceNumber,
|
|
136
|
-
msg.sequence_number
|
|
137
|
-
);
|
|
138
|
-
return msg.op === "connection_request";
|
|
139
|
-
});
|
|
140
|
-
for (const request of newMessages) {
|
|
141
|
-
const requestId = request.sequence_number;
|
|
142
|
-
if (!requestId) {
|
|
143
|
-
continue;
|
|
144
|
-
}
|
|
145
|
-
connectionRequestsFound++;
|
|
146
|
-
const inboundTopicId2 = await this.hcsClient.getInboundTopicId() || "";
|
|
147
|
-
const connectionsManager = this.stateManager.getConnectionsManager();
|
|
148
|
-
if (!connectionsManager) {
|
|
149
|
-
this.logger.error(
|
|
150
|
-
"ConnectionsManager not initialized in state manager"
|
|
151
|
-
);
|
|
152
|
-
continue;
|
|
153
|
-
}
|
|
154
|
-
if (connectionsManager.isConnectionRequestProcessed(
|
|
155
|
-
inboundTopicId2,
|
|
156
|
-
requestId
|
|
157
|
-
)) {
|
|
158
|
-
this.logger.info(
|
|
159
|
-
`Request #${requestId} already processed, skipping`
|
|
160
|
-
);
|
|
161
|
-
skippedRequests++;
|
|
162
|
-
continue;
|
|
163
|
-
}
|
|
164
|
-
const requestorAccountId = this.extractAccountId(request);
|
|
165
|
-
if (!requestorAccountId) {
|
|
166
|
-
connectionsManager.markConnectionRequestProcessed(
|
|
167
|
-
inboundTopicId2,
|
|
168
|
-
requestId
|
|
169
|
-
);
|
|
170
|
-
continue;
|
|
171
|
-
}
|
|
172
|
-
if (targetAccountId && requestorAccountId !== targetAccountId) {
|
|
173
|
-
this.logger.info(
|
|
174
|
-
`Request #${requestId} doesn't match target ${targetAccountId}`
|
|
175
|
-
);
|
|
176
|
-
continue;
|
|
177
|
-
}
|
|
178
|
-
const existingAccountConnections = connectionsByAccountAndRequest.get(requestorAccountId);
|
|
179
|
-
if (existingAccountConnections?.has(String(requestId))) {
|
|
180
|
-
this.logger.info(
|
|
181
|
-
`Already processed connection request #${requestId} from ${requestorAccountId}, skipping`
|
|
182
|
-
);
|
|
183
|
-
connectionsManager.markConnectionRequestProcessed(
|
|
184
|
-
inboundTopicId2,
|
|
185
|
-
requestId
|
|
186
|
-
);
|
|
187
|
-
skippedRequests++;
|
|
188
|
-
continue;
|
|
189
|
-
}
|
|
190
|
-
if (acceptAll) {
|
|
191
|
-
const result = await this.acceptConnectionRequest(
|
|
192
|
-
requestId,
|
|
193
|
-
requestorAccountId,
|
|
194
|
-
feeConfig
|
|
195
|
-
);
|
|
196
|
-
connectionsManager.markConnectionRequestProcessed(
|
|
197
|
-
inboundTopicId2,
|
|
198
|
-
requestId
|
|
199
|
-
);
|
|
200
|
-
if (result.success) {
|
|
201
|
-
acceptedConnections++;
|
|
202
|
-
this.logger.info(
|
|
203
|
-
`Successfully accepted connection with ${requestorAccountId} for request #${requestId}`
|
|
204
|
-
);
|
|
205
|
-
}
|
|
206
|
-
} else {
|
|
207
|
-
this.logger.info(
|
|
208
|
-
`Found request #${requestId} from ${requestorAccountId} (not auto-accepting)`
|
|
209
|
-
);
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));
|
|
213
|
-
} catch (error) {
|
|
214
|
-
this.logger.error(`Error polling for messages: ${error}`);
|
|
215
|
-
await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
this.isMonitoring = false;
|
|
219
|
-
if (connectionRequestsFound === 0) {
|
|
220
|
-
return `No connection requests received during the ${monitorDurationSeconds} second monitoring period.`;
|
|
221
|
-
} else if (acceptAll) {
|
|
222
|
-
return `Monitored for ${monitorDurationSeconds} seconds. Found ${connectionRequestsFound} connection requests, accepted ${acceptedConnections} connections, skipped ${skippedRequests} existing connections${this.formatFeeString(
|
|
223
|
-
hbarFees,
|
|
224
|
-
tokenFees
|
|
225
|
-
)}.`;
|
|
226
|
-
} else {
|
|
227
|
-
return `Monitored for ${monitorDurationSeconds} seconds. Found ${connectionRequestsFound} connection requests. To accept them, call this tool again with acceptAll=true.`;
|
|
228
|
-
}
|
|
229
|
-
} catch (error) {
|
|
230
|
-
this.isMonitoring = false;
|
|
231
|
-
this.logger.error(`Connection monitoring failed: ${error}`);
|
|
232
|
-
return `Error monitoring for connections: ${error instanceof Error ? error.message : String(error)}`;
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
createFeeConfig(hbarFees = [], tokenFees = [], exemptAccountIds, targetAccountId, defaultCollectorAccount) {
|
|
236
|
-
if (hbarFees.length === 0 && tokenFees.length === 0) {
|
|
237
|
-
return void 0;
|
|
238
|
-
}
|
|
239
|
-
try {
|
|
240
|
-
const agentAccountId = this.hcsClient.getAccountAndSigner().accountId;
|
|
241
|
-
const defaultCollector = defaultCollectorAccount || agentAccountId;
|
|
242
|
-
const builder = new FeeConfigBuilder({
|
|
243
|
-
network: this.hcsClient.getNetwork(),
|
|
244
|
-
logger: this.logger,
|
|
245
|
-
defaultCollectorAccountId: defaultCollector
|
|
246
|
-
});
|
|
247
|
-
const exemptIds = [...exemptAccountIds || []];
|
|
248
|
-
if (targetAccountId && !exemptIds.includes(targetAccountId)) {
|
|
249
|
-
exemptIds.push(targetAccountId);
|
|
250
|
-
}
|
|
251
|
-
for (const hbarFee of hbarFees) {
|
|
252
|
-
if (hbarFee.amount > 0) {
|
|
253
|
-
const collector = hbarFee.collectorAccount || defaultCollector;
|
|
254
|
-
builder.addHbarFee(hbarFee.amount, collector, exemptIds);
|
|
255
|
-
this.logger.info(
|
|
256
|
-
`Added HBAR fee: ${hbarFee.amount} HBAR to be collected by ${collector}`
|
|
257
|
-
);
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
for (const tokenFee of tokenFees) {
|
|
261
|
-
if (tokenFee.amount > 0 && tokenFee.tokenId) {
|
|
262
|
-
const collector = tokenFee.collectorAccount || defaultCollector;
|
|
263
|
-
builder.addTokenFee(
|
|
264
|
-
tokenFee.amount,
|
|
265
|
-
tokenFee.tokenId,
|
|
266
|
-
collector,
|
|
267
|
-
void 0,
|
|
268
|
-
exemptIds
|
|
269
|
-
);
|
|
270
|
-
this.logger.info(
|
|
271
|
-
`Added token fee: ${tokenFee.amount} of token ${tokenFee.tokenId} to be collected by ${collector}`
|
|
272
|
-
);
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
return builder;
|
|
276
|
-
} catch (error) {
|
|
277
|
-
this.logger.error(`Error creating fee configuration: ${error}`);
|
|
278
|
-
return void 0;
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
extractAccountId(request) {
|
|
282
|
-
if (request.operator_id) {
|
|
283
|
-
return this.hcsClient.standardClient.extractAccountFromOperatorId(
|
|
284
|
-
request.operator_id
|
|
285
|
-
);
|
|
286
|
-
}
|
|
287
|
-
return void 0;
|
|
288
|
-
}
|
|
289
|
-
async acceptConnectionRequest(connectionRequestId, requestingAccountId, feeConfig) {
|
|
290
|
-
try {
|
|
291
|
-
const inboundTopicId = await this.hcsClient.getInboundTopicId();
|
|
292
|
-
this.logger.info(
|
|
293
|
-
`Accepting connection request #${connectionRequestId} from ${requestingAccountId}`
|
|
294
|
-
);
|
|
295
|
-
const result = await this.hcsClient.handleConnectionRequest(
|
|
296
|
-
inboundTopicId,
|
|
297
|
-
requestingAccountId,
|
|
298
|
-
connectionRequestId,
|
|
299
|
-
feeConfig
|
|
300
|
-
);
|
|
301
|
-
if (!result?.connectionTopicId) {
|
|
302
|
-
return {
|
|
303
|
-
success: false,
|
|
304
|
-
error: "Connection acceptance returned no connection topic ID"
|
|
305
|
-
};
|
|
306
|
-
}
|
|
307
|
-
const connectionTopicId = result.connectionTopicId;
|
|
308
|
-
this.logger.info(
|
|
309
|
-
`Connection established! Topic ID: ${connectionTopicId}`
|
|
310
|
-
);
|
|
311
|
-
let profileInfo;
|
|
312
|
-
try {
|
|
313
|
-
const profile = await this.hcsClient.getAgentProfile(
|
|
314
|
-
requestingAccountId
|
|
315
|
-
);
|
|
316
|
-
if (profile.success && profile.profile) {
|
|
317
|
-
profileInfo = profile.profile;
|
|
318
|
-
}
|
|
319
|
-
} catch (profileError) {
|
|
320
|
-
this.logger.warn(
|
|
321
|
-
`Could not fetch profile for ${requestingAccountId}: ${profileError}`
|
|
322
|
-
);
|
|
323
|
-
}
|
|
324
|
-
const targetInboundTopicId = (await this.hcsClient.getAgentProfile(requestingAccountId))?.topicInfo?.inboundTopic || "";
|
|
325
|
-
const connection = {
|
|
326
|
-
targetAccountId: requestingAccountId,
|
|
327
|
-
targetAgentName: profileInfo?.display_name || `Agent ${requestingAccountId}`,
|
|
328
|
-
targetInboundTopicId,
|
|
329
|
-
connectionTopicId,
|
|
330
|
-
profileInfo,
|
|
331
|
-
created: /* @__PURE__ */ new Date(),
|
|
332
|
-
status: "established",
|
|
333
|
-
metadata: {
|
|
334
|
-
requestId: connectionRequestId
|
|
335
|
-
}
|
|
336
|
-
};
|
|
337
|
-
this.stateManager.addActiveConnection(connection);
|
|
338
|
-
return {
|
|
339
|
-
success: true,
|
|
340
|
-
connectionTopicId
|
|
341
|
-
};
|
|
342
|
-
} catch (error) {
|
|
343
|
-
this.logger.error(`Error accepting connection request: ${error}`);
|
|
344
|
-
return {
|
|
345
|
-
success: false,
|
|
346
|
-
error: error instanceof Error ? error.message : String(error)
|
|
347
|
-
};
|
|
348
|
-
}
|
|
41
|
+
this.description = "Monitors for incoming connection requests and accepts them with optional fee settings. Use this to watch for connection requests and accept them, optionally setting HBAR or token fees on the connection. Note: When acceptAll=true, this tool requires multiple transactions and cannot be used in returnBytes mode.";
|
|
42
|
+
this.specificInputSchema = ConnectionMonitorZodSchema;
|
|
43
|
+
this.neverScheduleThisTool = true;
|
|
44
|
+
this.requiresMultipleTransactions = true;
|
|
349
45
|
}
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
46
|
+
async callBuilderMethod(builder, specificArgs) {
|
|
47
|
+
const hcs10Builder = builder;
|
|
48
|
+
await hcs10Builder.monitorConnections({
|
|
49
|
+
...specificArgs.acceptAll !== void 0 && {
|
|
50
|
+
acceptAll: specificArgs.acceptAll
|
|
51
|
+
},
|
|
52
|
+
...specificArgs.targetAccountId !== void 0 && {
|
|
53
|
+
targetAccountId: specificArgs.targetAccountId
|
|
54
|
+
},
|
|
55
|
+
...specificArgs.monitorDurationSeconds !== void 0 && {
|
|
56
|
+
monitorDurationSeconds: specificArgs.monitorDurationSeconds
|
|
57
|
+
},
|
|
58
|
+
hbarFees: specificArgs.hbarFees || [],
|
|
59
|
+
tokenFees: specificArgs.tokenFees || [],
|
|
60
|
+
...specificArgs.exemptAccountIds !== void 0 && {
|
|
61
|
+
exemptAccountIds: specificArgs.exemptAccountIds
|
|
62
|
+
},
|
|
63
|
+
...specificArgs.defaultCollectorAccount !== void 0 && {
|
|
64
|
+
defaultCollectorAccount: specificArgs.defaultCollectorAccount
|
|
367
65
|
}
|
|
368
|
-
const tokenFeeDetails = tokenFees.filter((fee) => fee.amount > 0 && fee.tokenId).map((fee) => {
|
|
369
|
-
const collector = fee.collectorAccount ? ` to ${fee.collectorAccount}` : "";
|
|
370
|
-
return `${fee.amount} of token ${fee.tokenId}${collector}`;
|
|
371
|
-
}).join(", ");
|
|
372
|
-
if (tokenFeeDetails) {
|
|
373
|
-
feeString += tokenFeeDetails;
|
|
374
|
-
}
|
|
375
|
-
}
|
|
376
|
-
return feeString === " with fees: " ? "" : feeString;
|
|
377
|
-
}
|
|
378
|
-
/**
|
|
379
|
-
* Updates the ConnectionsManager with latest connection data
|
|
380
|
-
* This method is meant to be called when changes to connections happen
|
|
381
|
-
* outside this tool's monitoring process
|
|
382
|
-
*/
|
|
383
|
-
update() {
|
|
384
|
-
this.listConnectionsTool.invoke({
|
|
385
|
-
includeDetails: true,
|
|
386
|
-
showPending: true
|
|
387
|
-
}).catch((error) => {
|
|
388
|
-
this.logger.error(`Error updating connections: ${error}`);
|
|
389
66
|
});
|
|
390
67
|
}
|
|
391
68
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standards-agent-kit.es11.js","sources":["../../src/tools/ConnectionMonitorTool.ts"],"sourcesContent":["import { StructuredTool, ToolParams } from '@langchain/core/tools';\nimport { z } from 'zod';\nimport { HCS10Client } from '../hcs10/HCS10Client';\nimport {\n IStateManager,\n ActiveConnection,\n AgentProfileInfo,\n} from '../state/state-types';\nimport {\n Logger,\n FeeConfigBuilder,\n HCSMessage,\n FeeConfigBuilderInterface,\n AIAgentProfile,\n} from '@hashgraphonline/standards-sdk';\nimport { ListConnectionsTool } from './ListConnectionsTool';\n\nexport interface FeeDefinition {\n amount: number;\n collectorAccount?: string;\n}\n\nexport interface TokenFeeDefinition extends FeeDefinition {\n tokenId: string;\n}\n\nexport interface ConnectionMonitorToolParams extends ToolParams {\n hcsClient: HCS10Client;\n stateManager: IStateManager;\n}\n\n/**\n * A tool for monitoring incoming connection requests and accepting them with optional fee settings.\n */\nexport class ConnectionMonitorTool extends StructuredTool {\n name = 'monitor_connections';\n description =\n 'Monitors for incoming connection requests and accepts them with optional fee settings. Use this to watch for connection requests and accept them, optionally setting HBAR or token fees on the connection.';\n schema = z.object({\n acceptAll: z\n .boolean()\n .optional()\n .describe(\n 'Whether to automatically accept all incoming connection requests. Default is false.'\n ),\n targetAccountId: z\n .string()\n .optional()\n .describe(\n 'If provided, only accept connection requests from this specific account ID.'\n ),\n hbarFees: z\n .array(\n z.object({\n amount: z.number(),\n collectorAccount: z.string().optional(),\n })\n )\n .optional()\n .describe(\n 'Array of HBAR fee amounts to charge per message (with optional collector accounts).'\n ),\n tokenFees: z\n .array(\n z.object({\n amount: z.number(),\n tokenId: z.string(),\n collectorAccount: z.string().optional(),\n })\n )\n .optional()\n .describe(\n 'Array of token fee amounts and IDs to charge per message (with optional collector accounts).'\n ),\n exemptAccountIds: z\n .array(z.string())\n .optional()\n .describe(\n 'Array of account IDs to exempt from ALL fees set in this request.'\n ),\n monitorDurationSeconds: z\n .number()\n .optional()\n .describe(\n 'How long to monitor for incoming requests in seconds. Default is 60.'\n ),\n defaultCollectorAccount: z\n .string()\n .optional()\n .describe(\n 'Default account to collect fees if not specified at the fee level. Defaults to the agent account.'\n ),\n });\n\n private hcsClient: HCS10Client;\n private stateManager: IStateManager;\n private logger: Logger;\n private isMonitoring: boolean = false;\n private listConnectionsTool: ListConnectionsTool;\n\n constructor({\n hcsClient,\n stateManager,\n ...rest\n }: ConnectionMonitorToolParams) {\n super(rest);\n this.hcsClient = hcsClient;\n this.stateManager = stateManager;\n this.logger = Logger.getInstance({\n module: 'ConnectionMonitorTool',\n level: 'error',\n });\n this.listConnectionsTool = new ListConnectionsTool({\n stateManager,\n hcsClient,\n ...rest,\n });\n }\n\n updateClient(newClient: HCS10Client): void {\n this.hcsClient = newClient;\n this.logger.info('Updated HCS10Client instance for ConnectionMonitorTool');\n this.listConnectionsTool = new ListConnectionsTool({\n stateManager: this.stateManager,\n hcsClient: newClient,\n });\n }\n\n protected async _call({\n acceptAll = false,\n targetAccountId,\n hbarFees = [],\n tokenFees = [],\n exemptAccountIds,\n monitorDurationSeconds = 60,\n defaultCollectorAccount,\n }: z.infer<this['schema']>): Promise<string> {\n const currentAgent = this.stateManager.getCurrentAgent();\n if (!currentAgent) {\n return 'Error: Cannot monitor for connections. No agent is currently active. Please register or select an agent first.';\n }\n\n if (this.isMonitoring) {\n return 'Already monitoring for connection requests. Please wait for the current monitoring session to complete.';\n }\n\n try {\n this.isMonitoring = true;\n const inboundTopicId = await this.hcsClient.getInboundTopicId();\n\n if (!inboundTopicId) {\n this.isMonitoring = false;\n return 'Error: Could not find inbound topic ID for the current agent.';\n }\n\n this.logger.info(\n `Starting to monitor inbound topic ${inboundTopicId} for connection requests...`\n );\n\n const feeConfig = this.createFeeConfig(\n hbarFees,\n tokenFees,\n exemptAccountIds,\n targetAccountId,\n defaultCollectorAccount\n );\n\n const endTime = Date.now() + monitorDurationSeconds * 1000;\n const pollIntervalMs = 3000;\n let lastSequenceNumber = 0;\n let connectionRequestsFound = 0;\n let acceptedConnections = 0;\n let skippedRequests = 0;\n\n while (Date.now() < endTime) {\n try {\n await this.listConnectionsTool.invoke({\n includeDetails: false,\n showPending: false,\n });\n const currentConnections = this.stateManager.listConnections();\n\n // Create a map of connections by accountId and requestId to better track multiple connections\n const connectionsByAccountAndRequest = new Map<string, Set<string>>();\n\n currentConnections\n .filter((conn) => conn.status === 'established' && !conn.isPending)\n .forEach((conn) => {\n if (!connectionsByAccountAndRequest.has(conn.targetAccountId)) {\n connectionsByAccountAndRequest.set(\n conn.targetAccountId,\n new Set()\n );\n }\n\n if (conn.connectionRequestId) {\n connectionsByAccountAndRequest\n .get(conn.targetAccountId)\n ?.add(String(conn.connectionRequestId));\n }\n });\n\n const messagesResult = await this.hcsClient.getMessages(\n inboundTopicId\n );\n const newMessages = messagesResult.messages.filter((msg) => {\n if (\n !msg.sequence_number ||\n msg.sequence_number <= lastSequenceNumber\n ) {\n return false;\n }\n lastSequenceNumber = Math.max(\n lastSequenceNumber,\n msg.sequence_number\n );\n return msg.op === 'connection_request';\n });\n\n for (const request of newMessages) {\n const requestId = request.sequence_number;\n if (!requestId) {\n continue;\n }\n\n connectionRequestsFound++;\n\n // Get the inbound topic ID where this request was received\n const inboundTopicId =\n (await this.hcsClient.getInboundTopicId()) || '';\n\n // Get ConnectionsManager from state manager\n const connectionsManager =\n this.stateManager.getConnectionsManager();\n if (!connectionsManager) {\n this.logger.error(\n 'ConnectionsManager not initialized in state manager'\n );\n continue;\n }\n\n // Check if we've already processed this specific request\n if (\n connectionsManager.isConnectionRequestProcessed(\n inboundTopicId,\n requestId\n )\n ) {\n this.logger.info(\n `Request #${requestId} already processed, skipping`\n );\n skippedRequests++;\n continue;\n }\n\n const requestorAccountId = this.extractAccountId(request);\n if (!requestorAccountId) {\n // Mark as processed even if we couldn't extract the account ID\n connectionsManager.markConnectionRequestProcessed(\n inboundTopicId,\n requestId\n );\n continue;\n }\n\n if (targetAccountId && requestorAccountId !== targetAccountId) {\n this.logger.info(\n `Request #${requestId} doesn't match target ${targetAccountId}`\n );\n continue;\n }\n\n // Check if this specific request has already been processed\n const existingAccountConnections =\n connectionsByAccountAndRequest.get(requestorAccountId);\n if (existingAccountConnections?.has(String(requestId))) {\n this.logger.info(\n `Already processed connection request #${requestId} from ${requestorAccountId}, skipping`\n );\n connectionsManager.markConnectionRequestProcessed(\n inboundTopicId,\n requestId\n );\n skippedRequests++;\n continue;\n }\n\n if (acceptAll) {\n const result = await this.acceptConnectionRequest(\n requestId,\n requestorAccountId,\n feeConfig\n );\n connectionsManager.markConnectionRequestProcessed(\n inboundTopicId,\n requestId\n );\n\n if (result.success) {\n acceptedConnections++;\n this.logger.info(\n `Successfully accepted connection with ${requestorAccountId} for request #${requestId}`\n );\n }\n } else {\n this.logger.info(\n `Found request #${requestId} from ${requestorAccountId} (not auto-accepting)`\n );\n }\n }\n\n await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));\n } catch (error) {\n this.logger.error(`Error polling for messages: ${error}`);\n await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));\n }\n }\n\n this.isMonitoring = false;\n\n if (connectionRequestsFound === 0) {\n return `No connection requests received during the ${monitorDurationSeconds} second monitoring period.`;\n } else if (acceptAll) {\n return `Monitored for ${monitorDurationSeconds} seconds. Found ${connectionRequestsFound} connection requests, accepted ${acceptedConnections} connections, skipped ${skippedRequests} existing connections${this.formatFeeString(\n hbarFees,\n tokenFees\n )}.`;\n } else {\n return `Monitored for ${monitorDurationSeconds} seconds. Found ${connectionRequestsFound} connection requests. To accept them, call this tool again with acceptAll=true.`;\n }\n } catch (error) {\n this.isMonitoring = false;\n this.logger.error(`Connection monitoring failed: ${error}`);\n return `Error monitoring for connections: ${\n error instanceof Error ? error.message : String(error)\n }`;\n }\n }\n\n private createFeeConfig(\n hbarFees: FeeDefinition[] = [],\n tokenFees: TokenFeeDefinition[] = [],\n exemptAccountIds?: string[],\n targetAccountId?: string,\n defaultCollectorAccount?: string\n ): FeeConfigBuilderInterface | undefined {\n if (hbarFees.length === 0 && tokenFees.length === 0) {\n return undefined;\n }\n\n try {\n const agentAccountId = this.hcsClient.getAccountAndSigner().accountId;\n const defaultCollector = defaultCollectorAccount || agentAccountId;\n\n const builder = new FeeConfigBuilder({\n network: this.hcsClient.getNetwork(),\n logger: this.logger,\n defaultCollectorAccountId: defaultCollector,\n });\n\n const exemptIds = [...(exemptAccountIds || [])];\n if (targetAccountId && !exemptIds.includes(targetAccountId)) {\n exemptIds.push(targetAccountId);\n }\n\n for (const hbarFee of hbarFees) {\n if (hbarFee.amount > 0) {\n const collector = hbarFee.collectorAccount || defaultCollector;\n builder.addHbarFee(hbarFee.amount, collector, exemptIds);\n this.logger.info(\n `Added HBAR fee: ${hbarFee.amount} HBAR to be collected by ${collector}`\n );\n }\n }\n\n for (const tokenFee of tokenFees) {\n if (tokenFee.amount > 0 && tokenFee.tokenId) {\n const collector = tokenFee.collectorAccount || defaultCollector;\n builder.addTokenFee(\n tokenFee.amount,\n tokenFee.tokenId,\n collector,\n undefined,\n exemptIds\n );\n this.logger.info(\n `Added token fee: ${tokenFee.amount} of token ${tokenFee.tokenId} to be collected by ${collector}`\n );\n }\n }\n\n return builder;\n } catch (error) {\n this.logger.error(`Error creating fee configuration: ${error}`);\n return undefined;\n }\n }\n\n private extractAccountId(request: HCSMessage): string | undefined {\n if (request.operator_id) {\n return this.hcsClient.standardClient.extractAccountFromOperatorId(\n request.operator_id\n );\n }\n return undefined;\n }\n\n private async acceptConnectionRequest(\n connectionRequestId: number,\n requestingAccountId: string,\n feeConfig?: FeeConfigBuilderInterface\n ): Promise<{ success: boolean; connectionTopicId?: string; error?: string }> {\n try {\n const inboundTopicId = await this.hcsClient.getInboundTopicId();\n this.logger.info(\n `Accepting connection request #${connectionRequestId} from ${requestingAccountId}`\n );\n\n const result = await this.hcsClient.handleConnectionRequest(\n inboundTopicId,\n requestingAccountId,\n connectionRequestId,\n feeConfig\n );\n\n if (!result?.connectionTopicId) {\n return {\n success: false,\n error: 'Connection acceptance returned no connection topic ID',\n };\n }\n\n const connectionTopicId = result.connectionTopicId;\n this.logger.info(\n `Connection established! Topic ID: ${connectionTopicId}`\n );\n\n let profileInfo: AIAgentProfile | undefined;\n try {\n const profile = await this.hcsClient.getAgentProfile(\n requestingAccountId\n );\n if (profile.success && profile.profile) {\n profileInfo = profile.profile;\n }\n } catch (profileError) {\n this.logger.warn(\n `Could not fetch profile for ${requestingAccountId}: ${profileError}`\n );\n }\n\n const targetInboundTopicId =\n (await this.hcsClient.getAgentProfile(requestingAccountId))?.topicInfo\n ?.inboundTopic || '';\n\n const connection: ActiveConnection = {\n targetAccountId: requestingAccountId,\n targetAgentName:\n profileInfo?.display_name || `Agent ${requestingAccountId}`,\n targetInboundTopicId,\n connectionTopicId,\n profileInfo,\n created: new Date(),\n status: 'established',\n metadata: {\n requestId: connectionRequestId,\n },\n };\n\n this.stateManager.addActiveConnection(connection);\n\n return {\n success: true,\n connectionTopicId,\n };\n } catch (error) {\n this.logger.error(`Error accepting connection request: ${error}`);\n return {\n success: false,\n error: error instanceof Error ? error.message : String(error),\n };\n }\n }\n\n private formatFeeString(\n hbarFees: FeeDefinition[] = [],\n tokenFees: TokenFeeDefinition[] = []\n ): string {\n if (hbarFees.length === 0 && tokenFees.length === 0) {\n return '';\n }\n\n let feeString = ' with fees: ';\n\n if (hbarFees.length > 0) {\n const hbarFeeDetails = hbarFees\n .filter((fee) => fee.amount > 0)\n .map((fee) => {\n const collector = fee.collectorAccount\n ? ` to ${fee.collectorAccount}`\n : '';\n return `${fee.amount} HBAR${collector}`;\n })\n .join(', ');\n\n if (hbarFeeDetails) {\n feeString += hbarFeeDetails;\n }\n }\n\n if (tokenFees.length > 0) {\n if (hbarFees.length > 0) {\n feeString += ' and ';\n }\n\n const tokenFeeDetails = tokenFees\n .filter((fee) => fee.amount > 0 && fee.tokenId)\n .map((fee) => {\n const collector = fee.collectorAccount\n ? ` to ${fee.collectorAccount}`\n : '';\n return `${fee.amount} of token ${fee.tokenId}${collector}`;\n })\n .join(', ');\n\n if (tokenFeeDetails) {\n feeString += tokenFeeDetails;\n }\n }\n\n return feeString === ' with fees: ' ? '' : feeString;\n }\n\n /**\n * Updates the ConnectionsManager with latest connection data\n * This method is meant to be called when changes to connections happen\n * outside this tool's monitoring process\n */\n public update(): void {\n // Trigger the listConnectionsTool to refresh state data\n this.listConnectionsTool\n .invoke({\n includeDetails: true,\n showPending: true,\n })\n .catch((error) => {\n this.logger.error(`Error updating connections: ${error}`);\n });\n }\n}\n"],"names":["inboundTopicId"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"standards-agent-kit.es11.js","sources":["../../src/tools/hcs10/ConnectionMonitorTool.ts"],"sourcesContent":["import { z } from 'zod';\nimport { BaseHCS10TransactionTool } from './base-hcs10-tools';\nimport { HCS10Builder } from '../../builders/hcs10/hcs10-builder';\nimport { HCS10TransactionToolParams } from './hcs10-tool-params';\nimport { BaseServiceBuilder } from 'hedera-agent-kit';\n\nconst ConnectionMonitorZodSchema = z.object({\n acceptAll: z\n .boolean()\n .optional()\n .describe(\n 'Whether to automatically accept all incoming connection requests. Default is false.'\n ),\n targetAccountId: z\n .string()\n .optional()\n .describe(\n 'If provided, only accept connection requests from this specific account ID.'\n ),\n hbarFees: z\n .array(\n z.object({\n amount: z.number(),\n collectorAccount: z.string().optional(),\n })\n )\n .optional()\n .describe(\n 'Array of HBAR fee amounts to charge per message (with optional collector accounts).'\n ),\n tokenFees: z\n .array(\n z.object({\n amount: z.number(),\n tokenId: z.string(),\n collectorAccount: z.string().optional(),\n })\n )\n .optional()\n .describe(\n 'Array of token fee amounts and IDs to charge per message (with optional collector accounts).'\n ),\n exemptAccountIds: z\n .array(z.string())\n .optional()\n .describe(\n 'Array of account IDs to exempt from ALL fees set in this request.'\n ),\n monitorDurationSeconds: z\n .number()\n .optional()\n .describe(\n 'How long to monitor for incoming requests in seconds. Default is 120.'\n ),\n defaultCollectorAccount: z\n .string()\n .optional()\n .describe(\n 'Default account to collect fees if not specified at the fee level. Defaults to the agent account.'\n ),\n});\n\n/**\n * A tool for monitoring incoming connection requests and accepting them with optional fee settings.\n */\nexport class ConnectionMonitorTool extends BaseHCS10TransactionTool<\n typeof ConnectionMonitorZodSchema\n> {\n name = 'monitor_connections';\n description =\n 'Monitors for incoming connection requests and accepts them with optional fee settings. Use this to watch for connection requests and accept them, optionally setting HBAR or token fees on the connection. Note: When acceptAll=true, this tool requires multiple transactions and cannot be used in returnBytes mode.';\n specificInputSchema = ConnectionMonitorZodSchema;\n constructor(params: HCS10TransactionToolParams) {\n super(params);\n this.neverScheduleThisTool = true;\n this.requiresMultipleTransactions = true;\n }\n\n protected async callBuilderMethod(\n builder: BaseServiceBuilder,\n specificArgs: z.infer<typeof ConnectionMonitorZodSchema>\n ): Promise<void> {\n const hcs10Builder = builder as HCS10Builder;\n await hcs10Builder.monitorConnections({\n ...(specificArgs.acceptAll !== undefined && {\n acceptAll: specificArgs.acceptAll,\n }),\n ...(specificArgs.targetAccountId !== undefined && {\n targetAccountId: specificArgs.targetAccountId,\n }),\n ...(specificArgs.monitorDurationSeconds !== undefined && {\n monitorDurationSeconds: specificArgs.monitorDurationSeconds,\n }),\n hbarFees: (specificArgs.hbarFees || []) as Array<{\n amount: number;\n collectorAccount?: string;\n }>,\n tokenFees: (specificArgs.tokenFees || []) as Array<{\n amount: number;\n tokenId: string;\n collectorAccount?: string;\n }>,\n ...(specificArgs.exemptAccountIds !== undefined && {\n exemptAccountIds: specificArgs.exemptAccountIds,\n }),\n ...(specificArgs.defaultCollectorAccount !== undefined && {\n defaultCollectorAccount: specificArgs.defaultCollectorAccount,\n }),\n });\n }\n}\n"],"names":[],"mappings":";;AAMA,MAAM,6BAA6B,EAAE,OAAO;AAAA,EAC1C,WAAW,EACR,UACA,WACA;AAAA,IACC;AAAA,EAAA;AAAA,EAEJ,iBAAiB,EACd,SACA,WACA;AAAA,IACC;AAAA,EAAA;AAAA,EAEJ,UAAU,EACP;AAAA,IACC,EAAE,OAAO;AAAA,MACP,QAAQ,EAAE,OAAA;AAAA,MACV,kBAAkB,EAAE,OAAA,EAAS,SAAA;AAAA,IAAS,CACvC;AAAA,EAAA,EAEF,WACA;AAAA,IACC;AAAA,EAAA;AAAA,EAEJ,WAAW,EACR;AAAA,IACC,EAAE,OAAO;AAAA,MACP,QAAQ,EAAE,OAAA;AAAA,MACV,SAAS,EAAE,OAAA;AAAA,MACX,kBAAkB,EAAE,OAAA,EAAS,SAAA;AAAA,IAAS,CACvC;AAAA,EAAA,EAEF,WACA;AAAA,IACC;AAAA,EAAA;AAAA,EAEJ,kBAAkB,EACf,MAAM,EAAE,QAAQ,EAChB,WACA;AAAA,IACC;AAAA,EAAA;AAAA,EAEJ,wBAAwB,EACrB,SACA,WACA;AAAA,IACC;AAAA,EAAA;AAAA,EAEJ,yBAAyB,EACtB,SACA,WACA;AAAA,IACC;AAAA,EAAA;AAEN,CAAC;AAKM,MAAM,8BAA8B,yBAEzC;AAAA,EAKA,YAAY,QAAoC;AAC9C,UAAM,MAAM;AALd,SAAA,OAAO;AACP,SAAA,cACE;AACF,SAAA,sBAAsB;AAGpB,SAAK,wBAAwB;AAC7B,SAAK,+BAA+B;AAAA,EACtC;AAAA,EAEA,MAAgB,kBACd,SACA,cACe;AACf,UAAM,eAAe;AACrB,UAAM,aAAa,mBAAmB;AAAA,MACpC,GAAI,aAAa,cAAc,UAAa;AAAA,QAC1C,WAAW,aAAa;AAAA,MAAA;AAAA,MAE1B,GAAI,aAAa,oBAAoB,UAAa;AAAA,QAChD,iBAAiB,aAAa;AAAA,MAAA;AAAA,MAEhC,GAAI,aAAa,2BAA2B,UAAa;AAAA,QACvD,wBAAwB,aAAa;AAAA,MAAA;AAAA,MAEvC,UAAW,aAAa,YAAY,CAAA;AAAA,MAIpC,WAAY,aAAa,aAAa,CAAA;AAAA,MAKtC,GAAI,aAAa,qBAAqB,UAAa;AAAA,QACjD,kBAAkB,aAAa;AAAA,MAAA;AAAA,MAEjC,GAAI,aAAa,4BAA4B,UAAa;AAAA,QACxD,yBAAyB,aAAa;AAAA,MAAA;AAAA,IACxC,CACD;AAAA,EACH;AACF;"}
|