@hashgraphonline/conversational-agent 0.2.216 → 0.2.218
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cli/readme.md +181 -0
- package/dist/cjs/index.cjs +1 -1
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/plugins/community/swarm/SwarmPlugin.d.ts +17 -0
- package/dist/cjs/plugins/community/swarm/__tests__/SwarmPlugin.mocks.d.ts +1 -0
- package/dist/cjs/plugins/community/swarm/__tests__/SwarmPlugin.test.d.ts +1 -0
- package/dist/cjs/plugins/community/swarm/__tests__/tools/CreatePostageStampTool.test.d.ts +1 -0
- package/dist/cjs/plugins/community/swarm/__tests__/tools/DownloadDataTool.test.d.ts +1 -0
- package/dist/cjs/plugins/community/swarm/__tests__/tools/DownloadFilesTool.test.d.ts +1 -0
- package/dist/cjs/plugins/community/swarm/__tests__/tools/ExtendPostageStampTool.test.d.ts +1 -0
- package/dist/cjs/plugins/community/swarm/__tests__/tools/GetPostageStampTool.test.d.ts +1 -0
- package/dist/cjs/plugins/community/swarm/__tests__/tools/ListPostageStampsTool.test.d.ts +1 -0
- package/dist/cjs/plugins/community/swarm/__tests__/tools/QueryUploadProgressTool.test.d.ts +1 -0
- package/dist/cjs/plugins/community/swarm/__tests__/tools/ReadFeedTool.test.d.ts +1 -0
- package/dist/cjs/plugins/community/swarm/__tests__/tools/SwarmTool.mocks.d.ts +14 -0
- package/dist/cjs/plugins/community/swarm/__tests__/tools/UpdateFeedTool.test.d.ts +1 -0
- package/dist/cjs/plugins/community/swarm/__tests__/tools/UploadDataTool.test.d.ts +1 -0
- package/dist/cjs/plugins/community/swarm/__tests__/tools/UploadFileTool.test.d.ts +1 -0
- package/dist/cjs/plugins/community/swarm/__tests__/tools/UploadFolderTool.test.d.ts +1 -0
- package/dist/cjs/plugins/community/swarm/config.d.ts +6 -0
- package/dist/cjs/plugins/community/swarm/constants.d.ts +8 -0
- package/dist/cjs/plugins/community/swarm/index.d.ts +2 -0
- package/dist/cjs/plugins/community/swarm/model.d.ts +23 -0
- package/dist/cjs/plugins/community/swarm/tools/CreatePostageStampTool.d.ts +47 -0
- package/dist/cjs/plugins/community/swarm/tools/DownloadDataTool.d.ts +35 -0
- package/dist/cjs/plugins/community/swarm/tools/DownloadFilesTool.d.ts +41 -0
- package/dist/cjs/plugins/community/swarm/tools/ExtendPostageStampTool.d.ts +47 -0
- package/dist/cjs/plugins/community/swarm/tools/GetPostageStampTool.d.ts +35 -0
- package/dist/cjs/plugins/community/swarm/tools/ListPostageStampsTool.d.ts +53 -0
- package/dist/cjs/plugins/community/swarm/tools/QueryUploadProgressTool.d.ts +35 -0
- package/dist/cjs/plugins/community/swarm/tools/ReadFeedTool.d.ts +41 -0
- package/dist/cjs/plugins/community/swarm/tools/UpdateFeedTool.d.ts +47 -0
- package/dist/cjs/plugins/community/swarm/tools/UploadDataTool.d.ts +47 -0
- package/dist/cjs/plugins/community/swarm/tools/UploadFileTool.d.ts +53 -0
- package/dist/cjs/plugins/community/swarm/tools/UploadFolderTool.d.ts +47 -0
- package/dist/cjs/plugins/community/swarm/utils.d.ts +22 -0
- package/dist/cjs/plugins/index.d.ts +1 -0
- package/dist/esm/index.js +33 -31
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index10.js +13 -677
- package/dist/esm/index10.js.map +1 -1
- package/dist/esm/index11.js +601 -234
- package/dist/esm/index11.js.map +1 -1
- package/dist/esm/index12.js +296 -136
- package/dist/esm/index12.js.map +1 -1
- package/dist/esm/index13.js +127 -235
- package/dist/esm/index13.js.map +1 -1
- package/dist/esm/index14.js +247 -84
- package/dist/esm/index14.js.map +1 -1
- package/dist/esm/index15.js +81 -159
- package/dist/esm/index15.js.map +1 -1
- package/dist/esm/index16.js +155 -229
- package/dist/esm/index16.js.map +1 -1
- package/dist/esm/index17.js +238 -140
- package/dist/esm/index17.js.map +1 -1
- package/dist/esm/index18.js +139 -493
- package/dist/esm/index18.js.map +1 -1
- package/dist/esm/index19.js +479 -91
- package/dist/esm/index19.js.map +1 -1
- package/dist/esm/index20.js +88 -147
- package/dist/esm/index20.js.map +1 -1
- package/dist/esm/index21.js +127 -666
- package/dist/esm/index21.js.map +1 -1
- package/dist/esm/index22.js +698 -44
- package/dist/esm/index22.js.map +1 -1
- package/dist/esm/index23.js +45 -304
- package/dist/esm/index23.js.map +1 -1
- package/dist/esm/index24.js +303 -153
- package/dist/esm/index24.js.map +1 -1
- package/dist/esm/index25.js +150 -117
- package/dist/esm/index25.js.map +1 -1
- package/dist/esm/index26.js +154 -18
- package/dist/esm/index26.js.map +1 -1
- package/dist/esm/index27.js +18 -22
- package/dist/esm/index27.js.map +1 -1
- package/dist/esm/index28.js +15 -74
- package/dist/esm/index28.js.map +1 -1
- package/dist/esm/index29.js +70 -295
- package/dist/esm/index29.js.map +1 -1
- package/dist/esm/index30.js +279 -100
- package/dist/esm/index30.js.map +1 -1
- package/dist/esm/index31.js +86 -922
- package/dist/esm/index31.js.map +1 -1
- package/dist/esm/index32.js +904 -189
- package/dist/esm/index32.js.map +1 -1
- package/dist/esm/index33.js +185 -1169
- package/dist/esm/index33.js.map +1 -1
- package/dist/esm/index34.js +1218 -112
- package/dist/esm/index34.js.map +1 -1
- package/dist/esm/index35.js +111 -99
- package/dist/esm/index35.js.map +1 -1
- package/dist/esm/index36.js +113 -8
- package/dist/esm/index36.js.map +1 -1
- package/dist/esm/index37.js +8 -45
- package/dist/esm/index37.js.map +1 -1
- package/dist/esm/index38.js +41 -102
- package/dist/esm/index38.js.map +1 -1
- package/dist/esm/index39.js +96 -55
- package/dist/esm/index39.js.map +1 -1
- package/dist/esm/index4.js +1 -1
- package/dist/esm/index40.js +58 -71
- package/dist/esm/index40.js.map +1 -1
- package/dist/esm/index41.js +79 -21
- package/dist/esm/index41.js.map +1 -1
- package/dist/esm/index42.js +21 -5
- package/dist/esm/index42.js.map +1 -1
- package/dist/esm/index43.js +26 -11
- package/dist/esm/index43.js.map +1 -1
- package/dist/esm/index44.js +12 -322
- package/dist/esm/index44.js.map +1 -1
- package/dist/esm/index45.js +66 -173
- package/dist/esm/index45.js.map +1 -1
- package/dist/esm/index46.js +69 -24
- package/dist/esm/index46.js.map +1 -1
- package/dist/esm/index47.js +47 -88
- package/dist/esm/index47.js.map +1 -1
- package/dist/esm/index48.js +100 -7
- package/dist/esm/index48.js.map +1 -1
- package/dist/esm/index49.js +79 -0
- package/dist/esm/index49.js.map +1 -0
- package/dist/esm/index5.js +2 -2
- package/dist/esm/index50.js +75 -0
- package/dist/esm/index50.js.map +1 -0
- package/dist/esm/index51.js +124 -0
- package/dist/esm/index51.js.map +1 -0
- package/dist/esm/index52.js +58 -0
- package/dist/esm/index52.js.map +1 -0
- package/dist/esm/index53.js +83 -0
- package/dist/esm/index53.js.map +1 -0
- package/dist/esm/index54.js +100 -0
- package/dist/esm/index54.js.map +1 -0
- package/dist/esm/index55.js +118 -0
- package/dist/esm/index55.js.map +1 -0
- package/dist/esm/index56.js +108 -0
- package/dist/esm/index56.js.map +1 -0
- package/dist/esm/index57.js +8 -0
- package/dist/esm/index57.js.map +1 -0
- package/dist/esm/index58.js +325 -0
- package/dist/esm/index58.js.map +1 -0
- package/dist/esm/index59.js +187 -0
- package/dist/esm/index59.js.map +1 -0
- package/dist/esm/index6.js +132 -833
- package/dist/esm/index6.js.map +1 -1
- package/dist/esm/index60.js +10 -0
- package/dist/esm/index60.js.map +1 -0
- package/dist/esm/index61.js +98 -0
- package/dist/esm/index61.js.map +1 -0
- package/dist/esm/index62.js +131 -0
- package/dist/esm/index62.js.map +1 -0
- package/dist/esm/index63.js +19 -0
- package/dist/esm/index63.js.map +1 -0
- package/dist/esm/index7.js +826 -75
- package/dist/esm/index7.js.map +1 -1
- package/dist/esm/index8.js +91 -13
- package/dist/esm/index8.js.map +1 -1
- package/dist/esm/index9.js +13 -17
- package/dist/esm/index9.js.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/plugins/community/swarm/SwarmPlugin.d.ts +17 -0
- package/dist/types/plugins/community/swarm/__tests__/SwarmPlugin.mocks.d.ts +1 -0
- package/dist/types/plugins/community/swarm/__tests__/SwarmPlugin.test.d.ts +1 -0
- package/dist/types/plugins/community/swarm/__tests__/tools/CreatePostageStampTool.test.d.ts +1 -0
- package/dist/types/plugins/community/swarm/__tests__/tools/DownloadDataTool.test.d.ts +1 -0
- package/dist/types/plugins/community/swarm/__tests__/tools/DownloadFilesTool.test.d.ts +1 -0
- package/dist/types/plugins/community/swarm/__tests__/tools/ExtendPostageStampTool.test.d.ts +1 -0
- package/dist/types/plugins/community/swarm/__tests__/tools/GetPostageStampTool.test.d.ts +1 -0
- package/dist/types/plugins/community/swarm/__tests__/tools/ListPostageStampsTool.test.d.ts +1 -0
- package/dist/types/plugins/community/swarm/__tests__/tools/QueryUploadProgressTool.test.d.ts +1 -0
- package/dist/types/plugins/community/swarm/__tests__/tools/ReadFeedTool.test.d.ts +1 -0
- package/dist/types/plugins/community/swarm/__tests__/tools/SwarmTool.mocks.d.ts +14 -0
- package/dist/types/plugins/community/swarm/__tests__/tools/UpdateFeedTool.test.d.ts +1 -0
- package/dist/types/plugins/community/swarm/__tests__/tools/UploadDataTool.test.d.ts +1 -0
- package/dist/types/plugins/community/swarm/__tests__/tools/UploadFileTool.test.d.ts +1 -0
- package/dist/types/plugins/community/swarm/__tests__/tools/UploadFolderTool.test.d.ts +1 -0
- package/dist/types/plugins/community/swarm/config.d.ts +6 -0
- package/dist/types/plugins/community/swarm/constants.d.ts +8 -0
- package/dist/types/plugins/community/swarm/index.d.ts +2 -0
- package/dist/types/plugins/community/swarm/model.d.ts +23 -0
- package/dist/types/plugins/community/swarm/tools/CreatePostageStampTool.d.ts +47 -0
- package/dist/types/plugins/community/swarm/tools/DownloadDataTool.d.ts +35 -0
- package/dist/types/plugins/community/swarm/tools/DownloadFilesTool.d.ts +41 -0
- package/dist/types/plugins/community/swarm/tools/ExtendPostageStampTool.d.ts +47 -0
- package/dist/types/plugins/community/swarm/tools/GetPostageStampTool.d.ts +35 -0
- package/dist/types/plugins/community/swarm/tools/ListPostageStampsTool.d.ts +53 -0
- package/dist/types/plugins/community/swarm/tools/QueryUploadProgressTool.d.ts +35 -0
- package/dist/types/plugins/community/swarm/tools/ReadFeedTool.d.ts +41 -0
- package/dist/types/plugins/community/swarm/tools/UpdateFeedTool.d.ts +47 -0
- package/dist/types/plugins/community/swarm/tools/UploadDataTool.d.ts +47 -0
- package/dist/types/plugins/community/swarm/tools/UploadFileTool.d.ts +53 -0
- package/dist/types/plugins/community/swarm/tools/UploadFolderTool.d.ts +47 -0
- package/dist/types/plugins/community/swarm/utils.d.ts +22 -0
- package/dist/types/plugins/index.d.ts +1 -0
- package/package.json +37 -27
- package/src/index.ts +1 -0
- package/src/plugins/community/swarm/README.md +279 -0
- package/src/plugins/community/swarm/SwarmPlugin.ts +178 -0
- package/src/plugins/community/swarm/__tests__/SwarmPlugin.mocks.ts +105 -0
- package/src/plugins/community/swarm/__tests__/SwarmPlugin.test.ts +93 -0
- package/src/plugins/community/swarm/__tests__/tools/CreatePostageStampTool.test.ts +152 -0
- package/src/plugins/community/swarm/__tests__/tools/DownloadDataTool.test.ts +93 -0
- package/src/plugins/community/swarm/__tests__/tools/DownloadFilesTool.test.ts +163 -0
- package/src/plugins/community/swarm/__tests__/tools/ExtendPostageStampTool.test.ts +132 -0
- package/src/plugins/community/swarm/__tests__/tools/GetPostageStampTool.test.ts +83 -0
- package/src/plugins/community/swarm/__tests__/tools/ListPostageStampsTool.test.ts +219 -0
- package/src/plugins/community/swarm/__tests__/tools/QueryUploadProgressTool.test.ts +169 -0
- package/src/plugins/community/swarm/__tests__/tools/ReadFeedTool.test.ts +133 -0
- package/src/plugins/community/swarm/__tests__/tools/SwarmTool.mocks.ts +67 -0
- package/src/plugins/community/swarm/__tests__/tools/UpdateFeedTool.test.ts +148 -0
- package/src/plugins/community/swarm/__tests__/tools/UploadDataTool.test.ts +125 -0
- package/src/plugins/community/swarm/__tests__/tools/UploadFileTool.test.ts +194 -0
- package/src/plugins/community/swarm/__tests__/tools/UploadFolderTool.test.ts +118 -0
- package/src/plugins/community/swarm/config.ts +6 -0
- package/src/plugins/community/swarm/constants.ts +12 -0
- package/src/plugins/community/swarm/index.ts +2 -0
- package/src/plugins/community/swarm/model.ts +23 -0
- package/src/plugins/community/swarm/tools/CreatePostageStampTool.ts +137 -0
- package/src/plugins/community/swarm/tools/DownloadDataTool.ts +79 -0
- package/src/plugins/community/swarm/tools/DownloadFilesTool.ts +155 -0
- package/src/plugins/community/swarm/tools/ExtendPostageStampTool.ts +112 -0
- package/src/plugins/community/swarm/tools/GetPostageStampTool.ts +92 -0
- package/src/plugins/community/swarm/tools/ListPostageStampsTool.ts +124 -0
- package/src/plugins/community/swarm/tools/QueryUploadProgressTool.ts +109 -0
- package/src/plugins/community/swarm/tools/ReadFeedTool.ts +110 -0
- package/src/plugins/community/swarm/tools/UpdateFeedTool.ts +149 -0
- package/src/plugins/community/swarm/tools/UploadDataTool.ts +109 -0
- package/src/plugins/community/swarm/tools/UploadFileTool.ts +163 -0
- package/src/plugins/community/swarm/tools/UploadFolderTool.ts +150 -0
- package/src/plugins/community/swarm/utils.ts +172 -0
- package/src/plugins/index.ts +1 -0
- package/cli/dist/CLIApp.d.ts +0 -11
- package/cli/dist/CLIApp.d.ts.map +0 -1
- package/cli/dist/CLIApp.js +0 -128
- package/cli/dist/CLIApp.js.map +0 -1
- package/cli/dist/LocalConversationalAgent.d.ts +0 -37
- package/cli/dist/LocalConversationalAgent.js +0 -58
- package/cli/dist/app.d.ts +0 -18
- package/cli/dist/app.d.ts.map +0 -1
- package/cli/dist/app.js +0 -14
- package/cli/dist/app.js.map +0 -1
- package/cli/dist/cli.d.ts +0 -3
- package/cli/dist/cli.d.ts.map +0 -1
- package/cli/dist/cli.js +0 -87
- package/cli/dist/cli.js.map +0 -1
- package/cli/dist/components/AppContainer.d.ts +0 -16
- package/cli/dist/components/AppContainer.js +0 -24
- package/cli/dist/components/AppScreens.d.ts +0 -2
- package/cli/dist/components/AppScreens.js +0 -259
- package/cli/dist/components/ChatScreen.d.ts +0 -21
- package/cli/dist/components/ChatScreen.d.ts.map +0 -1
- package/cli/dist/components/ChatScreen.js +0 -40
- package/cli/dist/components/ChatScreen.js.map +0 -1
- package/cli/dist/components/DebugLoadingScreen.d.ts +0 -5
- package/cli/dist/components/DebugLoadingScreen.js +0 -31
- package/cli/dist/components/LoadingScreen.d.ts +0 -3
- package/cli/dist/components/LoadingScreen.d.ts.map +0 -1
- package/cli/dist/components/LoadingScreen.js +0 -17
- package/cli/dist/components/LoadingScreen.js.map +0 -1
- package/cli/dist/components/LoadingScreenDebug.d.ts +0 -5
- package/cli/dist/components/LoadingScreenDebug.js +0 -27
- package/cli/dist/components/MCPConfigScreen.d.ts +0 -28
- package/cli/dist/components/MCPConfigScreen.d.ts.map +0 -1
- package/cli/dist/components/MCPConfigScreen.js +0 -186
- package/cli/dist/components/MCPConfigScreen.js.map +0 -1
- package/cli/dist/components/ScreenRouter.d.ts +0 -13
- package/cli/dist/components/ScreenRouter.d.ts.map +0 -1
- package/cli/dist/components/ScreenRouter.js +0 -23
- package/cli/dist/components/ScreenRouter.js.map +0 -1
- package/cli/dist/components/SetupScreen.d.ts +0 -16
- package/cli/dist/components/SetupScreen.d.ts.map +0 -1
- package/cli/dist/components/SetupScreen.js +0 -67
- package/cli/dist/components/SetupScreen.js.map +0 -1
- package/cli/dist/components/SingleLoadingScreen.d.ts +0 -5
- package/cli/dist/components/SingleLoadingScreen.js +0 -27
- package/cli/dist/components/StatusBadge.d.ts +0 -10
- package/cli/dist/components/StatusBadge.d.ts.map +0 -1
- package/cli/dist/components/StatusBadge.js +0 -24
- package/cli/dist/components/StatusBadge.js.map +0 -1
- package/cli/dist/components/TerminalWindow.d.ts +0 -9
- package/cli/dist/components/TerminalWindow.d.ts.map +0 -1
- package/cli/dist/components/TerminalWindow.js +0 -19
- package/cli/dist/components/TerminalWindow.js.map +0 -1
- package/cli/dist/components/WelcomeScreen.d.ts +0 -12
- package/cli/dist/components/WelcomeScreen.d.ts.map +0 -1
- package/cli/dist/components/WelcomeScreen.js +0 -47
- package/cli/dist/components/WelcomeScreen.js.map +0 -1
- package/cli/dist/context/AppContext.d.ts +0 -68
- package/cli/dist/context/AppContext.js +0 -363
- package/cli/dist/headless-runner.d.ts +0 -17
- package/cli/dist/headless-runner.d.ts.map +0 -1
- package/cli/dist/headless-runner.js +0 -128
- package/cli/dist/headless-runner.js.map +0 -1
- package/cli/dist/hooks/useInitializeAgent.d.ts +0 -19
- package/cli/dist/hooks/useInitializeAgent.d.ts.map +0 -1
- package/cli/dist/hooks/useInitializeAgent.js +0 -29
- package/cli/dist/hooks/useInitializeAgent.js.map +0 -1
- package/cli/dist/hooks/useStableState.d.ts +0 -38
- package/cli/dist/hooks/useStableState.d.ts.map +0 -1
- package/cli/dist/hooks/useStableState.js +0 -69
- package/cli/dist/hooks/useStableState.js.map +0 -1
- package/cli/dist/managers/AgentManager.d.ts +0 -58
- package/cli/dist/managers/AgentManager.d.ts.map +0 -1
- package/cli/dist/managers/AgentManager.js +0 -121
- package/cli/dist/managers/AgentManager.js.map +0 -1
- package/cli/dist/managers/ConfigManager.d.ts +0 -54
- package/cli/dist/managers/ConfigManager.d.ts.map +0 -1
- package/cli/dist/managers/ConfigManager.js +0 -188
- package/cli/dist/managers/ConfigManager.js.map +0 -1
- package/cli/dist/types.d.ts +0 -52
- package/cli/dist/types.d.ts.map +0 -1
- package/cli/dist/types.js +0 -34
- package/cli/dist/types.js.map +0 -1
package/dist/esm/index28.js
CHANGED
|
@@ -1,84 +1,25 @@
|
|
|
1
|
-
import { EntityFormat } from "./
|
|
2
|
-
|
|
3
|
-
const _StringNormalizationConverter = class _StringNormalizationConverter {
|
|
1
|
+
import { EntityFormat } from "./index27.js";
|
|
2
|
+
class TopicIdToHrlConverter {
|
|
4
3
|
constructor() {
|
|
5
|
-
this.sourceFormat = EntityFormat.
|
|
4
|
+
this.sourceFormat = EntityFormat.TOPIC_ID;
|
|
6
5
|
this.targetFormat = EntityFormat.HRL;
|
|
7
6
|
}
|
|
7
|
+
/**
|
|
8
|
+
* Check if the source string is a valid topic ID
|
|
9
|
+
*/
|
|
8
10
|
canConvert(source, _context) {
|
|
9
|
-
|
|
10
|
-
return false;
|
|
11
|
-
}
|
|
12
|
-
if (/^hcs:\/\/\d\/0\.0\.\d+$/i.test(source)) {
|
|
13
|
-
return false;
|
|
14
|
-
}
|
|
15
|
-
if (/inscription-cdn\/(0\.0\.\d+)/i.test(source)) {
|
|
16
|
-
return true;
|
|
17
|
-
}
|
|
18
|
-
if (/^content-ref:(0\.0\.\d+)$/i.test(source)) {
|
|
19
|
-
return true;
|
|
20
|
-
}
|
|
21
|
-
if (/^0\.0\.\d+$/.test(source)) {
|
|
22
|
-
const hasPreference = Boolean(
|
|
23
|
-
_context?.toolPreferences?.inscription === "hrl" || _context?.toolPreferences?.topic === "hrl"
|
|
24
|
-
);
|
|
25
|
-
return hasPreference;
|
|
26
|
-
}
|
|
27
|
-
return false;
|
|
11
|
+
return /^0\.0\.\d+$/.test(source);
|
|
28
12
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
13
|
+
/**
|
|
14
|
+
* Convert topic ID to HRL format based on network type
|
|
15
|
+
*/
|
|
16
|
+
async convert(topicId, context) {
|
|
32
17
|
const networkType = context.networkType || "testnet";
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
if (cdnMatch && cdnMatch[1]) {
|
|
36
|
-
try {
|
|
37
|
-
const mirror = new HederaMirrorNode(networkType);
|
|
38
|
-
mirror.configureRetry({
|
|
39
|
-
maxRetries: 3,
|
|
40
|
-
maxDelayMs: 1e3
|
|
41
|
-
});
|
|
42
|
-
const resolved = await mirror.getTopicInfo(cdnMatch[1]);
|
|
43
|
-
const memo = resolved && resolved.memo || "";
|
|
44
|
-
const match = memo.match(/^hcs-(\d+)/);
|
|
45
|
-
const standard = match && match[1] ? match[1] : "1";
|
|
46
|
-
return `hcs://${standard}/${cdnMatch[1]}`;
|
|
47
|
-
} catch {
|
|
48
|
-
return `hcs://${fallbackStandard}/${cdnMatch[1]}`;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
const contentRefMatch = source.match(/^content-ref:(0\.0\.\d+)$/i);
|
|
52
|
-
if (contentRefMatch && contentRefMatch[1]) {
|
|
53
|
-
try {
|
|
54
|
-
const resolved = await resolver.resolve(contentRefMatch[1], {
|
|
55
|
-
network: networkType
|
|
56
|
-
});
|
|
57
|
-
const parsed = resolver.parseHRL(`hcs://1/${resolved.topicId}`);
|
|
58
|
-
const std = parsed?.standard || fallbackStandard;
|
|
59
|
-
return `hcs://${std}/${resolved.topicId}`;
|
|
60
|
-
} catch {
|
|
61
|
-
return `hcs://${fallbackStandard}/${contentRefMatch[1]}`;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
if (/^0\.0\.\d+$/.test(source)) {
|
|
65
|
-
try {
|
|
66
|
-
const resolved = await resolver.resolve(source, {
|
|
67
|
-
network: networkType
|
|
68
|
-
});
|
|
69
|
-
const parsed = resolver.parseHRL(`hcs://1/${resolved.topicId}`);
|
|
70
|
-
const std = parsed?.standard || fallbackStandard;
|
|
71
|
-
return `hcs://${std}/${resolved.topicId}`;
|
|
72
|
-
} catch {
|
|
73
|
-
return `hcs://${fallbackStandard}/${source}`;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
return source;
|
|
18
|
+
const networkId = networkType === "mainnet" ? "0" : "1";
|
|
19
|
+
return `hcs://${networkId}/${topicId}`;
|
|
77
20
|
}
|
|
78
|
-
}
|
|
79
|
-
_StringNormalizationConverter.standardCache = /* @__PURE__ */ new Map();
|
|
80
|
-
let StringNormalizationConverter = _StringNormalizationConverter;
|
|
21
|
+
}
|
|
81
22
|
export {
|
|
82
|
-
|
|
23
|
+
TopicIdToHrlConverter
|
|
83
24
|
};
|
|
84
25
|
//# sourceMappingURL=index28.js.map
|
package/dist/esm/index28.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index28.js","sources":["../../src/services/formatters/converters/
|
|
1
|
+
{"version":3,"file":"index28.js","sources":["../../src/services/formatters/converters/topic-id-to-hrl-converter.ts"],"sourcesContent":["import { EntityFormat, FormatConverter, ConversionContext } from '../types';\n\n/**\n * Converts Hedera topic IDs to HRL format for consensus service messages\n */\nexport class TopicIdToHrlConverter implements FormatConverter<string, string> {\n sourceFormat = EntityFormat.TOPIC_ID;\n targetFormat = EntityFormat.HRL;\n\n /**\n * Check if the source string is a valid topic ID\n */\n canConvert(source: string, _context: ConversionContext): boolean {\n return /^0\\.0\\.\\d+$/.test(source);\n }\n\n /**\n * Convert topic ID to HRL format based on network type\n */\n async convert(topicId: string, context: ConversionContext): Promise<string> {\n const networkType = context.networkType || 'testnet';\n const networkId = networkType === 'mainnet' ? '0' : '1';\n return `hcs://${networkId}/${topicId}`;\n }\n}\n"],"names":[],"mappings":";AAKO,MAAM,sBAAiE;AAAA,EAAvE,cAAA;AACL,SAAA,eAAe,aAAa;AAC5B,SAAA,eAAe,aAAa;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAK5B,WAAW,QAAgB,UAAsC;AAC/D,WAAO,cAAc,KAAK,MAAM;AAAA,EAClC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,QAAQ,SAAiB,SAA6C;AAC1E,UAAM,cAAc,QAAQ,eAAe;AAC3C,UAAM,YAAY,gBAAgB,YAAY,MAAM;AACpD,WAAO,SAAS,SAAS,IAAI,OAAO;AAAA,EACtC;AACF;"}
|
package/dist/esm/index29.js
CHANGED
|
@@ -1,309 +1,84 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
this.
|
|
7
|
-
this.formatConverterRegistry = formatConverterRegistry;
|
|
8
|
-
this.networkType = networkType;
|
|
1
|
+
import { EntityFormat } from "./index27.js";
|
|
2
|
+
import { HRLResolver, HederaMirrorNode } from "@hashgraphonline/standards-sdk";
|
|
3
|
+
const _StringNormalizationConverter = class _StringNormalizationConverter {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.sourceFormat = EntityFormat.ANY;
|
|
6
|
+
this.targetFormat = EntityFormat.HRL;
|
|
9
7
|
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
* - Deterministic post-pass for safe format enforcement
|
|
14
|
-
*/
|
|
15
|
-
async preprocessParameters(toolName, parameters, entities = [], options) {
|
|
16
|
-
const sessionId = options?.sessionId;
|
|
17
|
-
const entityResolver = options?.entityResolver;
|
|
18
|
-
const preferences = options?.preferences;
|
|
19
|
-
let working = { ...parameters };
|
|
20
|
-
if (entityResolver && entities.length > 0) {
|
|
21
|
-
try {
|
|
22
|
-
this.logger.info("AI-driven preprocessing phase", {
|
|
23
|
-
toolName,
|
|
24
|
-
entityCount: entities.length,
|
|
25
|
-
sessionId
|
|
26
|
-
});
|
|
27
|
-
const aiProcessed = { ...working };
|
|
28
|
-
for (const [paramName, paramValue] of Object.entries(working)) {
|
|
29
|
-
if (typeof paramValue === "string") {
|
|
30
|
-
const resolved = await entityResolver.resolveReferences(
|
|
31
|
-
paramValue,
|
|
32
|
-
entities
|
|
33
|
-
);
|
|
34
|
-
const converted = await this.convertParameterEntities(
|
|
35
|
-
resolved,
|
|
36
|
-
entities,
|
|
37
|
-
preferences
|
|
38
|
-
);
|
|
39
|
-
aiProcessed[paramName] = converted;
|
|
40
|
-
} else if (Array.isArray(paramValue)) {
|
|
41
|
-
const out = [];
|
|
42
|
-
for (const item of paramValue) {
|
|
43
|
-
if (typeof item === "string") {
|
|
44
|
-
const resolved = await entityResolver.resolveReferences(
|
|
45
|
-
item,
|
|
46
|
-
entities
|
|
47
|
-
);
|
|
48
|
-
const converted = await this.convertParameterEntities(
|
|
49
|
-
resolved,
|
|
50
|
-
entities,
|
|
51
|
-
preferences
|
|
52
|
-
);
|
|
53
|
-
out.push(converted);
|
|
54
|
-
} else {
|
|
55
|
-
out.push(item);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
aiProcessed[paramName] = out;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
working = aiProcessed;
|
|
62
|
-
} catch (error) {
|
|
63
|
-
const message = error instanceof Error ? error.message : "unknown";
|
|
64
|
-
this.logger.warn(
|
|
65
|
-
"AI phase failed; continuing with deterministic pass",
|
|
66
|
-
{
|
|
67
|
-
toolName,
|
|
68
|
-
error: message
|
|
69
|
-
}
|
|
70
|
-
);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
try {
|
|
74
|
-
const processed = { ...working };
|
|
75
|
-
for (const [paramName, paramValue] of Object.entries(working)) {
|
|
76
|
-
if (typeof paramValue === "string") {
|
|
77
|
-
const converted = await this.convertParameterEntities(
|
|
78
|
-
paramValue,
|
|
79
|
-
entities,
|
|
80
|
-
preferences
|
|
81
|
-
);
|
|
82
|
-
processed[paramName] = converted;
|
|
83
|
-
} else if (Array.isArray(paramValue)) {
|
|
84
|
-
const out = [];
|
|
85
|
-
for (const item of paramValue) {
|
|
86
|
-
if (typeof item === "string") {
|
|
87
|
-
const converted = await this.convertParameterEntities(
|
|
88
|
-
item,
|
|
89
|
-
entities,
|
|
90
|
-
preferences
|
|
91
|
-
);
|
|
92
|
-
out.push(converted);
|
|
93
|
-
} else {
|
|
94
|
-
out.push(item);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
processed[paramName] = out;
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
working = processed;
|
|
101
|
-
} catch (e) {
|
|
102
|
-
this.logger.warn("Deterministic post-pass failed", {
|
|
103
|
-
toolName,
|
|
104
|
-
error: e instanceof Error ? e.message : "unknown"
|
|
105
|
-
});
|
|
8
|
+
canConvert(source, _context) {
|
|
9
|
+
if (typeof source !== "string") {
|
|
10
|
+
return false;
|
|
106
11
|
}
|
|
107
|
-
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* Attach unified preprocessing callback directly to the agent.
|
|
111
|
-
*/
|
|
112
|
-
attachToAgent(agent, deps) {
|
|
113
|
-
const getSessionId = deps?.getSessionId ?? (() => null);
|
|
114
|
-
const getEntities = deps?.getEntities ?? (async () => []);
|
|
115
|
-
const entityResolver = deps?.entityResolver;
|
|
116
|
-
const maybe = agent;
|
|
117
|
-
const attach = (target) => {
|
|
118
|
-
const t = target;
|
|
119
|
-
if (typeof t.setParameterPreprocessingCallback === "function") {
|
|
120
|
-
t.setParameterPreprocessingCallback(
|
|
121
|
-
async (toolName, parameters) => {
|
|
122
|
-
const sessionId = getSessionId();
|
|
123
|
-
const entities = await getEntities(sessionId);
|
|
124
|
-
const opts = {};
|
|
125
|
-
if (entityResolver) {
|
|
126
|
-
opts.entityResolver = entityResolver;
|
|
127
|
-
}
|
|
128
|
-
if (sessionId) {
|
|
129
|
-
opts.sessionId = sessionId;
|
|
130
|
-
}
|
|
131
|
-
return this.preprocessParameters(toolName, parameters, entities, opts);
|
|
132
|
-
}
|
|
133
|
-
);
|
|
134
|
-
this.logger.info("Parameter preprocessing callback attached");
|
|
135
|
-
return true;
|
|
136
|
-
}
|
|
12
|
+
if (/^hcs:\/\/\d\/0\.0\.\d+$/i.test(source)) {
|
|
137
13
|
return false;
|
|
138
|
-
};
|
|
139
|
-
if (!attach(agent) && typeof maybe.getAgent === "function") {
|
|
140
|
-
const underlying = maybe.getAgent();
|
|
141
|
-
if (underlying) {
|
|
142
|
-
void attach(underlying);
|
|
143
|
-
}
|
|
144
14
|
}
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
* Preprocess tool parameters by applying format conversions based on tool's entity resolution preferences
|
|
148
|
-
*/
|
|
149
|
-
async preprocessToolParameters(toolName, parameters, entities, sessionId) {
|
|
150
|
-
try {
|
|
151
|
-
if (!entities || entities.length === 0) {
|
|
152
|
-
this.logger.info(
|
|
153
|
-
"Tool parameter preprocessing skipped - no entities provided:",
|
|
154
|
-
{
|
|
155
|
-
toolName,
|
|
156
|
-
originalParams: Object.keys(parameters)
|
|
157
|
-
}
|
|
158
|
-
);
|
|
159
|
-
return parameters;
|
|
160
|
-
}
|
|
161
|
-
const processedParameters = { ...parameters };
|
|
162
|
-
const preferences = void 0;
|
|
163
|
-
let hasChanges = false;
|
|
164
|
-
for (const [paramName, paramValue] of Object.entries(parameters)) {
|
|
165
|
-
if (typeof paramValue === "string") {
|
|
166
|
-
const convertedValue = await this.convertParameterEntities(
|
|
167
|
-
paramValue,
|
|
168
|
-
entities,
|
|
169
|
-
preferences
|
|
170
|
-
);
|
|
171
|
-
if (convertedValue !== paramValue) {
|
|
172
|
-
processedParameters[paramName] = convertedValue;
|
|
173
|
-
hasChanges = true;
|
|
174
|
-
this.logger.info("Parameter entity conversion applied:", {
|
|
175
|
-
toolName,
|
|
176
|
-
paramName,
|
|
177
|
-
original: paramValue,
|
|
178
|
-
converted: convertedValue
|
|
179
|
-
});
|
|
180
|
-
}
|
|
181
|
-
} else if (Array.isArray(paramValue)) {
|
|
182
|
-
const originalArray = paramValue;
|
|
183
|
-
const convertedArray = [];
|
|
184
|
-
let arrayChanged = false;
|
|
185
|
-
for (const item of originalArray) {
|
|
186
|
-
if (typeof item === "string") {
|
|
187
|
-
const convertedItem = await this.convertParameterEntities(
|
|
188
|
-
item,
|
|
189
|
-
entities,
|
|
190
|
-
preferences
|
|
191
|
-
);
|
|
192
|
-
convertedArray.push(convertedItem);
|
|
193
|
-
if (convertedItem !== item) {
|
|
194
|
-
arrayChanged = true;
|
|
195
|
-
this.logger.info("Parameter array item conversion applied:", {
|
|
196
|
-
toolName,
|
|
197
|
-
paramName,
|
|
198
|
-
original: item,
|
|
199
|
-
converted: convertedItem
|
|
200
|
-
});
|
|
201
|
-
}
|
|
202
|
-
} else {
|
|
203
|
-
convertedArray.push(item);
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
if (arrayChanged) {
|
|
207
|
-
processedParameters[paramName] = convertedArray;
|
|
208
|
-
hasChanges = true;
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
this.logger.info("Tool parameter preprocessing completed:", {
|
|
213
|
-
toolName,
|
|
214
|
-
originalParams: Object.keys(parameters),
|
|
215
|
-
hasChanges,
|
|
216
|
-
sessionId
|
|
217
|
-
});
|
|
218
|
-
return processedParameters;
|
|
219
|
-
} catch (error) {
|
|
220
|
-
this.logger.warn("Tool parameter preprocessing failed:", {
|
|
221
|
-
toolName,
|
|
222
|
-
error: error instanceof Error ? error.message : "Unknown error"
|
|
223
|
-
});
|
|
224
|
-
return parameters;
|
|
15
|
+
if (/inscription-cdn\/(0\.0\.\d+)/i.test(source)) {
|
|
16
|
+
return true;
|
|
225
17
|
}
|
|
18
|
+
if (/^content-ref:(0\.0\.\d+)$/i.test(source)) {
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
if (/^0\.0\.\d+$/.test(source)) {
|
|
22
|
+
const hasPreference = Boolean(
|
|
23
|
+
_context?.toolPreferences?.inscription === "hrl" || _context?.toolPreferences?.topic === "hrl"
|
|
24
|
+
);
|
|
25
|
+
return hasPreference;
|
|
26
|
+
}
|
|
27
|
+
return false;
|
|
226
28
|
}
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
29
|
+
async convert(source, context) {
|
|
30
|
+
const toolPrefs = context.toolPreferences;
|
|
31
|
+
const fallbackStandard = toolPrefs?.hrlStandard || toolPrefs?.inscriptionHrlStandard || "1";
|
|
32
|
+
const networkType = context.networkType || "testnet";
|
|
33
|
+
const resolver = new HRLResolver();
|
|
34
|
+
const cdnMatch = source.match(/inscription-cdn\/(0\.0\.\d+)/i);
|
|
35
|
+
if (cdnMatch && cdnMatch[1]) {
|
|
36
|
+
try {
|
|
37
|
+
const mirror = new HederaMirrorNode(networkType);
|
|
38
|
+
mirror.configureRetry({
|
|
39
|
+
maxRetries: 3,
|
|
40
|
+
maxDelayMs: 1e3
|
|
41
|
+
});
|
|
42
|
+
const resolved = await mirror.getTopicInfo(cdnMatch[1]);
|
|
43
|
+
const memo = resolved && resolved.memo || "";
|
|
44
|
+
const match = memo.match(/^hcs-(\d+)/);
|
|
45
|
+
const standard = match && match[1] ? match[1] : "1";
|
|
46
|
+
return `hcs://${standard}/${cdnMatch[1]}`;
|
|
47
|
+
} catch {
|
|
48
|
+
return `hcs://${fallbackStandard}/${cdnMatch[1]}`;
|
|
237
49
|
}
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
}
|
|
251
|
-
} else if (entity.entityType === EntityFormat.ACCOUNT_ID) {
|
|
252
|
-
if (preferences?.account === "accountId" || preferences?.supplyKey === "accountId" || preferences?.adminKey === "accountId") {
|
|
253
|
-
targetFormat = EntityFormat.ACCOUNT_ID;
|
|
254
|
-
} else if (preferences?.account === "alias") {
|
|
255
|
-
targetFormat = EntityFormat.ALIAS;
|
|
256
|
-
}
|
|
50
|
+
}
|
|
51
|
+
const contentRefMatch = source.match(/^content-ref:(0\.0\.\d+)$/i);
|
|
52
|
+
if (contentRefMatch && contentRefMatch[1]) {
|
|
53
|
+
try {
|
|
54
|
+
const resolved = await resolver.resolve(contentRefMatch[1], {
|
|
55
|
+
network: networkType
|
|
56
|
+
});
|
|
57
|
+
const parsed = resolver.parseHRL(`hcs://1/${resolved.topicId}`);
|
|
58
|
+
const std = parsed?.standard || fallbackStandard;
|
|
59
|
+
return `hcs://${std}/${resolved.topicId}`;
|
|
60
|
+
} catch {
|
|
61
|
+
return `hcs://${fallbackStandard}/${contentRefMatch[1]}`;
|
|
257
62
|
}
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
targetFormat,
|
|
270
|
-
context
|
|
271
|
-
);
|
|
272
|
-
if (containsEntityId) {
|
|
273
|
-
convertedValue = convertedValue.replace(
|
|
274
|
-
new RegExp(`\\b${entity.entityId.replace(/\./g, "\\.")}\\b`, "g"),
|
|
275
|
-
convertedEntityValue
|
|
276
|
-
);
|
|
277
|
-
}
|
|
278
|
-
if (containsEntityName) {
|
|
279
|
-
convertedValue = convertedValue.replace(
|
|
280
|
-
new RegExp(
|
|
281
|
-
`\\b${entity.entityName.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}\\b`,
|
|
282
|
-
"g"
|
|
283
|
-
),
|
|
284
|
-
convertedEntityValue
|
|
285
|
-
);
|
|
286
|
-
}
|
|
287
|
-
this.logger.info("Applied format conversion to parameter:", {
|
|
288
|
-
entityId: entity.entityId,
|
|
289
|
-
entityType: entity.entityType,
|
|
290
|
-
targetFormat,
|
|
291
|
-
convertedValue: convertedEntityValue,
|
|
292
|
-
parameterValue: convertedValue
|
|
293
|
-
});
|
|
294
|
-
} catch (error) {
|
|
295
|
-
this.logger.warn("Format conversion failed for parameter:", {
|
|
296
|
-
entityId: entity.entityId,
|
|
297
|
-
targetFormat,
|
|
298
|
-
error: error instanceof Error ? error.message : "Unknown error"
|
|
299
|
-
});
|
|
300
|
-
}
|
|
63
|
+
}
|
|
64
|
+
if (/^0\.0\.\d+$/.test(source)) {
|
|
65
|
+
try {
|
|
66
|
+
const resolved = await resolver.resolve(source, {
|
|
67
|
+
network: networkType
|
|
68
|
+
});
|
|
69
|
+
const parsed = resolver.parseHRL(`hcs://1/${resolved.topicId}`);
|
|
70
|
+
const std = parsed?.standard || fallbackStandard;
|
|
71
|
+
return `hcs://${std}/${resolved.topicId}`;
|
|
72
|
+
} catch {
|
|
73
|
+
return `hcs://${fallbackStandard}/${source}`;
|
|
301
74
|
}
|
|
302
75
|
}
|
|
303
|
-
return
|
|
76
|
+
return source;
|
|
304
77
|
}
|
|
305
|
-
}
|
|
78
|
+
};
|
|
79
|
+
_StringNormalizationConverter.standardCache = /* @__PURE__ */ new Map();
|
|
80
|
+
let StringNormalizationConverter = _StringNormalizationConverter;
|
|
306
81
|
export {
|
|
307
|
-
|
|
82
|
+
StringNormalizationConverter
|
|
308
83
|
};
|
|
309
84
|
//# sourceMappingURL=index29.js.map
|
package/dist/esm/index29.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index29.js","sources":["../../src/services/parameter-service.ts"],"sourcesContent":["import { Logger, type NetworkType } from '@hashgraphonline/standards-sdk';\nimport { EntityFormat, FormatConverterRegistry } from './formatters';\nimport type { EntityAssociation } from '../memory/smart-memory-manager';\n\n/**\n * Service for processing tool parameters and applying entity format conversions\n */\nexport class ParameterService {\n private logger: Logger;\n private formatConverterRegistry: FormatConverterRegistry;\n private networkType: NetworkType;\n\n constructor(\n formatConverterRegistry: FormatConverterRegistry,\n networkType: NetworkType\n ) {\n this.logger = new Logger({ module: 'ParameterService' });\n this.formatConverterRegistry = formatConverterRegistry;\n this.networkType = networkType;\n }\n\n /**\n * Unified preprocessing entrypoint (DRY):\n * - Optional AI-driven resolution via provided entityResolver\n * - Deterministic post-pass for safe format enforcement\n */\n async preprocessParameters(\n toolName: string,\n parameters: Record<string, unknown>,\n entities: EntityAssociation[] = [],\n options?: {\n entityResolver?: {\n resolveReferences: (\n message: string,\n entities: EntityAssociation[]\n ) => Promise<string>;\n };\n sessionId?: string;\n preferences?: Record<string, string>;\n }\n ): Promise<Record<string, unknown>> {\n const sessionId = options?.sessionId;\n const entityResolver = options?.entityResolver;\n const preferences = options?.preferences;\n\n let working: Record<string, unknown> = { ...parameters };\n\n if (entityResolver && entities.length > 0) {\n try {\n this.logger.info('AI-driven preprocessing phase', {\n toolName,\n entityCount: entities.length,\n sessionId,\n });\n\n const aiProcessed: Record<string, unknown> = { ...working };\n for (const [paramName, paramValue] of Object.entries(working)) {\n if (typeof paramValue === 'string') {\n const resolved = await entityResolver.resolveReferences(\n paramValue,\n entities\n );\n const converted = await this.convertParameterEntities(\n resolved,\n entities,\n preferences\n );\n aiProcessed[paramName] = converted;\n } else if (Array.isArray(paramValue)) {\n const out: unknown[] = [];\n for (const item of paramValue) {\n if (typeof item === 'string') {\n const resolved = await entityResolver.resolveReferences(\n item,\n entities\n );\n const converted = await this.convertParameterEntities(\n resolved,\n entities,\n preferences\n );\n out.push(converted);\n } else {\n out.push(item);\n }\n }\n aiProcessed[paramName] = out;\n }\n }\n working = aiProcessed;\n } catch (error) {\n const message = error instanceof Error ? error.message : 'unknown';\n this.logger.warn(\n 'AI phase failed; continuing with deterministic pass',\n {\n toolName,\n error: message,\n }\n );\n }\n }\n\n try {\n const processed: Record<string, unknown> = { ...working };\n for (const [paramName, paramValue] of Object.entries(working)) {\n if (typeof paramValue === 'string') {\n const converted = await this.convertParameterEntities(\n paramValue,\n entities,\n preferences\n );\n processed[paramName] = converted;\n } else if (Array.isArray(paramValue)) {\n const out: unknown[] = [];\n for (const item of paramValue) {\n if (typeof item === 'string') {\n const converted = await this.convertParameterEntities(\n item,\n entities,\n preferences\n );\n out.push(converted);\n } else {\n out.push(item);\n }\n }\n processed[paramName] = out;\n }\n }\n working = processed;\n } catch (e) {\n this.logger.warn('Deterministic post-pass failed', {\n toolName,\n error: e instanceof Error ? e.message : 'unknown',\n });\n }\n\n return working;\n }\n\n /**\n * Attach unified preprocessing callback directly to the agent.\n */\n attachToAgent(\n agent: unknown,\n deps?: {\n getSessionId?: () => string | null;\n getEntities?: (sessionId: string | null) => Promise<EntityAssociation[]>;\n entityResolver?: {\n resolveReferences: (\n message: string,\n entities: EntityAssociation[]\n ) => Promise<string>;\n };\n }\n ): void {\n const getSessionId = deps?.getSessionId ?? (() => null);\n const getEntities =\n deps?.getEntities ?? (async () => [] as EntityAssociation[]);\n const entityResolver = deps?.entityResolver;\n\n const maybe = agent as {\n setParameterPreprocessingCallback?: (\n callback: (\n toolName: string,\n parameters: Record<string, unknown>,\n toolContext?: {\n entityResolutionPreferences?: Record<string, string>;\n }\n ) => Promise<Record<string, unknown>>\n ) => void;\n getAgent?: () => unknown;\n };\n\n const attach = (target: unknown): boolean => {\n const t = target as {\n setParameterPreprocessingCallback?: (\n callback: (\n toolName: string,\n parameters: Record<string, unknown>,\n toolContext?: {\n entityResolutionPreferences?: Record<string, string>;\n }\n ) => Promise<Record<string, unknown>>\n ) => void;\n };\n if (typeof t.setParameterPreprocessingCallback === 'function') {\n t.setParameterPreprocessingCallback(\n async (\n toolName: string,\n parameters: Record<string, unknown>\n ): Promise<Record<string, unknown>> => {\n const sessionId = getSessionId();\n const entities = await getEntities(sessionId);\n const opts: {\n entityResolver?: {\n resolveReferences: (\n message: string,\n entities: EntityAssociation[]\n ) => Promise<string>;\n };\n sessionId?: string;\n preferences?: Record<string, string>;\n } = {};\n if (entityResolver) {\n opts.entityResolver = entityResolver;\n }\n if (sessionId) {\n opts.sessionId = sessionId;\n }\n return this.preprocessParameters(toolName, parameters, entities, opts);\n }\n );\n this.logger.info('Parameter preprocessing callback attached');\n return true;\n }\n return false;\n };\n\n if (!attach(agent) && typeof maybe.getAgent === 'function') {\n const underlying = maybe.getAgent();\n if (underlying) {\n void attach(underlying);\n }\n }\n }\n\n /**\n * Preprocess tool parameters by applying format conversions based on tool's entity resolution preferences\n */\n async preprocessToolParameters(\n toolName: string,\n parameters: Record<string, unknown>,\n entities?: EntityAssociation[],\n sessionId?: string\n ): Promise<Record<string, unknown>> {\n try {\n if (!entities || entities.length === 0) {\n this.logger.info(\n 'Tool parameter preprocessing skipped - no entities provided:',\n {\n toolName,\n originalParams: Object.keys(parameters),\n }\n );\n return parameters;\n }\n\n const processedParameters = { ...parameters };\n const preferences: Record<string, string> | undefined = undefined;\n let hasChanges = false;\n\n for (const [paramName, paramValue] of Object.entries(parameters)) {\n if (typeof paramValue === 'string') {\n const convertedValue = await this.convertParameterEntities(\n paramValue,\n entities,\n preferences\n );\n\n if (convertedValue !== paramValue) {\n processedParameters[paramName] = convertedValue;\n hasChanges = true;\n\n this.logger.info('Parameter entity conversion applied:', {\n toolName,\n paramName,\n original: paramValue,\n converted: convertedValue,\n });\n }\n } else if (Array.isArray(paramValue)) {\n const originalArray = paramValue as unknown[];\n const convertedArray: unknown[] = [];\n let arrayChanged = false;\n\n for (const item of originalArray) {\n if (typeof item === 'string') {\n const convertedItem = await this.convertParameterEntities(\n item,\n entities,\n preferences\n );\n\n convertedArray.push(convertedItem);\n\n if (convertedItem !== item) {\n arrayChanged = true;\n this.logger.info('Parameter array item conversion applied:', {\n toolName,\n paramName,\n original: item,\n converted: convertedItem,\n });\n }\n } else {\n convertedArray.push(item);\n }\n }\n\n if (arrayChanged) {\n processedParameters[paramName] = convertedArray;\n hasChanges = true;\n }\n }\n }\n\n this.logger.info('Tool parameter preprocessing completed:', {\n toolName,\n originalParams: Object.keys(parameters),\n hasChanges,\n sessionId,\n });\n\n return processedParameters;\n } catch (error) {\n this.logger.warn('Tool parameter preprocessing failed:', {\n toolName,\n error: error instanceof Error ? error.message : 'Unknown error',\n });\n return parameters;\n }\n }\n\n /**\n * Convert entity references in a parameter value based on tool preferences\n */\n async convertParameterEntities(\n parameterValue: string,\n entities: EntityAssociation[],\n preferences?: Record<string, string>\n ): Promise<string> {\n let convertedValue = parameterValue;\n\n for (const entity of entities) {\n const containsEntityId = convertedValue.includes(entity.entityId);\n const containsEntityName = convertedValue.includes(entity.entityName);\n\n if (!containsEntityId && !containsEntityName) {\n continue;\n }\n\n let targetFormat: EntityFormat | null = null;\n\n if (entity.entityType === EntityFormat.TOPIC_ID) {\n if (\n preferences?.inscription === 'hrl' ||\n preferences?.topic === 'hrl'\n ) {\n targetFormat = EntityFormat.HRL;\n } else if (\n preferences?.inscription === 'topicId' ||\n preferences?.topic === 'topicId'\n ) {\n targetFormat = EntityFormat.TOPIC_ID;\n }\n } else if (entity.entityType === EntityFormat.TOKEN_ID) {\n if (preferences?.token === 'tokenId') {\n targetFormat = EntityFormat.TOKEN_ID;\n } else if (preferences?.token === 'symbol') {\n targetFormat = EntityFormat.SYMBOL;\n }\n } else if (entity.entityType === EntityFormat.ACCOUNT_ID) {\n if (\n preferences?.account === 'accountId' ||\n preferences?.supplyKey === 'accountId' ||\n preferences?.adminKey === 'accountId'\n ) {\n targetFormat = EntityFormat.ACCOUNT_ID;\n } else if (preferences?.account === 'alias') {\n targetFormat = EntityFormat.ALIAS;\n }\n }\n\n if (targetFormat) {\n try {\n const context: {\n networkType?: string | NetworkType;\n sessionId?: string;\n toolPreferences?: Record<string, string>;\n } = {\n networkType: this.networkType,\n sessionId: 'unknown',\n };\n if (preferences) {\n context.toolPreferences = preferences;\n }\n const convertedEntityValue = await this.formatConverterRegistry.convertEntity(\n entity.entityId,\n targetFormat,\n context as never\n );\n\n if (containsEntityId) {\n convertedValue = convertedValue.replace(\n new RegExp(`\\\\b${entity.entityId.replace(/\\./g, '\\\\.')}\\\\b`, 'g'),\n convertedEntityValue\n );\n }\n\n if (containsEntityName) {\n convertedValue = convertedValue.replace(\n new RegExp(\n `\\\\b${entity.entityName.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')}\\\\b`,\n 'g'\n ),\n convertedEntityValue\n );\n }\n\n this.logger.info('Applied format conversion to parameter:', {\n entityId: entity.entityId,\n entityType: entity.entityType,\n targetFormat,\n convertedValue: convertedEntityValue,\n parameterValue: convertedValue,\n });\n } catch (error) {\n this.logger.warn('Format conversion failed for parameter:', {\n entityId: entity.entityId,\n targetFormat,\n error: error instanceof Error ? error.message : 'Unknown error',\n });\n }\n }\n }\n\n return convertedValue;\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index29.js","sources":["../../src/services/formatters/converters/string-normalization-converter.ts"],"sourcesContent":["import {\n EntityFormat,\n type FormatConverter,\n type ConversionContext,\n} from '../types';\nimport {\n HederaMirrorNode,\n HRLResolver,\n type NetworkType,\n} from '@hashgraphonline/standards-sdk';\n\n/**\n * Generic converter that normalizes various string entity references (cdn urls, content-ref, raw topic id)\n * into canonical HRL. It declares source ANY -> HRL and internally short-circuits if unsupported.\n */\nexport class StringNormalizationConverter\n implements FormatConverter<string, string>\n{\n sourceFormat = EntityFormat.ANY;\n targetFormat = EntityFormat.HRL;\n\n private static standardCache: Map<string, string> = new Map();\n\n canConvert(source: string, _context: ConversionContext): boolean {\n if (typeof source !== 'string') {\n return false;\n }\n if (/^hcs:\\/\\/\\d\\/0\\.0\\.\\d+$/i.test(source)) {\n return false;\n }\n if (/inscription-cdn\\/(0\\.0\\.\\d+)/i.test(source)) {\n return true;\n }\n if (/^content-ref:(0\\.0\\.\\d+)$/i.test(source)) {\n return true;\n }\n if (/^0\\.0\\.\\d+$/.test(source)) {\n const hasPreference = Boolean(\n (_context as unknown as { toolPreferences?: Record<string, string> })\n ?.toolPreferences?.inscription === 'hrl' ||\n (_context as unknown as { toolPreferences?: Record<string, string> })\n ?.toolPreferences?.topic === 'hrl'\n );\n return hasPreference;\n }\n return false;\n }\n\n async convert(source: string, context: ConversionContext): Promise<string> {\n const toolPrefs = (\n context as unknown as { toolPreferences?: Record<string, string> }\n ).toolPreferences;\n const fallbackStandard =\n toolPrefs?.hrlStandard || toolPrefs?.inscriptionHrlStandard || '1';\n const networkType = (context.networkType as string) || 'testnet';\n\n const resolver = new HRLResolver();\n\n const cdnMatch = source.match(/inscription-cdn\\/(0\\.0\\.\\d+)/i);\n if (cdnMatch && cdnMatch[1]) {\n try {\n const mirror = new HederaMirrorNode(networkType as NetworkType);\n mirror.configureRetry({\n maxRetries: 3,\n maxDelayMs: 1000,\n });\n const resolved = await mirror.getTopicInfo(cdnMatch[1]);\n const memo = (resolved && (resolved as { memo?: string }).memo) || '';\n const match = memo.match(/^hcs-(\\d+)/);\n const standard = match && match[1] ? match[1] : '1';\n return `hcs://${standard}/${cdnMatch[1]}`;\n } catch {\n return `hcs://${fallbackStandard}/${cdnMatch[1]}`;\n }\n }\n\n const contentRefMatch = source.match(/^content-ref:(0\\.0\\.\\d+)$/i);\n if (contentRefMatch && contentRefMatch[1]) {\n try {\n const resolved = await resolver.resolve(contentRefMatch[1], {\n network: networkType as NetworkType,\n });\n const parsed = resolver.parseHRL(`hcs://1/${resolved.topicId}`);\n const std = parsed?.standard || fallbackStandard;\n return `hcs://${std}/${resolved.topicId}`;\n } catch {\n return `hcs://${fallbackStandard}/${contentRefMatch[1]}`;\n }\n }\n\n if (/^0\\.0\\.\\d+$/.test(source)) {\n try {\n const resolved = await resolver.resolve(source, {\n network: networkType as NetworkType,\n });\n const parsed = resolver.parseHRL(`hcs://1/${resolved.topicId}`);\n const std = parsed?.standard || fallbackStandard;\n return `hcs://${std}/${resolved.topicId}`;\n } catch {\n return `hcs://${fallbackStandard}/${source}`;\n }\n }\n\n return source;\n }\n}\n"],"names":[],"mappings":";;AAeO,MAAM,gCAAN,MAAM,8BAEb;AAAA,EAFO,cAAA;AAGL,SAAA,eAAe,aAAa;AAC5B,SAAA,eAAe,aAAa;AAAA,EAAA;AAAA,EAI5B,WAAW,QAAgB,UAAsC;AAC/D,QAAI,OAAO,WAAW,UAAU;AAC9B,aAAO;AAAA,IACT;AACA,QAAI,2BAA2B,KAAK,MAAM,GAAG;AAC3C,aAAO;AAAA,IACT;AACA,QAAI,gCAAgC,KAAK,MAAM,GAAG;AAChD,aAAO;AAAA,IACT;AACA,QAAI,6BAA6B,KAAK,MAAM,GAAG;AAC7C,aAAO;AAAA,IACT;AACA,QAAI,cAAc,KAAK,MAAM,GAAG;AAC9B,YAAM,gBAAgB;AAAA,QACnB,UACG,iBAAiB,gBAAgB,SAClC,UACG,iBAAiB,UAAU;AAAA,MAAA;AAEnC,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,QAAQ,QAAgB,SAA6C;AACzE,UAAM,YACJ,QACA;AACF,UAAM,mBACJ,WAAW,eAAe,WAAW,0BAA0B;AACjE,UAAM,cAAe,QAAQ,eAA0B;AAEvD,UAAM,WAAW,IAAI,YAAA;AAErB,UAAM,WAAW,OAAO,MAAM,+BAA+B;AAC7D,QAAI,YAAY,SAAS,CAAC,GAAG;AAC3B,UAAI;AACF,cAAM,SAAS,IAAI,iBAAiB,WAA0B;AAC9D,eAAO,eAAe;AAAA,UACpB,YAAY;AAAA,UACZ,YAAY;AAAA,QAAA,CACb;AACD,cAAM,WAAW,MAAM,OAAO,aAAa,SAAS,CAAC,CAAC;AACtD,cAAM,OAAQ,YAAa,SAA+B,QAAS;AACnE,cAAM,QAAQ,KAAK,MAAM,YAAY;AACrC,cAAM,WAAW,SAAS,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI;AAChD,eAAO,SAAS,QAAQ,IAAI,SAAS,CAAC,CAAC;AAAA,MACzC,QAAQ;AACN,eAAO,SAAS,gBAAgB,IAAI,SAAS,CAAC,CAAC;AAAA,MACjD;AAAA,IACF;AAEA,UAAM,kBAAkB,OAAO,MAAM,4BAA4B;AACjE,QAAI,mBAAmB,gBAAgB,CAAC,GAAG;AACzC,UAAI;AACF,cAAM,WAAW,MAAM,SAAS,QAAQ,gBAAgB,CAAC,GAAG;AAAA,UAC1D,SAAS;AAAA,QAAA,CACV;AACD,cAAM,SAAS,SAAS,SAAS,WAAW,SAAS,OAAO,EAAE;AAC9D,cAAM,MAAM,QAAQ,YAAY;AAChC,eAAO,SAAS,GAAG,IAAI,SAAS,OAAO;AAAA,MACzC,QAAQ;AACN,eAAO,SAAS,gBAAgB,IAAI,gBAAgB,CAAC,CAAC;AAAA,MACxD;AAAA,IACF;AAEA,QAAI,cAAc,KAAK,MAAM,GAAG;AAC9B,UAAI;AACF,cAAM,WAAW,MAAM,SAAS,QAAQ,QAAQ;AAAA,UAC9C,SAAS;AAAA,QAAA,CACV;AACD,cAAM,SAAS,SAAS,SAAS,WAAW,SAAS,OAAO,EAAE;AAC9D,cAAM,MAAM,QAAQ,YAAY;AAChC,eAAO,SAAS,GAAG,IAAI,SAAS,OAAO;AAAA,MACzC,QAAQ;AACN,eAAO,SAAS,gBAAgB,IAAI,MAAM;AAAA,MAC5C;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AACF;AApFE,8BAAe,oCAAyC,IAAA;AANnD,IAAM,+BAAN;"}
|