@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,195 @@
1
+ import { compileManifestDsl } from "./manifest-dsl.mjs";
2
+ import { compileModuleDsl } from "./module-dsl.mjs";
3
+ import { compileShellDsl } from "./shell-dsl.mjs";
4
+ import { compileSurfaceDsl } from "./surface-dsl.mjs";
5
+ import { compileWorkspaceDsl } from "./workspace-dsl.mjs";
6
+ import { joinURL } from "ufo";
7
+
8
+ //#region src/scaffold/afs.ts
9
+ const DEFAULT_SCAFFOLD_ROOT = "/.scaffold";
10
+ async function loadScaffoldDefinition(reader, options = {}) {
11
+ const root = options.root ?? DEFAULT_SCAFFOLD_ROOT;
12
+ const manifest = await loadManifestDslDefinition(reader, root) ?? await readOptionalJSON(reader, joinURL(root, "manifest.json")) ?? { title: "App" };
13
+ const shellDsl = await loadShellDslDefinition(reader, root);
14
+ const shell = {
15
+ menu: shellDsl?.menu ?? normalizeMenu(await readOptionalJSON(reader, joinURL(root, "shell/menu.json"))),
16
+ header: shellDsl?.header ?? await readOptionalJSON(reader, joinURL(root, "shell/header.json")),
17
+ footer: shellDsl?.footer ?? await readOptionalJSON(reader, joinURL(root, "shell/footer.json")),
18
+ workspace: await loadWorkspaceDefinition(reader, root)
19
+ };
20
+ const modules = await loadModuleRecords(reader, joinURL(root, "modules"));
21
+ const surfaces = await loadSurfaceRecords(reader, joinURL(root, "surfaces"));
22
+ return {
23
+ manifest,
24
+ shell: normalizeShell(shell),
25
+ modules: sortByOrderThenTitle(modules),
26
+ surfaces: sortByOrderThenTitle(surfaces)
27
+ };
28
+ }
29
+ async function loadManifestDslDefinition(reader, root) {
30
+ const dsl = await readOptionalText(reader, joinURL(root, "manifest.dsl"));
31
+ if (dsl !== void 0) return compileManifestDsl(dsl);
32
+ }
33
+ async function loadShellDslDefinition(reader, root) {
34
+ const dsl = await readOptionalText(reader, joinURL(root, "shell/shell.dsl"));
35
+ if (dsl !== void 0) return compileShellDsl(dsl);
36
+ }
37
+ async function loadWorkspaceDefinition(reader, root) {
38
+ const dsl = await readOptionalText(reader, joinURL(root, "shell/workspace.dsl"));
39
+ if (dsl !== void 0) return compileWorkspaceDsl(dsl);
40
+ return await readOptionalJSON(reader, joinURL(root, "shell/workspace.json"));
41
+ }
42
+ async function loadModuleRecords(reader, root) {
43
+ if (!await hasDirectory(reader, root)) return [];
44
+ const entries = await listVisible(reader, root);
45
+ const records = [];
46
+ const dslIds = /* @__PURE__ */ new Set();
47
+ for (const entry of entries) {
48
+ const path = entryPath(root, entry);
49
+ if (isDirectoryEntry(entry)) {
50
+ const dsl = await readOptionalText(reader, joinURL(path, "module.dsl"));
51
+ if (dsl !== void 0) {
52
+ const record = compileModuleDsl(dsl);
53
+ records.push(record);
54
+ dslIds.add(record.id);
55
+ continue;
56
+ }
57
+ const nested = await readOptionalJSON(reader, joinURL(path, "module.json"));
58
+ if (nested) records.push(nested);
59
+ continue;
60
+ }
61
+ if (entry.id.endsWith(".module.dsl")) {
62
+ const record = compileModuleDsl(await readOptionalText(reader, path) ?? "");
63
+ records.push(record);
64
+ dslIds.add(record.id);
65
+ }
66
+ }
67
+ for (const entry of entries) {
68
+ if (isDirectoryEntry(entry) || !entry.id.endsWith(".module.json")) continue;
69
+ const parsed = await readJSON(reader, entryPath(root, entry));
70
+ if (dslIds.has(parsed.id)) continue;
71
+ records.push(parsed);
72
+ }
73
+ return records;
74
+ }
75
+ async function loadSurfaceRecords(reader, root) {
76
+ if (!await hasDirectory(reader, root)) return [];
77
+ const entries = await listVisible(reader, root);
78
+ const records = [];
79
+ const dslIds = /* @__PURE__ */ new Set();
80
+ for (const entry of entries) {
81
+ const path = entryPath(root, entry);
82
+ if (isDirectoryEntry(entry)) {
83
+ const dsl = await readOptionalText(reader, joinURL(path, "surface.dsl"));
84
+ if (dsl !== void 0) {
85
+ const record = compileSurfaceDsl(dsl);
86
+ records.push(record);
87
+ dslIds.add(record.id);
88
+ continue;
89
+ }
90
+ const nested = await readOptionalJSON(reader, joinURL(path, "surface.json"));
91
+ if (nested) records.push(nested);
92
+ continue;
93
+ }
94
+ if (entry.id.endsWith(".surface.dsl")) {
95
+ const record = compileSurfaceDsl(await readOptionalText(reader, path) ?? "");
96
+ records.push(record);
97
+ dslIds.add(record.id);
98
+ }
99
+ }
100
+ for (const entry of entries) {
101
+ if (isDirectoryEntry(entry) || !entry.id.endsWith(".surface.json")) continue;
102
+ const parsed = await readJSON(reader, entryPath(root, entry));
103
+ if (dslIds.has(parsed.id)) continue;
104
+ records.push(parsed);
105
+ }
106
+ return records;
107
+ }
108
+ function normalizeShell(shell) {
109
+ return {
110
+ ...shell,
111
+ menu: normalizeMenu(shell.menu),
112
+ header: shell.header ? {
113
+ ...shell.header,
114
+ actions: sortByOrderThenTitle(shell.header.actions ?? [])
115
+ } : void 0,
116
+ footer: shell.footer ? {
117
+ ...shell.footer,
118
+ links: sortByOrderThenTitle(shell.footer.links ?? [])
119
+ } : void 0,
120
+ workspace: shell.workspace ? normalizeWorkspace(shell.workspace) : void 0
121
+ };
122
+ }
123
+ function normalizeWorkspace(workspace) {
124
+ return {
125
+ ...workspace,
126
+ sections: sortByOrderThenTitle(workspace.sections ?? []).map((section) => ({
127
+ ...section,
128
+ roots: sortByOrderThenTitle(section.roots ?? [])
129
+ }))
130
+ };
131
+ }
132
+ function normalizeMenu(menu) {
133
+ if (!menu) return void 0;
134
+ return { groups: sortByOrderThenTitle(Array.isArray(menu) ? menu : menu.groups).map((group) => ({
135
+ ...group,
136
+ items: normalizeMenuItems(group.items ?? [])
137
+ })) };
138
+ }
139
+ function normalizeMenuItems(items) {
140
+ return sortByOrderThenTitle(items).map((item) => ({
141
+ ...item,
142
+ children: item.children ? normalizeMenuItems(item.children) : void 0
143
+ }));
144
+ }
145
+ function sortByOrderThenTitle(items) {
146
+ return [...items].sort((left, right) => normalizeOrder(left.order) - normalizeOrder(right.order) || (left.title ?? left.id ?? "").localeCompare(right.title ?? right.id ?? ""));
147
+ }
148
+ function normalizeOrder(order) {
149
+ return order ?? Number.MAX_SAFE_INTEGER;
150
+ }
151
+ async function hasDirectory(reader, path) {
152
+ try {
153
+ const result = await reader.list(path);
154
+ return Array.isArray(result.data);
155
+ } catch {
156
+ return false;
157
+ }
158
+ }
159
+ async function listVisible(reader, path) {
160
+ return ((await reader.list(path)).data ?? []).filter((entry) => entry?.id && !entry.id.startsWith("."));
161
+ }
162
+ async function readOptionalJSON(reader, path) {
163
+ try {
164
+ return await readJSON(reader, path);
165
+ } catch {
166
+ return;
167
+ }
168
+ }
169
+ async function readOptionalText(reader, path) {
170
+ try {
171
+ const data = (await reader.read(path)).data;
172
+ const content = data && typeof data === "object" && "content" in data ? data.content : data;
173
+ return typeof content === "string" ? content : void 0;
174
+ } catch {
175
+ return;
176
+ }
177
+ }
178
+ async function readJSON(reader, path) {
179
+ const data = (await reader.read(path)).data;
180
+ const content = data && typeof data === "object" && "content" in data ? data.content : data;
181
+ if (typeof content === "string") return JSON.parse(content);
182
+ if (content && typeof content === "object") return content;
183
+ throw new Error(`Expected JSON object in "${path}"`);
184
+ }
185
+ function isDirectoryEntry(entry) {
186
+ const meta = entry.meta ?? {};
187
+ return meta.kind === "fs:directory" || meta.kind === "directory" || Array.isArray(meta.kinds) && meta.kinds.includes("fs:directory") || typeof meta.childrenCount === "number";
188
+ }
189
+ function entryPath(parentPath, entry) {
190
+ return entry.path || joinURL(parentPath, entry.id);
191
+ }
192
+
193
+ //#endregion
194
+ export { DEFAULT_SCAFFOLD_ROOT, loadScaffoldDefinition };
195
+ //# sourceMappingURL=afs.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"afs.mjs","names":[],"sources":["../../src/scaffold/afs.ts"],"sourcesContent":["import type { AFSEntry, AFSListResult, AFSReadResult } from \"@aigne/afs\";\nimport { joinURL } from \"ufo\";\nimport { compileManifestDsl } from \"./manifest-dsl.js\";\nimport { compileModuleDsl } from \"./module-dsl.js\";\nimport { compileShellDsl } from \"./shell-dsl.js\";\nimport { compileSurfaceDsl } from \"./surface-dsl.js\";\nimport type {\n ScaffoldDefinition,\n ScaffoldFooterDefinition,\n ScaffoldHeaderDefinition,\n ScaffoldManifest,\n ScaffoldMenuDefinition,\n ScaffoldMenuItem,\n ScaffoldModuleDefinition,\n ScaffoldShellDefinition,\n ScaffoldSurfaceDefinition,\n ScaffoldWorkspaceDefinition,\n} from \"./types.js\";\nimport { compileWorkspaceDsl } from \"./workspace-dsl.js\";\n\nexport const DEFAULT_SCAFFOLD_ROOT = \"/.scaffold\";\n\nexport interface ScaffoldAfsReader {\n list(path: string): Promise<AFSListResult>;\n read(path: string): Promise<AFSReadResult>;\n}\n\nexport interface LoadScaffoldDefinitionOptions {\n root?: string;\n}\n\nexport async function loadScaffoldDefinition(\n reader: ScaffoldAfsReader,\n options: LoadScaffoldDefinitionOptions = {},\n): Promise<ScaffoldDefinition> {\n const root = options.root ?? DEFAULT_SCAFFOLD_ROOT;\n const manifest = (await loadManifestDslDefinition(reader, root)) ??\n ((await readOptionalJSON(reader, joinURL(root, \"manifest.json\"))) as\n | ScaffoldManifest\n | undefined) ?? { title: \"App\" };\n const shellDsl = await loadShellDslDefinition(reader, root);\n const shell: ScaffoldShellDefinition = {\n menu:\n shellDsl?.menu ??\n normalizeMenu(\n (await readOptionalJSON(reader, joinURL(root, \"shell/menu.json\"))) as\n | ScaffoldMenuDefinition\n | ScaffoldMenuDefinition[\"groups\"]\n | undefined,\n ),\n header:\n shellDsl?.header ??\n ((await readOptionalJSON(reader, joinURL(root, \"shell/header.json\"))) as\n | ScaffoldHeaderDefinition\n | undefined),\n footer:\n shellDsl?.footer ??\n ((await readOptionalJSON(reader, joinURL(root, \"shell/footer.json\"))) as\n | ScaffoldFooterDefinition\n | undefined),\n workspace: await loadWorkspaceDefinition(reader, root),\n };\n\n const modules = await loadModuleRecords(reader, joinURL(root, \"modules\"));\n const surfaces = await loadSurfaceRecords(reader, joinURL(root, \"surfaces\"));\n\n return {\n manifest,\n shell: normalizeShell(shell),\n modules: sortByOrderThenTitle(modules),\n surfaces: sortByOrderThenTitle(surfaces),\n };\n}\n\nasync function loadManifestDslDefinition(\n reader: ScaffoldAfsReader,\n root: string,\n): Promise<ScaffoldManifest | undefined> {\n const dsl = await readOptionalText(reader, joinURL(root, \"manifest.dsl\"));\n if (dsl !== undefined) return compileManifestDsl(dsl);\n return undefined;\n}\n\nasync function loadShellDslDefinition(\n reader: ScaffoldAfsReader,\n root: string,\n): Promise<ScaffoldShellDefinition | undefined> {\n const dsl = await readOptionalText(reader, joinURL(root, \"shell/shell.dsl\"));\n if (dsl !== undefined) return compileShellDsl(dsl);\n return undefined;\n}\n\nasync function loadWorkspaceDefinition(\n reader: ScaffoldAfsReader,\n root: string,\n): Promise<ScaffoldWorkspaceDefinition | undefined> {\n const dsl = await readOptionalText(reader, joinURL(root, \"shell/workspace.dsl\"));\n if (dsl !== undefined) return compileWorkspaceDsl(dsl);\n return (await readOptionalJSON(reader, joinURL(root, \"shell/workspace.json\"))) as\n | ScaffoldWorkspaceDefinition\n | undefined;\n}\n\nasync function loadModuleRecords(\n reader: ScaffoldAfsReader,\n root: string,\n): Promise<ScaffoldModuleDefinition[]> {\n if (!(await hasDirectory(reader, root))) return [];\n const entries = await listVisible(reader, root);\n const records: ScaffoldModuleDefinition[] = [];\n const dslIds = new Set<string>();\n\n for (const entry of entries) {\n const path = entryPath(root, entry);\n if (isDirectoryEntry(entry)) {\n const dsl = await readOptionalText(reader, joinURL(path, \"module.dsl\"));\n if (dsl !== undefined) {\n const record = compileModuleDsl(dsl);\n records.push(record);\n dslIds.add(record.id);\n continue;\n }\n const nested = await readOptionalJSON(reader, joinURL(path, \"module.json\"));\n if (nested) records.push(nested as ScaffoldModuleDefinition);\n continue;\n }\n if (entry.id.endsWith(\".module.dsl\")) {\n const record = compileModuleDsl((await readOptionalText(reader, path)) ?? \"\");\n records.push(record);\n dslIds.add(record.id);\n }\n }\n\n for (const entry of entries) {\n if (isDirectoryEntry(entry) || !entry.id.endsWith(\".module.json\")) continue;\n const parsed = (await readJSON(reader, entryPath(root, entry))) as ScaffoldModuleDefinition;\n if (dslIds.has(parsed.id)) continue;\n records.push(parsed);\n }\n\n return records;\n}\n\nasync function loadSurfaceRecords(\n reader: ScaffoldAfsReader,\n root: string,\n): Promise<ScaffoldSurfaceDefinition[]> {\n if (!(await hasDirectory(reader, root))) return [];\n const entries = await listVisible(reader, root);\n const records: ScaffoldSurfaceDefinition[] = [];\n const dslIds = new Set<string>();\n\n for (const entry of entries) {\n const path = entryPath(root, entry);\n if (isDirectoryEntry(entry)) {\n const dsl = await readOptionalText(reader, joinURL(path, \"surface.dsl\"));\n if (dsl !== undefined) {\n const record = compileSurfaceDsl(dsl);\n records.push(record);\n dslIds.add(record.id);\n continue;\n }\n const nested = await readOptionalJSON(reader, joinURL(path, \"surface.json\"));\n if (nested) records.push(nested as ScaffoldSurfaceDefinition);\n continue;\n }\n if (entry.id.endsWith(\".surface.dsl\")) {\n const record = compileSurfaceDsl((await readOptionalText(reader, path)) ?? \"\");\n records.push(record);\n dslIds.add(record.id);\n }\n }\n\n for (const entry of entries) {\n if (isDirectoryEntry(entry) || !entry.id.endsWith(\".surface.json\")) continue;\n const parsed = (await readJSON(reader, entryPath(root, entry))) as ScaffoldSurfaceDefinition;\n if (dslIds.has(parsed.id)) continue;\n records.push(parsed);\n }\n\n return records;\n}\n\nfunction normalizeShell(shell: ScaffoldShellDefinition): ScaffoldShellDefinition {\n return {\n ...shell,\n menu: normalizeMenu(shell.menu),\n header: shell.header\n ? {\n ...shell.header,\n actions: sortByOrderThenTitle(shell.header.actions ?? []),\n }\n : undefined,\n footer: shell.footer\n ? {\n ...shell.footer,\n links: sortByOrderThenTitle(shell.footer.links ?? []),\n }\n : undefined,\n workspace: shell.workspace ? normalizeWorkspace(shell.workspace) : undefined,\n };\n}\n\nfunction normalizeWorkspace(workspace: ScaffoldWorkspaceDefinition): ScaffoldWorkspaceDefinition {\n return {\n ...workspace,\n sections: sortByOrderThenTitle(workspace.sections ?? []).map((section) => ({\n ...section,\n roots: sortByOrderThenTitle(section.roots ?? []),\n })),\n };\n}\n\nfunction normalizeMenu(\n menu: ScaffoldMenuDefinition | ScaffoldMenuDefinition[\"groups\"] | undefined,\n): ScaffoldMenuDefinition | undefined {\n if (!menu) return undefined;\n const groups = Array.isArray(menu) ? menu : menu.groups;\n return {\n groups: sortByOrderThenTitle(groups).map((group) => ({\n ...group,\n items: normalizeMenuItems(group.items ?? []),\n })),\n };\n}\n\nfunction normalizeMenuItems(items: ScaffoldMenuItem[]): ScaffoldMenuItem[] {\n return sortByOrderThenTitle(items).map((item) => ({\n ...item,\n children: item.children ? normalizeMenuItems(item.children) : undefined,\n }));\n}\n\nfunction sortByOrderThenTitle<T extends { order?: number; title?: string; id?: string }>(\n items: T[],\n): T[] {\n return [...items].sort(\n (left, right) =>\n normalizeOrder(left.order) - normalizeOrder(right.order) ||\n (left.title ?? left.id ?? \"\").localeCompare(right.title ?? right.id ?? \"\"),\n );\n}\n\nfunction normalizeOrder(order: number | undefined): number {\n return order ?? Number.MAX_SAFE_INTEGER;\n}\n\nasync function hasDirectory(reader: ScaffoldAfsReader, path: string): Promise<boolean> {\n try {\n const result = await reader.list(path);\n return Array.isArray(result.data);\n } catch {\n return false;\n }\n}\n\nasync function listVisible(reader: ScaffoldAfsReader, path: string): Promise<AFSEntry[]> {\n const result = await reader.list(path);\n return (result.data ?? []).filter((entry) => entry?.id && !entry.id.startsWith(\".\"));\n}\n\nasync function readOptionalJSON(reader: ScaffoldAfsReader, path: string): Promise<unknown> {\n try {\n return await readJSON(reader, path);\n } catch {\n return undefined;\n }\n}\n\nasync function readOptionalText(\n reader: ScaffoldAfsReader,\n path: string,\n): Promise<string | undefined> {\n try {\n const result = await reader.read(path);\n const data = result.data;\n const content =\n data && typeof data === \"object\" && \"content\" in data\n ? (data as { content?: unknown }).content\n : data;\n return typeof content === \"string\" ? content : undefined;\n } catch {\n return undefined;\n }\n}\n\nasync function readJSON(reader: ScaffoldAfsReader, path: string): Promise<unknown> {\n const result = await reader.read(path);\n const data = result.data;\n const content =\n data && typeof data === \"object\" && \"content\" in data\n ? (data as { content?: unknown }).content\n : data;\n if (typeof content === \"string\") return JSON.parse(content);\n if (content && typeof content === \"object\") return content;\n throw new Error(`Expected JSON object in \"${path}\"`);\n}\n\nfunction isDirectoryEntry(entry: AFSEntry): boolean {\n const meta = entry.meta ?? {};\n return (\n meta.kind === \"fs:directory\" ||\n meta.kind === \"directory\" ||\n (Array.isArray(meta.kinds) && meta.kinds.includes(\"fs:directory\")) ||\n typeof meta.childrenCount === \"number\"\n );\n}\n\nfunction entryPath(parentPath: string, entry: AFSEntry): string {\n return entry.path || joinURL(parentPath, entry.id);\n}\n"],"mappings":"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"}
@@ -0,0 +1,92 @@
1
+
2
+ //#region src/scaffold/composition.ts
3
+ function composeScaffoldApp(scaffold, options = {}) {
4
+ const diagnostics = [];
5
+ const modulesById = {};
6
+ for (const definition of scaffold.definition.modules) modulesById[definition.id] = {
7
+ definition,
8
+ binding: definition.binding,
9
+ surfaceDefinitions: [],
10
+ surfaces: []
11
+ };
12
+ for (const surfaceDefinition of scaffold.definition.surfaces) {
13
+ if (!surfaceDefinition.module) continue;
14
+ const module = modulesById[surfaceDefinition.module];
15
+ if (!module) continue;
16
+ module.surfaceDefinitions.push(surfaceDefinition);
17
+ const resolvedSurface = options.surfaces?.surfaces[surfaceDefinition.id];
18
+ if (resolvedSurface) module.surfaces.push(resolvedSurface);
19
+ }
20
+ const modules = scaffold.definition.modules.map((definition) => modulesById[definition.id]);
21
+ const defaultModule = (scaffold.definition.manifest.defaultModule ? modulesById[scaffold.definition.manifest.defaultModule] : void 0) ?? modules[0];
22
+ return {
23
+ manifest: scaffold.definition.manifest,
24
+ defaultModule,
25
+ modules,
26
+ shell: composeShell(scaffold, modulesById, options.surfaces, diagnostics),
27
+ diagnostics
28
+ };
29
+ }
30
+ function composeShell(scaffold, modulesById, surfaces, diagnostics) {
31
+ return {
32
+ menu: scaffold.definition.shell.menu ? { groups: scaffold.definition.shell.menu.groups.map((group) => ({
33
+ ...group,
34
+ items: resolveMenuItems(group.items, scaffold, modulesById, surfaces, diagnostics)
35
+ })) } : void 0,
36
+ header: scaffold.definition.shell.header ? {
37
+ ...scaffold.definition.shell.header,
38
+ actions: scaffold.definition.shell.header.actions?.map((action) => ({
39
+ ...action,
40
+ target: resolveTarget(action.target, scaffold, modulesById, surfaces, diagnostics)
41
+ }))
42
+ } : void 0,
43
+ footer: scaffold.definition.shell.footer ? {
44
+ ...scaffold.definition.shell.footer,
45
+ links: scaffold.definition.shell.footer.links?.map((link) => ({
46
+ ...link,
47
+ target: resolveTarget(link.target, scaffold, modulesById, surfaces, diagnostics)
48
+ }))
49
+ } : void 0,
50
+ workspace: scaffold.definition.shell.workspace ? {
51
+ ...scaffold.definition.shell.workspace,
52
+ sections: scaffold.definition.shell.workspace.sections.map((section) => ({
53
+ ...section,
54
+ roots: section.roots
55
+ }))
56
+ } : void 0
57
+ };
58
+ }
59
+ function resolveMenuItems(items, scaffold, modulesById, surfaces, diagnostics) {
60
+ return items.map((item) => ({
61
+ ...item,
62
+ target: item.target ? resolveTarget(item.target, scaffold, modulesById, surfaces, diagnostics) : void 0,
63
+ children: item.children ? resolveMenuItems(item.children, scaffold, modulesById, surfaces, diagnostics) : void 0
64
+ }));
65
+ }
66
+ function resolveTarget(target, scaffold, modulesById, surfaces, diagnostics) {
67
+ if (target.kind === "module") return {
68
+ ...target,
69
+ module: target.ref ? modulesById[target.ref] : void 0
70
+ };
71
+ if (target.kind === "surface") {
72
+ const surfaceDefinition = target.ref ? scaffold.surfacesById[target.ref] : void 0;
73
+ const surface = target.ref ? surfaces?.surfaces[target.ref] : void 0;
74
+ const module = surfaceDefinition?.module && modulesById[surfaceDefinition.module] ? modulesById[surfaceDefinition.module] : void 0;
75
+ if (surfaceDefinition && !surface && surfaces) diagnostics.push({
76
+ code: "missing_runtime_surface",
77
+ severity: "warning",
78
+ targetId: target.ref ?? surfaceDefinition.id,
79
+ message: `Surface "${target.ref ?? surfaceDefinition.id}" is declared but has no resolved runtime`
80
+ });
81
+ return {
82
+ ...target,
83
+ module,
84
+ surface,
85
+ surfaceDefinition
86
+ };
87
+ }
88
+ return { ...target };
89
+ }
90
+
91
+ //#endregion
92
+ exports.composeScaffoldApp = composeScaffoldApp;
@@ -0,0 +1,10 @@
1
+ import { ResolvedScaffoldApp, ResolvedScaffoldDefinition, ResolvedScaffoldSurfaces } from "./types.cjs";
2
+
3
+ //#region src/scaffold/composition.d.ts
4
+ interface ComposeScaffoldAppOptions {
5
+ surfaces?: ResolvedScaffoldSurfaces;
6
+ }
7
+ declare function composeScaffoldApp(scaffold: ResolvedScaffoldDefinition, options?: ComposeScaffoldAppOptions): ResolvedScaffoldApp;
8
+ //#endregion
9
+ export { ComposeScaffoldAppOptions, composeScaffoldApp };
10
+ //# sourceMappingURL=composition.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composition.d.cts","names":[],"sources":["../../src/scaffold/composition.ts"],"mappings":";;;UAgBiB,yBAAA;EACf,QAAA,GAAW,wBAAA;AAAA;AAAA,iBAGG,kBAAA,CACd,QAAA,EAAU,0BAAA,EACV,OAAA,GAAS,yBAAA,GACR,mBAAA"}
@@ -0,0 +1,10 @@
1
+ import { ResolvedScaffoldApp, ResolvedScaffoldDefinition, ResolvedScaffoldSurfaces } from "./types.mjs";
2
+
3
+ //#region src/scaffold/composition.d.ts
4
+ interface ComposeScaffoldAppOptions {
5
+ surfaces?: ResolvedScaffoldSurfaces;
6
+ }
7
+ declare function composeScaffoldApp(scaffold: ResolvedScaffoldDefinition, options?: ComposeScaffoldAppOptions): ResolvedScaffoldApp;
8
+ //#endregion
9
+ export { ComposeScaffoldAppOptions, composeScaffoldApp };
10
+ //# sourceMappingURL=composition.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composition.d.mts","names":[],"sources":["../../src/scaffold/composition.ts"],"mappings":";;;UAgBiB,yBAAA;EACf,QAAA,GAAW,wBAAA;AAAA;AAAA,iBAGG,kBAAA,CACd,QAAA,EAAU,0BAAA,EACV,OAAA,GAAS,yBAAA,GACR,mBAAA"}
@@ -0,0 +1,92 @@
1
+ //#region src/scaffold/composition.ts
2
+ function composeScaffoldApp(scaffold, options = {}) {
3
+ const diagnostics = [];
4
+ const modulesById = {};
5
+ for (const definition of scaffold.definition.modules) modulesById[definition.id] = {
6
+ definition,
7
+ binding: definition.binding,
8
+ surfaceDefinitions: [],
9
+ surfaces: []
10
+ };
11
+ for (const surfaceDefinition of scaffold.definition.surfaces) {
12
+ if (!surfaceDefinition.module) continue;
13
+ const module = modulesById[surfaceDefinition.module];
14
+ if (!module) continue;
15
+ module.surfaceDefinitions.push(surfaceDefinition);
16
+ const resolvedSurface = options.surfaces?.surfaces[surfaceDefinition.id];
17
+ if (resolvedSurface) module.surfaces.push(resolvedSurface);
18
+ }
19
+ const modules = scaffold.definition.modules.map((definition) => modulesById[definition.id]);
20
+ const defaultModule = (scaffold.definition.manifest.defaultModule ? modulesById[scaffold.definition.manifest.defaultModule] : void 0) ?? modules[0];
21
+ return {
22
+ manifest: scaffold.definition.manifest,
23
+ defaultModule,
24
+ modules,
25
+ shell: composeShell(scaffold, modulesById, options.surfaces, diagnostics),
26
+ diagnostics
27
+ };
28
+ }
29
+ function composeShell(scaffold, modulesById, surfaces, diagnostics) {
30
+ return {
31
+ menu: scaffold.definition.shell.menu ? { groups: scaffold.definition.shell.menu.groups.map((group) => ({
32
+ ...group,
33
+ items: resolveMenuItems(group.items, scaffold, modulesById, surfaces, diagnostics)
34
+ })) } : void 0,
35
+ header: scaffold.definition.shell.header ? {
36
+ ...scaffold.definition.shell.header,
37
+ actions: scaffold.definition.shell.header.actions?.map((action) => ({
38
+ ...action,
39
+ target: resolveTarget(action.target, scaffold, modulesById, surfaces, diagnostics)
40
+ }))
41
+ } : void 0,
42
+ footer: scaffold.definition.shell.footer ? {
43
+ ...scaffold.definition.shell.footer,
44
+ links: scaffold.definition.shell.footer.links?.map((link) => ({
45
+ ...link,
46
+ target: resolveTarget(link.target, scaffold, modulesById, surfaces, diagnostics)
47
+ }))
48
+ } : void 0,
49
+ workspace: scaffold.definition.shell.workspace ? {
50
+ ...scaffold.definition.shell.workspace,
51
+ sections: scaffold.definition.shell.workspace.sections.map((section) => ({
52
+ ...section,
53
+ roots: section.roots
54
+ }))
55
+ } : void 0
56
+ };
57
+ }
58
+ function resolveMenuItems(items, scaffold, modulesById, surfaces, diagnostics) {
59
+ return items.map((item) => ({
60
+ ...item,
61
+ target: item.target ? resolveTarget(item.target, scaffold, modulesById, surfaces, diagnostics) : void 0,
62
+ children: item.children ? resolveMenuItems(item.children, scaffold, modulesById, surfaces, diagnostics) : void 0
63
+ }));
64
+ }
65
+ function resolveTarget(target, scaffold, modulesById, surfaces, diagnostics) {
66
+ if (target.kind === "module") return {
67
+ ...target,
68
+ module: target.ref ? modulesById[target.ref] : void 0
69
+ };
70
+ if (target.kind === "surface") {
71
+ const surfaceDefinition = target.ref ? scaffold.surfacesById[target.ref] : void 0;
72
+ const surface = target.ref ? surfaces?.surfaces[target.ref] : void 0;
73
+ const module = surfaceDefinition?.module && modulesById[surfaceDefinition.module] ? modulesById[surfaceDefinition.module] : void 0;
74
+ if (surfaceDefinition && !surface && surfaces) diagnostics.push({
75
+ code: "missing_runtime_surface",
76
+ severity: "warning",
77
+ targetId: target.ref ?? surfaceDefinition.id,
78
+ message: `Surface "${target.ref ?? surfaceDefinition.id}" is declared but has no resolved runtime`
79
+ });
80
+ return {
81
+ ...target,
82
+ module,
83
+ surface,
84
+ surfaceDefinition
85
+ };
86
+ }
87
+ return { ...target };
88
+ }
89
+
90
+ //#endregion
91
+ export { composeScaffoldApp };
92
+ //# sourceMappingURL=composition.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composition.mjs","names":[],"sources":["../../src/scaffold/composition.ts"],"sourcesContent":["import type {\n ResolvedScaffoldApp,\n ResolvedScaffoldDefinition,\n ResolvedScaffoldFooterLink,\n ResolvedScaffoldHeaderAction,\n ResolvedScaffoldMenuGroup,\n ResolvedScaffoldMenuItem,\n ResolvedScaffoldModule,\n ResolvedScaffoldShell,\n ResolvedScaffoldSurfaces,\n ResolvedScaffoldTarget,\n ScaffoldCompositionDiagnostic,\n ScaffoldMenuItem,\n ScaffoldTargetRef,\n} from \"./types.js\";\n\nexport interface ComposeScaffoldAppOptions {\n surfaces?: ResolvedScaffoldSurfaces;\n}\n\nexport function composeScaffoldApp(\n scaffold: ResolvedScaffoldDefinition,\n options: ComposeScaffoldAppOptions = {},\n): ResolvedScaffoldApp {\n const diagnostics: ScaffoldCompositionDiagnostic[] = [];\n const modulesById: Record<string, ResolvedScaffoldModule> = {};\n\n for (const definition of scaffold.definition.modules) {\n modulesById[definition.id] = {\n definition,\n binding: definition.binding,\n surfaceDefinitions: [],\n surfaces: [],\n };\n }\n\n for (const surfaceDefinition of scaffold.definition.surfaces) {\n if (!surfaceDefinition.module) continue;\n const module = modulesById[surfaceDefinition.module];\n if (!module) continue;\n module.surfaceDefinitions.push(surfaceDefinition);\n const resolvedSurface = options.surfaces?.surfaces[surfaceDefinition.id];\n if (resolvedSurface) module.surfaces.push(resolvedSurface);\n }\n\n const modules = scaffold.definition.modules.map((definition) => modulesById[definition.id]!);\n const defaultModule =\n (scaffold.definition.manifest.defaultModule\n ? modulesById[scaffold.definition.manifest.defaultModule]\n : undefined) ?? modules[0];\n\n return {\n manifest: scaffold.definition.manifest,\n defaultModule,\n modules,\n shell: composeShell(scaffold, modulesById, options.surfaces, diagnostics),\n diagnostics,\n };\n}\n\nfunction composeShell(\n scaffold: ResolvedScaffoldDefinition,\n modulesById: Record<string, ResolvedScaffoldModule>,\n surfaces: ResolvedScaffoldSurfaces | undefined,\n diagnostics: ScaffoldCompositionDiagnostic[],\n): ResolvedScaffoldShell {\n return {\n menu: scaffold.definition.shell.menu\n ? {\n groups: scaffold.definition.shell.menu.groups.map(\n (group): ResolvedScaffoldMenuGroup => ({\n ...group,\n items: resolveMenuItems(group.items, scaffold, modulesById, surfaces, diagnostics),\n }),\n ),\n }\n : undefined,\n header: scaffold.definition.shell.header\n ? {\n ...scaffold.definition.shell.header,\n actions: scaffold.definition.shell.header.actions?.map(\n (action): ResolvedScaffoldHeaderAction => ({\n ...action,\n target: resolveTarget(action.target, scaffold, modulesById, surfaces, diagnostics),\n }),\n ),\n }\n : undefined,\n footer: scaffold.definition.shell.footer\n ? {\n ...scaffold.definition.shell.footer,\n links: scaffold.definition.shell.footer.links?.map(\n (link): ResolvedScaffoldFooterLink => ({\n ...link,\n target: resolveTarget(link.target, scaffold, modulesById, surfaces, diagnostics),\n }),\n ),\n }\n : undefined,\n workspace: scaffold.definition.shell.workspace\n ? {\n ...scaffold.definition.shell.workspace,\n sections: scaffold.definition.shell.workspace.sections.map((section) => ({\n ...section,\n roots: section.roots,\n })),\n }\n : undefined,\n };\n}\n\nfunction resolveMenuItems(\n items: ScaffoldMenuItem[],\n scaffold: ResolvedScaffoldDefinition,\n modulesById: Record<string, ResolvedScaffoldModule>,\n surfaces: ResolvedScaffoldSurfaces | undefined,\n diagnostics: ScaffoldCompositionDiagnostic[],\n): ResolvedScaffoldMenuItem[] {\n return items.map(\n (item): ResolvedScaffoldMenuItem => ({\n ...item,\n target: item.target\n ? resolveTarget(item.target, scaffold, modulesById, surfaces, diagnostics)\n : undefined,\n children: item.children\n ? resolveMenuItems(item.children, scaffold, modulesById, surfaces, diagnostics)\n : undefined,\n }),\n );\n}\n\nfunction resolveTarget(\n target: ScaffoldTargetRef,\n scaffold: ResolvedScaffoldDefinition,\n modulesById: Record<string, ResolvedScaffoldModule>,\n surfaces: ResolvedScaffoldSurfaces | undefined,\n diagnostics: ScaffoldCompositionDiagnostic[],\n): ResolvedScaffoldTarget {\n if (target.kind === \"module\") {\n return {\n ...target,\n module: target.ref ? modulesById[target.ref] : undefined,\n };\n }\n\n if (target.kind === \"surface\") {\n const surfaceDefinition = target.ref ? scaffold.surfacesById[target.ref] : undefined;\n const surface = target.ref ? surfaces?.surfaces[target.ref] : undefined;\n const module =\n surfaceDefinition?.module && modulesById[surfaceDefinition.module]\n ? modulesById[surfaceDefinition.module]\n : undefined;\n\n if (surfaceDefinition && !surface && surfaces) {\n diagnostics.push({\n code: \"missing_runtime_surface\",\n severity: \"warning\",\n targetId: target.ref ?? surfaceDefinition.id,\n message: `Surface \"${target.ref ?? surfaceDefinition.id}\" is declared but has no resolved runtime`,\n });\n }\n\n return {\n ...target,\n module,\n surface,\n surfaceDefinition,\n };\n }\n\n return { ...target };\n}\n"],"mappings":";AAoBA,SAAgB,mBACd,UACA,UAAqC,EAAE,EAClB;CACrB,MAAM,cAA+C,EAAE;CACvD,MAAM,cAAsD,EAAE;AAE9D,MAAK,MAAM,cAAc,SAAS,WAAW,QAC3C,aAAY,WAAW,MAAM;EAC3B;EACA,SAAS,WAAW;EACpB,oBAAoB,EAAE;EACtB,UAAU,EAAE;EACb;AAGH,MAAK,MAAM,qBAAqB,SAAS,WAAW,UAAU;AAC5D,MAAI,CAAC,kBAAkB,OAAQ;EAC/B,MAAM,SAAS,YAAY,kBAAkB;AAC7C,MAAI,CAAC,OAAQ;AACb,SAAO,mBAAmB,KAAK,kBAAkB;EACjD,MAAM,kBAAkB,QAAQ,UAAU,SAAS,kBAAkB;AACrE,MAAI,gBAAiB,QAAO,SAAS,KAAK,gBAAgB;;CAG5D,MAAM,UAAU,SAAS,WAAW,QAAQ,KAAK,eAAe,YAAY,WAAW,IAAK;CAC5F,MAAM,iBACH,SAAS,WAAW,SAAS,gBAC1B,YAAY,SAAS,WAAW,SAAS,iBACzC,WAAc,QAAQ;AAE5B,QAAO;EACL,UAAU,SAAS,WAAW;EAC9B;EACA;EACA,OAAO,aAAa,UAAU,aAAa,QAAQ,UAAU,YAAY;EACzE;EACD;;AAGH,SAAS,aACP,UACA,aACA,UACA,aACuB;AACvB,QAAO;EACL,MAAM,SAAS,WAAW,MAAM,OAC5B,EACE,QAAQ,SAAS,WAAW,MAAM,KAAK,OAAO,KAC3C,WAAsC;GACrC,GAAG;GACH,OAAO,iBAAiB,MAAM,OAAO,UAAU,aAAa,UAAU,YAAY;GACnF,EACF,EACF,GACD;EACJ,QAAQ,SAAS,WAAW,MAAM,SAC9B;GACE,GAAG,SAAS,WAAW,MAAM;GAC7B,SAAS,SAAS,WAAW,MAAM,OAAO,SAAS,KAChD,YAA0C;IACzC,GAAG;IACH,QAAQ,cAAc,OAAO,QAAQ,UAAU,aAAa,UAAU,YAAY;IACnF,EACF;GACF,GACD;EACJ,QAAQ,SAAS,WAAW,MAAM,SAC9B;GACE,GAAG,SAAS,WAAW,MAAM;GAC7B,OAAO,SAAS,WAAW,MAAM,OAAO,OAAO,KAC5C,UAAsC;IACrC,GAAG;IACH,QAAQ,cAAc,KAAK,QAAQ,UAAU,aAAa,UAAU,YAAY;IACjF,EACF;GACF,GACD;EACJ,WAAW,SAAS,WAAW,MAAM,YACjC;GACE,GAAG,SAAS,WAAW,MAAM;GAC7B,UAAU,SAAS,WAAW,MAAM,UAAU,SAAS,KAAK,aAAa;IACvE,GAAG;IACH,OAAO,QAAQ;IAChB,EAAE;GACJ,GACD;EACL;;AAGH,SAAS,iBACP,OACA,UACA,aACA,UACA,aAC4B;AAC5B,QAAO,MAAM,KACV,UAAoC;EACnC,GAAG;EACH,QAAQ,KAAK,SACT,cAAc,KAAK,QAAQ,UAAU,aAAa,UAAU,YAAY,GACxE;EACJ,UAAU,KAAK,WACX,iBAAiB,KAAK,UAAU,UAAU,aAAa,UAAU,YAAY,GAC7E;EACL,EACF;;AAGH,SAAS,cACP,QACA,UACA,aACA,UACA,aACwB;AACxB,KAAI,OAAO,SAAS,SAClB,QAAO;EACL,GAAG;EACH,QAAQ,OAAO,MAAM,YAAY,OAAO,OAAO;EAChD;AAGH,KAAI,OAAO,SAAS,WAAW;EAC7B,MAAM,oBAAoB,OAAO,MAAM,SAAS,aAAa,OAAO,OAAO;EAC3E,MAAM,UAAU,OAAO,MAAM,UAAU,SAAS,OAAO,OAAO;EAC9D,MAAM,SACJ,mBAAmB,UAAU,YAAY,kBAAkB,UACvD,YAAY,kBAAkB,UAC9B;AAEN,MAAI,qBAAqB,CAAC,WAAW,SACnC,aAAY,KAAK;GACf,MAAM;GACN,UAAU;GACV,UAAU,OAAO,OAAO,kBAAkB;GAC1C,SAAS,YAAY,OAAO,OAAO,kBAAkB,GAAG;GACzD,CAAC;AAGJ,SAAO;GACL,GAAG;GACH;GACA;GACA;GACD;;AAGH,QAAO,EAAE,GAAG,QAAQ"}
@@ -0,0 +1,21 @@
1
+
2
+ //#region src/scaffold/dsl-error.ts
3
+ var ScaffoldDslCompileError = class extends Error {
4
+ dslKind;
5
+ line;
6
+ column;
7
+ constructor(dslKind, line, column, message) {
8
+ super(`Invalid ${dslKind} DSL at line ${line}, column ${column}: ${message}`);
9
+ this.name = "ScaffoldDslCompileError";
10
+ this.dslKind = dslKind;
11
+ this.line = line;
12
+ this.column = column;
13
+ }
14
+ };
15
+ function scaffoldDslParseError(dslKind, line, message, column = 1) {
16
+ return new ScaffoldDslCompileError(dslKind, line, column, message);
17
+ }
18
+
19
+ //#endregion
20
+ exports.ScaffoldDslCompileError = ScaffoldDslCompileError;
21
+ exports.scaffoldDslParseError = scaffoldDslParseError;
@@ -0,0 +1,11 @@
1
+ //#region src/scaffold/dsl-error.d.ts
2
+ declare class ScaffoldDslCompileError extends Error {
3
+ readonly dslKind: string;
4
+ readonly line: number;
5
+ readonly column: number;
6
+ constructor(dslKind: string, line: number, column: number, message: string);
7
+ }
8
+ declare function scaffoldDslParseError(dslKind: string, line: number, message: string, column?: number): ScaffoldDslCompileError;
9
+ //#endregion
10
+ export { ScaffoldDslCompileError, scaffoldDslParseError };
11
+ //# sourceMappingURL=dsl-error.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dsl-error.d.cts","names":[],"sources":["../../src/scaffold/dsl-error.ts"],"mappings":";cAAa,uBAAA,SAAgC,KAAA;EAAA,SAClC,OAAA;EAAA,SACA,IAAA;EAAA,SACA,MAAA;cAEG,OAAA,UAAiB,IAAA,UAAc,MAAA,UAAgB,OAAA;AAAA;AAAA,iBAS7C,qBAAA,CACd,OAAA,UACA,IAAA,UACA,OAAA,UACA,MAAA,YACC,uBAAA"}
@@ -0,0 +1,11 @@
1
+ //#region src/scaffold/dsl-error.d.ts
2
+ declare class ScaffoldDslCompileError extends Error {
3
+ readonly dslKind: string;
4
+ readonly line: number;
5
+ readonly column: number;
6
+ constructor(dslKind: string, line: number, column: number, message: string);
7
+ }
8
+ declare function scaffoldDslParseError(dslKind: string, line: number, message: string, column?: number): ScaffoldDslCompileError;
9
+ //#endregion
10
+ export { ScaffoldDslCompileError, scaffoldDslParseError };
11
+ //# sourceMappingURL=dsl-error.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dsl-error.d.mts","names":[],"sources":["../../src/scaffold/dsl-error.ts"],"mappings":";cAAa,uBAAA,SAAgC,KAAA;EAAA,SAClC,OAAA;EAAA,SACA,IAAA;EAAA,SACA,MAAA;cAEG,OAAA,UAAiB,IAAA,UAAc,MAAA,UAAgB,OAAA;AAAA;AAAA,iBAS7C,qBAAA,CACd,OAAA,UACA,IAAA,UACA,OAAA,UACA,MAAA,YACC,uBAAA"}
@@ -0,0 +1,20 @@
1
+ //#region src/scaffold/dsl-error.ts
2
+ var ScaffoldDslCompileError = class extends Error {
3
+ dslKind;
4
+ line;
5
+ column;
6
+ constructor(dslKind, line, column, message) {
7
+ super(`Invalid ${dslKind} DSL at line ${line}, column ${column}: ${message}`);
8
+ this.name = "ScaffoldDslCompileError";
9
+ this.dslKind = dslKind;
10
+ this.line = line;
11
+ this.column = column;
12
+ }
13
+ };
14
+ function scaffoldDslParseError(dslKind, line, message, column = 1) {
15
+ return new ScaffoldDslCompileError(dslKind, line, column, message);
16
+ }
17
+
18
+ //#endregion
19
+ export { ScaffoldDslCompileError, scaffoldDslParseError };
20
+ //# sourceMappingURL=dsl-error.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dsl-error.mjs","names":[],"sources":["../../src/scaffold/dsl-error.ts"],"sourcesContent":["export class ScaffoldDslCompileError extends Error {\n readonly dslKind: string;\n readonly line: number;\n readonly column: number;\n\n constructor(dslKind: string, line: number, column: number, message: string) {\n super(`Invalid ${dslKind} DSL at line ${line}, column ${column}: ${message}`);\n this.name = \"ScaffoldDslCompileError\";\n this.dslKind = dslKind;\n this.line = line;\n this.column = column;\n }\n}\n\nexport function scaffoldDslParseError(\n dslKind: string,\n line: number,\n message: string,\n column = 1,\n): ScaffoldDslCompileError {\n return new ScaffoldDslCompileError(dslKind, line, column, message);\n}\n"],"mappings":";AAAA,IAAa,0BAAb,cAA6C,MAAM;CACjD,AAAS;CACT,AAAS;CACT,AAAS;CAET,YAAY,SAAiB,MAAc,QAAgB,SAAiB;AAC1E,QAAM,WAAW,QAAQ,eAAe,KAAK,WAAW,OAAO,IAAI,UAAU;AAC7E,OAAK,OAAO;AACZ,OAAK,UAAU;AACf,OAAK,OAAO;AACZ,OAAK,SAAS;;;AAIlB,SAAgB,sBACd,SACA,MACA,SACA,SAAS,GACgB;AACzB,QAAO,IAAI,wBAAwB,SAAS,MAAM,QAAQ,QAAQ"}
@@ -0,0 +1,12 @@
1
+ import { ResolvedScaffoldApp, ResolvedScaffoldDefinition, ResolvedScaffoldFooterLink, ResolvedScaffoldHeaderAction, ResolvedScaffoldMenuGroup, ResolvedScaffoldMenuItem, ResolvedScaffoldModule, ResolvedScaffoldShell, ResolvedScaffoldSurface, ResolvedScaffoldSurfaces, ResolvedScaffoldTarget, ResolvedScaffoldWorkspaceDefinition, ResolvedScaffoldWorkspaceSection, ScaffoldAgentModuleBinding, ScaffoldAupModuleBinding, ScaffoldBlockletModuleBinding, ScaffoldCompositionDiagnostic, ScaffoldDefinition, ScaffoldDiagnostic, ScaffoldFooterDefinition, ScaffoldFooterLink, ScaffoldHeaderDefinition, ScaffoldManifest, ScaffoldMenuDefinition, ScaffoldMenuGroup, ScaffoldMenuItem, ScaffoldMenuPlacement, ScaffoldModuleBinding, ScaffoldModuleDefinition, ScaffoldModuleKind, ScaffoldProviderKind, ScaffoldShellAction, ScaffoldShellDefinition, ScaffoldSurfaceDefinition, ScaffoldSurfaceRuntimeDiagnostic, ScaffoldTargetKind, ScaffoldTargetRef, ScaffoldWebModuleBinding, ScaffoldWorkspaceAgentDefinition, ScaffoldWorkspaceDefinition, ScaffoldWorkspaceRailItem, ScaffoldWorkspaceRoot, ScaffoldWorkspaceSection } from "./types.mjs";
2
+ import { DEFAULT_SCAFFOLD_ROOT, LoadScaffoldDefinitionOptions, ScaffoldAfsReader, loadScaffoldDefinition } from "./afs.mjs";
3
+ import { ComposeScaffoldAppOptions, composeScaffoldApp } from "./composition.mjs";
4
+ import { ScaffoldDslCompileError, scaffoldDslParseError } from "./dsl-error.mjs";
5
+ import { compileManifestDsl, formatManifestDsl } from "./manifest-dsl.mjs";
6
+ import { compileModuleDsl, formatModuleDsl } from "./module-dsl.mjs";
7
+ import { resolveScaffoldDefinition } from "./resolver.mjs";
8
+ import { ResolveScaffoldAutoSurfaceOptions, ResolveScaffoldSurfacesOptions, resolveScaffoldSurface, resolveScaffoldSurfaces } from "./surfaces.mjs";
9
+ import { ResolveScaffoldAppOptions, ResolvedScaffoldRuntime, resolveScaffoldApp } from "./runtime.mjs";
10
+ import { compileShellDsl, formatShellDsl } from "./shell-dsl.mjs";
11
+ import { compileSurfaceDsl, formatSurfaceDsl } from "./surface-dsl.mjs";
12
+ import { WorkspaceManifest, WorkspaceManifestAgent, WorkspaceManifestRoot, compileWorkspaceDsl, formatWorkspaceDsl, validateWorkspaceManifest, workspaceManifestFromDefinition } from "./workspace-dsl.mjs";