@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,482 @@
1
+ import { describe, it, expect, vi } from "vitest";
2
+ // Mock fs (ChatEngine reads soul documents)
3
+ vi.mock("node:fs/promises", () => ({
4
+ readFile: vi.fn().mockRejectedValue(new Error("ENOENT")),
5
+ writeFile: vi.fn(),
6
+ }));
7
+ // Mock action catalog
8
+ vi.mock("../actionCatalog.js", () => ({
9
+ ACTION_CATALOG: {},
10
+ formatActionsForPrompt: vi.fn().mockReturnValue(""),
11
+ getCategoryListing: vi.fn().mockReturnValue([]),
12
+ getToolsInCategory: vi.fn().mockReturnValue([]),
13
+ }));
14
+ vi.mock("../signalActionMap.js", () => ({
15
+ CORE_ACTIONS: [],
16
+ }));
17
+ vi.mock("../contentSafety.js", () => ({
18
+ sanitizeForPrompt: vi.fn((s) => s),
19
+ UNTRUSTED_CONTENT_INSTRUCTION: "",
20
+ }));
21
+ import { ChatEngine } from "../chat/chatEngine.js";
22
+ // ── Mock runtime ──────────────────────────────────────────
23
+ function createMockRuntime(overrides) {
24
+ const opts = {
25
+ credits: 0,
26
+ byokProviders: [],
27
+ plan: "free",
28
+ inferenceTokensRemaining: 0,
29
+ requestFails: false,
30
+ ...overrides,
31
+ };
32
+ return {
33
+ connection: {
34
+ request: vi.fn().mockImplementation((method, path) => {
35
+ if (opts.requestFails)
36
+ throw new Error("Connection failed");
37
+ if (path === "/v1/byok") {
38
+ return { providers: opts.byokProviders.map((p) => ({ provider: p })) };
39
+ }
40
+ if (path === "/v1/subscriptions/status") {
41
+ return { plan: opts.plan, inferenceTokensRemaining: opts.inferenceTokensRemaining };
42
+ }
43
+ return {};
44
+ }),
45
+ },
46
+ memory: {
47
+ storeMemory: vi.fn().mockResolvedValue({ id: "mem_1" }),
48
+ recall: vi.fn().mockResolvedValue([]),
49
+ },
50
+ economy: {
51
+ getBalance: vi.fn().mockResolvedValue({
52
+ credits: { available: opts.credits, total: opts.credits, pending: 0 },
53
+ }),
54
+ inference: vi.fn(),
55
+ },
56
+ events: { subscribe: vi.fn() },
57
+ identity: { getAddress: vi.fn().mockReturnValue("0xtest") },
58
+ };
59
+ }
60
+ // ── checkIntelligence tests ───────────────────────────────
61
+ describe("ChatEngine.checkIntelligence", () => {
62
+ describe("source: local (custom callback)", () => {
63
+ it("detects generateResponse callback as 'local' source", async () => {
64
+ const runtime = createMockRuntime();
65
+ const engine = new ChatEngine(runtime, {
66
+ generateResponse: async () => "Hello from local",
67
+ });
68
+ const status = await engine.checkIntelligence();
69
+ expect(status.ready).toBe(true);
70
+ expect(status.source).toBe("local");
71
+ expect(status.messages.some((m) => m.includes("custom callback"))).toBe(true);
72
+ });
73
+ it("does not call getBalance when local callback is set", async () => {
74
+ const runtime = createMockRuntime();
75
+ const engine = new ChatEngine(runtime, {
76
+ generateResponse: async () => "local",
77
+ });
78
+ await engine.checkIntelligence();
79
+ // getBalance should NOT be called — the local path returns early
80
+ expect(runtime.economy.getBalance).not.toHaveBeenCalled();
81
+ });
82
+ it("reports zero credit cost for local callback", async () => {
83
+ const runtime = createMockRuntime();
84
+ const engine = new ChatEngine(runtime, {
85
+ generateResponse: async () => "local",
86
+ });
87
+ const status = await engine.checkIntelligence();
88
+ expect(status.messages.some((m) => m.toLowerCase().includes("zero"))).toBe(true);
89
+ });
90
+ it("includes model name in local source status", async () => {
91
+ const runtime = createMockRuntime();
92
+ const engine = new ChatEngine(runtime, {
93
+ generateResponse: async () => "ok",
94
+ model: "llama3:70b",
95
+ });
96
+ const status = await engine.checkIntelligence();
97
+ expect(status.model).toBe("llama3:70b");
98
+ });
99
+ });
100
+ describe("source: subscription", () => {
101
+ it("detects active subscription with tokens", async () => {
102
+ const runtime = createMockRuntime({
103
+ credits: 50000,
104
+ plan: "builder",
105
+ inferenceTokensRemaining: 100000,
106
+ });
107
+ const engine = new ChatEngine(runtime, {});
108
+ const status = await engine.checkIntelligence();
109
+ expect(status.ready).toBe(true);
110
+ expect(status.source).toBe("subscription");
111
+ expect(status.plan).toBe("builder");
112
+ expect(status.creditsRemaining).toBe(50000);
113
+ expect(status.conversationsRemaining).toBeGreaterThan(0);
114
+ });
115
+ it("includes provider and model in subscription status", async () => {
116
+ const runtime = createMockRuntime({
117
+ credits: 50000,
118
+ plan: "pro",
119
+ inferenceTokensRemaining: 500000,
120
+ });
121
+ const engine = new ChatEngine(runtime, { provider: "nookplot", model: "claude-sonnet-4-20250514" });
122
+ const status = await engine.checkIntelligence();
123
+ expect(status.provider).toBe("nookplot");
124
+ expect(status.model).toBe("claude-sonnet-4-20250514");
125
+ });
126
+ it("includes earning potential projections", async () => {
127
+ const runtime = createMockRuntime({
128
+ credits: 50000,
129
+ plan: "starter",
130
+ inferenceTokensRemaining: 75000,
131
+ });
132
+ const engine = new ChatEngine(runtime, {});
133
+ const status = await engine.checkIntelligence();
134
+ expect(status.earningPotential).toBeDefined();
135
+ expect(status.earningPotential.miningPerDay).toBeGreaterThan(0);
136
+ expect(status.earningPotential.breakEvenDays).toBeGreaterThanOrEqual(0);
137
+ expect(status.earningPotential.selfSustainingAfterDays).toBeGreaterThanOrEqual(0);
138
+ });
139
+ it("warns when credits are running low", async () => {
140
+ // Very few credits + subscription active
141
+ const runtime = createMockRuntime({
142
+ credits: 100, // extremely low
143
+ plan: "starter",
144
+ inferenceTokensRemaining: 50000,
145
+ });
146
+ const engine = new ChatEngine(runtime, {});
147
+ const status = await engine.checkIntelligence();
148
+ expect(status.source).toBe("subscription");
149
+ expect(status.estimatedDaysRemaining).toBeDefined();
150
+ });
151
+ it("does not choose subscription when plan is free", async () => {
152
+ const runtime = createMockRuntime({
153
+ credits: 50000,
154
+ plan: "free",
155
+ inferenceTokensRemaining: 0,
156
+ });
157
+ const engine = new ChatEngine(runtime, {});
158
+ const status = await engine.checkIntelligence();
159
+ // Should NOT be subscription — free plan with 0 tokens
160
+ expect(status.source).not.toBe("subscription");
161
+ });
162
+ });
163
+ describe("source: byok", () => {
164
+ it("detects BYOK keys when no subscription", async () => {
165
+ const runtime = createMockRuntime({
166
+ credits: 1000,
167
+ byokProviders: ["openai"],
168
+ });
169
+ const engine = new ChatEngine(runtime, {});
170
+ const status = await engine.checkIntelligence();
171
+ expect(status.ready).toBe(true);
172
+ expect(status.source).toBe("byok");
173
+ expect(status.messages.some((m) => m.includes("BYOK"))).toBe(true);
174
+ });
175
+ it("reports minimal credit cost for BYOK mode", async () => {
176
+ const runtime = createMockRuntime({
177
+ credits: 5000,
178
+ byokProviders: ["anthropic"],
179
+ });
180
+ const engine = new ChatEngine(runtime, {});
181
+ const status = await engine.checkIntelligence();
182
+ expect(status.source).toBe("byok");
183
+ // BYOK should report very high conversations remaining (minimal gateway cost)
184
+ expect(status.conversationsRemaining).toBe(99999);
185
+ });
186
+ it("prioritizes subscription over BYOK when both available", async () => {
187
+ const runtime = createMockRuntime({
188
+ credits: 50000,
189
+ plan: "builder",
190
+ inferenceTokensRemaining: 100000,
191
+ byokProviders: ["openai"],
192
+ });
193
+ const engine = new ChatEngine(runtime, {});
194
+ const status = await engine.checkIntelligence();
195
+ // Subscription should take priority over BYOK
196
+ expect(status.source).toBe("subscription");
197
+ });
198
+ it("reports break-even at 1 day for BYOK", async () => {
199
+ const runtime = createMockRuntime({
200
+ credits: 5000,
201
+ byokProviders: ["openrouter"],
202
+ });
203
+ const engine = new ChatEngine(runtime, {});
204
+ const status = await engine.checkIntelligence();
205
+ expect(status.earningPotential).toBeDefined();
206
+ expect(status.earningPotential.breakEvenDays).toBe(1);
207
+ expect(status.earningPotential.selfSustainingAfterDays).toBe(1);
208
+ });
209
+ });
210
+ describe("source: credits (pay-per-use)", () => {
211
+ it("detects pay-per-use when credits > 0 and no subscription", async () => {
212
+ const runtime = createMockRuntime({
213
+ credits: 5000,
214
+ plan: "free",
215
+ inferenceTokensRemaining: 0,
216
+ });
217
+ const engine = new ChatEngine(runtime, {});
218
+ const status = await engine.checkIntelligence();
219
+ expect(status.ready).toBe(true);
220
+ expect(status.source).toBe("credits");
221
+ expect(status.plan).toBe("pay-per-use");
222
+ expect(status.creditsRemaining).toBe(5000);
223
+ });
224
+ it("calculates conversations remaining based on model cost", async () => {
225
+ const runtime = createMockRuntime({
226
+ credits: 10000,
227
+ plan: "free",
228
+ inferenceTokensRemaining: 0,
229
+ });
230
+ const engine = new ChatEngine(runtime, {});
231
+ const status = await engine.checkIntelligence();
232
+ expect(status.conversationsRemaining).toBeGreaterThan(0);
233
+ // With 10000 credits, conversationsRemaining should be credits / cost_per_conversation
234
+ expect(status.conversationsRemaining).toBeDefined();
235
+ });
236
+ it("includes onboarding guidance messages", async () => {
237
+ const runtime = createMockRuntime({
238
+ credits: 2000,
239
+ plan: "free",
240
+ inferenceTokensRemaining: 0,
241
+ });
242
+ const engine = new ChatEngine(runtime, {});
243
+ const status = await engine.checkIntelligence();
244
+ expect(status.messages.some((m) => m.includes("pay-per-use"))).toBe(true);
245
+ expect(status.messages.some((m) => m.includes("Subscribe") || m.includes("subscribe"))).toBe(true);
246
+ });
247
+ it("includes estimatedDaysRemaining", async () => {
248
+ const runtime = createMockRuntime({
249
+ credits: 50000,
250
+ plan: "free",
251
+ inferenceTokensRemaining: 0,
252
+ });
253
+ const engine = new ChatEngine(runtime, {});
254
+ const status = await engine.checkIntelligence();
255
+ expect(status.estimatedDaysRemaining).toBeDefined();
256
+ expect(status.estimatedDaysRemaining).toBeGreaterThan(0);
257
+ });
258
+ });
259
+ describe("source: none (no intelligence)", () => {
260
+ it("returns not ready when no intelligence configured", async () => {
261
+ const runtime = createMockRuntime({
262
+ credits: 0,
263
+ plan: "free",
264
+ inferenceTokensRemaining: 0,
265
+ });
266
+ const engine = new ChatEngine(runtime, {});
267
+ const status = await engine.checkIntelligence();
268
+ expect(status.ready).toBe(false);
269
+ expect(status.source).toBe("none");
270
+ expect(status.creditsRemaining).toBe(0);
271
+ expect(status.conversationsRemaining).toBe(0);
272
+ });
273
+ it("includes all onboarding options (subscribe, BYOK, Ollama, callback)", async () => {
274
+ const runtime = createMockRuntime({ credits: 0 });
275
+ const engine = new ChatEngine(runtime, {});
276
+ const status = await engine.checkIntelligence();
277
+ expect(status.messages.some((m) => m.includes("No inference configured"))).toBe(true);
278
+ expect(status.messages.some((m) => m.includes("Subscribe"))).toBe(true);
279
+ expect(status.messages.some((m) => m.includes("BYOK"))).toBe(true);
280
+ expect(status.messages.some((m) => m.includes("Ollama"))).toBe(true);
281
+ expect(status.messages.some((m) => m.includes("Custom callback"))).toBe(true);
282
+ });
283
+ it("includes earning potential even with zero credits", async () => {
284
+ const runtime = createMockRuntime({ credits: 0 });
285
+ const engine = new ChatEngine(runtime, {});
286
+ const status = await engine.checkIntelligence();
287
+ expect(status.earningPotential).toBeDefined();
288
+ expect(status.earningPotential.miningPerDay).toBeGreaterThan(0);
289
+ expect(status.earningPotential.breakEvenDays).toBeGreaterThan(0);
290
+ });
291
+ it("includes mining info in messages", async () => {
292
+ const runtime = createMockRuntime({ credits: 0 });
293
+ const engine = new ChatEngine(runtime, {});
294
+ const status = await engine.checkIntelligence();
295
+ expect(status.messages.some((m) => m.includes("Mining") || m.includes("mining"))).toBe(true);
296
+ });
297
+ });
298
+ describe("gateway connection failure", () => {
299
+ it("handles gateway connection failure gracefully", async () => {
300
+ // economy.getBalance must throw to trigger the outer catch block
301
+ const runtime = createMockRuntime();
302
+ runtime.economy.getBalance = vi.fn().mockRejectedValue(new Error("Connection refused"));
303
+ const engine = new ChatEngine(runtime, {});
304
+ const status = await engine.checkIntelligence();
305
+ expect(status.ready).toBe(false);
306
+ expect(status.source).toBe("none");
307
+ expect(status.messages.some((m) => m.includes("Cannot reach gateway"))).toBe(true);
308
+ });
309
+ it("suggests local model as fallback when gateway unreachable", async () => {
310
+ const runtime = createMockRuntime();
311
+ runtime.economy.getBalance = vi.fn().mockRejectedValue(new Error("ECONNREFUSED"));
312
+ const engine = new ChatEngine(runtime, {});
313
+ const status = await engine.checkIntelligence();
314
+ expect(status.messages.some((m) => m.includes("generateResponse"))).toBe(true);
315
+ });
316
+ });
317
+ describe("BYOK check failure", () => {
318
+ it("proceeds without BYOK when BYOK endpoint fails", async () => {
319
+ const runtime = createMockRuntime({
320
+ credits: 5000,
321
+ plan: "free",
322
+ inferenceTokensRemaining: 0,
323
+ });
324
+ // Override request to throw on BYOK check
325
+ runtime.connection.request = vi.fn().mockImplementation((method, path) => {
326
+ if (path === "/v1/byok")
327
+ throw new Error("BYOK not available");
328
+ if (path === "/v1/subscriptions/status")
329
+ return { plan: "free", inferenceTokensRemaining: 0 };
330
+ return {};
331
+ });
332
+ const engine = new ChatEngine(runtime, {});
333
+ const status = await engine.checkIntelligence();
334
+ // Should fall through to credits (not crash)
335
+ expect(status.ready).toBe(true);
336
+ expect(status.source).toBe("credits");
337
+ });
338
+ });
339
+ describe("subscription check failure", () => {
340
+ it("treats as free plan when subscription endpoint fails", async () => {
341
+ const runtime = createMockRuntime({
342
+ credits: 5000,
343
+ plan: "free",
344
+ inferenceTokensRemaining: 0,
345
+ });
346
+ runtime.connection.request = vi.fn().mockImplementation((method, path) => {
347
+ if (path === "/v1/byok")
348
+ return { providers: [] };
349
+ if (path === "/v1/subscriptions/status")
350
+ throw new Error("Subscription service down");
351
+ return {};
352
+ });
353
+ const engine = new ChatEngine(runtime, {});
354
+ const status = await engine.checkIntelligence();
355
+ // Should fall through to credits (not crash or claim subscription)
356
+ expect(status.ready).toBe(true);
357
+ expect(status.source).toBe("credits");
358
+ });
359
+ });
360
+ });
361
+ // ── Chat method tests ─────────────────────────────────────
362
+ describe("ChatEngine.chat", () => {
363
+ it("loads soul on first call if not loaded", async () => {
364
+ const runtime = createMockRuntime({ credits: 5000 });
365
+ const generateResponse = vi.fn().mockResolvedValue("Hello!");
366
+ const engine = new ChatEngine(runtime, { generateResponse });
367
+ const response = await engine.chat("Hi there");
368
+ expect(response).toBe("Hello!");
369
+ // soul should have been loaded (default fallback since readFile mock throws ENOENT)
370
+ expect(engine.agentName).toBe("Agent");
371
+ });
372
+ it("passes system prompt + conversation history to LLM", async () => {
373
+ const runtime = createMockRuntime({ credits: 5000 });
374
+ const generateResponse = vi.fn().mockResolvedValue("Sure thing!");
375
+ const engine = new ChatEngine(runtime, { generateResponse });
376
+ await engine.chat("Tell me about biology");
377
+ expect(generateResponse).toHaveBeenCalledTimes(1);
378
+ const messages = generateResponse.mock.calls[0][0];
379
+ // Should have system prompt + user message
380
+ expect(messages[0].role).toBe("system");
381
+ expect(messages[1].role).toBe("user");
382
+ expect(messages[1].content).toBe("Tell me about biology");
383
+ });
384
+ it("stores conversation in episodic memory (fire-and-forget)", async () => {
385
+ // Phase 1 refactor: episodic write moved out of chatEngine.ts and into
386
+ // installEpisodicMemoryHook(). NookplotRuntime.connect() auto-installs it;
387
+ // this test uses a mock runtime that never calls connect(), so we install
388
+ // the hook manually to reproduce the prior inline behavior.
389
+ const { HookRegistry } = await import("../hooks.js");
390
+ const { installEpisodicMemoryHook } = await import("../episodicMemoryHook.js");
391
+ const runtime = createMockRuntime({ credits: 5000 });
392
+ const hooks = new HookRegistry();
393
+ runtime.hooks = hooks;
394
+ installEpisodicMemoryHook(runtime, { hooks });
395
+ const generateResponse = vi.fn().mockResolvedValue("Hi!");
396
+ const engine = new ChatEngine(runtime, { generateResponse, enableMemory: true });
397
+ await engine.chat("Hello", { platform: "terminal" });
398
+ // Hook fires fire-and-forget; flush microtasks.
399
+ await new Promise((r) => setTimeout(r, 5));
400
+ expect(runtime.memory.storeMemory).toHaveBeenCalledWith("episodic", expect.stringContaining("Hello"), expect.objectContaining({
401
+ tags: expect.arrayContaining(["conversation", "terminal"]),
402
+ }));
403
+ });
404
+ it("skips memory when enableMemory is false", async () => {
405
+ const runtime = createMockRuntime({ credits: 5000 });
406
+ const generateResponse = vi.fn().mockResolvedValue("Hi!");
407
+ const engine = new ChatEngine(runtime, { generateResponse, enableMemory: false });
408
+ await engine.chat("Hello");
409
+ expect(runtime.memory.recall).not.toHaveBeenCalled();
410
+ expect(runtime.memory.storeMemory).not.toHaveBeenCalled();
411
+ });
412
+ it("maintains separate conversation histories per sender", async () => {
413
+ const runtime = createMockRuntime({ credits: 5000 });
414
+ const generateResponse = vi.fn().mockResolvedValue("Reply");
415
+ const engine = new ChatEngine(runtime, { generateResponse });
416
+ await engine.chat("User A message", { platform: "telegram", senderId: "userA" });
417
+ await engine.chat("User B message", { platform: "telegram", senderId: "userB" });
418
+ // Second call should not include User A's history
419
+ const secondCallMessages = generateResponse.mock.calls[1][0];
420
+ const userMessages = secondCallMessages.filter((m) => m.role === "user");
421
+ expect(userMessages).toHaveLength(1);
422
+ expect(userMessages[0].content).toBe("User B message");
423
+ });
424
+ it("clears history for a specific sender", async () => {
425
+ const runtime = createMockRuntime({ credits: 5000 });
426
+ const generateResponse = vi.fn().mockResolvedValue("Reply");
427
+ const engine = new ChatEngine(runtime, { generateResponse });
428
+ await engine.chat("First message", { platform: "terminal", senderId: "userA" });
429
+ engine.clearHistory("userA");
430
+ await engine.chat("Second message", { platform: "terminal", senderId: "userA" });
431
+ // After clearing, the second call should not have the first message in history
432
+ const secondCallMessages = generateResponse.mock.calls[1][0];
433
+ const userMessages = secondCallMessages.filter((m) => m.role === "user");
434
+ expect(userMessages).toHaveLength(1);
435
+ expect(userMessages[0].content).toBe("Second message");
436
+ });
437
+ it("clears all histories when no senderId provided", async () => {
438
+ const runtime = createMockRuntime({ credits: 5000 });
439
+ const generateResponse = vi.fn().mockResolvedValue("Reply");
440
+ const engine = new ChatEngine(runtime, { generateResponse });
441
+ await engine.chat("Msg A", { platform: "terminal", senderId: "userA" });
442
+ await engine.chat("Msg B", { platform: "terminal", senderId: "userB" });
443
+ engine.clearHistory();
444
+ // Both users should have fresh histories
445
+ await engine.chat("Fresh A", { platform: "terminal", senderId: "userA" });
446
+ const callMessages = generateResponse.mock.calls[2][0];
447
+ const userMessages = callMessages.filter((m) => m.role === "user");
448
+ expect(userMessages).toHaveLength(1);
449
+ expect(userMessages[0].content).toBe("Fresh A");
450
+ });
451
+ it("uses runtime.economy.inference when no custom callback", async () => {
452
+ const runtime = createMockRuntime({ credits: 5000 });
453
+ runtime.economy.inference.mockResolvedValue({ content: "From gateway" });
454
+ const engine = new ChatEngine(runtime, {});
455
+ const response = await engine.chat("Hello");
456
+ expect(response).toBe("From gateway");
457
+ expect(runtime.economy.inference).toHaveBeenCalledTimes(1);
458
+ });
459
+ });
460
+ // ── loadSoul tests ────────────────────────────────────────
461
+ describe("ChatEngine.loadSoul", () => {
462
+ it("uses default agent name when soul file missing", async () => {
463
+ const runtime = createMockRuntime();
464
+ const engine = new ChatEngine(runtime, { generateResponse: async () => "" });
465
+ await engine.loadSoul();
466
+ expect(engine.agentName).toBe("Agent");
467
+ });
468
+ it("loads identity from soul.json", async () => {
469
+ const { readFile: mockRead } = await import("node:fs/promises");
470
+ const mockedRead = vi.mocked(mockRead);
471
+ mockedRead.mockResolvedValueOnce(JSON.stringify({
472
+ identity: { name: "Glitch", tagline: "Research agent" },
473
+ personality: { traits: ["curious", "precise"] },
474
+ purpose: { mission: "Advance biology research" },
475
+ }));
476
+ const runtime = createMockRuntime();
477
+ const engine = new ChatEngine(runtime, { generateResponse: async () => "" });
478
+ await engine.loadSoul("./soul.json");
479
+ expect(engine.agentName).toBe("Glitch");
480
+ });
481
+ });
482
+ //# sourceMappingURL=chatEngine.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chatEngine.test.js","sourceRoot":"","sources":["../../src/__tests__/chatEngine.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Codegen drift detector — guards against the three derived action catalogs
3
+ * falling out of sync.
4
+ *
5
+ * Single source of truth: MCP tool definitions in `mcp-server/src/tools/*.ts`.
6
+ * `mcp-server/scripts/generate-catalog.mjs` reads those tools and writes:
7
+ * 1. `cli/src/tool-manifest.json` (JSON manifest)
8
+ * 2. `runtime/src/actionCatalog.generated.ts` (TS catalog)
9
+ * 3. `runtime-py/.../action_catalog_generated.py` (Python catalog)
10
+ *
11
+ * If any of these is hand-edited, or the codegen is run in only one repo
12
+ * branch, agents start hallucinating endpoints / params / categories.
13
+ *
14
+ * This test parses all three artifacts and asserts:
15
+ * - Identical key sets (same action names everywhere)
16
+ * - Identical descriptions per key
17
+ * - Identical params per key (presence + value)
18
+ * - Identical category per key
19
+ * - The "(N tools)" comment in the TS file matches the actual entry count
20
+ * - tool-manifest entries follow the `nookplot_<actionName>` naming rule
21
+ */
22
+ export {};
23
+ //# sourceMappingURL=codegen-drift.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codegen-drift.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/codegen-drift.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG"}