@hashgraphonline/standards-agent-kit 0.2.1 → 0.2.102

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 (193) hide show
  1. package/dist/cjs/builders/hcs10/hcs10-builder.d.ts +4 -0
  2. package/dist/cjs/builders/hcs2/hcs2-builder.d.ts +50 -0
  3. package/dist/cjs/builders/hcs2/index.d.ts +1 -0
  4. package/dist/cjs/builders/index.d.ts +2 -0
  5. package/dist/cjs/builders/inscriber/index.d.ts +1 -0
  6. package/dist/cjs/builders/inscriber/inscriber-builder.d.ts +46 -0
  7. package/dist/cjs/index.d.ts +1 -1
  8. package/dist/cjs/standards-agent-kit.cjs +1 -1
  9. package/dist/cjs/standards-agent-kit.cjs.map +1 -1
  10. package/dist/cjs/tools/hcs10/FindRegistrationsTool.d.ts +4 -4
  11. package/dist/cjs/tools/hcs10/RegisterAgentTool.d.ts +24 -8
  12. package/dist/cjs/tools/hcs10/index.d.ts +1 -0
  13. package/dist/cjs/tools/hcs10/natural-language-mapper.d.ts +19 -0
  14. package/dist/cjs/tools/hcs2/CreateRegistryTool.d.ts +48 -0
  15. package/dist/cjs/tools/hcs2/DeleteEntryTool.d.ts +41 -0
  16. package/dist/cjs/tools/hcs2/MigrateRegistryTool.d.ts +47 -0
  17. package/dist/cjs/tools/hcs2/QueryRegistryTool.d.ts +47 -0
  18. package/dist/cjs/tools/hcs2/RegisterEntryTool.d.ts +47 -0
  19. package/dist/cjs/tools/hcs2/UpdateEntryTool.d.ts +53 -0
  20. package/dist/cjs/tools/hcs2/base-hcs2-tools.d.ts +28 -0
  21. package/dist/cjs/tools/hcs2/hcs2-tool-params.d.ts +18 -0
  22. package/dist/cjs/tools/hcs2/index.d.ts +8 -0
  23. package/dist/cjs/tools/index.d.ts +2 -0
  24. package/dist/cjs/tools/inscriber/InscribeFromBufferTool.d.ts +77 -0
  25. package/dist/cjs/tools/inscriber/InscribeFromFileTool.d.ts +65 -0
  26. package/dist/cjs/tools/inscriber/InscribeFromUrlTool.d.ts +65 -0
  27. package/dist/cjs/tools/inscriber/InscribeHashinalTool.d.ts +125 -0
  28. package/dist/cjs/tools/inscriber/RetrieveInscriptionTool.d.ts +35 -0
  29. package/dist/cjs/tools/inscriber/base-inscriber-tools.d.ts +28 -0
  30. package/dist/cjs/tools/inscriber/index.d.ts +7 -0
  31. package/dist/cjs/tools/inscriber/inscriber-tool-params.d.ts +18 -0
  32. package/dist/es/builders/hcs10/hcs10-builder.d.ts +4 -0
  33. package/dist/es/builders/hcs2/hcs2-builder.d.ts +50 -0
  34. package/dist/es/builders/hcs2/index.d.ts +1 -0
  35. package/dist/es/builders/index.d.ts +2 -0
  36. package/dist/es/builders/inscriber/index.d.ts +1 -0
  37. package/dist/es/builders/inscriber/inscriber-builder.d.ts +46 -0
  38. package/dist/es/index.d.ts +1 -1
  39. package/dist/es/standards-agent-kit.es.js +50 -16
  40. package/dist/es/standards-agent-kit.es.js.map +1 -1
  41. package/dist/es/standards-agent-kit.es10.js +17 -23
  42. package/dist/es/standards-agent-kit.es10.js.map +1 -1
  43. package/dist/es/standards-agent-kit.es11.js +36 -58
  44. package/dist/es/standards-agent-kit.es11.js.map +1 -1
  45. package/dist/es/standards-agent-kit.es12.js +43 -18
  46. package/dist/es/standards-agent-kit.es12.js.map +1 -1
  47. package/dist/es/standards-agent-kit.es13.js +53 -16
  48. package/dist/es/standards-agent-kit.es13.js.map +1 -1
  49. package/dist/es/standards-agent-kit.es14.js +18 -28
  50. package/dist/es/standards-agent-kit.es14.js.map +1 -1
  51. package/dist/es/standards-agent-kit.es15.js +26 -12
  52. package/dist/es/standards-agent-kit.es15.js.map +1 -1
  53. package/dist/es/standards-agent-kit.es16.js +37 -241
  54. package/dist/es/standards-agent-kit.es16.js.map +1 -1
  55. package/dist/es/standards-agent-kit.es17.js +16 -136
  56. package/dist/es/standards-agent-kit.es17.js.map +1 -1
  57. package/dist/es/standards-agent-kit.es18.js +154 -27
  58. package/dist/es/standards-agent-kit.es18.js.map +1 -1
  59. package/dist/es/standards-agent-kit.es19.js +26 -22
  60. package/dist/es/standards-agent-kit.es19.js.map +1 -1
  61. package/dist/es/standards-agent-kit.es2.js +27 -13
  62. package/dist/es/standards-agent-kit.es2.js.map +1 -1
  63. package/dist/es/standards-agent-kit.es20.js +42 -3
  64. package/dist/es/standards-agent-kit.es20.js.map +1 -1
  65. package/dist/es/standards-agent-kit.es21.js +48 -0
  66. package/dist/es/standards-agent-kit.es21.js.map +1 -0
  67. package/dist/es/standards-agent-kit.es22.js +51 -0
  68. package/dist/es/standards-agent-kit.es22.js.map +1 -0
  69. package/dist/es/standards-agent-kit.es23.js +45 -0
  70. package/dist/es/standards-agent-kit.es23.js.map +1 -0
  71. package/dist/es/standards-agent-kit.es24.js +48 -0
  72. package/dist/es/standards-agent-kit.es24.js.map +1 -0
  73. package/dist/es/standards-agent-kit.es25.js +45 -0
  74. package/dist/es/standards-agent-kit.es25.js.map +1 -0
  75. package/dist/es/standards-agent-kit.es26.js +32 -0
  76. package/dist/es/standards-agent-kit.es26.js.map +1 -0
  77. package/dist/es/standards-agent-kit.es27.js +71 -0
  78. package/dist/es/standards-agent-kit.es27.js.map +1 -0
  79. package/dist/es/standards-agent-kit.es28.js +71 -0
  80. package/dist/es/standards-agent-kit.es28.js.map +1 -0
  81. package/dist/es/standards-agent-kit.es29.js +79 -0
  82. package/dist/es/standards-agent-kit.es29.js.map +1 -0
  83. package/dist/es/standards-agent-kit.es3.js +59 -296
  84. package/dist/es/standards-agent-kit.es3.js.map +1 -1
  85. package/dist/es/standards-agent-kit.es30.js +90 -0
  86. package/dist/es/standards-agent-kit.es30.js.map +1 -0
  87. package/dist/es/standards-agent-kit.es31.js +45 -0
  88. package/dist/es/standards-agent-kit.es31.js.map +1 -0
  89. package/dist/es/standards-agent-kit.es32.js +249 -0
  90. package/dist/es/standards-agent-kit.es32.js.map +1 -0
  91. package/dist/es/standards-agent-kit.es33.js +141 -0
  92. package/dist/es/standards-agent-kit.es33.js.map +1 -0
  93. package/dist/es/standards-agent-kit.es34.js +33 -0
  94. package/dist/es/standards-agent-kit.es34.js.map +1 -0
  95. package/dist/es/standards-agent-kit.es35.js +28 -0
  96. package/dist/es/standards-agent-kit.es35.js.map +1 -0
  97. package/dist/es/standards-agent-kit.es36.js +7 -0
  98. package/dist/es/standards-agent-kit.es36.js.map +1 -0
  99. package/dist/es/standards-agent-kit.es4.js +44 -20
  100. package/dist/es/standards-agent-kit.es4.js.map +1 -1
  101. package/dist/es/standards-agent-kit.es5.js +312 -121
  102. package/dist/es/standards-agent-kit.es5.js.map +1 -1
  103. package/dist/es/standards-agent-kit.es6.js +24 -23
  104. package/dist/es/standards-agent-kit.es6.js.map +1 -1
  105. package/dist/es/standards-agent-kit.es7.js +220 -20
  106. package/dist/es/standards-agent-kit.es7.js.map +1 -1
  107. package/dist/es/standards-agent-kit.es8.js +20 -29
  108. package/dist/es/standards-agent-kit.es8.js.map +1 -1
  109. package/dist/es/standards-agent-kit.es9.js +26 -36
  110. package/dist/es/standards-agent-kit.es9.js.map +1 -1
  111. package/dist/es/tools/hcs10/FindRegistrationsTool.d.ts +4 -4
  112. package/dist/es/tools/hcs10/RegisterAgentTool.d.ts +24 -8
  113. package/dist/es/tools/hcs10/index.d.ts +1 -0
  114. package/dist/es/tools/hcs10/natural-language-mapper.d.ts +19 -0
  115. package/dist/es/tools/hcs2/CreateRegistryTool.d.ts +48 -0
  116. package/dist/es/tools/hcs2/DeleteEntryTool.d.ts +41 -0
  117. package/dist/es/tools/hcs2/MigrateRegistryTool.d.ts +47 -0
  118. package/dist/es/tools/hcs2/QueryRegistryTool.d.ts +47 -0
  119. package/dist/es/tools/hcs2/RegisterEntryTool.d.ts +47 -0
  120. package/dist/es/tools/hcs2/UpdateEntryTool.d.ts +53 -0
  121. package/dist/es/tools/hcs2/base-hcs2-tools.d.ts +28 -0
  122. package/dist/es/tools/hcs2/hcs2-tool-params.d.ts +18 -0
  123. package/dist/es/tools/hcs2/index.d.ts +8 -0
  124. package/dist/es/tools/index.d.ts +2 -0
  125. package/dist/es/tools/inscriber/InscribeFromBufferTool.d.ts +77 -0
  126. package/dist/es/tools/inscriber/InscribeFromFileTool.d.ts +65 -0
  127. package/dist/es/tools/inscriber/InscribeFromUrlTool.d.ts +65 -0
  128. package/dist/es/tools/inscriber/InscribeHashinalTool.d.ts +125 -0
  129. package/dist/es/tools/inscriber/RetrieveInscriptionTool.d.ts +35 -0
  130. package/dist/es/tools/inscriber/base-inscriber-tools.d.ts +28 -0
  131. package/dist/es/tools/inscriber/index.d.ts +7 -0
  132. package/dist/es/tools/inscriber/inscriber-tool-params.d.ts +18 -0
  133. package/dist/umd/builders/hcs10/hcs10-builder.d.ts +4 -0
  134. package/dist/umd/builders/hcs2/hcs2-builder.d.ts +50 -0
  135. package/dist/umd/builders/hcs2/index.d.ts +1 -0
  136. package/dist/umd/builders/index.d.ts +2 -0
  137. package/dist/umd/builders/inscriber/index.d.ts +1 -0
  138. package/dist/umd/builders/inscriber/inscriber-builder.d.ts +46 -0
  139. package/dist/umd/index.d.ts +1 -1
  140. package/dist/umd/standards-agent-kit.umd.js +1 -1
  141. package/dist/umd/standards-agent-kit.umd.js.map +1 -1
  142. package/dist/umd/tools/hcs10/FindRegistrationsTool.d.ts +4 -4
  143. package/dist/umd/tools/hcs10/RegisterAgentTool.d.ts +24 -8
  144. package/dist/umd/tools/hcs10/index.d.ts +1 -0
  145. package/dist/umd/tools/hcs10/natural-language-mapper.d.ts +19 -0
  146. package/dist/umd/tools/hcs2/CreateRegistryTool.d.ts +48 -0
  147. package/dist/umd/tools/hcs2/DeleteEntryTool.d.ts +41 -0
  148. package/dist/umd/tools/hcs2/MigrateRegistryTool.d.ts +47 -0
  149. package/dist/umd/tools/hcs2/QueryRegistryTool.d.ts +47 -0
  150. package/dist/umd/tools/hcs2/RegisterEntryTool.d.ts +47 -0
  151. package/dist/umd/tools/hcs2/UpdateEntryTool.d.ts +53 -0
  152. package/dist/umd/tools/hcs2/base-hcs2-tools.d.ts +28 -0
  153. package/dist/umd/tools/hcs2/hcs2-tool-params.d.ts +18 -0
  154. package/dist/umd/tools/hcs2/index.d.ts +8 -0
  155. package/dist/umd/tools/index.d.ts +2 -0
  156. package/dist/umd/tools/inscriber/InscribeFromBufferTool.d.ts +77 -0
  157. package/dist/umd/tools/inscriber/InscribeFromFileTool.d.ts +65 -0
  158. package/dist/umd/tools/inscriber/InscribeFromUrlTool.d.ts +65 -0
  159. package/dist/umd/tools/inscriber/InscribeHashinalTool.d.ts +125 -0
  160. package/dist/umd/tools/inscriber/RetrieveInscriptionTool.d.ts +35 -0
  161. package/dist/umd/tools/inscriber/base-inscriber-tools.d.ts +28 -0
  162. package/dist/umd/tools/inscriber/index.d.ts +7 -0
  163. package/dist/umd/tools/inscriber/inscriber-tool-params.d.ts +18 -0
  164. package/package.json +32 -30
  165. package/src/builders/hcs10/hcs10-builder.ts +37 -16
  166. package/src/builders/hcs2/hcs2-builder.ts +148 -0
  167. package/src/builders/hcs2/index.ts +1 -0
  168. package/src/builders/index.ts +3 -1
  169. package/src/builders/inscriber/index.ts +1 -0
  170. package/src/builders/inscriber/inscriber-builder.ts +112 -0
  171. package/src/index.ts +1 -1
  172. package/src/tools/hcs10/FindRegistrationsTool.ts +19 -4
  173. package/src/tools/hcs10/RegisterAgentTool.ts +147 -9
  174. package/src/tools/hcs10/index.ts +2 -1
  175. package/src/tools/hcs10/natural-language-mapper.ts +194 -0
  176. package/src/tools/hcs2/CreateRegistryTool.ts +63 -0
  177. package/src/tools/hcs2/DeleteEntryTool.ts +58 -0
  178. package/src/tools/hcs2/MigrateRegistryTool.ts +64 -0
  179. package/src/tools/hcs2/QueryRegistryTool.ts +70 -0
  180. package/src/tools/hcs2/RegisterEntryTool.ts +63 -0
  181. package/src/tools/hcs2/UpdateEntryTool.ts +68 -0
  182. package/src/tools/hcs2/base-hcs2-tools.ts +65 -0
  183. package/src/tools/hcs2/hcs2-tool-params.ts +21 -0
  184. package/src/tools/hcs2/index.ts +8 -0
  185. package/src/tools/index.ts +3 -2
  186. package/src/tools/inscriber/InscribeFromBufferTool.ts +105 -0
  187. package/src/tools/inscriber/InscribeFromFileTool.ts +93 -0
  188. package/src/tools/inscriber/InscribeFromUrlTool.ts +93 -0
  189. package/src/tools/inscriber/InscribeHashinalTool.ts +117 -0
  190. package/src/tools/inscriber/RetrieveInscriptionTool.ts +59 -0
  191. package/src/tools/inscriber/base-inscriber-tools.ts +65 -0
  192. package/src/tools/inscriber/index.ts +7 -0
  193. package/src/tools/inscriber/inscriber-tool-params.ts +21 -0
