@hashgraphonline/conversational-agent 0.2.211 → 0.2.213

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/cli/dist/CLIApp.d.ts +11 -0
  2. package/cli/dist/CLIApp.d.ts.map +1 -0
  3. package/cli/dist/CLIApp.js +128 -0
  4. package/cli/dist/CLIApp.js.map +1 -0
  5. package/cli/dist/LocalConversationalAgent.d.ts +37 -0
  6. package/cli/dist/LocalConversationalAgent.js +58 -0
  7. package/cli/dist/app.d.ts +18 -0
  8. package/cli/dist/app.d.ts.map +1 -0
  9. package/cli/dist/app.js +14 -0
  10. package/cli/dist/app.js.map +1 -0
  11. package/cli/dist/cli.d.ts +3 -0
  12. package/cli/dist/cli.d.ts.map +1 -0
  13. package/cli/dist/cli.js +87 -0
  14. package/cli/dist/cli.js.map +1 -0
  15. package/cli/dist/components/AppContainer.d.ts +16 -0
  16. package/cli/dist/components/AppContainer.js +24 -0
  17. package/cli/dist/components/AppScreens.d.ts +2 -0
  18. package/cli/dist/components/AppScreens.js +259 -0
  19. package/cli/dist/components/ChatScreen.d.ts +21 -0
  20. package/cli/dist/components/ChatScreen.d.ts.map +1 -0
  21. package/cli/dist/components/ChatScreen.js +40 -0
  22. package/cli/dist/components/ChatScreen.js.map +1 -0
  23. package/cli/dist/components/DebugLoadingScreen.d.ts +5 -0
  24. package/cli/dist/components/DebugLoadingScreen.js +31 -0
  25. package/cli/dist/components/LoadingScreen.d.ts +3 -0
  26. package/cli/dist/components/LoadingScreen.d.ts.map +1 -0
  27. package/cli/dist/components/LoadingScreen.js +17 -0
  28. package/cli/dist/components/LoadingScreen.js.map +1 -0
  29. package/cli/dist/components/LoadingScreenDebug.d.ts +5 -0
  30. package/cli/dist/components/LoadingScreenDebug.js +27 -0
  31. package/cli/dist/components/MCPConfigScreen.d.ts +28 -0
  32. package/cli/dist/components/MCPConfigScreen.d.ts.map +1 -0
  33. package/cli/dist/components/MCPConfigScreen.js +186 -0
  34. package/cli/dist/components/MCPConfigScreen.js.map +1 -0
  35. package/cli/dist/components/ScreenRouter.d.ts +13 -0
  36. package/cli/dist/components/ScreenRouter.d.ts.map +1 -0
  37. package/cli/dist/components/ScreenRouter.js +23 -0
  38. package/cli/dist/components/ScreenRouter.js.map +1 -0
  39. package/cli/dist/components/SetupScreen.d.ts +16 -0
  40. package/cli/dist/components/SetupScreen.d.ts.map +1 -0
  41. package/cli/dist/components/SetupScreen.js +67 -0
  42. package/cli/dist/components/SetupScreen.js.map +1 -0
  43. package/cli/dist/components/SingleLoadingScreen.d.ts +5 -0
  44. package/cli/dist/components/SingleLoadingScreen.js +27 -0
  45. package/cli/dist/components/StatusBadge.d.ts +10 -0
  46. package/cli/dist/components/StatusBadge.d.ts.map +1 -0
  47. package/cli/dist/components/StatusBadge.js +24 -0
  48. package/cli/dist/components/StatusBadge.js.map +1 -0
  49. package/cli/dist/components/TerminalWindow.d.ts +9 -0
  50. package/cli/dist/components/TerminalWindow.d.ts.map +1 -0
  51. package/cli/dist/components/TerminalWindow.js +19 -0
  52. package/cli/dist/components/TerminalWindow.js.map +1 -0
  53. package/cli/dist/components/WelcomeScreen.d.ts +12 -0
  54. package/cli/dist/components/WelcomeScreen.d.ts.map +1 -0
  55. package/cli/dist/components/WelcomeScreen.js +47 -0
  56. package/cli/dist/components/WelcomeScreen.js.map +1 -0
  57. package/cli/dist/context/AppContext.d.ts +68 -0
  58. package/cli/dist/context/AppContext.js +363 -0
  59. package/cli/dist/headless-runner.d.ts +17 -0
  60. package/cli/dist/headless-runner.d.ts.map +1 -0
  61. package/cli/dist/headless-runner.js +128 -0
  62. package/cli/dist/headless-runner.js.map +1 -0
  63. package/cli/dist/hooks/useInitializeAgent.d.ts +19 -0
  64. package/cli/dist/hooks/useInitializeAgent.d.ts.map +1 -0
  65. package/cli/dist/hooks/useInitializeAgent.js +29 -0
  66. package/cli/dist/hooks/useInitializeAgent.js.map +1 -0
  67. package/cli/dist/hooks/useStableState.d.ts +38 -0
  68. package/cli/dist/hooks/useStableState.d.ts.map +1 -0
  69. package/cli/dist/hooks/useStableState.js +69 -0
  70. package/cli/dist/hooks/useStableState.js.map +1 -0
  71. package/cli/dist/managers/AgentManager.d.ts +58 -0
  72. package/cli/dist/managers/AgentManager.d.ts.map +1 -0
  73. package/cli/dist/managers/AgentManager.js +121 -0
  74. package/cli/dist/managers/AgentManager.js.map +1 -0
  75. package/cli/dist/managers/ConfigManager.d.ts +54 -0
  76. package/cli/dist/managers/ConfigManager.d.ts.map +1 -0
  77. package/cli/dist/managers/ConfigManager.js +188 -0
  78. package/cli/dist/managers/ConfigManager.js.map +1 -0
  79. package/cli/dist/types.d.ts +52 -0
  80. package/cli/dist/types.d.ts.map +1 -0
  81. package/cli/dist/types.js +34 -0
  82. package/cli/dist/types.js.map +1 -0
  83. package/dist/esm/index10.js +1 -1
  84. package/dist/esm/index21.js +1 -1
  85. package/dist/esm/index23.js +1 -1
  86. package/dist/esm/index33.js +4 -4
  87. package/dist/esm/index42.js +26 -4
  88. package/dist/esm/index42.js.map +1 -1
  89. package/dist/esm/index43.js +4 -11
  90. package/dist/esm/index43.js.map +1 -1
  91. package/dist/esm/index44.js +12 -322
  92. package/dist/esm/index44.js.map +1 -1
  93. package/dist/esm/index45.js +280 -142
  94. package/dist/esm/index45.js.map +1 -1
  95. package/dist/esm/index46.js +181 -24
  96. package/dist/esm/index46.js.map +1 -1
  97. package/package.json +25 -33
  98. package/cli/readme.md +0 -181
