@nookplot/runtime 0.5.131 → 0.5.132

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 (397) hide show
  1. package/dist/__tests__/apiMarketplace.test.d.ts +2 -0
  2. package/dist/__tests__/apiMarketplace.test.d.ts.map +1 -0
  3. package/dist/__tests__/apiMarketplace.test.js +102 -0
  4. package/dist/__tests__/apiMarketplace.test.js.map +1 -0
  5. package/dist/__tests__/autonomous.actionDispatch.test.d.ts +2 -0
  6. package/dist/__tests__/autonomous.actionDispatch.test.d.ts.map +1 -0
  7. package/dist/__tests__/autonomous.actionDispatch.test.js +287 -0
  8. package/dist/__tests__/autonomous.actionDispatch.test.js.map +1 -0
  9. package/dist/__tests__/autonomous.dedup.test.d.ts +2 -0
  10. package/dist/__tests__/autonomous.dedup.test.d.ts.map +1 -0
  11. package/dist/__tests__/autonomous.dedup.test.js +125 -0
  12. package/dist/__tests__/autonomous.dedup.test.js.map +1 -0
  13. package/dist/__tests__/autonomous.doomLoop.test.d.ts +2 -0
  14. package/dist/__tests__/autonomous.doomLoop.test.d.ts.map +1 -0
  15. package/dist/__tests__/autonomous.doomLoop.test.js +126 -0
  16. package/dist/__tests__/autonomous.doomLoop.test.js.map +1 -0
  17. package/dist/__tests__/autonomous.getAvailableActions.test.d.ts +2 -0
  18. package/dist/__tests__/autonomous.getAvailableActions.test.d.ts.map +1 -0
  19. package/dist/__tests__/autonomous.getAvailableActions.test.js +233 -0
  20. package/dist/__tests__/autonomous.getAvailableActions.test.js.map +1 -0
  21. package/dist/__tests__/autonomous.guardrails.test.d.ts +2 -0
  22. package/dist/__tests__/autonomous.guardrails.test.d.ts.map +1 -0
  23. package/dist/__tests__/autonomous.guardrails.test.js +215 -0
  24. package/dist/__tests__/autonomous.guardrails.test.js.map +1 -0
  25. package/dist/__tests__/autonomous.hooks.test.d.ts +2 -0
  26. package/dist/__tests__/autonomous.hooks.test.d.ts.map +1 -0
  27. package/dist/__tests__/autonomous.hooks.test.js +107 -0
  28. package/dist/__tests__/autonomous.hooks.test.js.map +1 -0
  29. package/dist/__tests__/autonomous.latentSpace.test.d.ts +2 -0
  30. package/dist/__tests__/autonomous.latentSpace.test.d.ts.map +1 -0
  31. package/dist/__tests__/autonomous.latentSpace.test.js +224 -0
  32. package/dist/__tests__/autonomous.latentSpace.test.js.map +1 -0
  33. package/dist/__tests__/autonomous.lifecycle.test.d.ts +2 -0
  34. package/dist/__tests__/autonomous.lifecycle.test.d.ts.map +1 -0
  35. package/dist/__tests__/autonomous.lifecycle.test.js +147 -0
  36. package/dist/__tests__/autonomous.lifecycle.test.js.map +1 -0
  37. package/dist/__tests__/autonomous.loadedSkillRefs.test.d.ts +2 -0
  38. package/dist/__tests__/autonomous.loadedSkillRefs.test.d.ts.map +1 -0
  39. package/dist/__tests__/autonomous.loadedSkillRefs.test.js +150 -0
  40. package/dist/__tests__/autonomous.loadedSkillRefs.test.js.map +1 -0
  41. package/dist/__tests__/chatEngine.episodicHook.test.d.ts +2 -0
  42. package/dist/__tests__/chatEngine.episodicHook.test.d.ts.map +1 -0
  43. package/dist/__tests__/chatEngine.episodicHook.test.js +160 -0
  44. package/dist/__tests__/chatEngine.episodicHook.test.js.map +1 -0
  45. package/dist/__tests__/chatEngine.test.d.ts +2 -0
  46. package/dist/__tests__/chatEngine.test.d.ts.map +1 -0
  47. package/dist/__tests__/chatEngine.test.js +482 -0
  48. package/dist/__tests__/chatEngine.test.js.map +1 -0
  49. package/dist/__tests__/codegen-drift.test.d.ts +23 -0
  50. package/dist/__tests__/codegen-drift.test.d.ts.map +1 -0
  51. package/dist/__tests__/codegen-drift.test.js +185 -0
  52. package/dist/__tests__/codegen-drift.test.js.map +1 -0
  53. package/dist/__tests__/contentSafety.test.d.ts +2 -0
  54. package/dist/__tests__/contentSafety.test.d.ts.map +1 -0
  55. package/dist/__tests__/contentSafety.test.js +90 -0
  56. package/dist/__tests__/contentSafety.test.js.map +1 -0
  57. package/dist/__tests__/conversation/compactionMemory.test.d.ts +2 -0
  58. package/dist/__tests__/conversation/compactionMemory.test.d.ts.map +1 -0
  59. package/dist/__tests__/conversation/compactionMemory.test.js +447 -0
  60. package/dist/__tests__/conversation/compactionMemory.test.js.map +1 -0
  61. package/dist/__tests__/conversation/modelThresholdsParity.test.d.ts +2 -0
  62. package/dist/__tests__/conversation/modelThresholdsParity.test.d.ts.map +1 -0
  63. package/dist/__tests__/conversation/modelThresholdsParity.test.js +79 -0
  64. package/dist/__tests__/conversation/modelThresholdsParity.test.js.map +1 -0
  65. package/dist/__tests__/doomLoop.test.d.ts +6 -0
  66. package/dist/__tests__/doomLoop.test.d.ts.map +1 -0
  67. package/dist/__tests__/doomLoop.test.js +144 -0
  68. package/dist/__tests__/doomLoop.test.js.map +1 -0
  69. package/dist/__tests__/guardrails.test.d.ts +2 -0
  70. package/dist/__tests__/guardrails.test.d.ts.map +1 -0
  71. package/dist/__tests__/guardrails.test.js +236 -0
  72. package/dist/__tests__/guardrails.test.js.map +1 -0
  73. package/dist/__tests__/helpers/mockRuntime.d.ts +11 -0
  74. package/dist/__tests__/helpers/mockRuntime.d.ts.map +1 -0
  75. package/dist/__tests__/helpers/mockRuntime.js +146 -0
  76. package/dist/__tests__/helpers/mockRuntime.js.map +1 -0
  77. package/dist/__tests__/hooks.test.d.ts +9 -0
  78. package/dist/__tests__/hooks.test.d.ts.map +1 -0
  79. package/dist/__tests__/hooks.test.js +192 -0
  80. package/dist/__tests__/hooks.test.js.map +1 -0
  81. package/dist/__tests__/manifestActivationHook.test.d.ts +2 -0
  82. package/dist/__tests__/manifestActivationHook.test.d.ts.map +1 -0
  83. package/dist/__tests__/manifestActivationHook.test.js +312 -0
  84. package/dist/__tests__/manifestActivationHook.test.js.map +1 -0
  85. package/dist/__tests__/memory.test.d.ts +2 -0
  86. package/dist/__tests__/memory.test.d.ts.map +1 -0
  87. package/dist/__tests__/memory.test.js +192 -0
  88. package/dist/__tests__/memory.test.js.map +1 -0
  89. package/dist/__tests__/onChainActions.parity.test.d.ts +12 -0
  90. package/dist/__tests__/onChainActions.parity.test.d.ts.map +1 -0
  91. package/dist/__tests__/onChainActions.parity.test.js +104 -0
  92. package/dist/__tests__/onChainActions.parity.test.js.map +1 -0
  93. package/dist/__tests__/querySegmentation.test.d.ts +2 -0
  94. package/dist/__tests__/querySegmentation.test.d.ts.map +1 -0
  95. package/dist/__tests__/querySegmentation.test.js +187 -0
  96. package/dist/__tests__/querySegmentation.test.js.map +1 -0
  97. package/dist/__tests__/sandbox.test.d.ts +13 -0
  98. package/dist/__tests__/sandbox.test.d.ts.map +1 -0
  99. package/dist/__tests__/sandbox.test.js +413 -0
  100. package/dist/__tests__/sandbox.test.js.map +1 -0
  101. package/dist/__tests__/signing.test.d.ts +2 -0
  102. package/dist/__tests__/signing.test.d.ts.map +1 -0
  103. package/dist/__tests__/signing.test.js +260 -0
  104. package/dist/__tests__/signing.test.js.map +1 -0
  105. package/dist/__tests__/wakeUpStack.test.d.ts +2 -0
  106. package/dist/__tests__/wakeUpStack.test.d.ts.map +1 -0
  107. package/dist/__tests__/wakeUpStack.test.js +239 -0
  108. package/dist/__tests__/wakeUpStack.test.js.map +1 -0
  109. package/dist/actionCatalog.d.ts +57 -0
  110. package/dist/actionCatalog.d.ts.map +1 -0
  111. package/dist/actionCatalog.generated.d.ts +4 -0
  112. package/dist/actionCatalog.generated.d.ts.map +1 -0
  113. package/dist/actionCatalog.generated.js +2194 -0
  114. package/dist/actionCatalog.generated.js.map +1 -0
  115. package/dist/actionCatalog.js +214 -0
  116. package/dist/actionCatalog.js.map +1 -0
  117. package/dist/api-marketplace.d.ts +111 -0
  118. package/dist/api-marketplace.d.ts.map +1 -0
  119. package/dist/api-marketplace.js +154 -0
  120. package/dist/api-marketplace.js.map +1 -0
  121. package/dist/artifactEmbeddings.d.ts +69 -0
  122. package/dist/artifactEmbeddings.d.ts.map +1 -0
  123. package/dist/artifactEmbeddings.js +52 -0
  124. package/dist/artifactEmbeddings.js.map +1 -0
  125. package/dist/autonomous.d.ts +271 -0
  126. package/dist/autonomous.d.ts.map +1 -0
  127. package/dist/autonomous.js +3517 -0
  128. package/dist/autonomous.js.map +1 -0
  129. package/dist/bounties.d.ts +112 -0
  130. package/dist/bounties.d.ts.map +1 -0
  131. package/dist/bounties.js +140 -0
  132. package/dist/bounties.js.map +1 -0
  133. package/dist/bundles.d.ts +174 -0
  134. package/dist/bundles.d.ts.map +1 -0
  135. package/dist/bundles.js +208 -0
  136. package/dist/bundles.js.map +1 -0
  137. package/dist/channels.d.ts +131 -0
  138. package/dist/channels.d.ts.map +1 -0
  139. package/dist/channels.js +227 -0
  140. package/dist/channels.js.map +1 -0
  141. package/dist/chat/chatEngine.d.ts +138 -0
  142. package/dist/chat/chatEngine.d.ts.map +1 -0
  143. package/dist/chat/chatEngine.js +613 -0
  144. package/dist/chat/chatEngine.js.map +1 -0
  145. package/dist/chat/index.d.ts +30 -0
  146. package/dist/chat/index.d.ts.map +1 -0
  147. package/dist/chat/index.js +29 -0
  148. package/dist/chat/index.js.map +1 -0
  149. package/dist/chat/terminal.d.ts +19 -0
  150. package/dist/chat/terminal.d.ts.map +1 -0
  151. package/dist/chat/terminal.js +17 -0
  152. package/dist/chat/terminal.js.map +1 -0
  153. package/dist/chat/terminals/discordTerminal.d.ts +22 -0
  154. package/dist/chat/terminals/discordTerminal.d.ts.map +1 -0
  155. package/dist/chat/terminals/discordTerminal.js +132 -0
  156. package/dist/chat/terminals/discordTerminal.js.map +1 -0
  157. package/dist/chat/terminals/openclawTerminal.d.ts +43 -0
  158. package/dist/chat/terminals/openclawTerminal.d.ts.map +1 -0
  159. package/dist/chat/terminals/openclawTerminal.js +186 -0
  160. package/dist/chat/terminals/openclawTerminal.js.map +1 -0
  161. package/dist/chat/terminals/stdinTerminal.d.ts +18 -0
  162. package/dist/chat/terminals/stdinTerminal.d.ts.map +1 -0
  163. package/dist/chat/terminals/stdinTerminal.js +58 -0
  164. package/dist/chat/terminals/stdinTerminal.js.map +1 -0
  165. package/dist/chat/terminals/telegramTerminal.d.ts +27 -0
  166. package/dist/chat/terminals/telegramTerminal.d.ts.map +1 -0
  167. package/dist/chat/terminals/telegramTerminal.js +123 -0
  168. package/dist/chat/terminals/telegramTerminal.js.map +1 -0
  169. package/dist/cognitiveWorkspace.d.ts +107 -0
  170. package/dist/cognitiveWorkspace.d.ts.map +1 -0
  171. package/dist/cognitiveWorkspace.js +94 -0
  172. package/dist/cognitiveWorkspace.js.map +1 -0
  173. package/dist/communities.d.ts +40 -0
  174. package/dist/communities.d.ts.map +1 -0
  175. package/dist/communities.js +53 -0
  176. package/dist/communities.js.map +1 -0
  177. package/dist/connection.d.ts +90 -0
  178. package/dist/connection.d.ts.map +1 -0
  179. package/dist/connection.js +429 -0
  180. package/dist/connection.js.map +1 -0
  181. package/dist/contentSafety.d.ts +64 -0
  182. package/dist/contentSafety.d.ts.map +1 -0
  183. package/dist/contentSafety.js +119 -0
  184. package/dist/contentSafety.js.map +1 -0
  185. package/dist/conversation/compactionMemory.d.ts +124 -0
  186. package/dist/conversation/compactionMemory.d.ts.map +1 -0
  187. package/dist/conversation/compactionMemory.js +379 -0
  188. package/dist/conversation/compactionMemory.js.map +1 -0
  189. package/dist/conversation/conversationLogStore.d.ts +111 -0
  190. package/dist/conversation/conversationLogStore.d.ts.map +1 -0
  191. package/dist/conversation/conversationLogStore.js +248 -0
  192. package/dist/conversation/conversationLogStore.js.map +1 -0
  193. package/dist/conversation/conversationMemory.d.ts +59 -0
  194. package/dist/conversation/conversationMemory.d.ts.map +1 -0
  195. package/dist/conversation/conversationMemory.js +32 -0
  196. package/dist/conversation/conversationMemory.js.map +1 -0
  197. package/dist/conversation/index.d.ts +16 -0
  198. package/dist/conversation/index.d.ts.map +1 -0
  199. package/dist/conversation/index.js +5 -0
  200. package/dist/conversation/index.js.map +1 -0
  201. package/dist/conversation/modelLimits.d.ts +43 -0
  202. package/dist/conversation/modelLimits.d.ts.map +1 -0
  203. package/dist/conversation/modelLimits.js +67 -0
  204. package/dist/conversation/modelLimits.js.map +1 -0
  205. package/dist/cro.d.ts +243 -0
  206. package/dist/cro.d.ts.map +1 -0
  207. package/dist/cro.js +263 -0
  208. package/dist/cro.js.map +1 -0
  209. package/dist/defaultGuardrails.d.ts +21 -0
  210. package/dist/defaultGuardrails.d.ts.map +1 -0
  211. package/dist/defaultGuardrails.js +90 -0
  212. package/dist/defaultGuardrails.js.map +1 -0
  213. package/dist/delegations.d.ts +63 -0
  214. package/dist/delegations.d.ts.map +1 -0
  215. package/dist/delegations.js +41 -0
  216. package/dist/delegations.js.map +1 -0
  217. package/dist/discovery.d.ts +172 -0
  218. package/dist/discovery.d.ts.map +1 -0
  219. package/dist/discovery.js +300 -0
  220. package/dist/discovery.js.map +1 -0
  221. package/dist/doomLoop.d.ts +52 -0
  222. package/dist/doomLoop.d.ts.map +1 -0
  223. package/dist/doomLoop.js +173 -0
  224. package/dist/doomLoop.js.map +1 -0
  225. package/dist/economy.d.ts +244 -0
  226. package/dist/economy.d.ts.map +1 -0
  227. package/dist/economy.js +263 -0
  228. package/dist/economy.js.map +1 -0
  229. package/dist/email.d.ts +125 -0
  230. package/dist/email.d.ts.map +1 -0
  231. package/dist/email.js +91 -0
  232. package/dist/email.js.map +1 -0
  233. package/dist/embeddingExchange.d.ts +141 -0
  234. package/dist/embeddingExchange.d.ts.map +1 -0
  235. package/dist/embeddingExchange.js +95 -0
  236. package/dist/embeddingExchange.js.map +1 -0
  237. package/dist/episodicMemoryHook.d.ts +39 -0
  238. package/dist/episodicMemoryHook.d.ts.map +1 -0
  239. package/dist/episodicMemoryHook.js +58 -0
  240. package/dist/episodicMemoryHook.js.map +1 -0
  241. package/dist/evaluator.d.ts +113 -0
  242. package/dist/evaluator.d.ts.map +1 -0
  243. package/dist/evaluator.js +144 -0
  244. package/dist/evaluator.js.map +1 -0
  245. package/dist/events.d.ts +58 -0
  246. package/dist/events.d.ts.map +1 -0
  247. package/dist/events.js +86 -0
  248. package/dist/events.js.map +1 -0
  249. package/dist/formatters.d.ts +31 -0
  250. package/dist/formatters.d.ts.map +1 -0
  251. package/dist/formatters.js +227 -0
  252. package/dist/formatters.js.map +1 -0
  253. package/dist/gpu.d.ts +137 -0
  254. package/dist/gpu.d.ts.map +1 -0
  255. package/dist/gpu.js +166 -0
  256. package/dist/gpu.js.map +1 -0
  257. package/dist/guardrails.d.ts +182 -0
  258. package/dist/guardrails.d.ts.map +1 -0
  259. package/dist/guardrails.js +277 -0
  260. package/dist/guardrails.js.map +1 -0
  261. package/dist/guilds.d.ts +158 -0
  262. package/dist/guilds.d.ts.map +1 -0
  263. package/dist/guilds.js +205 -0
  264. package/dist/guilds.js.map +1 -0
  265. package/dist/heartbeat.d.ts +43 -0
  266. package/dist/heartbeat.d.ts.map +1 -0
  267. package/dist/heartbeat.js +72 -0
  268. package/dist/heartbeat.js.map +1 -0
  269. package/dist/hooks.d.ts +172 -0
  270. package/dist/hooks.d.ts.map +1 -0
  271. package/dist/hooks.js +91 -0
  272. package/dist/hooks.js.map +1 -0
  273. package/dist/identity.d.ts +61 -0
  274. package/dist/identity.d.ts.map +1 -0
  275. package/dist/identity.js +76 -0
  276. package/dist/identity.js.map +1 -0
  277. package/dist/inbox.d.ts +77 -0
  278. package/dist/inbox.d.ts.map +1 -0
  279. package/dist/inbox.js +98 -0
  280. package/dist/inbox.js.map +1 -0
  281. package/dist/index.d.ts +321 -0
  282. package/dist/index.d.ts.map +1 -0
  283. package/dist/index.js +361 -0
  284. package/dist/index.js.map +1 -0
  285. package/dist/insights.d.ts +166 -0
  286. package/dist/insights.d.ts.map +1 -0
  287. package/dist/insights.js +100 -0
  288. package/dist/insights.js.map +1 -0
  289. package/dist/intents.d.ts +132 -0
  290. package/dist/intents.d.ts.map +1 -0
  291. package/dist/intents.js +81 -0
  292. package/dist/intents.js.map +1 -0
  293. package/dist/knowledgeContext.d.ts +68 -0
  294. package/dist/knowledgeContext.d.ts.map +1 -0
  295. package/dist/knowledgeContext.js +109 -0
  296. package/dist/knowledgeContext.js.map +1 -0
  297. package/dist/leaderboard.d.ts +30 -0
  298. package/dist/leaderboard.d.ts.map +1 -0
  299. package/dist/leaderboard.js +34 -0
  300. package/dist/leaderboard.js.map +1 -0
  301. package/dist/manifest.d.ts +127 -0
  302. package/dist/manifest.d.ts.map +1 -0
  303. package/dist/manifest.js +123 -0
  304. package/dist/manifest.js.map +1 -0
  305. package/dist/manifestActivationHook.d.ts +72 -0
  306. package/dist/manifestActivationHook.d.ts.map +1 -0
  307. package/dist/manifestActivationHook.js +180 -0
  308. package/dist/manifestActivationHook.js.map +1 -0
  309. package/dist/marketplace.d.ts +156 -0
  310. package/dist/marketplace.d.ts.map +1 -0
  311. package/dist/marketplace.js +215 -0
  312. package/dist/marketplace.js.map +1 -0
  313. package/dist/matching.d.ts +192 -0
  314. package/dist/matching.d.ts.map +1 -0
  315. package/dist/matching.js +138 -0
  316. package/dist/matching.js.map +1 -0
  317. package/dist/memory.d.ts +287 -0
  318. package/dist/memory.d.ts.map +1 -0
  319. package/dist/memory.js +379 -0
  320. package/dist/memory.js.map +1 -0
  321. package/dist/mining.d.ts +155 -0
  322. package/dist/mining.d.ts.map +1 -0
  323. package/dist/mining.js +365 -0
  324. package/dist/mining.js.map +1 -0
  325. package/dist/oracle.d.ts +30 -0
  326. package/dist/oracle.d.ts.map +1 -0
  327. package/dist/oracle.js +31 -0
  328. package/dist/oracle.js.map +1 -0
  329. package/dist/policies.d.ts +132 -0
  330. package/dist/policies.d.ts.map +1 -0
  331. package/dist/policies.js +62 -0
  332. package/dist/policies.js.map +1 -0
  333. package/dist/proactive.d.ts +197 -0
  334. package/dist/proactive.d.ts.map +1 -0
  335. package/dist/proactive.js +229 -0
  336. package/dist/proactive.js.map +1 -0
  337. package/dist/projects.d.ts +307 -0
  338. package/dist/projects.d.ts.map +1 -0
  339. package/dist/projects.js +438 -0
  340. package/dist/projects.js.map +1 -0
  341. package/dist/querySegmentation.d.ts +54 -0
  342. package/dist/querySegmentation.d.ts.map +1 -0
  343. package/dist/querySegmentation.js +80 -0
  344. package/dist/querySegmentation.js.map +1 -0
  345. package/dist/sandbox.d.ts +156 -0
  346. package/dist/sandbox.d.ts.map +1 -0
  347. package/dist/sandbox.js +425 -0
  348. package/dist/sandbox.js.map +1 -0
  349. package/dist/signalActionMap.d.ts +59 -0
  350. package/dist/signalActionMap.d.ts.map +1 -0
  351. package/dist/signalActionMap.js +305 -0
  352. package/dist/signalActionMap.js.map +1 -0
  353. package/dist/signing.d.ts +94 -0
  354. package/dist/signing.d.ts.map +1 -0
  355. package/dist/signing.js +158 -0
  356. package/dist/signing.js.map +1 -0
  357. package/dist/social.d.ts +176 -0
  358. package/dist/social.d.ts.map +1 -0
  359. package/dist/social.js +232 -0
  360. package/dist/social.js.map +1 -0
  361. package/dist/specialization.d.ts +108 -0
  362. package/dist/specialization.d.ts.map +1 -0
  363. package/dist/specialization.js +104 -0
  364. package/dist/specialization.js.map +1 -0
  365. package/dist/swarms.d.ts +106 -0
  366. package/dist/swarms.d.ts.map +1 -0
  367. package/dist/swarms.js +99 -0
  368. package/dist/swarms.js.map +1 -0
  369. package/dist/teaching.d.ts +171 -0
  370. package/dist/teaching.d.ts.map +1 -0
  371. package/dist/teaching.js +87 -0
  372. package/dist/teaching.js.map +1 -0
  373. package/dist/tools.d.ts +223 -0
  374. package/dist/tools.d.ts.map +1 -0
  375. package/dist/tools.js +325 -0
  376. package/dist/tools.js.map +1 -0
  377. package/dist/treasury-ops.d.ts +101 -0
  378. package/dist/treasury-ops.d.ts.map +1 -0
  379. package/dist/treasury-ops.js +59 -0
  380. package/dist/treasury-ops.js.map +1 -0
  381. package/dist/types.d.ts +1193 -0
  382. package/dist/types.d.ts.map +1 -0
  383. package/dist/types.js +7 -0
  384. package/dist/types.js.map +1 -0
  385. package/dist/wakeUpStack.d.ts +94 -0
  386. package/dist/wakeUpStack.d.ts.map +1 -0
  387. package/dist/wakeUpStack.js +215 -0
  388. package/dist/wakeUpStack.js.map +1 -0
  389. package/dist/workspace.d.ts +318 -0
  390. package/dist/workspace.d.ts.map +1 -0
  391. package/dist/workspace.js +207 -0
  392. package/dist/workspace.js.map +1 -0
  393. package/dist/xmtp.d.ts +85 -0
  394. package/dist/xmtp.d.ts.map +1 -0
  395. package/dist/xmtp.js +250 -0
  396. package/dist/xmtp.js.map +1 -0
  397. package/package.json +1 -1
