@aigne/aos 0.2.0-beta

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 (533) hide show
  1. package/CHANGELOG.md +49 -0
  2. package/LICENSE.md +26 -0
  3. package/dist/agent-dsl.cjs +116 -0
  4. package/dist/agent-dsl.d.cts +31 -0
  5. package/dist/agent-dsl.d.cts.map +1 -0
  6. package/dist/agent-dsl.d.mts +31 -0
  7. package/dist/agent-dsl.d.mts.map +1 -0
  8. package/dist/agent-dsl.mjs +115 -0
  9. package/dist/agent-dsl.mjs.map +1 -0
  10. package/dist/arc-compat.cjs +125 -0
  11. package/dist/arc-compat.d.cts +17 -0
  12. package/dist/arc-compat.d.cts.map +1 -0
  13. package/dist/arc-compat.d.mts +17 -0
  14. package/dist/arc-compat.d.mts.map +1 -0
  15. package/dist/arc-compat.mjs +123 -0
  16. package/dist/arc-compat.mjs.map +1 -0
  17. package/dist/auto-surface/compiler.cjs +36 -0
  18. package/dist/auto-surface/compiler.d.cts +7 -0
  19. package/dist/auto-surface/compiler.d.cts.map +1 -0
  20. package/dist/auto-surface/compiler.d.mts +7 -0
  21. package/dist/auto-surface/compiler.d.mts.map +1 -0
  22. package/dist/auto-surface/compiler.mjs +37 -0
  23. package/dist/auto-surface/compiler.mjs.map +1 -0
  24. package/dist/auto-surface/definition-dsl.cjs +333 -0
  25. package/dist/auto-surface/definition-dsl.d.cts +41 -0
  26. package/dist/auto-surface/definition-dsl.d.cts.map +1 -0
  27. package/dist/auto-surface/definition-dsl.d.mts +41 -0
  28. package/dist/auto-surface/definition-dsl.d.mts.map +1 -0
  29. package/dist/auto-surface/definition-dsl.mjs +332 -0
  30. package/dist/auto-surface/definition-dsl.mjs.map +1 -0
  31. package/dist/auto-surface/fragments.cjs +177 -0
  32. package/dist/auto-surface/fragments.d.cts +23 -0
  33. package/dist/auto-surface/fragments.d.cts.map +1 -0
  34. package/dist/auto-surface/fragments.d.mts +23 -0
  35. package/dist/auto-surface/fragments.d.mts.map +1 -0
  36. package/dist/auto-surface/fragments.mjs +175 -0
  37. package/dist/auto-surface/fragments.mjs.map +1 -0
  38. package/dist/auto-surface/index.d.mts +9 -0
  39. package/dist/auto-surface/layering.cjs +43 -0
  40. package/dist/auto-surface/layering.d.cts +7 -0
  41. package/dist/auto-surface/layering.d.cts.map +1 -0
  42. package/dist/auto-surface/layering.d.mts +7 -0
  43. package/dist/auto-surface/layering.d.mts.map +1 -0
  44. package/dist/auto-surface/layering.mjs +43 -0
  45. package/dist/auto-surface/layering.mjs.map +1 -0
  46. package/dist/auto-surface/projection.cjs +11 -0
  47. package/dist/auto-surface/projection.d.cts +11 -0
  48. package/dist/auto-surface/projection.d.cts.map +1 -0
  49. package/dist/auto-surface/projection.d.mts +11 -0
  50. package/dist/auto-surface/projection.d.mts.map +1 -0
  51. package/dist/auto-surface/projection.mjs +12 -0
  52. package/dist/auto-surface/projection.mjs.map +1 -0
  53. package/dist/auto-surface/projectors/settings-shell.cjs +114 -0
  54. package/dist/auto-surface/projectors/settings-shell.d.cts +10 -0
  55. package/dist/auto-surface/projectors/settings-shell.d.cts.map +1 -0
  56. package/dist/auto-surface/projectors/settings-shell.d.mts +10 -0
  57. package/dist/auto-surface/projectors/settings-shell.d.mts.map +1 -0
  58. package/dist/auto-surface/projectors/settings-shell.mjs +114 -0
  59. package/dist/auto-surface/projectors/settings-shell.mjs.map +1 -0
  60. package/dist/auto-surface/scenario.cjs +38 -0
  61. package/dist/auto-surface/scenario.d.cts +31 -0
  62. package/dist/auto-surface/scenario.d.cts.map +1 -0
  63. package/dist/auto-surface/scenario.d.mts +31 -0
  64. package/dist/auto-surface/scenario.d.mts.map +1 -0
  65. package/dist/auto-surface/scenario.mjs +37 -0
  66. package/dist/auto-surface/scenario.mjs.map +1 -0
  67. package/dist/auto-surface/types.cjs +9 -0
  68. package/dist/auto-surface/types.d.cts +153 -0
  69. package/dist/auto-surface/types.d.cts.map +1 -0
  70. package/dist/auto-surface/types.d.mts +153 -0
  71. package/dist/auto-surface/types.d.mts.map +1 -0
  72. package/dist/auto-surface/types.mjs +9 -0
  73. package/dist/auto-surface/types.mjs.map +1 -0
  74. package/dist/auto-surface/value-dsl.cjs +80 -0
  75. package/dist/auto-surface/value-dsl.d.cts +24 -0
  76. package/dist/auto-surface/value-dsl.d.cts.map +1 -0
  77. package/dist/auto-surface/value-dsl.d.mts +24 -0
  78. package/dist/auto-surface/value-dsl.d.mts.map +1 -0
  79. package/dist/auto-surface/value-dsl.mjs +79 -0
  80. package/dist/auto-surface/value-dsl.mjs.map +1 -0
  81. package/dist/blocklet/activation.cjs +94 -0
  82. package/dist/blocklet/activation.d.cts +30 -0
  83. package/dist/blocklet/activation.d.cts.map +1 -0
  84. package/dist/blocklet/activation.d.mts +30 -0
  85. package/dist/blocklet/activation.d.mts.map +1 -0
  86. package/dist/blocklet/activation.mjs +94 -0
  87. package/dist/blocklet/activation.mjs.map +1 -0
  88. package/dist/blocklet/did-space-registry.cjs +282 -0
  89. package/dist/blocklet/did-space-registry.d.cts +82 -0
  90. package/dist/blocklet/did-space-registry.d.cts.map +1 -0
  91. package/dist/blocklet/did-space-registry.d.mts +82 -0
  92. package/dist/blocklet/did-space-registry.d.mts.map +1 -0
  93. package/dist/blocklet/did-space-registry.mjs +281 -0
  94. package/dist/blocklet/did-space-registry.mjs.map +1 -0
  95. package/dist/blocklet/handlers.cjs +66 -0
  96. package/dist/blocklet/handlers.d.cts +16 -0
  97. package/dist/blocklet/handlers.d.cts.map +1 -0
  98. package/dist/blocklet/handlers.d.mts +16 -0
  99. package/dist/blocklet/handlers.d.mts.map +1 -0
  100. package/dist/blocklet/handlers.mjs +65 -0
  101. package/dist/blocklet/handlers.mjs.map +1 -0
  102. package/dist/blocklet/index.d.mts +7 -0
  103. package/dist/blocklet/manifest.d.cts +2 -0
  104. package/dist/blocklet/manifest.d.mts +2 -0
  105. package/dist/blocklet/manifest.mjs +3 -0
  106. package/dist/blocklet/registry.cjs +447 -0
  107. package/dist/blocklet/registry.d.cts +197 -0
  108. package/dist/blocklet/registry.d.cts.map +1 -0
  109. package/dist/blocklet/registry.d.mts +197 -0
  110. package/dist/blocklet/registry.d.mts.map +1 -0
  111. package/dist/blocklet/registry.mjs +441 -0
  112. package/dist/blocklet/registry.mjs.map +1 -0
  113. package/dist/blocklet/static-render.cjs +183 -0
  114. package/dist/blocklet/static-render.d.cts +55 -0
  115. package/dist/blocklet/static-render.d.cts.map +1 -0
  116. package/dist/blocklet/static-render.d.mts +55 -0
  117. package/dist/blocklet/static-render.d.mts.map +1 -0
  118. package/dist/blocklet/static-render.mjs +181 -0
  119. package/dist/blocklet/static-render.mjs.map +1 -0
  120. package/dist/blocklet/types.d.cts +70 -0
  121. package/dist/blocklet/types.d.cts.map +1 -0
  122. package/dist/blocklet/types.d.mts +70 -0
  123. package/dist/blocklet/types.d.mts.map +1 -0
  124. package/dist/devices/chain.cjs +127 -0
  125. package/dist/devices/chain.d.cts +48 -0
  126. package/dist/devices/chain.d.cts.map +1 -0
  127. package/dist/devices/chain.d.mts +48 -0
  128. package/dist/devices/chain.d.mts.map +1 -0
  129. package/dist/devices/chain.mjs +125 -0
  130. package/dist/devices/chain.mjs.map +1 -0
  131. package/dist/dsl-shared.cjs +290 -0
  132. package/dist/dsl-shared.d.cts +54 -0
  133. package/dist/dsl-shared.d.cts.map +1 -0
  134. package/dist/dsl-shared.d.mts +54 -0
  135. package/dist/dsl-shared.d.mts.map +1 -0
  136. package/dist/dsl-shared.mjs +287 -0
  137. package/dist/dsl-shared.mjs.map +1 -0
  138. package/dist/http/afs-mcp.cjs +85 -0
  139. package/dist/http/afs-mcp.d.cts +14 -0
  140. package/dist/http/afs-mcp.d.cts.map +1 -0
  141. package/dist/http/afs-mcp.d.mts +14 -0
  142. package/dist/http/afs-mcp.d.mts.map +1 -0
  143. package/dist/http/afs-mcp.mjs +86 -0
  144. package/dist/http/afs-mcp.mjs.map +1 -0
  145. package/dist/http/afs-raw.cjs +264 -0
  146. package/dist/http/afs-raw.d.cts +31 -0
  147. package/dist/http/afs-raw.d.cts.map +1 -0
  148. package/dist/http/afs-raw.d.mts +31 -0
  149. package/dist/http/afs-raw.d.mts.map +1 -0
  150. package/dist/http/afs-raw.mjs +264 -0
  151. package/dist/http/afs-raw.mjs.map +1 -0
  152. package/dist/http/afs-rest.cjs +30 -0
  153. package/dist/http/afs-rest.d.cts +21 -0
  154. package/dist/http/afs-rest.d.cts.map +1 -0
  155. package/dist/http/afs-rest.d.mts +21 -0
  156. package/dist/http/afs-rest.d.mts.map +1 -0
  157. package/dist/http/afs-rest.mjs +31 -0
  158. package/dist/http/afs-rest.mjs.map +1 -0
  159. package/dist/http/afs-rpc-wire.cjs +271 -0
  160. package/dist/http/afs-rpc-wire.d.cts +195 -0
  161. package/dist/http/afs-rpc-wire.d.cts.map +1 -0
  162. package/dist/http/afs-rpc-wire.d.mts +195 -0
  163. package/dist/http/afs-rpc-wire.d.mts.map +1 -0
  164. package/dist/http/afs-rpc-wire.mjs +262 -0
  165. package/dist/http/afs-rpc-wire.mjs.map +1 -0
  166. package/dist/http/afs-rpc.cjs +729 -0
  167. package/dist/http/afs-rpc.d.cts +103 -0
  168. package/dist/http/afs-rpc.d.cts.map +1 -0
  169. package/dist/http/afs-rpc.d.mts +103 -0
  170. package/dist/http/afs-rpc.d.mts.map +1 -0
  171. package/dist/http/afs-rpc.mjs +729 -0
  172. package/dist/http/afs-rpc.mjs.map +1 -0
  173. package/dist/http/afs-upload.cjs +116 -0
  174. package/dist/http/afs-upload.d.cts +40 -0
  175. package/dist/http/afs-upload.d.cts.map +1 -0
  176. package/dist/http/afs-upload.d.mts +40 -0
  177. package/dist/http/afs-upload.d.mts.map +1 -0
  178. package/dist/http/afs-upload.mjs +116 -0
  179. package/dist/http/afs-upload.mjs.map +1 -0
  180. package/dist/http/aup-client.cjs +60 -0
  181. package/dist/http/aup-client.d.cts +22 -0
  182. package/dist/http/aup-client.d.cts.map +1 -0
  183. package/dist/http/aup-client.d.mts +22 -0
  184. package/dist/http/aup-client.d.mts.map +1 -0
  185. package/dist/http/aup-client.mjs +59 -0
  186. package/dist/http/aup-client.mjs.map +1 -0
  187. package/dist/http/aup-event.cjs +100 -0
  188. package/dist/http/aup-event.d.cts +38 -0
  189. package/dist/http/aup-event.d.cts.map +1 -0
  190. package/dist/http/aup-event.d.mts +38 -0
  191. package/dist/http/aup-event.d.mts.map +1 -0
  192. package/dist/http/aup-event.mjs +101 -0
  193. package/dist/http/aup-event.mjs.map +1 -0
  194. package/dist/http/auth-context.cjs +66 -0
  195. package/dist/http/auth-context.d.cts +64 -0
  196. package/dist/http/auth-context.d.cts.map +1 -0
  197. package/dist/http/auth-context.d.mts +64 -0
  198. package/dist/http/auth-context.d.mts.map +1 -0
  199. package/dist/http/auth-context.mjs +66 -0
  200. package/dist/http/auth-context.mjs.map +1 -0
  201. package/dist/http/csrf.cjs +50 -0
  202. package/dist/http/csrf.d.cts +8 -0
  203. package/dist/http/csrf.d.cts.map +1 -0
  204. package/dist/http/csrf.d.mts +8 -0
  205. package/dist/http/csrf.d.mts.map +1 -0
  206. package/dist/http/csrf.mjs +49 -0
  207. package/dist/http/csrf.mjs.map +1 -0
  208. package/dist/http/handlers.cjs +106 -0
  209. package/dist/http/handlers.d.cts +39 -0
  210. package/dist/http/handlers.d.cts.map +1 -0
  211. package/dist/http/handlers.d.mts +39 -0
  212. package/dist/http/handlers.d.mts.map +1 -0
  213. package/dist/http/handlers.mjs +104 -0
  214. package/dist/http/handlers.mjs.map +1 -0
  215. package/dist/http/index.d.mts +1 -0
  216. package/dist/http/ingest-facade.cjs +315 -0
  217. package/dist/http/ingest-facade.mjs +314 -0
  218. package/dist/http/ingest-facade.mjs.map +1 -0
  219. package/dist/http/raw-url.cjs +136 -0
  220. package/dist/http/raw-url.d.cts +54 -0
  221. package/dist/http/raw-url.d.cts.map +1 -0
  222. package/dist/http/raw-url.d.mts +54 -0
  223. package/dist/http/raw-url.d.mts.map +1 -0
  224. package/dist/http/raw-url.mjs +136 -0
  225. package/dist/http/raw-url.mjs.map +1 -0
  226. package/dist/http/request-context.cjs +178 -0
  227. package/dist/http/request-context.d.cts +76 -0
  228. package/dist/http/request-context.d.cts.map +1 -0
  229. package/dist/http/request-context.d.mts +76 -0
  230. package/dist/http/request-context.d.mts.map +1 -0
  231. package/dist/http/request-context.mjs +179 -0
  232. package/dist/http/request-context.mjs.map +1 -0
  233. package/dist/index.cjs +197 -0
  234. package/dist/index.d.cts +63 -0
  235. package/dist/index.d.mts +68 -0
  236. package/dist/index.mjs +61 -0
  237. package/dist/mcp/index.cjs +9 -0
  238. package/dist/mcp/index.d.cts +5 -0
  239. package/dist/mcp/index.d.mts +5 -0
  240. package/dist/mcp/index.mjs +6 -0
  241. package/dist/mcp/prompts.cjs +17 -0
  242. package/dist/mcp/prompts.d.cts +8 -0
  243. package/dist/mcp/prompts.d.cts.map +1 -0
  244. package/dist/mcp/prompts.d.mts +8 -0
  245. package/dist/mcp/prompts.d.mts.map +1 -0
  246. package/dist/mcp/prompts.mjs +17 -0
  247. package/dist/mcp/prompts.mjs.map +1 -0
  248. package/dist/mcp/resources.cjs +22 -0
  249. package/dist/mcp/resources.d.cts +8 -0
  250. package/dist/mcp/resources.d.cts.map +1 -0
  251. package/dist/mcp/resources.d.mts +8 -0
  252. package/dist/mcp/resources.d.mts.map +1 -0
  253. package/dist/mcp/resources.mjs +22 -0
  254. package/dist/mcp/resources.mjs.map +1 -0
  255. package/dist/mcp/server.cjs +51 -0
  256. package/dist/mcp/server.d.cts +20 -0
  257. package/dist/mcp/server.d.cts.map +1 -0
  258. package/dist/mcp/server.d.mts +20 -0
  259. package/dist/mcp/server.d.mts.map +1 -0
  260. package/dist/mcp/server.mjs +52 -0
  261. package/dist/mcp/server.mjs.map +1 -0
  262. package/dist/mcp/tools.cjs +218 -0
  263. package/dist/mcp/tools.d.cts +8 -0
  264. package/dist/mcp/tools.d.cts.map +1 -0
  265. package/dist/mcp/tools.d.mts +8 -0
  266. package/dist/mcp/tools.d.mts.map +1 -0
  267. package/dist/mcp/tools.mjs +219 -0
  268. package/dist/mcp/tools.mjs.map +1 -0
  269. package/dist/mcp/utils.cjs +75 -0
  270. package/dist/mcp/utils.mjs +69 -0
  271. package/dist/mcp/utils.mjs.map +1 -0
  272. package/dist/mount/index.cjs +4 -0
  273. package/dist/mount/index.d.cts +3 -0
  274. package/dist/mount/index.d.mts +3 -0
  275. package/dist/mount/index.mjs +3 -0
  276. package/dist/mount/materializer.cjs +167 -0
  277. package/dist/mount/materializer.d.cts +97 -0
  278. package/dist/mount/materializer.d.cts.map +1 -0
  279. package/dist/mount/materializer.d.mts +97 -0
  280. package/dist/mount/materializer.d.mts.map +1 -0
  281. package/dist/mount/materializer.mjs +167 -0
  282. package/dist/mount/materializer.mjs.map +1 -0
  283. package/dist/mount/types.d.cts +90 -0
  284. package/dist/mount/types.d.cts.map +1 -0
  285. package/dist/mount/types.d.mts +90 -0
  286. package/dist/mount/types.d.mts.map +1 -0
  287. package/dist/mount-config.cjs +61 -0
  288. package/dist/mount-config.d.cts +19 -0
  289. package/dist/mount-config.d.cts.map +1 -0
  290. package/dist/mount-config.d.mts +19 -0
  291. package/dist/mount-config.d.mts.map +1 -0
  292. package/dist/mount-config.mjs +61 -0
  293. package/dist/mount-config.mjs.map +1 -0
  294. package/dist/projectors/aup-projector.cjs +190 -0
  295. package/dist/projectors/aup-projector.d.cts +59 -0
  296. package/dist/projectors/aup-projector.d.cts.map +1 -0
  297. package/dist/projectors/aup-projector.d.mts +59 -0
  298. package/dist/projectors/aup-projector.d.mts.map +1 -0
  299. package/dist/projectors/aup-projector.mjs +188 -0
  300. package/dist/projectors/aup-projector.mjs.map +1 -0
  301. package/dist/projectors/index.cjs +6 -0
  302. package/dist/projectors/index.d.cts +2 -0
  303. package/dist/projectors/index.d.mts +2 -0
  304. package/dist/projectors/index.mjs +3 -0
  305. package/dist/scaffold/afs.cjs +195 -0
  306. package/dist/scaffold/afs.d.cts +16 -0
  307. package/dist/scaffold/afs.d.cts.map +1 -0
  308. package/dist/scaffold/afs.d.mts +16 -0
  309. package/dist/scaffold/afs.d.mts.map +1 -0
  310. package/dist/scaffold/afs.mjs +195 -0
  311. package/dist/scaffold/afs.mjs.map +1 -0
  312. package/dist/scaffold/composition.cjs +92 -0
  313. package/dist/scaffold/composition.d.cts +10 -0
  314. package/dist/scaffold/composition.d.cts.map +1 -0
  315. package/dist/scaffold/composition.d.mts +10 -0
  316. package/dist/scaffold/composition.d.mts.map +1 -0
  317. package/dist/scaffold/composition.mjs +92 -0
  318. package/dist/scaffold/composition.mjs.map +1 -0
  319. package/dist/scaffold/dsl-error.cjs +21 -0
  320. package/dist/scaffold/dsl-error.d.cts +11 -0
  321. package/dist/scaffold/dsl-error.d.cts.map +1 -0
  322. package/dist/scaffold/dsl-error.d.mts +11 -0
  323. package/dist/scaffold/dsl-error.d.mts.map +1 -0
  324. package/dist/scaffold/dsl-error.mjs +20 -0
  325. package/dist/scaffold/dsl-error.mjs.map +1 -0
  326. package/dist/scaffold/index.d.mts +12 -0
  327. package/dist/scaffold/manifest-dsl.cjs +188 -0
  328. package/dist/scaffold/manifest-dsl.d.cts +8 -0
  329. package/dist/scaffold/manifest-dsl.d.cts.map +1 -0
  330. package/dist/scaffold/manifest-dsl.d.mts +8 -0
  331. package/dist/scaffold/manifest-dsl.d.mts.map +1 -0
  332. package/dist/scaffold/manifest-dsl.mjs +188 -0
  333. package/dist/scaffold/manifest-dsl.mjs.map +1 -0
  334. package/dist/scaffold/module-dsl.cjs +284 -0
  335. package/dist/scaffold/module-dsl.d.cts +8 -0
  336. package/dist/scaffold/module-dsl.d.cts.map +1 -0
  337. package/dist/scaffold/module-dsl.d.mts +8 -0
  338. package/dist/scaffold/module-dsl.d.mts.map +1 -0
  339. package/dist/scaffold/module-dsl.mjs +284 -0
  340. package/dist/scaffold/module-dsl.mjs.map +1 -0
  341. package/dist/scaffold/resolver.cjs +156 -0
  342. package/dist/scaffold/resolver.d.cts +7 -0
  343. package/dist/scaffold/resolver.d.cts.map +1 -0
  344. package/dist/scaffold/resolver.d.mts +7 -0
  345. package/dist/scaffold/resolver.d.mts.map +1 -0
  346. package/dist/scaffold/resolver.mjs +156 -0
  347. package/dist/scaffold/resolver.mjs.map +1 -0
  348. package/dist/scaffold/runtime.cjs +24 -0
  349. package/dist/scaffold/runtime.d.cts +19 -0
  350. package/dist/scaffold/runtime.d.cts.map +1 -0
  351. package/dist/scaffold/runtime.d.mts +19 -0
  352. package/dist/scaffold/runtime.d.mts.map +1 -0
  353. package/dist/scaffold/runtime.mjs +25 -0
  354. package/dist/scaffold/runtime.mjs.map +1 -0
  355. package/dist/scaffold/shell-dsl.cjs +279 -0
  356. package/dist/scaffold/shell-dsl.d.cts +8 -0
  357. package/dist/scaffold/shell-dsl.d.cts.map +1 -0
  358. package/dist/scaffold/shell-dsl.d.mts +8 -0
  359. package/dist/scaffold/shell-dsl.d.mts.map +1 -0
  360. package/dist/scaffold/shell-dsl.mjs +279 -0
  361. package/dist/scaffold/shell-dsl.mjs.map +1 -0
  362. package/dist/scaffold/surface-dsl.cjs +182 -0
  363. package/dist/scaffold/surface-dsl.d.cts +8 -0
  364. package/dist/scaffold/surface-dsl.d.cts.map +1 -0
  365. package/dist/scaffold/surface-dsl.d.mts +8 -0
  366. package/dist/scaffold/surface-dsl.d.mts.map +1 -0
  367. package/dist/scaffold/surface-dsl.mjs +182 -0
  368. package/dist/scaffold/surface-dsl.mjs.map +1 -0
  369. package/dist/scaffold/surfaces.cjs +84 -0
  370. package/dist/scaffold/surfaces.d.cts +23 -0
  371. package/dist/scaffold/surfaces.d.cts.map +1 -0
  372. package/dist/scaffold/surfaces.d.mts +24 -0
  373. package/dist/scaffold/surfaces.d.mts.map +1 -0
  374. package/dist/scaffold/surfaces.mjs +84 -0
  375. package/dist/scaffold/surfaces.mjs.map +1 -0
  376. package/dist/scaffold/types.d.cts +264 -0
  377. package/dist/scaffold/types.d.cts.map +1 -0
  378. package/dist/scaffold/types.d.mts +265 -0
  379. package/dist/scaffold/types.d.mts.map +1 -0
  380. package/dist/scaffold/workspace-dsl.cjs +339 -0
  381. package/dist/scaffold/workspace-dsl.d.cts +49 -0
  382. package/dist/scaffold/workspace-dsl.d.cts.map +1 -0
  383. package/dist/scaffold/workspace-dsl.d.mts +49 -0
  384. package/dist/scaffold/workspace-dsl.d.mts.map +1 -0
  385. package/dist/scaffold/workspace-dsl.mjs +337 -0
  386. package/dist/scaffold/workspace-dsl.mjs.map +1 -0
  387. package/dist/scope/index.d.mts +3 -0
  388. package/dist/scope/read-blocklet-scope.cjs +29 -0
  389. package/dist/scope/read-blocklet-scope.d.cts +8 -0
  390. package/dist/scope/read-blocklet-scope.d.cts.map +1 -0
  391. package/dist/scope/read-blocklet-scope.d.mts +8 -0
  392. package/dist/scope/read-blocklet-scope.d.mts.map +1 -0
  393. package/dist/scope/read-blocklet-scope.mjs +30 -0
  394. package/dist/scope/read-blocklet-scope.mjs.map +1 -0
  395. package/dist/scope/resolve-scoped-afs.cjs +87 -0
  396. package/dist/scope/resolve-scoped-afs.d.cts +7 -0
  397. package/dist/scope/resolve-scoped-afs.d.cts.map +1 -0
  398. package/dist/scope/resolve-scoped-afs.d.mts +7 -0
  399. package/dist/scope/resolve-scoped-afs.d.mts.map +1 -0
  400. package/dist/scope/resolve-scoped-afs.mjs +88 -0
  401. package/dist/scope/resolve-scoped-afs.mjs.map +1 -0
  402. package/dist/scope/types.d.cts +25 -0
  403. package/dist/scope/types.d.cts.map +1 -0
  404. package/dist/scope/types.d.mts +25 -0
  405. package/dist/scope/types.d.mts.map +1 -0
  406. package/dist/session/backends.cjs +90 -0
  407. package/dist/session/backends.d.cts +35 -0
  408. package/dist/session/backends.d.cts.map +1 -0
  409. package/dist/session/backends.d.mts +35 -0
  410. package/dist/session/backends.d.mts.map +1 -0
  411. package/dist/session/backends.mjs +89 -0
  412. package/dist/session/backends.mjs.map +1 -0
  413. package/dist/session/replication-resolver.cjs +323 -0
  414. package/dist/session/replication-resolver.d.cts +71 -0
  415. package/dist/session/replication-resolver.d.cts.map +1 -0
  416. package/dist/session/replication-resolver.d.mts +71 -0
  417. package/dist/session/replication-resolver.d.mts.map +1 -0
  418. package/dist/session/replication-resolver.mjs +323 -0
  419. package/dist/session/replication-resolver.mjs.map +1 -0
  420. package/dist/session/role-level.cjs +36 -0
  421. package/dist/session/role-level.d.cts +24 -0
  422. package/dist/session/role-level.d.cts.map +1 -0
  423. package/dist/session/role-level.d.mts +24 -0
  424. package/dist/session/role-level.d.mts.map +1 -0
  425. package/dist/session/role-level.mjs +35 -0
  426. package/dist/session/role-level.mjs.map +1 -0
  427. package/dist/session/session-dir-providers.cjs +254 -0
  428. package/dist/session/session-dir-providers.d.cts +32 -0
  429. package/dist/session/session-dir-providers.d.cts.map +1 -0
  430. package/dist/session/session-dir-providers.d.mts +32 -0
  431. package/dist/session/session-dir-providers.d.mts.map +1 -0
  432. package/dist/session/session-dir-providers.mjs +252 -0
  433. package/dist/session/session-dir-providers.mjs.map +1 -0
  434. package/dist/session/session-id.cjs +20 -0
  435. package/dist/session/session-id.d.cts +15 -0
  436. package/dist/session/session-id.d.cts.map +1 -0
  437. package/dist/session/session-id.d.mts +15 -0
  438. package/dist/session/session-id.d.mts.map +1 -0
  439. package/dist/session/session-id.mjs +20 -0
  440. package/dist/session/session-id.mjs.map +1 -0
  441. package/dist/session/session-user-afs.cjs +899 -0
  442. package/dist/session/session-user-afs.d.cts +296 -0
  443. package/dist/session/session-user-afs.d.cts.map +1 -0
  444. package/dist/session/session-user-afs.d.mts +296 -0
  445. package/dist/session/session-user-afs.d.mts.map +1 -0
  446. package/dist/session/session-user-afs.mjs +896 -0
  447. package/dist/session/session-user-afs.mjs.map +1 -0
  448. package/dist/session/settings-cascade.cjs +69 -0
  449. package/dist/session/settings-cascade.d.cts +81 -0
  450. package/dist/session/settings-cascade.d.cts.map +1 -0
  451. package/dist/session/settings-cascade.d.mts +81 -0
  452. package/dist/session/settings-cascade.d.mts.map +1 -0
  453. package/dist/session/settings-cascade.mjs +69 -0
  454. package/dist/session/settings-cascade.mjs.map +1 -0
  455. package/dist/session/settings-resolver.cjs +770 -0
  456. package/dist/session/settings-resolver.d.cts +177 -0
  457. package/dist/session/settings-resolver.d.cts.map +1 -0
  458. package/dist/session/settings-resolver.d.mts +177 -0
  459. package/dist/session/settings-resolver.d.mts.map +1 -0
  460. package/dist/session/settings-resolver.mjs +771 -0
  461. package/dist/session/settings-resolver.mjs.map +1 -0
  462. package/dist/session/settings-schema-store.cjs +0 -0
  463. package/dist/session/settings-schema-store.d.cts +72 -0
  464. package/dist/session/settings-schema-store.d.cts.map +1 -0
  465. package/dist/session/settings-schema-store.d.mts +72 -0
  466. package/dist/session/settings-schema-store.d.mts.map +1 -0
  467. package/dist/session/settings-schema-store.mjs +0 -0
  468. package/dist/session/settings-schema-store.mjs.map +1 -0
  469. package/dist/system-mounts/index.cjs +14 -0
  470. package/dist/system-mounts/index.d.cts +6 -0
  471. package/dist/system-mounts/index.d.mts +6 -0
  472. package/dist/system-mounts/index.mjs +6 -0
  473. package/dist/system-mounts/install.cjs +101 -0
  474. package/dist/system-mounts/install.d.cts +36 -0
  475. package/dist/system-mounts/install.d.cts.map +1 -0
  476. package/dist/system-mounts/install.d.mts +37 -0
  477. package/dist/system-mounts/install.d.mts.map +1 -0
  478. package/dist/system-mounts/install.mjs +102 -0
  479. package/dist/system-mounts/install.mjs.map +1 -0
  480. package/dist/system-mounts/installers.cjs +247 -0
  481. package/dist/system-mounts/installers.d.cts +13 -0
  482. package/dist/system-mounts/installers.d.cts.map +1 -0
  483. package/dist/system-mounts/installers.d.mts +14 -0
  484. package/dist/system-mounts/installers.d.mts.map +1 -0
  485. package/dist/system-mounts/installers.mjs +244 -0
  486. package/dist/system-mounts/installers.mjs.map +1 -0
  487. package/dist/system-mounts/lists.cjs +122 -0
  488. package/dist/system-mounts/lists.d.cts +34 -0
  489. package/dist/system-mounts/lists.d.cts.map +1 -0
  490. package/dist/system-mounts/lists.d.mts +34 -0
  491. package/dist/system-mounts/lists.d.mts.map +1 -0
  492. package/dist/system-mounts/lists.mjs +122 -0
  493. package/dist/system-mounts/lists.mjs.map +1 -0
  494. package/dist/system-mounts/types.d.cts +124 -0
  495. package/dist/system-mounts/types.d.cts.map +1 -0
  496. package/dist/system-mounts/types.d.mts +125 -0
  497. package/dist/system-mounts/types.d.mts.map +1 -0
  498. package/dist/system-mounts/validate.cjs +56 -0
  499. package/dist/system-mounts/validate.d.cts +34 -0
  500. package/dist/system-mounts/validate.d.cts.map +1 -0
  501. package/dist/system-mounts/validate.d.mts +34 -0
  502. package/dist/system-mounts/validate.d.mts.map +1 -0
  503. package/dist/system-mounts/validate.mjs +56 -0
  504. package/dist/system-mounts/validate.mjs.map +1 -0
  505. package/dist/terminal-llm.cjs +90 -0
  506. package/dist/terminal-llm.d.cts +50 -0
  507. package/dist/terminal-llm.d.cts.map +1 -0
  508. package/dist/terminal-llm.d.mts +50 -0
  509. package/dist/terminal-llm.d.mts.map +1 -0
  510. package/dist/terminal-llm.mjs +90 -0
  511. package/dist/terminal-llm.mjs.map +1 -0
  512. package/dist/terminal-repl.cjs +371 -0
  513. package/dist/terminal-repl.d.cts +69 -0
  514. package/dist/terminal-repl.d.cts.map +1 -0
  515. package/dist/terminal-repl.d.mts +69 -0
  516. package/dist/terminal-repl.d.mts.map +1 -0
  517. package/dist/terminal-repl.mjs +370 -0
  518. package/dist/terminal-repl.mjs.map +1 -0
  519. package/dist/transport/idle-timer.cjs +136 -0
  520. package/dist/transport/idle-timer.d.cts +92 -0
  521. package/dist/transport/idle-timer.d.cts.map +1 -0
  522. package/dist/transport/idle-timer.d.mts +92 -0
  523. package/dist/transport/idle-timer.d.mts.map +1 -0
  524. package/dist/transport/idle-timer.mjs +132 -0
  525. package/dist/transport/idle-timer.mjs.map +1 -0
  526. package/dist/web-component-dsl.cjs +153 -0
  527. package/dist/web-component-dsl.d.cts +27 -0
  528. package/dist/web-component-dsl.d.cts.map +1 -0
  529. package/dist/web-component-dsl.d.mts +27 -0
  530. package/dist/web-component-dsl.d.mts.map +1 -0
  531. package/dist/web-component-dsl.mjs +152 -0
  532. package/dist/web-component-dsl.mjs.map +1 -0
  533. package/package.json +81 -0
