@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,59 @@
1
+ /**
2
+ * Signal Action Map — Single source of truth for which actions are available per signal type.
3
+ *
4
+ * Replaces the 4 duplicated `getAvailableActions()` switch statements that existed in:
5
+ * - cli/src/utils/agentLoop.ts
6
+ * - cli/src/commands/listen.ts
7
+ * - runtime/src/autonomous.ts
8
+ * - runtime-py/nookplot_runtime/autonomous.py
9
+ *
10
+ * New tools are auto-discoverable through their ACTION_CATALOG category via `browse_tools`.
11
+ * No switch statements to update when adding new tools.
12
+ */
13
+ export type SelectionMode = "lenient" | "moderate" | "aggressive" | "strict";
14
+ export declare const CORE_ACTIONS: string[];
15
+ /**
16
+ * Signal type → MAD selection mode for WakeUpStack L2 retrieval.
17
+ *
18
+ * Derived from the retrieval focus each signal type needs:
19
+ * - `aggressive` — focused 1:1 context (DMs, mentions, replies to own post).
20
+ * Want 2–3 tight matches, not scattershot.
21
+ * - `moderate` — standard working set (general channel activity, projects).
22
+ * - `lenient` — exploratory, cross-domain (new projects, multi-step tasks).
23
+ * Cast wide for synthesis.
24
+ *
25
+ * **Scope rule:** only signal types whose handlers actually reach
26
+ * `wakeUpStack.getContext()` live here. Adding an entry for a signal type whose
27
+ * handler doesn't call WakeUpStack is dead code — keep this table in sync with
28
+ * the handler wiring in `autonomous.ts`.
29
+ *
30
+ * Unmapped signal types fall back to `"moderate"` in `WakeUpStack.getContext()`.
31
+ */
32
+ export declare const SIGNAL_SELECTION_MODE: Record<string, SelectionMode>;
33
+ export declare const SIGNAL_CONTEXT_ACTIONS: Record<string, string[]>;
34
+ /**
35
+ * Returns true when progressive disclosure is enabled for this process.
36
+ *
37
+ * Reads `NOOKPLOT_PROGRESSIVE_DISCLOSURE` from the environment. Default off —
38
+ * existing agents see no behavioral change unless they opt in.
39
+ */
40
+ export declare function isProgressiveDisclosureEnabled(): boolean;
41
+ /**
42
+ * Derive the full list of available actions for a given signal type and loaded categories.
43
+ *
44
+ * Default mode:
45
+ * 1. CORE_ACTIONS (always available, ~30)
46
+ * 2. SIGNAL_CONTEXT_ACTIONS for the signal type (contextual, 0-6)
47
+ * 3. All actions from loaded categories (dynamically loaded via browse_tools)
48
+ *
49
+ * Progressive disclosure mode (NOOKPLOT_PROGRESSIVE_DISCLOSURE=1):
50
+ * Returns CORE_ACTIONS only — signal-context tools become discoverable only
51
+ * via nookplot_search_skills + nookplot_load_skill. More aggressive than
52
+ * browse_tools (which loads a category at a time).
53
+ *
54
+ * @param signalType - The signal type (e.g. "directive", "bounty_claimed")
55
+ * @param loadedCategories - Set of category names loaded via browse_tools
56
+ * @returns Deduplicated array of action names
57
+ */
58
+ export declare function getAvailableActionsFromMap(signalType: string, loadedCategories: Set<string>): string[];
59
+ //# sourceMappingURL=signalActionMap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signalActionMap.d.ts","sourceRoot":"","sources":["../src/signalActionMap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AASH,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,GAAG,QAAQ,CAAC;AAM7E,eAAO,MAAM,YAAY,EAAE,MAAM,EA4BhC,CAAC;AAOF;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAqB/D,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CA+L3D,CAAC;AAGF;;;;;GAKG;AACH,wBAAgB,8BAA8B,IAAI,OAAO,CAGxD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,GAC5B,MAAM,EAAE,CA0BV"}
@@ -0,0 +1,305 @@
1
+ /**
2
+ * Signal Action Map — Single source of truth for which actions are available per signal type.
3
+ *
4
+ * Replaces the 4 duplicated `getAvailableActions()` switch statements that existed in:
5
+ * - cli/src/utils/agentLoop.ts
6
+ * - cli/src/commands/listen.ts
7
+ * - runtime/src/autonomous.ts
8
+ * - runtime-py/nookplot_runtime/autonomous.py
9
+ *
10
+ * New tools are auto-discoverable through their ACTION_CATALOG category via `browse_tools`.
11
+ * No switch statements to update when adding new tools.
12
+ */
13
+ import { ACTION_CATALOG } from "./actionCatalog.js";
14
+ // ── Core Actions (~30) ──
15
+ // Every agent gets these on every turn, regardless of signal type.
16
+ // Designed for immediate usefulness without needing to browse categories.
17
+ export const CORE_ACTIONS = [
18
+ // Meta
19
+ "ignore", "browse_tools",
20
+ // Communication
21
+ "reply", "send_dm", "send_message", "send_channel_message",
22
+ // Social
23
+ "follow", "vote", "comment_on_content",
24
+ // Discovery
25
+ "find_agents", "discover", "search_knowledge", "read_feed", "leaderboard",
26
+ // Swarm participation (available_subtasks is useless without claim/submit)
27
+ "available_subtasks", "claim_subtask", "submit_subtask_result",
28
+ // Identity
29
+ "my_profile", "check_balance", "update_profile",
30
+ // Content
31
+ "publish_insight", "post_content",
32
+ // Building (projects + bundles)
33
+ "create_project", "commit_files", "create_bundle",
34
+ "list_project_files", "read_project_file",
35
+ // Knowledge
36
+ "store_knowledge_item", "compile_knowledge",
37
+ // Memory
38
+ "store_memory", "recall_memory",
39
+ // Utility
40
+ "check_reputation", "get_comments",
41
+ // Latent space coordination
42
+ "discover_bundles_semantic", "update_manifest", "suggest_citations",
43
+ // Skill discovery (SRA — universal capability, not specialization-specific)
44
+ "search_skills", "load_skill",
45
+ ];
46
+ // ── Signal Context Actions ──
47
+ // Per-signal-type additions. Only the actions *specific* to that signal.
48
+ // "reply" and "ignore" are in CORE_ACTIONS — excluded here (always available).
49
+ // Cross-referenced across all 4 portals for consistency.
50
+ /**
51
+ * Signal type → MAD selection mode for WakeUpStack L2 retrieval.
52
+ *
53
+ * Derived from the retrieval focus each signal type needs:
54
+ * - `aggressive` — focused 1:1 context (DMs, mentions, replies to own post).
55
+ * Want 2–3 tight matches, not scattershot.
56
+ * - `moderate` — standard working set (general channel activity, projects).
57
+ * - `lenient` — exploratory, cross-domain (new projects, multi-step tasks).
58
+ * Cast wide for synthesis.
59
+ *
60
+ * **Scope rule:** only signal types whose handlers actually reach
61
+ * `wakeUpStack.getContext()` live here. Adding an entry for a signal type whose
62
+ * handler doesn't call WakeUpStack is dead code — keep this table in sync with
63
+ * the handler wiring in `autonomous.ts`.
64
+ *
65
+ * Unmapped signal types fall back to `"moderate"` in `WakeUpStack.getContext()`.
66
+ */
67
+ export const SIGNAL_SELECTION_MODE = {
68
+ // 1:1 DM — handled by handleDmSignal, wired into WakeUpStack by Change 1.
69
+ dm_received: "aggressive",
70
+ // Direct mention in a channel — handleChannelSignal path.
71
+ channel_mention: "aggressive",
72
+ // Reply to the agent's own post — handleChannelSignal path (channelId present).
73
+ reply_to_own_post: "aggressive",
74
+ // General channel participation — standard working set.
75
+ channel_message: "moderate",
76
+ // Project thread discussion — standard context breadth.
77
+ project_discussion: "moderate",
78
+ // New community post — standard breadth.
79
+ new_post_in_community: "moderate",
80
+ // Discovering a new project — cast wide for cross-domain synthesis.
81
+ new_project: "lenient",
82
+ };
83
+ export const SIGNAL_CONTEXT_ACTIONS = {
84
+ // DD-7: directive entry removed — swarm coordination uses DMs
85
+ // ── Communication ──
86
+ collab_request: ["add_collaborator", "propose_collab"],
87
+ xmtp_message: [],
88
+ email_received: ["reply_email", "send_email"],
89
+ // ── Teams ──
90
+ team_assembly_suggested: ["assemble_team"],
91
+ team_invitation: ["accept_invitation", "decline_invitation"],
92
+ team_invitation_accepted: [],
93
+ team_invitation_declined: [],
94
+ // ── Projects ──
95
+ time_to_create_project: ["assemble_team"],
96
+ task_assigned: ["accept", "update_task", "complete_task", "assign_task", "assemble_team"],
97
+ task_completed: ["review", "create_task"],
98
+ task_created: [],
99
+ task_deleted: [],
100
+ milestone_reached: [],
101
+ review_comment_added: [],
102
+ agent_mentioned: ["acknowledge"],
103
+ project_status_update: [],
104
+ file_shared: [],
105
+ status_updated: [],
106
+ new_project: ["propose_collab"],
107
+ interesting_project: ["propose_collab"],
108
+ files_committed: ["get_commit_leaves", "get_commit_children", "create_project_note"],
109
+ pending_review: ["get_commit_leaves", "get_commit_children", "create_project_note"],
110
+ project_forked: ["get_commit_leaves"],
111
+ merge_request_created: ["get_commit_leaves", "get_commit_lineage"],
112
+ // ── Marketplace ──
113
+ service: ["update_service", "create_listing", "create_agreement"],
114
+ time_to_post: ["create_post", "create_bounty", "create_listing", "publish_skill"],
115
+ agreement_created: ["deliver_work", "cancel_agreement", "send_agreement_message"],
116
+ work_delivered: ["settle_agreement", "dispute_agreement", "send_agreement_message", "expire_delivered"],
117
+ agreement_settled: ["submit_review"],
118
+ agreement_disputed: ["send_agreement_message", "expire_dispute"],
119
+ agreement_cancelled: [],
120
+ revision_requested: ["deliver_work", "send_agreement_message"],
121
+ review_received: [],
122
+ // ── Bounties (project-scoped) ──
123
+ bounty_posted_to_project: ["claim"],
124
+ bounty_access_requested: ["grant", "deny"],
125
+ bounty_access_granted: ["claim"],
126
+ bounty_access_denied: [],
127
+ project_bounty_claimed: [],
128
+ project_bounty_completed: [],
129
+ bounty_opportunity: ["apply_bounty", "send_dm"],
130
+ // ── Bounties (application/submission lifecycle) ──
131
+ bounty_application_submitted: ["approve_bounty_application", "approve_bounty_claimer", "reject_bounty_application", "get_verdict_summary"],
132
+ bounty_application_approved: ["claim_bounty"],
133
+ bounty_application_rejected: [],
134
+ // On-chain submit fires this signal too — the creator's next action is approve/dispute.
135
+ bounty_work_submitted: ["select_bounty_submission", "approve_bounty_work", "dispute_bounty", "get_verdict_summary"],
136
+ bounty_submission_selected: ["claim_bounty"],
137
+ bounty_submission_not_selected: [],
138
+ // ── Bounties (on-chain lifecycle) ──
139
+ bounty_claimed: [
140
+ "submit_bounty_work", "submit_bounty_onchain", "unclaim_bounty",
141
+ "approve_bounty_work", "approve_bounty_claimer", "dispute_bounty",
142
+ ],
143
+ bounty_work_approved: ["get_bounty_verdict", "get_recent_verdicts"], // V9: worker-side coaching loop — read rationale + history
144
+ bounty_disputed: ["cancel_bounty", "expire_disputed_bounty", "get_bounty_verdict"], // V8: emergency 50/50 exit after 30-day grace; V9: read dispute rationale
145
+ bounty_dispute_grace_expired: ["expire_disputed_bounty"], // V8 L1: 30-day grace elapsed — both parties notified
146
+ bounty_dispute_expired: [], // V8: terminal status, no further action
147
+ bounty_cancelled: [],
148
+ bounty_unclaimed: ["approve_bounty_claimer", "cancel_bounty"],
149
+ bounty_claimer_approved: ["claim_bounty"],
150
+ bounty_expired: [],
151
+ // ── Guilds ──
152
+ guild_opportunity: [
153
+ "join_guild", "approve_guild", "reject_guild", "leave_guild", "propose_guild", "link_project_to_guild",
154
+ // Guild mining (agent-formed guilds)
155
+ "create_mining_guild", "check_guild_mining",
156
+ "join_guild_mining", "leave_guild_mining", "guild_claim_challenge",
157
+ "suggest_challenge_route", "guild_mining_leaderboard", "discover_joinable_guilds",
158
+ "my_guild_status",
159
+ ],
160
+ // ── Mining ──
161
+ mining_opportunity: [
162
+ "stake_mining_onchain", "request_mining_unstake", "check_mining_stake",
163
+ "cancel_mining_unstake", "complete_mining_unstake",
164
+ "claim_mining_pool_reward", "claim_and_stake_mining_pool_reward",
165
+ "discover_mining_challenges", "submit_reasoning_trace", "verify_reasoning_submission",
166
+ "claim_mining_reward", "guild_learnings",
167
+ // Guild mining
168
+ "create_mining_guild", "join_guild_mining", "guild_claim_challenge",
169
+ "suggest_challenge_route", "create_multi_step_challenge",
170
+ "claim_mining_subtask", "submit_subtask_trace",
171
+ "discover_joinable_guilds", "discover_verifiable_submissions",
172
+ // Mining read/write actions
173
+ "get_mining_challenge", "create_mining_challenge", "get_reasoning_submission",
174
+ "my_mining_submissions", "mining_stats", "agent_mining_profile",
175
+ "browse_mining_dataset", "access_mining_trace", "check_mining_rewards",
176
+ "post_solve_learning", "mining_epoch", "mining_counter_argument",
177
+ "mining_defend_trace", "mining_authorship_rights", "author_mining_challenge",
178
+ "vote_kick_guild_member", "guild_kick_votes", "guild_active_claims",
179
+ "list_challenge_subtasks", "guild_inference_fund", "claim_inference",
180
+ // Self-discovery
181
+ "my_guild_status", "my_verifications", "get_mining_proof",
182
+ // Knowledge flywheel
183
+ "browse_network_learnings", "challenge_related_learnings",
184
+ "get_learning_detail", "browse_learning_comments",
185
+ "comment_on_learning", "upvote_learning",
186
+ "guild_mining_leaderboard", "check_guild_mining", "leave_guild_mining",
187
+ // Content upload + knowledge bundling
188
+ "upload_mining_content",
189
+ "bundle_mining_learnings", "create_bundle",
190
+ // RLM trajectory mining — track-aware solvers selected by signal.track in
191
+ // availableActionsForTrack(). Bare action names (no nookplot_ prefix) —
192
+ // matches ACTION_CATALOG keys; the cli dispatcher adds the prefix.
193
+ "discover_rlm", "open_rlm_session", "submit_rlm",
194
+ "rlm_repl_exec", "rlm_repl_llm_query", "rlm_repl_finalize", "rlm_provider_poll",
195
+ // Spot-check verifier-track — surfaced to verifiers (other agents
196
+ // earning the 5% verification share by replaying disclosed sub-calls).
197
+ "list_pending_spot_checks", "submit_spot_check_verdict",
198
+ // Embedding mining (Phase 3 — unified mining track).
199
+ "list_embedding_challenges", "submit_embeddings",
200
+ ],
201
+ // ── Mining Notifications ──
202
+ submission_verified: [
203
+ "post_solve_learning", "claim_mining_reward", "check_mining_rewards",
204
+ "get_reasoning_submission", "browse_network_learnings",
205
+ "get_learning_detail", "browse_learning_comments",
206
+ ],
207
+ // ── Learning Discussions ──
208
+ learning_comment_received: [
209
+ "get_learning_detail", "browse_learning_comments",
210
+ "comment_on_learning", "upvote_learning",
211
+ ],
212
+ // ── Intents ──
213
+ intent_matched: ["submit_proposal", "browse_intents"],
214
+ proposal_received: ["accept_proposal", "reject_proposal"],
215
+ intent_accepted: ["complete_intent"],
216
+ // ── Specialization ──
217
+ // Note: search_skills and load_skill moved to CORE_ACTIONS (universal capability).
218
+ // install_skill stays here — it's specialization-specific (persisting to disk).
219
+ specialization_path: ["record_gap", "update_proficiency", "install_skill"],
220
+ // ── Teaching ──
221
+ teaching_proposed: ["accept_teaching", "reject_teaching"],
222
+ teaching_accepted: ["deliver_teaching"],
223
+ teaching_delivered: ["approve_teaching", "reject_teaching"],
224
+ teaching_opportunity: ["propose_teaching", "search_teachers"],
225
+ // ── Credit Agreements ──
226
+ credit_agreement_created: ["accept_credit_agreement", "cancel_credit_agreement"],
227
+ credit_work_delivered: ["complete_credit_agreement", "cancel_credit_agreement"],
228
+ credit_agreement_accepted: ["deliver_credit_work", "cancel_credit_agreement"],
229
+ // ── Knowledge ──
230
+ new_bundle_in_domain: ["cite_insight", "add_knowledge_citation", "store_knowledge_item", "create_embedding_packet", "discover_bundles_semantic"],
231
+ bundle_cited: ["search_knowledge", "add_knowledge_citation", "store_knowledge_item", "cite_insight"],
232
+ dream_prompt: ["search_knowledge", "store_knowledge_item", "compile_knowledge", "get_knowledge_stats", "archive_knowledge_item"],
233
+ // ── Latent Space Coordination ──
234
+ workspace_updated: ["workspace_add_cognitive_item", "workspace_transition_item", "workspace_link_items"],
235
+ manifest_matched: ["create_embedding_packet", "propose_collab", "send_dm"],
236
+ embedding_received: ["discover_bundles_semantic", "suggest_citations"],
237
+ // ── Clarification primitive ──
238
+ clarification_request: ["offer_clarification", "browse_clarification_needs"],
239
+ clarification_offered: ["resolve_clarification", "cancel_clarification"],
240
+ clarification_resolved: ["request_clarification"],
241
+ clarification_timed_out: ["request_clarification"],
242
+ clarification_cancelled: [],
243
+ // ── Webhooks ──
244
+ webhook_received: ["egress_request", "execute_tool"],
245
+ // ── Onboarding ──
246
+ welcome_guide: ["create_post"],
247
+ onboarding_suggestion: [],
248
+ // ── Swarm coordination ──
249
+ swarm_subtask_available: ["available_subtasks", "claim_subtask", "get_swarm", "heartbeat_subtask"],
250
+ swarm_subtask_claimed: ["get_swarm"],
251
+ swarm_result_submitted: ["get_swarm", "aggregate_swarm", "accept_subtask_result", "reject_subtask_result"],
252
+ };
253
+ /**
254
+ * Returns true when progressive disclosure is enabled for this process.
255
+ *
256
+ * Reads `NOOKPLOT_PROGRESSIVE_DISCLOSURE` from the environment. Default off —
257
+ * existing agents see no behavioral change unless they opt in.
258
+ */
259
+ export function isProgressiveDisclosureEnabled() {
260
+ const v = (typeof process !== "undefined" ? process.env?.NOOKPLOT_PROGRESSIVE_DISCLOSURE : undefined) ?? "0";
261
+ return v === "1" || v.toLowerCase() === "true";
262
+ }
263
+ /**
264
+ * Derive the full list of available actions for a given signal type and loaded categories.
265
+ *
266
+ * Default mode:
267
+ * 1. CORE_ACTIONS (always available, ~30)
268
+ * 2. SIGNAL_CONTEXT_ACTIONS for the signal type (contextual, 0-6)
269
+ * 3. All actions from loaded categories (dynamically loaded via browse_tools)
270
+ *
271
+ * Progressive disclosure mode (NOOKPLOT_PROGRESSIVE_DISCLOSURE=1):
272
+ * Returns CORE_ACTIONS only — signal-context tools become discoverable only
273
+ * via nookplot_search_skills + nookplot_load_skill. More aggressive than
274
+ * browse_tools (which loads a category at a time).
275
+ *
276
+ * @param signalType - The signal type (e.g. "directive", "bounty_claimed")
277
+ * @param loadedCategories - Set of category names loaded via browse_tools
278
+ * @returns Deduplicated array of action names
279
+ */
280
+ export function getAvailableActionsFromMap(signalType, loadedCategories) {
281
+ // Progressive disclosure: CORE only, regardless of signal/categories.
282
+ if (isProgressiveDisclosureEnabled()) {
283
+ return [...CORE_ACTIONS];
284
+ }
285
+ const actions = new Set(CORE_ACTIONS);
286
+ // Add signal-specific context actions
287
+ const contextActions = SIGNAL_CONTEXT_ACTIONS[signalType];
288
+ if (contextActions) {
289
+ for (const a of contextActions)
290
+ actions.add(a);
291
+ }
292
+ else {
293
+ // Unknown signal type — no extra context (core is sufficient)
294
+ }
295
+ // Add all actions from loaded categories
296
+ if (loadedCategories.size > 0) {
297
+ for (const [name, info] of Object.entries(ACTION_CATALOG)) {
298
+ if (info.category && loadedCategories.has(info.category)) {
299
+ actions.add(name);
300
+ }
301
+ }
302
+ }
303
+ return Array.from(actions);
304
+ }
305
+ //# sourceMappingURL=signalActionMap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signalActionMap.js","sourceRoot":"","sources":["../src/signalActionMap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Shared EIP-712 signing utility for the Nookplot Agent Runtime SDK.
3
+ *
4
+ * Used by all managers that need to sign ForwardRequest transactions
5
+ * (memory, social, etc.) for the prepare+relay non-custodial flow.
6
+ *
7
+ * @module signing
8
+ */
9
+ import type { ConnectionManager } from "./connection.js";
10
+ /** Shape of a prepare endpoint response containing a ForwardRequest. */
11
+ export interface PrepareResponse {
12
+ forwardRequest: {
13
+ from: string;
14
+ to: string;
15
+ value: string;
16
+ gas: string;
17
+ nonce: string;
18
+ deadline: number;
19
+ data: string;
20
+ };
21
+ domain: {
22
+ name: string;
23
+ version: string;
24
+ chainId: number;
25
+ verifyingContract: string;
26
+ };
27
+ types: Record<string, Array<{
28
+ name: string;
29
+ type: string;
30
+ }>>;
31
+ /** Optional DID CID for registration relays. */
32
+ didCid?: string;
33
+ }
34
+ /**
35
+ * Sign a ForwardRequest using EIP-712 typed data signing.
36
+ *
37
+ * Uses dynamic import of ethers to avoid hard dependency.
38
+ * Throws if ethers is not installed.
39
+ *
40
+ * @param privateKey - Agent's Ethereum private key.
41
+ * @param domain - EIP-712 domain data.
42
+ * @param types - EIP-712 type definitions.
43
+ * @param value - The ForwardRequest message to sign.
44
+ * @returns The signature hex string.
45
+ */
46
+ export declare function signForwardRequest(privateKey: string, domain: Record<string, unknown>, types: Record<string, unknown>, value: Record<string, unknown>): Promise<string>;
47
+ /**
48
+ * Prepare, sign, and relay a ForwardRequest transaction.
49
+ *
50
+ * Convenience wrapper that combines:
51
+ * 1. POST to a prepare endpoint → get unsigned ForwardRequest + EIP-712 context
52
+ * 2. Sign with agent's private key (EIP-712)
53
+ * 3. POST to /v1/relay with flat body ({...forwardRequest, signature})
54
+ *
55
+ * @param connection - ConnectionManager for HTTP requests.
56
+ * @param preparePath - Gateway prepare endpoint path (e.g. "/v1/prepare/follow").
57
+ * @param body - Request body for the prepare endpoint.
58
+ * @returns Relay result with txHash.
59
+ * @throws If private key is missing, ethers not installed, or relay fails.
60
+ */
61
+ export declare function prepareSignRelay(connection: ConnectionManager, preparePath: string, body: Record<string, unknown>): Promise<{
62
+ txHash: string;
63
+ }>;
64
+ /** Shape of a raw-tx prepare endpoint response (external partner contracts). */
65
+ export interface RawTxResponse {
66
+ txRequests: Array<{
67
+ to: string;
68
+ data: string;
69
+ value: string;
70
+ chainId: number;
71
+ description: string;
72
+ }>;
73
+ meta?: Record<string, unknown>;
74
+ }
75
+ /**
76
+ * Prepare and submit raw transactions for partner-protocol contracts
77
+ * (BOTCOIN, etc.) that don't trust Nookplot's forwarder.
78
+ *
79
+ * Flow:
80
+ * 1. POST to prepare endpoint → get array of raw txRequests
81
+ * 2. For each txRequest, sign with agent's private key and submit via RPC
82
+ * 3. Wait for each tx to confirm before submitting the next (ordering matters
83
+ * for approve-then-stake sequences)
84
+ *
85
+ * The agent's wallet pays gas in ETH on Base. Requires the agent to have a
86
+ * funded wallet — no relayer subsidy.
87
+ *
88
+ * @returns txHashes in submission order, plus meta echoed from the gateway.
89
+ */
90
+ export declare function prepareSignSend(connection: ConnectionManager, preparePath: string, body: Record<string, unknown>): Promise<{
91
+ txHashes: string[];
92
+ meta: Record<string, unknown>;
93
+ }>;
94
+ //# sourceMappingURL=signing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signing.d.ts","sourceRoot":"","sources":["../src/signing.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAsBzD,wEAAwE;AACxE,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE;QACd,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;IAC7D,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,MAAM,CAAC,CAejB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,iBAAiB,EAC7B,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAQ7B;AAiDD,gFAAgF;AAChF,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,KAAK,CAAC;QAChB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,iBAAiB,EAC7B,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,CAQhE"}
@@ -0,0 +1,158 @@
1
+ /**
2
+ * Shared EIP-712 signing utility for the Nookplot Agent Runtime SDK.
3
+ *
4
+ * Used by all managers that need to sign ForwardRequest transactions
5
+ * (memory, social, etc.) for the prepare+relay non-custodial flow.
6
+ *
7
+ * @module signing
8
+ */
9
+ /**
10
+ * Per-agent serialization queue for on-chain actions.
11
+ *
12
+ * Concurrent prepareSignRelay calls for the same agent race on nonce
13
+ * allocation. We chain promises per privateKey so each prepare→sign→relay
14
+ * completes before the next one starts.
15
+ */
16
+ const agentQueues = new Map();
17
+ function enqueue(key, fn) {
18
+ const prev = agentQueues.get(key) ?? Promise.resolve();
19
+ const next = prev.then(fn, fn);
20
+ agentQueues.set(key, next);
21
+ next.then(() => { if (agentQueues.get(key) === next)
22
+ agentQueues.delete(key); }, () => { if (agentQueues.get(key) === next)
23
+ agentQueues.delete(key); });
24
+ return next;
25
+ }
26
+ /**
27
+ * Sign a ForwardRequest using EIP-712 typed data signing.
28
+ *
29
+ * Uses dynamic import of ethers to avoid hard dependency.
30
+ * Throws if ethers is not installed.
31
+ *
32
+ * @param privateKey - Agent's Ethereum private key.
33
+ * @param domain - EIP-712 domain data.
34
+ * @param types - EIP-712 type definitions.
35
+ * @param value - The ForwardRequest message to sign.
36
+ * @returns The signature hex string.
37
+ */
38
+ export async function signForwardRequest(privateKey, domain, types, value) {
39
+ try {
40
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
41
+ const mod = (await import("ethers"));
42
+ const ethers = mod.ethers ?? mod;
43
+ const wallet = new ethers.Wallet(privateKey);
44
+ return wallet.signTypedData(domain, types, value);
45
+ }
46
+ catch (err) {
47
+ if (err && typeof err === "object" && "code" in err && err.code === "MODULE_NOT_FOUND") {
48
+ throw new Error("ethers is not installed. Install it to enable on-chain transactions: npm install ethers");
49
+ }
50
+ throw err;
51
+ }
52
+ }
53
+ /**
54
+ * Prepare, sign, and relay a ForwardRequest transaction.
55
+ *
56
+ * Convenience wrapper that combines:
57
+ * 1. POST to a prepare endpoint → get unsigned ForwardRequest + EIP-712 context
58
+ * 2. Sign with agent's private key (EIP-712)
59
+ * 3. POST to /v1/relay with flat body ({...forwardRequest, signature})
60
+ *
61
+ * @param connection - ConnectionManager for HTTP requests.
62
+ * @param preparePath - Gateway prepare endpoint path (e.g. "/v1/prepare/follow").
63
+ * @param body - Request body for the prepare endpoint.
64
+ * @returns Relay result with txHash.
65
+ * @throws If private key is missing, ethers not installed, or relay fails.
66
+ */
67
+ export function prepareSignRelay(connection, preparePath, body) {
68
+ const privateKey = connection.privateKey;
69
+ if (!privateKey) {
70
+ throw new Error("Private key not configured — cannot sign on-chain transactions. Provide privateKey in RuntimeConfig.");
71
+ }
72
+ // Serialize per-agent: concurrent calls queue behind the previous one
73
+ return enqueue(privateKey, () => _prepareSignRelayInner(connection, privateKey, preparePath, body));
74
+ }
75
+ async function _prepareSignRelayInner(connection, privateKey, preparePath, body) {
76
+ /** Run one prepare → sign → relay attempt. */
77
+ const attempt = async () => {
78
+ // Step 1: Prepare — get unsigned ForwardRequest + EIP-712 signing context
79
+ const prep = await connection.request("POST", preparePath, body);
80
+ if (!prep.forwardRequest || !prep.domain || !prep.types) {
81
+ throw new Error(`Gateway did not return a ForwardRequest from ${preparePath} — got keys: ${Object.keys(prep).join(", ")}`);
82
+ }
83
+ // Step 2: Sign the ForwardRequest
84
+ const signature = await signForwardRequest(privateKey, prep.domain, prep.types, prep.forwardRequest);
85
+ // Step 3: Relay — flat body with ForwardRequest fields + signature
86
+ const relayResult = await connection.request("POST", "/v1/relay", { ...prep.forwardRequest, signature });
87
+ return { txHash: relayResult.txHash };
88
+ };
89
+ try {
90
+ return await attempt();
91
+ }
92
+ catch (err) {
93
+ // Retry once on nonce conflict — the gateway's NonceTracker may have served
94
+ // a stale nonce if concurrent requests raced or the cache wasn't warm yet.
95
+ const message = err instanceof Error ? err.message : String(err);
96
+ if (message.includes("signature verification failed") || message.includes("nonce")) {
97
+ console.warn(`[nookplot-runtime] Nonce conflict on ${preparePath}, retrying once...`);
98
+ return await attempt();
99
+ }
100
+ throw err;
101
+ }
102
+ }
103
+ /**
104
+ * Prepare and submit raw transactions for partner-protocol contracts
105
+ * (BOTCOIN, etc.) that don't trust Nookplot's forwarder.
106
+ *
107
+ * Flow:
108
+ * 1. POST to prepare endpoint → get array of raw txRequests
109
+ * 2. For each txRequest, sign with agent's private key and submit via RPC
110
+ * 3. Wait for each tx to confirm before submitting the next (ordering matters
111
+ * for approve-then-stake sequences)
112
+ *
113
+ * The agent's wallet pays gas in ETH on Base. Requires the agent to have a
114
+ * funded wallet — no relayer subsidy.
115
+ *
116
+ * @returns txHashes in submission order, plus meta echoed from the gateway.
117
+ */
118
+ export function prepareSignSend(connection, preparePath, body) {
119
+ const privateKey = connection.privateKey;
120
+ if (!privateKey) {
121
+ throw new Error("Private key not configured — cannot sign on-chain transactions. Provide privateKey in RuntimeConfig.");
122
+ }
123
+ return enqueue(privateKey, () => _prepareSignSendInner(connection, privateKey, preparePath, body));
124
+ }
125
+ async function _prepareSignSendInner(connection, privateKey, preparePath, body) {
126
+ const prep = await connection.request("POST", preparePath, body);
127
+ if (!Array.isArray(prep.txRequests)) {
128
+ throw new Error(`Gateway did not return txRequests from ${preparePath} — got keys: ${Object.keys(prep).join(", ")}`);
129
+ }
130
+ const meta = prep.meta ?? {};
131
+ // Empty array = nothing to do (e.g. claim with no unclaimed epochs)
132
+ if (prep.txRequests.length === 0) {
133
+ return { txHashes: [], meta };
134
+ }
135
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
136
+ const mod = (await import("ethers"));
137
+ const ethers = mod.ethers ?? mod;
138
+ const rpcUrl = connection.config?.rpcUrl ??
139
+ "https://mainnet.base.org";
140
+ const provider = new ethers.JsonRpcProvider(rpcUrl);
141
+ const wallet = new ethers.Wallet(privateKey, provider);
142
+ const txHashes = [];
143
+ for (const req of prep.txRequests) {
144
+ const tx = await wallet.sendTransaction({
145
+ to: req.to,
146
+ data: req.data,
147
+ value: req.value ?? "0",
148
+ chainId: req.chainId,
149
+ });
150
+ const receipt = await tx.wait();
151
+ if (!receipt || receipt.status !== 1) {
152
+ throw new Error(`Transaction reverted: ${req.description} (${tx.hash})`);
153
+ }
154
+ txHashes.push(tx.hash);
155
+ }
156
+ return { txHashes, meta };
157
+ }
158
+ //# sourceMappingURL=signing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signing.js","sourceRoot":"","sources":["../src/signing.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH;;;;;;GAMG;AACH,MAAM,WAAW,GAAG,IAAI,GAAG,EAA4B,CAAC;AAExD,SAAS,OAAO,CAAI,GAAW,EAAE,EAAoB;IACnD,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IACvD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/B,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC3B,IAAI,CAAC,IAAI,CACP,GAAG,EAAE,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI;QAAE,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EACrE,GAAG,EAAE,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI;QAAE,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CACtE,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC;AAwBD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,UAAkB,EAClB,MAA+B,EAC/B,KAA8B,EAC9B,KAA8B;IAE9B,IAAI,CAAC;QACH,8DAA8D;QAC9D,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAQ,CAAC;QAC5C,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC7C,OAAO,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,MAAM,IAAI,GAAG,IAAK,GAAwB,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;YAC7G,MAAM,IAAI,KAAK,CACb,yFAAyF,CAC1F,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,gBAAgB,CAC9B,UAA6B,EAC7B,WAAmB,EACnB,IAA6B;IAE7B,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;IACzC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,sGAAsG,CAAC,CAAC;IAC1H,CAAC;IAED,sEAAsE;IACtE,OAAO,OAAO,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,sBAAsB,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;AACtG,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,UAA6B,EAC7B,UAAkB,EAClB,WAAmB,EACnB,IAA6B;IAE7B,8CAA8C;IAC9C,MAAM,OAAO,GAAG,KAAK,IAAiC,EAAE;QACtD,0EAA0E;QAC1E,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,CAAkB,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;QAElF,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACxD,MAAM,IAAI,KAAK,CACb,gDAAgD,WAAW,gBAAgB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC1G,CAAC;QACJ,CAAC;QAED,kCAAkC;QAClC,MAAM,SAAS,GAAG,MAAM,kBAAkB,CACxC,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CACzD,CAAC;QAEF,mEAAmE;QACnE,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,OAAO,CAC1C,MAAM,EAAE,WAAW,EACnB,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,SAAS,EAAE,CACtC,CAAC;QAEF,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC;IACxC,CAAC,CAAC;IAEF,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,EAAE,CAAC;IACzB,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,4EAA4E;QAC5E,2EAA2E;QAC3E,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,IAAI,OAAO,CAAC,QAAQ,CAAC,+BAA+B,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACnF,OAAO,CAAC,IAAI,CACV,wCAAwC,WAAW,oBAAoB,CACxE,CAAC;YACF,OAAO,MAAM,OAAO,EAAE,CAAC;QACzB,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAcD;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,eAAe,CAC7B,UAA6B,EAC7B,WAAmB,EACnB,IAA6B;IAE7B,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;IACzC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CACb,sGAAsG,CACvG,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,qBAAqB,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;AACrG,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,UAA6B,EAC7B,UAAkB,EAClB,WAAmB,EACnB,IAA6B;IAE7B,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,CAAgB,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;IAEhF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CACb,0CAA0C,WAAW,gBAAgB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACpG,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;IAE7B,oEAAoE;IACpE,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IAChC,CAAC;IAED,8DAA8D;IAC9D,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAQ,CAAC;IAC5C,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC;IAEjC,MAAM,MAAM,GACT,UAAyD,CAAC,MAAM,EAAE,MAAM;QACzE,0BAA0B,CAAC;IAC7B,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAEvD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC;YACtC,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,GAAG;YACvB,OAAO,EAAE,GAAG,CAAC,OAAO;SACrB,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;QAChC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CACb,yBAAyB,GAAG,CAAC,WAAW,KAAK,EAAE,CAAC,IAAI,GAAG,CACxD,CAAC;QACJ,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC5B,CAAC"}