@loom-framework/core 0.1.0-alpha.16 → 0.1.0-alpha.161

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 (757) hide show
  1. package/builtin-skills/antd/SKILL.md +266 -0
  2. package/builtin-skills/antv-g2-chart/SKILL.md +1067 -0
  3. package/builtin-skills/antv-g2-chart/references/animations/g2-animation-intro.md +176 -0
  4. package/builtin-skills/antv-g2-chart/references/animations/g2-animation-keyframe.md +149 -0
  5. package/builtin-skills/antv-g2-chart/references/animations/g2-animation-types.md +253 -0
  6. package/builtin-skills/antv-g2-chart/references/components/g2-comp-annotation.md +237 -0
  7. package/builtin-skills/antv-g2-chart/references/components/g2-comp-axis-config.md +648 -0
  8. package/builtin-skills/antv-g2-chart/references/components/g2-comp-axis-radar.md +219 -0
  9. package/builtin-skills/antv-g2-chart/references/components/g2-comp-label-config.md +174 -0
  10. package/builtin-skills/antv-g2-chart/references/components/g2-comp-legend-category.md +278 -0
  11. package/builtin-skills/antv-g2-chart/references/components/g2-comp-legend-config.md +363 -0
  12. package/builtin-skills/antv-g2-chart/references/components/g2-comp-legend-continuous.md +264 -0
  13. package/builtin-skills/antv-g2-chart/references/components/g2-comp-scrollbar.md +276 -0
  14. package/builtin-skills/antv-g2-chart/references/components/g2-comp-slider.md +333 -0
  15. package/builtin-skills/antv-g2-chart/references/components/g2-comp-title.md +149 -0
  16. package/builtin-skills/antv-g2-chart/references/components/g2-comp-tooltip-config.md +358 -0
  17. package/builtin-skills/antv-g2-chart/references/compositions/g2-comp-facet-circle.md +97 -0
  18. package/builtin-skills/antv-g2-chart/references/compositions/g2-comp-facet-rect.md +241 -0
  19. package/builtin-skills/antv-g2-chart/references/compositions/g2-comp-geo-map.md +210 -0
  20. package/builtin-skills/antv-g2-chart/references/compositions/g2-comp-geoview.md +143 -0
  21. package/builtin-skills/antv-g2-chart/references/compositions/g2-comp-repeat-matrix.md +171 -0
  22. package/builtin-skills/antv-g2-chart/references/compositions/g2-comp-space-flex.md +142 -0
  23. package/builtin-skills/antv-g2-chart/references/compositions/g2-comp-space-layer.md +149 -0
  24. package/builtin-skills/antv-g2-chart/references/compositions/g2-comp-timing-keyframe.md +91 -0
  25. package/builtin-skills/antv-g2-chart/references/compositions/g2-comp-view.md +309 -0
  26. package/builtin-skills/antv-g2-chart/references/concepts/g2-concept-chart-selection.md +235 -0
  27. package/builtin-skills/antv-g2-chart/references/concepts/g2-concept-color-theory.md +287 -0
  28. package/builtin-skills/antv-g2-chart/references/concepts/g2-concept-visual-channels.md +180 -0
  29. package/builtin-skills/antv-g2-chart/references/coordinates/g2-coord-cartesian.md +131 -0
  30. package/builtin-skills/antv-g2-chart/references/coordinates/g2-coord-fisheye.md +131 -0
  31. package/builtin-skills/antv-g2-chart/references/coordinates/g2-coord-helix.md +141 -0
  32. package/builtin-skills/antv-g2-chart/references/coordinates/g2-coord-parallel.md +129 -0
  33. package/builtin-skills/antv-g2-chart/references/coordinates/g2-coord-polar.md +143 -0
  34. package/builtin-skills/antv-g2-chart/references/coordinates/g2-coord-radial.md +214 -0
  35. package/builtin-skills/antv-g2-chart/references/coordinates/g2-coord-theta.md +171 -0
  36. package/builtin-skills/antv-g2-chart/references/coordinates/g2-coord-transpose.md +195 -0
  37. package/builtin-skills/antv-g2-chart/references/core/g2-core-chart-init.md +266 -0
  38. package/builtin-skills/antv-g2-chart/references/core/g2-core-encode-channel.md +197 -0
  39. package/builtin-skills/antv-g2-chart/references/core/g2-core-view-composition.md +224 -0
  40. package/builtin-skills/antv-g2-chart/references/data/g2-data-ema.md +190 -0
  41. package/builtin-skills/antv-g2-chart/references/data/g2-data-fetch.md +167 -0
  42. package/builtin-skills/antv-g2-chart/references/data/g2-data-filter.md +212 -0
  43. package/builtin-skills/antv-g2-chart/references/data/g2-data-fold.md +260 -0
  44. package/builtin-skills/antv-g2-chart/references/data/g2-data-format-tabular.md +280 -0
  45. package/builtin-skills/antv-g2-chart/references/data/g2-data-kde.md +426 -0
  46. package/builtin-skills/antv-g2-chart/references/data/g2-data-log.md +140 -0
  47. package/builtin-skills/antv-g2-chart/references/data/g2-data-slice.md +147 -0
  48. package/builtin-skills/antv-g2-chart/references/data/g2-data-sort.md +251 -0
  49. package/builtin-skills/antv-g2-chart/references/data/g2-data-sortby.md +183 -0
  50. package/builtin-skills/antv-g2-chart/references/data/g2-data-transform-patterns.md +394 -0
  51. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-adaptive-filter.md +118 -0
  52. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-brush-axis.md +112 -0
  53. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-brush-filter.md +122 -0
  54. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-brush-x-y-highlight.md +127 -0
  55. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-brush-xy.md +118 -0
  56. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-brush.md +184 -0
  57. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-brushx-filter.md +170 -0
  58. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-brushx-highlight.md +186 -0
  59. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-brushy-filter.md +170 -0
  60. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-brushy-highlight.md +185 -0
  61. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-chart-index.md +127 -0
  62. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-drilldown.md +149 -0
  63. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-element-highlight-by.md +125 -0
  64. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-element-highlight.md +235 -0
  65. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-element-hover-scale.md +109 -0
  66. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-element-point-move.md +152 -0
  67. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-element-select-by.md +133 -0
  68. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-element-select.md +249 -0
  69. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-fisheye.md +117 -0
  70. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-legend-filter.md +130 -0
  71. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-legend-highlight.md +130 -0
  72. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-poptip.md +105 -0
  73. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-scrollbar-filter.md +144 -0
  74. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-slider-filter.md +231 -0
  75. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-slider-wheel.md +138 -0
  76. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-tooltip.md +192 -0
  77. package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-treemap-drilldown.md +152 -0
  78. package/builtin-skills/antv-g2-chart/references/label-transform/g2-label-transform-contrast-reverse.md +170 -0
  79. package/builtin-skills/antv-g2-chart/references/label-transform/g2-label-transform-exceed-adjust.md +146 -0
  80. package/builtin-skills/antv-g2-chart/references/label-transform/g2-label-transform-overflow-hide.md +185 -0
  81. package/builtin-skills/antv-g2-chart/references/label-transform/g2-label-transform-overflow-stroke.md +147 -0
  82. package/builtin-skills/antv-g2-chart/references/label-transform/g2-label-transform-overlap-dodge-y.md +225 -0
  83. package/builtin-skills/antv-g2-chart/references/label-transform/g2-label-transform-overlap-hide.md +213 -0
  84. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-arc-diagram.md +196 -0
  85. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-arc-donut.md +148 -0
  86. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-arc-pie.md +212 -0
  87. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-area-basic.md +168 -0
  88. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-area-stacked.md +150 -0
  89. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-beeswarm.md +134 -0
  90. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-bi-directional-bar.md +297 -0
  91. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-box-boxplot.md +163 -0
  92. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-boxplot.md +340 -0
  93. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-bullet.md +203 -0
  94. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-cell-heatmap.md +370 -0
  95. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-chord.md +341 -0
  96. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-connector.md +126 -0
  97. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-contourline.md +243 -0
  98. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-density.md +457 -0
  99. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-distribution-curve.md +298 -0
  100. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-funnel.md +329 -0
  101. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-gantt.md +208 -0
  102. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-gauge.md +247 -0
  103. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-heatmap.md +130 -0
  104. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-histogram.md +186 -0
  105. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-image.md +129 -0
  106. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-interval-basic.md +528 -0
  107. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-interval-grouped.md +161 -0
  108. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-interval-normalized.md +147 -0
  109. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-interval-stacked.md +183 -0
  110. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-k-chart.md +237 -0
  111. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-line-basic.md +353 -0
  112. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-line-multi.md +156 -0
  113. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-linex-liney.md +176 -0
  114. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-link.md +134 -0
  115. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-liquid.md +125 -0
  116. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-mosaic.md +257 -0
  117. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-pack.md +424 -0
  118. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-parallel.md +195 -0
  119. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-partition.md +275 -0
  120. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-path.md +135 -0
  121. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-point-bubble.md +138 -0
  122. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-point-scatter.md +177 -0
  123. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-polygon.md +130 -0
  124. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-radar.md +231 -0
  125. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-radial-bar.md +226 -0
  126. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-range-rangey.md +253 -0
  127. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-rangex.md +293 -0
  128. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-rect.md +115 -0
  129. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-regression-curve.md +276 -0
  130. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-rose.md +182 -0
  131. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-sankey.md +217 -0
  132. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-shape.md +160 -0
  133. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-spiral.md +257 -0
  134. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-sunburst.md +327 -0
  135. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-text.md +309 -0
  136. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-tree.md +235 -0
  137. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-treemap.md +426 -0
  138. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-vector.md +108 -0
  139. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-venn.md +204 -0
  140. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-violin.md +307 -0
  141. package/builtin-skills/antv-g2-chart/references/marks/g2-mark-wordcloud.md +155 -0
  142. package/builtin-skills/antv-g2-chart/references/palette/g2-palette-category10.md +196 -0
  143. package/builtin-skills/antv-g2-chart/references/palette/g2-palette-category20.md +238 -0
  144. package/builtin-skills/antv-g2-chart/references/patterns/g2-pattern-performance.md +181 -0
  145. package/builtin-skills/antv-g2-chart/references/patterns/g2-pattern-responsive.md +232 -0
  146. package/builtin-skills/antv-g2-chart/references/patterns/g2-pattern-v4-to-v5.md +223 -0
  147. package/builtin-skills/antv-g2-chart/references/scales/g2-scale-band.md +127 -0
  148. package/builtin-skills/antv-g2-chart/references/scales/g2-scale-linear.md +259 -0
  149. package/builtin-skills/antv-g2-chart/references/scales/g2-scale-log.md +226 -0
  150. package/builtin-skills/antv-g2-chart/references/scales/g2-scale-ordinal.md +135 -0
  151. package/builtin-skills/antv-g2-chart/references/scales/g2-scale-point.md +242 -0
  152. package/builtin-skills/antv-g2-chart/references/scales/g2-scale-pow-sqrt.md +124 -0
  153. package/builtin-skills/antv-g2-chart/references/scales/g2-scale-quantile-quantize.md +119 -0
  154. package/builtin-skills/antv-g2-chart/references/scales/g2-scale-sequential.md +267 -0
  155. package/builtin-skills/antv-g2-chart/references/scales/g2-scale-threshold.md +133 -0
  156. package/builtin-skills/antv-g2-chart/references/scales/g2-scale-time.md +159 -0
  157. package/builtin-skills/antv-g2-chart/references/themes/g2-theme-builtin.md +192 -0
  158. package/builtin-skills/antv-g2-chart/references/themes/g2-theme-custom.md +183 -0
  159. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-bin.md +153 -0
  160. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-binx.md +133 -0
  161. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-diffy.md +130 -0
  162. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-dodgex.md +90 -0
  163. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-flexx.md +115 -0
  164. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-group.md +233 -0
  165. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-groupcolor.md +182 -0
  166. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-groupx.md +265 -0
  167. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-groupy.md +167 -0
  168. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-jitter.md +149 -0
  169. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-jitterx.md +177 -0
  170. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-jittery.md +177 -0
  171. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-normalizey.md +83 -0
  172. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-pack.md +164 -0
  173. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-sample.md +143 -0
  174. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-select.md +147 -0
  175. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-selectx.md +179 -0
  176. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-selecty.md +179 -0
  177. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-sort-color.md +115 -0
  178. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-sortx.md +285 -0
  179. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-sorty.md +117 -0
  180. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-stack-enter.md +158 -0
  181. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-stacky.md +218 -0
  182. package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-symmetryy.md +122 -0
  183. package/builtin-skills/app-skill/SKILL.md +48 -0
  184. package/builtin-skills/app-skill/references/auth.md +180 -0
  185. package/builtin-skills/app-skill/references/data-semantics.md +44 -0
  186. package/builtin-skills/app-skill/references/events.md +119 -0
  187. package/builtin-skills/app-skill/references/evolution.md +90 -0
  188. package/builtin-skills/app-skill/references/models.md +45 -0
  189. package/builtin-skills/app-skill/references/notification.md +123 -0
  190. package/builtin-skills/app-skill/references/process-builder.md +383 -0
  191. package/builtin-skills/app-skill/references/process-metrics.md +93 -0
  192. package/builtin-skills/app-skill/references/process.md +294 -0
  193. package/builtin-skills/chart-visualization/SKILL.md +101 -0
  194. package/builtin-skills/loom/SKILL.md +280 -0
  195. package/builtin-skills/loom/references/README.md +285 -0
  196. package/builtin-skills/loom/references/dashboard.md +257 -0
  197. package/builtin-skills/loom/references/data-model.md +191 -0
  198. package/builtin-skills/yuque-reader/SKILL.md +43 -0
  199. package/builtin-skills/yuque-reader/references/config.md +52 -0
  200. package/builtin-skills/yuque-reader/scripts/fetch_doc.py +121 -0
  201. package/dist/adapter-base.d.ts +31 -0
  202. package/dist/adapter-base.d.ts.map +1 -0
  203. package/dist/adapter-base.js +69 -0
  204. package/dist/adapter-base.js.map +1 -0
  205. package/dist/adapter-factory.d.ts +8 -0
  206. package/dist/adapter-factory.d.ts.map +1 -0
  207. package/dist/adapter-factory.js +25 -0
  208. package/dist/adapter-factory.js.map +1 -0
  209. package/dist/adapter-filesystem.d.ts +25 -11
  210. package/dist/adapter-filesystem.d.ts.map +1 -1
  211. package/dist/adapter-filesystem.js +230 -52
  212. package/dist/adapter-filesystem.js.map +1 -1
  213. package/dist/adapter-sqlite.d.ts +9 -23
  214. package/dist/adapter-sqlite.d.ts.map +1 -1
  215. package/dist/adapter-sqlite.js +94 -55
  216. package/dist/adapter-sqlite.js.map +1 -1
  217. package/dist/adapters/base.d.ts +31 -0
  218. package/dist/adapters/base.d.ts.map +1 -0
  219. package/dist/adapters/base.js +69 -0
  220. package/dist/adapters/base.js.map +1 -0
  221. package/dist/adapters/factory.d.ts +8 -0
  222. package/dist/adapters/factory.d.ts.map +1 -0
  223. package/dist/adapters/factory.js +25 -0
  224. package/dist/adapters/factory.js.map +1 -0
  225. package/dist/adapters/filesystem.d.ts +46 -0
  226. package/dist/adapters/filesystem.d.ts.map +1 -0
  227. package/dist/adapters/filesystem.js +321 -0
  228. package/dist/adapters/filesystem.js.map +1 -0
  229. package/dist/adapters/index.d.ts +10 -0
  230. package/dist/adapters/index.d.ts.map +1 -0
  231. package/dist/adapters/index.js +8 -0
  232. package/dist/adapters/index.js.map +1 -0
  233. package/dist/adapters/sqlite.d.ts +37 -0
  234. package/dist/adapters/sqlite.d.ts.map +1 -0
  235. package/dist/adapters/sqlite.js +264 -0
  236. package/dist/adapters/sqlite.js.map +1 -0
  237. package/dist/backend/ai/button-resolver.d.ts +18 -0
  238. package/dist/backend/ai/button-resolver.d.ts.map +1 -0
  239. package/dist/backend/ai/button-resolver.js +58 -0
  240. package/dist/backend/ai/button-resolver.js.map +1 -0
  241. package/dist/backend/ai/content-blocks.d.ts +18 -0
  242. package/dist/backend/ai/content-blocks.d.ts.map +1 -0
  243. package/dist/backend/ai/content-blocks.js +66 -0
  244. package/dist/backend/ai/content-blocks.js.map +1 -0
  245. package/dist/backend/ai/engine.d.ts +65 -0
  246. package/dist/backend/ai/engine.d.ts.map +1 -0
  247. package/dist/backend/ai/engine.js +237 -0
  248. package/dist/backend/ai/engine.js.map +1 -0
  249. package/dist/backend/ai/index.d.ts +11 -0
  250. package/dist/backend/ai/index.d.ts.map +1 -0
  251. package/dist/backend/ai/index.js +8 -0
  252. package/dist/backend/ai/index.js.map +1 -0
  253. package/dist/backend/ai/output-parser.d.ts +36 -0
  254. package/dist/backend/ai/output-parser.d.ts.map +1 -0
  255. package/dist/backend/ai/output-parser.js +264 -0
  256. package/dist/backend/ai/output-parser.js.map +1 -0
  257. package/dist/backend/ai/session-manager.d.ts +106 -0
  258. package/dist/backend/ai/session-manager.d.ts.map +1 -0
  259. package/dist/backend/ai/session-manager.js +304 -0
  260. package/dist/backend/ai/session-manager.js.map +1 -0
  261. package/dist/backend/auth/jwt.d.ts +16 -0
  262. package/dist/backend/auth/jwt.d.ts.map +1 -0
  263. package/dist/backend/auth/jwt.js +57 -0
  264. package/dist/backend/auth/jwt.js.map +1 -0
  265. package/dist/backend/auth/password.d.ts +10 -0
  266. package/dist/backend/auth/password.d.ts.map +1 -0
  267. package/dist/backend/auth/password.js +19 -0
  268. package/dist/backend/auth/password.js.map +1 -0
  269. package/dist/backend/auth/rbac.d.ts +36 -0
  270. package/dist/backend/auth/rbac.d.ts.map +1 -0
  271. package/dist/backend/auth/rbac.js +129 -0
  272. package/dist/backend/auth/rbac.js.map +1 -0
  273. package/dist/backend/auth/request-context.d.ts +15 -0
  274. package/dist/backend/auth/request-context.d.ts.map +1 -0
  275. package/dist/backend/auth/request-context.js +17 -0
  276. package/dist/backend/auth/request-context.js.map +1 -0
  277. package/dist/backend/auth/service-token.d.ts +11 -0
  278. package/dist/backend/auth/service-token.d.ts.map +1 -0
  279. package/dist/backend/auth/service-token.js +13 -0
  280. package/dist/backend/auth/service-token.js.map +1 -0
  281. package/dist/backend/auth/token-store.d.ts +28 -0
  282. package/dist/backend/auth/token-store.d.ts.map +1 -0
  283. package/dist/backend/auth/token-store.js +84 -0
  284. package/dist/backend/auth/token-store.js.map +1 -0
  285. package/dist/backend/auth/user-store.d.ts +42 -0
  286. package/dist/backend/auth/user-store.d.ts.map +1 -0
  287. package/dist/backend/auth/user-store.js +112 -0
  288. package/dist/backend/auth/user-store.js.map +1 -0
  289. package/dist/backend/events/event-bus.d.ts +39 -0
  290. package/dist/backend/events/event-bus.d.ts.map +1 -0
  291. package/dist/backend/events/event-bus.js +182 -0
  292. package/dist/backend/events/event-bus.js.map +1 -0
  293. package/dist/backend/events/event-emitting-adapter.d.ts +31 -0
  294. package/dist/backend/events/event-emitting-adapter.d.ts.map +1 -0
  295. package/dist/backend/events/event-emitting-adapter.js +70 -0
  296. package/dist/backend/events/event-emitting-adapter.js.map +1 -0
  297. package/dist/backend/events/event-registry.d.ts +24 -0
  298. package/dist/backend/events/event-registry.d.ts.map +1 -0
  299. package/dist/backend/events/event-registry.js +22 -0
  300. package/dist/backend/events/event-registry.js.map +1 -0
  301. package/dist/backend/events/index.d.ts +7 -0
  302. package/dist/backend/events/index.d.ts.map +1 -0
  303. package/dist/backend/events/index.js +7 -0
  304. package/dist/backend/events/index.js.map +1 -0
  305. package/dist/backend/index.d.ts +88 -0
  306. package/dist/backend/index.d.ts.map +1 -0
  307. package/dist/backend/index.js +422 -0
  308. package/dist/backend/index.js.map +1 -0
  309. package/dist/backend/loom-paths.d.ts +28 -0
  310. package/dist/backend/loom-paths.d.ts.map +1 -0
  311. package/dist/backend/loom-paths.js +45 -0
  312. package/dist/backend/loom-paths.js.map +1 -0
  313. package/dist/backend/notifications/interpolate.d.ts +6 -0
  314. package/dist/backend/notifications/interpolate.d.ts.map +1 -0
  315. package/dist/backend/notifications/interpolate.js +11 -0
  316. package/dist/backend/notifications/interpolate.js.map +1 -0
  317. package/dist/backend/notifications/notification-storage.d.ts +27 -0
  318. package/dist/backend/notifications/notification-storage.d.ts.map +1 -0
  319. package/dist/backend/notifications/notification-storage.js +160 -0
  320. package/dist/backend/notifications/notification-storage.js.map +1 -0
  321. package/dist/backend/observe/index.d.ts +6 -0
  322. package/dist/backend/observe/index.d.ts.map +1 -0
  323. package/dist/backend/observe/index.js +5 -0
  324. package/dist/backend/observe/index.js.map +1 -0
  325. package/dist/backend/observe/logger.d.ts +26 -0
  326. package/dist/backend/observe/logger.d.ts.map +1 -0
  327. package/dist/backend/observe/logger.js +68 -0
  328. package/dist/backend/observe/logger.js.map +1 -0
  329. package/dist/backend/observe/types.d.ts +26 -0
  330. package/dist/backend/observe/types.d.ts.map +1 -0
  331. package/dist/backend/observe/types.js +7 -0
  332. package/dist/backend/observe/types.js.map +1 -0
  333. package/dist/backend/process/engine.d.ts +105 -0
  334. package/dist/backend/process/engine.d.ts.map +1 -0
  335. package/dist/backend/process/engine.js +589 -0
  336. package/dist/backend/process/engine.js.map +1 -0
  337. package/dist/backend/process/index.d.ts +7 -0
  338. package/dist/backend/process/index.d.ts.map +1 -0
  339. package/dist/backend/process/index.js +6 -0
  340. package/dist/backend/process/index.js.map +1 -0
  341. package/dist/backend/process/logger.d.ts +32 -0
  342. package/dist/backend/process/logger.d.ts.map +1 -0
  343. package/dist/backend/process/logger.js +148 -0
  344. package/dist/backend/process/logger.js.map +1 -0
  345. package/dist/backend/process/metrics-store.d.ts +32 -0
  346. package/dist/backend/process/metrics-store.d.ts.map +1 -0
  347. package/dist/backend/process/metrics-store.js +108 -0
  348. package/dist/backend/process/metrics-store.js.map +1 -0
  349. package/dist/backend/process/migrate.d.ts +12 -0
  350. package/dist/backend/process/migrate.d.ts.map +1 -0
  351. package/dist/backend/process/migrate.js +145 -0
  352. package/dist/backend/process/migrate.js.map +1 -0
  353. package/dist/backend/process/queue.d.ts +33 -0
  354. package/dist/backend/process/queue.d.ts.map +1 -0
  355. package/dist/backend/process/queue.js +94 -0
  356. package/dist/backend/process/queue.js.map +1 -0
  357. package/dist/backend/process/registry.d.ts +29 -0
  358. package/dist/backend/process/registry.d.ts.map +1 -0
  359. package/dist/backend/process/registry.js +105 -0
  360. package/dist/backend/process/registry.js.map +1 -0
  361. package/dist/backend/process/trigger.d.ts +29 -0
  362. package/dist/backend/process/trigger.d.ts.map +1 -0
  363. package/dist/backend/process/trigger.js +108 -0
  364. package/dist/backend/process/trigger.js.map +1 -0
  365. package/dist/backend/routes/ai-config.d.ts +15 -0
  366. package/dist/backend/routes/ai-config.d.ts.map +1 -0
  367. package/dist/backend/routes/ai-config.js +171 -0
  368. package/dist/backend/routes/ai-config.js.map +1 -0
  369. package/dist/backend/routes/auth-routes.d.ts +33 -0
  370. package/dist/backend/routes/auth-routes.d.ts.map +1 -0
  371. package/dist/backend/routes/auth-routes.js +528 -0
  372. package/dist/backend/routes/auth-routes.js.map +1 -0
  373. package/dist/backend/routes/chat-sse.d.ts +17 -0
  374. package/dist/backend/routes/chat-sse.d.ts.map +1 -0
  375. package/dist/backend/routes/chat-sse.js +60 -0
  376. package/dist/backend/routes/chat-sse.js.map +1 -0
  377. package/dist/backend/routes/chat.d.ts +30 -0
  378. package/dist/backend/routes/chat.d.ts.map +1 -0
  379. package/dist/backend/routes/chat.js +258 -0
  380. package/dist/backend/routes/chat.js.map +1 -0
  381. package/dist/backend/routes/data.d.ts +16 -0
  382. package/dist/backend/routes/data.d.ts.map +1 -0
  383. package/dist/backend/routes/data.js +371 -0
  384. package/dist/backend/routes/data.js.map +1 -0
  385. package/dist/backend/routes/event-routes.d.ts +15 -0
  386. package/dist/backend/routes/event-routes.d.ts.map +1 -0
  387. package/dist/backend/routes/event-routes.js +35 -0
  388. package/dist/backend/routes/event-routes.js.map +1 -0
  389. package/dist/backend/routes/health.d.ts +7 -0
  390. package/dist/backend/routes/health.d.ts.map +1 -0
  391. package/dist/backend/routes/health.js +15 -0
  392. package/dist/backend/routes/health.js.map +1 -0
  393. package/dist/backend/routes/index.d.ts +22 -0
  394. package/dist/backend/routes/index.d.ts.map +1 -0
  395. package/dist/backend/routes/index.js +15 -0
  396. package/dist/backend/routes/index.js.map +1 -0
  397. package/dist/backend/routes/notification-routes.d.ts +22 -0
  398. package/dist/backend/routes/notification-routes.d.ts.map +1 -0
  399. package/dist/backend/routes/notification-routes.js +128 -0
  400. package/dist/backend/routes/notification-routes.js.map +1 -0
  401. package/dist/backend/routes/process-routes.d.ts +17 -0
  402. package/dist/backend/routes/process-routes.d.ts.map +1 -0
  403. package/dist/backend/routes/process-routes.js +303 -0
  404. package/dist/backend/routes/process-routes.js.map +1 -0
  405. package/dist/backend/routes/session-routes.d.ts +22 -0
  406. package/dist/backend/routes/session-routes.d.ts.map +1 -0
  407. package/dist/backend/routes/session-routes.js +97 -0
  408. package/dist/backend/routes/session-routes.js.map +1 -0
  409. package/dist/backend/routes/skill-archive.d.ts +13 -0
  410. package/dist/backend/routes/skill-archive.d.ts.map +1 -0
  411. package/dist/backend/routes/skill-archive.js +84 -0
  412. package/dist/backend/routes/skill-archive.js.map +1 -0
  413. package/dist/backend/routes/skill-parser.d.ts +41 -0
  414. package/dist/backend/routes/skill-parser.d.ts.map +1 -0
  415. package/dist/backend/routes/skill-parser.js +184 -0
  416. package/dist/backend/routes/skill-parser.js.map +1 -0
  417. package/dist/backend/routes/skill-service.d.ts +113 -0
  418. package/dist/backend/routes/skill-service.d.ts.map +1 -0
  419. package/dist/backend/routes/skill-service.js +265 -0
  420. package/dist/backend/routes/skill-service.js.map +1 -0
  421. package/dist/backend/routes/skills.d.ts +18 -0
  422. package/dist/backend/routes/skills.d.ts.map +1 -0
  423. package/dist/backend/routes/skills.js +168 -0
  424. package/dist/backend/routes/skills.js.map +1 -0
  425. package/dist/backend/routes/upload.d.ts +25 -0
  426. package/dist/backend/routes/upload.d.ts.map +1 -0
  427. package/dist/backend/routes/upload.js +100 -0
  428. package/dist/backend/routes/upload.js.map +1 -0
  429. package/dist/backend/services/skill-archive.d.ts +13 -0
  430. package/dist/backend/services/skill-archive.d.ts.map +1 -0
  431. package/dist/backend/services/skill-archive.js +84 -0
  432. package/dist/backend/services/skill-archive.js.map +1 -0
  433. package/dist/backend/services/skill-parser.d.ts +41 -0
  434. package/dist/backend/services/skill-parser.d.ts.map +1 -0
  435. package/dist/backend/services/skill-parser.js +184 -0
  436. package/dist/backend/services/skill-parser.js.map +1 -0
  437. package/dist/backend/services/skill-service.d.ts +113 -0
  438. package/dist/backend/services/skill-service.d.ts.map +1 -0
  439. package/dist/backend/services/skill-service.js +265 -0
  440. package/dist/backend/services/skill-service.js.map +1 -0
  441. package/dist/bin.d.ts +8 -0
  442. package/dist/bin.d.ts.map +1 -0
  443. package/dist/bin.js +12 -0
  444. package/dist/bin.js.map +1 -0
  445. package/dist/capability-generator.d.ts +21 -6
  446. package/dist/capability-generator.d.ts.map +1 -1
  447. package/dist/capability-generator.js +88 -261
  448. package/dist/capability-generator.js.map +1 -1
  449. package/dist/cli/commands/auth.d.ts +11 -0
  450. package/dist/cli/commands/auth.d.ts.map +1 -0
  451. package/dist/cli/commands/auth.js +211 -0
  452. package/dist/cli/commands/auth.js.map +1 -0
  453. package/dist/cli/commands/build.d.ts +11 -0
  454. package/dist/cli/commands/build.d.ts.map +1 -0
  455. package/dist/cli/commands/build.js +170 -0
  456. package/dist/cli/commands/build.js.map +1 -0
  457. package/dist/cli/commands/data.d.ts +15 -0
  458. package/dist/cli/commands/data.d.ts.map +1 -0
  459. package/dist/cli/commands/data.js +214 -0
  460. package/dist/cli/commands/data.js.map +1 -0
  461. package/dist/cli/commands/dev.d.ts +8 -0
  462. package/dist/cli/commands/dev.d.ts.map +1 -0
  463. package/dist/cli/commands/dev.js +97 -0
  464. package/dist/cli/commands/dev.js.map +1 -0
  465. package/dist/cli/commands/eject.d.ts +12 -0
  466. package/dist/cli/commands/eject.d.ts.map +1 -0
  467. package/dist/cli/commands/eject.js +451 -0
  468. package/dist/cli/commands/eject.js.map +1 -0
  469. package/dist/cli/commands/generate-capabilities.d.ts +8 -0
  470. package/dist/cli/commands/generate-capabilities.d.ts.map +1 -0
  471. package/dist/cli/commands/generate-capabilities.js +41 -0
  472. package/dist/cli/commands/generate-capabilities.js.map +1 -0
  473. package/dist/cli/commands/generate-cli-command.d.ts +8 -0
  474. package/dist/cli/commands/generate-cli-command.d.ts.map +1 -0
  475. package/dist/cli/commands/generate-cli-command.js +64 -0
  476. package/dist/cli/commands/generate-cli-command.js.map +1 -0
  477. package/dist/cli/commands/generate-dashboard.d.ts +9 -0
  478. package/dist/cli/commands/generate-dashboard.d.ts.map +1 -0
  479. package/dist/cli/commands/generate-dashboard.js +113 -0
  480. package/dist/cli/commands/generate-dashboard.js.map +1 -0
  481. package/dist/cli/commands/generate-notification.d.ts +9 -0
  482. package/dist/cli/commands/generate-notification.d.ts.map +1 -0
  483. package/dist/cli/commands/generate-notification.js +24 -0
  484. package/dist/cli/commands/generate-notification.js.map +1 -0
  485. package/dist/cli/commands/generate-page.d.ts +9 -0
  486. package/dist/cli/commands/generate-page.d.ts.map +1 -0
  487. package/dist/cli/commands/generate-page.js +105 -0
  488. package/dist/cli/commands/generate-page.js.map +1 -0
  489. package/dist/cli/commands/generate-skill.d.ts +8 -0
  490. package/dist/cli/commands/generate-skill.d.ts.map +1 -0
  491. package/dist/cli/commands/generate-skill.js +75 -0
  492. package/dist/cli/commands/generate-skill.js.map +1 -0
  493. package/dist/cli/commands/generate-system-settings.d.ts +10 -0
  494. package/dist/cli/commands/generate-system-settings.d.ts.map +1 -0
  495. package/dist/cli/commands/generate-system-settings.js +231 -0
  496. package/dist/cli/commands/generate-system-settings.js.map +1 -0
  497. package/dist/cli/commands/generate.d.ts +6 -0
  498. package/dist/cli/commands/generate.d.ts.map +1 -0
  499. package/dist/cli/commands/generate.js +21 -0
  500. package/dist/cli/commands/generate.js.map +1 -0
  501. package/dist/cli/commands/init.d.ts +8 -0
  502. package/dist/cli/commands/init.d.ts.map +1 -0
  503. package/dist/cli/commands/init.js +388 -0
  504. package/dist/cli/commands/init.js.map +1 -0
  505. package/dist/cli/commands/notification.d.ts +8 -0
  506. package/dist/cli/commands/notification.d.ts.map +1 -0
  507. package/dist/cli/commands/notification.js +175 -0
  508. package/dist/cli/commands/notification.js.map +1 -0
  509. package/dist/cli/commands/observe.d.ts +9 -0
  510. package/dist/cli/commands/observe.d.ts.map +1 -0
  511. package/dist/cli/commands/observe.js +142 -0
  512. package/dist/cli/commands/observe.js.map +1 -0
  513. package/dist/cli/commands/process.d.ts +8 -0
  514. package/dist/cli/commands/process.d.ts.map +1 -0
  515. package/dist/cli/commands/process.js +538 -0
  516. package/dist/cli/commands/process.js.map +1 -0
  517. package/dist/cli/commands/role.d.ts +12 -0
  518. package/dist/cli/commands/role.d.ts.map +1 -0
  519. package/dist/cli/commands/role.js +208 -0
  520. package/dist/cli/commands/role.js.map +1 -0
  521. package/dist/cli/commands/serve.d.ts +12 -0
  522. package/dist/cli/commands/serve.d.ts.map +1 -0
  523. package/dist/cli/commands/serve.js +43 -0
  524. package/dist/cli/commands/serve.js.map +1 -0
  525. package/dist/cli/commands/skill.d.ts +9 -0
  526. package/dist/cli/commands/skill.d.ts.map +1 -0
  527. package/dist/cli/commands/skill.js +186 -0
  528. package/dist/cli/commands/skill.js.map +1 -0
  529. package/dist/cli/commands/user-cmd.d.ts +9 -0
  530. package/dist/cli/commands/user-cmd.d.ts.map +1 -0
  531. package/dist/cli/commands/user-cmd.js +195 -0
  532. package/dist/cli/commands/user-cmd.js.map +1 -0
  533. package/dist/cli/framework.d.ts +28 -0
  534. package/dist/cli/framework.d.ts.map +1 -0
  535. package/dist/cli/framework.js +29 -0
  536. package/dist/cli/framework.js.map +1 -0
  537. package/dist/cli/generators/capability-generator.d.ts +35 -0
  538. package/dist/cli/generators/capability-generator.d.ts.map +1 -0
  539. package/dist/cli/generators/capability-generator.js +369 -0
  540. package/dist/cli/generators/capability-generator.js.map +1 -0
  541. package/dist/cli/helpers/app-tsx-wiring.d.ts +54 -0
  542. package/dist/cli/helpers/app-tsx-wiring.d.ts.map +1 -0
  543. package/dist/cli/helpers/app-tsx-wiring.js +748 -0
  544. package/dist/cli/helpers/app-tsx-wiring.js.map +1 -0
  545. package/dist/cli/helpers/auth-client.d.ts +19 -0
  546. package/dist/cli/helpers/auth-client.d.ts.map +1 -0
  547. package/dist/cli/helpers/auth-client.js +42 -0
  548. package/dist/cli/helpers/auth-client.js.map +1 -0
  549. package/dist/cli/helpers/backup.d.ts +16 -0
  550. package/dist/cli/helpers/backup.d.ts.map +1 -0
  551. package/dist/cli/helpers/backup.js +34 -0
  552. package/dist/cli/helpers/backup.js.map +1 -0
  553. package/dist/cli/helpers/column-template.d.ts +20 -0
  554. package/dist/cli/helpers/column-template.d.ts.map +1 -0
  555. package/dist/cli/helpers/column-template.js +158 -0
  556. package/dist/cli/helpers/column-template.js.map +1 -0
  557. package/dist/cli/helpers/duration.d.ts +5 -0
  558. package/dist/cli/helpers/duration.d.ts.map +1 -0
  559. package/dist/cli/helpers/duration.js +5 -0
  560. package/dist/cli/helpers/duration.js.map +1 -0
  561. package/dist/cli/helpers/field-template.d.ts +14 -0
  562. package/dist/cli/helpers/field-template.d.ts.map +1 -0
  563. package/dist/cli/helpers/field-template.js +113 -0
  564. package/dist/cli/helpers/field-template.js.map +1 -0
  565. package/dist/cli/helpers/i18n-template.d.ts +21 -0
  566. package/dist/cli/helpers/i18n-template.d.ts.map +1 -0
  567. package/dist/cli/helpers/i18n-template.js +69 -0
  568. package/dist/cli/helpers/i18n-template.js.map +1 -0
  569. package/dist/cli/helpers/naming.d.ts +11 -0
  570. package/dist/cli/helpers/naming.d.ts.map +1 -0
  571. package/dist/cli/helpers/naming.js +21 -0
  572. package/dist/cli/helpers/naming.js.map +1 -0
  573. package/dist/cli/index.d.ts +9 -0
  574. package/dist/cli/index.d.ts.map +1 -0
  575. package/dist/cli/index.js +45 -0
  576. package/dist/cli/index.js.map +1 -0
  577. package/dist/cli/lib/credentials.d.ts +27 -0
  578. package/dist/cli/lib/credentials.d.ts.map +1 -0
  579. package/dist/cli/lib/credentials.js +112 -0
  580. package/dist/cli/lib/credentials.js.map +1 -0
  581. package/dist/cli/templates/auth-wiring.d.ts +17 -0
  582. package/dist/cli/templates/auth-wiring.d.ts.map +1 -0
  583. package/dist/cli/templates/auth-wiring.js +31 -0
  584. package/dist/cli/templates/auth-wiring.js.map +1 -0
  585. package/dist/cli/templates/backend-entry.d.ts +5 -0
  586. package/dist/cli/templates/backend-entry.d.ts.map +1 -0
  587. package/dist/cli/templates/backend-entry.js +17 -0
  588. package/dist/cli/templates/backend-entry.js.map +1 -0
  589. package/dist/cli/templates/claude-md.d.ts +20 -0
  590. package/dist/cli/templates/claude-md.d.ts.map +1 -0
  591. package/dist/cli/templates/claude-md.js +123 -0
  592. package/dist/cli/templates/claude-md.js.map +1 -0
  593. package/dist/cli/templates/crud-page.d.ts +14 -0
  594. package/dist/cli/templates/crud-page.d.ts.map +1 -0
  595. package/dist/cli/templates/crud-page.js +429 -0
  596. package/dist/cli/templates/crud-page.js.map +1 -0
  597. package/dist/cli/templates/dashboard-page.d.ts +11 -0
  598. package/dist/cli/templates/dashboard-page.d.ts.map +1 -0
  599. package/dist/cli/templates/dashboard-page.js +490 -0
  600. package/dist/cli/templates/dashboard-page.js.map +1 -0
  601. package/dist/cli/templates/frontend-entry.d.ts +11 -0
  602. package/dist/cli/templates/frontend-entry.d.ts.map +1 -0
  603. package/dist/cli/templates/frontend-entry.js +94 -0
  604. package/dist/cli/templates/frontend-entry.js.map +1 -0
  605. package/dist/cli/templates/gitignore.d.ts +5 -0
  606. package/dist/cli/templates/gitignore.d.ts.map +1 -0
  607. package/dist/cli/templates/gitignore.js +13 -0
  608. package/dist/cli/templates/gitignore.js.map +1 -0
  609. package/dist/cli/templates/index.d.ts +21 -0
  610. package/dist/cli/templates/index.d.ts.map +1 -0
  611. package/dist/cli/templates/index.js +21 -0
  612. package/dist/cli/templates/index.js.map +1 -0
  613. package/dist/cli/templates/login-page.d.ts +9 -0
  614. package/dist/cli/templates/login-page.d.ts.map +1 -0
  615. package/dist/cli/templates/login-page.js +75 -0
  616. package/dist/cli/templates/login-page.js.map +1 -0
  617. package/dist/cli/templates/loom-config.d.ts +13 -0
  618. package/dist/cli/templates/loom-config.d.ts.map +1 -0
  619. package/dist/cli/templates/loom-config.js +67 -0
  620. package/dist/cli/templates/loom-config.js.map +1 -0
  621. package/dist/cli/templates/model-management-page.d.ts +9 -0
  622. package/dist/cli/templates/model-management-page.d.ts.map +1 -0
  623. package/dist/cli/templates/model-management-page.js +299 -0
  624. package/dist/cli/templates/model-management-page.js.map +1 -0
  625. package/dist/cli/templates/notification-center-page.d.ts +9 -0
  626. package/dist/cli/templates/notification-center-page.d.ts.map +1 -0
  627. package/dist/cli/templates/notification-center-page.js +258 -0
  628. package/dist/cli/templates/notification-center-page.js.map +1 -0
  629. package/dist/cli/templates/notification-detail-page.d.ts +9 -0
  630. package/dist/cli/templates/notification-detail-page.d.ts.map +1 -0
  631. package/dist/cli/templates/notification-detail-page.js +102 -0
  632. package/dist/cli/templates/notification-detail-page.js.map +1 -0
  633. package/dist/cli/templates/package-json.d.ts +9 -0
  634. package/dist/cli/templates/package-json.d.ts.map +1 -0
  635. package/dist/cli/templates/package-json.js +41 -0
  636. package/dist/cli/templates/package-json.js.map +1 -0
  637. package/dist/cli/templates/process-management-page.d.ts +8 -0
  638. package/dist/cli/templates/process-management-page.d.ts.map +1 -0
  639. package/dist/cli/templates/process-management-page.js +902 -0
  640. package/dist/cli/templates/process-management-page.js.map +1 -0
  641. package/dist/cli/templates/readme.d.ts +9 -0
  642. package/dist/cli/templates/readme.d.ts.map +1 -0
  643. package/dist/cli/templates/readme.js +47 -0
  644. package/dist/cli/templates/readme.js.map +1 -0
  645. package/dist/cli/templates/skill-management-page.d.ts +9 -0
  646. package/dist/cli/templates/skill-management-page.d.ts.map +1 -0
  647. package/dist/cli/templates/skill-management-page.js +476 -0
  648. package/dist/cli/templates/skill-management-page.js.map +1 -0
  649. package/dist/cli/templates/system-settings-page.d.ts +10 -0
  650. package/dist/cli/templates/system-settings-page.d.ts.map +1 -0
  651. package/dist/cli/templates/system-settings-page.js +768 -0
  652. package/dist/cli/templates/system-settings-page.js.map +1 -0
  653. package/dist/cli/templates/tsconfig.d.ts +6 -0
  654. package/dist/cli/templates/tsconfig.d.ts.map +1 -0
  655. package/dist/cli/templates/tsconfig.js +41 -0
  656. package/dist/cli/templates/tsconfig.js.map +1 -0
  657. package/dist/cli/templates/user-management-page.d.ts +10 -0
  658. package/dist/cli/templates/user-management-page.d.ts.map +1 -0
  659. package/dist/cli/templates/user-management-page.js +495 -0
  660. package/dist/cli/templates/user-management-page.js.map +1 -0
  661. package/dist/cli/templates/vite-config.d.ts +5 -0
  662. package/dist/cli/templates/vite-config.d.ts.map +1 -0
  663. package/dist/cli/templates/vite-config.js +24 -0
  664. package/dist/cli/templates/vite-config.js.map +1 -0
  665. package/dist/cli/utils.d.ts +10 -0
  666. package/dist/cli/utils.d.ts.map +1 -0
  667. package/dist/cli/utils.js +31 -0
  668. package/dist/cli/utils.js.map +1 -0
  669. package/dist/commands.d.ts +1 -5
  670. package/dist/commands.d.ts.map +1 -1
  671. package/dist/commands.js +0 -11
  672. package/dist/commands.js.map +1 -1
  673. package/dist/config.d.ts +1191 -93
  674. package/dist/config.d.ts.map +1 -1
  675. package/dist/config.js +138 -15
  676. package/dist/config.js.map +1 -1
  677. package/dist/dashboard-config.d.ts +149 -0
  678. package/dist/dashboard-config.d.ts.map +1 -0
  679. package/dist/dashboard-config.js +40 -0
  680. package/dist/dashboard-config.js.map +1 -0
  681. package/dist/index.d.ts +23 -9
  682. package/dist/index.d.ts.map +1 -1
  683. package/dist/index.js +20 -5
  684. package/dist/index.js.map +1 -1
  685. package/dist/server-bin.d.ts +12 -0
  686. package/dist/server-bin.d.ts.map +1 -0
  687. package/dist/server-bin.js +43 -0
  688. package/dist/server-bin.js.map +1 -0
  689. package/dist/system-prompt.d.ts +20 -0
  690. package/dist/system-prompt.d.ts.map +1 -0
  691. package/dist/system-prompt.js +140 -0
  692. package/dist/system-prompt.js.map +1 -0
  693. package/dist/types/adapter.d.ts +30 -0
  694. package/dist/types/adapter.d.ts.map +1 -0
  695. package/dist/types/adapter.js +5 -0
  696. package/dist/types/adapter.js.map +1 -0
  697. package/dist/types/ai.d.ts +74 -0
  698. package/dist/types/ai.d.ts.map +1 -0
  699. package/dist/types/ai.js +5 -0
  700. package/dist/types/ai.js.map +1 -0
  701. package/dist/types/auth.d.ts +62 -0
  702. package/dist/types/auth.d.ts.map +1 -0
  703. package/dist/types/auth.js +5 -0
  704. package/dist/types/auth.js.map +1 -0
  705. package/dist/types/chat.d.ts +47 -0
  706. package/dist/types/chat.d.ts.map +1 -0
  707. package/dist/types/chat.js +8 -0
  708. package/dist/types/chat.js.map +1 -0
  709. package/dist/types/command.d.ts +25 -0
  710. package/dist/types/command.d.ts.map +1 -0
  711. package/dist/types/command.js +5 -0
  712. package/dist/types/command.js.map +1 -0
  713. package/dist/types/config.d.ts +65 -0
  714. package/dist/types/config.d.ts.map +1 -0
  715. package/dist/types/config.js +5 -0
  716. package/dist/types/config.js.map +1 -0
  717. package/dist/types/dashboard.d.ts +59 -0
  718. package/dist/types/dashboard.d.ts.map +1 -0
  719. package/dist/types/dashboard.js +5 -0
  720. package/dist/types/dashboard.js.map +1 -0
  721. package/dist/types/event.d.ts +103 -0
  722. package/dist/types/event.d.ts.map +1 -0
  723. package/dist/types/event.js +38 -0
  724. package/dist/types/event.js.map +1 -0
  725. package/dist/types/index.d.ts +21 -0
  726. package/dist/types/index.d.ts.map +1 -0
  727. package/dist/types/index.js +9 -0
  728. package/dist/types/index.js.map +1 -0
  729. package/dist/types/locale.d.ts +21 -0
  730. package/dist/types/locale.d.ts.map +1 -0
  731. package/dist/types/locale.js +36 -0
  732. package/dist/types/locale.js.map +1 -0
  733. package/dist/types/model.d.ts +69 -0
  734. package/dist/types/model.d.ts.map +1 -0
  735. package/dist/types/model.js +5 -0
  736. package/dist/types/model.js.map +1 -0
  737. package/dist/types/notification.d.ts +31 -0
  738. package/dist/types/notification.d.ts.map +1 -0
  739. package/dist/types/notification.js +5 -0
  740. package/dist/types/notification.js.map +1 -0
  741. package/dist/types/process.d.ts +150 -0
  742. package/dist/types/process.d.ts.map +1 -0
  743. package/dist/types/process.js +5 -0
  744. package/dist/types/process.js.map +1 -0
  745. package/dist/types.d.ts +4 -199
  746. package/dist/types.d.ts.map +1 -1
  747. package/dist/types.js +4 -3
  748. package/dist/types.js.map +1 -1
  749. package/dist/utils/duration.d.ts +8 -0
  750. package/dist/utils/duration.d.ts.map +1 -0
  751. package/dist/utils/duration.js +22 -0
  752. package/dist/utils/duration.js.map +1 -0
  753. package/dist/utils/id.d.ts +7 -0
  754. package/dist/utils/id.d.ts.map +1 -0
  755. package/dist/utils/id.js +9 -0
  756. package/dist/utils/id.js.map +1 -0
  757. package/package.json +24 -3