@@ -0,0 +1,613 @@
1
+ /**
2
+ * ChatEngine — Central conversational brain for multi-terminal agents.
3
+ *
4
+ * Loads the agent's soul document, builds personality-driven system prompts,
5
+ * recalls memory context, runs an agentic tool-use loop, and stores
6
+ * conversation history. All terminals (stdin, Telegram, Discord, OpenClaw)
7
+ * call `engine.chat(message, context)` and get back a response.
8
+ *
9
+ * @module chat/chatEngine
10
+ */
11
+ import { readFile } from "node:fs/promises";
12
+ import { ACTION_CATALOG, formatActionsForPrompt, getCategoryListing, getToolsInCategory, } from "../actionCatalog.js";
13
+ import { UNTRUSTED_CONTENT_INSTRUCTION } from "../contentSafety.js";
14
+ import { hooks as defaultHooks } from "../hooks.js";
15
+ import { BasicConversationMemory, CompactionMemory, } from "../conversation/index.js";
16
+ // ── Chat Actions (subset of CORE_ACTIONS suitable for conversations) ──
17
+ const CHAT_ACTIONS = [
18
+ // Discovery & knowledge
19
+ "search_knowledge", "recall_memory", "store_memory", "read_feed",
20
+ "find_agents", "discover", "leaderboard",
21
+ // Communication
22
+ "send_dm", "send_channel_message",
23
+ // Identity
24
+ "my_profile", "check_balance", "check_reputation",
25
+ // Content
26
+ "publish_insight", "post_content", "comment_on_content",
27
+ // Social
28
+ "follow", "vote",
29
+ // Building
30
+ "create_project", "commit_files", "list_project_files", "read_project_file",
31
+ // Coordination
32
+ "available_subtasks", "claim_subtask",
33
+ // Meta
34
+ "browse_tools",
35
+ ];
36
+ // ── ChatEngine ───────────────────────────────────────────────
37
+ export class ChatEngine {
38
+ runtime;
39
+ options;
40
+ soul = null;
41
+ conversationHistories = new Map();
42
+ loadedCategories = new Set();
43
+ compactionConfig;
44
+ constructor(runtime, options = {}) {
45
+ this.runtime = runtime;
46
+ this.options = {
47
+ generateResponse: options.generateResponse,
48
+ model: options.model ?? "claude-sonnet-4-20250514",
49
+ provider: options.provider ?? "nookplot",
50
+ temperature: options.temperature ?? 0.7,
51
+ maxTokens: options.maxTokens ?? 1024,
52
+ soulPath: options.soulPath ?? "./soul.json",
53
+ enableMemory: options.enableMemory ?? true,
54
+ enableTools: options.enableTools ?? true,
55
+ maxToolCalls: options.maxToolCalls ?? 5,
56
+ verbose: options.verbose ?? false,
57
+ };
58
+ this.compactionConfig = options.compaction;
59
+ }
60
+ /**
61
+ * Construct the per-session memory implementation. Defaults to
62
+ * `BasicConversationMemory` with the legacy 20-message cap so existing
63
+ * callers see no behavior change. Provide `options.compaction` to swap in
64
+ * `CompactionMemory`.
65
+ */
66
+ makeMemory(sessionKey) {
67
+ if (this.compactionConfig) {
68
+ const hooksRef = this.runtime.hooks ?? defaultHooks;
69
+ return new CompactionMemory({
70
+ ...this.compactionConfig,
71
+ sessionId: sessionKey,
72
+ hooks: this.compactionConfig.hooks ?? hooksRef,
73
+ });
74
+ }
75
+ return new BasicConversationMemory({ sessionId: sessionKey, maxMessages: 20 });
76
+ }
77
+ /** Agent display name (from soul or fallback). */
78
+ get agentName() {
79
+ return this.soul?.name ?? "Agent";
80
+ }
81
+ // ── Soul Loading ─────────────────────────────────────────
82
+ /**
83
+ * Load soul document from a local JSON file.
84
+ * Extracts identity, personality, and purpose for the system prompt.
85
+ */
86
+ async loadSoul(soulPath) {
87
+ const path = soulPath ?? this.options.soulPath;
88
+ try {
89
+ const raw = await readFile(path, "utf-8");
90
+ const doc = JSON.parse(raw);
91
+ this.soul = {
92
+ name: doc.identity?.name ?? "Agent",
93
+ tagline: doc.identity?.tagline,
94
+ description: doc.identity?.description,
95
+ traits: doc.personality?.traits,
96
+ communicationStyle: doc.personality?.communication?.style,
97
+ communicationTone: doc.personality?.communication?.tone,
98
+ verbosity: doc.personality?.communication?.verbosity,
99
+ quirks: doc.personality?.quirks,
100
+ additionalInstructions: typeof doc.personality?.additional_instructions === "string"
101
+ ? doc.personality.additional_instructions.slice(0, 2000)
102
+ : undefined,
103
+ mission: doc.purpose?.mission ?? "Be helpful and conversational.",
104
+ domains: doc.purpose?.domains,
105
+ goals: doc.purpose?.goals,
106
+ boundaries: doc.autonomy?.boundaries,
107
+ };
108
+ if (this.options.verbose) {
109
+ console.log(`[chat] Loaded soul: ${this.soul.name} — "${this.soul.tagline ?? this.soul.mission}"`);
110
+ }
111
+ }
112
+ catch {
113
+ if (this.options.verbose) {
114
+ console.log(`[chat] No soul.json found at ${path} — using defaults`);
115
+ }
116
+ this.soul = {
117
+ name: "Agent",
118
+ mission: "Be helpful and conversational.",
119
+ };
120
+ }
121
+ }
122
+ // ── Intelligence Check ──────────────────────────────────
123
+ /**
124
+ * Check if this agent has a working inference source configured.
125
+ *
126
+ * Call this at boot to detect the agent's intelligence status and show
127
+ * onboarding guidance. Returns structured status with earning projections.
128
+ */
129
+ async checkIntelligence() {
130
+ const messages = [];
131
+ // Path 1: Custom generateResponse callback (local Ollama, etc.)
132
+ if (this.options.generateResponse) {
133
+ messages.push("Intelligence: custom callback configured (local/external LLM).");
134
+ messages.push("Credit cost: zero (you provide your own compute).");
135
+ return {
136
+ ready: true,
137
+ source: "local",
138
+ model: this.options.model,
139
+ messages,
140
+ };
141
+ }
142
+ // Path 2-4: Gateway-mediated inference — check credits/subscription/BYOK
143
+ try {
144
+ const balance = await this.runtime.economy.getBalance();
145
+ const credits = balance.credits.available;
146
+ // Check BYOK keys
147
+ let hasByok = false;
148
+ try {
149
+ const byokResult = await this.runtime.connection.request("GET", "/v1/byok");
150
+ hasByok = (byokResult.providers?.length ?? 0) > 0;
151
+ }
152
+ catch {
153
+ // BYOK check failed — proceed without it
154
+ }
155
+ // Check subscription status
156
+ let plan = "free";
157
+ let inferenceTokensRemaining = 0;
158
+ try {
159
+ const subResult = await this.runtime.connection.request("GET", "/v1/subscriptions/status");
160
+ plan = subResult.plan;
161
+ inferenceTokensRemaining = subResult.inferenceTokensRemaining;
162
+ }
163
+ catch {
164
+ // No subscription info — treat as free
165
+ }
166
+ // Estimate conversations remaining
167
+ const conversationsRemaining = credits > 0
168
+ ? Math.floor(credits / this.estimateCreditCostPerConversation())
169
+ : 0;
170
+ // Earning potential: conservative estimate from mining
171
+ const miningPerDay = 15_000; // ~15K credits/day from Tier 1+2 mining
172
+ const dailyCost = this.estimateDailyCost();
173
+ const breakEvenDays = dailyCost > 0 ? Math.ceil(miningPerDay > 0 ? dailyCost / miningPerDay : Infinity) : 0;
174
+ // Determine status
175
+ if (plan !== "free" && inferenceTokensRemaining > 0) {
176
+ // Has an active subscription with tokens
177
+ const daysAtCurrentRate = dailyCost > 0 ? Math.floor(credits / dailyCost) : 999;
178
+ messages.push(`Intelligence: ${plan} subscription active.`);
179
+ messages.push(`Credits: ${credits.toLocaleString()} (≈${conversationsRemaining} conversations remaining)`);
180
+ messages.push(`Inference tokens: ${inferenceTokensRemaining.toLocaleString()} remaining this month`);
181
+ if (daysAtCurrentRate < 30) {
182
+ messages.push(`⚠ At current usage, credits last ~${daysAtCurrentRate} days. Consider mining to earn more.`);
183
+ }
184
+ messages.push(`Earning potential: ~${miningPerDay.toLocaleString()} credits/day from mining.`);
185
+ if (breakEvenDays > 0) {
186
+ messages.push(`Break-even: ~${breakEvenDays} days of active mining.`);
187
+ }
188
+ return {
189
+ ready: true,
190
+ source: "subscription",
191
+ provider: this.options.provider,
192
+ model: this.options.model,
193
+ creditsRemaining: credits,
194
+ conversationsRemaining,
195
+ plan,
196
+ estimatedDaysRemaining: daysAtCurrentRate,
197
+ earningPotential: {
198
+ miningPerDay,
199
+ breakEvenDays,
200
+ selfSustainingAfterDays: breakEvenDays * 2,
201
+ },
202
+ messages,
203
+ };
204
+ }
205
+ if (hasByok) {
206
+ messages.push("Intelligence: BYOK key configured (you pay the provider directly).");
207
+ messages.push(`Credits: ${credits.toLocaleString()} (used for gateway proxy fee, minimal).`);
208
+ messages.push("Earning potential: ~15K credits/day from mining — net positive from day 1.");
209
+ return {
210
+ ready: true,
211
+ source: "byok",
212
+ provider: this.options.provider,
213
+ model: this.options.model,
214
+ creditsRemaining: credits,
215
+ conversationsRemaining: credits > 0 ? 99999 : 0, // BYOK has minimal credit cost
216
+ earningPotential: {
217
+ miningPerDay,
218
+ breakEvenDays: 1,
219
+ selfSustainingAfterDays: 1,
220
+ },
221
+ messages,
222
+ };
223
+ }
224
+ if (credits > 0) {
225
+ // Has credits but no subscription — can still use inference via credits
226
+ messages.push(`Intelligence: pay-per-use (${credits.toLocaleString()} credits available).`);
227
+ messages.push(`≈${conversationsRemaining} conversations remaining at current credit balance.`);
228
+ messages.push("");
229
+ messages.push("To extend your agent's lifespan:");
230
+ messages.push(" • Subscribe: nookplot subscribe starter (75K credits/month)");
231
+ messages.push(" • Add key: nookplot byok add openrouter <key>");
232
+ messages.push(" • Mine: your agent earns ~15K credits/day from mining challenges");
233
+ return {
234
+ ready: true,
235
+ source: "credits",
236
+ provider: this.options.provider,
237
+ model: this.options.model,
238
+ creditsRemaining: credits,
239
+ conversationsRemaining,
240
+ plan: "pay-per-use",
241
+ estimatedDaysRemaining: dailyCost > 0 ? Math.floor(credits / dailyCost) : 999,
242
+ earningPotential: {
243
+ miningPerDay,
244
+ breakEvenDays: dailyCost > 0 ? Math.ceil(dailyCost / miningPerDay) : 0,
245
+ selfSustainingAfterDays: dailyCost > 0 ? Math.ceil((dailyCost / miningPerDay) * 2) : 0,
246
+ },
247
+ messages,
248
+ };
249
+ }
250
+ // No intelligence source configured
251
+ messages.push("⚠ No inference configured. Your agent has knowledge but cannot think.");
252
+ messages.push("");
253
+ messages.push("Choose an intelligence source:");
254
+ messages.push(" 1. Subscribe (nookplot inference)");
255
+ messages.push(" nookplot subscribe starter — 75K credits/month, ≈380 Sonnet conversations");
256
+ messages.push(" nookplot subscribe builder — 500K credits/month, ≈2,500 conversations");
257
+ messages.push(" nookplot subscribe pro — 2.5M credits/month, ≈12,500 conversations");
258
+ messages.push("");
259
+ messages.push(" 2. BYOK (bring your own API key)");
260
+ messages.push(" nookplot byok add openrouter <key> — use any model via OpenRouter");
261
+ messages.push(" nookplot byok add anthropic <key> — direct Anthropic access");
262
+ messages.push(" nookplot byok add ollama http://localhost:11434 — local model, zero cost");
263
+ messages.push("");
264
+ messages.push(" 3. Local model (Ollama)");
265
+ messages.push(" Set NOOKPLOT_LLM_PROVIDER=ollama and NOOKPLOT_OLLAMA_URL=http://localhost:11434 in .env");
266
+ messages.push(" Or pass { provider: \"ollama\", model: \"llama3.3:70b\" } to ChatEngine");
267
+ messages.push("");
268
+ messages.push(" 4. Custom callback");
269
+ messages.push(" Pass { generateResponse: yourFunction } to ChatEngine constructor");
270
+ messages.push("");
271
+ messages.push("Your agent can earn its own inference costs:");
272
+ messages.push(" • Mining challenges: ~15,000 credits/day");
273
+ messages.push(" • Bounty completion: variable (10K-500K per bounty)");
274
+ messages.push(" • Service listings: set your own price");
275
+ messages.push(` • Break-even: ~${breakEvenDays > 0 ? breakEvenDays : 3} days of mining to cover Starter plan`);
276
+ return {
277
+ ready: false,
278
+ source: "none",
279
+ creditsRemaining: 0,
280
+ conversationsRemaining: 0,
281
+ earningPotential: {
282
+ miningPerDay,
283
+ breakEvenDays: breakEvenDays > 0 ? breakEvenDays : 3,
284
+ selfSustainingAfterDays: breakEvenDays > 0 ? breakEvenDays * 2 : 6,
285
+ },
286
+ messages,
287
+ };
288
+ }
289
+ catch {
290
+ // Can't reach gateway — likely offline or misconfigured
291
+ messages.push("⚠ Cannot reach gateway to check intelligence status.");
292
+ messages.push("If using a local model, pass { generateResponse: fn } to ChatEngine.");
293
+ return {
294
+ ready: false,
295
+ source: "none",
296
+ messages,
297
+ };
298
+ }
299
+ }
300
+ /** Rough credit cost per conversation for current model. */
301
+ estimateCreditCostPerConversation() {
302
+ // Credits per million tokens × estimated tokens per conversation
303
+ // Average: ~2000 prompt + ~500 completion tokens
304
+ const modelCosts = {
305
+ "claude-sonnet-4-20250514": 197, // ~19700/M * 2500 tokens + 98500/M * 500 tokens ≈ 197
306
+ "claude-haiku-4-5-20251001": 26,
307
+ "gpt-4o": 74,
308
+ "gpt-4o-mini": 4,
309
+ };
310
+ return modelCosts[this.options.model] ?? 100; // conservative default
311
+ }
312
+ /** Estimated daily credit cost (assuming ~50 conversations/day). */
313
+ estimateDailyCost() {
314
+ return this.estimateCreditCostPerConversation() * 50;
315
+ }
316
+ // ── Core Chat Method ─────────────────────────────────────
317
+ /**
318
+ * Process a user message and return the agent's response.
319
+ *
320
+ * Runs an agentic loop: build prompt → call LLM → if tool call → execute → feed back → repeat.
321
+ * Max iterations controlled by `maxToolCalls`.
322
+ */
323
+ async chat(message, context) {
324
+ // Ensure soul is loaded
325
+ if (!this.soul) {
326
+ await this.loadSoul();
327
+ }
328
+ // 1. Recall memory context
329
+ let memoryContext = "";
330
+ if (this.options.enableMemory) {
331
+ try {
332
+ const result = await this.runtime.memory.recall(message, { limit: 5 });
333
+ const memories = result;
334
+ if (Array.isArray(memories) && memories.length > 0) {
335
+ memoryContext = memories.map((m) => m.content).join("\n---\n");
336
+ }
337
+ }
338
+ catch {
339
+ // Memory recall failure shouldn't block the response
340
+ }
341
+ }
342
+ // 2. Build system prompt
343
+ const systemPrompt = this.buildSystemPrompt(memoryContext, context);
344
+ // 3. Get per-session conversation memory (isolate concurrent users)
345
+ const sessionKey = context?.senderId ?? "__default__";
346
+ if (!this.conversationHistories.has(sessionKey)) {
347
+ this.conversationHistories.set(sessionKey, this.makeMemory(sessionKey));
348
+ }
349
+ const memory = this.conversationHistories.get(sessionKey);
350
+ // Add user message — memory implementation enforces its own cap/compaction.
351
+ await memory.addMessage({ role: "user", content: message });
352
+ // 4. Agentic loop
353
+ let finalResponse = "";
354
+ let toolCallCount = 0;
355
+ while (toolCallCount <= this.options.maxToolCalls) {
356
+ // Build messages for LLM
357
+ const messages = [
358
+ { role: "system", content: systemPrompt },
359
+ ...memory.getContext(),
360
+ ];
361
+ // Call LLM
362
+ const response = await this.callLLM(messages);
363
+ // Check if response contains a tool call
364
+ const actionMatch = response.match(/ACTION:\s*(\S+)/i);
365
+ if (actionMatch && this.options.enableTools && toolCallCount < this.options.maxToolCalls) {
366
+ const actionType = actionMatch[1].toLowerCase();
367
+ // Parse params
368
+ let payload = {};
369
+ const paramsMatch = response.match(/PARAMS:\s*(\{[\s\S]*\})/i);
370
+ if (paramsMatch) {
371
+ try {
372
+ payload = JSON.parse(paramsMatch[1]);
373
+ }
374
+ catch {
375
+ if (this.options.verbose)
376
+ console.log("[chat] Failed to parse PARAMS JSON");
377
+ }
378
+ }
379
+ if (this.options.verbose) {
380
+ console.log(`[chat] Tool call #${toolCallCount + 1}: ${actionType}`);
381
+ }
382
+ // Execute tool
383
+ const toolResult = await this.executeTool(actionType, payload);
384
+ // Record assistant response + tool result. The legacy convention is to
385
+ // emit the tool result back as a `user` message (the chat path uses
386
+ // string-parsed pseudo tool calls, not structured `toolCalls[]`). We
387
+ // preserve that wire shape so existing prompts keep working — agents
388
+ // using structured tool calls drive `addMessage` themselves.
389
+ await memory.addMessage({ role: "assistant", content: response });
390
+ await memory.addMessage({
391
+ role: "user",
392
+ content: `[Tool Result for ${actionType}]:\n${toolResult}`,
393
+ });
394
+ toolCallCount++;
395
+ continue;
396
+ }
397
+ // No tool call — this is the final response
398
+ // Strip any ACTION/PARAMS artifacts if present but tools disabled
399
+ finalResponse = response.replace(/ACTION:\s*\S+\s*\n?/i, "").replace(/PARAMS:\s*\{[\s\S]*\}\s*/i, "").trim();
400
+ if (!finalResponse)
401
+ finalResponse = response.trim();
402
+ break;
403
+ }
404
+ // 5. Add assistant response to conversation memory
405
+ await memory.addMessage({ role: "assistant", content: finalResponse });
406
+ // 6. Notify subscribers — observability + episodic-memory hook (fire-and-forget)
407
+ // NOTE: emit fires regardless of `enableMemory`. The episodic-memory write
408
+ // that used to live here is now installed by `installEpisodicMemoryHook`
409
+ // (auto-installed by NookplotRuntime.connect()). The hook itself respects
410
+ // `enableMemory` semantics — see episodicMemoryHook.ts.
411
+ // TODO(compaction-phase-followup): gateway/src/routes/agentChat.ts:242
412
+ // has a near-identical episodic write at the gateway boundary. Sharing a
413
+ // single hook across the runtime/gateway split requires publishing this
414
+ // package and importing it from gateway/ — out of scope for Phase 1.
415
+ {
416
+ const platform = context?.platform ?? "unknown";
417
+ const sender = context?.senderName ?? context?.senderId ?? "user";
418
+ const hooks = this.runtime.hooks ?? defaultHooks;
419
+ hooks.emitFireAndForget("chat_turn_complete", {
420
+ sender,
421
+ platform,
422
+ message,
423
+ response: finalResponse,
424
+ toolsUsed: toolCallCount > 0,
425
+ toolCallCount,
426
+ senderId: context?.senderId ?? null,
427
+ channelId: context?.channelId ?? null,
428
+ agentName: this.agentName,
429
+ enableMemory: this.options.enableMemory,
430
+ });
431
+ }
432
+ return finalResponse;
433
+ }
434
+ /** Clear conversation history (e.g. on platform switch or reset). */
435
+ clearHistory(senderId) {
436
+ if (senderId) {
437
+ this.conversationHistories.delete(senderId);
438
+ }
439
+ else {
440
+ this.conversationHistories.clear();
441
+ }
442
+ this.loadedCategories.clear();
443
+ }
444
+ // ── Private Methods ──────────────────────────────────────
445
+ /**
446
+ * Build the system prompt from soul document + memory context + tool list.
447
+ */
448
+ buildSystemPrompt(memoryContext, context) {
449
+ const parts = [];
450
+ // Soul identity
451
+ if (this.soul) {
452
+ parts.push(`You are ${this.soul.name}.`);
453
+ if (this.soul.tagline)
454
+ parts.push(this.soul.tagline);
455
+ if (this.soul.description)
456
+ parts.push(this.soul.description);
457
+ parts.push("");
458
+ // Mission
459
+ parts.push(`Mission: ${this.soul.mission}`);
460
+ if (this.soul.domains?.length) {
461
+ parts.push(`Domains: ${this.soul.domains.join(", ")}`);
462
+ }
463
+ if (this.soul.goals?.length) {
464
+ parts.push(`Goals: ${this.soul.goals.join("; ")}`);
465
+ }
466
+ parts.push("");
467
+ // Personality
468
+ if (this.soul.traits?.length) {
469
+ parts.push(`Personality traits: ${this.soul.traits.join(", ")}`);
470
+ }
471
+ if (this.soul.communicationStyle) {
472
+ parts.push(`Communication style: ${this.soul.communicationStyle}`);
473
+ }
474
+ if (this.soul.communicationTone) {
475
+ parts.push(`Tone: ${this.soul.communicationTone}`);
476
+ }
477
+ if (this.soul.verbosity) {
478
+ parts.push(`Verbosity: ${this.soul.verbosity}`);
479
+ }
480
+ if (this.soul.quirks?.length) {
481
+ parts.push(`Quirks: ${this.soul.quirks.join("; ")}`);
482
+ }
483
+ if (this.soul.additionalInstructions) {
484
+ parts.push("");
485
+ parts.push("Additional persona guidance from your operator:");
486
+ parts.push(this.soul.additionalInstructions);
487
+ }
488
+ parts.push("");
489
+ // Boundaries
490
+ if (this.soul.boundaries?.length) {
491
+ parts.push(`Boundaries: ${this.soul.boundaries.join("; ")}`);
492
+ }
493
+ }
494
+ // Platform context
495
+ if (context?.platform) {
496
+ parts.push(`You are chatting on ${context.platform}.`);
497
+ }
498
+ // Memory context
499
+ if (memoryContext) {
500
+ parts.push("");
501
+ parts.push("Relevant memories from previous conversations:");
502
+ parts.push(memoryContext);
503
+ }
504
+ // Tool instructions
505
+ if (this.options.enableTools) {
506
+ parts.push("");
507
+ parts.push(UNTRUSTED_CONTENT_INSTRUCTION);
508
+ parts.push("");
509
+ parts.push("You have access to Nookplot tools. To use one, respond ONLY with:");
510
+ parts.push("ACTION: <tool_name>");
511
+ parts.push("PARAMS: <json object>");
512
+ parts.push("");
513
+ parts.push("Do NOT mix tool calls with regular text. If you need to use a tool, respond with ONLY the ACTION/PARAMS block. After seeing the tool result, you can then respond with text.");
514
+ parts.push("");
515
+ // Build available actions list
516
+ const availableActions = this.getAvailableActions();
517
+ parts.push("Available tools:");
518
+ parts.push(formatActionsForPrompt(availableActions));
519
+ parts.push("");
520
+ parts.push("If you don't need a tool, just respond normally with text.");
521
+ }
522
+ return parts.join("\n");
523
+ }
524
+ /**
525
+ * Get the current set of available actions (core + dynamically loaded categories).
526
+ */
527
+ getAvailableActions() {
528
+ const actions = new Set(CHAT_ACTIONS);
529
+ // Add dynamically loaded category tools
530
+ for (const category of this.loadedCategories) {
531
+ const tools = getToolsInCategory(category);
532
+ for (const toolName of tools) {
533
+ actions.add(toolName);
534
+ }
535
+ }
536
+ return Array.from(actions);
537
+ }
538
+ /**
539
+ * Call the LLM — via user-provided function or runtime.economy.inference().
540
+ */
541
+ async callLLM(messages) {
542
+ if (this.options.generateResponse) {
543
+ return this.options.generateResponse(messages);
544
+ }
545
+ const result = await this.runtime.economy.inference(messages, {
546
+ model: this.options.model,
547
+ provider: this.options.provider,
548
+ temperature: this.options.temperature,
549
+ maxTokens: this.options.maxTokens,
550
+ });
551
+ return result.content;
552
+ }
553
+ /**
554
+ * Execute a tool via the gateway's unified dispatch pipeline.
555
+ *
556
+ * Same flow as AutonomousAgent.handleActionRequest():
557
+ * - browse_tools → local category expansion
558
+ * - POST /v1/actions/execute → completed | sign_required | error
559
+ */
560
+ async executeTool(actionType, payload) {
561
+ try {
562
+ // browse_tools is handled locally
563
+ if (actionType === "browse_tools") {
564
+ const category = payload.category;
565
+ if (!category) {
566
+ const listing = getCategoryListing();
567
+ return `Available tool categories:\n${listing.map((c) => `- ${c.name} (${c.count} tools)`).join("\n")}\n\nUse browse_tools with a category to load those tools.`;
568
+ }
569
+ this.loadedCategories.add(category);
570
+ const tools = getToolsInCategory(category);
571
+ const toolDescriptions = tools.map((toolName) => {
572
+ const info = ACTION_CATALOG[toolName];
573
+ return info ? `- ${toolName}: ${info.description}` : `- ${toolName}`;
574
+ });
575
+ return `Loaded ${tools.length} tools from "${category}":\n${toolDescriptions.join("\n")}`;
576
+ }
577
+ // Unified dispatch via gateway
578
+ const toolName = `nookplot_${actionType}`;
579
+ const dispatchResult = await this.runtime.connection.request("POST", "/v1/actions/execute", { toolName, payload });
580
+ switch (dispatchResult.status) {
581
+ case "completed": {
582
+ const result = dispatchResult.result ?? {};
583
+ return typeof result === "string" ? result : JSON.stringify(result, null, 2);
584
+ }
585
+ case "sign_required": {
586
+ // On-chain action: sign locally + relay
587
+ if (!dispatchResult.forwardRequest || !dispatchResult.domain || !dispatchResult.types) {
588
+ return `Error: sign_required but missing signing data for ${actionType}`;
589
+ }
590
+ const privateKey = this.runtime.connection.privateKey;
591
+ if (!privateKey) {
592
+ return `Error: Cannot sign on-chain transaction — no private key configured.`;
593
+ }
594
+ const { signForwardRequest } = await import("../signing.js");
595
+ const signature = await signForwardRequest(privateKey, dispatchResult.domain, dispatchResult.types, dispatchResult.forwardRequest);
596
+ const relayResult = await this.runtime.connection.request("POST", "/v1/relay", { ...dispatchResult.forwardRequest, signature });
597
+ return `On-chain transaction submitted. TX hash: ${relayResult.txHash}`;
598
+ }
599
+ default:
600
+ return dispatchResult.error
601
+ ? `Error: ${dispatchResult.error}`
602
+ : `Unexpected status: ${dispatchResult.status}`;
603
+ }
604
+ }
605
+ catch (err) {
606
+ const msg = err instanceof Error ? err.message : String(err);
607
+ if (this.options.verbose)
608
+ console.error(`[chat] Tool execution failed: ${msg}`);
609
+ return `Error executing ${actionType}: ${msg}`;
610
+ }
611
+ }
612
+ }
613
+ //# sourceMappingURL=chatEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chatEngine.js","sourceRoot":"","sources":["../../src/chat/chatEngine.ts"],"names":[],"mappings":"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"}