likec4 1.55.1 → 1.57.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 (244) hide show
  1. package/__app__/chunks/AIChat2.mjs +2 -0
  2. package/__app__/chunks/DiagramActorProvider.mjs +10 -0
  3. package/__app__/chunks/EmbedPage.mjs +1 -0
  4. package/__app__/chunks/ExportPage.mjs +2 -0
  5. package/__app__/chunks/LikeC4Diagram.mjs +19 -0
  6. package/__app__/chunks/LikeC4Styles.mjs +48 -0
  7. package/__app__/chunks/Markdown.mjs +1 -0
  8. package/__app__/chunks/NavigationPanel.mjs +1 -0
  9. package/__app__/chunks/ViewReact.mjs +1 -0
  10. package/__app__/chunks/adhoc-editor.mjs +1 -0
  11. package/__app__/chunks/aichat.mjs +1 -0
  12. package/__app__/chunks/box.mjs +1 -0
  13. package/__app__/chunks/create-style-context.mjs +1 -0
  14. package/__app__/chunks/css.mjs +1 -0
  15. package/__app__/chunks/factory.mjs +1 -0
  16. package/__app__/chunks/hooks.mjs +1 -0
  17. package/__app__/chunks/hstack.mjs +1 -0
  18. package/__app__/chunks/libs/@dagrejs/dagre.mjs +1 -0
  19. package/__app__/chunks/libs/@floating-ui/core.mjs +1 -0
  20. package/__app__/chunks/libs/@floating-ui/dom.mjs +1 -0
  21. package/__app__/chunks/libs/@floating-ui/react.mjs +1 -0
  22. package/__app__/chunks/libs/@mantine/core.mjs +41 -0
  23. package/__app__/chunks/libs/@mantine/hooks.mjs +1 -0
  24. package/__app__/chunks/libs/@nanostores/react.mjs +1 -0
  25. package/__app__/chunks/libs/@react-hookz/web.mjs +1 -0
  26. package/__app__/chunks/libs/@tabler/icons-react.mjs +358 -0
  27. package/__app__/chunks/libs/@tanstack/ai-client.mjs +2 -0
  28. package/__app__/chunks/libs/@tanstack/ai-react-ui.mjs +1 -0
  29. package/__app__/chunks/libs/@tanstack/ai-react.mjs +1 -0
  30. package/__app__/chunks/libs/@tanstack/ai.mjs +2 -0
  31. package/__app__/chunks/libs/@tanstack/history.mjs +1 -0
  32. package/__app__/chunks/libs/@tanstack/react-router.mjs +3 -0
  33. package/__app__/chunks/libs/@tanstack/router-core.mjs +1 -0
  34. package/__app__/chunks/libs/@xstate/react.mjs +1 -0
  35. package/__app__/chunks/libs/@xstate/store.mjs +1 -0
  36. package/__app__/chunks/libs/@xyflow/react.mjs +7 -0
  37. package/__app__/chunks/libs/@zag-js/anatomy.mjs +1 -0
  38. package/__app__/chunks/libs/@zag-js/collection.mjs +1 -0
  39. package/__app__/chunks/libs/@zag-js/core.mjs +1 -0
  40. package/__app__/chunks/libs/@zag-js/react.mjs +1 -0
  41. package/__app__/chunks/libs/@zag-js/tree-view.mjs +1 -0
  42. package/__app__/chunks/libs/bezier-js.mjs +1 -0
  43. package/__app__/chunks/libs/copy-anything.mjs +1 -0
  44. package/__app__/chunks/libs/d3-path.mjs +1 -0
  45. package/__app__/chunks/libs/d3-shape.mjs +1 -0
  46. package/__app__/chunks/libs/fast-equals.mjs +1 -0
  47. package/__app__/chunks/libs/framer-motion.mjs +9 -0
  48. package/__app__/chunks/libs/html-to-image.mjs +2 -0
  49. package/__app__/chunks/libs/motion-dom.mjs +1 -0
  50. package/__app__/chunks/libs/nanostores.mjs +1 -0
  51. package/__app__/chunks/libs/react-error-boundary.mjs +1 -0
  52. package/__app__/chunks/libs/react-resizable-panels.mjs +1 -0
  53. package/__app__/chunks/libs/remeda.mjs +1 -0
  54. package/__app__/chunks/libs/superjson.mjs +1 -0
  55. package/__app__/chunks/libs/zod.mjs +64 -0
  56. package/__app__/chunks/rolldown-runtime.mjs +1 -0
  57. package/__app__/chunks/styles.css.mjs +1 -0
  58. package/__app__/chunks/txt.mjs +1 -0
  59. package/__app__/chunks/useLikeC4Project.mjs +1 -0
  60. package/__app__/codegen/react.mjs +11 -0
  61. package/__app__/codegen/webcomponent.mjs +942 -0
  62. package/__app__/src/aichat/index.mjs +1 -0
  63. package/__app__/src/fonts.css +1 -1
  64. package/__app__/src/main.mjs +45 -0
  65. package/__app__/src/pages/AdHocViewEditor.mjs +1 -0
  66. package/__app__/src/pages/EmbedPage.mjs +1 -0
  67. package/__app__/src/pages/ExportPage.mjs +1 -0
  68. package/__app__/src/pages/ProjectsOverview.mjs +1 -0
  69. package/__app__/src/pages/ViewAsD2.mjs +1 -0
  70. package/__app__/src/pages/ViewAsDot.mjs +1 -0
  71. package/__app__/src/pages/ViewAsMmd.mjs +1 -0
  72. package/__app__/src/pages/ViewAsPuml.mjs +1 -0
  73. package/__app__/src/pages/ViewEditor.mjs +1 -0
  74. package/__app__/src/pages/ViewReact.mjs +1 -0
  75. package/__app__/src/style.css +1 -1
  76. package/config/schema.json +14 -41
  77. package/dist/chunks/enableServer.mjs +1 -0
  78. package/dist/chunks/filenames.mjs +17 -0
  79. package/dist/{_chunks → chunks}/index.d.mts +2 -1
  80. package/dist/{_chunks → chunks}/index2.d.mts +639 -388
  81. package/dist/chunks/libs/@chevrotain/gast.mjs +1 -0
  82. package/dist/chunks/libs/@chevrotain/regexp-to-ast.mjs +9 -0
  83. package/dist/chunks/libs/@chevrotain/utils.mjs +1 -0
  84. package/dist/chunks/libs/@hono/mcp.mjs +70 -0
  85. package/dist/chunks/libs/@hono/node-server.mjs +1 -0
  86. package/dist/{_chunks → chunks}/libs/@logtape/logtape.d.mts +2 -0
  87. package/dist/chunks/libs/@logtape/logtape.mjs +4 -0
  88. package/dist/chunks/libs/@lume/kiwi.mjs +1 -0
  89. package/dist/chunks/libs/@modelcontextprotocol/sdk.mjs +12 -0
  90. package/dist/chunks/libs/@ts-graphviz/ast.mjs +3 -0
  91. package/dist/chunks/libs/@ts-graphviz/common.d.mts +9 -0
  92. package/dist/chunks/libs/@ts-graphviz/core.mjs +1 -0
  93. package/dist/chunks/libs/ajv.mjs +1 -0
  94. package/dist/chunks/libs/ansi-align.mjs +2 -0
  95. package/dist/chunks/libs/ansi-regex.mjs +1 -0
  96. package/dist/chunks/libs/ansi-styles.mjs +1 -0
  97. package/dist/chunks/libs/atomically.mjs +1 -0
  98. package/dist/chunks/libs/birpc.mjs +1 -0
  99. package/dist/chunks/libs/boxen.mjs +22 -0
  100. package/dist/chunks/libs/chevrotain-allstar.mjs +2 -0
  101. package/dist/chunks/libs/chevrotain.mjs +58 -0
  102. package/dist/chunks/libs/conf.mjs +1 -0
  103. package/dist/chunks/libs/defu.mjs +1 -0
  104. package/dist/chunks/libs/destr.mjs +1 -0
  105. package/dist/chunks/libs/eventemitter3.mjs +1 -0
  106. package/dist/chunks/libs/find-up-simple.mjs +1 -0
  107. package/dist/chunks/libs/get-port.mjs +1 -0
  108. package/dist/chunks/libs/hono.mjs +1 -0
  109. package/dist/chunks/libs/is-docker.mjs +1 -0
  110. package/dist/chunks/libs/is-error-instance.mjs +1 -0
  111. package/dist/chunks/libs/is-inside-container.mjs +1 -0
  112. package/dist/chunks/libs/is-plain-obj.mjs +1 -0
  113. package/dist/chunks/libs/isexe.mjs +1 -0
  114. package/dist/chunks/libs/json5.mjs +14 -0
  115. package/dist/chunks/libs/khroma.mjs +1 -0
  116. package/dist/chunks/libs/ky.mjs +3 -0
  117. package/dist/{_chunks → chunks}/libs/langium.d.mts +9 -9
  118. package/dist/chunks/libs/langium.mjs +32 -0
  119. package/dist/chunks/libs/merge-error-cause.mjs +2 -0
  120. package/dist/chunks/libs/p-debounce.mjs +1 -0
  121. package/dist/chunks/libs/p-limit.mjs +1 -0
  122. package/dist/chunks/libs/p-queue.mjs +1 -0
  123. package/dist/chunks/libs/p-timeout.mjs +1 -0
  124. package/dist/chunks/libs/package-manager-detector.mjs +1 -0
  125. package/dist/chunks/libs/package-up.mjs +1 -0
  126. package/dist/chunks/libs/pako.mjs +3 -0
  127. package/dist/chunks/libs/parse-ms.mjs +1 -0
  128. package/dist/chunks/libs/pathe.mjs +1 -0
  129. package/dist/chunks/libs/picomatch.mjs +1 -0
  130. package/dist/chunks/libs/pretty-ms.mjs +1 -0
  131. package/dist/chunks/libs/remeda.mjs +1 -0
  132. package/dist/chunks/libs/safe-stringify.mjs +1 -0
  133. package/dist/chunks/libs/strip-indent.mjs +1 -0
  134. package/dist/chunks/libs/tinyrainbow.mjs +1 -0
  135. package/dist/chunks/libs/ts-graphviz.mjs +1 -0
  136. package/dist/chunks/libs/ufo.mjs +1 -0
  137. package/dist/chunks/libs/unctx.mjs +1 -0
  138. package/dist/chunks/libs/unstorage.mjs +1 -0
  139. package/dist/chunks/libs/vscode-languageserver.mjs +1 -0
  140. package/dist/chunks/libs/which.mjs +1 -0
  141. package/dist/chunks/libs/word-wrap.mjs +12 -0
  142. package/dist/{_chunks → chunks}/libs/zod.d.mts +62 -25
  143. package/dist/chunks/node.mjs +93 -0
  144. package/dist/chunks/plugin.mjs +593 -0
  145. package/dist/chunks/rolldown-runtime.mjs +1 -0
  146. package/dist/chunks/sequence-view.mjs +1 -0
  147. package/dist/cli/index.mjs +188 -59
  148. package/dist/config/index.d.mts +1 -2
  149. package/dist/config/index.mjs +1 -1
  150. package/dist/index.d.mts +2 -135
  151. package/dist/index.mjs +1 -1
  152. package/dist/model/index.d.mts +3 -2
  153. package/dist/model/index.mjs +1 -1
  154. package/dist/vite-plugin/index.d.mts +90 -9
  155. package/dist/vite-plugin/index.mjs +1 -1
  156. package/dist/vite-plugin/internal/chunks/libs/@nanostores/react.mjs +1 -0
  157. package/dist/vite-plugin/internal/chunks/libs/birpc.mjs +1 -0
  158. package/dist/vite-plugin/internal/chunks/libs/fast-equals.mjs +1 -0
  159. package/dist/vite-plugin/internal/chunks/libs/nanostores.mjs +1 -0
  160. package/dist/vite-plugin/internal/chunks/libs/remeda.mjs +1 -0
  161. package/dist/vite-plugin/internal/chunks/rolldown-runtime.mjs +1 -0
  162. package/dist/{_chunks/libs/@nanostores/react.d.mts → vite-plugin/internal/index.d.mts} +103 -45
  163. package/dist/vite-plugin/internal/index.mjs +1 -0
  164. package/package.json +74 -80
  165. package/react/index.d.mts +84 -78
  166. package/react/index.mjs +51954 -53701
  167. package/vite-plugin/internal/package.json +2 -2
  168. package/vite-plugin-modules.d.ts +18 -0
  169. package/__app__/react/likec4.tsx +0 -25
  170. package/__app__/src/ProjectsOverview.js +0 -16
  171. package/__app__/src/const.js +0 -19
  172. package/__app__/src/likec4.js +0 -21254
  173. package/__app__/src/main.js +0 -7
  174. package/__app__/src/routes/index.js +0 -324
  175. package/__app__/src/routes/projects.js +0 -193
  176. package/__app__/src/routes/single.js +0 -1983
  177. package/__app__/src/vendors.js +0 -52683
  178. package/__app__/src/webcomponent.js +0 -68
  179. package/dist/THIRD-PARTY-LICENSES.md +0 -1609
  180. package/dist/_chunks/libs/@chevrotain/cst-dts-gen.mjs +0 -30
  181. package/dist/_chunks/libs/@chevrotain/regexp-to-ast.mjs +0 -9
  182. package/dist/_chunks/libs/@chevrotain/types.d.mts +0 -1
  183. package/dist/_chunks/libs/@chevrotain/utils.mjs +0 -1
  184. package/dist/_chunks/libs/@hono/mcp.mjs +0 -45
  185. package/dist/_chunks/libs/@hono/node-server.mjs +0 -1
  186. package/dist/_chunks/libs/@logtape/logtape.mjs +0 -4
  187. package/dist/_chunks/libs/@lume/kiwi.mjs +0 -1
  188. package/dist/_chunks/libs/@modelcontextprotocol/sdk.mjs +0 -12
  189. package/dist/_chunks/libs/@nanostores/react.mjs +0 -1
  190. package/dist/_chunks/libs/ajv.mjs +0 -1
  191. package/dist/_chunks/libs/ansi-align.mjs +0 -2
  192. package/dist/_chunks/libs/ansi-regex.mjs +0 -1
  193. package/dist/_chunks/libs/ansi-styles.mjs +0 -1
  194. package/dist/_chunks/libs/atomically.mjs +0 -1
  195. package/dist/_chunks/libs/birpc.mjs +0 -1
  196. package/dist/_chunks/libs/boxen.mjs +0 -22
  197. package/dist/_chunks/libs/chevrotain-allstar.mjs +0 -2
  198. package/dist/_chunks/libs/chevrotain.mjs +0 -58
  199. package/dist/_chunks/libs/conf.mjs +0 -1
  200. package/dist/_chunks/libs/defu.mjs +0 -1
  201. package/dist/_chunks/libs/destr.mjs +0 -1
  202. package/dist/_chunks/libs/esm-env.mjs +0 -1
  203. package/dist/_chunks/libs/eventemitter3.mjs +0 -1
  204. package/dist/_chunks/libs/fast-equals.mjs +0 -1
  205. package/dist/_chunks/libs/find-up-simple.mjs +0 -1
  206. package/dist/_chunks/libs/get-port.mjs +0 -1
  207. package/dist/_chunks/libs/is-docker.mjs +0 -1
  208. package/dist/_chunks/libs/is-error-instance.mjs +0 -1
  209. package/dist/_chunks/libs/is-inside-container.mjs +0 -1
  210. package/dist/_chunks/libs/is-plain-obj.mjs +0 -1
  211. package/dist/_chunks/libs/isexe.mjs +0 -1
  212. package/dist/_chunks/libs/json5.mjs +0 -14
  213. package/dist/_chunks/libs/khroma.mjs +0 -1
  214. package/dist/_chunks/libs/ky.mjs +0 -3
  215. package/dist/_chunks/libs/langium.mjs +0 -33
  216. package/dist/_chunks/libs/merge-error-cause.mjs +0 -2
  217. package/dist/_chunks/libs/p-limit.mjs +0 -1
  218. package/dist/_chunks/libs/p-queue.mjs +0 -1
  219. package/dist/_chunks/libs/p-timeout.mjs +0 -1
  220. package/dist/_chunks/libs/package-manager-detector.mjs +0 -1
  221. package/dist/_chunks/libs/package-up.mjs +0 -1
  222. package/dist/_chunks/libs/pako.mjs +0 -1
  223. package/dist/_chunks/libs/parse-ms.mjs +0 -1
  224. package/dist/_chunks/libs/pathe.mjs +0 -1
  225. package/dist/_chunks/libs/picomatch.mjs +0 -1
  226. package/dist/_chunks/libs/pretty-ms.mjs +0 -1
  227. package/dist/_chunks/libs/remeda.mjs +0 -2
  228. package/dist/_chunks/libs/safe-stringify.mjs +0 -1
  229. package/dist/_chunks/libs/strip-indent.mjs +0 -1
  230. package/dist/_chunks/libs/tinyrainbow.mjs +0 -1
  231. package/dist/_chunks/libs/ts-graphviz.d.mts +0 -10
  232. package/dist/_chunks/libs/ts-graphviz.mjs +0 -4
  233. package/dist/_chunks/libs/ufo.mjs +0 -1
  234. package/dist/_chunks/libs/unstorage.mjs +0 -1
  235. package/dist/_chunks/libs/vscode-languageserver.mjs +0 -1
  236. package/dist/_chunks/libs/which.mjs +0 -1
  237. package/dist/_chunks/libs/word-wrap.mjs +0 -12
  238. package/dist/_chunks/node.mjs +0 -76
  239. package/dist/_chunks/rolldown-runtime.mjs +0 -1
  240. package/dist/_chunks/sequence.mjs +0 -1
  241. package/dist/_chunks/src.mjs +0 -17
  242. package/dist/_chunks/src2.mjs +0 -499
  243. package/dist/vite-plugin/internal.d.mts +0 -44
  244. package/dist/vite-plugin/internal.mjs +0 -1
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "likec4",
3
3
  "description": "Toolchain for your architecture diagrams",
