@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,171 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ // Menu editor — DnD button/row constructor
3
+ // Per-row horizontal sortable + cross-row drop with indicator
4
+ import { closestCenter, DndContext, DragOverlay, PointerSensor, useSensor, useSensors, } from '@dnd-kit/core';
5
+ import { arrayMove, horizontalListSortingStrategy, SortableContext, useSortable } from '@dnd-kit/sortable';
6
+ import { CSS } from '@dnd-kit/utilities';
7
+ import { Badge } from '@treenity/react/components/ui/badge';
8
+ import { Button } from '@treenity/react/components/ui/button';
9
+ import { Input } from '@treenity/react/components/ui/input';
10
+ import { trpc } from '@treenity/react/trpc';
11
+ import { ArrowRight, Plus, X } from 'lucide-react';
12
+ import { useRef, useState } from 'react';
13
+ import { createPortal } from 'react-dom';
14
+ import { ACTION_TYPES, MENU_TYPES } from '../types';
15
+ import { TStringLineInput, tstringPreview } from './tstring-input';
16
+ // ── Modal (lightweight, no radix dependency) ──
17
+ function Modal({ open, onClose, title, children }) {
18
+ if (!open)
19
+ return null;
20
+ return createPortal(_jsxs("div", { className: "fixed inset-0 z-50 flex items-center justify-center", children: [_jsx("div", { className: "absolute inset-0 bg-black/50", onClick: onClose }), _jsxs("div", { className: "relative bg-background border border-border rounded-lg shadow-lg w-full max-w-md mx-4", children: [_jsxs("div", { className: "flex items-center justify-between px-4 py-3 border-b border-border", children: [_jsx("h3", { className: "text-sm font-semibold", children: title }), _jsx("button", { type: "button", onClick: onClose, className: "text-muted-foreground hover:text-foreground", children: _jsx(X, { className: "h-4 w-4" }) })] }), _jsx("div", { className: "p-4 space-y-4", children: children })] })] }), document.body);
21
+ }
22
+ // ── Tag editor (for button tags) ──
23
+ function TagEditor({ tags, onChange }) {
24
+ const [input, setInput] = useState('');
25
+ function add() {
26
+ const t = input.trim();
27
+ if (!t || tags.includes(t))
28
+ return;
29
+ onChange([...tags, t]);
30
+ setInput('');
31
+ }
32
+ return (_jsxs("div", { className: "space-y-1.5", children: [_jsx("div", { className: "flex flex-wrap gap-1", children: tags.map(tag => (_jsxs(Badge, { variant: "secondary", className: "gap-1 pr-1 text-xs", children: [tag, _jsx("button", { type: "button", onClick: () => onChange(tags.filter(t => t !== tag)), className: "ml-0.5 rounded-full hover:bg-destructive/20 p-0.5", children: _jsx(X, { className: "h-2.5 w-2.5" }) })] }, tag))) }), _jsxs("div", { className: "flex gap-1", children: [_jsx(Input, { className: "flex-1 h-7 text-xs", placeholder: "tag (!exclude)", value: input, onChange: e => setInput(e.target.value), onKeyDown: e => e.key === 'Enter' && (e.preventDefault(), add()) }), _jsx(Button, { variant: "outline", size: "sm", className: "h-7 text-xs", onClick: add, children: "+" })] })] }));
33
+ }
34
+ // ── Button edit modal ──
35
+ function ButtonEditModal({ button, langs, onSave, onDelete, onClose, }) {
36
+ const [draft, setDraft] = useState({ ...button });
37
+ function update(key, val) {
38
+ setDraft(prev => ({ ...prev, [key]: val }));
39
+ }
40
+ return (_jsxs(Modal, { open: true, title: "Edit Button", onClose: onClose, children: [_jsxs("div", { className: "space-y-3", children: [_jsxs("div", { children: [_jsx("label", { className: "text-xs font-medium text-muted-foreground", children: "Title" }), _jsx(TStringLineInput, { value: draft.title, onChange: t => update('title', t), langs: langs })] }), _jsxs("div", { children: [_jsx("label", { className: "text-xs font-medium text-muted-foreground", children: "URL (optional)" }), _jsx(Input, { className: "h-8 text-sm", placeholder: "https://...", value: draft.url ?? '', onChange: e => update('url', e.target.value || undefined) })] }), _jsxs("div", { children: [_jsx("label", { className: "text-xs font-medium text-muted-foreground", children: "Tags" }), _jsx(TagEditor, { tags: draft.tags ?? [], onChange: t => update('tags', t) })] }), _jsxs("div", { children: [_jsx("label", { className: "text-xs font-medium text-muted-foreground", children: "Button action" }), _jsxs("select", { className: "w-full h-8 text-sm border border-border rounded-md bg-background px-2", value: draft.action?.type ?? '', onChange: e => {
41
+ if (!e.target.value) {
42
+ update('action', undefined);
43
+ return;
44
+ }
45
+ update('action', { type: e.target.value });
46
+ }, children: [_jsx("option", { value: "", children: "No action" }), ACTION_TYPES.map(at => (_jsx("option", { value: at.type, children: at.label }, at.type)))] }), draft.action?.type === 'brahman.action.page' && (_jsx(Input, { className: "h-8 text-sm mt-1", placeholder: "Target page path", value: draft.action.target ?? '', onChange: e => update('action', { ...draft.action, target: e.target.value }) }))] })] }), _jsxs("div", { className: "flex justify-between pt-2", children: [_jsx(Button, { variant: "destructive", size: "sm", onClick: onDelete, children: "Delete" }), _jsxs("div", { className: "flex gap-2", children: [_jsx(Button, { variant: "outline", size: "sm", onClick: onClose, children: "Cancel" }), _jsx(Button, { size: "sm", onClick: () => { onSave(draft); onClose(); }, children: "Save" })] })] })] }));
47
+ }
48
+ // ── Sortable button with drop indicator ──
49
+ function SortableButton({ button, totalInRow, onClick, onPageDrop, isOver, isCrossRow, }) {
50
+ const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({
51
+ id: `btn-${button.id}`,
52
+ });
53
+ const [treeDragOver, setTreeDragOver] = useState(false);
54
+ const widthPct = `${(100 / totalInRow).toFixed(1)}%`;
55
+ const showIndicator = isOver && isCrossRow;
56
+ const pageTarget = button.action?.type === 'brahman.action.page' ? button.action.target : null;
57
+ return (_jsxs("div", { ref: setNodeRef, style: {
58
+ width: widthPct,
59
+ transform: CSS.Transform.toString(transform),
60
+ transition,
61
+ opacity: isDragging ? 0.3 : 1,
62
+ }, className: `shrink-0 relative ${showIndicator ? 'ml-2' : ''}`, onDragOver: e => {
63
+ if (e.dataTransfer.types.includes('application/treenity-path')) {
64
+ e.preventDefault();
65
+ e.dataTransfer.dropEffect = 'link';
66
+ setTreeDragOver(true);
67
+ }
68
+ }, onDragLeave: () => setTreeDragOver(false), onDrop: async (e) => {
69
+ const path = e.dataTransfer.getData('application/treenity-path');
70
+ setTreeDragOver(false);
71
+ if (!path)
72
+ return;
73
+ e.preventDefault();
74
+ const node = await trpc.get.query({ path });
75
+ if (node?.$type === 'brahman.page')
76
+ onPageDrop(path);
77
+ }, children: [showIndicator && (_jsx("div", { className: "absolute -left-2 top-0 bottom-0 flex items-center z-10", children: _jsx("div", { className: "w-1 h-full bg-primary rounded-full" }) })), _jsxs("div", { ...attributes, ...listeners, onClick: onClick, className: `flex flex-wrap items-center justify-center gap-x-1.5 gap-y-0 px-2 py-1.5 border rounded-md
78
+ cursor-pointer text-sm font-medium select-none transition-colors
79
+ ${treeDragOver ? 'border-primary bg-primary/10 ring-1 ring-primary/30' : ''}
80
+ ${showIndicator ? 'border-primary/50 bg-primary/5' : ''}
81
+ ${!treeDragOver && !showIndicator ? 'border-border bg-card hover:bg-accent' : ''}`, children: [_jsx("span", { className: "truncate", children: tstringPreview(button.title, 20) || 'Button' }), (button.tags?.length ?? 0) > 0 && (_jsxs("span", { className: "text-[9px] text-muted-foreground", children: ["(", button.tags.length, ")"] })), pageTarget && (_jsxs("span", { className: "flex items-center gap-0.5 text-[9px] text-primary/70", children: [_jsx(ArrowRight, { className: "h-2.5 w-2.5" }), pageTarget.split('/').at(-1)] }))] })] }));
82
+ }
83
+ // ── Helpers ──
84
+ function findButtonIn(rows, id) {
85
+ const numId = parseInt(id.replace('btn-', ''), 10);
86
+ for (let r = 0; r < rows.length; r++) {
87
+ const bi = rows[r].buttons.findIndex(b => b.id === numId);
88
+ if (bi >= 0)
89
+ return { rowIdx: r, btnIdx: bi };
90
+ }
91
+ return null;
92
+ }
93
+ export function MenuEditor({ menuType = 'none', rows = [], langs, onChangeType, onChangeRows }) {
94
+ const [editingButton, setEditingButton] = useState(null);
95
+ const [activeId, setActiveId] = useState(null);
96
+ // Track which button we're hovering over (using ref to avoid re-render storms from @dnd-kit)
97
+ const overIdRef = useRef(null);
98
+ const [overId, setOverId] = useState(null);
99
+ const sensors = useSensors(useSensor(PointerSensor, { activationConstraint: { distance: 5 } }));
100
+ const showRows = menuType !== 'none' && menuType !== 'remove';
101
+ let nextId = 1;
102
+ for (const row of rows)
103
+ for (const btn of row.buttons)
104
+ if (btn.id >= nextId)
105
+ nextId = btn.id + 1;
106
+ function defaultTitle() {
107
+ return Object.fromEntries(langs.map(l => [l, `Button ${nextId}`]));
108
+ }
109
+ // ── DnD handlers ──
110
+ function handleDragStart(event) {
111
+ setActiveId(String(event.active.id));
112
+ overIdRef.current = null;
113
+ setOverId(null);
114
+ }
115
+ function handleDragEnd(event) {
116
+ const { active, over } = event;
117
+ if (over && active.id !== over.id) {
118
+ const src = findButtonIn(rows, String(active.id));
119
+ const dst = findButtonIn(rows, String(over.id));
120
+ if (src && dst) {
121
+ const newRows = rows.map(r => ({ buttons: [...r.buttons] }));
122
+ if (src.rowIdx === dst.rowIdx) {
123
+ newRows[src.rowIdx].buttons = arrayMove(newRows[src.rowIdx].buttons, src.btnIdx, dst.btnIdx);
124
+ }
125
+ else {
126
+ const [btn] = newRows[src.rowIdx].buttons.splice(src.btnIdx, 1);
127
+ newRows[dst.rowIdx].buttons.splice(dst.btnIdx, 0, btn);
128
+ }
129
+ onChangeRows(newRows.filter(r => r.buttons.length > 0));
130
+ }
131
+ }
132
+ setActiveId(null);
133
+ overIdRef.current = null;
134
+ setOverId(null);
135
+ }
136
+ // ── CRUD ──
137
+ function addButton(rowIdx) {
138
+ const newRows = rows.map(r => ({ buttons: [...r.buttons] }));
139
+ newRows[rowIdx].buttons.push({ id: nextId, title: defaultTitle(), tags: [] });
140
+ onChangeRows(newRows);
141
+ }
142
+ function addRow() {
143
+ onChangeRows([...rows, { buttons: [{ id: nextId, title: defaultTitle(), tags: [] }] }]);
144
+ }
145
+ function updateButton(rowIdx, btnIdx, btn) {
146
+ const newRows = rows.map(r => ({ buttons: [...r.buttons] }));
147
+ newRows[rowIdx].buttons[btnIdx] = btn;
148
+ onChangeRows(newRows);
149
+ }
150
+ function deleteButton(rowIdx, btnIdx) {
151
+ const newRows = rows.map(r => ({ buttons: [...r.buttons] }));
152
+ newRows[rowIdx].buttons.splice(btnIdx, 1);
153
+ onChangeRows(newRows.filter(r => r.buttons.length > 0));
154
+ setEditingButton(null);
155
+ }
156
+ // Determine if active and over are in different rows
157
+ const activePos = activeId ? findButtonIn(rows, activeId) : null;
158
+ const overPos = overId ? findButtonIn(rows, overId) : null;
159
+ const isCrossRow = !!(activePos && overPos && activePos.rowIdx !== overPos.rowIdx);
160
+ return (_jsxs("div", { className: "space-y-3", children: [_jsxs("div", { className: "flex items-center gap-3", children: [_jsx("label", { className: "text-xs font-medium text-muted-foreground w-20", children: "Menu type" }), _jsx("select", { className: "flex-1 h-8 text-sm border border-border rounded-md bg-background px-2", value: menuType, onChange: e => onChangeType(e.target.value), children: MENU_TYPES.map(mt => (_jsx("option", { value: mt.value, children: mt.label }, mt.value))) })] }), showRows && (_jsxs("div", { className: "space-y-2", children: [_jsxs(DndContext, { sensors: sensors, collisionDetection: closestCenter, onDragStart: handleDragStart, onDragMove: ({ over }) => {
161
+ const id = over ? String(over.id) : null;
162
+ if (id !== overIdRef.current) {
163
+ overIdRef.current = id;
164
+ setOverId(id);
165
+ }
166
+ }, onDragEnd: handleDragEnd, onDragCancel: () => { setActiveId(null); overIdRef.current = null; setOverId(null); }, children: [rows.map((row, ri) => (_jsx("div", { className: "space-y-1", children: _jsxs("div", { className: "flex items-center gap-1", children: [_jsx("span", { className: "text-[10px] text-muted-foreground w-4", children: ri + 1 }), _jsx(SortableContext, { items: row.buttons.map(b => `btn-${b.id}`), strategy: horizontalListSortingStrategy, children: _jsx("div", { className: "flex-1 flex gap-1", children: row.buttons.map((btn, bi) => (_jsx(SortableButton, { button: btn, totalInRow: row.buttons.length, onClick: () => setEditingButton({ rowIdx: ri, btnIdx: bi }), onPageDrop: path => updateButton(ri, bi, {
167
+ ...btn,
168
+ action: { type: 'brahman.action.page', target: path },
169
+ }), isOver: overId === `btn-${btn.id}`, isCrossRow: isCrossRow }, btn.id))) }) }), _jsx("button", { type: "button", onClick: () => addButton(ri), className: "p-1 text-muted-foreground hover:text-foreground", title: "Add button to row", children: _jsx(Plus, { className: "h-3.5 w-3.5" }) })] }) }, ri))), _jsx(DragOverlay, { children: activeId && activePos ? (_jsx("div", { className: "px-2 py-1.5 border border-primary rounded-md bg-card shadow-lg text-xs font-medium opacity-85", children: tstringPreview(rows[activePos.rowIdx].buttons[activePos.btnIdx].title, 12) || 'Button' })) : null })] }), _jsxs(Button, { variant: "outline", size: "sm", className: "text-xs", onClick: addRow, children: [_jsx(Plus, { className: "h-3 w-3 mr-1" }), " Add row"] })] })), editingButton && rows[editingButton.rowIdx]?.buttons[editingButton.btnIdx] && (_jsx(ButtonEditModal, { button: rows[editingButton.rowIdx].buttons[editingButton.btnIdx], langs: langs, onSave: btn => updateButton(editingButton.rowIdx, editingButton.btnIdx, btn), onDelete: () => deleteButton(editingButton.rowIdx, editingButton.btnIdx), onClose: () => setEditingButton(null) }))] }));
170
+ }
171
+ //# sourceMappingURL=menu-editor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu-editor.js","sourceRoot":"","sources":["../../../brahman/views/menu-editor.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { NodeData } from '@treenity/core';
2
+ export declare function PageLayoutView({ value }: {
3
+ value: NodeData;
4
+ }): import("react/jsx-runtime").JSX.Element;
5
+ //# sourceMappingURL=page-layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-layout.d.ts","sourceRoot":"","sources":["../../../brahman/views/page-layout.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AA0H/C,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,QAAQ,CAAA;CAAE,2CA4I5D"}
@@ -0,0 +1,114 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ // Page layout — DnD sortable list of actions
3
+ // Data model: command & positions are TOP-LEVEL node fields (not in a component).
4
+ // getComponent(node, PageConfig) returns the node itself when node.$type === 'brahman.page',
5
+ // so data must be on the node, not nested in node.page.
6
+ import { closestCenter, DndContext, KeyboardSensor, PointerSensor, useSensor, useSensors, } from '@dnd-kit/core';
7
+ import { arrayMove, SortableContext, sortableKeyboardCoordinates, useSortable, verticalListSortingStrategy, } from '@dnd-kit/sortable';
8
+ import { CSS } from '@dnd-kit/utilities';
9
+ import { getDefaults } from '@treenity/core/comp';
10
+ import { Button } from '@treenity/react/components/ui/button';
11
+ import { Input } from '@treenity/react/components/ui/input';
12
+ import { Render } from '@treenity/react/context';
13
+ import { set, useChildren, useNavigate, usePath } from '@treenity/react/hooks';
14
+ import { trpc } from '@treenity/react/trpc';
15
+ import { ChevronDown, ChevronRight, GripVertical, Plus, Trash2 } from 'lucide-react';
16
+ import { useCallback, useEffect, useRef, useState } from 'react';
17
+ import { ACTION_TYPES } from '../types';
18
+ import { actionIcon, actionSummary } from './action-cards';
19
+ // ── Action palette dropdown ──
20
+ function ActionPalette({ onSelect }) {
21
+ const [open, setOpen] = useState(false);
22
+ const ref = useRef(null);
23
+ return (_jsxs("div", { className: "relative", ref: ref, children: [_jsxs(Button, { variant: "outline", size: "sm", onClick: () => setOpen(!open), children: [_jsx(Plus, { className: "h-4 w-4 mr-1" }), " Add action"] }), open && (_jsx("div", { className: "absolute left-0 top-full mt-1 z-50 w-56 bg-popover border border-border rounded-md shadow-md py-1", children: ACTION_TYPES.map(at => (_jsxs("button", { type: "button", className: "w-full text-left px-3 py-2 text-sm hover:bg-accent flex items-center gap-2", onClick: () => { onSelect(at.type); setOpen(false); }, children: [actionIcon(at.type), at.label] }, at.type))) }))] }));
24
+ }
25
+ // ── Sortable action card ──
26
+ function SortableAction({ node, onRemove, onSelect, expanded, onToggle, }) {
27
+ const { attributes, listeners, setNodeRef, transform, transition } = useSortable({ id: node.$path });
28
+ return (_jsxs("div", { ref: setNodeRef, style: { transform: CSS.Transform.toString(transform), transition }, className: "bg-card border border-border rounded-md group hover:border-primary/50", children: [_jsxs("div", { className: "flex items-center gap-2 px-3 py-2 cursor-pointer", onClick: onToggle, children: [_jsx("div", { ...attributes, ...listeners, className: "cursor-grab text-muted-foreground hover:text-foreground", onClick: e => e.stopPropagation(), children: _jsx(GripVertical, { className: "h-4 w-4" }) }), _jsx("div", { className: "text-muted-foreground", children: expanded
29
+ ? _jsx(ChevronDown, { className: "h-3.5 w-3.5" })
30
+ : _jsx(ChevronRight, { className: "h-3.5 w-3.5" }) }), _jsxs("div", { className: "flex items-center gap-2 flex-1 min-w-0", children: [actionIcon(node.$type), _jsx("span", { className: "text-xs font-medium text-muted-foreground uppercase", children: ACTION_TYPES.find(a => a.type === node.$type)?.label ?? node.$type.split('.').at(-1) }), !expanded && (_jsx("span", { className: "text-sm truncate text-foreground/60", children: actionSummary(node) }))] }), _jsx("button", { type: "button", onClick: e => { e.stopPropagation(); onSelect(); }, className: "text-muted-foreground hover:text-foreground text-[10px] opacity-0 group-hover:opacity-100", title: "Select in tree", children: "\u2197" }), _jsx("button", { type: "button", onClick: e => { e.stopPropagation(); onRemove(); }, className: "opacity-0 group-hover:opacity-100 text-muted-foreground hover:text-destructive transition-opacity", children: _jsx(Trash2, { className: "h-3.5 w-3.5" }) })] }), expanded && (_jsx("div", { className: "px-3 pb-3 border-t border-border/50 pt-3", children: _jsx(Render, { value: node }) }))] }));
31
+ }
32
+ // ── Page layout view (registered as 'brahman.page' react handler) ──
33
+ export function PageLayoutView({ value }) {
34
+ const navigate = useNavigate();
35
+ const node = usePath(value.$path);
36
+ const actionsPath = value.$path + '/_actions';
37
+ const children = useChildren(actionsPath, { watch: true, watchNew: true });
38
+ const [collapsed, setCollapsed] = useState(new Set());
39
+ // Read command & positions from node top-level (getComponent returns node itself)
40
+ const command = node?.command ?? '';
41
+ const positions = node?.positions ?? [];
42
+ // Debounced save: update local state immediately, persist after 400ms idle
43
+ const [localCommand, setLocalCommand] = useState(command);
44
+ const timerRef = useRef(undefined);
45
+ // Sync local state when node changes externally
46
+ useEffect(() => { setLocalCommand(command); }, [command]);
47
+ const saveNode = useCallback((patch) => {
48
+ if (!node)
49
+ return;
50
+ // Strip any leftover 'page' component that shouldn't exist
51
+ const { page: _drop, ...clean } = node;
52
+ set({ ...clean, ...patch });
53
+ }, [node]);
54
+ const debouncedSave = useCallback((patch) => {
55
+ clearTimeout(timerRef.current);
56
+ timerRef.current = setTimeout(() => saveNode(patch), 400);
57
+ }, [saveNode]);
58
+ // Cleanup timer on unmount
59
+ useEffect(() => () => clearTimeout(timerRef.current), []);
60
+ // Sort children by positions, append any untracked
61
+ const tracked = new Set(positions);
62
+ const sorted = [
63
+ ...positions.map(p => children.find(c => c.$path === p)).filter((c) => !!c),
64
+ ...children.filter(c => !tracked.has(c.$path) && c.$type?.startsWith('brahman.action.')),
65
+ ];
66
+ const sensors = useSensors(useSensor(PointerSensor, { activationConstraint: { distance: 5 } }), useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates }));
67
+ function handleDragEnd(event) {
68
+ const { active, over } = event;
69
+ if (!over || active.id === over.id)
70
+ return;
71
+ const oldIndex = sorted.findIndex(c => c.$path === active.id);
72
+ const newIndex = sorted.findIndex(c => c.$path === over.id);
73
+ if (oldIndex === -1 || newIndex === -1)
74
+ return;
75
+ const reordered = arrayMove(sorted.map(c => c.$path), oldIndex, newIndex);
76
+ saveNode({ positions: reordered });
77
+ }
78
+ async function addAction(type) {
79
+ const id = Date.now().toString(36);
80
+ const childPath = `${actionsPath}/${id}`;
81
+ // Ensure _actions dir exists as a real node
82
+ await trpc.set.mutate({ node: { $path: actionsPath, $type: 'dir' } });
83
+ const defaults = getDefaults(type);
84
+ // Data on the node directly (findActionComp returns node when $type matches)
85
+ await trpc.set.mutate({
86
+ node: { $path: childPath, $type: type, ...defaults },
87
+ });
88
+ saveNode({ positions: [...positions, childPath] });
89
+ }
90
+ async function removeAction(path) {
91
+ await trpc.remove.mutate({ path });
92
+ saveNode({ positions: positions.filter(p => p !== path) });
93
+ }
94
+ function selectAction(path) {
95
+ navigate(path);
96
+ }
97
+ return (_jsxs("div", { className: "space-y-4 max-w-2xl", children: [_jsxs("div", { className: "flex items-center gap-3", children: [_jsx("label", { className: "text-sm font-medium text-muted-foreground w-20", children: "Command" }), _jsx(Input, { className: "flex-1 font-mono", placeholder: "/command...", value: localCommand, onChange: e => {
98
+ setLocalCommand(e.target.value);
99
+ debouncedSave({ command: e.target.value });
100
+ }, onBlur: () => {
101
+ // Flush pending save on blur
102
+ clearTimeout(timerRef.current);
103
+ if (localCommand !== command)
104
+ saveNode({ command: localCommand });
105
+ } })] }), _jsxs("div", { className: "space-y-1.5", children: [_jsxs("div", { className: "text-[11px] font-semibold text-muted-foreground uppercase tracking-wider", children: ["Actions (", sorted.length, ")"] }), _jsx(DndContext, { sensors: sensors, collisionDetection: closestCenter, onDragEnd: handleDragEnd, children: _jsx(SortableContext, { items: sorted.map(c => c.$path), strategy: verticalListSortingStrategy, children: _jsx("div", { className: "space-y-1", children: sorted.map(child => (_jsx(SortableAction, { node: child, onRemove: () => removeAction(child.$path), onSelect: () => selectAction(child.$path), expanded: !collapsed.has(child.$path), onToggle: () => setCollapsed(prev => {
106
+ const next = new Set(prev);
107
+ if (next.has(child.$path))
108
+ next.delete(child.$path);
109
+ else
110
+ next.add(child.$path);
111
+ return next;
112
+ }) }, child.$path))) }) }) }), sorted.length === 0 && (_jsx("div", { className: "text-sm text-muted-foreground text-center py-8 border border-dashed border-border rounded-md", children: "No actions yet. Add one below." }))] }), _jsx(ActionPalette, { onSelect: addAction })] }));
113
+ }
114
+ //# sourceMappingURL=page-layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-layout.js","sourceRoot":"","sources":["../../../brahman/views/page-layout.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { TString } from '../types';
2
+ type Props = {
3
+ value: TString;
4
+ onChange: (next: TString) => void;
5
+ langs?: string[];
6
+ rows?: number;
7
+ placeholder?: string;
8
+ };
9
+ export declare function TStringInput({ value, onChange, langs, rows, placeholder }: Props): import("react/jsx-runtime").JSX.Element;
10
+ /** Single-line TString input */
11
+ export declare function TStringLineInput({ value, onChange, langs, placeholder }: Omit<Props, 'rows'>): import("react/jsx-runtime").JSX.Element;
12
+ /** Get first non-empty TString value for display */
13
+ export declare function tstringPreview(ts: TString | undefined, maxLen?: number): string;
14
+ export {};
15
+ //# sourceMappingURL=tstring-input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tstring-input.d.ts","sourceRoot":"","sources":["../../../brahman/views/tstring-input.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAExC,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAClC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,wBAAgB,YAAY,CAAC,EAAE,KAAU,EAAE,QAAQ,EAAE,KAAoB,EAAE,IAAQ,EAAE,WAAW,EAAE,EAAE,KAAK,2CAgCxG;AAED,gCAAgC;AAChC,wBAAgB,gBAAgB,CAAC,EAAE,KAAU,EAAE,QAAQ,EAAE,KAAoB,EAAE,WAAW,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,2CA2BhH;AAED,oDAAoD;AACpD,wBAAgB,cAAc,CAAC,EAAE,EAAE,OAAO,GAAG,SAAS,EAAE,MAAM,SAAK,GAAG,MAAM,CAI3E"}
@@ -0,0 +1,23 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ // TString editor — tabbed multilingual text input
3
+ // Used by message, question, and menu button editors
4
+ import { useState } from 'react';
5
+ export function TStringInput({ value = {}, onChange, langs = ['ru', 'en'], rows = 3, placeholder }) {
6
+ const [activeLang, setActiveLang] = useState(langs[0] ?? 'ru');
7
+ return (_jsxs("div", { children: [_jsx("div", { className: "flex gap-0.5 mb-1", children: langs.map(lang => (_jsxs("button", { type: "button", onClick: () => setActiveLang(lang), className: `px-2.5 py-1 text-xs font-medium uppercase rounded-t transition-colors ${activeLang === lang
8
+ ? 'bg-muted text-foreground'
9
+ : 'text-muted-foreground hover:text-foreground'}`, children: [lang, value[lang] ? '' : ' *'] }, lang))) }), _jsx("textarea", { className: "w-full px-3 py-2 text-sm bg-background border border-border rounded-md resize-none outline-none focus:border-primary transition-colors", rows: rows, placeholder: placeholder ?? `Text (${activeLang})`, value: value[activeLang] ?? '', onChange: e => onChange({ ...value, [activeLang]: e.target.value }) })] }));
10
+ }
11
+ /** Single-line TString input */
12
+ export function TStringLineInput({ value = {}, onChange, langs = ['ru', 'en'], placeholder }) {
13
+ const [activeLang, setActiveLang] = useState(langs[0] ?? 'ru');
14
+ return (_jsxs("div", { className: "flex items-center gap-1 border border-border rounded-md overflow-hidden bg-background", children: [langs.map(lang => (_jsx("button", { type: "button", onClick: () => setActiveLang(lang), className: `px-2 py-1 text-[10px] font-medium uppercase shrink-0 ${activeLang === lang ? 'text-primary' : 'text-muted-foreground'}`, children: lang }, lang))), _jsx("input", { type: "text", className: "flex-1 px-2 py-1.5 text-sm outline-none bg-transparent", placeholder: placeholder ?? `Text (${activeLang})`, value: value[activeLang] ?? '', onChange: e => onChange({ ...value, [activeLang]: e.target.value }) })] }));
15
+ }
16
+ /** Get first non-empty TString value for display */
17
+ export function tstringPreview(ts, maxLen = 40) {
18
+ if (!ts)
19
+ return '';
20
+ const text = ts.ru || ts.en || Object.values(ts).find(v => v) || '';
21
+ return text.length > maxLen ? text.slice(0, maxLen) + '...' : text;
22
+ }
23
+ //# sourceMappingURL=tstring-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tstring-input.js","sourceRoot":"","sources":["../../../brahman/views/tstring-input.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=seed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../cafe/seed.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import { registerPrefab } from '@treenity/core/mod';
2
+ registerPrefab('cafe', 'seed', [
3
+ { $path: 'cafe', $type: 'dir' },
4
+ { $path: 'cafe/contact', $type: 'cafe.contact', recipient: 'owner@cafe.example' },
5
+ { $path: 'cafe/pages', $type: 'dir' },
6
+ ]);
7
+ //# sourceMappingURL=seed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seed.js","sourceRoot":"","sources":["../../cafe/seed.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE;IAC7B,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE;IAC/B,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,oBAAoB,EAAE;IACjF,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE;CACxB,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import './types';
2
+ import './seed';
3
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../cafe/server.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,CAAC;AACjB,OAAO,QAAQ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import './types';
2
+ import './seed';
3
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../cafe/server.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,CAAC;AACjB,OAAO,QAAQ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../cafe/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,31 @@
1
+ // Cafe use cases — domain types for a cafe landing page
2
+ import { registerType } from '@treenity/core/comp';
3
+ /** Mail delivery settings */
4
+ class CafeMailService {
5
+ /** @title SMTP host */
6
+ host = 'smtp.example.com';
7
+ /** @title Port */
8
+ port = 587;
9
+ /** @title Sender address @format email */
10
+ from = '';
11
+ }
12
+ registerType('cafe.mail', CafeMailService);
13
+ /** Contact form use case — receives form submissions, logs them */
14
+ class CafeContact {
15
+ /** @title Recipient @format email */
16
+ recipient = '';
17
+ /** @title Mail service */
18
+ mailService;
19
+ /** @title Last submission */
20
+ lastSubmission = '';
21
+ /** @description Submit contact form — validates and logs submission */
22
+ submit(data) {
23
+ if (!data.name || !data.email)
24
+ throw new Error('Name and email required');
25
+ // For now: store last submission on the node. Later: create child node, send notification.
26
+ this.lastSubmission = JSON.stringify({ ...data, at: new Date().toISOString() });
27
+ console.log(`[cafe:contact] → ${this.recipient}: ${data.name} <${data.email}> "${data.message}"`);
28
+ }
29
+ }
30
+ registerType('cafe.contact', CafeContact);
31
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../cafe/types.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,6BAA6B;AAC7B,MAAM,eAAe;IACnB,uBAAuB;IACvB,IAAI,GAAG,kBAAkB,CAAC;IAC1B,kBAAkB;IAClB,IAAI,GAAG,GAAG,CAAC;IACX,0CAA0C;IAC1C,IAAI,GAAG,EAAE,CAAC;CACX;AACD,YAAY,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;AAE3C,mEAAmE;AACnE,MAAM,WAAW;IACf,qCAAqC;IACrC,SAAS,GAAG,EAAE,CAAC;IACf,0BAA0B;IAC1B,WAAW,CAAmB;IAC9B,6BAA6B;IAC7B,cAAc,GAAG,EAAE,CAAC;IAEpB,uEAAuE;IACvE,MAAM,CAAC,IAAsD;QAC3D,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC1E,2FAA2F;QAC3F,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAChF,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;IACpG,CAAC;CACF;AACD,YAAY,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=seed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../canary/seed.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import { registerPrefab } from '@treenity/core/mod';
2
+ registerPrefab('canary', 'seed', [
3
+ { $path: 'canary', $type: 'dir' },
4
+ { $path: 'canary/runner', $type: 'canary.runner' },
5
+ { $path: 'sys/autostart/canary', $type: 'ref', $ref: '/canary/runner' },
6
+ ]);
7
+ //# sourceMappingURL=seed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seed.js","sourceRoot":"","sources":["../../canary/seed.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE;IAC/B,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE;IACjC,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE;IAClD,EAAE,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE;CAC1D,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import './types';
2
+ import './seed';
3
+ import './service';
4
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../canary/server.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,CAAC;AACjB,OAAO,QAAQ,CAAC;AAChB,OAAO,WAAW,CAAC"}
@@ -0,0 +1,4 @@
1
+ import './types';
2
+ import './seed';
3
+ import './service';
4
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../canary/server.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,CAAC;AACjB,OAAO,QAAQ,CAAC;AAChB,OAAO,WAAW,CAAC"}
@@ -0,0 +1,2 @@
1
+ import '@treenity/core/contexts/service';
2
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../canary/service.ts"],"names":[],"mappings":"AAIA,OAAO,iCAAiC,CAAC"}