@@ -0,0 +1,249 @@
1
+ import { updateEnvFile } from "./standards-agent-kit.es35.js";
2
+ import { Logger, ConnectionsManager } from "@hashgraphonline/standards-sdk";
3
+ class OpenConvaiState {
4
+ /**
5
+ * Creates a new OpenConvaiState instance
6
+ * @param options - Options for environment variable persistence
7
+ */
8
+ constructor(options) {
9
+ this.currentAgent = null;
10
+ this.connectionMessageTimestamps = {};
11
+ this.connectionsManager = null;
12
+ this.defaultEnvFilePath = options?.defaultEnvFilePath;
13
+ this.defaultPrefix = options?.defaultPrefix ?? "TODD";
14
+ const shouldSilence = options?.disableLogging || process.env.DISABLE_LOGGING === "true";
15
+ this.logger = new Logger({ module: "OpenConvaiState", silent: shouldSilence });
16
+ if (options?.baseClient) {
17
+ this.initializeConnectionsManager(options.baseClient);
18
+ }
19
+ }
20
+ /**
21
+ * Initializes the ConnectionsManager
22
+ * @param baseClient - HCS10BaseClient instance to use
23
+ */
24
+ initializeConnectionsManager(baseClient) {
25
+ if (!this.connectionsManager) {
26
+ this.logger.debug("Initializing ConnectionsManager");
27
+ this.connectionsManager = new ConnectionsManager({
28
+ baseClient,
29
+ logLevel: "error"
30
+ });
31
+ } else {
32
+ this.logger.debug("ConnectionsManager already initialized");
33
+ }
34
+ return this.connectionsManager;
35
+ }
36
+ /**
37
+ * Gets the ConnectionsManager instance
38
+ * @returns The ConnectionsManager instance, or null if not initialized
39
+ */
40
+ getConnectionsManager() {
41
+ return this.connectionsManager;
42
+ }
43
+ /**
44
+ * Sets the current active agent and clears any previous connection data.
45
+ * This should be called when switching between agents.
46
+ */
47
+ setCurrentAgent(agent) {
48
+ this.currentAgent = agent;
49
+ this.connectionMessageTimestamps = {};
50
+ if (this.connectionsManager) {
51
+ this.connectionsManager.clearAll();
52
+ }
53
+ }
54
+ /**
55
+ * Returns the currently active agent or null if none is set.
56
+ */
57
+ getCurrentAgent() {
58
+ return this.currentAgent;
59
+ }
60
+ /**
61
+ * Adds a new connection to the active connections list.
62
+ * Ensures no duplicates are added based on connectionTopicId.
63
+ * Initializes timestamp tracking for the connection.
64
+ */
65
+ addActiveConnection(connection) {
66
+ if (!this.connectionsManager) {
67
+ this.logger.error(
68
+ "ConnectionsManager not initialized. Call initializeConnectionsManager before adding connections."
69
+ );
70
+ throw new Error(
71
+ "ConnectionsManager not initialized. Call initializeConnectionsManager before adding connections."
72
+ );
73
+ }
74
+ const sdkConnection = {
75
+ connectionTopicId: connection.connectionTopicId,
76
+ targetAccountId: connection.targetAccountId,
77
+ targetAgentName: connection.targetAgentName,
78
+ targetInboundTopicId: connection.targetInboundTopicId,
79
+ status: this.convertConnectionStatus(connection.status || "established"),
80
+ isPending: connection.isPending || false,
81
+ needsConfirmation: connection.needsConfirmation || false,
82
+ created: connection.created || /* @__PURE__ */ new Date(),
83
+ lastActivity: connection.lastActivity,
84
+ profileInfo: connection.profileInfo,
85
+ connectionRequestId: connection.connectionRequestId,
86
+ processed: true
87
+ };
88
+ this.connectionsManager.updateOrAddConnection(sdkConnection);
89
+ this.initializeTimestampIfNeeded(connection.connectionTopicId);
90
+ }
91
+ /**
92
+ * Updates an existing connection or adds it if not found.
93
+ * Preserves existing properties when updating by merging objects.
94
+ */
95
+ updateOrAddConnection(connection) {
96
+ this.addActiveConnection(connection);
97
+ }
98
+ /**
99
+ * Returns a copy of all active connections.
100
+ */
101
+ listConnections() {
102
+ if (!this.connectionsManager) {
103
+ this.logger.debug(
104
+ "ConnectionsManager not initialized, returning empty connections list"
105
+ );
106
+ return [];
107
+ }
108
+ return this.connectionsManager.getAllConnections().map((conn) => this.convertToActiveConnection(conn));
109
+ }
110
+ /**
111
+ * Finds a connection by its identifier, which can be:
112
+ * - A 1-based index as displayed in the connection list
113
+ * - A target account ID string
114
+ * - A connection topic ID string
115
+ */
116
+ getConnectionByIdentifier(identifier) {
117
+ if (!this.connectionsManager) {
118
+ return void 0;
119
+ }
120
+ const connections = this.listConnections();
121
+ const numericIndex = parseInt(identifier) - 1;
122
+ if (!isNaN(numericIndex) && numericIndex >= 0 && numericIndex < connections.length) {
123
+ return connections[numericIndex];
124
+ }
125
+ const byTopicId = this.connectionsManager.getConnectionByTopicId(identifier);
126
+ if (byTopicId) {
127
+ return this.convertToActiveConnection(byTopicId);
128
+ }
129
+ const byAccountId = this.connectionsManager.getConnectionByAccountId(identifier);
130
+ if (byAccountId) {
131
+ return this.convertToActiveConnection(byAccountId);
132
+ }
133
+ return void 0;
134
+ }
135
+ /**
136
+ * Gets the last processed message timestamp for a connection.
137
+ * Returns 0 if no timestamp has been recorded.
138
+ */
139
+ getLastTimestamp(connectionTopicId) {
140
+ return this.connectionMessageTimestamps[connectionTopicId] || 0;
141
+ }
142
+ /**
143
+ * Updates the last processed message timestamp for a connection,
144
+ * but only if the new timestamp is more recent than the existing one.
145
+ */
146
+ updateTimestamp(connectionTopicId, timestampNanos) {
147
+ if (!(connectionTopicId in this.connectionMessageTimestamps)) {
148
+ this.connectionMessageTimestamps[connectionTopicId] = timestampNanos;
149
+ return;
150
+ }
151
+ const currentTimestamp = this.connectionMessageTimestamps[connectionTopicId];
152
+ if (timestampNanos > currentTimestamp) {
153
+ this.connectionMessageTimestamps[connectionTopicId] = timestampNanos;
154
+ }
155
+ }
156
+ /**
157
+ * Helper method to initialize timestamp tracking for a connection
158
+ * if it doesn't already exist.
159
+ */
160
+ initializeTimestampIfNeeded(connectionTopicId) {
161
+ if (!(connectionTopicId in this.connectionMessageTimestamps)) {
162
+ this.connectionMessageTimestamps[connectionTopicId] = Date.now() * 1e6;
163
+ }
164
+ }
165
+ /**
166
+ * Converts ConnectionStatus to SDK status format
167
+ */
168
+ convertConnectionStatus(status) {
169
+ switch (status) {
170
+ case "pending":
171
+ return "pending";
172
+ case "established":
173
+ return "established";
174
+ case "needs confirmation":
175
+ return "needs_confirmation";
176
+ default:
177
+ return "established";
178
+ }
179
+ }
180
+ /**
181
+ * Converts SDK Connection to ActiveConnection
182
+ */
183
+ convertToActiveConnection(conn) {
184
+ return {
185
+ targetAccountId: conn.targetAccountId,
186
+ targetAgentName: conn.targetAgentName || `Agent ${conn.targetAccountId}`,
187
+ targetInboundTopicId: conn.targetInboundTopicId || "",
188
+ connectionTopicId: conn.connectionTopicId,
189
+ status: this.convertToStateStatus(conn.status),
190
+ created: conn.created,
191
+ lastActivity: conn.lastActivity,
192
+ isPending: conn.isPending,
193
+ needsConfirmation: conn.needsConfirmation,
194
+ profileInfo: conn.profileInfo,
195
+ connectionRequestId: conn.connectionRequestId
196
+ };
197
+ }
198
+ /**
199
+ * Converts SDK status to state status format
200
+ */
201
+ convertToStateStatus(status) {
202
+ switch (status) {
203
+ case "pending":
204
+ return "pending";
205
+ case "established":
206
+ return "established";
207
+ case "needs_confirmation":
208
+ return "needs confirmation";
209
+ case "closed":
210
+ return "established";
211
+ // Mapping closed to established for compatibility
212
+ default:
213
+ return "unknown";
214
+ }
215
+ }
216
+ /**
217
+ * Persists agent data to environment variables
218
+ * @param agent - The agent data to persist
219
+ * @param options - Environment file persistence options
220
+ */
221
+ async persistAgentData(agent, options) {
222
+ if (options?.type && options.type !== "env-file") {
223
+ throw new Error(
224
+ `Unsupported persistence type: ${options.type}. Only 'env-file' is supported.`
225
+ );
226
+ }
227
+ const envFilePath = options?.envFilePath || this.defaultEnvFilePath || process.env.ENV_FILE_PATH || ".env";
228
+ const prefix = options?.prefix || this.defaultPrefix;
229
+ if (!agent.accountId || !agent.inboundTopicId || !agent.outboundTopicId) {
230
+ throw new Error("Agent data incomplete, cannot persist to environment");
231
+ }
232
+ const updates = {
233
+ [`${prefix}_ACCOUNT_ID`]: agent.accountId,
234
+ [`${prefix}_INBOUND_TOPIC_ID`]: agent.inboundTopicId,
235
+ [`${prefix}_OUTBOUND_TOPIC_ID`]: agent.outboundTopicId
236
+ };
237
+ if (agent.privateKey) {
238
+ updates[`${prefix}_PRIVATE_KEY`] = agent.privateKey;
239
+ }
240
+ if (agent.profileTopicId) {
241
+ updates[`${prefix}_PROFILE_TOPIC_ID`] = agent.profileTopicId;
242
+ }
243
+ await updateEnvFile(envFilePath, updates);
244
+ }
245
+ }
246
+ export {
247
+ OpenConvaiState
248
+ };
249
+ //# sourceMappingURL=standards-agent-kit.es32.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standards-agent-kit.es32.js","sources":["../../src/state/open-convai-state.ts"],"sourcesContent":["import { updateEnvFile } from '../utils/state-tools';\nimport {\n RegisteredAgent,\n ActiveConnection,\n IStateManager,\n AgentPersistenceOptions,\n EnvFilePersistenceOptions,\n ConnectionStatus,\n} from './state-types';\nimport {\n ConnectionsManager,\n HCS10BaseClient,\n Connection,\n Logger,\n IConnectionsManager,\n} from '@hashgraphonline/standards-sdk';\n\n/**\n * Implementation of the IStateManager interface for the OpenConvai system.\n * Manages agent state and connection information with thread safety and\n * proper timestamp tracking.\n */\nexport class OpenConvaiState implements IStateManager {\n private currentAgent: RegisteredAgent | null = null;\n private connectionMessageTimestamps: Record<string, number> = {};\n private defaultEnvFilePath?: string;\n private defaultPrefix: string;\n private connectionsManager: IConnectionsManager | null = null;\n private logger: Logger;\n\n /**\n * Creates a new OpenConvaiState instance\n * @param options - Options for environment variable persistence\n */\n constructor(options?: {\n defaultEnvFilePath?: string;\n defaultPrefix?: string;\n baseClient?: HCS10BaseClient;\n disableLogging?: boolean;\n }) {\n this.defaultEnvFilePath = options?.defaultEnvFilePath;\n this.defaultPrefix = options?.defaultPrefix ?? 'TODD';\n const shouldSilence = options?.disableLogging || process.env.DISABLE_LOGGING === 'true';\n this.logger = new Logger({ module: 'OpenConvaiState', silent: shouldSilence });\n\n // Initialize ConnectionsManager immediately if baseClient is provided\n if (options?.baseClient) {\n this.initializeConnectionsManager(options.baseClient);\n }\n }\n\n /**\n * Initializes the ConnectionsManager\n * @param baseClient - HCS10BaseClient instance to use\n */\n initializeConnectionsManager(\n baseClient: HCS10BaseClient\n ): IConnectionsManager {\n if (!this.connectionsManager) {\n this.logger.debug('Initializing ConnectionsManager');\n this.connectionsManager = new ConnectionsManager({\n baseClient,\n logLevel: 'error',\n });\n } else {\n this.logger.debug('ConnectionsManager already initialized');\n }\n return this.connectionsManager;\n }\n\n /**\n * Gets the ConnectionsManager instance\n * @returns The ConnectionsManager instance, or null if not initialized\n */\n getConnectionsManager(): IConnectionsManager | null {\n return this.connectionsManager;\n }\n\n /**\n * Sets the current active agent and clears any previous connection data.\n * This should be called when switching between agents.\n */\n setCurrentAgent(agent: RegisteredAgent | null): void {\n this.currentAgent = agent;\n this.connectionMessageTimestamps = {};\n\n // Clear connections manager when changing agents\n if (this.connectionsManager) {\n this.connectionsManager.clearAll();\n }\n }\n\n /**\n * Returns the currently active agent or null if none is set.\n */\n getCurrentAgent(): RegisteredAgent | null {\n return this.currentAgent;\n }\n\n /**\n * Adds a new connection to the active connections list.\n * Ensures no duplicates are added based on connectionTopicId.\n * Initializes timestamp tracking for the connection.\n */\n addActiveConnection(connection: ActiveConnection): void {\n if (!this.connectionsManager) {\n this.logger.error(\n 'ConnectionsManager not initialized. Call initializeConnectionsManager before adding connections.'\n );\n throw new Error(\n 'ConnectionsManager not initialized. Call initializeConnectionsManager before adding connections.'\n );\n }\n\n // Convert from ActiveConnection to Connection\n const sdkConnection: Connection = {\n connectionTopicId: connection.connectionTopicId,\n targetAccountId: connection.targetAccountId,\n targetAgentName: connection.targetAgentName,\n targetInboundTopicId: connection.targetInboundTopicId,\n status: this.convertConnectionStatus(connection.status || 'established'),\n isPending: connection.isPending || false,\n needsConfirmation: connection.needsConfirmation || false,\n created: connection.created || new Date(),\n lastActivity: connection.lastActivity,\n profileInfo: connection.profileInfo,\n connectionRequestId: connection.connectionRequestId,\n processed: true,\n };\n\n // Add to ConnectionsManager\n this.connectionsManager.updateOrAddConnection(sdkConnection);\n\n // Initialize timestamp tracking\n this.initializeTimestampIfNeeded(connection.connectionTopicId);\n }\n\n /**\n * Updates an existing connection or adds it if not found.\n * Preserves existing properties when updating by merging objects.\n */\n updateOrAddConnection(connection: ActiveConnection): void {\n this.addActiveConnection(connection);\n }\n\n /**\n * Returns a copy of all active connections.\n */\n listConnections(): ActiveConnection[] {\n if (!this.connectionsManager) {\n this.logger.debug(\n 'ConnectionsManager not initialized, returning empty connections list'\n );\n return [];\n }\n\n // Convert SDK Connections to ActiveConnection\n return this.connectionsManager\n .getAllConnections()\n .map((conn) => this.convertToActiveConnection(conn));\n }\n\n /**\n * Finds a connection by its identifier, which can be:\n * - A 1-based index as displayed in the connection list\n * - A target account ID string\n * - A connection topic ID string\n */\n getConnectionByIdentifier(identifier: string): ActiveConnection | undefined {\n if (!this.connectionsManager) {\n return undefined;\n }\n\n const connections = this.listConnections();\n\n // Check if it's a 1-based index\n const numericIndex = parseInt(identifier) - 1;\n if (\n !isNaN(numericIndex) &&\n numericIndex >= 0 &&\n numericIndex < connections.length\n ) {\n return connections[numericIndex];\n }\n\n // Check if it's a topic ID\n const byTopicId =\n this.connectionsManager.getConnectionByTopicId(identifier);\n if (byTopicId) {\n return this.convertToActiveConnection(byTopicId);\n }\n\n // Check if it's an account ID\n const byAccountId =\n this.connectionsManager.getConnectionByAccountId(identifier);\n if (byAccountId) {\n return this.convertToActiveConnection(byAccountId);\n }\n\n return undefined;\n }\n\n /**\n * Gets the last processed message timestamp for a connection.\n * Returns 0 if no timestamp has been recorded.\n */\n getLastTimestamp(connectionTopicId: string): number {\n return this.connectionMessageTimestamps[connectionTopicId] || 0;\n }\n\n /**\n * Updates the last processed message timestamp for a connection,\n * but only if the new timestamp is more recent than the existing one.\n */\n updateTimestamp(connectionTopicId: string, timestampNanos: number): void {\n // Initialize if this is first update and skip the comparison logic\n if (!(connectionTopicId in this.connectionMessageTimestamps)) {\n this.connectionMessageTimestamps[connectionTopicId] = timestampNanos;\n return;\n }\n\n // Otherwise, only update if newer\n const currentTimestamp =\n this.connectionMessageTimestamps[connectionTopicId];\n if (timestampNanos > currentTimestamp) {\n this.connectionMessageTimestamps[connectionTopicId] = timestampNanos;\n }\n }\n\n /**\n * Helper method to initialize timestamp tracking for a connection\n * if it doesn't already exist.\n */\n private initializeTimestampIfNeeded(connectionTopicId: string): void {\n if (!(connectionTopicId in this.connectionMessageTimestamps)) {\n this.connectionMessageTimestamps[connectionTopicId] =\n Date.now() * 1_000_000;\n }\n }\n\n /**\n * Converts ConnectionStatus to SDK status format\n */\n private convertConnectionStatus(\n status: string\n ): 'pending' | 'established' | 'needs_confirmation' | 'closed' {\n switch (status) {\n case 'pending':\n return 'pending';\n case 'established':\n return 'established';\n case 'needs confirmation':\n return 'needs_confirmation';\n default:\n return 'established';\n }\n }\n\n /**\n * Converts SDK Connection to ActiveConnection\n */\n private convertToActiveConnection(conn: Connection): ActiveConnection {\n return {\n targetAccountId: conn.targetAccountId,\n targetAgentName: conn.targetAgentName || `Agent ${conn.targetAccountId}`,\n targetInboundTopicId: conn.targetInboundTopicId || '',\n connectionTopicId: conn.connectionTopicId,\n status: this.convertToStateStatus(conn.status),\n created: conn.created,\n lastActivity: conn.lastActivity,\n isPending: conn.isPending,\n needsConfirmation: conn.needsConfirmation,\n profileInfo: conn.profileInfo,\n connectionRequestId: conn.connectionRequestId,\n };\n }\n\n /**\n * Converts SDK status to state status format\n */\n private convertToStateStatus(status: string): ConnectionStatus {\n switch (status) {\n case 'pending':\n return 'pending';\n case 'established':\n return 'established';\n case 'needs_confirmation':\n return 'needs confirmation';\n case 'closed':\n return 'established'; // Mapping closed to established for compatibility\n default:\n return 'unknown';\n }\n }\n\n /**\n * Persists agent data to environment variables\n * @param agent - The agent data to persist\n * @param options - Environment file persistence options\n */\n async persistAgentData(\n agent: RegisteredAgent,\n options?: AgentPersistenceOptions\n ): Promise<void> {\n if (options?.type && options.type !== 'env-file') {\n throw new Error(\n `Unsupported persistence type: ${options.type}. Only 'env-file' is supported.`\n );\n }\n\n const envFilePath =\n (options as EnvFilePersistenceOptions)?.envFilePath ||\n this.defaultEnvFilePath ||\n process.env.ENV_FILE_PATH ||\n '.env';\n\n if (!envFilePath) {\n throw new Error(\n 'Environment file path could not be determined for agent data persistence'\n );\n }\n\n const prefix =\n (options as EnvFilePersistenceOptions)?.prefix || this.defaultPrefix;\n\n if (!agent.accountId || !agent.inboundTopicId || !agent.outboundTopicId) {\n throw new Error('Agent data incomplete, cannot persist to environment');\n }\n\n const updates: Record<string, string> = {\n [`${prefix}_ACCOUNT_ID`]: agent.accountId,\n [`${prefix}_INBOUND_TOPIC_ID`]: agent.inboundTopicId,\n [`${prefix}_OUTBOUND_TOPIC_ID`]: agent.outboundTopicId,\n };\n\n if (agent.privateKey) {\n updates[`${prefix}_PRIVATE_KEY`] = agent.privateKey;\n }\n\n if (agent.profileTopicId) {\n updates[`${prefix}_PROFILE_TOPIC_ID`] = agent.profileTopicId;\n }\n\n await updateEnvFile(envFilePath, updates);\n }\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,141 @@
1
+ import { ServerSigner, HederaAgentKit } from "hedera-agent-kit";
2
+ import { HCS10Builder } from "./standards-agent-kit.es2.js";
3
+ import { RegisterAgentTool } from "./standards-agent-kit.es7.js";
4
+ import { FindRegistrationsTool } from "./standards-agent-kit.es12.js";
5
+ import { InitiateConnectionTool } from "./standards-agent-kit.es9.js";
6
+ import { ListConnectionsTool } from "./standards-agent-kit.es10.js";
7
+ import { SendMessageToConnectionTool } from "./standards-agent-kit.es8.js";
8
+ import { CheckMessagesTool } from "./standards-agent-kit.es11.js";
9
+ import { ConnectionMonitorTool } from "./standards-agent-kit.es13.js";
10
+ import { ManageConnectionRequestsTool } from "./standards-agent-kit.es14.js";
11
+ import { AcceptConnectionRequestTool } from "./standards-agent-kit.es15.js";
12
+ import { RetrieveProfileTool } from "./standards-agent-kit.es16.js";
13
+ import { ListUnapprovedConnectionRequestsTool } from "./standards-agent-kit.es17.js";
14
+ import { OpenConvaiState } from "./standards-agent-kit.es32.js";
15
+ import { Logger } from "@hashgraphonline/standards-sdk";
16
+ import { ENV_FILE_PATH } from "./standards-agent-kit.es35.js";
17
+ const initializeStandardsAgentKit = async (options) => {
18
+ const config = options?.clientConfig || {};
19
+ const operatorId = config.operatorId || process.env.HEDERA_OPERATOR_ID;
20
+ const operatorPrivateKey = config.operatorKey || process.env.HEDERA_OPERATOR_KEY;
21
+ const networkEnv = config.network || process.env.HEDERA_NETWORK || "testnet";
22
+ let network;
23
+ if (networkEnv === "mainnet") {
24
+ network = "mainnet";
25
+ } else if (networkEnv === "testnet") {
26
+ network = "testnet";
27
+ } else {
28
+ console.warn(
29
+ `Unsupported network specified: '${networkEnv}'. Defaulting to 'testnet'.`
30
+ );
31
+ network = "testnet";
32
+ }
33
+ if (!operatorId || !operatorPrivateKey) {
34
+ throw new Error(
35
+ "Operator ID and private key must be provided either through options or environment variables."
36
+ );
37
+ }
38
+ const shouldSilence = process.env.DISABLE_LOGGING === "true";
39
+ const logger = Logger.getInstance({
40
+ level: config.logLevel || "info",
41
+ silent: shouldSilence
42
+ });
43
+ const stateManager = options?.stateManager || new OpenConvaiState({
44
+ defaultEnvFilePath: ENV_FILE_PATH,
45
+ defaultPrefix: "TODD"
46
+ });
47
+ logger.info("State manager initialized");
48
+ const signer = new ServerSigner(operatorId, operatorPrivateKey, network);
49
+ const hederaKit = new HederaAgentKit(signer);
50
+ await hederaKit.initialize();
51
+ logger.info(`HederaAgentKit initialized for ${operatorId} on ${network}`);
52
+ const hcs10Builder = new HCS10Builder(hederaKit, stateManager, {
53
+ useEncryption: config.useEncryption,
54
+ registryUrl: config.registryUrl,
55
+ logLevel: config.logLevel
56
+ });
57
+ let monitoringHederaKit;
58
+ let monitoringHcs10Builder;
59
+ if (options?.monitoringClient) {
60
+ const monitoringSigner = new ServerSigner(operatorId, operatorPrivateKey, network);
61
+ monitoringHederaKit = new HederaAgentKit(monitoringSigner);
62
+ await monitoringHederaKit.initialize();
63
+ monitoringHcs10Builder = new HCS10Builder(monitoringHederaKit, stateManager, {
64
+ useEncryption: config.useEncryption,
65
+ registryUrl: config.registryUrl,
66
+ logLevel: "error"
67
+ });
68
+ logger.info("Monitoring client initialized");
69
+ }
70
+ const tools = {};
71
+ tools.registerAgentTool = new RegisterAgentTool({
72
+ hederaKit,
73
+ hcs10Builder,
74
+ logger: void 0
75
+ });
76
+ if (options?.createAllTools) {
77
+ tools.findRegistrationsTool = new FindRegistrationsTool({
78
+ hederaKit,
79
+ hcs10Builder,
80
+ logger: void 0
81
+ });
82
+ tools.retrieveProfileTool = new RetrieveProfileTool({
83
+ hederaKit,
84
+ hcs10Builder,
85
+ logger: void 0
86
+ });
87
+ tools.initiateConnectionTool = new InitiateConnectionTool({
88
+ hederaKit,
89
+ hcs10Builder,
90
+ logger: void 0
91
+ });
92
+ tools.listConnectionsTool = new ListConnectionsTool({
93
+ hederaKit,
94
+ hcs10Builder,
95
+ logger: void 0
96
+ });
97
+ tools.sendMessageToConnectionTool = new SendMessageToConnectionTool({
98
+ hederaKit,
99
+ hcs10Builder,
100
+ logger: void 0
101
+ });
102
+ tools.checkMessagesTool = new CheckMessagesTool({
103
+ hederaKit,
104
+ hcs10Builder,
105
+ logger: void 0
106
+ });
107
+ tools.connectionMonitorTool = new ConnectionMonitorTool({
108
+ hederaKit: monitoringHederaKit || hederaKit,
109
+ hcs10Builder: monitoringHcs10Builder || hcs10Builder,
110
+ logger: void 0
111
+ });
112
+ tools.manageConnectionRequestsTool = new ManageConnectionRequestsTool({
113
+ hederaKit,
114
+ hcs10Builder,
115
+ logger: void 0
116
+ });
117
+ tools.acceptConnectionRequestTool = new AcceptConnectionRequestTool({
118
+ hederaKit,
119
+ hcs10Builder,
120
+ logger: void 0
121
+ });
122
+ tools.listUnapprovedConnectionRequestsTool = new ListUnapprovedConnectionRequestsTool({
123
+ hederaKit,
124
+ hcs10Builder,
125
+ logger: void 0
126
+ });
127
+ logger.info("All tools initialized");
128
+ }
129
+ return {
130
+ hederaKit,
131
+ hcs10Builder,
132
+ monitoringHederaKit,
133
+ monitoringHcs10Builder,
134
+ tools,
135
+ stateManager
136
+ };
137
+ };
138
+ export {
139
+ initializeStandardsAgentKit
140
+ };
141
+ //# sourceMappingURL=standards-agent-kit.es33.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standards-agent-kit.es33.js","sources":["../../src/init/init.ts"],"sourcesContent":["import { HederaAgentKit, ServerSigner } from 'hedera-agent-kit';\nimport { HCS10Builder } from '../builders/hcs10/hcs10-builder';\nimport { RegisterAgentTool } from '../tools/hcs10/RegisterAgentTool';\nimport { FindRegistrationsTool } from '../tools/hcs10/FindRegistrationsTool';\nimport { InitiateConnectionTool } from '../tools/hcs10/InitiateConnectionTool';\nimport { ListConnectionsTool } from '../tools/hcs10/ListConnectionsTool';\nimport { SendMessageToConnectionTool } from '../tools/hcs10/SendMessageToConnectionTool';\nimport { CheckMessagesTool } from '../tools/hcs10/CheckMessagesTool';\nimport { ConnectionMonitorTool } from '../tools/hcs10/ConnectionMonitorTool';\nimport { ManageConnectionRequestsTool } from '../tools/hcs10/ManageConnectionRequestsTool';\nimport { AcceptConnectionRequestTool } from '../tools/hcs10/AcceptConnectionRequestTool';\nimport { RetrieveProfileTool } from '../tools/hcs10/RetrieveProfileTool';\nimport { ListUnapprovedConnectionRequestsTool } from '../tools/hcs10/ListUnapprovedConnectionRequestsTool';\nimport { IStateManager } from '../state/state-types';\nimport { OpenConvaiState } from '../state/open-convai-state';\nimport { Logger } from '@hashgraphonline/standards-sdk';\nimport { ENV_FILE_PATH } from '../utils/state-tools';\n\nexport interface HCS10ClientConfig {\n operatorId?: string;\n operatorKey?: string;\n network?: 'mainnet' | 'testnet';\n useEncryption?: boolean;\n registryUrl?: string;\n logLevel?: 'debug' | 'info' | 'warn' | 'error';\n}\n\nexport interface HCS10InitializationOptions {\n clientConfig?: HCS10ClientConfig;\n stateManager?: IStateManager;\n createAllTools?: boolean;\n monitoringClient?: boolean;\n}\n\n/**\n * Tool collection containing all available tools from the standards-agent-kit\n */\nexport interface HCS10Tools {\n registerAgentTool: RegisterAgentTool;\n findRegistrationsTool: FindRegistrationsTool;\n retrieveProfileTool: RetrieveProfileTool;\n initiateConnectionTool: InitiateConnectionTool;\n listConnectionsTool: ListConnectionsTool;\n sendMessageToConnectionTool: SendMessageToConnectionTool;\n checkMessagesTool: CheckMessagesTool;\n connectionMonitorTool: ConnectionMonitorTool;\n manageConnectionRequestsTool: ManageConnectionRequestsTool;\n acceptConnectionRequestTool: AcceptConnectionRequestTool;\n listUnapprovedConnectionRequestsTool: ListUnapprovedConnectionRequestsTool;\n}\n\n/**\n * Initializes the HCS10 client and returns pre-registered LangChain tools.\n *\n * @param options - Initialization options\n * @returns Object containing hederaKit, hcs10Builder and requested tools\n */\nexport const initializeStandardsAgentKit = async (\n options?: HCS10InitializationOptions\n): Promise<{\n hederaKit: HederaAgentKit;\n hcs10Builder: HCS10Builder;\n monitoringHederaKit?: HederaAgentKit;\n monitoringHcs10Builder?: HCS10Builder;\n tools: Partial<HCS10Tools>;\n stateManager: IStateManager;\n}> => {\n const config = options?.clientConfig || {};\n\n const operatorId = config.operatorId || process.env.HEDERA_OPERATOR_ID;\n const operatorPrivateKey =\n config.operatorKey || process.env.HEDERA_OPERATOR_KEY;\n\n const networkEnv = config.network || process.env.HEDERA_NETWORK || 'testnet';\n\n let network: 'mainnet' | 'testnet';\n if (networkEnv === 'mainnet') {\n network = 'mainnet';\n } else if (networkEnv === 'testnet') {\n network = 'testnet';\n } else {\n console.warn(\n `Unsupported network specified: '${networkEnv}'. Defaulting to 'testnet'.`\n );\n network = 'testnet';\n }\n\n if (!operatorId || !operatorPrivateKey) {\n throw new Error(\n 'Operator ID and private key must be provided either through options or environment variables.'\n );\n }\n\n const shouldSilence = process.env.DISABLE_LOGGING === 'true';\n const logger = Logger.getInstance({\n level: config.logLevel || 'info',\n silent: shouldSilence,\n });\n\n const stateManager =\n options?.stateManager ||\n new OpenConvaiState({\n defaultEnvFilePath: ENV_FILE_PATH,\n defaultPrefix: 'TODD',\n });\n logger.info('State manager initialized');\n\n // Create HederaAgentKit\n const signer = new ServerSigner(operatorId, operatorPrivateKey, network);\n const hederaKit = new HederaAgentKit(signer);\n await hederaKit.initialize();\n logger.info(`HederaAgentKit initialized for ${operatorId} on ${network}`);\n\n // Create HCS10Builder\n const hcs10Builder = new HCS10Builder(hederaKit, stateManager, {\n useEncryption: config.useEncryption,\n registryUrl: config.registryUrl,\n logLevel: config.logLevel,\n });\n\n let monitoringHederaKit: HederaAgentKit | undefined;\n let monitoringHcs10Builder: HCS10Builder | undefined;\n\n if (options?.monitoringClient) {\n const monitoringSigner = new ServerSigner(operatorId, operatorPrivateKey, network);\n monitoringHederaKit = new HederaAgentKit(monitoringSigner);\n await monitoringHederaKit.initialize();\n monitoringHcs10Builder = new HCS10Builder(monitoringHederaKit, stateManager, {\n useEncryption: config.useEncryption,\n registryUrl: config.registryUrl,\n logLevel: 'error',\n });\n logger.info('Monitoring client initialized');\n }\n\n const tools: Partial<HCS10Tools> = {};\n\n // Always create RegisterAgentTool\n tools.registerAgentTool = new RegisterAgentTool({\n hederaKit,\n hcs10Builder,\n logger: undefined,\n });\n\n if (options?.createAllTools) {\n tools.findRegistrationsTool = new FindRegistrationsTool({\n hederaKit,\n hcs10Builder,\n logger: undefined,\n });\n tools.retrieveProfileTool = new RetrieveProfileTool({\n hederaKit,\n hcs10Builder,\n logger: undefined,\n });\n tools.initiateConnectionTool = new InitiateConnectionTool({\n hederaKit,\n hcs10Builder,\n logger: undefined,\n });\n tools.listConnectionsTool = new ListConnectionsTool({\n hederaKit,\n hcs10Builder,\n logger: undefined,\n });\n tools.sendMessageToConnectionTool = new SendMessageToConnectionTool({\n hederaKit,\n hcs10Builder,\n logger: undefined,\n });\n tools.checkMessagesTool = new CheckMessagesTool({\n hederaKit,\n hcs10Builder,\n logger: undefined,\n });\n tools.connectionMonitorTool = new ConnectionMonitorTool({\n hederaKit: monitoringHederaKit || hederaKit,\n hcs10Builder: monitoringHcs10Builder || hcs10Builder,\n logger: undefined,\n });\n tools.manageConnectionRequestsTool = new ManageConnectionRequestsTool({\n hederaKit,\n hcs10Builder,\n logger: undefined,\n });\n tools.acceptConnectionRequestTool = new AcceptConnectionRequestTool({\n hederaKit,\n hcs10Builder,\n logger: undefined,\n });\n tools.listUnapprovedConnectionRequestsTool =\n new ListUnapprovedConnectionRequestsTool({\n hederaKit,\n hcs10Builder,\n logger: undefined,\n });\n\n logger.info('All tools initialized');\n }\n\n return {\n hederaKit,\n hcs10Builder,\n monitoringHederaKit,\n monitoringHcs10Builder,\n tools,\n stateManager,\n };\n};"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { BasePlugin, HederaGetHbarPriceTool } from "hedera-agent-kit";
2
+ import { HederaGetHbarPriceTool as HederaGetHbarPriceTool2 } from "hedera-agent-kit";
3
+ class HbarPricePlugin extends BasePlugin {
4
+ constructor() {
5
+ super(...arguments);
6
+ this.id = "hedera-hbar-price";
7
+ this.name = "Hedera HBAR Price Plugin";
8
+ this.description = "Provides tools to interact with Hedera network data, specifically HBAR price.";
9
+ this.version = "1.0.0";
10
+ this.author = "Hashgraph Online";
11
+ this.tools = [];
12
+ }
13
+ async initialize(context) {
14
+ await super.initialize(context);
15
+ this.initializeTools();
16
+ }
17
+ initializeTools() {
18
+ this.tools = [
19
+ new HederaGetHbarPriceTool({
20
+ hederaKit: this.context.config.hederaKit,
21
+ logger: this.context.logger
22
+ })
23
+ ];
24
+ }
25
+ getTools() {
26
+ return this.tools;
27
+ }
28
+ }
29
+ export {
30
+ HederaGetHbarPriceTool2 as GetHbarPriceTool,
31
+ HbarPricePlugin
32
+ };
33
+ //# sourceMappingURL=standards-agent-kit.es34.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standards-agent-kit.es34.js","sources":["../../src/plugins/hedera/HbarPricePlugin.ts"],"sourcesContent":["// Re-export the HBAR price tool from hedera-agent-kit\nexport { HederaGetHbarPriceTool as GetHbarPriceTool } from 'hedera-agent-kit';\n\nimport { BasePlugin, GenericPluginContext, HederaTool, HederaAgentKit } from 'hedera-agent-kit';\nimport { HederaGetHbarPriceTool } from 'hedera-agent-kit';\n\n/**\n * Plugin to provide tools related to Hedera network information, like HBAR price.\n * Uses the built-in HederaGetHbarPriceTool from hedera-agent-kit.\n */\nexport class HbarPricePlugin extends BasePlugin<GenericPluginContext> {\n id = 'hedera-hbar-price';\n name = 'Hedera HBAR Price Plugin';\n description = 'Provides tools to interact with Hedera network data, specifically HBAR price.';\n version = '1.0.0';\n author = 'Hashgraph Online';\n\n private tools: HederaTool[] = [];\n\n override async initialize(context: GenericPluginContext): Promise<void> {\n await super.initialize(context);\n this.initializeTools();\n }\n\n private initializeTools(): void {\n this.tools = [\n new HederaGetHbarPriceTool({\n hederaKit: this.context.config.hederaKit as HederaAgentKit,\n logger: this.context.logger\n })\n ];\n }\n\n getTools(): HederaTool[] {\n return this.tools;\n }\n}"],"names":["HederaGetHbarPriceTool"],"mappings":";;AAUO,MAAM,wBAAwB,WAAiC;AAAA,EAA/D,cAAA;AAAA,UAAA,GAAA,SAAA;AACL,SAAA,KAAK;AACL,SAAA,OAAO;AACP,SAAA,cAAc;AACd,SAAA,UAAU;AACV,SAAA,SAAS;AAET,SAAQ,QAAsB,CAAA;AAAA,EAAC;AAAA,EAE/B,MAAe,WAAW,SAA8C;AACtE,UAAM,MAAM,WAAW,OAAO;AAC9B,SAAK,gBAAA;AAAA,EACP;AAAA,EAEQ,kBAAwB;AAC9B,SAAK,QAAQ;AAAA,MACX,IAAIA,uBAAuB;AAAA,QACzB,WAAW,KAAK,QAAQ,OAAO;AAAA,QAC/B,QAAQ,KAAK,QAAQ;AAAA,MAAA,CACtB;AAAA,IAAA;AAAA,EAEL;AAAA,EAEA,WAAyB;AACvB,WAAO,KAAK;AAAA,EACd;AACF;"}
@@ -0,0 +1,28 @@
1
+ import "@hashgraphonline/standards-sdk";
2
+ import fs from "fs";
3
+ import path from "path";
4
+ const ENV_FILE_PATH = path.join(process.cwd(), ".env");
5
+ async function updateEnvFile(envFilePath, variables) {
6
+ let envContent = "";
7
+ if (fs.existsSync(envFilePath)) {
8
+ envContent = fs.readFileSync(envFilePath, "utf8");
9
+ }
10
+ const envLines = envContent.split("\n");
11
+ const updatedLines = [...envLines];
12
+ for (const [key, value] of Object.entries(variables)) {
13
+ const lineIndex = updatedLines.findIndex(
14
+ (line) => line.startsWith(`${key}=`)
15
+ );
16
+ if (lineIndex !== -1) {
17
+ updatedLines[lineIndex] = `${key}=${value}`;
18
+ } else {
19
+ updatedLines.push(`${key}=${value}`);
20
+ }
21
+ }
22
+ fs.writeFileSync(envFilePath, updatedLines.join("\n"));
23
+ }
24
+ export {
25
+ ENV_FILE_PATH,
26
+ updateEnvFile
27
+ };
28
+ //# sourceMappingURL=standards-agent-kit.es35.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standards-agent-kit.es35.js","sources":["../../src/utils/state-tools.ts"],"sourcesContent":["import {\n HCS10Client,\n AgentBuilder,\n Logger,\n} from '@hashgraphonline/standards-sdk';\nimport fs from 'fs';\nimport path from 'path';\nimport { ensureAgentHasEnoughHbar } from './ensure-agent-has-hbar';\n\nexport const ENV_FILE_PATH = path.join(process.cwd(), '.env');\n\nexport interface AgentData {\n accountId: string;\n operatorId: string;\n inboundTopicId: string;\n outboundTopicId: string;\n client: HCS10Client;\n}\n\nexport interface RegistrationProgressData {\n registered: boolean;\n accountId?: string;\n privateKey?: string;\n publicKey?: string;\n inboundTopicId?: string;\n outboundTopicId?: string;\n}\n\nexport async function getAgentFromEnv(\n logger: Logger,\n baseClient: HCS10Client,\n agentName: string,\n envPrefix: string\n): Promise<AgentData | null> {\n const accountIdEnvVar = `${envPrefix}_ACCOUNT_ID`;\n const privateKeyEnvVar = `${envPrefix}_PRIVATE_KEY`;\n const inboundTopicIdEnvVar = `${envPrefix}_INBOUND_TOPIC_ID`;\n const outboundTopicIdEnvVar = `${envPrefix}_OUTBOUND_TOPIC_ID`;\n\n const accountId = process.env[accountIdEnvVar];\n const privateKey = process.env[privateKeyEnvVar];\n const inboundTopicId = process.env[inboundTopicIdEnvVar];\n const outboundTopicId = process.env[outboundTopicIdEnvVar];\n\n if (!accountId || !privateKey || !inboundTopicId || !outboundTopicId) {\n logger.info(`${agentName} agent not found in environment variables`);\n return null;\n }\n\n logger.info(`${agentName} agent found in environment variables`);\n logger.info(`${agentName} account ID: ${accountId}`);\n logger.info(`${agentName} inbound topic ID: ${inboundTopicId}`);\n logger.info(`${agentName} outbound topic ID: ${outboundTopicId}`);\n\n const client = new HCS10Client({\n network: 'testnet',\n operatorId: accountId,\n operatorPrivateKey: privateKey,\n guardedRegistryBaseUrl: process.env.REGISTRY_URL,\n prettyPrint: true,\n logLevel: 'debug',\n });\n\n await ensureAgentHasEnoughHbar(logger, baseClient, accountId, agentName);\n\n return {\n accountId,\n operatorId: `${inboundTopicId}@${accountId}`,\n inboundTopicId,\n outboundTopicId,\n client,\n };\n}\n\nexport async function createAgent(\n logger: Logger,\n baseClient: HCS10Client,\n agentName: string,\n agentBuilder: AgentBuilder,\n envPrefix: string\n): Promise<AgentData | null> {\n try {\n logger.info(`Creating ${agentName} agent...`);\n\n const result = await baseClient.createAndRegisterAgent(agentBuilder);\n\n if (!result.metadata) {\n logger.error(`${agentName} agent creation failed`);\n return null;\n }\n\n logger.info(`${agentName} agent created successfully`);\n logger.info(`${agentName} account ID: ${result.metadata.accountId}`);\n logger.info(`${agentName} private key: ${result.metadata.privateKey}`);\n logger.info(\n `${agentName} inbound topic ID: ${result.metadata.inboundTopicId}`\n );\n logger.info(\n `${agentName} outbound topic ID: ${result.metadata.outboundTopicId}`\n );\n\n const envVars = {\n [`${envPrefix}_ACCOUNT_ID`]: result.metadata.accountId,\n [`${envPrefix}_PRIVATE_KEY`]: result.metadata.privateKey,\n [`${envPrefix}_INBOUND_TOPIC_ID`]: result.metadata.inboundTopicId,\n [`${envPrefix}_OUTBOUND_TOPIC_ID`]: result.metadata.outboundTopicId,\n };\n\n await updateEnvFile(ENV_FILE_PATH, envVars);\n\n const client = new HCS10Client({\n network: 'testnet',\n operatorId: result.metadata.accountId,\n operatorPrivateKey: result.metadata.privateKey,\n guardedRegistryBaseUrl: process.env.REGISTRY_URL,\n prettyPrint: true,\n logLevel: 'debug',\n });\n\n return {\n accountId: result.metadata.accountId,\n operatorId: `${result.metadata.inboundTopicId}@${result.metadata.accountId}`,\n inboundTopicId: result.metadata.inboundTopicId,\n outboundTopicId: result.metadata.outboundTopicId,\n client,\n };\n } catch (error) {\n console.log('error', error, baseClient);\n logger.error(`Error creating ${agentName} agent:`, error);\n return null;\n }\n}\n\nexport async function updateEnvFile(\n envFilePath: string,\n variables: Record<string, string>\n): Promise<void> {\n let envContent = '';\n\n if (fs.existsSync(envFilePath)) {\n envContent = fs.readFileSync(envFilePath, 'utf8');\n }\n\n const envLines = envContent.split('\\n');\n const updatedLines = [...envLines];\n\n for (const [key, value] of Object.entries(variables)) {\n const lineIndex = updatedLines.findIndex((line) =>\n line.startsWith(`${key}=`)\n );\n\n if (lineIndex !== -1) {\n updatedLines[lineIndex] = `${key}=${value}`;\n } else {\n updatedLines.push(`${key}=${value}`);\n }\n }\n\n fs.writeFileSync(envFilePath, updatedLines.join('\\n'));\n}\n"],"names":[],"mappings":";;;AASO,MAAM,gBAAgB,KAAK,KAAK,QAAQ,IAAA,GAAO,MAAM;AA4H5D,eAAsB,cACpB,aACA,WACe;AACf,MAAI,aAAa;AAEjB,MAAI,GAAG,WAAW,WAAW,GAAG;AAC9B,iBAAa,GAAG,aAAa,aAAa,MAAM;AAAA,EAClD;AAEA,QAAM,WAAW,WAAW,MAAM,IAAI;AACtC,QAAM,eAAe,CAAC,GAAG,QAAQ;AAEjC,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,SAAS,GAAG;AACpD,UAAM,YAAY,aAAa;AAAA,MAAU,CAAC,SACxC,KAAK,WAAW,GAAG,GAAG,GAAG;AAAA,IAAA;AAG3B,QAAI,cAAc,IAAI;AACpB,mBAAa,SAAS,IAAI,GAAG,GAAG,IAAI,KAAK;AAAA,IAC3C,OAAO;AACL,mBAAa,KAAK,GAAG,GAAG,IAAI,KAAK,EAAE;AAAA,IACrC;AAAA,EACF;AAEA,KAAG,cAAc,aAAa,aAAa,KAAK,IAAI,CAAC;AACvD;"}
@@ -0,0 +1,7 @@
1
+ function encryptMessage(message) {
2
+ return message;
3
+ }
4
+ export {
5
+ encryptMessage
6
+ };
7
+ //# sourceMappingURL=standards-agent-kit.es36.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standards-agent-kit.es36.js","sources":["../../src/utils/Encryption.ts"],"sourcesContent":["// src/utils/Encryption.ts\n/**\n * Placeholder for encryption functionality.\n * Currently, encryption is disabled. The useEncryption flag is false by default.\n * TODO: Implement actual encryption/decryption logic.\n */\n\nexport function encryptMessage(message: string): string {\n // TODO: Add encryption logic here if useEncryption flag is true.\n return message; // currently returns plaintext.\n}\n\nexport function decryptMessage(encryptedMessage: string): string {\n // TODO: Add decryption logic here.\n return encryptedMessage;\n}\n"],"names":[],"mappings":"AAOO,SAAS,eAAe,SAAyB;AAEpD,SAAO;AACX;"}
@@ -1,32 +1,56 @@
1
- import { BaseHederaTransactionTool, BaseHederaQueryTool } from "hedera-agent-kit";
2
- class BaseHCS10TransactionTool extends BaseHederaTransactionTool {
3
- constructor(params) {
4
- super(params);
5
- this.namespace = "hcs10";
6
- this.hcs10Builder = params.hcs10Builder;
1
+ import { BaseServiceBuilder } from "hedera-agent-kit";
2
+ import { inscribe, inscribeWithSigner, retrieveInscription } from "@hashgraphonline/standards-sdk";
3
+ class InscriberBuilder extends BaseServiceBuilder {
4
+ constructor(hederaKit) {
5
+ super(hederaKit);
7
6
  }
8
7
  /**
9
- * Override to return the HCS10Builder
8
+ * Get or create Inscription SDK - temporarily returns null since we don't have the actual SDK
10
9
  */
11
- getServiceBuilder() {
12
- return this.hcs10Builder;
10
+ async getInscriptionSDK(options) {
11
+ return null;
13
12
  }
14
- }
15
- class BaseHCS10QueryTool extends BaseHederaQueryTool {
16
- constructor(params) {
17
- super(params);
18
- this.namespace = "hcs10";
19
- this.hcs10Builder = params.hcs10Builder;
13
+ /**
14
+ * Inscribe content using server-side authentication
15
+ */
16
+ async inscribe(input, options) {
17
+ const operatorId = this.hederaKit.signer.getAccountId().toString();
18
+ const operatorPrivateKey = this.hederaKit.signer?.getOperatorPrivateKey() ? this.hederaKit.signer.getOperatorPrivateKey().toStringRaw() : "";
19
+ const network = this.hederaKit.client.network;
20
+ const networkType = network.toString().includes("mainnet") ? "mainnet" : "testnet";
21
+ const clientConfig = {
22
+ accountId: operatorId,
23
+ privateKey: operatorPrivateKey,
24
+ network: networkType
25
+ };
26
+ return await inscribe(input, clientConfig, options);
27
+ }
28
+ /**
29
+ * Inscribe content using a DApp signer
30
+ */
31
+ async inscribeWithSigner(input, signer, options) {
32
+ return await inscribeWithSigner(input, signer, options);
33
+ }
34
+ /**
35
+ * Retrieve an existing inscription
36
+ */
37
+ async retrieveInscription(transactionId, options) {
38
+ const operatorId = this.hederaKit.signer.getAccountId().toString();
39
+ const operatorPrivateKey = this.hederaKit.signer?.getOperatorPrivateKey() ? this.hederaKit.signer.getOperatorPrivateKey().toStringRaw() : "";
40
+ return await retrieveInscription(transactionId, {
41
+ ...options,
42
+ accountId: operatorId,
43
+ privateKey: operatorPrivateKey
44
+ });
20
45
  }
21
46
  /**
22
- * Override to return the HCS10Builder
47
+ * Close the inscription SDK
23
48
  */
24
- getServiceBuilder() {
25
- return this.hcs10Builder;
49
+ async close() {
50
+ this.inscriptionSDK = void 0;
26
51
  }
27
52
  }
28
53
  export {
29
- BaseHCS10QueryTool,
30
- BaseHCS10TransactionTool
54
+ InscriberBuilder
31
55
  };
32
56
  //# sourceMappingURL=standards-agent-kit.es4.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-agent-kit.es4.js","sources":["../../src/tools/hcs10/base-hcs10-tools.ts"],"sourcesContent":["import {\n BaseHederaTransactionTool,\n BaseHederaQueryTool,\n BaseServiceBuilder,\n} from 'hedera-agent-kit';\nimport { HCS10Builder } from '../../builders/hcs10/hcs10-builder';\nimport {\n HCS10TransactionToolParams,\n HCS10QueryToolParams,\n} from './hcs10-tool-params';\nimport { z } from 'zod';\n\n/**\n * Base class for HCS10 transaction tools\n */\nexport abstract class BaseHCS10TransactionTool<\n T extends z.ZodObject<\n z.ZodRawShape,\n z.UnknownKeysParam,\n z.ZodTypeAny\n > = z.ZodObject<z.ZodRawShape>\n> extends BaseHederaTransactionTool<T> {\n protected hcs10Builder: HCS10Builder;\n namespace = 'hcs10' as const;\n\n constructor(params: HCS10TransactionToolParams) {\n super(params);\n this.hcs10Builder = params.hcs10Builder;\n }\n\n /**\n * Override to return the HCS10Builder\n */\n protected getServiceBuilder(): BaseServiceBuilder {\n return this.hcs10Builder;\n }\n}\n\n/**\n * Base class for HCS10 query tools\n */\nexport abstract class BaseHCS10QueryTool<\n T extends z.ZodObject<\n z.ZodRawShape,\n z.UnknownKeysParam,\n z.ZodTypeAny,\n Record<string, unknown>,\n Record<string, unknown>\n > = z.ZodObject<z.ZodRawShape>\n> extends BaseHederaQueryTool<T> {\n protected hcs10Builder: HCS10Builder;\n namespace = 'hcs10' as const;\n\n constructor(params: HCS10QueryToolParams) {\n super(params);\n this.hcs10Builder = params.hcs10Builder;\n }\n\n /**\n * Override to return the HCS10Builder\n */\n protected getServiceBuilder(): BaseServiceBuilder {\n return this.hcs10Builder;\n }\n}\n"],"names":[],"mappings":";AAeO,MAAe,iCAMZ,0BAA6B;AAAA,EAIrC,YAAY,QAAoC;AAC9C,UAAM,MAAM;AAHd,SAAA,YAAY;AAIV,SAAK,eAAe,OAAO;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA,EAKU,oBAAwC;AAChD,WAAO,KAAK;AAAA,EACd;AACF;AAKO,MAAe,2BAQZ,oBAAuB;AAAA,EAI/B,YAAY,QAA8B;AACxC,UAAM,MAAM;AAHd,SAAA,YAAY;AAIV,SAAK,eAAe,OAAO;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA,EAKU,oBAAwC;AAChD,WAAO,KAAK;AAAA,EACd;AACF;"}
1
+ {"version":3,"file":"standards-agent-kit.es4.js","sources":["../../src/builders/inscriber/inscriber-builder.ts"],"sourcesContent":["import { BaseServiceBuilder } from 'hedera-agent-kit';\nimport type { HederaAgentKit } from 'hedera-agent-kit';\nimport {\n inscribe,\n inscribeWithSigner,\n retrieveInscription,\n InscriptionInput,\n InscriptionOptions,\n InscriptionResponse,\n RetrievedInscriptionResult,\n HederaClientConfig,\n NetworkType,\n} from '@hashgraphonline/standards-sdk';\n\n/**\n * Type definition for DAppSigner since we don't have the actual package\n */\ninterface DAppSigner {\n getAccountId(): { toString(): string };\n}\n\n/**\n * Type definition for InscriptionSDK since we don't have the actual package\n */\ninterface InscriptionSDK {\n inscribeAndExecute(request: any, config: any): Promise<any>;\n inscribe(request: any, signer: any): Promise<any>;\n waitForInscription(txId: string, maxAttempts: number, intervalMs: number, checkCompletion: boolean, progressCallback?: Function): Promise<any>;\n}\n\n/**\n * Builder for Inscription operations\n */\nexport class InscriberBuilder extends BaseServiceBuilder {\n protected inscriptionSDK?: InscriptionSDK;\n\n constructor(hederaKit: HederaAgentKit) {\n super(hederaKit);\n }\n\n /**\n * Get or create Inscription SDK - temporarily returns null since we don't have the actual SDK\n */\n protected async getInscriptionSDK(\n options: InscriptionOptions\n ): Promise<InscriptionSDK | null> {\n return null;\n }\n\n /**\n * Inscribe content using server-side authentication\n */\n async inscribe(\n input: InscriptionInput,\n options: InscriptionOptions\n ): Promise<InscriptionResponse> {\n const operatorId = this.hederaKit.signer.getAccountId().toString();\n const operatorPrivateKey = this.hederaKit.signer?.getOperatorPrivateKey()\n ? this.hederaKit.signer.getOperatorPrivateKey().toStringRaw()\n : '';\n\n const network = this.hederaKit.client.network;\n const networkType: NetworkType = network.toString().includes('mainnet')\n ? 'mainnet'\n : 'testnet';\n\n const clientConfig: HederaClientConfig = {\n accountId: operatorId,\n privateKey: operatorPrivateKey,\n network: networkType,\n };\n\n return await inscribe(input, clientConfig, options);\n }\n\n /**\n * Inscribe content using a DApp signer\n */\n async inscribeWithSigner(\n input: InscriptionInput,\n signer: DAppSigner,\n options: InscriptionOptions\n ): Promise<InscriptionResponse> {\n return await inscribeWithSigner(input, signer as any, options);\n }\n\n /**\n * Retrieve an existing inscription\n */\n async retrieveInscription(\n transactionId: string,\n options: InscriptionOptions\n ): Promise<RetrievedInscriptionResult> {\n const operatorId = this.hederaKit.signer.getAccountId().toString();\n const operatorPrivateKey = this.hederaKit.signer?.getOperatorPrivateKey()\n ? this.hederaKit.signer.getOperatorPrivateKey().toStringRaw()\n : '';\n\n return await retrieveInscription(transactionId, {\n ...options,\n accountId: operatorId,\n privateKey: operatorPrivateKey,\n });\n }\n\n /**\n * Close the inscription SDK\n */\n async close(): Promise<void> {\n this.inscriptionSDK = undefined;\n }\n}"],"names":[],"mappings":";;AAiCO,MAAM,yBAAyB,mBAAmB;AAAA,EAGvD,YAAY,WAA2B;AACrC,UAAM,SAAS;AAAA,EACjB;AAAA;AAAA;AAAA;AAAA,EAKA,MAAgB,kBACd,SACgC;AAChC,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,SACJ,OACA,SAC8B;AAC9B,UAAM,aAAa,KAAK,UAAU,OAAO,aAAA,EAAe,SAAA;AACxD,UAAM,qBAAqB,KAAK,UAAU,QAAQ,sBAAA,IAC9C,KAAK,UAAU,OAAO,wBAAwB,YAAA,IAC9C;AAEJ,UAAM,UAAU,KAAK,UAAU,OAAO;AACtC,UAAM,cAA2B,QAAQ,SAAA,EAAW,SAAS,SAAS,IAClE,YACA;AAEJ,UAAM,eAAmC;AAAA,MACvC,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,SAAS;AAAA,IAAA;AAGX,WAAO,MAAM,SAAS,OAAO,cAAc,OAAO;AAAA,EACpD;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,mBACJ,OACA,QACA,SAC8B;AAC9B,WAAO,MAAM,mBAAmB,OAAO,QAAe,OAAO;AAAA,EAC/D;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,oBACJ,eACA,SACqC;AACrC,UAAM,aAAa,KAAK,UAAU,OAAO,aAAA,EAAe,SAAA;AACxD,UAAM,qBAAqB,KAAK,UAAU,QAAQ,sBAAA,IAC9C,KAAK,UAAU,OAAO,wBAAwB,YAAA,IAC9C;AAEJ,WAAO,MAAM,oBAAoB,eAAe;AAAA,MAC9C,GAAG;AAAA,MACH,WAAW;AAAA,MACX,YAAY;AAAA,IAAA,CACb;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,QAAuB;AAC3B,SAAK,iBAAiB;AAAA,EACxB;AACF;"}