callman-core 1.28.1 → 1.30.0

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 (402) hide show
  1. package/dist/ai/index.d.ts +1 -1
  2. package/dist/ai/index.d.ts.map +1 -1
  3. package/dist/ai/index.js.map +1 -1
  4. package/dist/ai/outputSchemas.d.ts +3 -0
  5. package/dist/ai/outputSchemas.d.ts.map +1 -1
  6. package/dist/ai/outputSchemas.js +1 -0
  7. package/dist/ai/outputSchemas.js.map +1 -1
  8. package/dist/ai/parse/diagram.d.ts.map +1 -1
  9. package/dist/ai/parse/diagram.js +6 -3
  10. package/dist/ai/parse/diagram.js.map +1 -1
  11. package/dist/ai/prompts/diagram.d.ts +7 -3
  12. package/dist/ai/prompts/diagram.d.ts.map +1 -1
  13. package/dist/ai/prompts/diagram.js +61 -5
  14. package/dist/ai/prompts/diagram.js.map +1 -1
  15. package/dist/ai/types.d.ts +6 -0
  16. package/dist/ai/types.d.ts.map +1 -1
  17. package/dist/diagram/bpmn/derive.d.ts +74 -0
  18. package/dist/diagram/bpmn/derive.d.ts.map +1 -0
  19. package/dist/diagram/bpmn/derive.js +392 -0
  20. package/dist/diagram/bpmn/derive.js.map +1 -0
  21. package/dist/diagram/bpmn/index.d.ts +7 -0
  22. package/dist/diagram/bpmn/index.d.ts.map +1 -0
  23. package/dist/diagram/bpmn/index.js +12 -0
  24. package/dist/diagram/bpmn/index.js.map +1 -0
  25. package/dist/diagram/bpmn/patch.d.ts +14 -0
  26. package/dist/diagram/bpmn/patch.d.ts.map +1 -0
  27. package/dist/diagram/bpmn/patch.js +770 -0
  28. package/dist/diagram/bpmn/patch.js.map +1 -0
  29. package/dist/diagram/bpmn/place.d.ts +4 -0
  30. package/dist/diagram/bpmn/place.d.ts.map +1 -0
  31. package/dist/diagram/bpmn/place.js +65 -0
  32. package/dist/diagram/bpmn/place.js.map +1 -0
  33. package/dist/diagram/bpmn/serialize.d.ts +12 -0
  34. package/dist/diagram/bpmn/serialize.d.ts.map +1 -0
  35. package/dist/diagram/bpmn/serialize.js +292 -0
  36. package/dist/diagram/bpmn/serialize.js.map +1 -0
  37. package/dist/diagram/bpmn/types.d.ts +42 -0
  38. package/dist/diagram/bpmn/types.d.ts.map +1 -0
  39. package/dist/diagram/bpmn/types.js +84 -0
  40. package/dist/diagram/bpmn/types.js.map +1 -0
  41. package/dist/diagram/bpmn/xml.d.ts +60 -0
  42. package/dist/diagram/bpmn/xml.d.ts.map +1 -0
  43. package/dist/diagram/bpmn/xml.js +342 -0
  44. package/dist/diagram/bpmn/xml.js.map +1 -0
  45. package/dist/diagram/componentCatalog.d.ts +3 -0
  46. package/dist/diagram/componentCatalog.d.ts.map +1 -1
  47. package/dist/diagram/componentCatalog.js +5 -1
  48. package/dist/diagram/componentCatalog.js.map +1 -1
  49. package/dist/diagram/database/derive.d.ts +14 -0
  50. package/dist/diagram/database/derive.d.ts.map +1 -0
  51. package/dist/diagram/database/derive.js +114 -0
  52. package/dist/diagram/database/derive.js.map +1 -0
  53. package/dist/diagram/database/diff.d.ts +48 -0
  54. package/dist/diagram/database/diff.d.ts.map +1 -0
  55. package/dist/diagram/database/diff.js +109 -0
  56. package/dist/diagram/database/diff.js.map +1 -0
  57. package/dist/diagram/database/edit.d.ts +113 -0
  58. package/dist/diagram/database/edit.d.ts.map +1 -0
  59. package/dist/diagram/database/edit.js +359 -0
  60. package/dist/diagram/database/edit.js.map +1 -0
  61. package/dist/diagram/database/fromSchema.d.ts +12 -0
  62. package/dist/diagram/database/fromSchema.d.ts.map +1 -0
  63. package/dist/diagram/database/fromSchema.js +182 -0
  64. package/dist/diagram/database/fromSchema.js.map +1 -0
  65. package/dist/diagram/database/index.d.ts +9 -0
  66. package/dist/diagram/database/index.d.ts.map +1 -0
  67. package/dist/diagram/database/index.js +14 -0
  68. package/dist/diagram/database/index.js.map +1 -0
  69. package/dist/diagram/database/model.d.ts +93 -0
  70. package/dist/diagram/database/model.d.ts.map +1 -0
  71. package/dist/diagram/database/model.js +294 -0
  72. package/dist/diagram/database/model.js.map +1 -0
  73. package/dist/diagram/database/patch.d.ts +14 -0
  74. package/dist/diagram/database/patch.d.ts.map +1 -0
  75. package/dist/diagram/database/patch.js +186 -0
  76. package/dist/diagram/database/patch.js.map +1 -0
  77. package/dist/diagram/database/place.d.ts +4 -0
  78. package/dist/diagram/database/place.d.ts.map +1 -0
  79. package/dist/diagram/database/place.js +22 -0
  80. package/dist/diagram/database/place.js.map +1 -0
  81. package/dist/diagram/database/types.d.ts +50 -0
  82. package/dist/diagram/database/types.d.ts.map +1 -0
  83. package/dist/diagram/database/types.js +106 -0
  84. package/dist/diagram/database/types.js.map +1 -0
  85. package/dist/diagram/elkGraph.d.ts +1 -3
  86. package/dist/diagram/elkGraph.d.ts.map +1 -1
  87. package/dist/diagram/elkGraph.js +1 -0
  88. package/dist/diagram/elkGraph.js.map +1 -1
  89. package/dist/diagram/fixtures.d.ts +10 -0
  90. package/dist/diagram/fixtures.d.ts.map +1 -0
  91. package/dist/diagram/fixtures.js +113 -0
  92. package/dist/diagram/fixtures.js.map +1 -0
  93. package/dist/diagram/geometry.d.ts +27 -0
  94. package/dist/diagram/geometry.d.ts.map +1 -0
  95. package/dist/diagram/geometry.js +122 -0
  96. package/dist/diagram/geometry.js.map +1 -0
  97. package/dist/diagram/history.d.ts +36 -0
  98. package/dist/diagram/history.d.ts.map +1 -0
  99. package/dist/diagram/history.js +54 -0
  100. package/dist/diagram/history.js.map +1 -0
  101. package/dist/diagram/ids.d.ts +5 -0
  102. package/dist/diagram/ids.d.ts.map +1 -0
  103. package/dist/diagram/ids.js +52 -0
  104. package/dist/diagram/ids.js.map +1 -0
  105. package/dist/diagram/index.d.ts +15 -2
  106. package/dist/diagram/index.d.ts.map +1 -1
  107. package/dist/diagram/index.js +21 -8
  108. package/dist/diagram/index.js.map +1 -1
  109. package/dist/diagram/layout.d.ts +108 -0
  110. package/dist/diagram/layout.d.ts.map +1 -0
  111. package/dist/diagram/layout.js +357 -0
  112. package/dist/diagram/layout.js.map +1 -0
  113. package/dist/diagram/mermaid/derive.d.ts +55 -0
  114. package/dist/diagram/mermaid/derive.d.ts.map +1 -0
  115. package/dist/diagram/mermaid/derive.js +343 -0
  116. package/dist/diagram/mermaid/derive.js.map +1 -0
  117. package/dist/diagram/mermaid/index.d.ts +8 -0
  118. package/dist/diagram/mermaid/index.d.ts.map +1 -0
  119. package/dist/diagram/mermaid/index.js +24 -0
  120. package/dist/diagram/mermaid/index.js.map +1 -0
  121. package/dist/diagram/mermaid/parse.d.ts +96 -0
  122. package/dist/diagram/mermaid/parse.d.ts.map +1 -0
  123. package/dist/diagram/mermaid/parse.js +672 -0
  124. package/dist/diagram/mermaid/parse.js.map +1 -0
  125. package/dist/diagram/mermaid/patch.d.ts +16 -0
  126. package/dist/diagram/mermaid/patch.d.ts.map +1 -0
  127. package/dist/diagram/mermaid/patch.js +463 -0
  128. package/dist/diagram/mermaid/patch.js.map +1 -0
  129. package/dist/diagram/mermaid/serialize.d.ts +14 -0
  130. package/dist/diagram/mermaid/serialize.d.ts.map +1 -0
  131. package/dist/diagram/mermaid/serialize.js +125 -0
  132. package/dist/diagram/mermaid/serialize.js.map +1 -0
  133. package/dist/diagram/mermaid/shapes.d.ts +11 -0
  134. package/dist/diagram/mermaid/shapes.d.ts.map +1 -0
  135. package/dist/diagram/mermaid/shapes.js +320 -0
  136. package/dist/diagram/mermaid/shapes.js.map +1 -0
  137. package/dist/diagram/migrations.d.ts +1 -0
  138. package/dist/diagram/migrations.d.ts.map +1 -1
  139. package/dist/diagram/migrations.js +7 -2
  140. package/dist/diagram/migrations.js.map +1 -1
  141. package/dist/diagram/normalize.d.ts +9 -1
  142. package/dist/diagram/normalize.d.ts.map +1 -1
  143. package/dist/diagram/normalize.js +194 -0
  144. package/dist/diagram/normalize.js.map +1 -1
  145. package/dist/diagram/ops.d.ts +146 -0
  146. package/dist/diagram/ops.d.ts.map +1 -0
  147. package/dist/diagram/ops.js +865 -0
  148. package/dist/diagram/ops.js.map +1 -0
  149. package/dist/diagram/opsReference.d.ts +3 -0
  150. package/dist/diagram/opsReference.d.ts.map +1 -0
  151. package/dist/diagram/opsReference.js +60 -0
  152. package/dist/diagram/opsReference.js.map +1 -0
  153. package/dist/diagram/patchInput.d.ts +257 -0
  154. package/dist/diagram/patchInput.d.ts.map +1 -0
  155. package/dist/diagram/patchInput.js +1024 -0
  156. package/dist/diagram/patchInput.js.map +1 -0
  157. package/dist/diagram/routing/batch.d.ts +45 -0
  158. package/dist/diagram/routing/batch.d.ts.map +1 -0
  159. package/dist/diagram/routing/batch.js +136 -0
  160. package/dist/diagram/routing/batch.js.map +1 -0
  161. package/dist/diagram/routing/curves.d.ts +7 -0
  162. package/dist/diagram/routing/curves.d.ts.map +1 -0
  163. package/dist/diagram/routing/curves.js +120 -0
  164. package/dist/diagram/routing/curves.js.map +1 -0
  165. package/dist/diagram/routing/grid.d.ts +15 -0
  166. package/dist/diagram/routing/grid.d.ts.map +1 -0
  167. package/dist/diagram/routing/grid.js +245 -0
  168. package/dist/diagram/routing/grid.js.map +1 -0
  169. package/dist/diagram/routing/index.d.ts +10 -0
  170. package/dist/diagram/routing/index.d.ts.map +1 -0
  171. package/dist/diagram/routing/index.js +10 -0
  172. package/dist/diagram/routing/index.js.map +1 -0
  173. package/dist/diagram/routing/legacy.d.ts +6 -0
  174. package/dist/diagram/routing/legacy.d.ts.map +1 -0
  175. package/dist/diagram/routing/legacy.js +27 -0
  176. package/dist/diagram/routing/legacy.js.map +1 -0
  177. package/dist/diagram/routing/nudge.d.ts +4 -0
  178. package/dist/diagram/routing/nudge.d.ts.map +1 -0
  179. package/dist/diagram/routing/nudge.js +96 -0
  180. package/dist/diagram/routing/nudge.js.map +1 -0
  181. package/dist/diagram/routing/orthogonal.d.ts +6 -0
  182. package/dist/diagram/routing/orthogonal.d.ts.map +1 -0
  183. package/dist/diagram/routing/orthogonal.js +56 -0
  184. package/dist/diagram/routing/orthogonal.js.map +1 -0
  185. package/dist/diagram/routing/path.d.ts +16 -0
  186. package/dist/diagram/routing/path.d.ts.map +1 -0
  187. package/dist/diagram/routing/path.js +128 -0
  188. package/dist/diagram/routing/path.js.map +1 -0
  189. package/dist/diagram/routing/sides.d.ts +22 -0
  190. package/dist/diagram/routing/sides.d.ts.map +1 -0
  191. package/dist/diagram/routing/sides.js +74 -0
  192. package/dist/diagram/routing/sides.js.map +1 -0
  193. package/dist/diagram/routing/types.d.ts +46 -0
  194. package/dist/diagram/routing/types.d.ts.map +1 -0
  195. package/dist/diagram/routing/types.js +11 -0
  196. package/dist/diagram/routing/types.js.map +1 -0
  197. package/dist/diagram/schema.d.ts +71 -38
  198. package/dist/diagram/schema.d.ts.map +1 -1
  199. package/dist/diagram/schema.js +62 -8
  200. package/dist/diagram/schema.js.map +1 -1
  201. package/dist/diagram/styleInput.d.ts +41 -0
  202. package/dist/diagram/styleInput.d.ts.map +1 -0
  203. package/dist/diagram/styleInput.js +105 -0
  204. package/dist/diagram/styleInput.js.map +1 -0
  205. package/dist/diagram/views.d.ts +22 -0
  206. package/dist/diagram/views.d.ts.map +1 -0
  207. package/dist/diagram/views.js +91 -0
  208. package/dist/diagram/views.js.map +1 -0
  209. package/dist/host/db/introspection/index.d.ts +9 -0
  210. package/dist/host/db/introspection/index.d.ts.map +1 -0
  211. package/dist/host/db/introspection/index.js +35 -0
  212. package/dist/host/db/introspection/index.js.map +1 -0
  213. package/dist/host/db/introspection/mongo.d.ts +7 -0
  214. package/dist/host/db/introspection/mongo.d.ts.map +1 -0
  215. package/dist/host/db/introspection/mongo.js +183 -0
  216. package/dist/host/db/introspection/mongo.js.map +1 -0
  217. package/dist/host/db/introspection/mssql.d.ts +6 -0
  218. package/dist/host/db/introspection/mssql.d.ts.map +1 -0
  219. package/dist/host/db/introspection/mssql.js +211 -0
  220. package/dist/host/db/introspection/mssql.js.map +1 -0
  221. package/dist/host/db/introspection/mysql.d.ts +5 -0
  222. package/dist/host/db/introspection/mysql.d.ts.map +1 -0
  223. package/dist/host/db/introspection/mysql.js +163 -0
  224. package/dist/host/db/introspection/mysql.js.map +1 -0
  225. package/dist/host/db/introspection/oracle.d.ts +12 -0
  226. package/dist/host/db/introspection/oracle.d.ts.map +1 -0
  227. package/dist/host/db/introspection/oracle.js +225 -0
  228. package/dist/host/db/introspection/oracle.js.map +1 -0
  229. package/dist/host/db/introspection/postgres.d.ts +5 -0
  230. package/dist/host/db/introspection/postgres.d.ts.map +1 -0
  231. package/dist/host/db/introspection/postgres.js +172 -0
  232. package/dist/host/db/introspection/postgres.js.map +1 -0
  233. package/dist/host/db/introspection/shared.d.ts +29 -0
  234. package/dist/host/db/introspection/shared.d.ts.map +1 -0
  235. package/dist/host/db/introspection/shared.js +119 -0
  236. package/dist/host/db/introspection/shared.js.map +1 -0
  237. package/dist/host/db/introspection/types.d.ts +58 -0
  238. package/dist/host/db/introspection/types.d.ts.map +1 -0
  239. package/dist/host/db/introspection/types.js +6 -0
  240. package/dist/host/db/introspection/types.js.map +1 -0
  241. package/dist/host/db/mongoAdapter.d.ts +1 -0
  242. package/dist/host/db/mongoAdapter.d.ts.map +1 -1
  243. package/dist/host/db/mongoAdapter.js +13 -0
  244. package/dist/host/db/mongoAdapter.js.map +1 -1
  245. package/dist/host/db/mssqlAdapter.d.ts +1 -0
  246. package/dist/host/db/mssqlAdapter.d.ts.map +1 -1
  247. package/dist/host/db/mssqlAdapter.js +3 -1
  248. package/dist/host/db/mssqlAdapter.js.map +1 -1
  249. package/dist/host/db/mysqlAdapter.d.ts +1 -0
  250. package/dist/host/db/mysqlAdapter.d.ts.map +1 -1
  251. package/dist/host/db/mysqlAdapter.js +11 -0
  252. package/dist/host/db/mysqlAdapter.js.map +1 -1
  253. package/dist/host/db/oracleAdapter.d.ts +1 -0
  254. package/dist/host/db/oracleAdapter.d.ts.map +1 -1
  255. package/dist/host/db/oracleAdapter.js +22 -0
  256. package/dist/host/db/oracleAdapter.js.map +1 -1
  257. package/dist/host/db/postgresAdapter.d.ts +1 -0
  258. package/dist/host/db/postgresAdapter.d.ts.map +1 -1
  259. package/dist/host/db/postgresAdapter.js +13 -0
  260. package/dist/host/db/postgresAdapter.js.map +1 -1
  261. package/dist/host/db/queryExecutor.d.ts +2 -1
  262. package/dist/host/db/queryExecutor.d.ts.map +1 -1
  263. package/dist/host/db/queryExecutor.js +1 -1
  264. package/dist/host/db/queryExecutor.js.map +1 -1
  265. package/dist/host/index.d.ts +7 -0
  266. package/dist/host/index.d.ts.map +1 -1
  267. package/dist/host/index.js +9 -0
  268. package/dist/host/index.js.map +1 -1
  269. package/dist-cjs/ai/index.js.map +1 -1
  270. package/dist-cjs/ai/outputSchemas.js +1 -0
  271. package/dist-cjs/ai/outputSchemas.js.map +1 -1
  272. package/dist-cjs/ai/parse/diagram.js +6 -3
  273. package/dist-cjs/ai/parse/diagram.js.map +1 -1
  274. package/dist-cjs/ai/prompts/diagram.js +61 -5
  275. package/dist-cjs/ai/prompts/diagram.js.map +1 -1
  276. package/dist-cjs/diagram/bpmn/derive.js +398 -0
  277. package/dist-cjs/diagram/bpmn/derive.js.map +1 -0
  278. package/dist-cjs/diagram/bpmn/index.js +31 -0
  279. package/dist-cjs/diagram/bpmn/index.js.map +1 -0
  280. package/dist-cjs/diagram/bpmn/patch.js +774 -0
  281. package/dist-cjs/diagram/bpmn/patch.js.map +1 -0
  282. package/dist-cjs/diagram/bpmn/place.js +69 -0
  283. package/dist-cjs/diagram/bpmn/place.js.map +1 -0
  284. package/dist-cjs/diagram/bpmn/serialize.js +299 -0
  285. package/dist-cjs/diagram/bpmn/serialize.js.map +1 -0
  286. package/dist-cjs/diagram/bpmn/types.js +99 -0
  287. package/dist-cjs/diagram/bpmn/types.js.map +1 -0
  288. package/dist-cjs/diagram/bpmn/xml.js +367 -0
  289. package/dist-cjs/diagram/bpmn/xml.js.map +1 -0
  290. package/dist-cjs/diagram/componentCatalog.js +5 -1
  291. package/dist-cjs/diagram/componentCatalog.js.map +1 -1
  292. package/dist-cjs/diagram/database/derive.js +119 -0
  293. package/dist-cjs/diagram/database/derive.js.map +1 -0
  294. package/dist-cjs/diagram/database/diff.js +115 -0
  295. package/dist-cjs/diagram/database/diff.js.map +1 -0
  296. package/dist-cjs/diagram/database/edit.js +366 -0
  297. package/dist-cjs/diagram/database/edit.js.map +1 -0
  298. package/dist-cjs/diagram/database/fromSchema.js +188 -0
  299. package/dist-cjs/diagram/database/fromSchema.js.map +1 -0
  300. package/dist-cjs/diagram/database/index.js +32 -0
  301. package/dist-cjs/diagram/database/index.js.map +1 -0
  302. package/dist-cjs/diagram/database/model.js +311 -0
  303. package/dist-cjs/diagram/database/model.js.map +1 -0
  304. package/dist-cjs/diagram/database/patch.js +190 -0
  305. package/dist-cjs/diagram/database/patch.js.map +1 -0
  306. package/dist-cjs/diagram/database/place.js +26 -0
  307. package/dist-cjs/diagram/database/place.js.map +1 -0
  308. package/dist-cjs/diagram/database/types.js +122 -0
  309. package/dist-cjs/diagram/database/types.js.map +1 -0
  310. package/dist-cjs/diagram/elkGraph.js +1 -0
  311. package/dist-cjs/diagram/elkGraph.js.map +1 -1
  312. package/dist-cjs/diagram/fixtures.js +117 -0
  313. package/dist-cjs/diagram/fixtures.js.map +1 -0
  314. package/dist-cjs/diagram/geometry.js +143 -0
  315. package/dist-cjs/diagram/geometry.js.map +1 -0
  316. package/dist-cjs/diagram/history.js +65 -0
  317. package/dist-cjs/diagram/history.js.map +1 -0
  318. package/dist-cjs/diagram/ids.js +58 -0
  319. package/dist-cjs/diagram/ids.js.map +1 -0
  320. package/dist-cjs/diagram/index.js +24 -8
  321. package/dist-cjs/diagram/index.js.map +1 -1
  322. package/dist-cjs/diagram/layout.js +365 -0
  323. package/dist-cjs/diagram/layout.js.map +1 -0
  324. package/dist-cjs/diagram/mermaid/derive.js +353 -0
  325. package/dist-cjs/diagram/mermaid/derive.js.map +1 -0
  326. package/dist-cjs/diagram/mermaid/index.js +44 -0
  327. package/dist-cjs/diagram/mermaid/index.js.map +1 -0
  328. package/dist-cjs/diagram/mermaid/parse.js +681 -0
  329. package/dist-cjs/diagram/mermaid/parse.js.map +1 -0
  330. package/dist-cjs/diagram/mermaid/patch.js +468 -0
  331. package/dist-cjs/diagram/mermaid/patch.js.map +1 -0
  332. package/dist-cjs/diagram/mermaid/serialize.js +133 -0
  333. package/dist-cjs/diagram/mermaid/serialize.js.map +1 -0
  334. package/dist-cjs/diagram/mermaid/shapes.js +327 -0
  335. package/dist-cjs/diagram/mermaid/shapes.js.map +1 -0
  336. package/dist-cjs/diagram/migrations.js +9 -3
  337. package/dist-cjs/diagram/migrations.js.map +1 -1
  338. package/dist-cjs/diagram/normalize.js +198 -1
  339. package/dist-cjs/diagram/normalize.js.map +1 -1
  340. package/dist-cjs/diagram/ops.js +871 -0
  341. package/dist-cjs/diagram/ops.js.map +1 -0
  342. package/dist-cjs/diagram/opsReference.js +64 -0
  343. package/dist-cjs/diagram/opsReference.js.map +1 -0
  344. package/dist-cjs/diagram/patchInput.js +1039 -0
  345. package/dist-cjs/diagram/patchInput.js.map +1 -0
  346. package/dist-cjs/diagram/routing/batch.js +142 -0
  347. package/dist-cjs/diagram/routing/batch.js.map +1 -0
  348. package/dist-cjs/diagram/routing/curves.js +127 -0
  349. package/dist-cjs/diagram/routing/curves.js.map +1 -0
  350. package/dist-cjs/diagram/routing/grid.js +250 -0
  351. package/dist-cjs/diagram/routing/grid.js.map +1 -0
  352. package/dist-cjs/diagram/routing/index.js +29 -0
  353. package/dist-cjs/diagram/routing/index.js.map +1 -0
  354. package/dist-cjs/diagram/routing/legacy.js +32 -0
  355. package/dist-cjs/diagram/routing/legacy.js.map +1 -0
  356. package/dist-cjs/diagram/routing/nudge.js +100 -0
  357. package/dist-cjs/diagram/routing/nudge.js.map +1 -0
  358. package/dist-cjs/diagram/routing/orthogonal.js +62 -0
  359. package/dist-cjs/diagram/routing/orthogonal.js.map +1 -0
  360. package/dist-cjs/diagram/routing/path.js +137 -0
  361. package/dist-cjs/diagram/routing/path.js.map +1 -0
  362. package/dist-cjs/diagram/routing/sides.js +82 -0
  363. package/dist-cjs/diagram/routing/sides.js.map +1 -0
  364. package/dist-cjs/diagram/routing/types.js +15 -0
  365. package/dist-cjs/diagram/routing/types.js.map +1 -0
  366. package/dist-cjs/diagram/schema.js +64 -9
  367. package/dist-cjs/diagram/schema.js.map +1 -1
  368. package/dist-cjs/diagram/styleInput.js +113 -0
  369. package/dist-cjs/diagram/styleInput.js.map +1 -0
  370. package/dist-cjs/diagram/views.js +96 -0
  371. package/dist-cjs/diagram/views.js.map +1 -0
  372. package/dist-cjs/host/db/introspection/index.js +59 -0
  373. package/dist-cjs/host/db/introspection/index.js.map +1 -0
  374. package/dist-cjs/host/db/introspection/mongo.js +189 -0
  375. package/dist-cjs/host/db/introspection/mongo.js.map +1 -0
  376. package/dist-cjs/host/db/introspection/mssql.js +216 -0
  377. package/dist-cjs/host/db/introspection/mssql.js.map +1 -0
  378. package/dist-cjs/host/db/introspection/mysql.js +167 -0
  379. package/dist-cjs/host/db/introspection/mysql.js.map +1 -0
  380. package/dist-cjs/host/db/introspection/oracle.js +230 -0
  381. package/dist-cjs/host/db/introspection/oracle.js.map +1 -0
  382. package/dist-cjs/host/db/introspection/postgres.js +176 -0
  383. package/dist-cjs/host/db/introspection/postgres.js.map +1 -0
  384. package/dist-cjs/host/db/introspection/shared.js +133 -0
  385. package/dist-cjs/host/db/introspection/shared.js.map +1 -0
  386. package/dist-cjs/host/db/introspection/types.js +7 -0
  387. package/dist-cjs/host/db/introspection/types.js.map +1 -0
  388. package/dist-cjs/host/db/mongoAdapter.js +15 -1
  389. package/dist-cjs/host/db/mongoAdapter.js.map +1 -1
  390. package/dist-cjs/host/db/mssqlAdapter.js +5 -2
  391. package/dist-cjs/host/db/mssqlAdapter.js.map +1 -1
  392. package/dist-cjs/host/db/mysqlAdapter.js +13 -1
  393. package/dist-cjs/host/db/mysqlAdapter.js.map +1 -1
  394. package/dist-cjs/host/db/oracleAdapter.js +24 -1
  395. package/dist-cjs/host/db/oracleAdapter.js.map +1 -1
  396. package/dist-cjs/host/db/postgresAdapter.js +15 -1
  397. package/dist-cjs/host/db/postgresAdapter.js.map +1 -1
  398. package/dist-cjs/host/db/queryExecutor.js +5 -4
  399. package/dist-cjs/host/db/queryExecutor.js.map +1 -1
  400. package/dist-cjs/host/index.js +24 -1
  401. package/dist-cjs/host/index.js.map +1 -1
  402. package/package.json +1 -1