@@ -8,11 +8,11 @@ import { MCPClientManager } from "./index15.js";
8
8
  import { convertMCPToolToLangChain } from "./index17.js";
9
9
  import { SmartMemoryManager } from "./index18.js";
10
10
  import { ResponseFormatter } from "./index35.js";
11
- import { ERROR_MESSAGES } from "./index42.js";
12
- import "./index43.js";
11
+ import { ERROR_MESSAGES } from "./index43.js";
12
+ import "./index44.js";
13
13
  import { SystemMessage, AIMessage, HumanMessage } from "@langchain/core/messages";
14
- import { ToolRegistry } from "./index44.js";
15
- import { ExecutionPipeline } from "./index45.js";
14
+ import { ToolRegistry } from "./index45.js";
15
+ import { ExecutionPipeline } from "./index46.js";
16
16
  import { FormEngine } from "./index11.js";
17
17
  function hasHashLinkBlock(metadata) {
18
18
  if (!metadata || typeof metadata !== "object") {
@@ -1,8 +1,30 @@
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."
1
+ const DEFAULT_CONTENT_REFERENCE_CONFIG = {
2
+ sizeThresholdBytes: 10 * 1024,
3
+ maxAgeMs: 60 * 60 * 1e3,
4
+ maxReferences: 100,
5
+ maxTotalStorageBytes: 100 * 1024 * 1024,
6
+ enableAutoCleanup: true,
7
+ cleanupIntervalMs: 5 * 60 * 1e3,
8
+ enablePersistence: false,
9
+ storageBackend: "memory",
10
+ cleanupPolicies: {
11
+ recent: { maxAgeMs: 30 * 60 * 1e3, priority: 1 },
12
+ userContent: { maxAgeMs: 2 * 60 * 60 * 1e3, priority: 2 },
13
+ agentGenerated: { maxAgeMs: 60 * 60 * 1e3, priority: 3 },
14
+ default: { maxAgeMs: 60 * 60 * 1e3, priority: 4 }
15
+ }
4
16
  };
17
+ class ContentReferenceError extends Error {
18
+ constructor(message, type, referenceId, suggestedActions) {
19
+ super(message);
20
+ this.type = type;
21
+ this.referenceId = referenceId;
22
+ this.suggestedActions = suggestedActions;
23
+ this.name = "ContentReferenceError";
24
+ }
25
+ }
5
26
  export {
6
- ERROR_MESSAGES
27
+ ContentReferenceError,
28
+ DEFAULT_CONTENT_REFERENCE_CONFIG
7
29
  };
8
30
  //# sourceMappingURL=index42.js.map
@@ -1 +1 @@
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;"}
1
+ {"version":3,"file":"index42.js","sources":["../../src/types/content-reference.ts"],"sourcesContent":["/**\n * Content Reference System Types\n *\n * Shared interfaces for the Reference-Based Content System that handles\n * large content storage with unique reference IDs to optimize context window usage.\n */\n\n/**\n * Unique identifier for stored content references\n * Format: Cryptographically secure 32-byte identifier with base64url encoding\n */\nexport type ReferenceId = string;\n\n/**\n * Lifecycle state of a content reference\n */\nexport type ReferenceLifecycleState =\n | 'active'\n | 'expired'\n | 'cleanup_pending'\n | 'invalid';\n\n/**\n * Content types supported by the reference system\n */\nexport type ContentType =\n | 'text'\n | 'json'\n | 'html'\n | 'markdown'\n | 'binary'\n | 'unknown';\n\n/**\n * Sources that created the content reference\n */\nexport type ContentSource =\n | 'mcp_tool'\n | 'user_upload'\n | 'agent_generated'\n | 'system';\n\n/**\n * Metadata associated with stored content\n */\nexport interface ContentMetadata {\n /** Content type classification */\n contentType: ContentType;\n\n /** MIME type of the original content */\n mimeType?: string;\n\n /** Size in bytes of the stored content */\n sizeBytes: number;\n\n /** When the content was originally stored */\n createdAt: Date;\n\n /** Last time the content was accessed via reference resolution */\n lastAccessedAt: Date;\n\n /** Source that created this content reference */\n source: ContentSource;\n\n /** Name of the MCP tool that generated the content (if applicable) */\n mcpToolName?: string;\n\n /** Original filename or suggested name for the content */\n fileName?: string;\n\n /** Number of times this reference has been resolved */\n accessCount: number;\n\n /** Tags for categorization and cleanup policies */\n tags?: string[];\n\n /** Custom metadata from the source */\n customMetadata?: Record<string, unknown>;\n}\n\n/**\n * Core content reference object passed through agent context\n * Designed to be lightweight (<100 tokens) while providing enough\n * information for agent decision-making\n */\nexport interface ContentReference {\n /** Unique identifier for resolving the content */\n referenceId: ReferenceId;\n\n /** Current lifecycle state */\n state: ReferenceLifecycleState;\n\n /** Brief description or preview of the content (max 200 chars) */\n preview: string;\n\n /** Essential metadata for agent decision-making */\n metadata: Pick<\n ContentMetadata,\n 'contentType' | 'sizeBytes' | 'source' | 'fileName' | 'mimeType'\n >;\n\n /** When this reference was created */\n createdAt: Date;\n\n /** Special format indicator for reference IDs in content */\n readonly format: 'ref://{id}';\n}\n\n/**\n * Result of attempting to resolve a content reference\n */\nexport interface ReferenceResolutionResult {\n /** Whether the resolution was successful */\n success: boolean;\n\n /** The resolved content if successful */\n content?: Buffer;\n\n /** Complete metadata if successful */\n metadata?: ContentMetadata;\n\n /** Error message if resolution failed */\n error?: string;\n\n /** Specific error type for targeted error handling */\n errorType?:\n | 'not_found'\n | 'expired'\n | 'corrupted'\n | 'access_denied'\n | 'system_error';\n\n /** Suggested actions for recovery */\n suggestedActions?: string[];\n}\n\n/**\n * Configuration for content reference storage and lifecycle\n */\nexport interface ContentReferenceConfig {\n /** Size threshold above which content should be stored as references (default: 10KB) */\n sizeThresholdBytes: number;\n\n /** Maximum age for unused references before cleanup (default: 1 hour) */\n maxAgeMs: number;\n\n /** Maximum number of references to store simultaneously */\n maxReferences: number;\n\n /** Maximum total storage size for all references */\n maxTotalStorageBytes: number;\n\n /** Whether to enable automatic cleanup */\n enableAutoCleanup: boolean;\n\n /** Interval for cleanup checks in milliseconds */\n cleanupIntervalMs: number;\n\n /** Whether to persist references across restarts */\n enablePersistence: boolean;\n\n /** Storage backend configuration */\n storageBackend: 'memory' | 'filesystem' | 'hybrid';\n\n /** Cleanup policies for different content types */\n cleanupPolicies: {\n /** Policy for content marked as \"recent\" from MCP tools */\n recent: { maxAgeMs: number; priority: number };\n\n /** Policy for user-uploaded content */\n userContent: { maxAgeMs: number; priority: number };\n\n /** Policy for agent-generated content */\n agentGenerated: { maxAgeMs: number; priority: number };\n\n /** Default policy for other content */\n default: { maxAgeMs: number; priority: number };\n };\n}\n\n/**\n * Default configuration values\n */\nexport const DEFAULT_CONTENT_REFERENCE_CONFIG: ContentReferenceConfig = {\n sizeThresholdBytes: 10 * 1024,\n maxAgeMs: 60 * 60 * 1000,\n maxReferences: 100,\n maxTotalStorageBytes: 100 * 1024 * 1024,\n enableAutoCleanup: true,\n cleanupIntervalMs: 5 * 60 * 1000,\n enablePersistence: false,\n storageBackend: 'memory',\n cleanupPolicies: {\n recent: { maxAgeMs: 30 * 60 * 1000, priority: 1 },\n userContent: { maxAgeMs: 2 * 60 * 60 * 1000, priority: 2 },\n agentGenerated: { maxAgeMs: 60 * 60 * 1000, priority: 3 },\n default: { maxAgeMs: 60 * 60 * 1000, priority: 4 },\n },\n};\n\n/**\n * Statistics about content reference usage and storage\n */\nexport interface ContentReferenceStats {\n /** Total number of active references */\n activeReferences: number;\n\n /** Total storage used by all references in bytes */\n totalStorageBytes: number;\n\n /** Number of references cleaned up in last cleanup cycle */\n recentlyCleanedUp: number;\n\n /** Number of successful reference resolutions since startup */\n totalResolutions: number;\n\n /** Number of failed resolution attempts */\n failedResolutions: number;\n\n /** Average content size in bytes */\n averageContentSize: number;\n\n /** Most frequently accessed reference ID */\n mostAccessedReferenceId?: ReferenceId;\n\n /** Storage utilization percentage */\n storageUtilization: number;\n\n /** Performance metrics */\n performanceMetrics: {\n /** Average time to create a reference in milliseconds */\n averageCreationTimeMs: number;\n\n /** Average time to resolve a reference in milliseconds */\n averageResolutionTimeMs: number;\n\n /** Average cleanup time in milliseconds */\n averageCleanupTimeMs: number;\n };\n}\n\n/**\n * Error types for content reference operations\n */\nexport class ContentReferenceError extends Error {\n constructor(\n message: string,\n public readonly type: ReferenceResolutionResult['errorType'],\n public readonly referenceId?: ReferenceId,\n public readonly suggestedActions?: string[]\n ) {\n super(message);\n this.name = 'ContentReferenceError';\n }\n}\n\n/**\n * Interface for content reference storage implementations\n */\nexport interface ContentReferenceStore {\n /**\n * Store content and return a reference\n */\n storeContent(\n content: Buffer,\n metadata: Omit<\n ContentMetadata,\n 'createdAt' | 'lastAccessedAt' | 'accessCount'\n >\n ): Promise<ContentReference>;\n\n /**\n * Resolve a reference to its content\n */\n resolveReference(\n referenceId: ReferenceId\n ): Promise<ReferenceResolutionResult>;\n\n /**\n * Check if a reference exists and is valid\n */\n hasReference(referenceId: ReferenceId): Promise<boolean>;\n\n /**\n * Mark a reference for cleanup\n */\n cleanupReference(referenceId: ReferenceId): Promise<boolean>;\n\n /**\n * Get current storage statistics\n */\n getStats(): Promise<ContentReferenceStats>;\n\n /**\n * Update configuration\n */\n updateConfig(config: Partial<ContentReferenceConfig>): Promise<void>;\n\n /**\n * Perform cleanup based on current policies\n */\n performCleanup(): Promise<{ cleanedUp: number; errors: string[] }>;\n\n /**\n * Dispose of resources\n */\n dispose(): Promise<void>;\n}\n"],"names":[],"mappings":"AAuLO,MAAM,mCAA2D;AAAA,EACtE,oBAAoB,KAAK;AAAA,EACzB,UAAU,KAAK,KAAK;AAAA,EACpB,eAAe;AAAA,EACf,sBAAsB,MAAM,OAAO;AAAA,EACnC,mBAAmB;AAAA,EACnB,mBAAmB,IAAI,KAAK;AAAA,EAC5B,mBAAmB;AAAA,EACnB,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,IACf,QAAQ,EAAE,UAAU,KAAK,KAAK,KAAM,UAAU,EAAA;AAAA,IAC9C,aAAa,EAAE,UAAU,IAAI,KAAK,KAAK,KAAM,UAAU,EAAA;AAAA,IACvD,gBAAgB,EAAE,UAAU,KAAK,KAAK,KAAM,UAAU,EAAA;AAAA,IACtD,SAAS,EAAE,UAAU,KAAK,KAAK,KAAM,UAAU,EAAA;AAAA,EAAE;AAErD;AA8CO,MAAM,8BAA8B,MAAM;AAAA,EAC/C,YACE,SACgB,MACA,aACA,kBAChB;AACA,UAAM,OAAO;AAJG,SAAA,OAAA;AACA,SAAA,cAAA;AACA,SAAA,mBAAA;AAGhB,SAAK,OAAO;AAAA,EACd;AACF;"}
@@ -1,15 +1,8 @@
1
- import { EntityFormat } from "./index26.js";
2
- const ENTITY_PATTERNS = {
3
- TOPIC_REFERENCE: "the topic",
4
- TOKEN_REFERENCE: "the token"
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."
5
4
  };
6
- ({
7
- TOPIC: EntityFormat.TOPIC_ID,
8
- TOKEN: EntityFormat.TOKEN_ID,
9
- ACCOUNT: EntityFormat.ACCOUNT_ID,
10
- CONTRACT: EntityFormat.CONTRACT_ID
11
- });
12
5
  export {
13
- ENTITY_PATTERNS
6
+ ERROR_MESSAGES
14
7
  };
15
8
  //# sourceMappingURL=index43.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index43.js","sources":["../../src/constants/entity-references.ts"],"sourcesContent":["/**\n * Common entity reference patterns used across the application\n */\nexport const ENTITY_PATTERNS = {\n TOPIC_REFERENCE: 'the topic',\n TOKEN_REFERENCE: 'the token',\n ACCOUNT_REFERENCE: 'the account',\n TRANSACTION_REFERENCE: 'the transaction',\n CONTRACT_REFERENCE: 'the contract',\n} as const;\n\n/**\n * Entity type identifiers\n */\nimport { EntityFormat } from '../services/formatters/types';\n\nexport const ENTITY_TYPES = {\n TOPIC: EntityFormat.TOPIC_ID,\n TOKEN: EntityFormat.TOKEN_ID,\n ACCOUNT: EntityFormat.ACCOUNT_ID,\n TRANSACTION: 'transaction',\n CONTRACT: EntityFormat.CONTRACT_ID,\n} as const;\n"],"names":[],"mappings":";AAGO,MAAM,kBAAkB;AAAA,EAC7B,iBAAiB;AAAA,EACjB,iBAAiB;AAInB;AAAA,CAO4B;AAAA,EAC1B,OAAO,aAAa;AAAA,EACpB,OAAO,aAAa;AAAA,EACpB,SAAS,aAAa;AAAA,EAEtB,UAAU,aAAa;AACzB;"}
1
+ {"version":3,"file":"index43.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;"}
@@ -1,325 +1,15 @@
1
- import { z } from "zod";
2
- import { Logger } from "@hashgraphonline/standards-sdk";
3
- import { wrapToolWithFormValidation } from "./index32.js";
4
- import { FormGenerator } from "./index10.js";
5
- import { fieldGuidanceRegistry } from "./index13.js";
6
- import { isFormValidatable } from "@hashgraphonline/standards-agent-kit";
7
- class ToolRegistry {
8
- constructor(logger) {
9
- this.tools = /* @__PURE__ */ new Map();
10
- this.formGenerator = new FormGenerator();
11
- this.logger = logger || new Logger({ module: "ToolRegistry" });
12
- }
13
- /**
14
- * Register a tool with the registry
15
- */
16
- registerTool(tool, options = {}) {
17
- const capabilities = this.analyzeToolCapabilities(tool);
18
- const metadata = {
19
- name: tool.name,
20
- version: "1.0.0",
21
- category: options.metadata?.category || "core",
22
- description: tool.description,
23
- capabilities,
24
- dependencies: [],
25
- schema: tool.schema,
26
- ...options.metadata
27
- };
28
- try {
29
- if (!metadata.entityResolutionPreferences) {
30
- const schemaRecord = tool.schema;
31
- const rawPrefs = schemaRecord && typeof schemaRecord === "object" && schemaRecord["_entityResolutionPreferences"];
32
- if (rawPrefs && typeof rawPrefs === "object") {
33
- metadata.entityResolutionPreferences = rawPrefs;
34
- }
35
- }
36
- } catch {
37
- }
38
- try {
39
- const schemaRecord = tool.schema;
40
- const schemaDef = schemaRecord && schemaRecord._def;
41
- if (schemaDef?.typeName === "ZodObject") {
42
- const shape = typeof schemaDef.shape === "function" ? schemaDef.shape?.() || {} : schemaDef.shape || {};
43
- const metadataField = shape["metadata"];
44
- const isStringArray = !!metadataField && metadataField._def?.typeName === "ZodArray" && metadataField._def?.type?._def?.typeName === "ZodString";
45
- if (isStringArray && typeof tool.description === "string") {
46
- if (!metadata.entityResolutionPreferences) {
47
- metadata.entityResolutionPreferences = {
48
- inscription: "hrl"
49
- };
50
- }
51
- 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.";
52
- if (!tool.description.includes("Hashlink Resource Locators")) {
53
- tool.description = `${tool.description}${note}`;
54
- }
55
- }
56
- }
57
- } catch {
58
- }
59
- let finalTool = tool;
60
- let wrapper;
61
- if (this.shouldWrapTool(tool, capabilities, options)) {
62
- wrapper = wrapToolWithFormValidation(
63
- tool,
64
- this.formGenerator,
65
- {
66
- requireAllFields: false,
67
- skipFields: ["metaOptions"],
68
- ...options.wrapperConfig
69
- }
70
- );
71
- finalTool = wrapper;
72
- }
73
- try {
74
- if (metadata.entityResolutionPreferences) {
75
- finalTool["entityResolutionPreferences"] = metadata.entityResolutionPreferences;
76
- }
77
- } catch {
78
- }
79
- const entry = {
80
- tool: finalTool,
81
- metadata,
82
- wrapper,
83
- originalTool: tool,
84
- options: {
85
- priority: capabilities.priority,
86
- capability: "basic",
87
- // Default capability
88
- enabled: true,
89
- // All tools are enabled by default
90
- namespace: metadata.category
91
- }
92
- };
93
- this.tools.set(tool.name, entry);
94
- try {
95
- const metaFG = metadata.fieldGuidance;
96
- if (metaFG) {
97
- fieldGuidanceRegistry.registerToolConfiguration(metaFG);
98
- }
99
- const provider = metadata.fieldGuidanceProvider;
100
- if (provider) {
101
- const pattern = metaFG?.toolPattern ?? tool.name;
102
- fieldGuidanceRegistry.registerToolProvider(pattern, provider, {
103
- id: `${tool.name}:field-guidance-provider`,
104
- priority: 0
105
- });
106
- }
107
- } catch {
108
- }
109
- }
110
- /**
111
- * Get a tool by name
112
- */
113
- getTool(name) {
114
- return this.tools.get(name) || null;
115
- }
116
- /**
117
- * Get tools by capability
118
- */
119
- getToolsByCapability(capability, value) {
120
- const results = [];
121
- for (const entry of this.tools.values()) {
122
- if (value !== void 0) {
123
- if (entry.metadata.capabilities[capability] === value) {
124
- results.push(entry);
125
- }
126
- } else if (entry.metadata.capabilities[capability]) {
127
- results.push(entry);
128
- }
129
- }
130
- return results;
131
- }
132
- /**
133
- * Get tools by query
134
- */
135
- getToolsByQuery(query) {
136
- const results = [];
137
- for (const entry of this.tools.values()) {
138
- let matches = true;
139
- if (query.name && entry.metadata.name !== query.name) {
140
- matches = false;
141
- }
142
- if (query.category && entry.metadata.category !== query.category) {
143
- matches = false;
144
- }
145
- if (query.capabilities) {
146
- for (const [key, value] of Object.entries(query.capabilities)) {
147
- if (entry.metadata.capabilities[key] !== value) {
148
- matches = false;
149
- break;
150
- }
151
- }
152
- }
153
- if (matches) {
154
- results.push(entry);
155
- }
156
- }
157
- return results;
158
- }
159
- /**
160
- * Get all registered tools
161
- */
162
- getAllTools() {
163
- return Array.from(this.tools.values()).map((entry) => entry.tool);
164
- }
165
- /**
166
- * Get all registry entries
167
- */
168
- getAllRegistryEntries() {
169
- return Array.from(this.tools.values());
170
- }
171
- /**
172
- * Get all tool names
173
- */
174
- getToolNames() {
175
- return Array.from(this.tools.keys());
176
- }
177
- /**
178
- * Get tools by priority
179
- */
180
- getToolsByPriority(priority) {
181
- return this.getToolsByCapability("priority", priority);
182
- }
183
- /**
184
- * Get enabled tools (all tools are considered enabled by default)
185
- */
186
- getEnabledTools() {
187
- return this.getAllRegistryEntries();
188
- }
189
- /**
190
- * Get tools by namespace/category
191
- */
192
- getToolsByNamespace(namespace) {
193
- if (!namespace) {
194
- return this.getAllRegistryEntries();
195
- }
196
- return this.getToolsByQuery({ category: namespace });
197
- }
198
- /**
199
- * Check if registry has capability
200
- */
201
- hasCapability(capability) {
202
- for (const entry of this.tools.values()) {
203
- if (entry.metadata.capabilities[capability]) {
204
- return true;
205
- }
206
- }
207
- return false;
208
- }
209
- /**
210
- * Update tool options (metadata)
211
- */
212
- updateToolOptions(name, options) {
213
- const entry = this.tools.get(name);
214
- if (!entry) {
215
- return false;
216
- }
217
- entry.metadata = { ...entry.metadata, ...options };
218
- return true;
219
- }
220
- /**
221
- * Check if a tool is registered
222
- */
223
- hasTool(name) {
224
- return this.tools.has(name);
225
- }
226
- /**
227
- * Unregister a tool
228
- */
229
- unregisterTool(name) {
230
- return this.tools.delete(name);
231
- }
232
- /**
233
- * Clear all tools
234
- */
235
- clear() {
236
- this.tools.clear();
237
- }
238
- /**
239
- * Analyze tool capabilities
240
- */
241
- analyzeToolCapabilities(tool) {
242
- const implementsFormValidatable = isFormValidatable(tool);
243
- const hasRenderConfig = this.hasRenderConfig(tool);
244
- const isZodObjectLike = this.isZodObjectLike(tool.schema);
245
- const supportsFormValidation = implementsFormValidatable || hasRenderConfig;
246
- const requiresWrapper = supportsFormValidation && isZodObjectLike;
247
- let priority = "medium";
248
- let category = "core";
249
- if (supportsFormValidation && requiresWrapper) {
250
- priority = "critical";
251
- } else if (supportsFormValidation) {
252
- priority = "high";
253
- } else if (tool.description?.toLowerCase().includes("query") || tool.description?.toLowerCase().includes("search")) {
254
- priority = "low";
255
- }
256
- const toolAsAny = tool;
257
- if (tool.constructor.name.includes("MCP") || toolAsAny.isMCPTool) {
258
- category = "mcp";
259
- } else if (toolAsAny.isExtension || tool.constructor.name.includes("Extension")) {
260
- category = "extension";
261
- }
262
- return {
263
- supportsFormValidation,
264
- requiresWrapper,
265
- priority,
266
- category
267
- };
268
- }
269
- /**
270
- * Check if tool has render configuration
271
- */
272
- hasRenderConfig(tool) {
273
- const schema = tool.schema;
274
- return !!(schema && schema._renderConfig);
275
- }
276
- /**
277
- * Determine if tool should be wrapped
278
- */
279
- shouldWrapTool(tool, capabilities, options) {
280
- if (options.skipWrapper) {
281
- return false;
282
- }
283
- if (options.forceWrapper) {
284
- return true;
285
- }
286
- return capabilities.requiresWrapper;
287
- }
288
- /**
289
- * Check if schema is ZodObject-like
290
- */
291
- isZodObjectLike(schema) {
292
- if (!schema || typeof schema !== "object") {
293
- return false;
294
- }
295
- const schemaRecord = schema;
296
- const schemaDef = schemaRecord._def;
297
- return schema instanceof z.ZodObject || schemaDef?.typeName === "ZodObject" || "shape" in schemaRecord && typeof schemaRecord.shape === "object";
298
- }
299
- /**
300
- * Get statistics about the registry
301
- */
302
- getStatistics() {
303
- const stats = {
304
- totalTools: this.tools.size,
305
- wrappedTools: 0,
306
- unwrappedTools: 0,
307
- categoryCounts: { core: 0, extension: 0, mcp: 0 },
308
- priorityCounts: { low: 0, medium: 0, high: 0, critical: 0 }
309
- };
310
- for (const entry of this.tools.values()) {
311
- if (entry.wrapper) {
312
- stats.wrappedTools++;
313
- } else {
314
- stats.unwrappedTools++;
315
- }
316
- stats.categoryCounts[entry.metadata.category]++;
317
- stats.priorityCounts[entry.metadata.capabilities.priority]++;
318
- }
319
- return stats;
320
- }
321
- }
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
+ });
322
12
  export {
323
- ToolRegistry
13
+ ENTITY_PATTERNS
324
14
  };
