@treenity/mods 3.0.1

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 (486) hide show
  1. package/board/board.test.ts +212 -0
  2. package/board/client.ts +1 -0
  3. package/board/seed.ts +26 -0
  4. package/board/server.ts +5 -0
  5. package/board/types.ts +87 -0
  6. package/board/view.tsx +574 -0
  7. package/brahman/CLAUDE.md +18 -0
  8. package/brahman/brahman.test.ts +855 -0
  9. package/brahman/client.ts +2 -0
  10. package/brahman/helpers.ts +374 -0
  11. package/brahman/server.ts +2 -0
  12. package/brahman/service.ts +328 -0
  13. package/brahman/types.ts +727 -0
  14. package/brahman/view.tsx +73 -0
  15. package/brahman/views/action-cards.tsx +615 -0
  16. package/brahman/views/bot-view.tsx +76 -0
  17. package/brahman/views/chat-editor.tsx +782 -0
  18. package/brahman/views/chat-preview.tsx +266 -0
  19. package/brahman/views/menu-editor.tsx +451 -0
  20. package/brahman/views/page-layout.tsx +285 -0
  21. package/brahman/views/tstring-input.tsx +84 -0
  22. package/cafe/CLAUDE.md +7 -0
  23. package/cafe/seed.ts +8 -0
  24. package/cafe/server.ts +2 -0
  25. package/cafe/types.ts +32 -0
  26. package/canary/seed.ts +8 -0
  27. package/canary/server.ts +3 -0
  28. package/canary/service.ts +101 -0
  29. package/canary/types.ts +16 -0
  30. package/dist/board/client.d.ts +2 -0
  31. package/dist/board/client.d.ts.map +1 -0
  32. package/dist/board/client.js +2 -0
  33. package/dist/board/client.js.map +1 -0
  34. package/dist/board/seed.d.ts +2 -0
  35. package/dist/board/seed.d.ts.map +1 -0
  36. package/dist/board/seed.js +23 -0
  37. package/dist/board/seed.js.map +1 -0
  38. package/dist/board/server.d.ts +3 -0
  39. package/dist/board/server.d.ts.map +1 -0
  40. package/dist/board/server.js +5 -0
  41. package/dist/board/server.js.map +1 -0
  42. package/dist/board/types.d.ts +45 -0
  43. package/dist/board/types.d.ts.map +1 -0
  44. package/dist/board/types.js +82 -0
  45. package/dist/board/types.js.map +1 -0
  46. package/dist/board/view.d.ts +2 -0
  47. package/dist/board/view.d.ts.map +1 -0
  48. package/dist/board/view.js +254 -0
  49. package/dist/board/view.js.map +1 -0
  50. package/dist/brahman/client.d.ts +3 -0
  51. package/dist/brahman/client.d.ts.map +1 -0
  52. package/dist/brahman/client.js +3 -0
  53. package/dist/brahman/client.js.map +1 -0
  54. package/dist/brahman/helpers.d.ts +51 -0
  55. package/dist/brahman/helpers.d.ts.map +1 -0
  56. package/dist/brahman/helpers.js +321 -0
  57. package/dist/brahman/helpers.js.map +1 -0
  58. package/dist/brahman/server.d.ts +3 -0
  59. package/dist/brahman/server.d.ts.map +1 -0
  60. package/dist/brahman/server.js +3 -0
  61. package/dist/brahman/server.js.map +1 -0
  62. package/dist/brahman/service.d.ts +2 -0
  63. package/dist/brahman/service.d.ts.map +1 -0
  64. package/dist/brahman/service.js +310 -0
  65. package/dist/brahman/service.js.map +1 -0
  66. package/dist/brahman/types.d.ts +335 -0
  67. package/dist/brahman/types.d.ts.map +1 -0
  68. package/dist/brahman/types.js +633 -0
  69. package/dist/brahman/types.js.map +1 -0
  70. package/dist/brahman/view.d.ts +2 -0
  71. package/dist/brahman/view.d.ts.map +1 -0
  72. package/dist/brahman/view.js +47 -0
  73. package/dist/brahman/view.js.map +1 -0
  74. package/dist/brahman/views/action-cards.d.ts +60 -0
  75. package/dist/brahman/views/action-cards.d.ts.map +1 -0
  76. package/dist/brahman/views/action-cards.js +283 -0
  77. package/dist/brahman/views/action-cards.js.map +1 -0
  78. package/dist/brahman/views/bot-view.d.ts +5 -0
  79. package/dist/brahman/views/bot-view.d.ts.map +1 -0
  80. package/dist/brahman/views/bot-view.js +14 -0
  81. package/dist/brahman/views/bot-view.js.map +1 -0
  82. package/dist/brahman/views/chat-editor.d.ts +5 -0
  83. package/dist/brahman/views/chat-editor.d.ts.map +1 -0
  84. package/dist/brahman/views/chat-editor.js +306 -0
  85. package/dist/brahman/views/chat-editor.js.map +1 -0
  86. package/dist/brahman/views/chat-preview.d.ts +5 -0
  87. package/dist/brahman/views/chat-preview.d.ts.map +1 -0
  88. package/dist/brahman/views/chat-preview.js +145 -0
  89. package/dist/brahman/views/chat-preview.js.map +1 -0
  90. package/dist/brahman/views/menu-editor.d.ts +11 -0
  91. package/dist/brahman/views/menu-editor.d.ts.map +1 -0
  92. package/dist/brahman/views/menu-editor.js +171 -0
  93. package/dist/brahman/views/menu-editor.js.map +1 -0
  94. package/dist/brahman/views/page-layout.d.ts +5 -0
  95. package/dist/brahman/views/page-layout.d.ts.map +1 -0
  96. package/dist/brahman/views/page-layout.js +114 -0
  97. package/dist/brahman/views/page-layout.js.map +1 -0
  98. package/dist/brahman/views/tstring-input.d.ts +15 -0
  99. package/dist/brahman/views/tstring-input.d.ts.map +1 -0
  100. package/dist/brahman/views/tstring-input.js +23 -0
  101. package/dist/brahman/views/tstring-input.js.map +1 -0
  102. package/dist/cafe/seed.d.ts +2 -0
  103. package/dist/cafe/seed.d.ts.map +1 -0
  104. package/dist/cafe/seed.js +7 -0
  105. package/dist/cafe/seed.js.map +1 -0
  106. package/dist/cafe/server.d.ts +3 -0
  107. package/dist/cafe/server.d.ts.map +1 -0
  108. package/dist/cafe/server.js +3 -0
  109. package/dist/cafe/server.js.map +1 -0
  110. package/dist/cafe/types.d.ts +2 -0
  111. package/dist/cafe/types.d.ts.map +1 -0
  112. package/dist/cafe/types.js +31 -0
  113. package/dist/cafe/types.js.map +1 -0
  114. package/dist/canary/seed.d.ts +2 -0
  115. package/dist/canary/seed.d.ts.map +1 -0
  116. package/dist/canary/seed.js +7 -0
  117. package/dist/canary/seed.js.map +1 -0
  118. package/dist/canary/server.d.ts +4 -0
  119. package/dist/canary/server.d.ts.map +1 -0
  120. package/dist/canary/server.js +4 -0
  121. package/dist/canary/server.js.map +1 -0
  122. package/dist/canary/service.d.ts +2 -0
  123. package/dist/canary/service.d.ts.map +1 -0
  124. package/dist/canary/service.js +101 -0
  125. package/dist/canary/service.js.map +1 -0
  126. package/dist/canary/types.d.ts +9 -0
  127. package/dist/canary/types.d.ts.map +1 -0
  128. package/dist/canary/types.js +13 -0
  129. package/dist/canary/types.js.map +1 -0
  130. package/dist/doc/client.d.ts +3 -0
  131. package/dist/doc/client.d.ts.map +1 -0
  132. package/dist/doc/client.js +5 -0
  133. package/dist/doc/client.js.map +1 -0
  134. package/dist/doc/fs-codec.d.ts +2 -0
  135. package/dist/doc/fs-codec.d.ts.map +1 -0
  136. package/dist/doc/fs-codec.js +44 -0
  137. package/dist/doc/fs-codec.js.map +1 -0
  138. package/dist/doc/markdown.d.ts +13 -0
  139. package/dist/doc/markdown.d.ts.map +1 -0
  140. package/dist/doc/markdown.js +250 -0
  141. package/dist/doc/markdown.js.map +1 -0
  142. package/dist/doc/prefab.d.ts +2 -0
  143. package/dist/doc/prefab.d.ts.map +1 -0
  144. package/dist/doc/prefab.js +23 -0
  145. package/dist/doc/prefab.js.map +1 -0
  146. package/dist/doc/renderers.d.ts +2 -0
  147. package/dist/doc/renderers.d.ts.map +1 -0
  148. package/dist/doc/renderers.js +94 -0
  149. package/dist/doc/renderers.js.map +1 -0
  150. package/dist/doc/seed.d.ts +2 -0
  151. package/dist/doc/seed.d.ts.map +1 -0
  152. package/dist/doc/seed.js +9 -0
  153. package/dist/doc/seed.js.map +1 -0
  154. package/dist/doc/server.d.ts +6 -0
  155. package/dist/doc/server.d.ts.map +1 -0
  156. package/dist/doc/server.js +6 -0
  157. package/dist/doc/server.js.map +1 -0
  158. package/dist/doc/slash-command.d.ts +3 -0
  159. package/dist/doc/slash-command.d.ts.map +1 -0
  160. package/dist/doc/slash-command.js +123 -0
  161. package/dist/doc/slash-command.js.map +1 -0
  162. package/dist/doc/slash-menu.d.ts +15 -0
  163. package/dist/doc/slash-menu.d.ts.map +1 -0
  164. package/dist/doc/slash-menu.js +54 -0
  165. package/dist/doc/slash-menu.js.map +1 -0
  166. package/dist/doc/text.d.ts +2 -0
  167. package/dist/doc/text.d.ts.map +1 -0
  168. package/dist/doc/text.js +22 -0
  169. package/dist/doc/text.js.map +1 -0
  170. package/dist/doc/toolbar.d.ts +5 -0
  171. package/dist/doc/toolbar.d.ts.map +1 -0
  172. package/dist/doc/toolbar.js +15 -0
  173. package/dist/doc/toolbar.js.map +1 -0
  174. package/dist/doc/treenity-block-view.d.ts +2 -0
  175. package/dist/doc/treenity-block-view.d.ts.map +1 -0
  176. package/dist/doc/treenity-block-view.js +37 -0
  177. package/dist/doc/treenity-block-view.js.map +1 -0
  178. package/dist/doc/treenity-block.d.ts +3 -0
  179. package/dist/doc/treenity-block.d.ts.map +1 -0
  180. package/dist/doc/treenity-block.js +27 -0
  181. package/dist/doc/treenity-block.js.map +1 -0
  182. package/dist/doc/types.d.ts +2 -0
  183. package/dist/doc/types.d.ts.map +1 -0
  184. package/dist/doc/types.js +10 -0
  185. package/dist/doc/types.js.map +1 -0
  186. package/dist/launcher/client.d.ts +5 -0
  187. package/dist/launcher/client.d.ts.map +1 -0
  188. package/dist/launcher/client.js +5 -0
  189. package/dist/launcher/client.js.map +1 -0
  190. package/dist/launcher/icons.d.ts +2 -0
  191. package/dist/launcher/icons.d.ts.map +1 -0
  192. package/dist/launcher/icons.js +57 -0
  193. package/dist/launcher/icons.js.map +1 -0
  194. package/dist/launcher/seed.d.ts +2 -0
  195. package/dist/launcher/seed.d.ts.map +1 -0
  196. package/dist/launcher/seed.js +36 -0
  197. package/dist/launcher/seed.js.map +1 -0
  198. package/dist/launcher/server.d.ts +3 -0
  199. package/dist/launcher/server.d.ts.map +1 -0
  200. package/dist/launcher/server.js +3 -0
  201. package/dist/launcher/server.js.map +1 -0
  202. package/dist/launcher/types.d.ts +21 -0
  203. package/dist/launcher/types.d.ts.map +1 -0
  204. package/dist/launcher/types.js +47 -0
  205. package/dist/launcher/types.js.map +1 -0
  206. package/dist/launcher/view.d.ts +2 -0
  207. package/dist/launcher/view.d.ts.map +1 -0
  208. package/dist/launcher/view.js +187 -0
  209. package/dist/launcher/view.js.map +1 -0
  210. package/dist/launcher/widgets.d.ts +2 -0
  211. package/dist/launcher/widgets.d.ts.map +1 -0
  212. package/dist/launcher/widgets.js +73 -0
  213. package/dist/launcher/widgets.js.map +1 -0
  214. package/dist/mindmap/branch.d.ts +17 -0
  215. package/dist/mindmap/branch.d.ts.map +1 -0
  216. package/dist/mindmap/branch.js +47 -0
  217. package/dist/mindmap/branch.js.map +1 -0
  218. package/dist/mindmap/client.d.ts +3 -0
  219. package/dist/mindmap/client.d.ts.map +1 -0
  220. package/dist/mindmap/client.js +3 -0
  221. package/dist/mindmap/client.js.map +1 -0
  222. package/dist/mindmap/radial-tree.d.ts +14 -0
  223. package/dist/mindmap/radial-tree.d.ts.map +1 -0
  224. package/dist/mindmap/radial-tree.js +184 -0
  225. package/dist/mindmap/radial-tree.js.map +1 -0
  226. package/dist/mindmap/sidebar.d.ts +8 -0
  227. package/dist/mindmap/sidebar.d.ts.map +1 -0
  228. package/dist/mindmap/sidebar.js +24 -0
  229. package/dist/mindmap/sidebar.js.map +1 -0
  230. package/dist/mindmap/types.d.ts +8 -0
  231. package/dist/mindmap/types.d.ts.map +1 -0
  232. package/dist/mindmap/types.js +10 -0
  233. package/dist/mindmap/types.js.map +1 -0
  234. package/dist/mindmap/use-tree-data.d.ts +14 -0
  235. package/dist/mindmap/use-tree-data.d.ts.map +1 -0
  236. package/dist/mindmap/use-tree-data.js +95 -0
  237. package/dist/mindmap/use-tree-data.js.map +1 -0
  238. package/dist/mindmap/view.d.ts +3 -0
  239. package/dist/mindmap/view.d.ts.map +1 -0
  240. package/dist/mindmap/view.js +141 -0
  241. package/dist/mindmap/view.js.map +1 -0
  242. package/dist/sensor-demo/client.d.ts +2 -0
  243. package/dist/sensor-demo/client.d.ts.map +1 -0
  244. package/dist/sensor-demo/client.js +2 -0
  245. package/dist/sensor-demo/client.js.map +1 -0
  246. package/dist/sensor-demo/server.d.ts +2 -0
  247. package/dist/sensor-demo/server.d.ts.map +1 -0
  248. package/dist/sensor-demo/server.js +2 -0
  249. package/dist/sensor-demo/server.js.map +1 -0
  250. package/dist/sensor-demo/service.d.ts +2 -0
  251. package/dist/sensor-demo/service.d.ts.map +1 -0
  252. package/dist/sensor-demo/service.js +27 -0
  253. package/dist/sensor-demo/service.js.map +1 -0
  254. package/dist/sensor-demo/types.d.ts +15 -0
  255. package/dist/sensor-demo/types.d.ts.map +1 -0
  256. package/dist/sensor-demo/types.js +18 -0
  257. package/dist/sensor-demo/types.js.map +1 -0
  258. package/dist/sensor-demo/view.d.ts +2 -0
  259. package/dist/sensor-demo/view.d.ts.map +1 -0
  260. package/dist/sensor-demo/view.js +33 -0
  261. package/dist/sensor-demo/view.js.map +1 -0
  262. package/dist/sensor-generator/action.d.ts +2 -0
  263. package/dist/sensor-generator/action.d.ts.map +1 -0
  264. package/dist/sensor-generator/action.js +23 -0
  265. package/dist/sensor-generator/action.js.map +1 -0
  266. package/dist/sensor-generator/client.d.ts +2 -0
  267. package/dist/sensor-generator/client.d.ts.map +1 -0
  268. package/dist/sensor-generator/client.js +2 -0
  269. package/dist/sensor-generator/client.js.map +1 -0
  270. package/dist/sensor-generator/server.d.ts +2 -0
  271. package/dist/sensor-generator/server.d.ts.map +1 -0
  272. package/dist/sensor-generator/server.js +2 -0
  273. package/dist/sensor-generator/server.js.map +1 -0
  274. package/dist/sensor-generator/view.d.ts +2 -0
  275. package/dist/sensor-generator/view.d.ts.map +1 -0
  276. package/dist/sensor-generator/view.js +64 -0
  277. package/dist/sensor-generator/view.js.map +1 -0
  278. package/dist/sim/client.d.ts +2 -0
  279. package/dist/sim/client.d.ts.map +1 -0
  280. package/dist/sim/client.js +2 -0
  281. package/dist/sim/client.js.map +1 -0
  282. package/dist/sim/seed.d.ts +2 -0
  283. package/dist/sim/seed.d.ts.map +1 -0
  284. package/dist/sim/seed.js +50 -0
  285. package/dist/sim/seed.js.map +1 -0
  286. package/dist/sim/server.d.ts +3 -0
  287. package/dist/sim/server.d.ts.map +1 -0
  288. package/dist/sim/server.js +3 -0
  289. package/dist/sim/server.js.map +1 -0
  290. package/dist/sim/service.d.ts +4 -0
  291. package/dist/sim/service.d.ts.map +1 -0
  292. package/dist/sim/service.js +528 -0
  293. package/dist/sim/service.js.map +1 -0
  294. package/dist/sim/types.d.ts +63 -0
  295. package/dist/sim/types.d.ts.map +1 -0
  296. package/dist/sim/types.js +57 -0
  297. package/dist/sim/types.js.map +1 -0
  298. package/dist/sim/view.d.ts +2 -0
  299. package/dist/sim/view.d.ts.map +1 -0
  300. package/dist/sim/view.js +205 -0
  301. package/dist/sim/view.js.map +1 -0
  302. package/dist/table/client.d.ts +4 -0
  303. package/dist/table/client.d.ts.map +1 -0
  304. package/dist/table/client.js +4 -0
  305. package/dist/table/client.js.map +1 -0
  306. package/dist/table/edit.d.ts +2 -0
  307. package/dist/table/edit.d.ts.map +1 -0
  308. package/dist/table/edit.js +115 -0
  309. package/dist/table/edit.js.map +1 -0
  310. package/dist/table/server.d.ts +2 -0
  311. package/dist/table/server.d.ts.map +1 -0
  312. package/dist/table/server.js +2 -0
  313. package/dist/table/server.js.map +1 -0
  314. package/dist/table/types.d.ts +18 -0
  315. package/dist/table/types.d.ts.map +1 -0
  316. package/dist/table/types.js +13 -0
  317. package/dist/table/types.js.map +1 -0
  318. package/dist/table/use-debounced-sync.d.ts +8 -0
  319. package/dist/table/use-debounced-sync.d.ts.map +1 -0
  320. package/dist/table/use-debounced-sync.js +56 -0
  321. package/dist/table/use-debounced-sync.js.map +1 -0
  322. package/dist/table/view.d.ts +2 -0
  323. package/dist/table/view.d.ts.map +1 -0
  324. package/dist/table/view.js +199 -0
  325. package/dist/table/view.js.map +1 -0
  326. package/dist/tasks/server.d.ts +2 -0
  327. package/dist/tasks/server.d.ts.map +1 -0
  328. package/dist/tasks/server.js +2 -0
  329. package/dist/tasks/server.js.map +1 -0
  330. package/dist/tasks/types.d.ts +22 -0
  331. package/dist/tasks/types.d.ts.map +1 -0
  332. package/dist/tasks/types.js +34 -0
  333. package/dist/tasks/types.js.map +1 -0
  334. package/dist/three/client.d.ts +2 -0
  335. package/dist/three/client.d.ts.map +1 -0
  336. package/dist/three/client.js +2 -0
  337. package/dist/three/client.js.map +1 -0
  338. package/dist/three/seed.d.ts +2 -0
  339. package/dist/three/seed.d.ts.map +1 -0
  340. package/dist/three/seed.js +45 -0
  341. package/dist/three/seed.js.map +1 -0
  342. package/dist/three/server.d.ts +3 -0
  343. package/dist/three/server.d.ts.map +1 -0
  344. package/dist/three/server.js +3 -0
  345. package/dist/three/server.js.map +1 -0
  346. package/dist/three/types.d.ts +178 -0
  347. package/dist/three/types.d.ts.map +1 -0
  348. package/dist/three/types.js +209 -0
  349. package/dist/three/types.js.map +1 -0
  350. package/dist/three/view.d.ts +2 -0
  351. package/dist/three/view.d.ts.map +1 -0
  352. package/dist/three/view.js +307 -0
  353. package/dist/three/view.js.map +1 -0
  354. package/dist/todo/client.d.ts +3 -0
  355. package/dist/todo/client.d.ts.map +1 -0
  356. package/dist/todo/client.js +3 -0
  357. package/dist/todo/client.js.map +1 -0
  358. package/dist/todo/seed.d.ts +2 -0
  359. package/dist/todo/seed.d.ts.map +1 -0
  360. package/dist/todo/seed.js +8 -0
  361. package/dist/todo/seed.js.map +1 -0
  362. package/dist/todo/server.d.ts +3 -0
  363. package/dist/todo/server.d.ts.map +1 -0
  364. package/dist/todo/server.js +3 -0
  365. package/dist/todo/server.js.map +1 -0
  366. package/dist/todo/types.d.ts +15 -0
  367. package/dist/todo/types.d.ts.map +1 -0
  368. package/dist/todo/types.js +29 -0
  369. package/dist/todo/types.js.map +1 -0
  370. package/dist/todo/view.d.ts +2 -0
  371. package/dist/todo/view.d.ts.map +1 -0
  372. package/dist/todo/view.js +27 -0
  373. package/dist/todo/view.js.map +1 -0
  374. package/dist/whisper/client.d.ts +2 -0
  375. package/dist/whisper/client.d.ts.map +1 -0
  376. package/dist/whisper/client.js +2 -0
  377. package/dist/whisper/client.js.map +1 -0
  378. package/dist/whisper/inbox.d.ts +2 -0
  379. package/dist/whisper/inbox.d.ts.map +1 -0
  380. package/dist/whisper/inbox.js +50 -0
  381. package/dist/whisper/inbox.js.map +1 -0
  382. package/dist/whisper/route.d.ts +10 -0
  383. package/dist/whisper/route.d.ts.map +1 -0
  384. package/dist/whisper/route.js +154 -0
  385. package/dist/whisper/route.js.map +1 -0
  386. package/dist/whisper/seed.d.ts +2 -0
  387. package/dist/whisper/seed.d.ts.map +1 -0
  388. package/dist/whisper/seed.js +14 -0
  389. package/dist/whisper/seed.js.map +1 -0
  390. package/dist/whisper/server.d.ts +5 -0
  391. package/dist/whisper/server.d.ts.map +1 -0
  392. package/dist/whisper/server.js +5 -0
  393. package/dist/whisper/server.js.map +1 -0
  394. package/dist/whisper/service.d.ts +2 -0
  395. package/dist/whisper/service.d.ts.map +1 -0
  396. package/dist/whisper/service.js +26 -0
  397. package/dist/whisper/service.js.map +1 -0
  398. package/dist/whisper/types.d.ts +38 -0
  399. package/dist/whisper/types.d.ts.map +1 -0
  400. package/dist/whisper/types.js +45 -0
  401. package/dist/whisper/types.js.map +1 -0
  402. package/dist/whisper/view.d.ts +2 -0
  403. package/dist/whisper/view.d.ts.map +1 -0
  404. package/dist/whisper/view.js +40 -0
  405. package/dist/whisper/view.js.map +1 -0
  406. package/doc/CLAUDE.md +49 -0
  407. package/doc/client.ts +5 -0
  408. package/doc/editor.css +283 -0
  409. package/doc/fs-codec.test.ts +119 -0
  410. package/doc/fs-codec.ts +50 -0
  411. package/doc/markdown.test.ts +152 -0
  412. package/doc/markdown.ts +284 -0
  413. package/doc/prefab.ts +26 -0
  414. package/doc/renderers.tsx +126 -0
  415. package/doc/seed.ts +10 -0
  416. package/doc/server.ts +5 -0
  417. package/doc/slash-command.ts +136 -0
  418. package/doc/slash-menu.tsx +91 -0
  419. package/doc/text.ts +20 -0
  420. package/doc/toolbar.tsx +86 -0
  421. package/doc/treenity-block-view.tsx +116 -0
  422. package/doc/treenity-block.ts +31 -0
  423. package/doc/types.ts +10 -0
  424. package/launcher/client.ts +4 -0
  425. package/launcher/icons.tsx +234 -0
  426. package/launcher/launcher.css +64 -0
  427. package/launcher/seed.ts +41 -0
  428. package/launcher/server.ts +2 -0
  429. package/launcher/types.ts +53 -0
  430. package/launcher/view.tsx +401 -0
  431. package/launcher/widgets.tsx +171 -0
  432. package/mindmap/branch.tsx +163 -0
  433. package/mindmap/client.ts +2 -0
  434. package/mindmap/mindmap.css +243 -0
  435. package/mindmap/sidebar.tsx +127 -0
  436. package/mindmap/types.ts +10 -0
  437. package/mindmap/view.tsx +247 -0
  438. package/package.json +75 -0
  439. package/sensor-demo/CLAUDE.md +3 -0
  440. package/sensor-demo/client.ts +1 -0
  441. package/sensor-demo/server.ts +1 -0
  442. package/sensor-demo/service.ts +27 -0
  443. package/sensor-demo/types.ts +20 -0
  444. package/sensor-demo/view.tsx +64 -0
  445. package/sensor-generator/CLAUDE.md +3 -0
  446. package/sensor-generator/action.ts +28 -0
  447. package/sensor-generator/client.ts +1 -0
  448. package/sensor-generator/server.ts +1 -0
  449. package/sensor-generator/view.tsx +107 -0
  450. package/sim/CLAUDE.md +16 -0
  451. package/sim/client.ts +1 -0
  452. package/sim/seed.ts +55 -0
  453. package/sim/server.ts +2 -0
  454. package/sim/service.ts +594 -0
  455. package/sim/sim.test.ts +282 -0
  456. package/sim/types.ts +87 -0
  457. package/sim/view.tsx +446 -0
  458. package/table/client.ts +3 -0
  459. package/table/edit.tsx +241 -0
  460. package/table/server.ts +1 -0
  461. package/table/types.ts +22 -0
  462. package/table/use-debounced-sync.ts +67 -0
  463. package/table/view.tsx +339 -0
  464. package/tasks/CLAUDE.md +6 -0
  465. package/tasks/server.ts +1 -0
  466. package/tasks/types.ts +36 -0
  467. package/three/CLAUDE.md +6 -0
  468. package/three/client.ts +1 -0
  469. package/three/seed.ts +54 -0
  470. package/three/server.ts +2 -0
  471. package/three/types.ts +238 -0
  472. package/three/view.tsx +453 -0
  473. package/todo/client.ts +2 -0
  474. package/todo/seed.ts +9 -0
  475. package/todo/server.ts +2 -0
  476. package/todo/types.ts +32 -0
  477. package/todo/view.tsx +67 -0
  478. package/whisper/CLAUDE.md +16 -0
  479. package/whisper/client.ts +1 -0
  480. package/whisper/inbox.ts +54 -0
  481. package/whisper/route.ts +182 -0
  482. package/whisper/seed.ts +15 -0
  483. package/whisper/server.ts +4 -0
  484. package/whisper/service.ts +29 -0
  485. package/whisper/types.ts +51 -0
  486. package/whisper/view.tsx +81 -0
