@hashgraphonline/conversational-agent 0.2.103 → 0.2.105
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/README.md +64 -27
- package/cli/dist/CLIApp.d.ts +11 -0
- package/cli/dist/CLIApp.d.ts.map +1 -0
- package/cli/dist/CLIApp.js +128 -0
- package/cli/dist/CLIApp.js.map +1 -0
- package/cli/dist/LocalConversationalAgent.d.ts +37 -0
- package/cli/dist/LocalConversationalAgent.js +58 -0
- package/cli/dist/app.d.ts +18 -0
- package/cli/dist/app.d.ts.map +1 -0
- package/cli/dist/app.js +14 -0
- package/cli/dist/app.js.map +1 -0
- package/cli/dist/cli.d.ts +3 -0
- package/cli/dist/cli.d.ts.map +1 -0
- package/cli/dist/cli.js +87 -0
- package/cli/dist/cli.js.map +1 -0
- package/cli/dist/components/AppContainer.d.ts +16 -0
- package/cli/dist/components/AppContainer.js +24 -0
- package/cli/dist/components/AppScreens.d.ts +2 -0
- package/cli/dist/components/AppScreens.js +259 -0
- package/cli/dist/components/ChatScreen.d.ts +21 -0
- package/cli/dist/components/ChatScreen.d.ts.map +1 -0
- package/cli/dist/components/ChatScreen.js +40 -0
- package/cli/dist/components/ChatScreen.js.map +1 -0
- package/cli/dist/components/DebugLoadingScreen.d.ts +5 -0
- package/cli/dist/components/DebugLoadingScreen.js +31 -0
- package/cli/dist/components/LoadingScreen.d.ts +3 -0
- package/cli/dist/components/LoadingScreen.d.ts.map +1 -0
- package/cli/dist/components/LoadingScreen.js +17 -0
- package/cli/dist/components/LoadingScreen.js.map +1 -0
- package/cli/dist/components/LoadingScreenDebug.d.ts +5 -0
- package/cli/dist/components/LoadingScreenDebug.js +27 -0
- package/cli/dist/components/MCPConfigScreen.d.ts +28 -0
- package/cli/dist/components/MCPConfigScreen.d.ts.map +1 -0
- package/cli/dist/components/MCPConfigScreen.js +186 -0
- package/cli/dist/components/MCPConfigScreen.js.map +1 -0
- package/cli/dist/components/ScreenRouter.d.ts +13 -0
- package/cli/dist/components/ScreenRouter.d.ts.map +1 -0
- package/cli/dist/components/ScreenRouter.js +23 -0
- package/cli/dist/components/ScreenRouter.js.map +1 -0
- package/cli/dist/components/SetupScreen.d.ts +16 -0
- package/cli/dist/components/SetupScreen.d.ts.map +1 -0
- package/cli/dist/components/SetupScreen.js +67 -0
- package/cli/dist/components/SetupScreen.js.map +1 -0
- package/cli/dist/components/SingleLoadingScreen.d.ts +5 -0
- package/cli/dist/components/SingleLoadingScreen.js +27 -0
- package/cli/dist/components/StatusBadge.d.ts +10 -0
- package/cli/dist/components/StatusBadge.d.ts.map +1 -0
- package/cli/dist/components/StatusBadge.js +24 -0
- package/cli/dist/components/StatusBadge.js.map +1 -0
- package/cli/dist/components/TerminalWindow.d.ts +9 -0
- package/cli/dist/components/TerminalWindow.d.ts.map +1 -0
- package/cli/dist/components/TerminalWindow.js +19 -0
- package/cli/dist/components/TerminalWindow.js.map +1 -0
- package/cli/dist/components/WelcomeScreen.d.ts +12 -0
- package/cli/dist/components/WelcomeScreen.d.ts.map +1 -0
- package/cli/dist/components/WelcomeScreen.js +47 -0
- package/cli/dist/components/WelcomeScreen.js.map +1 -0
- package/cli/dist/context/AppContext.d.ts +68 -0
- package/cli/dist/context/AppContext.js +363 -0
- package/cli/dist/headless-runner.d.ts +17 -0
- package/cli/dist/headless-runner.d.ts.map +1 -0
- package/cli/dist/headless-runner.js +128 -0
- package/cli/dist/headless-runner.js.map +1 -0
- package/cli/dist/hooks/useInitializeAgent.d.ts +19 -0
- package/cli/dist/hooks/useInitializeAgent.d.ts.map +1 -0
- package/cli/dist/hooks/useInitializeAgent.js +29 -0
- package/cli/dist/hooks/useInitializeAgent.js.map +1 -0
- package/cli/dist/hooks/useStableState.d.ts +38 -0
- package/cli/dist/hooks/useStableState.d.ts.map +1 -0
- package/cli/dist/hooks/useStableState.js +69 -0
- package/cli/dist/hooks/useStableState.js.map +1 -0
- package/cli/dist/managers/AgentManager.d.ts +58 -0
- package/cli/dist/managers/AgentManager.d.ts.map +1 -0
- package/cli/dist/managers/AgentManager.js +121 -0
- package/cli/dist/managers/AgentManager.js.map +1 -0
- package/cli/dist/managers/ConfigManager.d.ts +54 -0
- package/cli/dist/managers/ConfigManager.d.ts.map +1 -0
- package/cli/dist/managers/ConfigManager.js +188 -0
- package/cli/dist/managers/ConfigManager.js.map +1 -0
- package/cli/dist/types.d.ts +52 -0
- package/cli/dist/types.d.ts.map +1 -0
- package/cli/dist/types.js +34 -0
- package/cli/dist/types.js.map +1 -0
- package/dist/cjs/config/system-message.d.ts +1 -1
- package/dist/cjs/conversational-agent.d.ts +30 -2
- package/dist/cjs/core/tool-registry.d.ts +29 -0
- package/dist/cjs/forms/field-guidance-registry.d.ts +33 -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/mcp/types.d.ts +14 -3
- package/dist/cjs/plugins/index.d.ts +1 -0
- package/dist/cjs/plugins/inscribe/InscribePlugin.d.ts +1 -0
- package/dist/cjs/plugins/web-browser/WebBrowserPlugin.d.ts +14 -0
- package/dist/cjs/runtime/wallet-bridge.d.ts +26 -0
- package/dist/cjs/services/attachment-processor.d.ts +1 -2
- package/dist/cjs/services/content-store-manager.d.ts +1 -1
- package/dist/cjs/services/formatters/types.d.ts +3 -1
- package/dist/cjs/services/index.d.ts +1 -1
- package/dist/cjs/signers/browser-signer.d.ts +32 -0
- package/dist/esm/index.js +3 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index10.js +13 -5
- package/dist/esm/index10.js.map +1 -1
- package/dist/esm/index13.js +157 -179
- package/dist/esm/index13.js.map +1 -1
- package/dist/esm/index15.js +9 -4
- package/dist/esm/index15.js.map +1 -1
- package/dist/esm/index18.js.map +1 -1
- package/dist/esm/index2.js +25 -27
- package/dist/esm/index2.js.map +1 -1
- package/dist/esm/index21.js +1 -1
- package/dist/esm/index21.js.map +1 -1
- package/dist/esm/index23.js +3 -3
- package/dist/esm/index24.js.map +1 -1
- package/dist/esm/index26.js.map +1 -1
- package/dist/esm/index3.js.map +1 -1
- package/dist/esm/index30.js.map +1 -1
- package/dist/esm/index31.js +6 -3
- package/dist/esm/index31.js.map +1 -1
- package/dist/esm/index33.js +5 -5
- package/dist/esm/index33.js.map +1 -1
- package/dist/esm/index36.js +8 -45
- package/dist/esm/index36.js.map +1 -1
- package/dist/esm/index37.js +41 -102
- package/dist/esm/index37.js.map +1 -1
- package/dist/esm/index38.js +107 -21
- package/dist/esm/index38.js.map +1 -1
- package/dist/esm/index39.js +66 -12
- package/dist/esm/index39.js.map +1 -1
- package/dist/esm/index4.js +43 -0
- package/dist/esm/index4.js.map +1 -1
- package/dist/esm/index40.js +79 -7
- package/dist/esm/index40.js.map +1 -1
- package/dist/esm/index41.js +21 -5
- package/dist/esm/index41.js.map +1 -1
- package/dist/esm/index42.js +5 -255
- package/dist/esm/index42.js.map +1 -1
- package/dist/esm/index43.js +12 -184
- package/dist/esm/index43.js.map +1 -1
- package/dist/esm/index44.js +309 -79
- package/dist/esm/index44.js.map +1 -1
- package/dist/esm/index45.js +181 -24
- package/dist/esm/index45.js.map +1 -1
- package/dist/esm/index46.js +30 -0
- package/dist/esm/index46.js.map +1 -0
- package/dist/esm/index47.js +10 -0
- package/dist/esm/index47.js.map +1 -0
- package/dist/esm/index48.js +98 -0
- package/dist/esm/index48.js.map +1 -0
- package/dist/esm/index5.js +2 -2
- package/dist/esm/index6.js +231 -52
- package/dist/esm/index6.js.map +1 -1
- package/dist/types/config/system-message.d.ts +1 -1
- package/dist/types/conversational-agent.d.ts +30 -2
- package/dist/types/core/tool-registry.d.ts +29 -0
- package/dist/types/forms/field-guidance-registry.d.ts +33 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/mcp/types.d.ts +14 -3
- package/dist/types/plugins/index.d.ts +1 -0
- package/dist/types/plugins/inscribe/InscribePlugin.d.ts +1 -0
- package/dist/types/plugins/web-browser/WebBrowserPlugin.d.ts +14 -0
- package/dist/types/runtime/wallet-bridge.d.ts +26 -0
- package/dist/types/services/attachment-processor.d.ts +1 -2
- package/dist/types/services/content-store-manager.d.ts +1 -1
- package/dist/types/services/formatters/types.d.ts +3 -1
- package/dist/types/services/index.d.ts +1 -1
- package/dist/types/signers/browser-signer.d.ts +32 -0
- package/package.json +40 -37
- package/src/config/system-message.ts +3 -3
- package/src/conversational-agent.ts +356 -61
- package/src/core/tool-registry.ts +85 -0
- package/src/forms/field-guidance-registry.ts +213 -188
- package/src/forms/form-generator.ts +28 -12
- package/src/index.ts +1 -0
- package/src/langchain/form-aware-agent-executor.ts +6 -6
- package/src/langchain/langchain-agent.ts +1 -1
- package/src/mcp/mcp-client-manager.ts +12 -5
- package/src/mcp/types.ts +15 -3
- package/src/memory/content-storage.ts +19 -6
- package/src/memory/smart-memory-manager.ts +0 -1
- package/src/plugins/hbar/AccountBuilder.ts +16 -16
- package/src/plugins/hcs-10/HCS10Plugin.ts +38 -38
- package/src/plugins/hcs-2/HCS2Plugin.ts +2 -2
- package/src/plugins/index.ts +2 -1
- package/src/plugins/inscribe/InscribePlugin.ts +46 -2
- package/src/plugins/web-browser/WebBrowserPlugin.ts +128 -0
- package/src/runtime/wallet-bridge.ts +46 -0
- package/src/services/attachment-processor.ts +1 -1
- package/src/services/content-store-manager.ts +1 -1
- package/src/services/formatters/types.ts +3 -1
- package/src/services/index.ts +1 -1
- package/src/signers/browser-signer.ts +111 -0
- package/cli/readme.md +0 -181
package/dist/esm/index40.js
CHANGED
|
@@ -1,10 +1,82 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
};
|
|
1
|
+
import { BasePlugin, BaseHederaQueryTool } from "hedera-agent-kit";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
const PageSnapshotSchema = z.object({
|
|
4
|
+
url: z.string().url(),
|
|
5
|
+
maxCharacters: z.number().int().min(256, "Minimum length is 256 characters").max(8e3, "Maximum length is 8000 characters").optional().default(3e3)
|
|
6
|
+
});
|
|
7
|
+
class WebPageSnapshotTool extends BaseHederaQueryTool {
|
|
8
|
+
constructor(params) {
|
|
9
|
+
const { fetchImpl, ...rest } = params;
|
|
10
|
+
super(rest);
|
|
11
|
+
this.name = "web_page_snapshot";
|
|
12
|
+
this.description = "Fetches the visible text content of a web page for analysis.";
|
|
13
|
+
this.namespace = "browser";
|
|
14
|
+
this.specificInputSchema = PageSnapshotSchema;
|
|
15
|
+
this.fetchImpl = fetchImpl ?? fetch;
|
|
16
|
+
}
|
|
17
|
+
async executeQuery(input) {
|
|
18
|
+
const maxChars = input.maxCharacters ?? 3e3;
|
|
19
|
+
try {
|
|
20
|
+
const response = await this.fetchImpl(input.url, {
|
|
21
|
+
redirect: "follow"
|
|
22
|
+
});
|
|
23
|
+
if (!response.ok) {
|
|
24
|
+
return `Failed to load ${input.url}: HTTP ${response.status}`;
|
|
25
|
+
}
|
|
26
|
+
const html = await response.text();
|
|
27
|
+
const text = this.normalizeHtml(html);
|
|
28
|
+
if (!text) {
|
|
29
|
+
return "The fetched page did not contain readable text.";
|
|
30
|
+
}
|
|
31
|
+
return text.length > maxChars ? `${text.slice(0, maxChars)}…` : text;
|
|
32
|
+
} catch (error) {
|
|
33
|
+
this.logger.error("WebPageSnapshotTool failed", error);
|
|
34
|
+
return `Failed to fetch content for ${input.url}: ${error instanceof Error ? error.message : String(error)}`;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
normalizeHtml(html) {
|
|
38
|
+
const withoutScripts = html.replace(/<script[\s\S]*?<\/script>/gi, " ").replace(/<style[\s\S]*?<\/style>/gi, " ").replace(/<!--([\s\S]*?)-->/g, " ");
|
|
39
|
+
const stripped = withoutScripts.replace(/<[^>]+>/g, " ");
|
|
40
|
+
const decoded = stripped.replace(/ /gi, " ").replace(/&/gi, "&").replace(/</gi, "<").replace(/>/gi, ">").replace(/"/gi, '"').replace(/'/gi, "'");
|
|
41
|
+
return decoded.replace(/\s+/g, " ").trim();
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
class WebBrowserPlugin extends BasePlugin {
|
|
45
|
+
constructor() {
|
|
46
|
+
super(...arguments);
|
|
47
|
+
this.id = "web-browser";
|
|
48
|
+
this.name = "Web Browser Plugin";
|
|
49
|
+
this.description = "Provides tools for fetching live web page content to enrich assistant understanding.";
|
|
50
|
+
this.version = "0.1.0";
|
|
51
|
+
this.author = "Hashgraph Online";
|
|
52
|
+
this.namespace = "browser";
|
|
53
|
+
this.tools = [];
|
|
54
|
+
}
|
|
55
|
+
async initialize(context) {
|
|
56
|
+
await super.initialize(context);
|
|
57
|
+
const hederaKit = context.config.hederaKit;
|
|
58
|
+
if (!hederaKit) {
|
|
59
|
+
this.context.logger.warn(
|
|
60
|
+
"WebBrowserPlugin skipped because HederaAgentKit was not present in plugin context."
|
|
61
|
+
);
|
|
62
|
+
this.tools = [];
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
const tool = new WebPageSnapshotTool({
|
|
66
|
+
hederaKit,
|
|
67
|
+
logger: this.context.logger
|
|
68
|
+
});
|
|
69
|
+
this.tools = [tool];
|
|
70
|
+
this.context.logger.info("Web Browser Plugin initialized with snapshot tool");
|
|
71
|
+
}
|
|
72
|
+
getTools() {
|
|
73
|
+
return this.tools;
|
|
74
|
+
}
|
|
75
|
+
async cleanup() {
|
|
76
|
+
this.tools = [];
|
|
77
|
+
}
|
|
78
|
+
}
|
|
7
79
|
export {
|
|
8
|
-
|
|
80
|
+
WebBrowserPlugin
|
|
9
81
|
};
|
|
10
82
|
//# sourceMappingURL=index40.js.map
|
package/dist/esm/index40.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index40.js","sources":["../../src/
|
|
1
|
+
{"version":3,"file":"index40.js","sources":["../../src/plugins/web-browser/WebBrowserPlugin.ts"],"sourcesContent":["import {\n BasePlugin,\n type GenericPluginContext,\n BaseHederaQueryTool,\n type HederaAgentKit,\n type HederaTool,\n} from 'hedera-agent-kit';\nimport { z } from 'zod';\n\nconst PageSnapshotSchema = z.object({\n url: z.string().url(),\n maxCharacters: z\n .number()\n .int()\n .min(256, 'Minimum length is 256 characters')\n .max(8000, 'Maximum length is 8000 characters')\n .optional()\n .default(3000),\n});\n\nclass WebPageSnapshotTool extends BaseHederaQueryTool<typeof PageSnapshotSchema> {\n name = 'web_page_snapshot';\n description = 'Fetches the visible text content of a web page for analysis.';\n namespace = 'browser';\n specificInputSchema = PageSnapshotSchema;\n\n constructor(params: {\n hederaKit: HederaAgentKit;\n logger?: GenericPluginContext['logger'];\n fetchImpl?: typeof fetch;\n }) {\n const { fetchImpl, ...rest } = params;\n super(rest);\n this.fetchImpl = fetchImpl ?? fetch;\n }\n\n private readonly fetchImpl: typeof fetch;\n\n protected async executeQuery(\n input: z.infer<typeof PageSnapshotSchema>\n ): Promise<string> {\n const maxChars = input.maxCharacters ?? 3000;\n\n try {\n const response = await this.fetchImpl(input.url, {\n redirect: 'follow',\n });\n\n if (!response.ok) {\n return `Failed to load ${input.url}: HTTP ${response.status}`;\n }\n\n const html = await response.text();\n const text = this.normalizeHtml(html);\n\n if (!text) {\n return 'The fetched page did not contain readable text.';\n }\n\n return text.length > maxChars ? `${text.slice(0, maxChars)}…` : text;\n } catch (error) {\n this.logger.error('WebPageSnapshotTool failed', error);\n return `Failed to fetch content for ${input.url}: ${\n error instanceof Error ? error.message : String(error)\n }`;\n }\n }\n\n private normalizeHtml(html: string): string {\n const withoutScripts = html\n .replace(/<script[\\s\\S]*?<\\/script>/gi, ' ')\n .replace(/<style[\\s\\S]*?<\\/style>/gi, ' ')\n .replace(/<!--([\\s\\S]*?)-->/g, ' ');\n\n const stripped = withoutScripts.replace(/<[^>]+>/g, ' ');\n const decoded = stripped\n .replace(/ /gi, ' ')\n .replace(/&/gi, '&')\n .replace(/</gi, '<')\n .replace(/>/gi, '>')\n .replace(/"/gi, '\"')\n .replace(/'/gi, \"'\");\n\n return decoded.replace(/\\s+/g, ' ').trim();\n }\n}\n\nexport class WebBrowserPlugin extends BasePlugin<GenericPluginContext> {\n id = 'web-browser';\n name = 'Web Browser Plugin';\n description =\n 'Provides tools for fetching live web page content to enrich assistant understanding.';\n version = '0.1.0';\n author = 'Hashgraph Online';\n namespace = 'browser';\n\n private tools: HederaTool[] = [];\n\n override async initialize(context: GenericPluginContext): Promise<void> {\n await super.initialize(context);\n\n const hederaKit = context.config.hederaKit as HederaAgentKit | undefined;\n\n if (!hederaKit) {\n this.context.logger.warn(\n 'WebBrowserPlugin skipped because HederaAgentKit was not present in plugin context.'\n );\n this.tools = [];\n return;\n }\n\n const tool = new WebPageSnapshotTool({\n hederaKit,\n logger: this.context.logger,\n });\n\n this.tools = [tool];\n this.context.logger.info('Web Browser Plugin initialized with snapshot tool');\n }\n\n override getTools(): HederaTool[] {\n return this.tools;\n }\n\n override async cleanup(): Promise<void> {\n this.tools = [];\n }\n}\n"],"names":[],"mappings":";;AASA,MAAM,qBAAqB,EAAE,OAAO;AAAA,EAClC,KAAK,EAAE,OAAA,EAAS,IAAA;AAAA,EAChB,eAAe,EACZ,OAAA,EACA,IAAA,EACA,IAAI,KAAK,kCAAkC,EAC3C,IAAI,KAAM,mCAAmC,EAC7C,SAAA,EACA,QAAQ,GAAI;AACjB,CAAC;AAED,MAAM,4BAA4B,oBAA+C;AAAA,EAM/E,YAAY,QAIT;AACD,UAAM,EAAE,WAAW,GAAG,KAAA,IAAS;AAC/B,UAAM,IAAI;AAXZ,SAAA,OAAO;AACP,SAAA,cAAc;AACd,SAAA,YAAY;AACZ,SAAA,sBAAsB;AASpB,SAAK,YAAY,aAAa;AAAA,EAChC;AAAA,EAIA,MAAgB,aACd,OACiB;AACjB,UAAM,WAAW,MAAM,iBAAiB;AAExC,QAAI;AACF,YAAM,WAAW,MAAM,KAAK,UAAU,MAAM,KAAK;AAAA,QAC/C,UAAU;AAAA,MAAA,CACX;AAED,UAAI,CAAC,SAAS,IAAI;AAChB,eAAO,kBAAkB,MAAM,GAAG,UAAU,SAAS,MAAM;AAAA,MAC7D;AAEA,YAAM,OAAO,MAAM,SAAS,KAAA;AAC5B,YAAM,OAAO,KAAK,cAAc,IAAI;AAEpC,UAAI,CAAC,MAAM;AACT,eAAO;AAAA,MACT;AAEA,aAAO,KAAK,SAAS,WAAW,GAAG,KAAK,MAAM,GAAG,QAAQ,CAAC,MAAM;AAAA,IAClE,SAAS,OAAO;AACd,WAAK,OAAO,MAAM,8BAA8B,KAAK;AACrD,aAAO,+BAA+B,MAAM,GAAG,KAC7C,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CACvD;AAAA,IACF;AAAA,EACF;AAAA,EAEQ,cAAc,MAAsB;AAC1C,UAAM,iBAAiB,KACpB,QAAQ,+BAA+B,GAAG,EAC1C,QAAQ,6BAA6B,GAAG,EACxC,QAAQ,sBAAsB,GAAG;AAEpC,UAAM,WAAW,eAAe,QAAQ,YAAY,GAAG;AACvD,UAAM,UAAU,SACb,QAAQ,YAAY,GAAG,EACvB,QAAQ,WAAW,GAAG,EACtB,QAAQ,UAAU,GAAG,EACrB,QAAQ,UAAU,GAAG,EACrB,QAAQ,YAAY,GAAG,EACvB,QAAQ,WAAW,GAAG;AAEzB,WAAO,QAAQ,QAAQ,QAAQ,GAAG,EAAE,KAAA;AAAA,EACtC;AACF;AAEO,MAAM,yBAAyB,WAAiC;AAAA,EAAhE,cAAA;AAAA,UAAA,GAAA,SAAA;AACL,SAAA,KAAK;AACL,SAAA,OAAO;AACP,SAAA,cACE;AACF,SAAA,UAAU;AACV,SAAA,SAAS;AACT,SAAA,YAAY;AAEZ,SAAQ,QAAsB,CAAA;AAAA,EAAC;AAAA,EAE/B,MAAe,WAAW,SAA8C;AACtE,UAAM,MAAM,WAAW,OAAO;AAE9B,UAAM,YAAY,QAAQ,OAAO;AAEjC,QAAI,CAAC,WAAW;AACd,WAAK,QAAQ,OAAO;AAAA,QAClB;AAAA,MAAA;AAEF,WAAK,QAAQ,CAAA;AACb;AAAA,IACF;AAEA,UAAM,OAAO,IAAI,oBAAoB;AAAA,MACnC;AAAA,MACA,QAAQ,KAAK,QAAQ;AAAA,IAAA,CACtB;AAED,SAAK,QAAQ,CAAC,IAAI;AAClB,SAAK,QAAQ,OAAO,KAAK,mDAAmD;AAAA,EAC9E;AAAA,EAES,WAAyB;AAChC,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAe,UAAyB;AACtC,SAAK,QAAQ,CAAA;AAAA,EACf;AACF;"}
|
package/dist/esm/index41.js
CHANGED
|
@@ -1,8 +1,24 @@
|
|
|
1
|
-
const
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
const getSystemMessage = (accountId) => `You are a helpful assistant managing Hashgraph Online HCS-10 connections, messages, HCS-2 registries, content inscription, and Hedera Hashgraph operations.
|
|
2
|
+
|
|
3
|
+
You have access to tools for:
|
|
4
|
+
- HCS-10: registering agents, finding registered agents, initiating connections, listing active connections, sending messages over connections, and checking for new messages
|
|
5
|
+
- HCS-2: creating registries, registering entries, updating entries, deleting entries, migrating registries, and querying registry contents
|
|
6
|
+
- Inscription: inscribing content from URLs, files, or buffers, creating Hashinal NFTs, and retrieving inscriptions
|
|
7
|
+
- Hedera Token Service (HTS): creating tokens, transferring tokens, airdropping tokens, and managing token operations
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
*** IMPORTANT CONTEXT ***
|
|
11
|
+
You are currently operating as agent: ${accountId || "unknown"} on the Hedera Hashgraph
|
|
12
|
+
When users ask about "my profile", "my account", "my connections", etc., use this account ID: ${accountId || "unknown"}
|
|
13
|
+
|
|
14
|
+
*** CRITICAL ENTITY HANDLING RULES ***
|
|
15
|
+
- When users refer to entities (tokens, topics, accounts) with pronouns like "it", "that", "the token/topic", etc., ALWAYS use the most recently created entity of that type
|
|
16
|
+
- Entity IDs look like "0.0.XXXXXX" and are stored in memory after creation
|
|
17
|
+
- NEVER use example or placeholder IDs like "0.0.123456" - always use actual created entity IDs
|
|
18
|
+
- Account ID ${accountId} is NOT a token - tokens and accounts are different entities
|
|
19
|
+
|
|
20
|
+
Remember the connection numbers when listing connections, as users might refer to them.`;
|
|
5
21
|
export {
|
|
6
|
-
|
|
22
|
+
getSystemMessage
|
|
7
23
|
};
|
|
8
24
|
//# sourceMappingURL=index41.js.map
|
package/dist/esm/index41.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index41.js","sources":["../../src/
|
|
1
|
+
{"version":3,"file":"index41.js","sources":["../../src/config/system-message.ts"],"sourcesContent":["export const getSystemMessage = (\n accountId?: string\n): string => `You are a helpful assistant managing Hashgraph Online HCS-10 connections, messages, HCS-2 registries, content inscription, and Hedera Hashgraph operations.\n\nYou have access to tools for:\n- HCS-10: registering agents, finding registered agents, initiating connections, listing active connections, sending messages over connections, and checking for new messages\n- HCS-2: creating registries, registering entries, updating entries, deleting entries, migrating registries, and querying registry contents\n- Inscription: inscribing content from URLs, files, or buffers, creating Hashinal NFTs, and retrieving inscriptions\n- Hedera Token Service (HTS): creating tokens, transferring tokens, airdropping tokens, and managing token operations\n\n\n*** IMPORTANT CONTEXT ***\nYou are currently operating as agent: ${accountId || 'unknown'} on the Hedera Hashgraph\nWhen users ask about \"my profile\", \"my account\", \"my connections\", etc., use this account ID: ${accountId || 'unknown'}\n\n*** CRITICAL ENTITY HANDLING RULES ***\n- When users refer to entities (tokens, topics, accounts) with pronouns like \"it\", \"that\", \"the token/topic\", etc., ALWAYS use the most recently created entity of that type\n- Entity IDs look like \"0.0.XXXXXX\" and are stored in memory after creation\n- NEVER use example or placeholder IDs like \"0.0.123456\" - always use actual created entity IDs\n- Account ID ${accountId} is NOT a token - tokens and accounts are different entities\n\n Remember the connection numbers when listing connections, as users might refer to them.`;\n"],"names":[],"mappings":"AAAO,MAAM,mBAAmB,CAC9B,cACW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wCAU2B,aAAa,SAAS;AAAA,gGACkC,aAAa,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAMvG,SAAS;AAAA;AAAA;"}
|
package/dist/esm/index42.js
CHANGED
|
@@ -1,258 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import { isFormValidatable } from "@hashgraphonline/standards-agent-kit";
|
|
6
|
-
class ToolRegistry {
|
|
7
|
-
constructor(logger) {
|
|
8
|
-
this.tools = /* @__PURE__ */ new Map();
|
|
9
|
-
this.formGenerator = new FormGenerator();
|
|
10
|
-
this.logger = logger || new Logger({ module: "ToolRegistry" });
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Register a tool with the registry
|
|
14
|
-
*/
|
|
15
|
-
registerTool(tool, options = {}) {
|
|
16
|
-
const capabilities = this.analyzeToolCapabilities(tool);
|
|
17
|
-
const metadata = {
|
|
18
|
-
name: tool.name,
|
|
19
|
-
version: "1.0.0",
|
|
20
|
-
category: options.metadata?.category || "core",
|
|
21
|
-
description: tool.description,
|
|
22
|
-
capabilities,
|
|
23
|
-
dependencies: [],
|
|
24
|
-
schema: tool.schema,
|
|
25
|
-
...options.metadata
|
|
26
|
-
};
|
|
27
|
-
try {
|
|
28
|
-
if (!metadata.entityResolutionPreferences) {
|
|
29
|
-
const schemaRecord = tool.schema;
|
|
30
|
-
const rawPrefs = schemaRecord && typeof schemaRecord === "object" && schemaRecord["_entityResolutionPreferences"];
|
|
31
|
-
if (rawPrefs && typeof rawPrefs === "object") {
|
|
32
|
-
metadata.entityResolutionPreferences = rawPrefs;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
} catch {
|
|
36
|
-
}
|
|
37
|
-
try {
|
|
38
|
-
const schemaRecord = tool.schema;
|
|
39
|
-
const schemaDef = schemaRecord && schemaRecord._def;
|
|
40
|
-
if (schemaDef?.typeName === "ZodObject") {
|
|
41
|
-
const shape = typeof schemaDef.shape === "function" ? schemaDef.shape?.() || {} : schemaDef.shape || {};
|
|
42
|
-
const metadataField = shape["metadata"];
|
|
43
|
-
const isStringArray = !!metadataField && metadataField._def?.typeName === "ZodArray" && metadataField._def?.type?._def?.typeName === "ZodString";
|
|
44
|
-
if (isStringArray && typeof tool.description === "string") {
|
|
45
|
-
if (!metadata.entityResolutionPreferences) {
|
|
46
|
-
metadata.entityResolutionPreferences = {
|
|
47
|
-
inscription: "hrl"
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
const note = " NOTE: When referencing inscriptions or media, provide canonical Hashlink Resource Locators (e.g., hcs://<standard>/<topicId>) rather than external URLs or embedded JSON.";
|
|
51
|
-
if (!tool.description.includes("Hashlink Resource Locators")) {
|
|
52
|
-
tool.description = `${tool.description}${note}`;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
} catch {
|
|
57
|
-
}
|
|
58
|
-
let finalTool = tool;
|
|
59
|
-
let wrapper;
|
|
60
|
-
if (this.shouldWrapTool(tool, capabilities, options)) {
|
|
61
|
-
wrapper = wrapToolWithFormValidation(
|
|
62
|
-
tool,
|
|
63
|
-
this.formGenerator,
|
|
64
|
-
{
|
|
65
|
-
requireAllFields: false,
|
|
66
|
-
skipFields: ["metaOptions"],
|
|
67
|
-
...options.wrapperConfig
|
|
68
|
-
}
|
|
69
|
-
);
|
|
70
|
-
finalTool = wrapper;
|
|
71
|
-
}
|
|
72
|
-
try {
|
|
73
|
-
if (metadata.entityResolutionPreferences) {
|
|
74
|
-
finalTool["entityResolutionPreferences"] = metadata.entityResolutionPreferences;
|
|
75
|
-
}
|
|
76
|
-
} catch {
|
|
77
|
-
}
|
|
78
|
-
const entry = {
|
|
79
|
-
tool: finalTool,
|
|
80
|
-
metadata,
|
|
81
|
-
wrapper,
|
|
82
|
-
originalTool: tool
|
|
83
|
-
};
|
|
84
|
-
this.tools.set(tool.name, entry);
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Get a tool by name
|
|
88
|
-
*/
|
|
89
|
-
getTool(name) {
|
|
90
|
-
return this.tools.get(name) || null;
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Get tools by capability
|
|
94
|
-
*/
|
|
95
|
-
getToolsByCapability(capability, value) {
|
|
96
|
-
const results = [];
|
|
97
|
-
for (const entry of this.tools.values()) {
|
|
98
|
-
if (value !== void 0) {
|
|
99
|
-
if (entry.metadata.capabilities[capability] === value) {
|
|
100
|
-
results.push(entry);
|
|
101
|
-
}
|
|
102
|
-
} else if (entry.metadata.capabilities[capability]) {
|
|
103
|
-
results.push(entry);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
return results;
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* Get tools by query
|
|
110
|
-
*/
|
|
111
|
-
getToolsByQuery(query) {
|
|
112
|
-
const results = [];
|
|
113
|
-
for (const entry of this.tools.values()) {
|
|
114
|
-
let matches = true;
|
|
115
|
-
if (query.name && entry.metadata.name !== query.name) {
|
|
116
|
-
matches = false;
|
|
117
|
-
}
|
|
118
|
-
if (query.category && entry.metadata.category !== query.category) {
|
|
119
|
-
matches = false;
|
|
120
|
-
}
|
|
121
|
-
if (query.capabilities) {
|
|
122
|
-
for (const [key, value] of Object.entries(query.capabilities)) {
|
|
123
|
-
if (entry.metadata.capabilities[key] !== value) {
|
|
124
|
-
matches = false;
|
|
125
|
-
break;
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
if (matches) {
|
|
130
|
-
results.push(entry);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
return results;
|
|
134
|
-
}
|
|
135
|
-
/**
|
|
136
|
-
* Get all registered tools
|
|
137
|
-
*/
|
|
138
|
-
getAllTools() {
|
|
139
|
-
return Array.from(this.tools.values()).map((entry) => entry.tool);
|
|
140
|
-
}
|
|
141
|
-
/**
|
|
142
|
-
* Get all registry entries
|
|
143
|
-
*/
|
|
144
|
-
getAllRegistryEntries() {
|
|
145
|
-
return Array.from(this.tools.values());
|
|
146
|
-
}
|
|
147
|
-
/**
|
|
148
|
-
* Get all tool names
|
|
149
|
-
*/
|
|
150
|
-
getToolNames() {
|
|
151
|
-
return Array.from(this.tools.keys());
|
|
152
|
-
}
|
|
153
|
-
/**
|
|
154
|
-
* Check if a tool is registered
|
|
155
|
-
*/
|
|
156
|
-
hasTool(name) {
|
|
157
|
-
return this.tools.has(name);
|
|
158
|
-
}
|
|
159
|
-
/**
|
|
160
|
-
* Unregister a tool
|
|
161
|
-
*/
|
|
162
|
-
unregisterTool(name) {
|
|
163
|
-
return this.tools.delete(name);
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* Clear all tools
|
|
167
|
-
*/
|
|
168
|
-
clear() {
|
|
169
|
-
this.tools.clear();
|
|
170
|
-
}
|
|
171
|
-
/**
|
|
172
|
-
* Analyze tool capabilities
|
|
173
|
-
*/
|
|
174
|
-
analyzeToolCapabilities(tool) {
|
|
175
|
-
const implementsFormValidatable = isFormValidatable(tool);
|
|
176
|
-
const hasRenderConfig = this.hasRenderConfig(tool);
|
|
177
|
-
const isZodObjectLike = this.isZodObjectLike(tool.schema);
|
|
178
|
-
const supportsFormValidation = implementsFormValidatable || hasRenderConfig;
|
|
179
|
-
const requiresWrapper = supportsFormValidation && isZodObjectLike;
|
|
180
|
-
let priority = "medium";
|
|
181
|
-
let category = "core";
|
|
182
|
-
if (supportsFormValidation && requiresWrapper) {
|
|
183
|
-
priority = "critical";
|
|
184
|
-
} else if (supportsFormValidation) {
|
|
185
|
-
priority = "high";
|
|
186
|
-
} else if (tool.description?.toLowerCase().includes("query") || tool.description?.toLowerCase().includes("search")) {
|
|
187
|
-
priority = "low";
|
|
188
|
-
}
|
|
189
|
-
const toolAsAny = tool;
|
|
190
|
-
if (tool.constructor.name.includes("MCP") || toolAsAny.isMCPTool) {
|
|
191
|
-
category = "mcp";
|
|
192
|
-
} else if (toolAsAny.isExtension || tool.constructor.name.includes("Extension")) {
|
|
193
|
-
category = "extension";
|
|
194
|
-
}
|
|
195
|
-
return {
|
|
196
|
-
supportsFormValidation,
|
|
197
|
-
requiresWrapper,
|
|
198
|
-
priority,
|
|
199
|
-
category
|
|
200
|
-
};
|
|
201
|
-
}
|
|
202
|
-
/**
|
|
203
|
-
* Check if tool has render configuration
|
|
204
|
-
*/
|
|
205
|
-
hasRenderConfig(tool) {
|
|
206
|
-
const schema = tool.schema;
|
|
207
|
-
return !!(schema && schema._renderConfig);
|
|
208
|
-
}
|
|
209
|
-
/**
|
|
210
|
-
* Determine if tool should be wrapped
|
|
211
|
-
*/
|
|
212
|
-
shouldWrapTool(tool, capabilities, options) {
|
|
213
|
-
if (options.skipWrapper) {
|
|
214
|
-
return false;
|
|
215
|
-
}
|
|
216
|
-
if (options.forceWrapper) {
|
|
217
|
-
return true;
|
|
218
|
-
}
|
|
219
|
-
return capabilities.requiresWrapper;
|
|
220
|
-
}
|
|
221
|
-
/**
|
|
222
|
-
* Check if schema is ZodObject-like
|
|
223
|
-
*/
|
|
224
|
-
isZodObjectLike(schema) {
|
|
225
|
-
if (!schema || typeof schema !== "object") {
|
|
226
|
-
return false;
|
|
227
|
-
}
|
|
228
|
-
const schemaRecord = schema;
|
|
229
|
-
const schemaDef = schemaRecord._def;
|
|
230
|
-
return schema instanceof z.ZodObject || schemaDef?.typeName === "ZodObject" || "shape" in schemaRecord && typeof schemaRecord.shape === "object";
|
|
231
|
-
}
|
|
232
|
-
/**
|
|
233
|
-
* Get statistics about the registry
|
|
234
|
-
*/
|
|
235
|
-
getStatistics() {
|
|
236
|
-
const stats = {
|
|
237
|
-
totalTools: this.tools.size,
|
|
238
|
-
wrappedTools: 0,
|
|
239
|
-
unwrappedTools: 0,
|
|
240
|
-
categoryCounts: { core: 0, extension: 0, mcp: 0 },
|
|
241
|
-
priorityCounts: { low: 0, medium: 0, high: 0, critical: 0 }
|
|
242
|
-
};
|
|
243
|
-
for (const entry of this.tools.values()) {
|
|
244
|
-
if (entry.wrapper) {
|
|
245
|
-
stats.wrappedTools++;
|
|
246
|
-
} else {
|
|
247
|
-
stats.unwrappedTools++;
|
|
248
|
-
}
|
|
249
|
-
stats.categoryCounts[entry.metadata.category]++;
|
|
250
|
-
stats.priorityCounts[entry.metadata.capabilities.priority]++;
|
|
251
|
-
}
|
|
252
|
-
return stats;
|
|
253
|
-
}
|
|
254
|
-
}
|
|
1
|
+
const ERROR_MESSAGES = {
|
|
2
|
+
TOO_MANY_REQUESTS: "Too many requests. Please wait a moment and try again.",
|
|
3
|
+
RATE_LIMITED: "I'm receiving too many requests right now. Please wait a moment and try again."
|
|
4
|
+
};
|
|
255
5
|
export {
|
|
256
|
-
|
|
6
|
+
ERROR_MESSAGES
|
|
257
7
|
};
|
|
258
8
|
//# sourceMappingURL=index42.js.map
|
package/dist/esm/index42.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index42.js","sources":["../../src/core/tool-registry.ts"],"sourcesContent":["import { StructuredTool } from '@langchain/core/tools';\nimport { z } from 'zod';\nimport { Logger } from '@hashgraphonline/standards-sdk';\nimport {\n FormValidatingToolWrapper,\n wrapToolWithFormValidation,\n} from '../langchain/form-validating-tool-wrapper';\nimport { FormGenerator } from '../forms/form-generator';\nimport { isFormValidatable } from '@hashgraphonline/standards-agent-kit';\n\n/**\n * Tool capabilities configuration for registry entries\n */\nexport interface ToolCapabilities {\n supportsFormValidation: boolean;\n requiresWrapper: boolean;\n priority: 'low' | 'medium' | 'high' | 'critical';\n category: 'core' | 'extension' | 'mcp';\n}\n\n/**\n * Entity resolution format preferences for tools\n */\nexport interface EntityResolutionPreferences {\n inscription?: 'hrl' | 'topicId' | 'metadata' | 'any';\n token?: 'tokenId' | 'address' | 'symbol' | 'any';\n nft?: 'serialNumber' | 'metadata' | 'hrl' | 'any';\n account?: 'accountId' | 'alias' | 'evmAddress' | 'any';\n}\n\n/**\n * Tool metadata for comprehensive tool information\n */\nexport interface ToolMetadata {\n name: string;\n version: string;\n category: ToolCapabilities['category'];\n description: string;\n capabilities: ToolCapabilities;\n dependencies: string[];\n schema: unknown;\n entityResolutionPreferences?: EntityResolutionPreferences;\n}\n\n/**\n * Registry entry containing tool instance and metadata\n */\nexport interface ToolRegistryEntry {\n tool: StructuredTool;\n metadata: ToolMetadata;\n wrapper?: FormValidatingToolWrapper<z.ZodObject<z.ZodRawShape>> | undefined;\n originalTool: StructuredTool;\n}\n\n/**\n * Options for tool registration\n */\nexport interface ToolRegistrationOptions {\n forceWrapper?: boolean;\n skipWrapper?: boolean;\n wrapperConfig?: {\n requireAllFields?: boolean;\n skipFields?: string[];\n };\n metadata?: Partial<ToolMetadata>;\n}\n\n/**\n * Query interface for finding tools\n */\nexport interface ToolQuery {\n name?: string;\n category?: ToolMetadata['category'];\n capabilities?: Partial<ToolCapabilities>;\n}\n\n/**\n * Centralized tool registry for managing tool lifecycle\n */\nexport class ToolRegistry {\n private tools = new Map<string, ToolRegistryEntry>();\n private formGenerator: FormGenerator;\n private logger: Logger;\n\n constructor(logger?: Logger) {\n this.formGenerator = new FormGenerator();\n this.logger = logger || new Logger({ module: 'ToolRegistry' });\n }\n\n /**\n * Register a tool with the registry\n */\n registerTool(\n tool: StructuredTool,\n options: ToolRegistrationOptions = {}\n ): void {\n const capabilities = this.analyzeToolCapabilities(tool);\n const metadata: ToolMetadata = {\n name: tool.name,\n version: '1.0.0',\n category: options.metadata?.category || 'core',\n description: tool.description,\n capabilities,\n dependencies: [],\n schema: tool.schema,\n ...options.metadata,\n };\n\n try {\n if (!metadata.entityResolutionPreferences) {\n const schemaRecord = tool.schema as unknown as Record<string, unknown>;\n const rawPrefs =\n schemaRecord &&\n typeof schemaRecord === 'object' &&\n (schemaRecord as Record<string, unknown>)[\n '_entityResolutionPreferences'\n ];\n if (rawPrefs && typeof rawPrefs === 'object') {\n metadata.entityResolutionPreferences = rawPrefs as unknown as EntityResolutionPreferences;\n }\n }\n } catch {\n }\n\n try {\n const schemaRecord = tool.schema as unknown as Record<string, unknown>;\n const schemaDef = (schemaRecord && (schemaRecord as Record<string, unknown>)._def) as\n | { typeName?: string; shape?: unknown }\n | undefined;\n if (schemaDef?.typeName === 'ZodObject') {\n const shape: Record<string, unknown> =\n typeof (schemaDef as { shape?: () => Record<string, unknown> }).shape === 'function'\n ? ((schemaDef as { shape: () => Record<string, unknown> }).shape?.() || {})\n : ((schemaDef as { shape?: Record<string, unknown> }).shape || {});\n\n const metadataField = shape['metadata'] as\n | { _def?: { typeName?: string; type?: { _def?: { typeName?: string } } } }\n | undefined;\n const isStringArray =\n !!metadataField &&\n metadataField._def?.typeName === 'ZodArray' &&\n metadataField._def?.type?._def?.typeName === 'ZodString';\n\n if (isStringArray && typeof tool.description === 'string') {\n if (!metadata.entityResolutionPreferences) {\n metadata.entityResolutionPreferences = {\n inscription: 'hrl',\n } as EntityResolutionPreferences;\n }\n const note =\n ' NOTE: When referencing inscriptions or media, provide canonical Hashlink Resource Locators (e.g., hcs://<standard>/<topicId>) rather than external URLs or embedded JSON.';\n if (!tool.description.includes('Hashlink Resource Locators')) {\n (tool as unknown as { description: string }).description = `${tool.description}${note}`;\n }\n }\n }\n } catch {}\n\n let finalTool: StructuredTool = tool;\n let wrapper:\n | FormValidatingToolWrapper<z.ZodObject<z.ZodRawShape>>\n | undefined;\n\n if (this.shouldWrapTool(tool, capabilities, options)) {\n wrapper = wrapToolWithFormValidation(\n tool as StructuredTool<z.ZodObject<z.ZodRawShape>>,\n this.formGenerator,\n {\n requireAllFields: false,\n skipFields: ['metaOptions'],\n ...options.wrapperConfig,\n }\n ) as FormValidatingToolWrapper<z.ZodObject<z.ZodRawShape>>;\n finalTool = wrapper as StructuredTool;\n }\n\n try {\n if (metadata.entityResolutionPreferences) {\n (finalTool as unknown as Record<string, unknown>)[\n 'entityResolutionPreferences'\n ] = metadata.entityResolutionPreferences;\n }\n } catch {\n }\n\n const entry: ToolRegistryEntry = {\n tool: finalTool,\n metadata,\n wrapper,\n originalTool: tool,\n };\n\n this.tools.set(tool.name, entry);\n }\n\n /**\n * Get a tool by name\n */\n getTool(name: string): ToolRegistryEntry | null {\n return this.tools.get(name) || null;\n }\n\n /**\n * Get tools by capability\n */\n getToolsByCapability(\n capability: keyof ToolCapabilities,\n value?: unknown\n ): ToolRegistryEntry[] {\n const results: ToolRegistryEntry[] = [];\n\n for (const entry of this.tools.values()) {\n if (value !== undefined) {\n if (entry.metadata.capabilities[capability] === value) {\n results.push(entry);\n }\n } else if (entry.metadata.capabilities[capability]) {\n results.push(entry);\n }\n }\n\n return results;\n }\n\n /**\n * Get tools by query\n */\n getToolsByQuery(query: ToolQuery): ToolRegistryEntry[] {\n const results: ToolRegistryEntry[] = [];\n\n for (const entry of this.tools.values()) {\n let matches = true;\n\n if (query.name && entry.metadata.name !== query.name) {\n matches = false;\n }\n\n if (query.category && entry.metadata.category !== query.category) {\n matches = false;\n }\n\n if (query.capabilities) {\n for (const [key, value] of Object.entries(query.capabilities)) {\n if (\n entry.metadata.capabilities[key as keyof ToolCapabilities] !== value\n ) {\n matches = false;\n break;\n }\n }\n }\n\n if (matches) {\n results.push(entry);\n }\n }\n\n return results;\n }\n\n /**\n * Get all registered tools\n */\n getAllTools(): StructuredTool[] {\n return Array.from(this.tools.values()).map((entry) => entry.tool);\n }\n\n /**\n * Get all registry entries\n */\n getAllRegistryEntries(): ToolRegistryEntry[] {\n return Array.from(this.tools.values());\n }\n\n /**\n * Get all tool names\n */\n getToolNames(): string[] {\n return Array.from(this.tools.keys());\n }\n\n /**\n * Check if a tool is registered\n */\n hasTool(name: string): boolean {\n return this.tools.has(name);\n }\n\n /**\n * Unregister a tool\n */\n unregisterTool(name: string): boolean {\n return this.tools.delete(name);\n }\n\n /**\n * Clear all tools\n */\n clear(): void {\n this.tools.clear();\n }\n\n /**\n * Analyze tool capabilities\n */\n private analyzeToolCapabilities(tool: StructuredTool): ToolCapabilities {\n const implementsFormValidatable = isFormValidatable(tool);\n const hasRenderConfig = this.hasRenderConfig(tool);\n const isZodObjectLike = this.isZodObjectLike(tool.schema);\n\n const supportsFormValidation = implementsFormValidatable || hasRenderConfig;\n const requiresWrapper = supportsFormValidation && isZodObjectLike;\n\n let priority: ToolCapabilities['priority'] = 'medium';\n let category: ToolCapabilities['category'] = 'core';\n\n if (supportsFormValidation && requiresWrapper) {\n priority = 'critical';\n } else if (supportsFormValidation) {\n priority = 'high';\n } else if (\n tool.description?.toLowerCase().includes('query') ||\n tool.description?.toLowerCase().includes('search')\n ) {\n priority = 'low';\n }\n\n const toolAsAny = tool as unknown as Record<string, unknown>;\n if (tool.constructor.name.includes('MCP') || toolAsAny.isMCPTool) {\n category = 'mcp';\n } else if (\n toolAsAny.isExtension ||\n tool.constructor.name.includes('Extension')\n ) {\n category = 'extension';\n }\n\n return {\n supportsFormValidation,\n requiresWrapper,\n priority,\n category,\n };\n }\n\n /**\n * Check if tool has render configuration\n */\n private hasRenderConfig(tool: StructuredTool): boolean {\n const schema = tool.schema as Record<string, unknown>;\n return !!(schema && schema._renderConfig);\n }\n\n /**\n * Determine if tool should be wrapped\n */\n private shouldWrapTool(\n tool: StructuredTool,\n capabilities: ToolCapabilities,\n options: ToolRegistrationOptions\n ): boolean {\n if (options.skipWrapper) {\n return false;\n }\n\n if (options.forceWrapper) {\n return true;\n }\n\n return capabilities.requiresWrapper;\n }\n\n /**\n * Check if schema is ZodObject-like\n */\n private isZodObjectLike(schema: unknown): boolean {\n if (!schema || typeof schema !== 'object') {\n return false;\n }\n\n const schemaRecord = schema as Record<string, unknown>;\n const schemaDef = schemaRecord._def as Record<string, unknown> | undefined;\n\n return (\n schema instanceof z.ZodObject ||\n schemaDef?.typeName === 'ZodObject' ||\n ('shape' in schemaRecord && typeof schemaRecord.shape === 'object')\n );\n }\n\n /**\n * Get statistics about the registry\n */\n getStatistics(): {\n totalTools: number;\n wrappedTools: number;\n unwrappedTools: number;\n categoryCounts: Record<ToolCapabilities['category'], number>;\n priorityCounts: Record<ToolCapabilities['priority'], number>;\n } {\n const stats = {\n totalTools: this.tools.size,\n wrappedTools: 0,\n unwrappedTools: 0,\n categoryCounts: { core: 0, extension: 0, mcp: 0 } as Record<\n ToolCapabilities['category'],\n number\n >,\n priorityCounts: { low: 0, medium: 0, high: 0, critical: 0 } as Record<\n ToolCapabilities['priority'],\n number\n >,\n };\n\n for (const entry of this.tools.values()) {\n if (entry.wrapper) {\n stats.wrappedTools++;\n } else {\n stats.unwrappedTools++;\n }\n\n stats.categoryCounts[entry.metadata.category]++;\n stats.priorityCounts[entry.metadata.capabilities.priority]++;\n }\n\n return stats;\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index42.js","sources":["../../src/constants/messages.ts"],"sourcesContent":["/**\n * Common error messages and user feedback strings\n */\nexport const ERROR_MESSAGES = {\n TOO_MANY_REQUESTS: 'Too many requests. Please wait a moment and try again.',\n RATE_LIMITED: \"I'm receiving too many requests right now. Please wait a moment and try again.\",\n SYSTEM_ERROR: 'System error occurred',\n INVALID_INPUT: 'Invalid input provided',\n NETWORK_ERROR: 'Network error occurred',\n} as const;\n\n/**\n * Common success and status messages\n */\nexport const STATUS_MESSAGES = {\n OPERATION_SUCCESSFUL: 'Operation completed successfully',\n PROCESSING: 'Processing your request...',\n READY: 'Ready to process requests',\n INITIALIZING: 'Initializing...',\n} as const;"],"names":[],"mappings":"AAGO,MAAM,iBAAiB;AAAA,EAC5B,mBAAmB;AAAA,EACnB,cAAc;AAIhB;"}
|
package/dist/esm/index43.js
CHANGED
|
@@ -1,187 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
*/
|
|
13
|
-
async execute(toolName, input, sessionContext) {
|
|
14
|
-
const traceId = `trace-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
|
|
15
|
-
const startTime = Date.now();
|
|
16
|
-
const toolEntry = this.toolRegistry.getTool(toolName);
|
|
17
|
-
if (!toolEntry) {
|
|
18
|
-
throw new Error(`Tool not found in registry: ${toolName}`);
|
|
19
|
-
}
|
|
20
|
-
const context = {
|
|
21
|
-
toolName,
|
|
22
|
-
input,
|
|
23
|
-
session: sessionContext || this.buildDefaultSession(),
|
|
24
|
-
memory: this.memory,
|
|
25
|
-
traceId,
|
|
26
|
-
toolEntry
|
|
27
|
-
};
|
|
28
|
-
try {
|
|
29
|
-
const shouldGenerateForm = await this.checkFormGeneration(context);
|
|
30
|
-
if (shouldGenerateForm.requiresForm && shouldGenerateForm.formMessage) {
|
|
31
|
-
return {
|
|
32
|
-
success: false,
|
|
33
|
-
output: "Form generation required",
|
|
34
|
-
requiresForm: true,
|
|
35
|
-
formMessage: shouldGenerateForm.formMessage,
|
|
36
|
-
traceId,
|
|
37
|
-
executionTime: Date.now() - startTime
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
const result = await this.executeToolDirect(context);
|
|
41
|
-
return {
|
|
42
|
-
success: true,
|
|
43
|
-
output: result,
|
|
44
|
-
traceId,
|
|
45
|
-
executionTime: Date.now() - startTime
|
|
46
|
-
};
|
|
47
|
-
} catch (error) {
|
|
48
|
-
return this.handleExecutionError(
|
|
49
|
-
error,
|
|
50
|
-
context,
|
|
51
|
-
traceId,
|
|
52
|
-
Date.now() - startTime
|
|
53
|
-
);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Execute tool with validation
|
|
58
|
-
*/
|
|
59
|
-
async executeWithValidation(toolName, input, sessionContext) {
|
|
60
|
-
return this.execute(toolName, input, sessionContext);
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Process form submission
|
|
64
|
-
*/
|
|
65
|
-
async processFormSubmission(toolName, formId, parameters, sessionContext) {
|
|
66
|
-
const traceId = `form-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
|
|
67
|
-
const startTime = Date.now();
|
|
68
|
-
try {
|
|
69
|
-
const formSubmission = {
|
|
70
|
-
formId,
|
|
71
|
-
toolName,
|
|
72
|
-
parameters,
|
|
73
|
-
timestamp: Date.now()
|
|
74
|
-
};
|
|
75
|
-
const processedInput = await this.formEngine.processSubmission(
|
|
76
|
-
formSubmission
|
|
77
|
-
);
|
|
78
|
-
return this.execute(toolName, processedInput, sessionContext);
|
|
79
|
-
} catch (error) {
|
|
80
|
-
return {
|
|
81
|
-
success: false,
|
|
82
|
-
output: "Form submission processing failed",
|
|
83
|
-
error: error instanceof Error ? error.message : String(error),
|
|
84
|
-
traceId,
|
|
85
|
-
executionTime: Date.now() - startTime
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Check if form generation is required
|
|
91
|
-
*/
|
|
92
|
-
async checkFormGeneration(context) {
|
|
93
|
-
const inputRecord = context.input;
|
|
94
|
-
if (inputRecord?.__fromForm === true || inputRecord?.renderForm === false) {
|
|
95
|
-
return { requiresForm: false };
|
|
96
|
-
}
|
|
97
|
-
if (!this.formEngine.shouldGenerateForm(context.toolEntry.tool, context.input)) {
|
|
98
|
-
return { requiresForm: false };
|
|
99
|
-
}
|
|
100
|
-
const formMessage = await this.formEngine.generateForm(
|
|
101
|
-
context.toolName,
|
|
102
|
-
context.toolEntry.tool,
|
|
103
|
-
context.input
|
|
104
|
-
);
|
|
105
|
-
if (formMessage) {
|
|
106
|
-
return { requiresForm: true, formMessage };
|
|
107
|
-
}
|
|
108
|
-
return { requiresForm: false };
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Execute tool directly
|
|
112
|
-
*/
|
|
113
|
-
async executeToolDirect(context) {
|
|
114
|
-
const { toolEntry, input } = context;
|
|
115
|
-
const parameters = input || {};
|
|
116
|
-
const mergedArgs = { ...parameters, renderForm: false };
|
|
117
|
-
if (toolEntry.wrapper) {
|
|
118
|
-
return this.executeWrappedTool(toolEntry, mergedArgs);
|
|
119
|
-
}
|
|
120
|
-
return await toolEntry.tool.call(mergedArgs);
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* Execute wrapped tool
|
|
124
|
-
*/
|
|
125
|
-
async executeWrappedTool(toolEntry, mergedArgs) {
|
|
126
|
-
const wrapper = toolEntry.wrapper;
|
|
127
|
-
if (!wrapper) {
|
|
128
|
-
throw new Error("Tool wrapper not found");
|
|
129
|
-
}
|
|
130
|
-
const wrapperAsAny = wrapper;
|
|
131
|
-
if (wrapperAsAny.executeOriginal) {
|
|
132
|
-
return await wrapperAsAny.executeOriginal(mergedArgs);
|
|
133
|
-
}
|
|
134
|
-
if (wrapperAsAny.originalTool?.call) {
|
|
135
|
-
return await wrapperAsAny.originalTool.call(mergedArgs);
|
|
136
|
-
}
|
|
137
|
-
return await toolEntry.originalTool.call(mergedArgs);
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Handle execution error
|
|
141
|
-
*/
|
|
142
|
-
handleExecutionError(error, context, traceId, executionTime) {
|
|
143
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
144
|
-
if (error instanceof ZodError) {
|
|
145
|
-
return {
|
|
146
|
-
success: false,
|
|
147
|
-
output: "Validation error occurred",
|
|
148
|
-
error: errorMessage,
|
|
149
|
-
traceId,
|
|
150
|
-
executionTime
|
|
151
|
-
};
|
|
152
|
-
}
|
|
153
|
-
this.logger.error(`Tool execution failed: ${context.toolName}`, {
|
|
154
|
-
traceId,
|
|
155
|
-
error: errorMessage
|
|
156
|
-
});
|
|
157
|
-
return {
|
|
158
|
-
success: false,
|
|
159
|
-
output: "Tool execution failed",
|
|
160
|
-
error: errorMessage,
|
|
161
|
-
traceId,
|
|
162
|
-
executionTime
|
|
163
|
-
};
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* Build default session context
|
|
167
|
-
*/
|
|
168
|
-
buildDefaultSession() {
|
|
169
|
-
return {
|
|
170
|
-
sessionId: `session-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`,
|
|
171
|
-
timestamp: Date.now()
|
|
172
|
-
};
|
|
173
|
-
}
|
|
174
|
-
/**
|
|
175
|
-
* Get statistics about the pipeline
|
|
176
|
-
*/
|
|
177
|
-
getStatistics() {
|
|
178
|
-
return {
|
|
179
|
-
totalMiddleware: 0,
|
|
180
|
-
registeredMiddleware: []
|
|
181
|
-
};
|
|
182
|
-
}
|
|
183
|
-
}
|
|
1
|
+
import { EntityFormat } from "./index26.js";
|
|
2
|
+
const ENTITY_PATTERNS = {
|
|
3
|
+
TOPIC_REFERENCE: "the topic",
|
|
4
|
+
TOKEN_REFERENCE: "the token"
|
|
5
|
+
};
|
|
6
|
+
({
|
|
7
|
+
TOPIC: EntityFormat.TOPIC_ID,
|
|
8
|
+
TOKEN: EntityFormat.TOKEN_ID,
|
|
9
|
+
ACCOUNT: EntityFormat.ACCOUNT_ID,
|
|
10
|
+
CONTRACT: EntityFormat.CONTRACT_ID
|
|
11
|
+
});
|
|
184
12
|
export {
|
|
185
|
-
|
|
13
|
+
ENTITY_PATTERNS
|
|
186
14
|
};
|
|
187
15
|
//# sourceMappingURL=index43.js.map
|