@@ -0,0 +1,108 @@
1
+ import { type NodeIndex } from "./geometry.js";
2
+ import type { DiagramOp } from "./ops.js";
3
+ import type { DiagramDocument, HandleSide, LayoutAlgorithm, LayoutDirection, Point } from "./schema.js";
4
+ export interface ElkPointLike {
5
+ x: number;
6
+ y: number;
7
+ }
8
+ export interface ElkEdgeSectionLike {
9
+ startPoint?: ElkPointLike;
10
+ endPoint?: ElkPointLike;
11
+ bendPoints?: ElkPointLike[];
12
+ }
13
+ export interface ElkPortLike {
14
+ id: string;
15
+ layoutOptions?: Record<string, string>;
16
+ x?: number;
17
+ y?: number;
18
+ width?: number;
19
+ height?: number;
20
+ }
21
+ export interface ElkEdgeLike {
22
+ id: string;
23
+ sources: string[];
24
+ targets: string[];
25
+ sections?: ElkEdgeSectionLike[];
26
+ layoutOptions?: Record<string, string>;
27
+ }
28
+ export interface ElkGraphLike {
29
+ id: string;
30
+ layoutOptions?: Record<string, string>;
31
+ children?: ElkGraphLike[];
32
+ edges?: ElkEdgeLike[];
33
+ ports?: ElkPortLike[];
34
+ x?: number;
35
+ y?: number;
36
+ width?: number;
37
+ height?: number;
38
+ }
39
+ export interface LayoutEngine {
40
+ layout(graph: ElkGraphLike): Promise<ElkGraphLike>;
41
+ }
42
+ export type LayoutMode = "full" | "selection" | "tidy";
43
+ export interface LayoutRequest {
44
+ algorithm?: LayoutAlgorithm;
45
+ direction?: LayoutDirection;
46
+ mode?: LayoutMode;
47
+ nodeIds?: string[];
48
+ respectHandles?: boolean;
49
+ assignSides?: boolean;
50
+ keepBendpoints?: boolean;
51
+ spacing?: {
52
+ node?: number;
53
+ layer?: number;
54
+ };
55
+ extraOptions?: Record<string, string>;
56
+ }
57
+ interface ResolvedRequest {
58
+ algorithm: LayoutAlgorithm;
59
+ direction: LayoutDirection;
60
+ mode: LayoutMode;
61
+ nodeIds: string[];
62
+ respectHandles: boolean;
63
+ assignSides: boolean;
64
+ keepBendpoints: boolean;
65
+ spacing: {
66
+ node: number;
67
+ layer: number;
68
+ };
69
+ }
70
+ export declare const CONTAINER_PADDING: {
71
+ readonly top: 48;
72
+ readonly left: 24;
73
+ readonly bottom: 24;
74
+ readonly right: 24;
75
+ };
76
+ export declare const layoutOptionsFor: (request: LayoutRequest) => Record<string, string>;
77
+ export interface BuiltLayout {
78
+ graph: ElkGraphLike;
79
+ scope: Set<string>;
80
+ anchor: Point;
81
+ edgeIds: Set<string>;
82
+ request: ResolvedRequest;
83
+ }
84
+ export declare const buildLayoutGraph: (doc: DiagramDocument, request?: LayoutRequest) => BuiltLayout;
85
+ export interface LayoutOpsResult {
86
+ ops: DiagramOp[];
87
+ sides: Record<string, {
88
+ source?: HandleSide;
89
+ target?: HandleSide;
90
+ }>;
91
+ bendpoints: Record<string, Point[]>;
92
+ }
93
+ export declare const layoutResultToOps: (doc: DiagramDocument, built: BuiltLayout, result: ElkGraphLike) => LayoutOpsResult;
94
+ export interface RunLayoutResult {
95
+ ops: DiagramOp[];
96
+ engine: "elk" | "grid";
97
+ warning?: string;
98
+ }
99
+ export declare const runLayout: (doc: DiagramDocument, request: LayoutRequest, engine: LayoutEngine) => Promise<RunLayoutResult>;
100
+ export interface GridLayoutOptions {
101
+ columns?: number;
102
+ gap?: number;
103
+ origin?: Point;
104
+ nodeIds?: string[];
105
+ }
106
+ export declare const gridLayoutOps: (doc: DiagramDocument, options?: GridLayoutOptions) => DiagramOp[];
107
+ export type { NodeIndex };
108
+ //# sourceMappingURL=layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../src/diagram/layout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,357 @@
1
+ // Automatic layout: build an ELK graph from the document, turn ELK's answer
2
+ // into OPS. elkjs itself is a HOST dependency (the desktop runs it in a Web
3
+ // Worker, the MCP server in-process); this module is the pure halves: the
4
+ // graph builder and the result-to-ops converter, plus a deterministic grid
5
+ // fallback for hosts without an engine.
6
+ //
7
+ // "Positions from layout, paths from the router": layout moves and resizes
8
+ // nodes and clears stale manual routes — it never bakes edge geometry, so
9
+ // what ELK decided survives the next drag instead of turning into pinned
10
+ // bends that go stale (the 1.28 behaviour this replaces).
11
+ //
12
+ // Modes:
13
+ // full — every visible, unlocked node; containers laid out inside
14
+ // and sized to fit (hierarchyHandling INCLUDE_CHILDREN).
15
+ // selection — only the given nodes (+ their contents); the result stays
16
+ // anchored where the selection was.
17
+ // tidy — ELK's interactive mode: keeps the user's ordering and
18
+ // layering, only cleans up spacing and alignment.
19
+ import { absolutePosition, absoluteRect, anchorSide, descendantIds, indexNodes } from "./geometry.js";
20
+ const resolveRequest = (request) => ({
21
+ algorithm: request.algorithm ?? "layered",
22
+ direction: request.direction ?? "DOWN",
23
+ mode: request.mode ?? "full",
24
+ nodeIds: request.nodeIds ?? [],
25
+ respectHandles: request.respectHandles ?? true,
26
+ assignSides: request.assignSides ?? false,
27
+ keepBendpoints: request.keepBendpoints ?? false,
28
+ spacing: { node: request.spacing?.node ?? 48, layer: request.spacing?.layer ?? 80 },
29
+ });
30
+ export const CONTAINER_PADDING = { top: 48, left: 24, bottom: 24, right: 24 };
31
+ export const layoutOptionsFor = (request) => ({ ...baseLayoutOptions(request), ...(request.extraOptions ?? {}) });
32
+ const baseLayoutOptions = (request) => {
33
+ const r = resolveRequest(request);
34
+ const common = {
35
+ "elk.hierarchyHandling": "INCLUDE_CHILDREN",
36
+ "elk.spacing.nodeNode": String(r.spacing.node),
37
+ "elk.layered.considerModelOrder.strategy": "NODES_AND_EDGES",
38
+ };
39
+ switch (r.algorithm) {
40
+ case "force":
41
+ case "organic":
42
+ return { ...common, "elk.algorithm": "stress", "elk.stress.desiredEdgeLength": String(r.spacing.layer * 2) };
43
+ case "radial":
44
+ return { ...common, "elk.algorithm": "radial", "elk.spacing.nodeNode": String(Math.max(r.spacing.node, 60)) };
45
+ case "tree":
46
+ return { ...common, "elk.algorithm": "mrtree", "elk.direction": r.direction };
47
+ case "layered":
48
+ default: {
49
+ const options = {
50
+ ...common,
51
+ "elk.algorithm": "layered",
52
+ "elk.direction": r.direction,
53
+ "elk.layered.spacing.nodeNodeBetweenLayers": String(r.spacing.layer),
54
+ "elk.layered.spacing.edgeNodeBetweenLayers": "24",
55
+ "elk.edgeRouting": "ORTHOGONAL",
56
+ "elk.layered.nodePlacement.bk.fixedAlignment": "BALANCED",
57
+ };
58
+ if (r.mode === "tidy") {
59
+ Object.assign(options, {
60
+ "elk.interactiveLayout": "true",
61
+ "elk.layered.cycleBreaking.strategy": "INTERACTIVE",
62
+ "elk.layered.layering.strategy": "INTERACTIVE",
63
+ "elk.layered.crossingMinimization.semiInteractive": "true",
64
+ "elk.layered.nodePlacement.strategy": "INTERACTIVE",
65
+ });
66
+ }
67
+ return options;
68
+ }
69
+ }
70
+ };
71
+ const ELK_SIDE = { top: "NORTH", right: "EAST", bottom: "SOUTH", left: "WEST" };
72
+ const portId = (nodeId, side) => `${nodeId}::${side}`;
73
+ export const buildLayoutGraph = (doc, request = {}) => {
74
+ const r = resolveRequest(request);
75
+ const byId = indexNodes(doc.nodes);
76
+ const eligible = (node) => !node.hidden && !node.locked;
77
+ // The scope: which nodes move. Roots of the scope are laid out by ELK's
78
+ // root graph; their descendants are nested under them.
79
+ let roots;
80
+ if (r.mode === "selection") {
81
+ const wanted = new Set(r.nodeIds);
82
+ const selected = doc.nodes.filter((node) => wanted.has(node.id) && eligible(node));
83
+ // A selected node inside a selected container is nested, not a root.
84
+ roots = selected.filter((node) => !selected.some((other) => other.id !== node.id && descendantIds(other.id, doc.nodes).includes(node.id)));
85
+ }
86
+ else {
87
+ roots = doc.nodes.filter((node) => !node.parentId && eligible(node));
88
+ }
89
+ const scope = new Set();
90
+ for (const root of roots) {
91
+ scope.add(root.id);
92
+ for (const id of descendantIds(root.id, doc.nodes)) {
93
+ const node = byId.get(id);
94
+ if (eligible(node))
95
+ scope.add(id);
96
+ }
97
+ }
98
+ const edgeIds = new Set();
99
+ const portsByNode = new Map();
100
+ const elkEdges = [];
101
+ for (const edge of doc.edges) {
102
+ if (!edge.source || !edge.target || !scope.has(edge.source) || !scope.has(edge.target))
103
+ continue;
104
+ if (edge.source === edge.target)
105
+ continue;
106
+ edgeIds.add(edge.id);
107
+ let sourceRef = edge.source;
108
+ let targetRef = edge.target;
109
+ if (r.respectHandles) {
110
+ if (edge.sourceHandle) {
111
+ sourceRef = portId(edge.source, edge.sourceHandle);
112
+ (portsByNode.get(edge.source) ?? portsByNode.set(edge.source, new Set()).get(edge.source))?.add(edge.sourceHandle);
113
+ }
114
+ if (edge.targetHandle) {
115
+ targetRef = portId(edge.target, edge.targetHandle);
116
+ (portsByNode.get(edge.target) ?? portsByNode.set(edge.target, new Set()).get(edge.target))?.add(edge.targetHandle);
117
+ }
118
+ }
119
+ elkEdges.push({ id: edge.id, sources: [sourceRef], targets: [targetRef] });
120
+ }
121
+ const childrenOf = (parentId) => doc.nodes.filter((node) => node.parentId === parentId && scope.has(node.id));
122
+ const containerOptions = () => ({
123
+ "elk.algorithm": "layered",
124
+ "elk.direction": r.direction,
125
+ "elk.layered.spacing.nodeNodeBetweenLayers": String(Math.round(r.spacing.layer * 0.75)),
126
+ "elk.spacing.nodeNode": String(r.spacing.node),
127
+ "elk.padding": `[top=${CONTAINER_PADDING.top},left=${CONTAINER_PADDING.left},bottom=${CONTAINER_PADDING.bottom},right=${CONTAINER_PADDING.right}]`,
128
+ "elk.layered.considerModelOrder.strategy": "NODES_AND_EDGES",
129
+ });
130
+ const toElk = (node) => {
131
+ const kids = node.collapsed ? [] : childrenOf(node.id);
132
+ const size = node.collapsed && node.collapsedSize ? node.collapsedSize : node.size;
133
+ const ports = portsByNode.get(node.id);
134
+ const out = { id: node.id };
135
+ if (kids.length > 0) {
136
+ out.layoutOptions = containerOptions();
137
+ out.children = kids.map(toElk);
138
+ }
139
+ else {
140
+ out.width = size.width;
141
+ out.height = size.height;
142
+ }
143
+ if (ports && ports.size > 0) {
144
+ out.layoutOptions = { ...(out.layoutOptions ?? {}), "elk.portConstraints": "FIXED_SIDE" };
145
+ out.ports = [...ports].map((side) => ({ id: portId(node.id, side), layoutOptions: { "elk.port.side": ELK_SIDE[side] }, width: 1, height: 1 }));
146
+ }
147
+ if (r.mode === "tidy") {
148
+ const abs = absolutePosition(node, byId);
149
+ out.x = abs.x;
150
+ out.y = abs.y;
151
+ out.layoutOptions = { ...(out.layoutOptions ?? {}), "elk.position": `(${abs.x},${abs.y})` };
152
+ }
153
+ return out;
154
+ };
155
+ const rects = roots.map((node) => absoluteRect(node, byId));
156
+ const anchor = rects.length > 0 ? { x: Math.min(...rects.map((rect) => rect.x)), y: Math.min(...rects.map((rect) => rect.y)) } : { x: 80, y: 80 };
157
+ return {
158
+ graph: { id: "root", layoutOptions: layoutOptionsFor(request), children: roots.map(toElk), edges: elkEdges },
159
+ scope,
160
+ anchor,
161
+ edgeIds,
162
+ request: r,
163
+ };
164
+ };
165
+ const nearestSideOf = (rect, point) => anchorSide({ x: rect.width > 0 ? (point.x - rect.x) / rect.width : 0.5, y: rect.height > 0 ? (point.y - rect.y) / rect.height : 0.5 });
166
+ export const layoutResultToOps = (doc, built, result) => {
167
+ const byId = indexNodes(doc.nodes);
168
+ const absolute = new Map(); // laid-out nodes, absolute
169
+ const sizes = new Map();
170
+ const rawEdges = [];
171
+ const walk = (node, originX, originY) => {
172
+ for (const edge of node.edges ?? []) {
173
+ const section = edge.sections?.[0];
174
+ if (!section)
175
+ continue;
176
+ const toAbs = (p) => ({ x: Math.round(originX + p.x), y: Math.round(originY + p.y) });
177
+ rawEdges.push({
178
+ id: edge.id,
179
+ start: section.startPoint ? toAbs(section.startPoint) : undefined,
180
+ end: section.endPoint ? toAbs(section.endPoint) : undefined,
181
+ bends: (section.bendPoints ?? []).map(toAbs),
182
+ });
183
+ }
184
+ for (const child of node.children ?? []) {
185
+ const x = originX + (child.x ?? 0);
186
+ const y = originY + (child.y ?? 0);
187
+ const width = child.width ?? byId.get(child.id)?.size.width ?? 0;
188
+ const height = child.height ?? byId.get(child.id)?.size.height ?? 0;
189
+ absolute.set(child.id, { x: Math.round(x), y: Math.round(y), width, height });
190
+ if (typeof child.width === "number" && typeof child.height === "number" && (child.children?.length ?? 0) > 0) {
191
+ sizes.set(child.id, { width: Math.round(child.width), height: Math.round(child.height) });
192
+ }
193
+ walk(child, x, y);
194
+ }
195
+ };
196
+ walk(result, built.anchor.x, built.anchor.y);
197
+ // Absolute origin of any node: laid out → ELK, else the document.
198
+ const originOf = (id) => {
199
+ if (!id)
200
+ return { x: 0, y: 0 };
201
+ const laid = absolute.get(id);
202
+ if (laid)
203
+ return { x: laid.x, y: laid.y };
204
+ const node = byId.get(id);
205
+ return node ? absolutePosition(node, byId) : { x: 0, y: 0 };
206
+ };
207
+ const moves = [];
208
+ const resizes = [];
209
+ for (const node of doc.nodes) {
210
+ const laid = absolute.get(node.id);
211
+ if (!laid)
212
+ continue;
213
+ const parentOrigin = originOf(node.parentId);
214
+ const position = { x: laid.x - parentOrigin.x, y: laid.y - parentOrigin.y };
215
+ if (position.x !== node.position.x || position.y !== node.position.y)
216
+ moves.push({ id: node.id, position });
217
+ const size = sizes.get(node.id);
218
+ if (size && !node.collapsed && (size.width !== node.size.width || size.height !== node.size.height)) {
219
+ resizes.push({ op: "resizeNode", id: node.id, size });
220
+ }
221
+ }
222
+ const sides = {};
223
+ const bendpoints = {};
224
+ const edgeOps = [];
225
+ const rawById = new Map(rawEdges.map((edge) => [edge.id, edge]));
226
+ for (const edge of doc.edges) {
227
+ if (!built.edgeIds.has(edge.id))
228
+ continue;
229
+ const raw = rawById.get(edge.id);
230
+ const changes = {};
231
+ // A laid-out edge starts fresh: manual bends and legacy pins go.
232
+ if (edge.waypoints)
233
+ changes.waypoints = null;
234
+ if (edge.sourceAnchor)
235
+ changes.sourceAnchor = null;
236
+ if (edge.targetAnchor)
237
+ changes.targetAnchor = null;
238
+ if (edge.routing === "straight" && (edge.sourceAnchor || edge.targetAnchor))
239
+ changes.routing = null;
240
+ if (raw) {
241
+ const source = edge.source ? absolute.get(edge.source) : undefined;
242
+ const target = edge.target ? absolute.get(edge.target) : undefined;
243
+ if (raw.start && source)
244
+ sides[edge.id] = { ...(sides[edge.id] ?? {}), source: nearestSideOf(source, raw.start) };
245
+ if (raw.end && target)
246
+ sides[edge.id] = { ...(sides[edge.id] ?? {}), target: nearestSideOf(target, raw.end) };
247
+ if (raw.bends.length > 0)
248
+ bendpoints[edge.id] = raw.bends;
249
+ if (built.request.assignSides) {
250
+ const chosen = sides[edge.id];
251
+ if (chosen?.source && !edge.sourceHandle)
252
+ changes.sourceHandle = chosen.source;
253
+ if (chosen?.target && !edge.targetHandle)
254
+ changes.targetHandle = chosen.target;
255
+ }
256
+ if (built.request.keepBendpoints && raw.bends.length > 0) {
257
+ changes.waypoints = raw.bends;
258
+ changes.routing = "orthogonal";
259
+ }
260
+ }
261
+ if (Object.keys(changes).length > 0)
262
+ edgeOps.push({ op: "updateEdge", id: edge.id, changes });
263
+ }
264
+ const ops = [];
265
+ if (moves.length > 0)
266
+ ops.push({ op: "moveNodes", moves });
267
+ ops.push(...resizes, ...edgeOps);
268
+ return { ops: ops.length > 0 ? [{ op: "batch", label: "Auto layout", ops }] : [], sides, bendpoints };
269
+ };
270
+ export const runLayout = async (doc, request, engine) => {
271
+ const built = buildLayoutGraph(doc, request);
272
+ if (built.scope.size === 0)
273
+ return { ops: [], engine: "elk" };
274
+ try {
275
+ const result = await engine.layout(built.graph);
276
+ return { ops: layoutResultToOps(doc, built, result).ops, engine: "elk" };
277
+ }
278
+ catch (error) {
279
+ return {
280
+ ops: gridLayoutOps(doc, { nodeIds: request.mode === "selection" ? request.nodeIds : undefined }),
281
+ engine: "grid",
282
+ warning: `Automatic layout fell back to a grid: ${error instanceof Error ? error.message : String(error)}`,
283
+ };
284
+ }
285
+ };
286
+ // Deterministic grid for hosts without elkjs: nodes in reading order, cell
287
+ // size = the largest node, children of a container placed inside it in a
288
+ // sub-grid and the container sized to fit. Emits the same op shape ELK does.
289
+ export const gridLayoutOps = (doc, options = {}) => {
290
+ const gap = options.gap ?? 48;
291
+ const origin = options.origin ?? { x: 80, y: 80 };
292
+ const byId = indexNodes(doc.nodes);
293
+ const wanted = options.nodeIds ? new Set(options.nodeIds) : null;
294
+ const childrenOf = (parentId) => doc.nodes.filter((node) => (node.parentId ?? undefined) === parentId && !node.hidden && (!wanted || parentId !== undefined || wanted.has(node.id)));
295
+ const moves = [];
296
+ const resizes = [];
297
+ const layoutGroup = (nodes, padTop, padSide) => {
298
+ const sized = nodes.map((node) => {
299
+ const kids = node.collapsed ? [] : childrenOf(node.id);
300
+ if (kids.length === 0) {
301
+ const size = node.collapsed && node.collapsedSize ? node.collapsedSize : node.size;
302
+ return { node, width: size.width, height: size.height };
303
+ }
304
+ const inner = layoutGroup(kids, CONTAINER_PADDING.top, CONTAINER_PADDING.left);
305
+ if (inner.width !== node.size.width || inner.height !== node.size.height) {
306
+ resizes.push({ op: "resizeNode", id: node.id, size: inner });
307
+ }
308
+ return { node, width: inner.width, height: inner.height };
309
+ });
310
+ if (sized.length === 0)
311
+ return { width: padSide * 2, height: padTop + padSide };
312
+ const columns = options.columns ?? Math.max(1, Math.ceil(Math.sqrt(sized.length)));
313
+ const cellW = Math.max(...sized.map((entry) => entry.width));
314
+ const cellH = Math.max(...sized.map((entry) => entry.height));
315
+ sized.forEach((entry, index) => {
316
+ const col = index % columns;
317
+ const row = Math.floor(index / columns);
318
+ const position = { x: padSide + col * (cellW + gap), y: padTop + row * (cellH + gap) };
319
+ if (!entry.node.locked)
320
+ moves.push({ id: entry.node.id, position });
321
+ });
322
+ const rows = Math.ceil(sized.length / columns);
323
+ return {
324
+ width: padSide * 2 + columns * cellW + (columns - 1) * gap,
325
+ height: padTop + padSide + rows * cellH + (rows - 1) * gap,
326
+ };
327
+ };
328
+ const roots = childrenOf(undefined);
329
+ if (roots.length > 0)
330
+ layoutGroup(roots, 0, 0);
331
+ // Root-level positions get the origin; nested ones are already relative.
332
+ const rootIds = new Set(roots.map((node) => node.id));
333
+ const finalMoves = moves
334
+ .map((move) => (rootIds.has(move.id) ? { id: move.id, position: { x: move.position.x + origin.x, y: move.position.y + origin.y } } : move))
335
+ .filter((move) => {
336
+ const node = byId.get(move.id);
337
+ return node.position.x !== move.position.x || node.position.y !== move.position.y;
338
+ });
339
+ const edgeOps = doc.edges
340
+ .filter((edge) => edge.waypoints || edge.sourceAnchor || edge.targetAnchor)
341
+ .map((edge) => ({
342
+ op: "updateEdge",
343
+ id: edge.id,
344
+ changes: {
345
+ ...(edge.waypoints ? { waypoints: null } : {}),
346
+ ...(edge.sourceAnchor ? { sourceAnchor: null } : {}),
347
+ ...(edge.targetAnchor ? { targetAnchor: null } : {}),
348
+ ...(edge.routing === "straight" && (edge.sourceAnchor || edge.targetAnchor) ? { routing: null } : {}),
349
+ },
350
+ }));
351
+ const ops = [];
352
+ if (finalMoves.length > 0)
353
+ ops.push({ op: "moveNodes", moves: finalMoves });
354
+ ops.push(...resizes, ...edgeOps);
355
+ return ops.length > 0 ? [{ op: "batch", label: "Auto layout", ops }] : [];
356
+ };
357
+ //# sourceMappingURL=layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/diagram/layout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import { type EdgeSemantic } from "../edgeSemantics.js";
2
+ import type { DiagramOp } from "../ops.js";
3
+ import type { ArrowType, DiagramDocument, DiagramNode, DiagramRouting, LayoutDirection } from "../schema.js";
4
+ import { type MermaidCst, type MermaidDiagnostic } from "./parse.js";
5
+ export interface StructureNode {
6
+ id: string;
7
+ type: string;
8
+ label?: string;
9
+ parentId?: string;
10
+ shape?: string;
11
+ classes: string[];
12
+ collapsed?: boolean;
13
+ direction?: string;
14
+ declared: boolean;
15
+ style?: DiagramNode["style"];
16
+ }
17
+ export interface StructureEdge {
18
+ id: string;
19
+ source: string;
20
+ target: string;
21
+ label?: string;
22
+ semantic: EdgeSemantic;
23
+ markerStart?: ArrowType;
24
+ markerEnd?: ArrowType;
25
+ routing?: DiagramRouting;
26
+ invisible: boolean;
27
+ explicitId: boolean;
28
+ }
29
+ export interface MermaidStructure {
30
+ direction: LayoutDirection;
31
+ title?: string;
32
+ defaultRouting?: DiagramRouting;
33
+ nodes: StructureNode[];
34
+ edges: StructureEdge[];
35
+ diagnostics: MermaidDiagnostic[];
36
+ classDefs: Record<string, DiagramNode["style"]>;
37
+ }
38
+ export declare const mermaidDirectionToLayout: (direction: string | undefined) => LayoutDirection;
39
+ export declare const layoutDirectionToMermaid: (direction: LayoutDirection | undefined) => string;
40
+ export declare const syntheticEdgeId: (source: string, target: string, occurrence: number) => string;
41
+ export declare const cssToStyle: (css: string) => DiagramNode["style"];
42
+ export declare const deriveStructure: (cst: MermaidCst) => MermaidStructure;
43
+ export interface SyncResult {
44
+ ops: DiagramOp[];
45
+ addedNodeIds: string[];
46
+ removedNodeIds: string[];
47
+ }
48
+ export declare const syncOpsFromStructure: (doc: DiagramDocument, structure: MermaidStructure) => SyncResult;
49
+ export interface ParsedMermaid {
50
+ cst: MermaidCst;
51
+ structure: MermaidStructure;
52
+ ok: boolean;
53
+ }
54
+ export declare const parseMermaid: (text: string) => ParsedMermaid;
55
+ //# sourceMappingURL=derive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"derive.d.ts","sourceRoot":"","sources":["../../../src/diagram/mermaid/derive.ts"],"names":[],"mappings":"AAMA,OAAO,EAAiB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAe,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC1H,OAAO,EAKL,KAAK,UAAU,EACf,KAAK,iBAAiB,EAIvB,MAAM,YAAY,CAAC;AAGpB,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,YAAY,CAAC;IACvB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,eAAe,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,WAAW,EAAE,iBAAiB,EAAE,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;CACjD;AAGD,eAAO,MAAM,wBAAwB,GAAI,WAAW,MAAM,GAAG,SAAS,KAAG,eAA6E,CAAC;AACvJ,eAAO,MAAM,wBAAwB,GAAI,WAAW,eAAe,GAAG,SAAS,KAAG,MACa,CAAC;AAoBhG,eAAO,MAAM,eAAe,GAAI,QAAQ,MAAM,EAAE,QAAQ,MAAM,EAAE,YAAY,MAAM,KAAG,MAGpF,CAAC;AAkBF,eAAO,MAAM,UAAU,GAAI,KAAK,MAAM,KAAG,WAAW,CAAC,OAAO,CAiB3D,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,KAAK,UAAU,KAAG,gBA4HjD,CAAC;AAWF,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,SAAS,EAAE,CAAC;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAMD,eAAO,MAAM,oBAAoB,GAAI,KAAK,eAAe,EAAE,WAAW,gBAAgB,KAAG,UAgGxF,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,UAAU,CAAC;IAChB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,EAAE,EAAE,OAAO,CAAC;CACb;AAED,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,KAAG,aAK3C,CAAC"}