@@ -0,0 +1,310 @@
1
+ // Brahman bot service — Telegram runtime
2
+ // Session + auth middleware, command routing, callback queries, start/stop lifecycle
3
+ import { run as runBot } from '@grammyjs/runner';
4
+ import { getComponent, register } from '@treenity/core';
5
+ import { Autostart } from '@treenity/core/mods/autostart/service';
6
+ import { Bot } from 'grammy';
7
+ import { executeAction, executePage, findActionComp, formatTString, resolveWait } from './helpers';
8
+ import { BotConfig, BrahmanSession, BrahmanUser, PageConfig } from './types';
9
+ // ── Bot factory (overridable for tests) ──
10
+ let _botFactory;
11
+ export function setBotFactory(f) { _botFactory = f; }
12
+ // ── Bot service registration ──
13
+ register('brahman.bot', 'service', async (node, svcCtx) => {
14
+ const config = getComponent(node, BotConfig);
15
+ if (!config?.token)
16
+ throw new Error('brahman.bot: token not configured');
17
+ const bot = (_botFactory?.(config.token) ?? new Bot(config.token));
18
+ const botPath = node.$path;
19
+ const botLangs = (config.langs || 'ru,en').split(',').map(s => s.trim());
20
+ const defaultLang = botLangs[0] || 'ru';
21
+ // Ensure dirs exist
22
+ const dirs = ['pages', 'users', 'sessions'];
23
+ for (const d of dirs) {
24
+ const dirPath = `${botPath}/${d}`;
25
+ if (!(await svcCtx.store.get(dirPath))) {
26
+ await svcCtx.store.set({ $path: dirPath, $type: 'dir' });
27
+ }
28
+ }
29
+ // ── Global middleware: pending callbacks → maintenance → session → auth ──
30
+ bot.use(async (gCtx, next) => {
31
+ const userId = gCtx.from?.id;
32
+ if (!userId)
33
+ return;
34
+ // Maintenance check
35
+ if (config.maintenance) {
36
+ await gCtx.reply(config.maintenance);
37
+ return;
38
+ }
39
+ // Load/create session
40
+ const sessionPath = `${botPath}/sessions/${userId}`;
41
+ let sessionNode = await svcCtx.store.get(sessionPath);
42
+ if (!sessionNode) {
43
+ sessionNode = {
44
+ $path: sessionPath, $type: 'brahman.session',
45
+ tid: userId, data: {}, history: [], callbacks: {},
46
+ };
47
+ await svcCtx.store.set(sessionNode);
48
+ }
49
+ // Load/create user
50
+ const userPath = `${botPath}/users/${userId}`;
51
+ let userNode = await svcCtx.store.get(userPath);
52
+ if (!userNode) {
53
+ userNode = {
54
+ $path: userPath, $type: 'brahman.user',
55
+ tid: userId,
56
+ firstName: gCtx.from.first_name ?? '',
57
+ lastName: gCtx.from.last_name ?? '',
58
+ username: gCtx.from.username ?? '',
59
+ lang: gCtx.from.language_code ?? defaultLang,
60
+ isAdmin: false, blocked: false, banned: false, tags: [],
61
+ };
62
+ await svcCtx.store.set(userNode);
63
+ }
64
+ const userData = getComponent(userNode, BrahmanUser);
65
+ if (userData?.banned)
66
+ return;
67
+ // Mark as unblocked if previously blocked (user restarted bot)
68
+ if (userData?.blocked) {
69
+ userData.blocked = false;
70
+ await svcCtx.store.set(userNode);
71
+ }
72
+ const sessionComp = getComponent(sessionNode, BrahmanSession);
73
+ const sessionData = sessionComp?.data ?? {};
74
+ if (!sessionData.history)
75
+ sessionData.history = sessionComp?.history ?? [];
76
+ const bCtx = {
77
+ ctx: gCtx, store: svcCtx.store,
78
+ session: sessionData,
79
+ sessionNode,
80
+ user: userNode,
81
+ lang: userData?.lang || defaultLang,
82
+ botPath,
83
+ userTags: userData?.tags ?? [],
84
+ botLangs,
85
+ };
86
+ gCtx._brahman = bCtx;
87
+ // Resolve pending wait (session-persisted) — consumes message if matched
88
+ if (!(sessionData.wait && await resolveWait(bCtx, gCtx))) {
89
+ await next();
90
+ }
91
+ // Save session after handler
92
+ Object.assign(sessionNode, {
93
+ data: sessionData,
94
+ history: sessionData.history ?? [],
95
+ callbacks: sessionData.callbacks ?? {},
96
+ });
97
+ await svcCtx.store.set(sessionNode);
98
+ });
99
+ // ── Dynamic page lookup (pages can be added/changed at runtime) ──
100
+ async function getPages() {
101
+ const { items } = await svcCtx.store.getChildren(`${botPath}/pages`, { depth: 10 });
102
+ return items.filter(n => n.$type === 'brahman.page');
103
+ }
104
+ async function findPageByCommand(cmd) {
105
+ const pages = await getPages();
106
+ return pages.find(p => {
107
+ const pc = getComponent(p, PageConfig);
108
+ return pc?.command === `/${cmd}` || pc?.command === cmd;
109
+ });
110
+ }
111
+ async function findStartPage() {
112
+ return findPageByCommand('start');
113
+ }
114
+ // ── Callback queries: page:/path, btn:id, lang:xx ──
115
+ bot.on('callback_query:data', async (gCtx) => {
116
+ const bCtx = gCtx._brahman;
117
+ if (!bCtx)
118
+ return;
119
+ const data = gCtx.callbackQuery.data;
120
+ if (data.startsWith('page:')) {
121
+ const pagePath = data.slice(5);
122
+ const colonIdx = pagePath.indexOf(':');
123
+ if (colonIdx >= 0) {
124
+ bCtx.session.param = pagePath.slice(colonIdx + 1);
125
+ await executePage(pagePath.slice(0, colonIdx), bCtx);
126
+ }
127
+ else {
128
+ await executePage(pagePath, bCtx);
129
+ }
130
+ }
131
+ else if (data.startsWith('btn:')) {
132
+ const btnId = parseInt(data.slice(4), 10);
133
+ const lastMenuPath = bCtx.session._lastMenu;
134
+ if (lastMenuPath) {
135
+ const menuNode = await svcCtx.store.get(lastMenuPath);
136
+ const menuComp = menuNode ? findActionComp(menuNode) : null;
137
+ if (menuComp?.rows) {
138
+ for (const row of menuComp.rows) {
139
+ for (const btn of row.buttons) {
140
+ if (btn.id === btnId && btn.action) {
141
+ if (btn.action.type === 'brahman.action.page' && btn.action.target) {
142
+ await executePage(btn.action.target, bCtx);
143
+ }
144
+ else if (btn.action.target) {
145
+ const actionNode = await svcCtx.store.get(btn.action.target);
146
+ if (actionNode)
147
+ await executeAction(actionNode, bCtx);
148
+ }
149
+ }
150
+ }
151
+ }
152
+ }
153
+ }
154
+ }
155
+ else if (data.startsWith('lang:')) {
156
+ const newLang = data.slice(5);
157
+ if (bCtx.botLangs.includes(newLang)) {
158
+ const userData = getComponent(bCtx.user, BrahmanUser);
159
+ if (userData) {
160
+ userData.lang = newLang;
161
+ await svcCtx.store.set(bCtx.user);
162
+ bCtx.lang = newLang;
163
+ }
164
+ bCtx.session.langSelected = newLang;
165
+ const startPage = await findStartPage();
166
+ if (startPage)
167
+ await executePage(startPage.$path, bCtx);
168
+ }
169
+ }
170
+ await gCtx.answerCallbackQuery();
171
+ });
172
+ // ── Text message handler: button callback → command fallback ──
173
+ bot.on('message:text', async (gCtx) => {
174
+ const bCtx = gCtx._brahman;
175
+ if (!bCtx)
176
+ return;
177
+ const text = gCtx.message.text;
178
+ if (text.startsWith('/')) {
179
+ const cmd = text.slice(1).split(/\s/)[0];
180
+ const page = await findPageByCommand(cmd);
181
+ if (page) {
182
+ const paramMatch = text.match(/^\/\S+\s+(.*)/);
183
+ if (paramMatch)
184
+ bCtx.session.param = paramMatch[1];
185
+ await executePage(page.$path, bCtx);
186
+ return;
187
+ }
188
+ const startPage = await findStartPage();
189
+ if (startPage)
190
+ await executePage(startPage.$path, bCtx);
191
+ return;
192
+ }
193
+ // Try button callback from last page in history
194
+ const history = (bCtx.session.history ?? []);
195
+ if (history.length > 0) {
196
+ const lastPagePath = history[history.length - 1];
197
+ const pageNode = await svcCtx.store.get(lastPagePath);
198
+ if (pageNode) {
199
+ const { items: children } = await svcCtx.store.getChildren(lastPagePath + '/_actions');
200
+ for (const child of children) {
201
+ const actionComp = findActionComp(child);
202
+ if (!actionComp)
203
+ continue;
204
+ if (actionComp.menuType === 'keyboard' && actionComp.rows) {
205
+ for (const row of actionComp.rows) {
206
+ for (const btn of row.buttons) {
207
+ const btnText = formatTString(btn.title, bCtx.lang);
208
+ if (btnText === text && btn.action) {
209
+ if (btn.action.type === 'brahman.action.page' && btn.action.target) {
210
+ await executePage(btn.action.target, bCtx);
211
+ return;
212
+ }
213
+ else if (btn.action.target) {
214
+ const actionNode = await svcCtx.store.get(btn.action.target);
215
+ if (actionNode)
216
+ await executeAction(actionNode, bCtx);
217
+ return;
218
+ }
219
+ }
220
+ }
221
+ }
222
+ }
223
+ }
224
+ }
225
+ }
226
+ // Fallback: check _lastMenu for backward compat
227
+ const lastMenuPath = bCtx.session._lastMenu;
228
+ if (lastMenuPath) {
229
+ const menuNode = await svcCtx.store.get(lastMenuPath);
230
+ const menuComp = menuNode ? findActionComp(menuNode) : null;
231
+ if (menuComp?.menuType === 'keyboard' && menuComp.rows) {
232
+ for (const row of menuComp.rows) {
233
+ for (const btn of row.buttons) {
234
+ const btnText = formatTString(btn.title, bCtx.lang);
235
+ if (btnText === text && btn.action) {
236
+ if (btn.action.type === 'brahman.action.page' && btn.action.target) {
237
+ await executePage(btn.action.target, bCtx);
238
+ return;
239
+ }
240
+ }
241
+ }
242
+ }
243
+ }
244
+ }
245
+ // Default fallback: /start page
246
+ const startPage = await findStartPage();
247
+ if (startPage) {
248
+ await executePage(startPage.$path, bCtx);
249
+ }
250
+ });
251
+ bot.catch(err => console.error(`[brahman:${config.alias || botPath}]`, err.message ?? err));
252
+ // Init bot (getMe) and fill node with bot info
253
+ await bot.init();
254
+ const info = bot.botInfo;
255
+ if (info) {
256
+ const updates = {};
257
+ if (info.username && !config.alias)
258
+ updates.alias = `@${info.username}`;
259
+ if (info.first_name && !config.name)
260
+ updates.name = info.first_name;
261
+ if (Object.keys(updates).length > 0) {
262
+ const fresh = await svcCtx.store.get(botPath);
263
+ if (fresh)
264
+ await svcCtx.store.set({ ...fresh, ...updates });
265
+ }
266
+ }
267
+ let runner = null;
268
+ if (config.running !== false) {
269
+ runner = runBot(bot);
270
+ }
271
+ // React to start/stop actions toggling the running flag
272
+ const unsub = svcCtx.subscribe(botPath, async () => {
273
+ const fresh = await svcCtx.store.get(botPath);
274
+ if (!fresh)
275
+ return;
276
+ const cfg = getComponent(fresh, BotConfig);
277
+ const shouldRun = cfg?.running !== false;
278
+ if (shouldRun && !runner) {
279
+ runner = runBot(bot);
280
+ }
281
+ else if (!shouldRun && runner) {
282
+ runner.stop();
283
+ runner = null;
284
+ }
285
+ });
286
+ return {
287
+ stop: async () => {
288
+ unsub();
289
+ if (runner)
290
+ runner.stop();
291
+ },
292
+ };
293
+ });
294
+ // ── Start/stop actions — delegate to autostart service manager ──
295
+ /** @description Start the Telegram bot polling loop via autostart service */
296
+ register('brahman.bot', 'action:start', async (ctx) => {
297
+ await ctx.nc('/sys/autostart').get(Autostart).start({ path: ctx.node.$path });
298
+ // Set running flag — service subscription reacts and calls bot.start()
299
+ const fresh = await ctx.store.get(ctx.node.$path);
300
+ if (fresh)
301
+ await ctx.store.set({ ...fresh, running: true });
302
+ });
303
+ /** @description Stop the Telegram bot polling loop via autostart service */
304
+ register('brahman.bot', 'action:stop', async (ctx) => {
305
+ await ctx.nc('/sys/autostart').get(Autostart).stop({ path: ctx.node.$path });
306
+ const fresh = await ctx.store.get(ctx.node.$path);
307
+ if (fresh)
308
+ await ctx.store.set({ ...fresh, running: false });
309
+ });
310
+ //# sourceMappingURL=service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../brahman/service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,335 @@
1
+ import type { BrahmanCtx } from './helpers';
2
+ export type TString = Record<string, string>;
3
+ /** Pending wait state — persisted in session.data.wait */
4
+ export type WaitState = {
5
+ type: 'text' | 'photo';
6
+ saveTo: string;
7
+ deleteMessages: boolean;
8
+ sentMsgId: number;
9
+ remaining: string[];
10
+ };
11
+ export type MenuType = 'none' | 'inline' | 'inline_new' | 'inline_close' | 'keyboard' | 'remove' | 'force_reply';
12
+ export declare const MENU_TYPES: {
13
+ value: MenuType;
14
+ label: string;
15
+ }[];
16
+ export type ButtonAction = {
17
+ type: string;
18
+ target?: string;
19
+ [key: string]: unknown;
20
+ };
21
+ export type MenuButton = {
22
+ id: number;
23
+ title: TString;
24
+ url?: string;
25
+ tags?: string[];
26
+ action?: ButtonAction;
27
+ };
28
+ export type MenuRow = {
29
+ buttons: MenuButton[];
30
+ };
31
+ export declare const ACTION_TYPES: readonly [{
32
+ readonly type: "brahman.action.message";
33
+ readonly label: "Message";
34
+ readonly icon: "MessageSquare";
35
+ }, {
36
+ readonly type: "brahman.action.question";
37
+ readonly label: "Question";
38
+ readonly icon: "HelpCircle";
39
+ }, {
40
+ readonly type: "brahman.action.ifelse";
41
+ readonly label: "If / Else";
42
+ readonly icon: "GitBranch";
43
+ }, {
44
+ readonly type: "brahman.action.page";
45
+ readonly label: "Go to page";
46
+ readonly icon: "FileText";
47
+ }, {
48
+ readonly type: "brahman.action.back";
49
+ readonly label: "Back";
50
+ readonly icon: "ArrowLeft";
51
+ }, {
52
+ readonly type: "brahman.action.tag";
53
+ readonly label: "Set tag";
54
+ readonly icon: "Tag";
55
+ }, {
56
+ readonly type: "brahman.action.broadcast";
57
+ readonly label: "Broadcast";
58
+ readonly icon: "Send";
59
+ }, {
60
+ readonly type: "brahman.action.getvalue";
61
+ readonly label: "Get value";
62
+ readonly icon: "Download";
63
+ }, {
64
+ readonly type: "brahman.action.setvalue";
65
+ readonly label: "Set value";
66
+ readonly icon: "Upload";
67
+ }, {
68
+ readonly type: "brahman.action.params";
69
+ readonly label: "Parse params";
70
+ readonly icon: "Settings2";
71
+ }, {
72
+ readonly type: "brahman.action.file";
73
+ readonly label: "Send file";
74
+ readonly icon: "File";
75
+ }, {
76
+ readonly type: "brahman.action.eval";
77
+ readonly label: "Eval JS";
78
+ readonly icon: "Code";
79
+ }, {
80
+ readonly type: "brahman.action.remove";
81
+ readonly label: "Remove msg";
82
+ readonly icon: "Trash2";
83
+ }, {
84
+ readonly type: "brahman.action.emittext";
85
+ readonly label: "Emit text";
86
+ readonly icon: "Repeat";
87
+ }, {
88
+ readonly type: "brahman.action.forward";
89
+ readonly label: "Forward";
90
+ readonly icon: "Forward";
91
+ }, {
92
+ readonly type: "brahman.action.resetsession";
93
+ readonly label: "Reset session";
94
+ readonly icon: "RotateCcw";
95
+ }, {
96
+ readonly type: "brahman.action.resethistory";
97
+ readonly label: "Reset history";
98
+ readonly icon: "History";
99
+ }, {
100
+ readonly type: "brahman.action.onerror";
101
+ readonly label: "On error";
102
+ readonly icon: "AlertTriangle";
103
+ }, {
104
+ readonly type: "brahman.action.keywordselect";
105
+ readonly label: "Keyword select";
106
+ readonly icon: "Search";
107
+ }, {
108
+ readonly type: "brahman.action.selectlang";
109
+ readonly label: "Select language";
110
+ readonly icon: "Globe";
111
+ }, {
112
+ readonly type: "brahman.action.call";
113
+ readonly label: "Call action";
114
+ readonly icon: "Zap";
115
+ }];
116
+ /** Telegram bot instance — token, proxy, language, maintenance */
117
+ export declare class BotConfig {
118
+ /** @title Token @description Telegram bot token */
119
+ token: string;
120
+ /** @title Proxy @description SOCKS proxy URL */
121
+ proxy: string;
122
+ /** @title Alias @description Bot username */
123
+ alias: string;
124
+ /** @title Name @description Display name */
125
+ name: string;
126
+ /** @title Langs @description Comma-separated: ru,en,de,uz */
127
+ langs: string;
128
+ /** @title Maintenance @description Non-empty = paused */
129
+ maintenance: string;
130
+ /** @title Running */
131
+ running: boolean;
132
+ }
133
+ /** Bot conversation page — command trigger and ordered action sequence */
134
+ export declare class PageConfig {
135
+ /** @title Command @description Telegram command, e.g. /start */
136
+ command: string;
137
+ /** @description Ordered child action paths */
138
+ positions: string[];
139
+ }
140
+ /** Send message — text with optional menu and link previews */
141
+ export declare class MessageAction {
142
+ /** @title Text @format tstring */
143
+ text: TString;
144
+ /** @title Disable link previews */
145
+ disableLinks: boolean;
146
+ /** @title Menu type */
147
+ menuType: MenuType;
148
+ /** @title Menu rows */
149
+ rows: MenuRow[];
150
+ /** @title Send to chat ID @description Leave empty for current chat */
151
+ chatId: string;
152
+ /** @title Reply to message ID @description Session field with message ID */
153
+ replyToMsgId: string;
154
+ run(bCtx: BrahmanCtx): Promise<void>;
155
+ }
156
+ /** Ask question — prompt for text/photo input, save answer */
157
+ export declare class QuestionAction {
158
+ /** @title Prompt text @format tstring */
159
+ text: TString;
160
+ /** @title Input type */
161
+ inputType: 'text' | 'photo';
162
+ /** @title Save answer to */
163
+ saveTo: string;
164
+ /** @title Delete messages @description Delete question and answer after receiving */
165
+ deleteMessages: boolean;
166
+ run(bCtx: BrahmanCtx): Promise<void>;
167
+ }
168
+ /** Conditional branch — evaluate JS expression, run if/else action */
169
+ export declare class IfElseAction {
170
+ /** @title Condition @format textarea @description JS expression evaluated at runtime */
171
+ condition: string;
172
+ /** @title Action if true @description Path to action node */
173
+ actionIf: string;
174
+ /** @title Action if false */
175
+ actionElse: string;
176
+ /** @title Stop after action */
177
+ stopAfterAction: boolean;
178
+ run(bCtx: BrahmanCtx): Promise<void>;
179
+ }
180
+ /** Navigate to page — redirect conversation flow */
181
+ export declare class PageNavAction {
182
+ /** @title Target page @description Path to page node */
183
+ targetPage: string;
184
+ run(bCtx: BrahmanCtx): Promise<void>;
185
+ }
186
+ /** Go back — return to previous page in history */
187
+ export declare class BackAction {
188
+ run(bCtx: BrahmanCtx): Promise<void>;
189
+ }
190
+ /** Set user tag — assign key-value metadata to user */
191
+ export declare class TagAction {
192
+ /** @title Tag name */
193
+ tag: string;
194
+ /** @title Value expression */
195
+ value: string;
196
+ run(bCtx: BrahmanCtx): Promise<void>;
197
+ }
198
+ /** Broadcast message — send action to users matching tag filter */
199
+ export declare class BroadcastAction {
200
+ /** @title User tags filter @format tags */
201
+ userTags: string[];
202
+ /** @title Action to broadcast @description Path to action node */
203
+ action: string;
204
+ run(bCtx: BrahmanCtx): Promise<void>;
205
+ }
206
+ /** Read session value — extract data from user session */
207
+ export declare class GetValueAction {
208
+ /** @title Source path @description Dot-path in session data */
209
+ path: string;
210
+ /** @title Save to */
211
+ saveTo: string;
212
+ run(bCtx: BrahmanCtx): Promise<void>;
213
+ }
214
+ /** Write session value — store data in user session */
215
+ export declare class SetValueAction {
216
+ /** @title Value expression */
217
+ value: string;
218
+ /** @title Save to */
219
+ saveTo: string;
220
+ run(bCtx: BrahmanCtx): Promise<void>;
221
+ }
222
+ /** Parse parameters — split and name input parts */
223
+ export declare class ParamsAction {
224
+ /** @title Base64 decode */
225
+ base64: boolean;
226
+ /** @title Split delimiter */
227
+ split: string;
228
+ /** @title Parameter names @format tags */
229
+ names: string[];
230
+ run(bCtx: BrahmanCtx): Promise<void>;
231
+ }
232
+ /** Send file — deliver photo/document/video/audio to chat */
233
+ export declare class FileAction {
234
+ /** @title File node path */
235
+ fileId: string;
236
+ /** @title Override type @description photo, document, video, audio, voice */
237
+ asType: string;
238
+ run(bCtx: BrahmanCtx): Promise<void>;
239
+ }
240
+ /** Execute JavaScript — run async code with context access */
241
+ export declare class EvalAction {
242
+ /** @title JavaScript code @format textarea @description Async function body, receives ctx object */
243
+ value: string;
244
+ run(bCtx: BrahmanCtx): Promise<void>;
245
+ }
246
+ /** Remove message — delete bot message from chat */
247
+ export declare class RemoveAction {
248
+ run(bCtx: BrahmanCtx): Promise<void>;
249
+ }
250
+ /** Emit synthetic text — inject text for re-processing */
251
+ export declare class EmitTextAction {
252
+ /** @title Text template @format textarea @description Template for text to re-process */
253
+ from: string;
254
+ run(bCtx: BrahmanCtx): Promise<void>;
255
+ }
256
+ /** Forward message — relay message to another chat */
257
+ export declare class ForwardAction {
258
+ /** @title Message ID from @description Session field with msg id. Empty = current msg */
259
+ msgIdFrom: string;
260
+ /** @title Forward to @description Chat/user ID template */
261
+ toFrom: string;
262
+ run(bCtx: BrahmanCtx): Promise<void>;
263
+ }
264
+ /** Reset session — clear all user session data */
265
+ export declare class ResetSessionAction {
266
+ run(bCtx: BrahmanCtx): Promise<void>;
267
+ }
268
+ /** Reset history — clear page navigation stack */
269
+ export declare class ResetHistoryAction {
270
+ run(bCtx: BrahmanCtx): Promise<void>;
271
+ }
272
+ /** Error handler — catch specific errors and run fallback action */
273
+ export declare class OnErrorAction {
274
+ /** @title Error text @description Substring to match in error message */
275
+ error: string;
276
+ /** @title Action path @description Path to action node to run */
277
+ action: string;
278
+ run(bCtx: BrahmanCtx): Promise<void>;
279
+ }
280
+ export type KeywordEntry = {
281
+ keywords: string[];
282
+ message: string;
283
+ };
284
+ /** Keyword matcher — select response based on text keywords */
285
+ export declare class KeywordSelectAction {
286
+ /** @title Source text @description Template for text to analyze */
287
+ textFrom: string;
288
+ /** @title Keyword entries @description Array of {keywords, message} pairs */
289
+ elements: KeywordEntry[];
290
+ run(bCtx: BrahmanCtx): Promise<void>;
291
+ }
292
+ /** Call tree action — execute any Treenity action from bot flow */
293
+ export declare class CallAction {
294
+ /** @title Node path @description Template with {session.vars} */
295
+ path: string;
296
+ /** @title Action name */
297
+ action: string;
298
+ /** @title Component type @description Optional $type for resolution */
299
+ type: string;
300
+ /** @title Component key @description Optional named component key */
301
+ key: string;
302
+ /** @title Input data @format textarea @description JSON template */
303
+ dataExpr: string;
304
+ /** @title Save result to @description Session key for result */
305
+ saveTo: string;
306
+ run(bCtx: BrahmanCtx): Promise<void>;
307
+ }
308
+ /** Language selector — let user choose interface language */
309
+ export declare class SelectLanguageAction {
310
+ /** @title Text @format tstring */
311
+ text: TString;
312
+ run(bCtx: BrahmanCtx): Promise<void>;
313
+ }
314
+ /** Bot user profile — Telegram identity, language, tags, ban status */
315
+ export declare class BrahmanUser {
316
+ tid: number;
317
+ firstName: string;
318
+ lastName: string;
319
+ username: string;
320
+ lang: string;
321
+ isAdmin: boolean;
322
+ blocked: boolean;
323
+ banned: boolean;
324
+ /** @title User tags */
325
+ tags: string[];
326
+ }
327
+ /** User conversation state — session data, history, pending callbacks */
328
+ export declare class BrahmanSession {
329
+ tid: number;
330
+ data: Record<string, unknown>;
331
+ history: string[];
332
+ /** @title Pending callbacks @description messageType → action path */
333
+ callbacks: Record<string, string>;
334
+ }
335
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../brahman/types.ts"],"names":[],"mappings":"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"}