@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,30 @@
1
+ /**
2
+ * Multi-Terminal Chat System — barrel export.
3
+ *
4
+ * Provides ChatEngine (central brain) and pluggable Terminal adapters
5
+ * for stdin, Telegram, Discord, and OpenClaw.
6
+ *
7
+ * @example
8
+ * ```ts
9
+ * import { ChatEngine, StdinTerminal, TelegramTerminal } from "@nookplot/runtime/chat";
10
+ *
11
+ * const engine = new ChatEngine(runtime, { soulPath: "./soul.json" });
12
+ * await engine.loadSoul();
13
+ *
14
+ * const terminals = [new StdinTerminal(engine)];
15
+ * if (process.env.TELEGRAM_BOT_TOKEN) {
16
+ * terminals.push(new TelegramTerminal(engine, process.env.TELEGRAM_BOT_TOKEN));
17
+ * }
18
+ * await Promise.all(terminals.map(t => t.start()));
19
+ * ```
20
+ *
21
+ * @module chat
22
+ */
23
+ export { ChatEngine } from "./chatEngine.js";
24
+ export type { ChatEngineOptions, ChatContext } from "./chatEngine.js";
25
+ export { Terminal } from "./terminal.js";
26
+ export { StdinTerminal } from "./terminals/stdinTerminal.js";
27
+ export { TelegramTerminal } from "./terminals/telegramTerminal.js";
28
+ export { DiscordTerminal } from "./terminals/discordTerminal.js";
29
+ export { OpenClawTerminal } from "./terminals/openclawTerminal.js";
30
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/chat/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Multi-Terminal Chat System — barrel export.
3
+ *
4
+ * Provides ChatEngine (central brain) and pluggable Terminal adapters
5
+ * for stdin, Telegram, Discord, and OpenClaw.
6
+ *
7
+ * @example
8
+ * ```ts
9
+ * import { ChatEngine, StdinTerminal, TelegramTerminal } from "@nookplot/runtime/chat";
10
+ *
11
+ * const engine = new ChatEngine(runtime, { soulPath: "./soul.json" });
12
+ * await engine.loadSoul();
13
+ *
14
+ * const terminals = [new StdinTerminal(engine)];
15
+ * if (process.env.TELEGRAM_BOT_TOKEN) {
16
+ * terminals.push(new TelegramTerminal(engine, process.env.TELEGRAM_BOT_TOKEN));
17
+ * }
18
+ * await Promise.all(terminals.map(t => t.start()));
19
+ * ```
20
+ *
21
+ * @module chat
22
+ */
23
+ export { ChatEngine } from "./chatEngine.js";
24
+ export { Terminal } from "./terminal.js";
25
+ export { StdinTerminal } from "./terminals/stdinTerminal.js";
26
+ export { TelegramTerminal } from "./terminals/telegramTerminal.js";
27
+ export { DiscordTerminal } from "./terminals/discordTerminal.js";
28
+ export { OpenClawTerminal } from "./terminals/openclawTerminal.js";
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/chat/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Terminal — Abstract base class for I/O adapters.
3
+ *
4
+ * Each terminal handles platform-specific message receive/send,
5
+ * but delegates all thinking to the shared ChatEngine.
6
+ *
7
+ * @module chat/terminal
8
+ */
9
+ import type { ChatEngine } from "./chatEngine.js";
10
+ export declare abstract class Terminal {
11
+ protected engine: ChatEngine;
12
+ protected name: string;
13
+ constructor(engine: ChatEngine, name: string);
14
+ /** Start listening for messages. */
15
+ abstract start(): Promise<void>;
16
+ /** Stop the terminal gracefully. */
17
+ abstract stop(): Promise<void>;
18
+ }
19
+ //# sourceMappingURL=terminal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../../src/chat/terminal.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,8BAAsB,QAAQ;IAE1B,SAAS,CAAC,MAAM,EAAE,UAAU;IAC5B,SAAS,CAAC,IAAI,EAAE,MAAM;gBADZ,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,MAAM;IAGxB,oCAAoC;IACpC,QAAQ,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAE/B,oCAAoC;IACpC,QAAQ,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAC/B"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Terminal — Abstract base class for I/O adapters.
3
+ *
4
+ * Each terminal handles platform-specific message receive/send,
5
+ * but delegates all thinking to the shared ChatEngine.
6
+ *
7
+ * @module chat/terminal
8
+ */
9
+ export class Terminal {
10
+ engine;
11
+ name;
12
+ constructor(engine, name) {
13
+ this.engine = engine;
14
+ this.name = name;
15
+ }
16
+ }
17
+ //# sourceMappingURL=terminal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal.js","sourceRoot":"","sources":["../../src/chat/terminal.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,MAAM,OAAgB,QAAQ;IAEhB;IACA;IAFZ,YACY,MAAkB,EAClB,IAAY;QADZ,WAAM,GAAN,MAAM,CAAY;QAClB,SAAI,GAAJ,IAAI,CAAQ;IACrB,CAAC;CAOL"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * DiscordTerminal — Discord bot terminal using discord.js.
3
+ *
4
+ * Connects via WebSocket gateway, responds to mentions and DMs.
5
+ * discord.js is an optional peer dependency — only imported at runtime
6
+ * if `DISCORD_BOT_TOKEN` is set. No compile-time dependency on discord.js.
7
+ *
8
+ * User setup: Add `DISCORD_BOT_TOKEN=xxx` to `.env`.
9
+ *
10
+ * @module chat/terminals/discordTerminal
11
+ */
12
+ import { Terminal } from "../terminal.js";
13
+ import type { ChatEngine } from "../chatEngine.js";
14
+ export declare class DiscordTerminal extends Terminal {
15
+ private botToken;
16
+ private client;
17
+ constructor(engine: ChatEngine, botToken: string);
18
+ start(): Promise<void>;
19
+ stop(): Promise<void>;
20
+ private splitMessage;
21
+ }
22
+ //# sourceMappingURL=discordTerminal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discordTerminal.d.ts","sourceRoot":"","sources":["../../../src/chat/terminals/discordTerminal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAInD,qBAAa,eAAgB,SAAQ,QAAQ;IAC3C,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAa;gBAEf,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM;IAK1C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA4FtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAS3B,OAAO,CAAC,YAAY;CAgBrB"}
@@ -0,0 +1,132 @@
1
+ /**
2
+ * DiscordTerminal — Discord bot terminal using discord.js.
3
+ *
4
+ * Connects via WebSocket gateway, responds to mentions and DMs.
5
+ * discord.js is an optional peer dependency — only imported at runtime
6
+ * if `DISCORD_BOT_TOKEN` is set. No compile-time dependency on discord.js.
7
+ *
8
+ * User setup: Add `DISCORD_BOT_TOKEN=xxx` to `.env`.
9
+ *
10
+ * @module chat/terminals/discordTerminal
11
+ */
12
+ import { Terminal } from "../terminal.js";
13
+ /* eslint-disable @typescript-eslint/no-explicit-any */
14
+ export class DiscordTerminal extends Terminal {
15
+ botToken;
16
+ client = null;
17
+ constructor(engine, botToken) {
18
+ super(engine, "discord");
19
+ this.botToken = botToken;
20
+ }
21
+ async start() {
22
+ // Dynamic import — discord.js is optional, no compile-time dependency
23
+ // Use a variable to prevent TypeScript from resolving the module at compile time
24
+ let discordJs;
25
+ try {
26
+ const moduleName = "discord.js";
27
+ discordJs = await import(/* webpackIgnore: true */ moduleName);
28
+ }
29
+ catch {
30
+ console.error("[discord] discord.js not installed. Run: npm install discord.js");
31
+ return;
32
+ }
33
+ const { Client, GatewayIntentBits, Partials } = discordJs;
34
+ const client = new Client({
35
+ intents: [
36
+ GatewayIntentBits.Guilds,
37
+ GatewayIntentBits.GuildMessages,
38
+ GatewayIntentBits.MessageContent,
39
+ GatewayIntentBits.DirectMessages,
40
+ ],
41
+ partials: [Partials.Channel], // Required for DMs
42
+ });
43
+ client.on("ready", () => {
44
+ console.log(`[discord] Connected as ${client.user?.tag ?? "unknown"}`);
45
+ });
46
+ client.on("messageCreate", async (message) => {
47
+ // Ignore bots (including self)
48
+ if (message.author.bot)
49
+ return;
50
+ // Only respond to DMs or when mentioned
51
+ const isDM = !message.guild;
52
+ const isMentioned = client.user && message.mentions.has(client.user);
53
+ if (!isDM && !isMentioned)
54
+ return;
55
+ // Strip the bot mention from the message text
56
+ let content = message.content;
57
+ if (isMentioned && client.user) {
58
+ content = content.replace(new RegExp(`<@!?${client.user.id}>`, "g"), "").trim();
59
+ }
60
+ if (!content)
61
+ return;
62
+ try {
63
+ // Show typing indicator
64
+ await message.channel.sendTyping();
65
+ const response = await this.engine.chat(content, {
66
+ platform: "discord",
67
+ senderId: message.author.id,
68
+ senderName: message.author.displayName ?? message.author.username,
69
+ channelId: message.channel.id,
70
+ });
71
+ // Discord has a 2000 char limit — split if needed
72
+ if (response.length <= 2000) {
73
+ await message.reply(response);
74
+ }
75
+ else {
76
+ // Split into chunks
77
+ const chunks = this.splitMessage(response, 2000);
78
+ for (let i = 0; i < chunks.length; i++) {
79
+ if (i === 0) {
80
+ await message.reply(chunks[i]);
81
+ }
82
+ else {
83
+ await message.channel.send(chunks[i]);
84
+ }
85
+ }
86
+ }
87
+ }
88
+ catch (err) {
89
+ console.error("[discord] Message handling failed:", err instanceof Error ? err.message : err);
90
+ try {
91
+ await message.reply("Sorry, I encountered an error processing your message.");
92
+ }
93
+ catch {
94
+ // Best effort
95
+ }
96
+ }
97
+ });
98
+ try {
99
+ await client.login(this.botToken);
100
+ this.client = client;
101
+ }
102
+ catch (err) {
103
+ console.error("[discord] Login failed:", err instanceof Error ? err.message : err);
104
+ console.error("[discord] Check DISCORD_BOT_TOKEN in .env");
105
+ }
106
+ }
107
+ async stop() {
108
+ if (this.client) {
109
+ this.client.destroy();
110
+ this.client = null;
111
+ }
112
+ }
113
+ // ── Private ────────────────────────────────────────────────
114
+ splitMessage(text, maxLength) {
115
+ const chunks = [];
116
+ let remaining = text;
117
+ while (remaining.length > 0) {
118
+ if (remaining.length <= maxLength) {
119
+ chunks.push(remaining);
120
+ break;
121
+ }
122
+ // Try to split at a newline
123
+ let splitIndex = remaining.lastIndexOf("\n", maxLength);
124
+ if (splitIndex <= 0)
125
+ splitIndex = maxLength;
126
+ chunks.push(remaining.slice(0, splitIndex));
127
+ remaining = remaining.slice(splitIndex).trimStart();
128
+ }
129
+ return chunks;
130
+ }
131
+ }
132
+ //# sourceMappingURL=discordTerminal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discordTerminal.js","sourceRoot":"","sources":["../../../src/chat/terminals/discordTerminal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,uDAAuD;AAEvD,MAAM,OAAO,eAAgB,SAAQ,QAAQ;IACnC,QAAQ,CAAS;IACjB,MAAM,GAAQ,IAAI,CAAC;IAE3B,YAAY,MAAkB,EAAE,QAAgB;QAC9C,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,KAAK;QACT,sEAAsE;QACtE,iFAAiF;QACjF,IAAI,SAAc,CAAC;QACnB,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,YAAY,CAAC;YAChC,SAAS,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC;QACjE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,KAAK,CACX,iEAAiE,CAClE,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC;QAE1D,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;YACxB,OAAO,EAAE;gBACP,iBAAiB,CAAC,MAAM;gBACxB,iBAAiB,CAAC,aAAa;gBAC/B,iBAAiB,CAAC,cAAc;gBAChC,iBAAiB,CAAC,cAAc;aACjC;YACD,QAAQ,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,mBAAmB;SAClD,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACtB,OAAO,CAAC,GAAG,CAAC,0BAA0B,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,SAAS,EAAE,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,eAAe,EAAE,KAAK,EAAE,OAAY,EAAE,EAAE;YAChD,+BAA+B;YAC/B,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG;gBAAE,OAAO;YAE/B,wCAAwC;YACxC,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC;YAC5B,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAErE,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW;gBAAE,OAAO;YAElC,8CAA8C;YAC9C,IAAI,OAAO,GAAW,OAAO,CAAC,OAAO,CAAC;YACtC,IAAI,WAAW,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC/B,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAClF,CAAC;YAED,IAAI,CAAC,OAAO;gBAAE,OAAO;YAErB,IAAI,CAAC;gBACH,wBAAwB;gBACxB,MAAM,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;gBAEnC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE;oBAC/C,QAAQ,EAAE,SAAS;oBACnB,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE;oBAC3B,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ;oBACjE,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE;iBAC9B,CAAC,CAAC;gBAEH,kDAAkD;gBAClD,IAAI,QAAQ,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;oBAC5B,MAAM,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAChC,CAAC;qBAAM,CAAC;oBACN,oBAAoB;oBACpB,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;oBACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBACvC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;4BACZ,MAAM,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;wBACjC,CAAC;6BAAM,CAAC;4BACN,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;wBACxC,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC9F,IAAI,CAAC;oBACH,MAAM,OAAO,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;gBAChF,CAAC;gBAAC,MAAM,CAAC;oBACP,cAAc;gBAChB,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAClC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACvB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACnF,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACrB,CAAC;IACH,CAAC;IAED,8DAA8D;IAEtD,YAAY,CAAC,IAAY,EAAE,SAAiB;QAClD,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,SAAS,GAAG,IAAI,CAAC;QACrB,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,IAAI,SAAS,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;gBAClC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACvB,MAAM;YACR,CAAC;YACD,4BAA4B;YAC5B,IAAI,UAAU,GAAG,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YACxD,IAAI,UAAU,IAAI,CAAC;gBAAE,UAAU,GAAG,SAAS,CAAC;YAC5C,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;YAC5C,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE,CAAC;QACtD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * OpenClawTerminal — OpenAI-compatible HTTP server for OpenClaw integration.
3
+ *
4
+ * Starts an HTTP server on port 18789 (OpenClaw auto-detection port) that
5
+ * implements the OpenAI Chat Completions API format. This makes the agent
6
+ * automatically discoverable by OpenClaw.
7
+ *
8
+ * Endpoints:
9
+ * - POST /v1/chat/completions — Chat with the agent (OpenAI format)
10
+ * - GET /v1/models — List available models
11
+ * - GET /hooks/agent — OpenClaw discovery endpoint
12
+ *
13
+ * Zero external dependencies — uses Node built-in `http`.
14
+ *
15
+ * User setup: Set `OPENCLAW_ENABLED=true` in `.env`.
16
+ *
17
+ * @module chat/terminals/openclawTerminal
18
+ */
19
+ import { Terminal } from "../terminal.js";
20
+ import type { ChatEngine } from "../chatEngine.js";
21
+ export declare class OpenClawTerminal extends Terminal {
22
+ private port;
23
+ private server;
24
+ constructor(engine: ChatEngine, port?: number);
25
+ start(): Promise<void>;
26
+ stop(): Promise<void>;
27
+ private handleRequest;
28
+ /**
29
+ * GET /hooks/agent — OpenClaw discovery endpoint.
30
+ */
31
+ private handleDiscovery;
32
+ /**
33
+ * GET /v1/models — OpenAI-compatible model listing.
34
+ */
35
+ private handleModels;
36
+ /**
37
+ * POST /v1/chat/completions — OpenAI-compatible chat completions.
38
+ */
39
+ private handleChatCompletion;
40
+ private sendJson;
41
+ private readBody;
42
+ }
43
+ //# sourceMappingURL=openclawTerminal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openclawTerminal.d.ts","sourceRoot":"","sources":["../../../src/chat/terminals/openclawTerminal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,qBAAa,gBAAiB,SAAQ,QAAQ;IAC5C,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,MAAM,CAAuB;gBAEzB,MAAM,EAAE,UAAU,EAAE,IAAI,SAAQ;IAKtC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA2BtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAab,aAAa;IAqC3B;;OAEG;IACH,OAAO,CAAC,eAAe;IASvB;;OAEG;IACH,OAAO,CAAC,YAAY;IAcpB;;OAEG;YACW,oBAAoB;IAsDlC,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,QAAQ;CAQjB"}
@@ -0,0 +1,186 @@
1
+ /**
2
+ * OpenClawTerminal — OpenAI-compatible HTTP server for OpenClaw integration.
3
+ *
4
+ * Starts an HTTP server on port 18789 (OpenClaw auto-detection port) that
5
+ * implements the OpenAI Chat Completions API format. This makes the agent
6
+ * automatically discoverable by OpenClaw.
7
+ *
8
+ * Endpoints:
9
+ * - POST /v1/chat/completions — Chat with the agent (OpenAI format)
10
+ * - GET /v1/models — List available models
11
+ * - GET /hooks/agent — OpenClaw discovery endpoint
12
+ *
13
+ * Zero external dependencies — uses Node built-in `http`.
14
+ *
15
+ * User setup: Set `OPENCLAW_ENABLED=true` in `.env`.
16
+ *
17
+ * @module chat/terminals/openclawTerminal
18
+ */
19
+ import { createServer } from "node:http";
20
+ import { Terminal } from "../terminal.js";
21
+ export class OpenClawTerminal extends Terminal {
22
+ port;
23
+ server = null;
24
+ constructor(engine, port = 18789) {
25
+ super(engine, "openclaw");
26
+ this.port = port;
27
+ }
28
+ async start() {
29
+ this.server = createServer(async (req, res) => {
30
+ try {
31
+ await this.handleRequest(req, res);
32
+ }
33
+ catch (err) {
34
+ console.error("[openclaw] Request error:", err instanceof Error ? err.message : err);
35
+ this.sendJson(res, 500, { error: "Internal server error" });
36
+ }
37
+ });
38
+ return new Promise((resolve, reject) => {
39
+ this.server.listen(this.port, () => {
40
+ console.log(`[openclaw] Listening on http://127.0.0.1:${this.port}`);
41
+ console.log(`[openclaw] Discovery: GET http://127.0.0.1:${this.port}/hooks/agent`);
42
+ console.log(`[openclaw] Chat: POST http://127.0.0.1:${this.port}/v1/chat/completions`);
43
+ resolve();
44
+ });
45
+ this.server.on("error", (err) => {
46
+ if (err.code === "EADDRINUSE") {
47
+ console.error(`[openclaw] Port ${this.port} already in use — is another agent running?`);
48
+ }
49
+ reject(err);
50
+ });
51
+ });
52
+ }
53
+ async stop() {
54
+ return new Promise((resolve) => {
55
+ if (this.server) {
56
+ this.server.close(() => resolve());
57
+ this.server = null;
58
+ }
59
+ else {
60
+ resolve();
61
+ }
62
+ });
63
+ }
64
+ // ── Private ────────────────────────────────────────────────
65
+ async handleRequest(req, res) {
66
+ const url = req.url ?? "/";
67
+ const method = req.method ?? "GET";
68
+ // CORS headers
69
+ res.setHeader("Access-Control-Allow-Origin", "*");
70
+ res.setHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS");
71
+ res.setHeader("Access-Control-Allow-Headers", "Content-Type, Authorization");
72
+ if (method === "OPTIONS") {
73
+ res.writeHead(204);
74
+ res.end();
75
+ return;
76
+ }
77
+ // Route requests
78
+ if (method === "GET" && url === "/hooks/agent") {
79
+ return this.handleDiscovery(res);
80
+ }
81
+ if (method === "GET" && url === "/v1/models") {
82
+ return this.handleModels(res);
83
+ }
84
+ if (method === "POST" && url === "/v1/chat/completions") {
85
+ return this.handleChatCompletion(req, res);
86
+ }
87
+ // Health check
88
+ if (method === "GET" && (url === "/" || url === "/health")) {
89
+ this.sendJson(res, 200, { status: "ok", agent: this.engine.agentName });
90
+ return;
91
+ }
92
+ this.sendJson(res, 404, { error: "Not found" });
93
+ }
94
+ /**
95
+ * GET /hooks/agent — OpenClaw discovery endpoint.
96
+ */
97
+ handleDiscovery(res) {
98
+ this.sendJson(res, 200, {
99
+ name: this.engine.agentName,
100
+ description: `${this.engine.agentName} — a Nookplot agent`,
101
+ version: "1.0.0",
102
+ capabilities: ["chat"],
103
+ });
104
+ }
105
+ /**
106
+ * GET /v1/models — OpenAI-compatible model listing.
107
+ */
108
+ handleModels(res) {
109
+ this.sendJson(res, 200, {
110
+ object: "list",
111
+ data: [
112
+ {
113
+ id: this.engine.agentName.toLowerCase().replace(/\s+/g, "-"),
114
+ object: "model",
115
+ created: Math.floor(Date.now() / 1000),
116
+ owned_by: "nookplot",
117
+ },
118
+ ],
119
+ });
120
+ }
121
+ /**
122
+ * POST /v1/chat/completions — OpenAI-compatible chat completions.
123
+ */
124
+ async handleChatCompletion(req, res) {
125
+ const body = await this.readBody(req);
126
+ if (!body) {
127
+ this.sendJson(res, 400, { error: "Invalid request body" });
128
+ return;
129
+ }
130
+ let parsed;
131
+ try {
132
+ parsed = JSON.parse(body);
133
+ }
134
+ catch {
135
+ this.sendJson(res, 400, { error: "Invalid JSON" });
136
+ return;
137
+ }
138
+ // Extract the last user message
139
+ const messages = parsed.messages ?? [];
140
+ const lastUserMessage = [...messages].reverse().find((m) => m.role === "user");
141
+ if (!lastUserMessage?.content) {
142
+ this.sendJson(res, 400, { error: "No user message found" });
143
+ return;
144
+ }
145
+ // Chat with the engine
146
+ const response = await this.engine.chat(lastUserMessage.content, {
147
+ platform: "openclaw",
148
+ });
149
+ // Return OpenAI-format response
150
+ this.sendJson(res, 200, {
151
+ id: `chatcmpl-${Date.now()}`,
152
+ object: "chat.completion",
153
+ created: Math.floor(Date.now() / 1000),
154
+ model: this.engine.agentName.toLowerCase().replace(/\s+/g, "-"),
155
+ choices: [
156
+ {
157
+ index: 0,
158
+ message: {
159
+ role: "assistant",
160
+ content: response,
161
+ },
162
+ finish_reason: "stop",
163
+ },
164
+ ],
165
+ usage: {
166
+ prompt_tokens: 0,
167
+ completion_tokens: 0,
168
+ total_tokens: 0,
169
+ },
170
+ });
171
+ }
172
+ // ── Helpers ────────────────────────────────────────────────
173
+ sendJson(res, status, data) {
174
+ res.writeHead(status, { "Content-Type": "application/json" });
175
+ res.end(JSON.stringify(data));
176
+ }
177
+ readBody(req) {
178
+ return new Promise((resolve) => {
179
+ const chunks = [];
180
+ req.on("data", (chunk) => chunks.push(chunk));
181
+ req.on("end", () => resolve(Buffer.concat(chunks).toString()));
182
+ req.on("error", () => resolve(null));
183
+ });
184
+ }
185
+ }
186
+ //# sourceMappingURL=openclawTerminal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openclawTerminal.js","sourceRoot":"","sources":["../../../src/chat/terminals/openclawTerminal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * StdinTerminal — Interactive readline-based terminal chat.
3
+ *
4
+ * Provides a local chat interface via stdin/stdout.
5
+ * Zero external dependencies (uses Node built-in `readline`).
6
+ *
7
+ * @module chat/terminals/stdinTerminal
8
+ */
9
+ import { Terminal } from "../terminal.js";
10
+ import type { ChatEngine } from "../chatEngine.js";
11
+ export declare class StdinTerminal extends Terminal {
12
+ private rl;
13
+ private running;
14
+ constructor(engine: ChatEngine);
15
+ start(): Promise<void>;
16
+ stop(): Promise<void>;
17
+ }
18
+ //# sourceMappingURL=stdinTerminal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stdinTerminal.d.ts","sourceRoot":"","sources":["../../../src/chat/terminals/stdinTerminal.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,qBAAa,aAAc,SAAQ,QAAQ;IACzC,OAAO,CAAC,EAAE,CAAkC;IAC5C,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,EAAE,UAAU;IAIxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAuCtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAO5B"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * StdinTerminal — Interactive readline-based terminal chat.
3
+ *
4
+ * Provides a local chat interface via stdin/stdout.
5
+ * Zero external dependencies (uses Node built-in `readline`).
6
+ *
7
+ * @module chat/terminals/stdinTerminal
8
+ */
9
+ import { createInterface } from "node:readline";
10
+ import { Terminal } from "../terminal.js";
11
+ export class StdinTerminal extends Terminal {
12
+ rl = null;
13
+ running = false;
14
+ constructor(engine) {
15
+ super(engine, "terminal");
16
+ }
17
+ async start() {
18
+ this.running = true;
19
+ this.rl = createInterface({
20
+ input: process.stdin,
21
+ output: process.stdout,
22
+ });
23
+ console.log(`\n${this.engine.agentName} > Ready. Type a message (Ctrl+C to quit).\n`);
24
+ this.rl.on("line", async (line) => {
25
+ const trimmed = line.trim();
26
+ if (!trimmed)
27
+ return;
28
+ try {
29
+ const response = await this.engine.chat(trimmed, { platform: "terminal" });
30
+ console.log(`\n${this.engine.agentName} > ${response}\n`);
31
+ }
32
+ catch (err) {
33
+ console.error(`\n[error] ${err instanceof Error ? err.message : String(err)}\n`);
34
+ }
35
+ });
36
+ this.rl.on("close", () => {
37
+ this.running = false;
38
+ });
39
+ // Set the prompt
40
+ this.rl.setPrompt("you > ");
41
+ this.rl.prompt();
42
+ // Re-prompt after each response
43
+ this.rl.on("line", () => {
44
+ if (this.running) {
45
+ // Small delay to let the response print first
46
+ setTimeout(() => this.rl?.prompt(), 50);
47
+ }
48
+ });
49
+ }
50
+ async stop() {
51
+ this.running = false;
52
+ if (this.rl) {
53
+ this.rl.close();
54
+ this.rl = null;
55
+ }
56
+ }
57
+ }
58
+ //# sourceMappingURL=stdinTerminal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stdinTerminal.js","sourceRoot":"","sources":["../../../src/chat/terminals/stdinTerminal.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,eAAe,EAAuC,MAAM,eAAe,CAAC;AACrF,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,MAAM,OAAO,aAAc,SAAQ,QAAQ;IACjC,EAAE,GAA6B,IAAI,CAAC;IACpC,OAAO,GAAG,KAAK,CAAC;IAExB,YAAY,MAAkB;QAC5B,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEpB,IAAI,CAAC,EAAE,GAAG,eAAe,CAAC;YACxB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,SAAS,8CAA8C,CAAC,CAAC;QAEtF,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,IAAY,EAAE,EAAE;YACxC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,OAAO;gBAAE,OAAO;YAErB,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;gBAC3E,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,SAAS,MAAM,QAAQ,IAAI,CAAC,CAAC;YAC5D,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,aAAa,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACnF,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACvB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,iBAAiB;QACjB,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC5B,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;QAEjB,gCAAgC;QAChC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;YACtB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,8CAA8C;gBAC9C,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACZ,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;QACjB,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * TelegramTerminal — Long-polling Telegram bot terminal.
3
+ *
4
+ * Uses the Telegram Bot API `getUpdates` endpoint with long-polling,
5
+ * so it works locally without a public URL (unlike webhook mode).
6
+ *
7
+ * Zero external dependencies — uses Node built-in `fetch`.
8
+ *
9
+ * User setup: Add `TELEGRAM_BOT_TOKEN=xxx` to `.env`.
10
+ *
11
+ * @module chat/terminals/telegramTerminal
12
+ */
13
+ import { Terminal } from "../terminal.js";
14
+ import type { ChatEngine } from "../chatEngine.js";
15
+ export declare class TelegramTerminal extends Terminal {
16
+ private botToken;
17
+ private running;
18
+ private offset;
19
+ private abortController;
20
+ constructor(engine: ChatEngine, botToken: string);
21
+ start(): Promise<void>;
22
+ stop(): Promise<void>;
23
+ private pollLoop;
24
+ private handleMessage;
25
+ private sleep;
26
+ }
27
+ //# sourceMappingURL=telegramTerminal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telegramTerminal.d.ts","sourceRoot":"","sources":["../../../src/chat/terminals/telegramTerminal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAiBnD,qBAAa,gBAAiB,SAAQ,QAAQ;IAC5C,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,eAAe,CAAgC;gBAE3C,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM;IAK1C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAyBtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAUb,QAAQ;YA6CR,aAAa;IA8B3B,OAAO,CAAC,KAAK;CAGd"}