@@ -0,0 +1,191 @@
1
+ # Data Model Reference
2
+
3
+ Advanced configuration for `loom.config.ts`. Full type definitions from `packages/core/src/types.ts`.
4
+
5
+ ## FieldDefinition
6
+
7
+ ```typescript
8
+ {
9
+ name: 'status', // ^[a-zA-Z_][a-zA-Z0-9_]*$
10
+ type: 'string', // 'string' | 'number' | 'boolean' | 'date' | 'string[]' | 'number[]' | 'json'
11
+ required: true, // optional, default false
12
+ description: { 'zh-CN': '状态', 'en-US': 'Status' }, // optional: LocaleString, shown in generated forms
13
+ default: 'active', // optional: auto-filled on write if not provided
14
+ enum: ['active', 'inactive', 'archived'], // optional: restrict string field to allowed values (storage values)
15
+ enumLabels: { // optional: display labels per locale for each enum value
16
+ active: { 'zh-CN': '激活', 'en-US': 'Active' },
17
+ inactive: { 'zh-CN': '停用', 'en-US': 'Inactive' },
18
+ archived: { 'zh-CN': '归档', 'en-US': 'Archived' },
19
+ },
20
+ }
21
+ ```
22
+
23
+ ## ModelSchema
24
+
25
+ ```typescript
26
+ {
27
+ name: 'orders', // ^[a-zA-Z][a-zA-Z0-9_]*$, will be used as React component name
28
+ description: { 'zh-CN': '订单记录', 'en-US': 'Order Records' }, // optional: LocaleString, shown in page heading
29
+ fields: [...],
30
+ indexes?: [{ fields: ['userId', 'status'], unique: false }],
31
+ adapters?: { // optional: per-model adapter override
32
+ filesystem: { dir: 'orders', format: 'json' | 'yaml', datePattern: 'YYYY-MM' }, // datePattern: date-partitioned sub-directories using the model's first date field
33
+ sqlite: { table: 'orders' },
34
+ },
35
+ crud?: { // optional: control CRUD page features (all default to true when omitted)
36
+ batch: true, // optional: enable batch selection and batch delete
37
+ export: true, // optional: enable CSV export button
38
+ import: true, // optional: enable CSV import button
39
+ deleteWithUndo: true, // optional: delete-with-undo instead of confirm dialog; set false to use confirm dialog
40
+ },
41
+ }
42
+ ```
43
+
44
+ ## AIButtonConfig
45
+
46
+ ```typescript
47
+ aiButtons: [{
48
+ id: 'summarize', // required: unique identifier
49
+ label: { 'zh-CN': '总结', 'en-US': 'Summarize' }, // required: LocaleString, button text
50
+ icon: 'FileTextOutlined', // optional: Ant Design icon component name
51
+ prompt: '请总结以下内容', // required: supports {{var}} placeholders, replaced with current row field values
52
+ placement: 'wrong_questions', // optional: limit to specific model pages, comma-separated; omit for all pages
53
+ }]
54
+ ```
55
+
56
+ ## AIConfig
57
+
58
+ ```typescript
59
+ ai: {
60
+ engine: 'claude-code', // default 'claude-code'
61
+ claudeCode: {
62
+ path: '/usr/local/bin/claude', // optional: custom claude binary path
63
+ pluginRoot: '.claude', // optional: plugin root directory
64
+ timeout: 120000, // optional: command timeout in ms
65
+ skipPermissions: false, // optional: skip permission prompts (default: true in headless mode — Claude Code runs without interactive terminal, so permissions are skipped unless explicitly set to false)
66
+ models: [ // optional: available AI models
67
+ {
68
+ name: 'GLM-5.1', // required: model name, passed to --model flag
69
+ authToken: 'sk-xxx', // optional: ANTHROPIC_AUTH_TOKEN, passed via --settings
70
+ baseUrl: 'https://api.example.com', // optional: ANTHROPIC_BASE_URL, passed via --settings
71
+ isDefault: true, // optional: default model for new chats
72
+ },
73
+ ],
74
+ },
75
+ }
76
+ ```
77
+
78
+ Models can be managed via the Model Management page (System Settings → Model Management) or by editing `loom.config.ts` directly. On `loom init`, the default model is auto-detected from `~/.claude/settings.json` (ANTHROPIC_MODEL, ANTHROPIC_AUTH_TOKEN, ANTHROPIC_BASE_URL).
79
+
80
+ ## ServerConfig
81
+
82
+ ```typescript
83
+ server: {
84
+ port: 3000, // default 3000
85
+ host: '0.0.0.0',
86
+ cors: true, // default true
87
+ staticDir: './dist/frontend',
88
+ }
89
+ ```
90
+
91
+ ## DataConfig
92
+
93
+ ```typescript
94
+ data: {
95
+ defaultAdapter: 'filesystem' | 'sqlite',
96
+ models: [...],
97
+ sqlite: { filename: 'loom.db' }, // optional, default 'loom.db'
98
+ }
99
+ ```
100
+
101
+ ## UIConfig
102
+
103
+ ```typescript
104
+ ui: {
105
+ theme: { // optional: theme configuration
106
+ defaultMode: 'light', // optional: 'light' | 'dark', default 'light'
107
+ token: { colorPrimary: '#1677ff' }, // optional: Ant Design token overrides
108
+ },
109
+ siderCollapsed: false, // optional: sidebar collapsed by default on desktop
110
+ showHeader: true, // optional: show header bar (breadcrumbs + theme toggle)
111
+ locale: 'zh-CN', // optional: 'zh-CN' | 'en-US', default 'zh-CN'
112
+ }
113
+ ```
114
+
115
+ ## RelationConfig
116
+
117
+ ```typescript
118
+ relations: [{
119
+ name: 'question_reviews', // required: unique relation identifier
120
+ label: { 'zh-CN': '复习记录', 'en-US': 'Review Records' }, // optional: LocaleString
121
+ from: 'wrong_questions', // required: source model name
122
+ to: 'review_plans', // required: target model name
123
+ foreignKey: 'questionId', // required: foreign key field in target model
124
+ type: 'hasMany', // required: 'hasOne' | 'hasMany' | 'manyToMany'
125
+ through: 'enrollments', // optional: pivot model for manyToMany
126
+ }]
127
+ ```
128
+
129
+ Relations are displayed in the detail drawer of generated CRUD pages. `hasMany` and `manyToMany` relations show as a nested table.
130
+
131
+ ## DashboardConfig
132
+
133
+ ```typescript
134
+ dashboards: [{
135
+ name: 'overview', // ^[a-zA-Z][a-zA-Z0-9_]*$, same naming rules as model
136
+ description: { 'zh-CN': '数据概览', 'en-US': 'Overview' }, // optional: LocaleString, shown in sidebar
137
+ models: ['items'], // required: data models included in this dashboard
138
+ defaultDateField: 'createdAt', // optional: default date field for date range filtering across all widgets
139
+ filterDimensions: [ // optional: filter bar dimensions for interactive filtering (select only; use defaultDateField for date range)
140
+ {
141
+ field: 'status', // required: field name to filter on
142
+ label: { 'zh-CN': '状态', 'en-US': 'Status' }, // required: LocaleString
143
+ type: 'select', // required: 'select' (only type currently supported)
144
+ options: ['active', 'inactive'], // optional: for 'select' type, auto-derived from data if omitted
145
+ },
146
+ ],
147
+ layout: [{ // required: at least one row
148
+ row: [{ // at least one widget per row
149
+ type: 'stat' | 'pie' | 'ring' | 'bar' | 'line' | 'area' | 'scatter' | 'radar' | 'funnel' | 'treemap' | 'gauge' | 'liquid' | 'heatmap' | 'stacked_bar' | 'grouped_bar',
150
+ title: { 'zh-CN': '任务总数', 'en-US': 'Total Tasks' }, // required: LocaleString, display title
151
+ model: 'items', // required: data model name
152
+ span: 6, // optional: Ant Design Grid Col span (1-24), auto-equal-split if omitted
153
+ groupBy: 'status', // optional: group by field for aggregation
154
+ crossGroupBy: 'priority', // optional: second group-by for 2D charts (heatmap, stacked_bar, grouped_bar)
155
+ aggregate: 'count', // optional: 'count' | 'sum' | 'avg' | 'min' | 'max' | 'ratio', default count
156
+ field: 'score', // optional: numeric field for sum/avg/min/max
157
+ filter: { status: 'active' }, // optional: pre-aggregation filter
158
+ interval: 'month', // optional: 'day' | 'week' | 'month' for date groupBy
159
+ dateField: 'createdAt', // optional: per-widget date field override (falls back to dashboard.defaultDateField)
160
+ }],
161
+ }],
162
+ }]
163
+ ```
164
+
165
+ ## useSchema Runtime API
166
+
167
+ Generated pages use `useSchema(model)` to fetch model schema and AI buttons at runtime. Schema is auto-resolved by current locale:
168
+
169
+ ```typescript
170
+ const { schema, loading, error } = useSchema('items');
171
+ // schema.fields — field definitions with resolved LocaleString (e.g. description is string, not LocaleString)
172
+ // schema.fields[].enumLabels — resolved to { [enumValue]: displayLabel } for current locale
173
+ // schema.aiButtons — AI buttons filtered by placement, label resolved to current locale
174
+
175
+ // Convert schema enum to antd formats (uses resolved enumLabels):
176
+ filterOptions(schema, 'status') // → [{ text: '激活', value: 'active' }, ...]
177
+ selectOptions(schema, 'status') // → [{ label: '激活', value: 'active' }, ...]
178
+
179
+ // Get display label for a single enum value:
180
+ enumLabel(schema, 'status', 'active') // → '激活'
181
+ ```
182
+
183
+ ## LocaleString
184
+
185
+ All user-facing string fields support `LocaleString` format: `string | Record<string, string>`.
186
+
187
+ - **Simple**: `description: '科目'` — same text for all locales
188
+ - **Multi-locale**: `description: { 'zh-CN': '科目', 'en-US': 'Subject' }` — auto-translated on locale switch
189
+ - **Fallback**: requested locale → `'zh-CN'` → first available value
190
+
191
+ Supported fields: `project.description`, `ModelSchema.description`, `FieldDefinition.description`, `AIButtonConfig.label`, `DashboardConfig.description`, `DashboardWidget.title`, `RelationConfig.label`, `DashboardFilterDimension.label`
@@ -0,0 +1,43 @@
1
+ ---
2
+ name: yuque-reader
3
+ description: "Read and extract content from Yuque (语雀) documents."
4
+ ---
5
+
6
+ # Yuque Reader
7
+
8
+ ## Overview
9
+
10
+ Fetch content from Yuque documents via the internal SDL API. Returns document data including title, content, and metadata as JSON.
11
+
12
+ ## Reading Documents
13
+
14
+ ### Using the bundled script
15
+
16
+ Execute the fetch script for direct document retrieval:
17
+
18
+ ```bash
19
+ # Fetch and display document
20
+ python3 scripts/fetch_doc.py <yuque_url>
21
+
22
+ # Save to file
23
+ python3 scripts/fetch_doc.py <yuque_url> --output document.json
24
+
25
+ # Use token argument instead of environment variable
26
+ python3 scripts/fetch_doc.py <yuque_url> --token your_token_here
27
+ ```
28
+
29
+ ### Large content handling
30
+
31
+ When document content exceeds 20,000 characters, ALWAYS write the content to `/tmp/<sanitized_title>.txt` instead of displaying in the response. The filename should use a sanitized version of the document title (replace spaces with underscores, remove special characters).
32
+
33
+ When working with large saved files, use the Read tool with `offset` and `limit` parameters to read portions incrementally. This prevents flooding the context window and allows focused analysis of specific sections. Example: read first 100 lines to understand structure, then read relevant sections as needed.
34
+
35
+ ## Authentication setup
36
+
37
+ See [references/config.md](references/config.md) for SDL_TOKEN configuration and API details.
38
+
39
+ ## Resources
40
+
41
+ ### scripts/fetch_doc.py
42
+
43
+ Python script for fetching Yuque documents directly. Can be executed standalone or called from within other scripts.
@@ -0,0 +1,52 @@
1
+ # Yuque Reader Configuration
2
+
3
+ ## Authentication
4
+
5
+ Requires `SDL_TOKEN` environment variable for API authentication. This token must be provisioned through the internal SDL platform.
6
+
7
+ API endpoint: `https://sdl.alipay.com/api/doc/getDocInfo.json`
8
+
9
+ ### Setting SDL_TOKEN
10
+
11
+ Set token in environment (temporary, only for current session):
12
+ ```bash
13
+ export SDL_TOKEN=your_token_here
14
+ ```
15
+
16
+ Set token permanently (recommended):
17
+ ```bash
18
+ # For macOS/Linux with zsh (default on macOS):
19
+ echo 'export SDL_TOKEN=your_token_here' >> ~/.zshrc
20
+ source ~/.zshrc
21
+
22
+ # For macOS/Linux with bash:
23
+ echo 'export SDL_TOKEN=your_token_here' >> ~/.bash_profile
24
+ source ~/.bash_profile
25
+
26
+ # Or manually edit the shell config file and add:
27
+ # export SDL_TOKEN=your_token_here
28
+ ```
29
+
30
+ ## API Request Format
31
+
32
+ ```json
33
+ {
34
+ "url": "<yuque_document_url>",
35
+ "containContent": true,
36
+ "fromPlatform": "YUQUE"
37
+ }
38
+ ```
39
+
40
+ ## Response Format
41
+
42
+ ```json
43
+ {
44
+ "success": true,
45
+ "data": {
46
+ "title": "Document Title",
47
+ "content": "Document content text...",
48
+ "url": "https://yuque.com/...",
49
+ "...": "additional metadata"
50
+ }
51
+ }
52
+ ```
@@ -0,0 +1,121 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Yuque Document Fetcher
4
+
5
+ Fetch Yuque document content via API. This script can be executed directly
6
+ and provides a simple interface for retrieving Yuque documents.
7
+
8
+ Usage:
9
+ python fetch_doc.py <yuque_url> --token <api_token>
10
+
11
+ Environment:
12
+ Set SDL_TOKEN environment variable or use --token argument.
13
+ """
14
+
15
+ import os
16
+ import sys
17
+ import json
18
+ import re
19
+ import random
20
+ import requests
21
+ from argparse import ArgumentParser
22
+
23
+
24
+ def sanitize_filename(title: str) -> str:
25
+ """Sanitize document title for use as filename.
26
+
27
+ Args:
28
+ title: Document title
29
+
30
+ Returns:
31
+ Sanitized filename (safe for filesystem)
32
+ """
33
+ # Replace spaces with underscores, remove/special characters
34
+ sanitized = re.sub(r'[^\w\-_.]', '_', title)
35
+ sanitized = re.sub(r'_+', '_', sanitized).strip('_')
36
+ return sanitized if sanitized else 'document'
37
+
38
+
39
+ def fetch_yuque_doc(url: str, token: str) -> dict:
40
+ """Fetch Yuque document content.
41
+
42
+ Args:
43
+ url: Yuque document URL
44
+ token: API token for authentication
45
+
46
+ Returns:
47
+ Document data as dictionary
48
+ """
49
+ headers = {
50
+ "Authorization": f"Bearer {token}",
51
+ "Content-Type": "application/json"
52
+ }
53
+
54
+ payload = {
55
+ "url": url,
56
+ "containContent": True,
57
+ "fromPlatform": "YUQUE"
58
+ }
59
+
60
+ # Note: This uses the internal SDL API endpoint
61
+ api_url = "https://sdl.alipay.com/api/doc/getDocInfo.json"
62
+
63
+ response = requests.post(api_url, headers=headers, json=payload)
64
+ response.raise_for_status()
65
+
66
+ data = response.json()
67
+ if data.get("success"):
68
+ return data.get("data", {})
69
+ else:
70
+ raise Exception(f"API error: {data.get('message', 'Unknown error')}")
71
+
72
+
73
+ def main():
74
+ parser = ArgumentParser(description="Fetch Yuque document content")
75
+ parser.add_argument("url", help="Yuque document URL")
76
+ parser.add_argument("--token", "-t", help="API token (default: SDL_TOKEN env var)")
77
+ parser.add_argument("--output", "-o", help="Output file path (default: stdout)")
78
+
79
+ args = parser.parse_args()
80
+
81
+ # Get token from argument or environment
82
+ token = args.token or os.getenv("SDL_TOKEN")
83
+ if not token:
84
+ print("Error: SDL_TOKEN environment variable or --token argument required", file=sys.stderr)
85
+ sys.exit(1)
86
+
87
+ try:
88
+ data = fetch_yuque_doc(args.url, token)
89
+ content = data.get("content", "")
90
+ title = data.get("title", "Document")
91
+ result = json.dumps(data, ensure_ascii=False, indent=2)
92
+
93
+ if args.output:
94
+ # User specified output - use it directly
95
+ with open(args.output, "w", encoding="utf-8") as f:
96
+ f.write(result)
97
+ print(f"Document saved to {args.output}")
98
+ elif len(content) > 20000:
99
+ # Large content: write only the content to /tmp
100
+ sanitized_title = sanitize_filename(title)
101
+ if title == "Document":
102
+ # Add random number when title is default fallback
103
+ sanitized_title = f"{sanitized_title}_{random.randint(1000, 9999)}"
104
+ output_path = f"/tmp/{sanitized_title}.txt"
105
+ with open(output_path, "w", encoding="utf-8") as f:
106
+ f.write(content)
107
+ print(f"Content too large ({len(content)} chars), saved to {output_path}")
108
+ # Print metadata without full content
109
+ metadata = {k: v for k, v in data.items() if k != "content"}
110
+ print(json.dumps(metadata, ensure_ascii=False, indent=2))
111
+ else:
112
+ # Normal output
113
+ print(result)
114
+
115
+ except Exception as e:
116
+ print(f"Error: {e}", file=sys.stderr)
117
+ sys.exit(1)
118
+
119
+
120
+ if __name__ == "__main__":
121
+ main()
@@ -0,0 +1,31 @@
1
+ /**
2
+ * BaseAdapter - Shared logic for DataAdapter implementations
3
+ *
4
+ * Extracts common validation, ID generation, and schema management
5
+ * used by both FileSystemAdapter and SQLiteAdapter.
6
+ */
7
+ import type { DataAdapter, DataRecord, ModelSchema, LoomConfig } from './types.js';
8
+ export declare abstract class BaseAdapter implements DataAdapter {
9
+ abstract readonly name: string;
10
+ protected schemas: Map<string, ModelSchema>;
11
+ protected config: LoomConfig;
12
+ constructor(config: LoomConfig);
13
+ abstract initialize(): Promise<void>;
14
+ abstract healthCheck(): Promise<boolean>;
15
+ abstract read(model: string, options?: import('./types.js').ReadOptions): Promise<DataRecord | DataRecord[] | null>;
16
+ abstract write(model: string, data: DataRecord): Promise<DataRecord>;
17
+ abstract update(model: string, id: string, data: DataRecord): Promise<DataRecord>;
18
+ abstract delete(model: string, id: string): Promise<void>;
19
+ /** Default count() — delegates to read(), overridden by adapters for efficiency */
20
+ count(model: string, options?: Omit<import('./types.js').ReadOptions, 'limit' | 'offset' | 'sort'>): Promise<number>;
21
+ getSchema(model: string): Promise<ModelSchema | undefined>;
22
+ listModels(): Promise<string[]>;
23
+ protected requireModel(model: string): void;
24
+ protected generateId(): string;
25
+ /**
26
+ * Validate required fields and apply defaults on a record.
27
+ * Returns the validated record with defaults applied.
28
+ */
29
+ protected validateAndApplyDefaults(model: string, record: DataRecord, skipIdValidation?: boolean): DataRecord;
30
+ }
31
+ //# sourceMappingURL=adapter-base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter-base.d.ts","sourceRoot":"","sources":["../src/adapter-base.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEnF,8BAAsB,WAAY,YAAW,WAAW;IACtD,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAa;IACxD,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC;gBAEjB,MAAM,EAAE,UAAU;IAO9B,QAAQ,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IACpC,QAAQ,CAAC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IACxC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,YAAY,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,GAAG,UAAU,EAAE,GAAG,IAAI,CAAC;IACnH,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IACpE,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IACjF,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAEzD,mFAAmF;IAC7E,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,YAAY,EAAE,WAAW,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAMpH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAI1D,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAMrC,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQ3C,SAAS,CAAC,UAAU,IAAI,MAAM;IAM9B;;;OAGG;IACH,SAAS,CAAC,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,gBAAgB,UAAQ,GAAG,UAAU;CA2B5G"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * BaseAdapter - Shared logic for DataAdapter implementations
3
+ *
4
+ * Extracts common validation, ID generation, and schema management
5
+ * used by both FileSystemAdapter and SQLiteAdapter.
6
+ */
7
+ export class BaseAdapter {
8
+ schemas = new Map();
9
+ config;
10
+ constructor(config) {
11
+ this.config = config;
12
+ for (const model of config.data.models) {
13
+ this.schemas.set(model.name, model);
14
+ }
15
+ }
16
+ /** Default count() — delegates to read(), overridden by adapters for efficiency */
17
+ async count(model, options) {
18
+ const result = await this.read(model, { filter: options?.filter, id: options?.id });
19
+ if (Array.isArray(result))
20
+ return result.length;
21
+ return result ? 1 : 0;
22
+ }
23
+ async getSchema(model) {
24
+ return this.schemas.get(model);
25
+ }
26
+ async listModels() {
27
+ return Array.from(this.schemas.keys());
28
+ }
29
+ // ── Shared Helpers ──
30
+ requireModel(model) {
31
+ if (!this.schemas.has(model)) {
32
+ throw new Error(`Unknown model: ${model}. Available: ${Array.from(this.schemas.keys()).join(', ')}`);
33
+ }
34
+ }
35
+ generateId() {
36
+ const timestamp = Date.now().toString(36);
37
+ const random = Math.random().toString(36).substring(2, 10);
38
+ return `rec_${timestamp}_${random}`;
39
+ }
40
+ /**
41
+ * Validate required fields and apply defaults on a record.
42
+ * Returns the validated record with defaults applied.
43
+ */
44
+ validateAndApplyDefaults(model, record, skipIdValidation = false) {
45
+ const schema = this.schemas.get(model);
46
+ // Apply default values for missing fields
47
+ for (const field of schema.fields) {
48
+ if (record[field.name] === undefined && field.default !== undefined) {
49
+ record[field.name] = field.default;
50
+ }
51
+ }
52
+ // Validate required fields
53
+ for (const field of schema.fields) {
54
+ if (skipIdValidation && field.name === 'id')
55
+ continue;
56
+ if (field.required && record[field.name] === undefined) {
57
+ throw new Error(`Missing required field: ${field.name}`);
58
+ }
59
+ }
60
+ // Validate enum constraints
61
+ for (const field of schema.fields) {
62
+ if (field.enum && record[field.name] !== undefined && !field.enum.includes(record[field.name])) {
63
+ throw new Error(`Invalid value for field '${field.name}': ${record[field.name]}. Allowed values: ${field.enum.join(', ')}`);
64
+ }
65
+ }
66
+ return record;
67
+ }
68
+ }
69
+ //# sourceMappingURL=adapter-base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter-base.js","sourceRoot":"","sources":["../src/adapter-base.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,OAAgB,WAAW;IAErB,OAAO,GAA6B,IAAI,GAAG,EAAE,CAAC;IAC9C,MAAM,CAAa;IAE7B,YAAY,MAAkB;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACvC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IASD,mFAAmF;IACnF,KAAK,CAAC,KAAK,CAAC,KAAa,EAAE,OAA6E;QACtG,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QACpF,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC,MAAM,CAAC;QAChD,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAa;QAC3B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,UAAU;QACd,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,uBAAuB;IAEb,YAAY,CAAC,KAAa;QAClC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CACb,kBAAkB,KAAK,gBAAgB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACpF,CAAC;QACJ,CAAC;IACH,CAAC;IAES,UAAU;QAClB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3D,OAAO,OAAO,SAAS,IAAI,MAAM,EAAE,CAAC;IACtC,CAAC;IAED;;;OAGG;IACO,wBAAwB,CAAC,KAAa,EAAE,MAAkB,EAAE,gBAAgB,GAAG,KAAK;QAC5F,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC;QAExC,0CAA0C;QAC1C,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClC,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBACpE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;YACrC,CAAC;QACH,CAAC;QAED,2BAA2B;QAC3B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClC,IAAI,gBAAgB,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI;gBAAE,SAAS;YACtD,IAAI,KAAK,CAAC,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;gBACvD,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;QAED,4BAA4B;QAC5B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClC,IAAI,KAAK,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAW,CAAC,EAAE,CAAC;gBACzG,MAAM,IAAI,KAAK,CAAC,4BAA4B,KAAK,CAAC,IAAI,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC9H,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Adapter Factory
3
+ *
4
+ * Creates the appropriate DataAdapter based on LoomConfig.data.defaultAdapter.
5
+ */
6
+ import type { LoomConfig, DataAdapter } from './types.js';
7
+ export declare function createAdapter(config: LoomConfig, projectRoot: string): DataAdapter;
8
+ //# sourceMappingURL=adapter-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter-factory.d.ts","sourceRoot":"","sources":["../src/adapter-factory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE1D,wBAAgB,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,GAAG,WAAW,CAgBlF"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Adapter Factory
3
+ *
4
+ * Creates the appropriate DataAdapter based on LoomConfig.data.defaultAdapter.
5
+ */
6
+ import path from 'path';
7
+ import { FileSystemAdapter } from './adapter-filesystem.js';
8
+ import { SQLiteAdapter } from './adapter-sqlite.js';
9
+ export function createAdapter(config, projectRoot) {
10
+ const adapterType = config.data.defaultAdapter || 'filesystem';
11
+ switch (adapterType) {
12
+ case 'sqlite':
13
+ return new SQLiteAdapter({
14
+ dbPath: path.join(projectRoot, 'data', config.data.sqlite?.filename ?? 'loom.db'),
15
+ config,
16
+ });
17
+ case 'filesystem':
18
+ default:
19
+ return new FileSystemAdapter({
20
+ dataDir: path.join(projectRoot, 'data'),
21
+ config,
22
+ });
23
+ }
24
+ }
25
+ //# sourceMappingURL=adapter-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter-factory.js","sourceRoot":"","sources":["../src/adapter-factory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,MAAM,UAAU,aAAa,CAAC,MAAkB,EAAE,WAAmB;IACnE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,IAAI,YAAY,CAAC;IAE/D,QAAQ,WAAW,EAAE,CAAC;QACpB,KAAK,QAAQ;YACX,OAAO,IAAI,aAAa,CAAC;gBACvB,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,IAAI,SAAS,CAAC;gBACjF,MAAM;aACP,CAAC,CAAC;QACL,KAAK,YAAY,CAAC;QAClB;YACE,OAAO,IAAI,iBAAiB,CAAC;gBAC3B,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC;gBACvC,MAAM;aACP,CAAC,CAAC;IACP,CAAC;AACH,CAAC"}
@@ -3,30 +3,44 @@
3
3
  *
4
4
  * Stores data as JSON files, organized by model.
5
5
  * Default adapter for development and small deployments.
6
+ * Supports date-pattern sub-directories (e.g. 'YYYY-MM') for time-partitioned data.
6
7
  */
7
- import type { DataAdapter, ModelSchema, ReadOptions, LoomConfig } from './types.js';
8
+ import type { DataRecord, ReadOptions, LoomConfig } from './types.js';
9
+ import { BaseAdapter } from './adapter-base.js';
8
10
  export interface FileSystemAdapterOptions {
9
11
  dataDir: string;
10
12
  config: LoomConfig;
11
13
  }
12
- export declare class FileSystemAdapter implements DataAdapter {
14
+ export declare class FileSystemAdapter extends BaseAdapter {
13
15
  readonly name = "filesystem";
14
16
  private dataDir;
15
- private config;
16
- private schemas;
17
17
  constructor(options: FileSystemAdapterOptions);
18
18
  initialize(): Promise<void>;
19
19
  healthCheck(): Promise<boolean>;
20
- read(model: string, options?: ReadOptions): Promise<unknown>;
21
- write(model: string, data: Record<string, unknown>): Promise<unknown>;
22
- update(model: string, id: string, data: Record<string, unknown>): Promise<unknown>;
20
+ read(model: string, options?: ReadOptions): Promise<DataRecord | DataRecord[] | null>;
21
+ write(model: string, data: DataRecord): Promise<DataRecord>;
22
+ update(model: string, id: string, data: DataRecord): Promise<DataRecord>;
23
23
  delete(model: string, id: string): Promise<void>;
24
- getSchema(model: string): Promise<ModelSchema | undefined>;
25
- listModels(): Promise<string[]>;
26
- private requireModel;
24
+ count(model: string, options?: Omit<ReadOptions, 'limit' | 'offset' | 'sort'>): Promise<number>;
27
25
  private getModelDir;
26
+ /** Get datePattern for a model, if configured */
27
+ private getDatePattern;
28
+ /**
29
+ * Get record file path.
30
+ * When datePattern is set, records are stored in date-partitioned sub-directories.
31
+ * The date is derived from the first date field in the record data.
32
+ */
28
33
  private getRecordPath;
34
+ /**
35
+ * Find a record's actual file path by searching date-partitioned sub-directories.
36
+ * Returns null if not found.
37
+ */
38
+ private findRecordPath;
39
+ /**
40
+ * Collect all .json file paths from a directory.
41
+ * When recursive is true, also scans immediate sub-directories (for date-partitioned data).
42
+ */
43
+ private collectJsonFiles;
29
44
  private matchesFilter;
30
- private generateId;
31
45
  }
32
46
  //# sourceMappingURL=adapter-filesystem.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapter-filesystem.d.ts","sourceRoot":"","sources":["../src/adapter-filesystem.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEpF,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,qBAAa,iBAAkB,YAAW,WAAW;IACnD,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,OAAO,CAAuC;gBAE1C,OAAO,EAAE,wBAAwB;IAUvC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAU3B,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAS/B,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAmC5D,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAwBrE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAmBlF,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWhD,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAI1D,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAMrC,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,UAAU;CAMnB"}
1
+ {"version":3,"file":"adapter-filesystem.d.ts","sourceRoot":"","sources":["../src/adapter-filesystem.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAsBhD,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,qBAAa,iBAAkB,SAAQ,WAAW;IAChD,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,EAAE,wBAAwB;IAKvC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAU3B,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAS/B,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,GAAG,UAAU,EAAE,GAAG,IAAI,CAAC;IAmErF,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAc3D,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAsBxE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAchD,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAyCrG,OAAO,CAAC,WAAW;IAOnB,iDAAiD;IACjD,OAAO,CAAC,cAAc;IAKtB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAsBrB;;;OAGG;YACW,cAAc;IAiC5B;;;OAGG;YACW,gBAAgB;IA6B9B,OAAO,CAAC,aAAa;CAoBtB"}