@@ -0,0 +1,279 @@
1
+ const require_dsl_shared = require('../dsl-shared.cjs');
2
+ const require_dsl_error = require('./dsl-error.cjs');
3
+
4
+ //#region src/scaffold/shell-dsl.ts
5
+ const STRING = "\"((?:[^\"\\\\]|\\\\.)*)\"";
6
+ function compileShellDsl(source) {
7
+ const declaration = require_dsl_shared.parseDeclaration(source, {
8
+ kind: "shell",
9
+ allowQuotedId: true,
10
+ expected: "Expected shell \"Title\" {",
11
+ fieldKeywords: [
12
+ "subtitle",
13
+ "logo",
14
+ "action",
15
+ "footer",
16
+ "link",
17
+ "group",
18
+ "item"
19
+ ],
20
+ fieldContinuationPairs: {
21
+ "->": [
22
+ "footer",
23
+ "group",
24
+ "item",
25
+ "link"
26
+ ],
27
+ badge: [
28
+ "footer",
29
+ "group",
30
+ "item",
31
+ "link"
32
+ ],
33
+ header: ["footer"],
34
+ module: [
35
+ "footer",
36
+ "group",
37
+ "item",
38
+ "link"
39
+ ],
40
+ placement: ["footer", "header"],
41
+ route: [
42
+ "footer",
43
+ "group",
44
+ "item",
45
+ "link"
46
+ ],
47
+ surface: [
48
+ "footer",
49
+ "group",
50
+ "item",
51
+ "link"
52
+ ],
53
+ url: [
54
+ "footer",
55
+ "group",
56
+ "item",
57
+ "link"
58
+ ]
59
+ },
60
+ nestedFieldKeywords: ["group", "item"],
61
+ error: parseSharedError
62
+ });
63
+ const groups = [];
64
+ const shell = {
65
+ header: {
66
+ title: declaration.id,
67
+ actions: []
68
+ },
69
+ menu: { groups }
70
+ };
71
+ let actionOrder = 1;
72
+ let linkOrder = 1;
73
+ for (const field of declaration.fields) {
74
+ if (field.name.value === "subtitle") {
75
+ shell.header ??= {};
76
+ shell.header.subtitle = parseSingleStringField(field, "Expected subtitle \"<text>\"");
77
+ continue;
78
+ }
79
+ if (field.name.value === "logo") {
80
+ shell.header ??= {};
81
+ shell.header.logo = parseSingleStringField(field, "Expected logo \"<text>\"");
82
+ continue;
83
+ }
84
+ if (field.name.value === "action") {
85
+ const parsed = parseOptionalIdTitleArrowField(field, "Expected action [id] \"Title\" -> <target>");
86
+ shell.header ??= {};
87
+ shell.header.actions ??= [];
88
+ shell.header.actions.push({
89
+ id: parsed.id ?? slugify(parsed.title),
90
+ title: parsed.title,
91
+ target: parseTarget(parsed.targetAndOptions, field.name.line),
92
+ order: actionOrder++
93
+ });
94
+ continue;
95
+ }
96
+ if (field.name.value === "footer") {
97
+ shell.footer ??= {};
98
+ shell.footer.text = parseSingleStringField(field, "Expected footer \"<text>\"");
99
+ continue;
100
+ }
101
+ if (field.name.value === "link") {
102
+ const parsed = parseOptionalIdTitleArrowField(field, "Expected link [id] \"Title\" -> <target>");
103
+ shell.footer ??= {};
104
+ shell.footer.links ??= [];
105
+ shell.footer.links.push({
106
+ id: parsed.id ?? slugify(parsed.title),
107
+ title: parsed.title,
108
+ target: parseTarget(parsed.targetAndOptions, field.name.line),
109
+ order: linkOrder++
110
+ });
111
+ continue;
112
+ }
113
+ if (field.name.value === "group") {
114
+ groups.push(parseGroupField(field, groups.length + 1));
115
+ continue;
116
+ }
117
+ throw parseError(field.name.line, `Unsupported shell DSL line: ${field.name.value}`, field.name.column);
118
+ }
119
+ if (groups.length === 0) delete shell.menu;
120
+ if (shell.header?.actions?.length === 0) delete shell.header.actions;
121
+ if (shell.footer?.links?.length === 0) delete shell.footer.links;
122
+ return shell;
123
+ }
124
+ function formatShellDsl(source) {
125
+ const shell = compileShellDsl(source);
126
+ const lines = [`shell ${quote(shell.header?.title ?? "App")} {`];
127
+ if (shell.header?.subtitle) lines.push(` subtitle ${quote(shell.header.subtitle)}`);
128
+ if (shell.header?.logo) lines.push(` logo ${quote(shell.header.logo)}`);
129
+ for (const action of shell.header?.actions ?? []) lines.push(` action ${formatOptionalId(action.id, action.title)}${quote(action.title)} -> ${formatTarget(action.target)}`);
130
+ if (shell.footer?.text) lines.push(` footer ${quote(shell.footer.text)}`);
131
+ for (const link of shell.footer?.links ?? []) lines.push(` link ${formatOptionalId(link.id, link.title)}${quote(link.title)} -> ${formatTarget(link.target)}`);
132
+ const groups = shell.menu?.groups ?? [];
133
+ if (groups.length > 0) lines.push("");
134
+ groups.forEach((group, index) => {
135
+ if (index > 0) lines.push("");
136
+ lines.push(` group ${formatOptionalId(group.id, group.title)}${quote(group.title)} {`);
137
+ for (const item of group.items) lines.push(...formatMenuItem(item, 4));
138
+ lines.push(" }");
139
+ });
140
+ lines.push("}");
141
+ return `${lines.join("\n")}\n`;
142
+ }
143
+ function formatMenuItem(item, indent) {
144
+ const prefix = " ".repeat(indent);
145
+ if (item.children && item.children.length > 0) {
146
+ const lines = [`${prefix}item ${formatOptionalId(item.id, item.title)}${quote(item.title)} {`];
147
+ for (const child of item.children) lines.push(...formatMenuItem(child, indent + 2));
148
+ lines.push(`${prefix}}`);
149
+ return lines;
150
+ }
151
+ const options = [item.badge ? `badge ${formatBareOrQuoted(item.badge)}` : void 0, item.placement && item.placement.length > 0 ? `placement ${item.placement.join(" ")}` : void 0].filter(Boolean).join(" ");
152
+ const suffix = options ? ` ${options}` : "";
153
+ return [`${prefix}item ${formatOptionalId(item.id, item.title)}${quote(item.title)} -> ${formatTarget(item.target)}${suffix}`];
154
+ }
155
+ function parseGroupField(field, order) {
156
+ const parsed = parseOptionalIdTitleField(field, "Expected group [id] \"Title\" {");
157
+ return {
158
+ id: parsed.id ?? slugify(parsed.title),
159
+ title: parsed.title,
160
+ order,
161
+ items: parseMenuItems(field.children ?? [])
162
+ };
163
+ }
164
+ function parseMenuItems(fields) {
165
+ return fields.map((field, index) => parseMenuItemField(field, index + 1));
166
+ }
167
+ function parseMenuItemField(field, order) {
168
+ if (field.name.value !== "item") throw parseError(field.name.line, `Unsupported menu item DSL line: ${field.name.value}`, field.name.column);
169
+ if (field.children) {
170
+ const parsed$1 = parseOptionalIdTitleField(field, "Expected item [id] \"Title\" {");
171
+ return {
172
+ id: parsed$1.id ?? slugify(parsed$1.title),
173
+ title: parsed$1.title,
174
+ order,
175
+ children: parseMenuItems(field.children)
176
+ };
177
+ }
178
+ const parsed = parseOptionalIdTitleArrowField(field, "Expected item [id] \"Title\" -> <target>");
179
+ const placement = parsePlacement(parsed.targetAndOptions);
180
+ const badge = parseBadge(parsed.targetAndOptions);
181
+ return {
182
+ id: parsed.id ?? slugify(parsed.title),
183
+ title: parsed.title,
184
+ target: parseTarget(parsed.targetAndOptions, field.name.line),
185
+ ...placement ? { placement } : {},
186
+ ...badge ? { badge } : {},
187
+ order
188
+ };
189
+ }
190
+ function parseOptionalIdTitleArrowField(field, message) {
191
+ const parsed = parseOptionalIdTitleField(field, message);
192
+ const arrow = field.values[parsed.nextIndex];
193
+ if (arrow?.type !== "word" || arrow.value !== "->") throw parseError(arrow?.line ?? field.name.line, message, arrow?.column ?? field.name.column);
194
+ return {
195
+ id: parsed.id,
196
+ title: parsed.title,
197
+ targetAndOptions: joinDslValues(field.values.slice(parsed.nextIndex + 1))
198
+ };
199
+ }
200
+ function parseOptionalIdTitleField(field, message) {
201
+ const first = field.values[0];
202
+ const second = field.values[1];
203
+ if (first?.type === "string") return {
204
+ title: require_dsl_shared.parseDslStringToken(first, parseSharedError),
205
+ nextIndex: 1
206
+ };
207
+ if (first?.type === "word" && second?.type === "string") return {
208
+ id: first.value,
209
+ title: require_dsl_shared.parseDslStringToken(second, parseSharedError),
210
+ nextIndex: 2
211
+ };
212
+ throw parseError(first?.line ?? field.name.line, message, first?.column ?? field.name.column);
213
+ }
214
+ function parseSingleStringField(field, message) {
215
+ const value = field.values[0];
216
+ if (field.values.length !== 1 || value?.type !== "string") throw parseError(value?.line ?? field.name.line, message, value?.column ?? field.name.column);
217
+ return require_dsl_shared.parseDslStringToken(value, parseSharedError);
218
+ }
219
+ function joinDslValues(tokens) {
220
+ return tokens.map((token) => token.value).join(" ");
221
+ }
222
+ function parseSharedError(message, line, column = 1) {
223
+ return parseError(line, message, column);
224
+ }
225
+ function formatTarget(target) {
226
+ if (!target) return "route \"/\"";
227
+ if (target.kind === "module" || target.kind === "surface") return `${target.kind} ${target.ref ?? ""}`.trim();
228
+ if (target.kind === "route") return `route ${quote(target.ref ?? "/")}`;
229
+ if (target.kind === "url") return `url ${quote(target.href ?? target.ref ?? "")}`;
230
+ return `${target.kind} ${quote(target.ref ?? target.href ?? "")}`;
231
+ }
232
+ function formatOptionalId(id, title) {
233
+ return id && id !== slugify(title) ? `${id} ` : "";
234
+ }
235
+ function formatBareOrQuoted(value) {
236
+ return /^[A-Za-z0-9_-]+$/.test(value) ? value : quote(value);
237
+ }
238
+ function parseTarget(input, lineNumber) {
239
+ const target = input.match(/* @__PURE__ */ new RegExp(`^(module|surface)\\s+([A-Za-z0-9_-]+)|^(route|url)\\s+${STRING}`));
240
+ if (!target) throw parseError(lineNumber, `Expected target after ->, got: ${input}`);
241
+ if (target[1] && target[2]) return {
242
+ kind: target[1],
243
+ ref: target[2]
244
+ };
245
+ if (target[3] === "route" && target[4]) return {
246
+ kind: "route",
247
+ ref: unescapeString(target[4])
248
+ };
249
+ if (target[3] === "url" && target[4]) return {
250
+ kind: "url",
251
+ href: unescapeString(target[4])
252
+ };
253
+ throw parseError(lineNumber, `Invalid target: ${input}`);
254
+ }
255
+ function parsePlacement(input) {
256
+ const match = input.match(/\bplacement\s+([A-Za-z0-9_ -]+)$/);
257
+ if (!match?.[1]) return void 0;
258
+ return match[1].trim().split(/\s+/).filter(Boolean);
259
+ }
260
+ function parseBadge(input) {
261
+ const match = input.match(/* @__PURE__ */ new RegExp(`\\bbadge\\s+(?:${STRING}|([A-Za-z0-9_-]+))`));
262
+ return match?.[1] ? unescapeString(match[1]) : match?.[2];
263
+ }
264
+ function unescapeString(value) {
265
+ return value.replace(/\\"/g, "\"").replace(/\\\\/g, "\\");
266
+ }
267
+ function quote(value) {
268
+ return JSON.stringify(value);
269
+ }
270
+ function slugify(value) {
271
+ return value.trim().toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "") || "item";
272
+ }
273
+ function parseError(line, message, column = 1) {
274
+ return require_dsl_error.scaffoldDslParseError("shell", line, message, column);
275
+ }
276
+
277
+ //#endregion
278
+ exports.compileShellDsl = compileShellDsl;
279
+ exports.formatShellDsl = formatShellDsl;
@@ -0,0 +1,8 @@
1
+ import { ScaffoldShellDefinition } from "./types.cjs";
2
+
3
+ //#region src/scaffold/shell-dsl.d.ts
4
+ declare function compileShellDsl(source: string): ScaffoldShellDefinition;
5
+ declare function formatShellDsl(source: string): string;
6
+ //#endregion
7
+ export { compileShellDsl, formatShellDsl };
8
+ //# sourceMappingURL=shell-dsl.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell-dsl.d.cts","names":[],"sources":["../../src/scaffold/shell-dsl.ts"],"mappings":";;;iBAiBgB,eAAA,CAAgB,MAAA,WAAiB,uBAAA;AAAA,iBA4FjC,cAAA,CAAe,MAAA"}
@@ -0,0 +1,8 @@
1
+ import { ScaffoldShellDefinition } from "./types.mjs";
2
+
3
+ //#region src/scaffold/shell-dsl.d.ts
4
+ declare function compileShellDsl(source: string): ScaffoldShellDefinition;
5
+ declare function formatShellDsl(source: string): string;
6
+ //#endregion
7
+ export { compileShellDsl, formatShellDsl };
8
+ //# sourceMappingURL=shell-dsl.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell-dsl.d.mts","names":[],"sources":["../../src/scaffold/shell-dsl.ts"],"mappings":";;;iBAiBgB,eAAA,CAAgB,MAAA,WAAiB,uBAAA;AAAA,iBA4FjC,cAAA,CAAe,MAAA"}
@@ -0,0 +1,279 @@
1
+ import { parseDeclaration, parseDslStringToken } from "../dsl-shared.mjs";
2
+ import { scaffoldDslParseError } from "./dsl-error.mjs";
3
+
4
+ //#region src/scaffold/shell-dsl.ts
5
+ const STRING = "\"((?:[^\"\\\\]|\\\\.)*)\"";
6
+ function compileShellDsl(source) {
7
+ const declaration = parseDeclaration(source, {
8
+ kind: "shell",
9
+ allowQuotedId: true,
10
+ expected: "Expected shell \"Title\" {",
11
+ fieldKeywords: [
12
+ "subtitle",
13
+ "logo",
14
+ "action",
15
+ "footer",
16
+ "link",
17
+ "group",
18
+ "item"
19
+ ],
20
+ fieldContinuationPairs: {
21
+ "->": [
22
+ "footer",
23
+ "group",
24
+ "item",
25
+ "link"
26
+ ],
27
+ badge: [
28
+ "footer",
29
+ "group",
30
+ "item",
31
+ "link"
32
+ ],
33
+ header: ["footer"],
34
+ module: [
35
+ "footer",
36
+ "group",
37
+ "item",
38
+ "link"
39
+ ],
40
+ placement: ["footer", "header"],
41
+ route: [
42
+ "footer",
43
+ "group",
44
+ "item",
45
+ "link"
46
+ ],
47
+ surface: [
48
+ "footer",
49
+ "group",
50
+ "item",
51
+ "link"
52
+ ],
53
+ url: [
54
+ "footer",
55
+ "group",
56
+ "item",
57
+ "link"
58
+ ]
59
+ },
60
+ nestedFieldKeywords: ["group", "item"],
61
+ error: parseSharedError
62
+ });
63
+ const groups = [];
64
+ const shell = {
65
+ header: {
66
+ title: declaration.id,
67
+ actions: []
68
+ },
69
+ menu: { groups }
70
+ };
71
+ let actionOrder = 1;
72
+ let linkOrder = 1;
73
+ for (const field of declaration.fields) {
74
+ if (field.name.value === "subtitle") {
75
+ shell.header ??= {};
76
+ shell.header.subtitle = parseSingleStringField(field, "Expected subtitle \"<text>\"");
77
+ continue;
78
+ }
79
+ if (field.name.value === "logo") {
80
+ shell.header ??= {};
81
+ shell.header.logo = parseSingleStringField(field, "Expected logo \"<text>\"");
82
+ continue;
83
+ }
84
+ if (field.name.value === "action") {
85
+ const parsed = parseOptionalIdTitleArrowField(field, "Expected action [id] \"Title\" -> <target>");
86
+ shell.header ??= {};
87
+ shell.header.actions ??= [];
88
+ shell.header.actions.push({
89
+ id: parsed.id ?? slugify(parsed.title),
90
+ title: parsed.title,
91
+ target: parseTarget(parsed.targetAndOptions, field.name.line),
92
+ order: actionOrder++
93
+ });
94
+ continue;
95
+ }
96
+ if (field.name.value === "footer") {
97
+ shell.footer ??= {};
98
+ shell.footer.text = parseSingleStringField(field, "Expected footer \"<text>\"");
99
+ continue;
100
+ }
101
+ if (field.name.value === "link") {
102
+ const parsed = parseOptionalIdTitleArrowField(field, "Expected link [id] \"Title\" -> <target>");
103
+ shell.footer ??= {};
104
+ shell.footer.links ??= [];
105
+ shell.footer.links.push({
106
+ id: parsed.id ?? slugify(parsed.title),
107
+ title: parsed.title,
108
+ target: parseTarget(parsed.targetAndOptions, field.name.line),
109
+ order: linkOrder++
110
+ });
111
+ continue;
112
+ }
113
+ if (field.name.value === "group") {
114
+ groups.push(parseGroupField(field, groups.length + 1));
115
+ continue;
116
+ }
117
+ throw parseError(field.name.line, `Unsupported shell DSL line: ${field.name.value}`, field.name.column);
118
+ }
119
+ if (groups.length === 0) delete shell.menu;
120
+ if (shell.header?.actions?.length === 0) delete shell.header.actions;
121
+ if (shell.footer?.links?.length === 0) delete shell.footer.links;
122
+ return shell;
123
+ }
124
+ function formatShellDsl(source) {
125
+ const shell = compileShellDsl(source);
126
+ const lines = [`shell ${quote(shell.header?.title ?? "App")} {`];
127
+ if (shell.header?.subtitle) lines.push(` subtitle ${quote(shell.header.subtitle)}`);
128
+ if (shell.header?.logo) lines.push(` logo ${quote(shell.header.logo)}`);
129
+ for (const action of shell.header?.actions ?? []) lines.push(` action ${formatOptionalId(action.id, action.title)}${quote(action.title)} -> ${formatTarget(action.target)}`);
130
+ if (shell.footer?.text) lines.push(` footer ${quote(shell.footer.text)}`);
131
+ for (const link of shell.footer?.links ?? []) lines.push(` link ${formatOptionalId(link.id, link.title)}${quote(link.title)} -> ${formatTarget(link.target)}`);
132
+ const groups = shell.menu?.groups ?? [];
133
+ if (groups.length > 0) lines.push("");
134
+ groups.forEach((group, index) => {
135
+ if (index > 0) lines.push("");
136
+ lines.push(` group ${formatOptionalId(group.id, group.title)}${quote(group.title)} {`);
137
+ for (const item of group.items) lines.push(...formatMenuItem(item, 4));
138
+ lines.push(" }");
139
+ });
140
+ lines.push("}");
141
+ return `${lines.join("\n")}\n`;
142
+ }
143
+ function formatMenuItem(item, indent) {
144
+ const prefix = " ".repeat(indent);
145
+ if (item.children && item.children.length > 0) {
146
+ const lines = [`${prefix}item ${formatOptionalId(item.id, item.title)}${quote(item.title)} {`];
147
+ for (const child of item.children) lines.push(...formatMenuItem(child, indent + 2));
148
+ lines.push(`${prefix}}`);
149
+ return lines;
150
+ }
151
+ const options = [item.badge ? `badge ${formatBareOrQuoted(item.badge)}` : void 0, item.placement && item.placement.length > 0 ? `placement ${item.placement.join(" ")}` : void 0].filter(Boolean).join(" ");
152
+ const suffix = options ? ` ${options}` : "";
153
+ return [`${prefix}item ${formatOptionalId(item.id, item.title)}${quote(item.title)} -> ${formatTarget(item.target)}${suffix}`];
154
+ }
155
+ function parseGroupField(field, order) {
156
+ const parsed = parseOptionalIdTitleField(field, "Expected group [id] \"Title\" {");
157
+ return {
158
+ id: parsed.id ?? slugify(parsed.title),
159
+ title: parsed.title,
160
+ order,
161
+ items: parseMenuItems(field.children ?? [])
162
+ };
163
+ }
164
+ function parseMenuItems(fields) {
165
+ return fields.map((field, index) => parseMenuItemField(field, index + 1));
166
+ }
167
+ function parseMenuItemField(field, order) {
168
+ if (field.name.value !== "item") throw parseError(field.name.line, `Unsupported menu item DSL line: ${field.name.value}`, field.name.column);
169
+ if (field.children) {
170
+ const parsed$1 = parseOptionalIdTitleField(field, "Expected item [id] \"Title\" {");
171
+ return {
172
+ id: parsed$1.id ?? slugify(parsed$1.title),
173
+ title: parsed$1.title,
174
+ order,
175
+ children: parseMenuItems(field.children)
176
+ };
177
+ }
178
+ const parsed = parseOptionalIdTitleArrowField(field, "Expected item [id] \"Title\" -> <target>");
179
+ const placement = parsePlacement(parsed.targetAndOptions);
180
+ const badge = parseBadge(parsed.targetAndOptions);
181
+ return {
182
+ id: parsed.id ?? slugify(parsed.title),
183
+ title: parsed.title,
184
+ target: parseTarget(parsed.targetAndOptions, field.name.line),
185
+ ...placement ? { placement } : {},
186
+ ...badge ? { badge } : {},
187
+ order
188
+ };
189
+ }
190
+ function parseOptionalIdTitleArrowField(field, message) {
191
+ const parsed = parseOptionalIdTitleField(field, message);
192
+ const arrow = field.values[parsed.nextIndex];
193
+ if (arrow?.type !== "word" || arrow.value !== "->") throw parseError(arrow?.line ?? field.name.line, message, arrow?.column ?? field.name.column);
194
+ return {
195
+ id: parsed.id,
196
+ title: parsed.title,
197
+ targetAndOptions: joinDslValues(field.values.slice(parsed.nextIndex + 1))
198
+ };
199
+ }
200
+ function parseOptionalIdTitleField(field, message) {
201
+ const first = field.values[0];
202
+ const second = field.values[1];
203
+ if (first?.type === "string") return {
204
+ title: parseDslStringToken(first, parseSharedError),
205
+ nextIndex: 1
206
+ };
207
+ if (first?.type === "word" && second?.type === "string") return {
208
+ id: first.value,
209
+ title: parseDslStringToken(second, parseSharedError),
210
+ nextIndex: 2
211
+ };
212
+ throw parseError(first?.line ?? field.name.line, message, first?.column ?? field.name.column);
213
+ }
214
+ function parseSingleStringField(field, message) {
215
+ const value = field.values[0];
216
+ if (field.values.length !== 1 || value?.type !== "string") throw parseError(value?.line ?? field.name.line, message, value?.column ?? field.name.column);
217
+ return parseDslStringToken(value, parseSharedError);
218
+ }
219
+ function joinDslValues(tokens) {
220
+ return tokens.map((token) => token.value).join(" ");
221
+ }
222
+ function parseSharedError(message, line, column = 1) {
223
+ return parseError(line, message, column);
224
+ }
225
+ function formatTarget(target) {
226
+ if (!target) return "route \"/\"";
227
+ if (target.kind === "module" || target.kind === "surface") return `${target.kind} ${target.ref ?? ""}`.trim();
228
+ if (target.kind === "route") return `route ${quote(target.ref ?? "/")}`;
229
+ if (target.kind === "url") return `url ${quote(target.href ?? target.ref ?? "")}`;
230
+ return `${target.kind} ${quote(target.ref ?? target.href ?? "")}`;
231
+ }
232
+ function formatOptionalId(id, title) {
233
+ return id && id !== slugify(title) ? `${id} ` : "";
234
+ }
235
+ function formatBareOrQuoted(value) {
236
+ return /^[A-Za-z0-9_-]+$/.test(value) ? value : quote(value);
237
+ }
238
+ function parseTarget(input, lineNumber) {
239
+ const target = input.match(/* @__PURE__ */ new RegExp(`^(module|surface)\\s+([A-Za-z0-9_-]+)|^(route|url)\\s+${STRING}`));
240
+ if (!target) throw parseError(lineNumber, `Expected target after ->, got: ${input}`);
241
+ if (target[1] && target[2]) return {
242
+ kind: target[1],
243
+ ref: target[2]
244
+ };
245
+ if (target[3] === "route" && target[4]) return {
246
+ kind: "route",
247
+ ref: unescapeString(target[4])
248
+ };
249
+ if (target[3] === "url" && target[4]) return {
250
+ kind: "url",
251
+ href: unescapeString(target[4])
252
+ };
253
+ throw parseError(lineNumber, `Invalid target: ${input}`);
254
+ }
255
+ function parsePlacement(input) {
256
+ const match = input.match(/\bplacement\s+([A-Za-z0-9_ -]+)$/);
257
+ if (!match?.[1]) return void 0;
258
+ return match[1].trim().split(/\s+/).filter(Boolean);
259
+ }
260
+ function parseBadge(input) {
261
+ const match = input.match(/* @__PURE__ */ new RegExp(`\\bbadge\\s+(?:${STRING}|([A-Za-z0-9_-]+))`));
262
+ return match?.[1] ? unescapeString(match[1]) : match?.[2];
263
+ }
264
+ function unescapeString(value) {
265
+ return value.replace(/\\"/g, "\"").replace(/\\\\/g, "\\");
266
+ }
267
+ function quote(value) {
268
+ return JSON.stringify(value);
269
+ }
270
+ function slugify(value) {
271
+ return value.trim().toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "") || "item";
272
+ }
273
+ function parseError(line, message, column = 1) {
274
+ return scaffoldDslParseError("shell", line, message, column);
275
+ }
276
+
277
+ //#endregion
278
+ export { compileShellDsl, formatShellDsl };
279
+ //# sourceMappingURL=shell-dsl.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell-dsl.mjs","names":["parsed"],"sources":["../../src/scaffold/shell-dsl.ts"],"sourcesContent":["import {\n type DslField,\n type DslToken,\n parseDeclaration,\n parseDslStringToken,\n} from \"../dsl-shared.js\";\nimport { scaffoldDslParseError } from \"./dsl-error.js\";\nimport type {\n ScaffoldMenuDefinition,\n ScaffoldMenuItem,\n ScaffoldShellAction,\n ScaffoldShellDefinition,\n ScaffoldTargetRef,\n} from \"./types.js\";\n\nconst STRING = '\"((?:[^\"\\\\\\\\]|\\\\\\\\.)*)\"';\n\nexport function compileShellDsl(source: string): ScaffoldShellDefinition {\n const declaration = parseDeclaration(source, {\n kind: \"shell\",\n allowQuotedId: true,\n expected: 'Expected shell \"Title\" {',\n fieldKeywords: [\"subtitle\", \"logo\", \"action\", \"footer\", \"link\", \"group\", \"item\"],\n fieldContinuationPairs: {\n \"->\": [\"footer\", \"group\", \"item\", \"link\"],\n badge: [\"footer\", \"group\", \"item\", \"link\"],\n header: [\"footer\"],\n module: [\"footer\", \"group\", \"item\", \"link\"],\n placement: [\"footer\", \"header\"],\n route: [\"footer\", \"group\", \"item\", \"link\"],\n surface: [\"footer\", \"group\", \"item\", \"link\"],\n url: [\"footer\", \"group\", \"item\", \"link\"],\n },\n nestedFieldKeywords: [\"group\", \"item\"],\n error: parseSharedError,\n });\n\n const groups: NonNullable<ScaffoldMenuDefinition[\"groups\"]> = [];\n const shell: ScaffoldShellDefinition = {\n header: { title: declaration.id, actions: [] },\n menu: { groups },\n };\n\n let actionOrder = 1;\n let linkOrder = 1;\n for (const field of declaration.fields) {\n if (field.name.value === \"subtitle\") {\n shell.header ??= {};\n shell.header.subtitle = parseSingleStringField(field, 'Expected subtitle \"<text>\"');\n continue;\n }\n if (field.name.value === \"logo\") {\n shell.header ??= {};\n shell.header.logo = parseSingleStringField(field, 'Expected logo \"<text>\"');\n continue;\n }\n if (field.name.value === \"action\") {\n const parsed = parseOptionalIdTitleArrowField(\n field,\n 'Expected action [id] \"Title\" -> <target>',\n );\n shell.header ??= {};\n shell.header.actions ??= [];\n shell.header.actions.push({\n id: parsed.id ?? slugify(parsed.title),\n title: parsed.title,\n target: parseTarget(parsed.targetAndOptions, field.name.line),\n order: actionOrder++,\n } satisfies ScaffoldShellAction);\n continue;\n }\n if (field.name.value === \"footer\") {\n shell.footer ??= {};\n shell.footer.text = parseSingleStringField(field, 'Expected footer \"<text>\"');\n continue;\n }\n if (field.name.value === \"link\") {\n const parsed = parseOptionalIdTitleArrowField(\n field,\n 'Expected link [id] \"Title\" -> <target>',\n );\n shell.footer ??= {};\n shell.footer.links ??= [];\n shell.footer.links.push({\n id: parsed.id ?? slugify(parsed.title),\n title: parsed.title,\n target: parseTarget(parsed.targetAndOptions, field.name.line),\n order: linkOrder++,\n });\n continue;\n }\n if (field.name.value === \"group\") {\n groups.push(parseGroupField(field, groups.length + 1));\n continue;\n }\n\n throw parseError(\n field.name.line,\n `Unsupported shell DSL line: ${field.name.value}`,\n field.name.column,\n );\n }\n\n if (groups.length === 0) delete shell.menu;\n if (shell.header?.actions?.length === 0) delete shell.header.actions;\n if (shell.footer?.links?.length === 0) delete shell.footer.links;\n return shell;\n}\n\nexport function formatShellDsl(source: string): string {\n const shell = compileShellDsl(source);\n const title = shell.header?.title ?? \"App\";\n const lines = [`shell ${quote(title)} {`];\n if (shell.header?.subtitle) lines.push(` subtitle ${quote(shell.header.subtitle)}`);\n if (shell.header?.logo) lines.push(` logo ${quote(shell.header.logo)}`);\n for (const action of shell.header?.actions ?? []) {\n lines.push(\n ` action ${formatOptionalId(action.id, action.title)}${quote(action.title)} -> ${formatTarget(\n action.target,\n )}`,\n );\n }\n if (shell.footer?.text) lines.push(` footer ${quote(shell.footer.text)}`);\n for (const link of shell.footer?.links ?? []) {\n lines.push(\n ` link ${formatOptionalId(link.id, link.title)}${quote(link.title)} -> ${formatTarget(\n link.target,\n )}`,\n );\n }\n\n const groups = shell.menu?.groups ?? [];\n if (groups.length > 0) lines.push(\"\");\n groups.forEach((group, index) => {\n if (index > 0) lines.push(\"\");\n lines.push(` group ${formatOptionalId(group.id, group.title)}${quote(group.title)} {`);\n for (const item of group.items) {\n lines.push(...formatMenuItem(item, 4));\n }\n lines.push(\" }\");\n });\n\n lines.push(\"}\");\n return `${lines.join(\"\\n\")}\\n`;\n}\n\nfunction formatMenuItem(item: ScaffoldMenuItem, indent: number): string[] {\n const prefix = \" \".repeat(indent);\n if (item.children && item.children.length > 0) {\n const lines = [`${prefix}item ${formatOptionalId(item.id, item.title)}${quote(item.title)} {`];\n for (const child of item.children) {\n lines.push(...formatMenuItem(child, indent + 2));\n }\n lines.push(`${prefix}}`);\n return lines;\n }\n\n const options = [\n item.badge ? `badge ${formatBareOrQuoted(item.badge)}` : undefined,\n item.placement && item.placement.length > 0\n ? `placement ${item.placement.join(\" \")}`\n : undefined,\n ]\n .filter(Boolean)\n .join(\" \");\n const suffix = options ? ` ${options}` : \"\";\n return [\n `${prefix}item ${formatOptionalId(item.id, item.title)}${quote(item.title)} -> ${formatTarget(\n item.target,\n )}${suffix}`,\n ];\n}\n\nfunction parseGroupField(\n field: DslField,\n order: number,\n): NonNullable<ScaffoldMenuDefinition[\"groups\"]>[number] {\n const parsed = parseOptionalIdTitleField(field, 'Expected group [id] \"Title\" {');\n return {\n id: parsed.id ?? slugify(parsed.title),\n title: parsed.title,\n order,\n items: parseMenuItems(field.children ?? []),\n };\n}\n\nfunction parseMenuItems(fields: DslField[]): ScaffoldMenuItem[] {\n return fields.map((field, index) => parseMenuItemField(field, index + 1));\n}\n\nfunction parseMenuItemField(field: DslField, order: number): ScaffoldMenuItem {\n if (field.name.value !== \"item\") {\n throw parseError(\n field.name.line,\n `Unsupported menu item DSL line: ${field.name.value}`,\n field.name.column,\n );\n }\n\n if (field.children) {\n const parsed = parseOptionalIdTitleField(field, 'Expected item [id] \"Title\" {');\n return {\n id: parsed.id ?? slugify(parsed.title),\n title: parsed.title,\n order,\n children: parseMenuItems(field.children),\n };\n }\n\n const parsed = parseOptionalIdTitleArrowField(field, 'Expected item [id] \"Title\" -> <target>');\n const placement = parsePlacement(parsed.targetAndOptions);\n const badge = parseBadge(parsed.targetAndOptions);\n return {\n id: parsed.id ?? slugify(parsed.title),\n title: parsed.title,\n target: parseTarget(parsed.targetAndOptions, field.name.line),\n ...(placement ? { placement } : {}),\n ...(badge ? { badge } : {}),\n order,\n };\n}\n\nfunction parseOptionalIdTitleArrowField(\n field: DslField,\n message: string,\n): { id?: string; targetAndOptions: string; title: string } {\n const parsed = parseOptionalIdTitleField(field, message);\n const arrow = field.values[parsed.nextIndex];\n if (arrow?.type !== \"word\" || arrow.value !== \"->\") {\n throw parseError(arrow?.line ?? field.name.line, message, arrow?.column ?? field.name.column);\n }\n return {\n id: parsed.id,\n title: parsed.title,\n targetAndOptions: joinDslValues(field.values.slice(parsed.nextIndex + 1)),\n };\n}\n\nfunction parseOptionalIdTitleField(\n field: DslField,\n message: string,\n): { id?: string; nextIndex: number; title: string } {\n const first = field.values[0];\n const second = field.values[1];\n if (first?.type === \"string\") {\n return { title: parseDslStringToken(first, parseSharedError), nextIndex: 1 };\n }\n if (first?.type === \"word\" && second?.type === \"string\") {\n return {\n id: first.value,\n title: parseDslStringToken(second, parseSharedError),\n nextIndex: 2,\n };\n }\n throw parseError(first?.line ?? field.name.line, message, first?.column ?? field.name.column);\n}\n\nfunction parseSingleStringField(field: DslField, message: string): string {\n const value = field.values[0];\n if (field.values.length !== 1 || value?.type !== \"string\") {\n throw parseError(value?.line ?? field.name.line, message, value?.column ?? field.name.column);\n }\n return parseDslStringToken(value, parseSharedError);\n}\n\nfunction joinDslValues(tokens: DslToken[]): string {\n return tokens.map((token) => token.value).join(\" \");\n}\n\nfunction parseSharedError(message: string, line: number, column = 1): Error {\n return parseError(line, message, column);\n}\n\nfunction formatTarget(target: ScaffoldTargetRef | undefined): string {\n if (!target) return 'route \"/\"';\n if (target.kind === \"module\" || target.kind === \"surface\") {\n return `${target.kind} ${target.ref ?? \"\"}`.trim();\n }\n if (target.kind === \"route\") return `route ${quote(target.ref ?? \"/\")}`;\n if (target.kind === \"url\") return `url ${quote(target.href ?? target.ref ?? \"\")}`;\n return `${target.kind} ${quote(target.ref ?? target.href ?? \"\")}`;\n}\n\nfunction formatOptionalId(id: string, title: string): string {\n return id && id !== slugify(title) ? `${id} ` : \"\";\n}\n\nfunction formatBareOrQuoted(value: string): string {\n return /^[A-Za-z0-9_-]+$/.test(value) ? value : quote(value);\n}\n\nfunction parseTarget(input: string, lineNumber: number): ScaffoldTargetRef {\n const target = input.match(\n new RegExp(`^(module|surface)\\\\s+([A-Za-z0-9_-]+)|^(route|url)\\\\s+${STRING}`),\n );\n if (!target) throw parseError(lineNumber, `Expected target after ->, got: ${input}`);\n if (target[1] && target[2]) return { kind: target[1] as \"module\" | \"surface\", ref: target[2] };\n if (target[3] === \"route\" && target[4]) {\n return { kind: \"route\", ref: unescapeString(target[4]) };\n }\n if (target[3] === \"url\" && target[4]) {\n return { kind: \"url\", href: unescapeString(target[4]) };\n }\n throw parseError(lineNumber, `Invalid target: ${input}`);\n}\n\nfunction parsePlacement(input: string): ScaffoldMenuItem[\"placement\"] | undefined {\n const match = input.match(/\\bplacement\\s+([A-Za-z0-9_ -]+)$/);\n if (!match?.[1]) return undefined;\n return match[1].trim().split(/\\s+/).filter(Boolean) as ScaffoldMenuItem[\"placement\"];\n}\n\nfunction parseBadge(input: string): string | undefined {\n const match = input.match(new RegExp(`\\\\bbadge\\\\s+(?:${STRING}|([A-Za-z0-9_-]+))`));\n return match?.[1] ? unescapeString(match[1]) : match?.[2];\n}\n\nfunction unescapeString(value: string): string {\n return value.replace(/\\\\\"/g, '\"').replace(/\\\\\\\\/g, \"\\\\\");\n}\n\nfunction quote(value: string): string {\n return JSON.stringify(value);\n}\n\nfunction slugify(value: string): string {\n return (\n value\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\") || \"item\"\n );\n}\n\nfunction parseError(line: number, message: string, column = 1): Error {\n return scaffoldDslParseError(\"shell\", line, message, column);\n}\n"],"mappings":"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"}