4
- "version": "1.55.1",
4
+ "version": "1.57.0",
5
5
  "license": "MIT",
6
6
  "homepage": "https://likec4.dev",
7
7
  "author": "Denis Davydkov <denis@davydkov.com>",
@@ -20,11 +20,10 @@
20
20
  "graph"
21
21
  ],
22
22
  "engines": {
23
- "node": ">=22.22.0"
23
+ "node": ">=22.22.3"
24
24
  },
25
25
  "bugs": "https://github.com/likec4/likec4/issues",
26
26
  "type": "module",
27
- "bin": "./bin/likec4.mjs",
28
27
  "exports": {
29
28
  ".": {
30
29
  "sources": "./src/index.ts",
@@ -70,9 +69,9 @@
70
69
  "./vite-plugin/internal": {
71
70
  "sources": "./src/vite-plugin/internal.ts",
72
71
  "default": {
73
- "types": "./dist/vite-plugin/internal.d.mts",
74
- "import": "./dist/vite-plugin/internal.mjs",
75
- "default": "./dist/vite-plugin/internal.mjs"
72
+ "types": "./dist/vite-plugin/internal/index.d.mts",
73
+ "import": "./dist/vite-plugin/internal/index.mjs",
74
+ "default": "./dist/vite-plugin/internal/index.mjs"
76
75
  }
77
76
  },
78
77
  "./vite-plugin": {
@@ -89,67 +88,68 @@
89
88
  "registry": "https://registry.npmjs.org",
90
89
  "access": "public"
91
90
  },
92
- "imports": {
93
- "#vite/aliases": {
94
- "production": "./src/vite/aliases.prod.ts",
95
- "sources": "./src/vite/aliases.ts"
96
- },
97
- "#vite/config-app": {
98
- "production": "./src/vite/config-app.prod.ts",
99
- "sources": "./src/vite/config-app.ts"
100
- },
101
- "#vite/config-react": {
102
- "production": "./src/vite/config-react.prod.ts",
103
- "sources": "./src/vite/config-react.ts"
104
- },
105
- "#vite/config-webcomponent": {
106
- "production": "./src/vite/config-webcomponent.prod.ts",
107
- "sources": "./src/vite/config-webcomponent.ts"
108
- }
109
- },
110
91
  "dependencies": {
111
92
  "@hpcc-js/wasm-graphviz": "1.21.2",
112
- "@vitejs/plugin-react": "^5.2.0",
93
+ "@vitejs/plugin-react": "^6.0.2",
113
94
  "bundle-require": "^5.1.0",
114
95
  "esbuild": "0.27.4",
115
96
  "fdir": "6.4.0",
116
- "playwright": "1.58.2",
97
+ "playwright": "^1.58.2",
117
98
  "chokidar": "^5.0.0",
99
+ "immer": "^11.1.4",
118
100
  "std-env": "^3.10.0",
119
101
  "type-fest": "^4.41.0",
120
102
  "vite-plugin-singlefile": "^2.3.2",
121
- "vite": "^7.3.1",
103
+ "vite": "^8.0.14",
122
104
  "yargs": "17.7.2",
123
105
  "nano-spawn": "^2.0.0",
124
- "@likec4/core": "1.55.1",
106
+ "use-sync-external-store": "^1.6.0",
107
+ "react-compiler-runtime": "^1.0.0",
108
+ "@likec4/core": "1.57.0",
125
109
  "@likec4/icons": "1.46.4"
126
110
  },
127
111
  "peerDependencies": {
112
+ "@tanstack/ai": "^0.14.0",
113
+ "@tanstack/ai-anthropic": "^0.8.3",
114
+ "@tanstack/ai-gemini": "^0.10.0",
115
+ "@tanstack/ai-openai": "^0.8.2",
116
+ "@tanstack/ai-ollama": "^0.6.10",
117
+ "@tanstack/ai-openrouter": "^0.8.2",
128
118
  "react": "^18.x || ^19.x",
129
119
  "react-dom": "^18.x || ^19.x"
130
120
  },
121
+ "peerDependenciesMeta": {
122
+ "@tanstack/ai": {
123
+ "optional": true
124
+ },
125
+ "@tanstack/ai-anthropic": {
126
+ "optional": true
127
+ },
128
+ "@tanstack/ai-gemini": {
129
+ "optional": true
130
+ },
131
+ "@tanstack/ai-openai": {
132
+ "optional": true
133
+ },
134
+ "@tanstack/ai-ollama": {
135
+ "optional": true
136
+ },
137
+ "@tanstack/ai-openrouter": {
138
+ "optional": true
139
+ }
140
+ },
131
141
  "devDependencies": {
132
142
  "langium": "3.5.0",
133
143
  "@dagrejs/dagre": "1.1.8",
134
144
  "@fontsource-variable/ibm-plex-sans": "^5.2.8",
135
- "@mantine/core": "8.3.18",
136
- "@mantine/hooks": "8.3.18",
137
- "@pandacss/dev": "^1.9.1",
138
- "@react-hookz/web": "^25.2.0",
139
- "@tabler/icons-react": "3.40.0",
140
- "@tanstack/react-router": "^1.114.13",
141
- "@tanstack/router-cli": "^1.114.13",
142
- "@tanstack/router-vite-plugin": "^1.114.13",
143
- "@types/node": "~22.19.15",
145
+ "@pandacss/dev": "^1.11.1",
146
+ "@tanstack/ai": "^0.14.0",
147
+ "@types/node": "~22.19.19",
144
148
  "@types/picomatch": "^4.0.3",
145
- "@types/react": "19.2.14",
149
+ "@types/react": "19.2.15",
146
150
  "@types/react-dom": "19.2.3",
147
151
  "@types/semver": "^7.7.1",
148
152
  "@types/yargs": "^17.0.33",
149
- "@xstate/react": "6.1.0",
150
- "@xstate/store": "3.17.1",
151
- "@xyflow/react": "12.10.2",
152
- "@xyflow/system": "0.0.76",
153
153
  "autoprefixer": "^10.4.27",
154
154
  "picomatch": "^4.0.4",
155
155
  "birpc": "^4.0.0",
@@ -161,39 +161,35 @@
161
161
  "esm-env": "^1.2.2",
162
162
  "fast-equals": "^6.0.0",
163
163
  "get-port": "^7.1.0",
164
- "html-to-image": "1.11.11",
165
164
  "is-inside-container": "^1.0.0",
166
165
  "json5": "^2.2.3",
167
166
  "ky": "^1.14.3",
168
- "merge-error-cause": "^5.0.2",
169
167
  "mkdirp": "^3.0.1",
170
- "motion": "^12.36.0",
171
168
  "npm-run-all2": "^8.0.4",
172
169
  "p-limit": "7.3.0",
173
170
  "nanostores": "1.2.0",
174
171
  "@nanostores/react": "1.1.0",
172
+ "oxlint": "1.59.0",
175
173
  "package-manager-detector": "1.6.0",
176
174
  "package-up": "^5.0.0",
177
- "postcss": "8.5.9",
175
+ "postcss": "8.5.15",
178
176
  "pretty-ms": "^9.3.0",
179
- "react": "19.2.4",
180
- "react-dom": "19.2.4",
177
+ "react": "19.2.6",
178
+ "react-dom": "19.2.6",
181
179
  "react-error-boundary": "^6.1.1",
182
- "react-resizable-panels": "^4.7.3",
183
- "react-shadow": "^20.6.0",
180
+ "react-resizable-panels": "^4.11.1",
184
181
  "remeda": "^2.33.7",
185
182
  "semver": "^7.7.4",
186
183
  "strip-indent": "^4.1.1",
187
- "tinyrainbow": "^3.0.3",
184
+ "tinyrainbow": "^3.1.0",
188
185
  "tsx": "4.21.0",
189
- "turbo": "2.9.5",
186
+ "turbo": "2.9.14",
190
187
  "typescript": "5.9.3",
191
188
  "ufo": "1.6.3",
192
- "obuild": "0.4.31",
193
- "vite-plugin-dts": "^4.5.4",
194
- "vite-plugin-inspect": "^11.3.3",
189
+ "tsdown": "^0.22.0",
190
+ "vite-plugin-dts": "^5.0.1",
195
191
  "vitest": "4.1.3",
196
- "vscode-jsonrpc": "8.2.1",
192
+ "vscode-jsonrpc": "8.2.0",
197
193
  "vscode-languageserver": "9.0.1",
198
194
  "vscode-languageserver-types": "3.17.5",
199
195
  "vscode-uri": "3.1.0",
@@ -201,34 +197,29 @@
201
197
  "wireit": "0.14.12",
202
198
  "zod": "^4.3.6",
203
199
  "zx": "8.8.5",
204
- "xstate": "5.30.0",
205
- "@likec4/leanix-bridge": "1.55.1",
206
- "@likec4/config": "1.55.1",
207
- "@likec4/log": "1.55.1",
208
- "@likec4/language-services": "1.55.1",
209
- "@likec4/language-server": "1.55.1",
210
- "@likec4/mcp": "1.55.1",
211
- "@likec4/devops": "1.42.0",
212
- "@likec4/diagram": "1.55.1",
213
- "@likec4/layouts": "1.55.1",
214
- "@likec4/react": "1.55.1",
215
- "@likec4/vite-plugin": "1.55.1",
216
- "@likec4/generators": "1.55.1",
217
- "@likec4/tsconfig": "1.55.1",
218
- "@likec4/styles": "1.55.1",
219
- "@likec4/style-preset": "1.55.1"
200
+ "@likec4/config": "1.57.0",
201
+ "@likec4/leanix-bridge": "1.57.0",
202
+ "@likec4/log": "1.57.0",
203
+ "@likec4/language-server": "1.57.0",
204
+ "@likec4/mcp": "1.57.0",
205
+ "@likec4/language-services": "1.57.0",
206
+ "@likec4/devops": "1.57.0",
207
+ "@likec4/diagram": "1.57.0",
208
+ "@likec4/layouts": "1.57.0",
209
+ "@likec4/vite-plugin": "1.57.0",
210
+ "@likec4/react": "1.57.0",
211
+ "@likec4/spa": "1.57.0",
212
+ "@likec4/style-preset": "1.57.0",
213
+ "@likec4/generators": "1.57.0",
214
+ "@likec4/styles": "1.57.0",
215
+ "@likec4/tsconfig": "1.57.0"
220
216
  },
221
217
  "scripts": {
222
218
  "typecheck": "tsc --build --verbose",
223
- "build-cli": "obuild",
224
- "build-app": "tsx --conditions=sources scripts/bundle-app.ts",
225
- "build-react": "tsx --conditions=sources scripts/bundle-react.ts",
226
- "build": "echo \"use pnpm turbo run build\" || true",
227
- "generate:app": "tsr generate",
219
+ "build": "tsdown",
228
220
  "pack": "pnpm pack",
229
- "lint": "run -T eslint src/ --fix",
230
221
  "lint:package": "pnpx publint ./package.tgz",
231
- "clean": "pnpm rimraf --glob lib dist app/dist dev/.export dev/dist node_modules/.vite react/* icons",
222
+ "clean": "pnpm rimraf --glob lib dist app/dist dev/.export dev/dist node_modules/.vite react/* __app__",
232
223
  "start": "tsx --conditions=sources src/cli/index.ts",
233
224
  "dev": "pnpm cli:serve dev",
234
225
  "dev:docs": "pnpm cli:serve ../../apps/docs/src",
@@ -251,5 +242,8 @@
251
242
  "test:watch": "vitest"
252
243
  },
253
244
  "types": "dist/index.d.mts",
254
- "module": "dist/index.mjs"
245
+ "module": "dist/index.mjs",
246
+ "bin": {
247
+ "likec4": "./bin/likec4.mjs"
248
+ }
255
249
  }
package/react/index.d.mts CHANGED
@@ -1,4 +1,3 @@
1
- import { Align } from '@xyflow/react';
2
1
  import { Any } from '@likec4/core/types';
3
2
  import { AutoLayoutDirection } from '@likec4/core/types';
4
3
  import { aux } from '@likec4/core/types';
@@ -10,8 +9,6 @@ import { Color } from '@likec4/core/types';
10
9
  import { ComputedNodeStyle } from '@likec4/core/types';
11
10
  import { ComputedNodeStyle as ComputedNodeStyle_2 } from '@likec4/core';
12
11
  import { Context as Context_4 } from 'react';
13
- import { ControlButton } from '@xyflow/react';
14
- import { Controls } from '@xyflow/react';
15
12
  import { CSSProperties } from 'react';
16
13
  import { DependencyList } from 'react';
17
14
  import { DeploymentFqn } from '@likec4/core/types';
@@ -56,9 +53,6 @@ import { LikeC4ViewModel } from '@likec4/core/model';
56
53
  import { MarkdownOrString } from '@likec4/core/types';
57
54
  import { MarkdownOrString as MarkdownOrString_2 } from '@likec4/core';
58
55
  import { MemoExoticComponent } from 'react';
59
- import { MiniMap } from '@xyflow/react';
60
- import { MiniMapNode } from '@xyflow/react';
61
- import { MiniMapNodeProps } from '@xyflow/react';
62
56
  import { MotionNodeLayoutOptions } from 'motion/react';
63
57
  import { MotionStyle } from 'motion/react';
64
58
  import { MouseEvent as MouseEvent_2 } from 'react';
@@ -71,15 +65,12 @@ import { NodeId as NodeId_3 } from '@likec4/core';
71
65
  import { NodeModel } from '@likec4/core/model';
72
66
  import { NodeNotation } from '@likec4/core/types';
73
67
  import { NodeProps } from '@xyflow/react';
74
- import { NodeToolbar } from '@xyflow/react';
75
68
  import { NodeToolbarProps } from '@xyflow/react';
76
69
  import { NonEmptyArray } from '@likec4/core/types';
77
70
  import { NonEmptyObject } from 'type-fest';
78
71
  import { NonEmptyReadonlyArray } from '@likec4/core/types';
79
72
  import { OptionalKeysOf } from 'type-fest';
80
- import { Panel } from '@xyflow/react';
81
73
  import { PartialDeep } from 'type-fest';
82
- import { Position } from '@xyflow/react';
83
74
  import { ProjectId } from '@likec4/core/types';
84
75
  import { ProjectId as ProjectId_2 } from '@likec4/core';
85
76
  import { PropsWithChildren } from 'react';
@@ -107,7 +98,6 @@ import { ViewChange } from '@likec4/core/types';
107
98
  import { ViewId } from '@likec4/core/types';
108
99
  import { ViewId as ViewId_3 } from '@likec4/core';
109
100
  import { Viewport } from '@xyflow/system';
110
- import { ViewportPortal } from '@xyflow/react';
111
101
  import { WhereOperator } from '@likec4/core/types';
112
102
  import { Without } from 'type-fest/source/merge-exclusive';
113
103
  import { XYPosition } from '@xyflow/system';
@@ -1001,7 +991,21 @@ export declare interface DiagramApi<A extends Any_3 = Unknown_2> {
1001
991
  * @warning Do not use in render phase
1002
992
  */
1003
993
  readonly currentView: t.DiagramView<A>;
994
+ /**
995
+ * Editor actor reference
996
+ * @warning Do not use in render phase
997
+ */
998
+ editorActor(): EditorActorRef;
999
+ /**
1000
+ * Overlays actor reference
1001
+ * @warning Do not use in render phase
1002
+ */
1004
1003
  overlays(): OverlaysActorRef;
1004
+ /**
1005
+ * Search actor reference
1006
+ * @warning Do not use in render phase
1007
+ */
1008
+ searchActor(): SearchActorRef;
1005
1009
  /**
1006
1010
  * Send event to diagram actor
1007
1011
  */
@@ -1435,16 +1439,19 @@ declare type EdgeId_3 = t.aux.EdgeId;
1435
1439
 
1436
1440
  declare interface EditorActorContext {
1437
1441
  viewId: t.ViewId;
1438
- pendingChanges: t.ViewChange[];
1439
- history: ReadonlyArray<HistorySnapshot>;
1440
- /**
1441
- * The state before editing started
1442
- */
1443
- beforeEditing: HistorySnapshot | null;
1444
- /**
1445
- * The subject of the edit
1446
- */
1447
- editing: 'node' | 'edge' | null;
1442
+ history: LinkedSnapshot | null;
1443
+ editing: null | {
1444
+ /**
1445
+ * The subject of the edit
1446
+ */
1447
+ subject: 'node' | 'edge';
1448
+ /**
1449
+ * The state before editing started
1450
+ */
1451
+ before: Snapshot_2;
1452
+ };
1453
+ syncQueue: Array<SyncOp>;
1454
+ processing: Exclude<SyncOp, 'sync-snapshot'> | null;
1448
1455
  }
1449
1456
 
1450
1457
  declare type EditorActorEmitedEvent = {
@@ -1452,31 +1459,35 @@ declare type EditorActorEmitedEvent = {
1452
1459
  };
1453
1460
 
1454
1461
  declare type EditorActorEvent = {
1455
- type: 'sync';
1456
- } | {
1457
- type: 'change';
1462
+ type: 'change.view';
1458
1463
  change: t.ViewChange;
1459
1464
  } | {
1460
- type: 'edit.start';
1461
- subject: 'node' | 'edge';
1465
+ type: 'change.semantic-layout';
1462
1466
  } | {
1463
- type: 'edit.finish';
1464
- wasChanged?: boolean;
1467
+ type: 'change.latest-to-manual';
1465
1468
  } | {
1466
- type: 'applyLatestToManual';
1469
+ type: 'change.sync-snapshot';
1467
1470
  } | {
1468
- type: 'synced';
1471
+ type: 'view.synched';
1469
1472
  } | {
1470
1473
  type: 'cancel';
1471
1474
  } | {
1472
- type: 'reset';
1475
+ type: 'edit.move.start';
1476
+ subject: 'node' | 'edge';
1477
+ } | {
1478
+ type: 'edit.move.end';
1479
+ } | {
1480
+ type: 'edit.move.cancel';
1473
1481
  } | HotKeyEvent_2;
1474
1482
 
1475
1483
  declare interface EditorActorInput {
1476
1484
  viewId: t.ViewId;
1477
1485
  }
1478
1486
 
1479
- declare interface EditorActorLogic extends StateMachine<EditorActorContext, EditorActorEvent, any, any, any, any, any, 'idle' | 'editing' | 'pending' | 'afterEdit' | 'applyLatestToManual' | 'executeChanges', any, EditorActorInput, any, EditorActorEmitedEvent, any, any> {
1487
+ declare interface EditorActorLogic extends StateMachine<EditorActorContext, EditorActorEvent, any, any, any, any, any, {
1488
+ editor: 'idle' | 'moving';
1489
+ syncQueue: 'idle' | 'pending' | 'suspended' | 'process';
1490
+ }, EditorActorStateTag, EditorActorInput, any, EditorActorEmitedEvent, any, any> {
1480
1491
  }
1481
1492
 
1482
1493
  declare interface EditorActorRef extends ActorRef<EditorActorSnapshot, EditorActorEvent, EditorActorEmitedEvent> {
@@ -1484,6 +1495,8 @@ declare interface EditorActorRef extends ActorRef<EditorActorSnapshot, EditorAct
1484
1495
 
1485
1496
  declare type EditorActorSnapshot = SnapshotFrom<EditorActorLogic>;
1486
1497
 
1498
+ declare type EditorActorStateTag = 'pending' | 'busy' | 'ai-semantic-layout';
1499
+
1487
1500
  declare type EffectCallback_2 = (...args: any[]) => any;
1488
1501
 
1489
1502
  declare type EffectHook<Callback extends EffectCallback_2 = EffectCallback_2, Deps extends DependencyList | undefined = DependencyList | undefined, RestArgs extends any[] = any[]> = ((...args: [Callback, Deps, ...RestArgs]) => void) | ((...args: [Callback, Deps]) => void);
@@ -1734,7 +1747,7 @@ declare type ElementShapeProps = {
1734
1747
  export declare const ElementTag: ForwardRefExoticComponent<{
1735
1748
  tag: string;
1736
1749
  cursor?: "pointer" | "default";
1737
- } & Omit<Omit< DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, "children" | "color"> & RefAttributes<HTMLDivElement>>;
1750
+ } & Omit<Omit< DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, "color" | "children"> & RefAttributes<HTMLDivElement>>;
1738
1751
 
1739
1752
  export declare const ElementTags: MemoExoticComponent<({ id, data: { tags, width, hovered }, onTagClick, onTagMouseEnter, onTagMouseLeave }: ElementTagsProps) => JSX.Element | null>;
1740
1753
 
@@ -1922,7 +1935,7 @@ declare type ExtractEvent<TEvent extends EventObject, TDescriptor extends EventD
1922
1935
 
1923
1936
  export declare type FeatureName = typeof FeatureNames[number];
1924
1937
 
1925
- declare const FeatureNames: readonly ["Controls", "Editor", "ReadOnly", "FocusMode", "NavigateTo", "ElementDetails", "RelationshipDetails", "RelationshipBrowser", "Search", "NavigationButtons", "Notations", "DynamicViewWalkthrough", "FitView", "CompareWithLatest", "Notes", "Vscode", "ElementTags"];
1938
+ declare const FeatureNames: readonly ["Controls", "Editor", "AISemanticLayout", "ReadOnly", "FocusMode", "NavigateTo", "ElementDetails", "RelationshipDetails", "RelationshipBrowser", "Search", "NavigationButtons", "Notations", "DynamicViewWalkthrough", "FitView", "CompareWithLatest", "Notes", "Vscode", "ElementTags"];
1926
1939
 
1927
1940
  declare type Fqn_2<A> = t.aux.Fqn<A>;
1928
1941
 
@@ -1960,14 +1973,6 @@ declare type GuardPredicate<TContext extends MachineContext, TExpressionEvent ex
1960
1973
  _out_TGuard?: TGuard;
1961
1974
  };
1962
1975
 
1963
- declare type HistorySnapshot = {
1964
- view: t.LayoutedView;
1965
- change: t.ViewChange.SaveViewSnapshot;
1966
- xynodes: Types.Node[];
1967
- xyedges: Types.Edge[];
1968
- synched: boolean;
1969
- };
1970
-
1971
1976
  declare type HistoryValue<TContext extends MachineContext, TEvent extends EventObject> = Record<string, Array<StateNode<TContext, TEvent>>>;
1972
1977
 
1973
1978
  declare type HotKeyEvent = {
@@ -2528,6 +2533,11 @@ export declare type LikeC4DiagramProps<A extends Any = Any> = PropsWithChildren<
2528
2533
  * Callbacks from LikeC4 Editor.
2529
2534
  */
2530
2535
  export declare interface LikeC4EditorCallbacks {
2536
+ /**
2537
+ * Apply semantic layout to a view (if AI is available)
2538
+ * See vite-plugin settings for more details
2539
+ */
2540
+ applySemanticLayout?: undefined | ((viewId: t.ViewId) => Promise<void>);
2531
2541
  /**
2532
2542
  * Fetch a view by its ID and layout type.
2533
2543
  *
@@ -2793,6 +2803,11 @@ export declare interface LikeC4ViewProps<A extends t.aux.Any = t.aux.UnknownLayo
2793
2803
 
2794
2804
  declare type LinearAlignmentMode = 'Left' | 'Center' | 'Right' | 'Top' | 'Middle' | 'Bottom';
2795
2805
 
2806
+ declare type LinkedSnapshot = {
2807
+ head: Snapshot_2;
2808
+ tail: LinkedSnapshot | null;
2809
+ };
2810
+
2796
2811
  declare type LowInfer<T> = T & NonNullable<unknown>;
2797
2812
 
2798
2813
  declare type MachineConfig<TContext extends MachineContext, TEvent extends EventObject, TActor extends ProvidedActor = ProvidedActor, TAction extends ParameterizedObject = ParameterizedObject, TGuard extends ParameterizedObject = ParameterizedObject, TDelay extends string = string, TTag extends string = string, TInput = any, TOutput = unknown, TEmitted extends EventObject = EventObject, TMeta extends MetaObject = MetaObject> = (Omit<StateNodeConfig<DoNotInfer<TContext>, DoNotInfer<TEvent>, DoNotInfer<TActor>, DoNotInfer<TAction>, DoNotInfer<TGuard>, DoNotInfer<TDelay>, DoNotInfer<TTag>, DoNotInfer<TOutput>, DoNotInfer<TEmitted>, DoNotInfer<TMeta>>, 'output'> & {
@@ -2909,7 +2924,7 @@ declare type Mapper<TContext extends MachineContext, TExpressionEvent extends Ev
2909
2924
  TODO>, TEvent, AnyEventObject>;
2910
2925
  }) => TResult;
2911
2926
 
2912
- export declare const Markdown: ForwardRefExoticComponent<Omit<Omit< DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, "children" | "color" | "dangerouslySetInnerHTML"> & {
2927
+ export declare const Markdown: ForwardRefExoticComponent<Omit<Omit< DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref">, "color" | "children" | "dangerouslySetInnerHTML"> & {
2913
2928
  value: RichTextOrEmpty;
2914
2929
  /**
2915
2930
  * When markdown block is used inside a diagram node, this variant should be used to apply the likec4 palette.
@@ -3099,7 +3114,15 @@ export declare const Overlay: ForwardRefExoticComponent<{
3099
3114
  backdrop?: {
3100
3115
  opacity?: number;
3101
3116
  };
3117
+ /**
3118
+ * Delay before showing the overlay content (in milliseconds) - helps to avoid flickering
3119
+ * Default: `130ms`
3120
+ * If set to `0`, the content will be shown immediately
3121
+ */
3102
3122
  openDelay?: number;
3123
+ /**
3124
+ * Called when the overlay is closed by outside click or escape key
3125
+ */
3103
3126
  onClose: () => void;
3104
3127
  onClick?: never;
3105
3128
  } & {
@@ -3141,7 +3164,15 @@ export declare type OverlayProps = PropsWithChildren<{
3141
3164
  backdrop?: {
3142
3165
  opacity?: number;
3143
3166
  };
3167
+ /**
3168
+ * Delay before showing the overlay content (in milliseconds) - helps to avoid flickering
3169
+ * Default: `130ms`
3170
+ * If set to `0`, the content will be shown immediately
3171
+ */
3144
3172
  openDelay?: number;
3173
+ /**
3174
+ * Called when the overlay is closed by outside click or escape key
3175
+ */
3145
3176
  onClose: () => void;
3146
3177
  onClick?: never;
3147
3178
  }>;
@@ -3586,7 +3617,7 @@ export declare const searchDialogCss: string;
3586
3617
  * The shared search panel content used by both diagram and overview search.
3587
3618
  * Must be rendered inside a SearchContext.Provider.
3588
3619
  */
3589
- export declare const SearchPanelContent: MemoExoticComponent<() => JSX.Element>;
3620
+ export declare const SearchPanelContent: ForwardRefExoticComponent<RefAttributes<HTMLDivElement>>;
3590
3621
 
3591
3622
  export declare function SequenceActorNode(props: Types.NodeProps<'seq-actor'>): JSX.Element;
3592
3623
 
@@ -3611,24 +3642,6 @@ declare function setHovered<T extends WithHovered>(value: T, hovered: boolean):
3611
3642
 
3612
3643
  declare function setHovered(hovered: boolean): <T extends WithHovered>(value: T) => T;
3613
3644
 
3614
- declare const ShadowRoot_2: ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & {
3615
- injectFontCss?: boolean | undefined;
3616
- styleNonce?: string | (() => string) | undefined;
3617
- mode?: "open" | "closed";
3618
- delegatesFocus?: boolean;
3619
- colorScheme?: "light" | "dark" | undefined;
3620
- keepAspectRatio?: false | undefined | {
3621
- width: number;
3622
- height: number;
3623
- };
3624
- /**
3625
- * Mantine theme override to apply within the shadow root
3626
- * @see https://mantine.dev/theming/mantine-provider/#theme-prop
3627
- */
3628
- theme?: any;
3629
- } & RefAttributes<HTMLDivElement>>;
3630
- export { ShadowRoot_2 as ShadowRoot }
3631
-
3632
3645
  declare type SingleOrArray<T> = readonly T[] | T;
3633
3646
 
3634
3647
  declare type SlotProps = {
@@ -3656,6 +3669,13 @@ declare type Snapshot<TOutput> = {
3656
3669
  error: undefined;
3657
3670
  };
3658
3671
 
3672
+ declare type Snapshot_2 = {
3673
+ view: t.LayoutedView;
3674
+ change: t.ViewChange.SaveViewSnapshot;
3675
+ xynodes: Types.Node[];
3676
+ xyedges: Types.Edge[];
3677
+ };
3678
+
3659
3679
  declare interface SnapshotEvent<TSnapshot extends Snapshot<unknown> = Snapshot<unknown>> extends EventObject {
3660
3680
  type: `xstate.snapshot.${string}`;
3661
3681
  snapshot: TSnapshot;
@@ -4089,6 +4109,8 @@ declare interface Subscription {
4089
4109
 
4090
4110
  declare const symbolObservable: typeof Symbol.observable;
4091
4111
 
4112
+ declare type SyncOp = t.ViewChange | 'sync-snapshot' | 'apply-semantic-layout' | 'apply-latest-to-manual';
4113
+
4092
4114
  declare type System = ActorSystem<{
4093
4115
  actors: {
4094
4116
  diagram: DiagramMachineRef;
@@ -4553,22 +4575,6 @@ declare type WithHovered = {
4553
4575
  };
4554
4576
  };
4555
4577
 
4556
- export declare namespace XYFlow {
4557
- export {
4558
- Align,
4559
- ControlButton,
4560
- Controls,
4561
- MiniMap,
4562
- MiniMapNode,
4563
- MiniMapNodeProps,
4564
- NodeToolbar,
4565
- NodeToolbarProps,
4566
- Panel,
4567
- Position,
4568
- ViewportPortal
4569
- }
4570
- }
4571
-
4572
4578
  declare type XYFLowInstance = ReactFlowInstance<RelationshipsBrowserTypes.AnyNode, RelationshipsBrowserTypes.Edge>;
4573
4579
 
4574
4580
  declare type XYFlowInstance = ReactFlowInstance<Types.AnyNode, Types.AnyEdge>;
@@ -4590,7 +4596,7 @@ declare type XYStoreApi_3 = {
4590
4596
  getState: () => XYStoreState_3;
4591
4597
  };
4592
4598
 
4593
- declare type XYStoreState = ReactFlowState<Types.AnyNode, Types.AnyEdge>;
4599
+ export declare type XYStoreState = ReactFlowState<Types.AnyNode, Types.AnyEdge>;
4594
4600
 
4595
4601
  declare type XYStoreState_2 = ReactFlowState<RelationshipsBrowserTypes.AnyNode, RelationshipsBrowserTypes.Edge>;
4596
4602