325
15
  //# sourceMappingURL=index44.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index44.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 {\n fieldGuidanceRegistry,\n} from '../forms/field-guidance-registry';\nimport type {\n ToolFieldConfiguration as FG_ToolFieldConfiguration,\n FieldGuidanceProvider as FG_FieldGuidanceProvider,\n} from '../forms/field-guidance-registry';\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 fieldGuidance?: FG_ToolFieldConfiguration;\n fieldGuidanceProvider?: FG_FieldGuidanceProvider;\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 options?: {\n priority?: ToolCapabilities['priority'];\n capability?: string;\n enabled?: boolean;\n namespace?: string;\n };\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 options: {\n priority: capabilities.priority,\n capability: 'basic', // Default capability\n enabled: true, // All tools are enabled by default\n namespace: metadata.category,\n },\n };\n\n this.tools.set(tool.name, entry);\n\n try {\n const metaFG = metadata.fieldGuidance as FG_ToolFieldConfiguration | undefined;\n if (metaFG) {\n fieldGuidanceRegistry.registerToolConfiguration(metaFG);\n }\n const provider = metadata.fieldGuidanceProvider as FG_FieldGuidanceProvider | undefined;\n if (provider) {\n const pattern = metaFG?.toolPattern ?? tool.name;\n fieldGuidanceRegistry.registerToolProvider(pattern, provider, {\n id: `${tool.name}:field-guidance-provider`,\n priority: 0,\n });\n }\n } catch {}\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 * Get tools by priority\n */\n getToolsByPriority(priority: ToolCapabilities['priority']): ToolRegistryEntry[] {\n return this.getToolsByCapability('priority', priority);\n }\n\n /**\n * Get enabled tools (all tools are considered enabled by default)\n */\n getEnabledTools(): ToolRegistryEntry[] {\n return this.getAllRegistryEntries();\n }\n\n /**\n * Get tools by namespace/category\n */\n getToolsByNamespace(namespace?: string): ToolRegistryEntry[] {\n if (!namespace) {\n return this.getAllRegistryEntries();\n }\n return this.getToolsByQuery({ category: namespace as ToolMetadata['category'] });\n }\n\n /**\n * Check if registry has capability\n */\n hasCapability(capability: keyof ToolCapabilities): boolean {\n for (const entry of this.tools.values()) {\n if (entry.metadata.capabilities[capability]) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Update tool options (metadata)\n */\n updateToolOptions(name: string, options: Partial<ToolMetadata>): boolean {\n const entry = this.tools.get(name);\n if (!entry) {\n return false;\n }\n\n entry.metadata = { ...entry.metadata, ...options };\n return true;\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":"index44.js","sources":["../../src/constants/entity-references.ts"],"sourcesContent":["/**\n * Common entity reference patterns used across the application\n */\nexport const ENTITY_PATTERNS = {\n TOPIC_REFERENCE: 'the topic',\n TOKEN_REFERENCE: 'the token',\n ACCOUNT_REFERENCE: 'the account',\n TRANSACTION_REFERENCE: 'the transaction',\n CONTRACT_REFERENCE: 'the contract',\n} as const;\n\n/**\n * Entity type identifiers\n */\nimport { EntityFormat } from '../services/formatters/types';\n\nexport const ENTITY_TYPES = {\n TOPIC: EntityFormat.TOPIC_ID,\n TOKEN: EntityFormat.TOKEN_ID,\n ACCOUNT: EntityFormat.ACCOUNT_ID,\n TRANSACTION: 'transaction',\n CONTRACT: EntityFormat.CONTRACT_ID,\n} as const;\n"],"names":[],"mappings":";AAGO,MAAM,kBAAkB;AAAA,EAC7B,iBAAiB;AAAA,EACjB,iBAAiB;AAInB;AAAA,CAO4B;AAAA,EAC1B,OAAO,aAAa;AAAA,EACpB,OAAO,aAAa;AAAA,EACpB,SAAS,aAAa;AAAA,EAEtB,UAAU,aAAa;AACzB;"}