@loom-framework/core 0.1.0-alpha.16 → 0.1.0-alpha.160
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.
- package/builtin-skills/antd/SKILL.md +266 -0
- package/builtin-skills/antv-g2-chart/SKILL.md +1067 -0
- package/builtin-skills/antv-g2-chart/references/animations/g2-animation-intro.md +176 -0
- package/builtin-skills/antv-g2-chart/references/animations/g2-animation-keyframe.md +149 -0
- package/builtin-skills/antv-g2-chart/references/animations/g2-animation-types.md +253 -0
- package/builtin-skills/antv-g2-chart/references/components/g2-comp-annotation.md +237 -0
- package/builtin-skills/antv-g2-chart/references/components/g2-comp-axis-config.md +648 -0
- package/builtin-skills/antv-g2-chart/references/components/g2-comp-axis-radar.md +219 -0
- package/builtin-skills/antv-g2-chart/references/components/g2-comp-label-config.md +174 -0
- package/builtin-skills/antv-g2-chart/references/components/g2-comp-legend-category.md +278 -0
- package/builtin-skills/antv-g2-chart/references/components/g2-comp-legend-config.md +363 -0
- package/builtin-skills/antv-g2-chart/references/components/g2-comp-legend-continuous.md +264 -0
- package/builtin-skills/antv-g2-chart/references/components/g2-comp-scrollbar.md +276 -0
- package/builtin-skills/antv-g2-chart/references/components/g2-comp-slider.md +333 -0
- package/builtin-skills/antv-g2-chart/references/components/g2-comp-title.md +149 -0
- package/builtin-skills/antv-g2-chart/references/components/g2-comp-tooltip-config.md +358 -0
- package/builtin-skills/antv-g2-chart/references/compositions/g2-comp-facet-circle.md +97 -0
- package/builtin-skills/antv-g2-chart/references/compositions/g2-comp-facet-rect.md +241 -0
- package/builtin-skills/antv-g2-chart/references/compositions/g2-comp-geo-map.md +210 -0
- package/builtin-skills/antv-g2-chart/references/compositions/g2-comp-geoview.md +143 -0
- package/builtin-skills/antv-g2-chart/references/compositions/g2-comp-repeat-matrix.md +171 -0
- package/builtin-skills/antv-g2-chart/references/compositions/g2-comp-space-flex.md +142 -0
- package/builtin-skills/antv-g2-chart/references/compositions/g2-comp-space-layer.md +149 -0
- package/builtin-skills/antv-g2-chart/references/compositions/g2-comp-timing-keyframe.md +91 -0
- package/builtin-skills/antv-g2-chart/references/compositions/g2-comp-view.md +309 -0
- package/builtin-skills/antv-g2-chart/references/concepts/g2-concept-chart-selection.md +235 -0
- package/builtin-skills/antv-g2-chart/references/concepts/g2-concept-color-theory.md +287 -0
- package/builtin-skills/antv-g2-chart/references/concepts/g2-concept-visual-channels.md +180 -0
- package/builtin-skills/antv-g2-chart/references/coordinates/g2-coord-cartesian.md +131 -0
- package/builtin-skills/antv-g2-chart/references/coordinates/g2-coord-fisheye.md +131 -0
- package/builtin-skills/antv-g2-chart/references/coordinates/g2-coord-helix.md +141 -0
- package/builtin-skills/antv-g2-chart/references/coordinates/g2-coord-parallel.md +129 -0
- package/builtin-skills/antv-g2-chart/references/coordinates/g2-coord-polar.md +143 -0
- package/builtin-skills/antv-g2-chart/references/coordinates/g2-coord-radial.md +214 -0
- package/builtin-skills/antv-g2-chart/references/coordinates/g2-coord-theta.md +171 -0
- package/builtin-skills/antv-g2-chart/references/coordinates/g2-coord-transpose.md +195 -0
- package/builtin-skills/antv-g2-chart/references/core/g2-core-chart-init.md +266 -0
- package/builtin-skills/antv-g2-chart/references/core/g2-core-encode-channel.md +197 -0
- package/builtin-skills/antv-g2-chart/references/core/g2-core-view-composition.md +224 -0
- package/builtin-skills/antv-g2-chart/references/data/g2-data-ema.md +190 -0
- package/builtin-skills/antv-g2-chart/references/data/g2-data-fetch.md +167 -0
- package/builtin-skills/antv-g2-chart/references/data/g2-data-filter.md +212 -0
- package/builtin-skills/antv-g2-chart/references/data/g2-data-fold.md +260 -0
- package/builtin-skills/antv-g2-chart/references/data/g2-data-format-tabular.md +280 -0
- package/builtin-skills/antv-g2-chart/references/data/g2-data-kde.md +426 -0
- package/builtin-skills/antv-g2-chart/references/data/g2-data-log.md +140 -0
- package/builtin-skills/antv-g2-chart/references/data/g2-data-slice.md +147 -0
- package/builtin-skills/antv-g2-chart/references/data/g2-data-sort.md +251 -0
- package/builtin-skills/antv-g2-chart/references/data/g2-data-sortby.md +183 -0
- package/builtin-skills/antv-g2-chart/references/data/g2-data-transform-patterns.md +394 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-adaptive-filter.md +118 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-brush-axis.md +112 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-brush-filter.md +122 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-brush-x-y-highlight.md +127 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-brush-xy.md +118 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-brush.md +184 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-brushx-filter.md +170 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-brushx-highlight.md +186 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-brushy-filter.md +170 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-brushy-highlight.md +185 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-chart-index.md +127 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-drilldown.md +149 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-element-highlight-by.md +125 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-element-highlight.md +235 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-element-hover-scale.md +109 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-element-point-move.md +152 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-element-select-by.md +133 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-element-select.md +249 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-fisheye.md +117 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-legend-filter.md +130 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-legend-highlight.md +130 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-poptip.md +105 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-scrollbar-filter.md +144 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-slider-filter.md +231 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-slider-wheel.md +138 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-tooltip.md +192 -0
- package/builtin-skills/antv-g2-chart/references/interactions/g2-interaction-treemap-drilldown.md +152 -0
- package/builtin-skills/antv-g2-chart/references/label-transform/g2-label-transform-contrast-reverse.md +170 -0
- package/builtin-skills/antv-g2-chart/references/label-transform/g2-label-transform-exceed-adjust.md +146 -0
- package/builtin-skills/antv-g2-chart/references/label-transform/g2-label-transform-overflow-hide.md +185 -0
- package/builtin-skills/antv-g2-chart/references/label-transform/g2-label-transform-overflow-stroke.md +147 -0
- package/builtin-skills/antv-g2-chart/references/label-transform/g2-label-transform-overlap-dodge-y.md +225 -0
- package/builtin-skills/antv-g2-chart/references/label-transform/g2-label-transform-overlap-hide.md +213 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-arc-diagram.md +196 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-arc-donut.md +148 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-arc-pie.md +212 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-area-basic.md +168 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-area-stacked.md +150 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-beeswarm.md +134 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-bi-directional-bar.md +297 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-box-boxplot.md +163 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-boxplot.md +340 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-bullet.md +203 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-cell-heatmap.md +370 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-chord.md +341 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-connector.md +126 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-contourline.md +243 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-density.md +457 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-distribution-curve.md +298 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-funnel.md +329 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-gantt.md +208 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-gauge.md +247 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-heatmap.md +130 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-histogram.md +186 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-image.md +129 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-interval-basic.md +528 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-interval-grouped.md +161 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-interval-normalized.md +147 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-interval-stacked.md +183 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-k-chart.md +237 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-line-basic.md +353 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-line-multi.md +156 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-linex-liney.md +176 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-link.md +134 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-liquid.md +125 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-mosaic.md +257 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-pack.md +424 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-parallel.md +195 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-partition.md +275 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-path.md +135 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-point-bubble.md +138 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-point-scatter.md +177 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-polygon.md +130 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-radar.md +231 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-radial-bar.md +226 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-range-rangey.md +253 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-rangex.md +293 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-rect.md +115 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-regression-curve.md +276 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-rose.md +182 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-sankey.md +217 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-shape.md +160 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-spiral.md +257 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-sunburst.md +327 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-text.md +309 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-tree.md +235 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-treemap.md +426 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-vector.md +108 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-venn.md +204 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-violin.md +307 -0
- package/builtin-skills/antv-g2-chart/references/marks/g2-mark-wordcloud.md +155 -0
- package/builtin-skills/antv-g2-chart/references/palette/g2-palette-category10.md +196 -0
- package/builtin-skills/antv-g2-chart/references/palette/g2-palette-category20.md +238 -0
- package/builtin-skills/antv-g2-chart/references/patterns/g2-pattern-performance.md +181 -0
- package/builtin-skills/antv-g2-chart/references/patterns/g2-pattern-responsive.md +232 -0
- package/builtin-skills/antv-g2-chart/references/patterns/g2-pattern-v4-to-v5.md +223 -0
- package/builtin-skills/antv-g2-chart/references/scales/g2-scale-band.md +127 -0
- package/builtin-skills/antv-g2-chart/references/scales/g2-scale-linear.md +259 -0
- package/builtin-skills/antv-g2-chart/references/scales/g2-scale-log.md +226 -0
- package/builtin-skills/antv-g2-chart/references/scales/g2-scale-ordinal.md +135 -0
- package/builtin-skills/antv-g2-chart/references/scales/g2-scale-point.md +242 -0
- package/builtin-skills/antv-g2-chart/references/scales/g2-scale-pow-sqrt.md +124 -0
- package/builtin-skills/antv-g2-chart/references/scales/g2-scale-quantile-quantize.md +119 -0
- package/builtin-skills/antv-g2-chart/references/scales/g2-scale-sequential.md +267 -0
- package/builtin-skills/antv-g2-chart/references/scales/g2-scale-threshold.md +133 -0
- package/builtin-skills/antv-g2-chart/references/scales/g2-scale-time.md +159 -0
- package/builtin-skills/antv-g2-chart/references/themes/g2-theme-builtin.md +192 -0
- package/builtin-skills/antv-g2-chart/references/themes/g2-theme-custom.md +183 -0
- package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-bin.md +153 -0
- package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-binx.md +133 -0
- package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-diffy.md +130 -0
- package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-dodgex.md +90 -0
- package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-flexx.md +115 -0
- package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-group.md +233 -0
- package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-groupcolor.md +182 -0
- package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-groupx.md +265 -0
- package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-groupy.md +167 -0
- package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-jitter.md +149 -0
- package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-jitterx.md +177 -0
- package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-jittery.md +177 -0
- package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-normalizey.md +83 -0
- package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-pack.md +164 -0
- package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-sample.md +143 -0
- package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-select.md +147 -0
- package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-selectx.md +179 -0
- package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-selecty.md +179 -0
- package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-sort-color.md +115 -0
- package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-sortx.md +285 -0
- package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-sorty.md +117 -0
- package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-stack-enter.md +158 -0
- package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-stacky.md +218 -0
- package/builtin-skills/antv-g2-chart/references/transforms/g2-transform-symmetryy.md +122 -0
- package/builtin-skills/app-skill/SKILL.md +48 -0
- package/builtin-skills/app-skill/references/auth.md +180 -0
- package/builtin-skills/app-skill/references/data-semantics.md +44 -0
- package/builtin-skills/app-skill/references/events.md +119 -0
- package/builtin-skills/app-skill/references/evolution.md +90 -0
- package/builtin-skills/app-skill/references/models.md +45 -0
- package/builtin-skills/app-skill/references/notification.md +123 -0
- package/builtin-skills/app-skill/references/process-builder.md +383 -0
- package/builtin-skills/app-skill/references/process-metrics.md +93 -0
- package/builtin-skills/app-skill/references/process.md +294 -0
- package/builtin-skills/chart-visualization/SKILL.md +101 -0
- package/builtin-skills/loom/SKILL.md +265 -0
- package/builtin-skills/loom/references/README.md +285 -0
- package/builtin-skills/loom/references/dashboard.md +257 -0
- package/builtin-skills/loom/references/data-model.md +196 -0
- package/builtin-skills/yuque-reader/SKILL.md +43 -0
- package/builtin-skills/yuque-reader/references/config.md +52 -0
- package/builtin-skills/yuque-reader/scripts/fetch_doc.py +121 -0
- package/dist/adapter-base.d.ts +31 -0
- package/dist/adapter-base.d.ts.map +1 -0
- package/dist/adapter-base.js +69 -0
- package/dist/adapter-base.js.map +1 -0
- package/dist/adapter-factory.d.ts +8 -0
- package/dist/adapter-factory.d.ts.map +1 -0
- package/dist/adapter-factory.js +25 -0
- package/dist/adapter-factory.js.map +1 -0
- package/dist/adapter-filesystem.d.ts +25 -11
- package/dist/adapter-filesystem.d.ts.map +1 -1
- package/dist/adapter-filesystem.js +230 -52
- package/dist/adapter-filesystem.js.map +1 -1
- package/dist/adapter-sqlite.d.ts +9 -23
- package/dist/adapter-sqlite.d.ts.map +1 -1
- package/dist/adapter-sqlite.js +94 -55
- package/dist/adapter-sqlite.js.map +1 -1
- package/dist/adapters/base.d.ts +31 -0
- package/dist/adapters/base.d.ts.map +1 -0
- package/dist/adapters/base.js +69 -0
- package/dist/adapters/base.js.map +1 -0
- package/dist/adapters/factory.d.ts +8 -0
- package/dist/adapters/factory.d.ts.map +1 -0
- package/dist/adapters/factory.js +25 -0
- package/dist/adapters/factory.js.map +1 -0
- package/dist/adapters/filesystem.d.ts +46 -0
- package/dist/adapters/filesystem.d.ts.map +1 -0
- package/dist/adapters/filesystem.js +321 -0
- package/dist/adapters/filesystem.js.map +1 -0
- package/dist/adapters/index.d.ts +10 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +8 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/sqlite.d.ts +37 -0
- package/dist/adapters/sqlite.d.ts.map +1 -0
- package/dist/adapters/sqlite.js +264 -0
- package/dist/adapters/sqlite.js.map +1 -0
- package/dist/backend/ai/button-resolver.d.ts +18 -0
- package/dist/backend/ai/button-resolver.d.ts.map +1 -0
- package/dist/backend/ai/button-resolver.js +58 -0
- package/dist/backend/ai/button-resolver.js.map +1 -0
- package/dist/backend/ai/content-blocks.d.ts +18 -0
- package/dist/backend/ai/content-blocks.d.ts.map +1 -0
- package/dist/backend/ai/content-blocks.js +66 -0
- package/dist/backend/ai/content-blocks.js.map +1 -0
- package/dist/backend/ai/engine.d.ts +65 -0
- package/dist/backend/ai/engine.d.ts.map +1 -0
- package/dist/backend/ai/engine.js +237 -0
- package/dist/backend/ai/engine.js.map +1 -0
- package/dist/backend/ai/index.d.ts +11 -0
- package/dist/backend/ai/index.d.ts.map +1 -0
- package/dist/backend/ai/index.js +8 -0
- package/dist/backend/ai/index.js.map +1 -0
- package/dist/backend/ai/output-parser.d.ts +36 -0
- package/dist/backend/ai/output-parser.d.ts.map +1 -0
- package/dist/backend/ai/output-parser.js +264 -0
- package/dist/backend/ai/output-parser.js.map +1 -0
- package/dist/backend/ai/session-manager.d.ts +106 -0
- package/dist/backend/ai/session-manager.d.ts.map +1 -0
- package/dist/backend/ai/session-manager.js +304 -0
- package/dist/backend/ai/session-manager.js.map +1 -0
- package/dist/backend/auth/jwt.d.ts +16 -0
- package/dist/backend/auth/jwt.d.ts.map +1 -0
- package/dist/backend/auth/jwt.js +57 -0
- package/dist/backend/auth/jwt.js.map +1 -0
- package/dist/backend/auth/password.d.ts +10 -0
- package/dist/backend/auth/password.d.ts.map +1 -0
- package/dist/backend/auth/password.js +19 -0
- package/dist/backend/auth/password.js.map +1 -0
- package/dist/backend/auth/rbac.d.ts +36 -0
- package/dist/backend/auth/rbac.d.ts.map +1 -0
- package/dist/backend/auth/rbac.js +129 -0
- package/dist/backend/auth/rbac.js.map +1 -0
- package/dist/backend/auth/request-context.d.ts +15 -0
- package/dist/backend/auth/request-context.d.ts.map +1 -0
- package/dist/backend/auth/request-context.js +17 -0
- package/dist/backend/auth/request-context.js.map +1 -0
- package/dist/backend/auth/service-token.d.ts +11 -0
- package/dist/backend/auth/service-token.d.ts.map +1 -0
- package/dist/backend/auth/service-token.js +13 -0
- package/dist/backend/auth/service-token.js.map +1 -0
- package/dist/backend/auth/token-store.d.ts +28 -0
- package/dist/backend/auth/token-store.d.ts.map +1 -0
- package/dist/backend/auth/token-store.js +84 -0
- package/dist/backend/auth/token-store.js.map +1 -0
- package/dist/backend/auth/user-store.d.ts +42 -0
- package/dist/backend/auth/user-store.d.ts.map +1 -0
- package/dist/backend/auth/user-store.js +112 -0
- package/dist/backend/auth/user-store.js.map +1 -0
- package/dist/backend/events/event-bus.d.ts +39 -0
- package/dist/backend/events/event-bus.d.ts.map +1 -0
- package/dist/backend/events/event-bus.js +182 -0
- package/dist/backend/events/event-bus.js.map +1 -0
- package/dist/backend/events/event-emitting-adapter.d.ts +31 -0
- package/dist/backend/events/event-emitting-adapter.d.ts.map +1 -0
- package/dist/backend/events/event-emitting-adapter.js +70 -0
- package/dist/backend/events/event-emitting-adapter.js.map +1 -0
- package/dist/backend/events/event-registry.d.ts +24 -0
- package/dist/backend/events/event-registry.d.ts.map +1 -0
- package/dist/backend/events/event-registry.js +22 -0
- package/dist/backend/events/event-registry.js.map +1 -0
- package/dist/backend/events/index.d.ts +7 -0
- package/dist/backend/events/index.d.ts.map +1 -0
- package/dist/backend/events/index.js +7 -0
- package/dist/backend/events/index.js.map +1 -0
- package/dist/backend/index.d.ts +88 -0
- package/dist/backend/index.d.ts.map +1 -0
- package/dist/backend/index.js +422 -0
- package/dist/backend/index.js.map +1 -0
- package/dist/backend/loom-paths.d.ts +28 -0
- package/dist/backend/loom-paths.d.ts.map +1 -0
- package/dist/backend/loom-paths.js +45 -0
- package/dist/backend/loom-paths.js.map +1 -0
- package/dist/backend/notifications/interpolate.d.ts +6 -0
- package/dist/backend/notifications/interpolate.d.ts.map +1 -0
- package/dist/backend/notifications/interpolate.js +11 -0
- package/dist/backend/notifications/interpolate.js.map +1 -0
- package/dist/backend/notifications/notification-storage.d.ts +27 -0
- package/dist/backend/notifications/notification-storage.d.ts.map +1 -0
- package/dist/backend/notifications/notification-storage.js +160 -0
- package/dist/backend/notifications/notification-storage.js.map +1 -0
- package/dist/backend/observe/index.d.ts +6 -0
- package/dist/backend/observe/index.d.ts.map +1 -0
- package/dist/backend/observe/index.js +5 -0
- package/dist/backend/observe/index.js.map +1 -0
- package/dist/backend/observe/logger.d.ts +26 -0
- package/dist/backend/observe/logger.d.ts.map +1 -0
- package/dist/backend/observe/logger.js +68 -0
- package/dist/backend/observe/logger.js.map +1 -0
- package/dist/backend/observe/types.d.ts +26 -0
- package/dist/backend/observe/types.d.ts.map +1 -0
- package/dist/backend/observe/types.js +7 -0
- package/dist/backend/observe/types.js.map +1 -0
- package/dist/backend/process/engine.d.ts +105 -0
- package/dist/backend/process/engine.d.ts.map +1 -0
- package/dist/backend/process/engine.js +589 -0
- package/dist/backend/process/engine.js.map +1 -0
- package/dist/backend/process/index.d.ts +7 -0
- package/dist/backend/process/index.d.ts.map +1 -0
- package/dist/backend/process/index.js +6 -0
- package/dist/backend/process/index.js.map +1 -0
- package/dist/backend/process/logger.d.ts +32 -0
- package/dist/backend/process/logger.d.ts.map +1 -0
- package/dist/backend/process/logger.js +148 -0
- package/dist/backend/process/logger.js.map +1 -0
- package/dist/backend/process/metrics-store.d.ts +32 -0
- package/dist/backend/process/metrics-store.d.ts.map +1 -0
- package/dist/backend/process/metrics-store.js +108 -0
- package/dist/backend/process/metrics-store.js.map +1 -0
- package/dist/backend/process/migrate.d.ts +12 -0
- package/dist/backend/process/migrate.d.ts.map +1 -0
- package/dist/backend/process/migrate.js +145 -0
- package/dist/backend/process/migrate.js.map +1 -0
- package/dist/backend/process/queue.d.ts +33 -0
- package/dist/backend/process/queue.d.ts.map +1 -0
- package/dist/backend/process/queue.js +94 -0
- package/dist/backend/process/queue.js.map +1 -0
- package/dist/backend/process/registry.d.ts +29 -0
- package/dist/backend/process/registry.d.ts.map +1 -0
- package/dist/backend/process/registry.js +105 -0
- package/dist/backend/process/registry.js.map +1 -0
- package/dist/backend/process/trigger.d.ts +29 -0
- package/dist/backend/process/trigger.d.ts.map +1 -0
- package/dist/backend/process/trigger.js +108 -0
- package/dist/backend/process/trigger.js.map +1 -0
- package/dist/backend/routes/ai-config.d.ts +15 -0
- package/dist/backend/routes/ai-config.d.ts.map +1 -0
- package/dist/backend/routes/ai-config.js +171 -0
- package/dist/backend/routes/ai-config.js.map +1 -0
- package/dist/backend/routes/auth-routes.d.ts +33 -0
- package/dist/backend/routes/auth-routes.d.ts.map +1 -0
- package/dist/backend/routes/auth-routes.js +528 -0
- package/dist/backend/routes/auth-routes.js.map +1 -0
- package/dist/backend/routes/chat-sse.d.ts +17 -0
- package/dist/backend/routes/chat-sse.d.ts.map +1 -0
- package/dist/backend/routes/chat-sse.js +60 -0
- package/dist/backend/routes/chat-sse.js.map +1 -0
- package/dist/backend/routes/chat.d.ts +30 -0
- package/dist/backend/routes/chat.d.ts.map +1 -0
- package/dist/backend/routes/chat.js +258 -0
- package/dist/backend/routes/chat.js.map +1 -0
- package/dist/backend/routes/data.d.ts +16 -0
- package/dist/backend/routes/data.d.ts.map +1 -0
- package/dist/backend/routes/data.js +371 -0
- package/dist/backend/routes/data.js.map +1 -0
- package/dist/backend/routes/event-routes.d.ts +15 -0
- package/dist/backend/routes/event-routes.d.ts.map +1 -0
- package/dist/backend/routes/event-routes.js +35 -0
- package/dist/backend/routes/event-routes.js.map +1 -0
- package/dist/backend/routes/health.d.ts +7 -0
- package/dist/backend/routes/health.d.ts.map +1 -0
- package/dist/backend/routes/health.js +15 -0
- package/dist/backend/routes/health.js.map +1 -0
- package/dist/backend/routes/index.d.ts +22 -0
- package/dist/backend/routes/index.d.ts.map +1 -0
- package/dist/backend/routes/index.js +15 -0
- package/dist/backend/routes/index.js.map +1 -0
- package/dist/backend/routes/notification-routes.d.ts +22 -0
- package/dist/backend/routes/notification-routes.d.ts.map +1 -0
- package/dist/backend/routes/notification-routes.js +128 -0
- package/dist/backend/routes/notification-routes.js.map +1 -0
- package/dist/backend/routes/process-routes.d.ts +17 -0
- package/dist/backend/routes/process-routes.d.ts.map +1 -0
- package/dist/backend/routes/process-routes.js +303 -0
- package/dist/backend/routes/process-routes.js.map +1 -0
- package/dist/backend/routes/session-routes.d.ts +22 -0
- package/dist/backend/routes/session-routes.d.ts.map +1 -0
- package/dist/backend/routes/session-routes.js +97 -0
- package/dist/backend/routes/session-routes.js.map +1 -0
- package/dist/backend/routes/skill-archive.d.ts +13 -0
- package/dist/backend/routes/skill-archive.d.ts.map +1 -0
- package/dist/backend/routes/skill-archive.js +84 -0
- package/dist/backend/routes/skill-archive.js.map +1 -0
- package/dist/backend/routes/skill-parser.d.ts +41 -0
- package/dist/backend/routes/skill-parser.d.ts.map +1 -0
- package/dist/backend/routes/skill-parser.js +184 -0
- package/dist/backend/routes/skill-parser.js.map +1 -0
- package/dist/backend/routes/skill-service.d.ts +113 -0
- package/dist/backend/routes/skill-service.d.ts.map +1 -0
- package/dist/backend/routes/skill-service.js +265 -0
- package/dist/backend/routes/skill-service.js.map +1 -0
- package/dist/backend/routes/skills.d.ts +18 -0
- package/dist/backend/routes/skills.d.ts.map +1 -0
- package/dist/backend/routes/skills.js +168 -0
- package/dist/backend/routes/skills.js.map +1 -0
- package/dist/backend/routes/upload.d.ts +25 -0
- package/dist/backend/routes/upload.d.ts.map +1 -0
- package/dist/backend/routes/upload.js +100 -0
- package/dist/backend/routes/upload.js.map +1 -0
- package/dist/backend/services/skill-archive.d.ts +13 -0
- package/dist/backend/services/skill-archive.d.ts.map +1 -0
- package/dist/backend/services/skill-archive.js +84 -0
- package/dist/backend/services/skill-archive.js.map +1 -0
- package/dist/backend/services/skill-parser.d.ts +41 -0
- package/dist/backend/services/skill-parser.d.ts.map +1 -0
- package/dist/backend/services/skill-parser.js +184 -0
- package/dist/backend/services/skill-parser.js.map +1 -0
- package/dist/backend/services/skill-service.d.ts +113 -0
- package/dist/backend/services/skill-service.d.ts.map +1 -0
- package/dist/backend/services/skill-service.js +265 -0
- package/dist/backend/services/skill-service.js.map +1 -0
- package/dist/bin.d.ts +8 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +12 -0
- package/dist/bin.js.map +1 -0
- package/dist/capability-generator.d.ts +21 -6
- package/dist/capability-generator.d.ts.map +1 -1
- package/dist/capability-generator.js +88 -261
- package/dist/capability-generator.js.map +1 -1
- package/dist/cli/commands/auth.d.ts +11 -0
- package/dist/cli/commands/auth.d.ts.map +1 -0
- package/dist/cli/commands/auth.js +211 -0
- package/dist/cli/commands/auth.js.map +1 -0
- package/dist/cli/commands/build.d.ts +11 -0
- package/dist/cli/commands/build.d.ts.map +1 -0
- package/dist/cli/commands/build.js +170 -0
- package/dist/cli/commands/build.js.map +1 -0
- package/dist/cli/commands/data.d.ts +15 -0
- package/dist/cli/commands/data.d.ts.map +1 -0
- package/dist/cli/commands/data.js +214 -0
- package/dist/cli/commands/data.js.map +1 -0
- package/dist/cli/commands/dev.d.ts +8 -0
- package/dist/cli/commands/dev.d.ts.map +1 -0
- package/dist/cli/commands/dev.js +97 -0
- package/dist/cli/commands/dev.js.map +1 -0
- package/dist/cli/commands/eject.d.ts +12 -0
- package/dist/cli/commands/eject.d.ts.map +1 -0
- package/dist/cli/commands/eject.js +451 -0
- package/dist/cli/commands/eject.js.map +1 -0
- package/dist/cli/commands/generate-capabilities.d.ts +8 -0
- package/dist/cli/commands/generate-capabilities.d.ts.map +1 -0
- package/dist/cli/commands/generate-capabilities.js +41 -0
- package/dist/cli/commands/generate-capabilities.js.map +1 -0
- package/dist/cli/commands/generate-cli-command.d.ts +8 -0
- package/dist/cli/commands/generate-cli-command.d.ts.map +1 -0
- package/dist/cli/commands/generate-cli-command.js +64 -0
- package/dist/cli/commands/generate-cli-command.js.map +1 -0
- package/dist/cli/commands/generate-dashboard.d.ts +9 -0
- package/dist/cli/commands/generate-dashboard.d.ts.map +1 -0
- package/dist/cli/commands/generate-dashboard.js +113 -0
- package/dist/cli/commands/generate-dashboard.js.map +1 -0
- package/dist/cli/commands/generate-notification.d.ts +9 -0
- package/dist/cli/commands/generate-notification.d.ts.map +1 -0
- package/dist/cli/commands/generate-notification.js +24 -0
- package/dist/cli/commands/generate-notification.js.map +1 -0
- package/dist/cli/commands/generate-page.d.ts +9 -0
- package/dist/cli/commands/generate-page.d.ts.map +1 -0
- package/dist/cli/commands/generate-page.js +105 -0
- package/dist/cli/commands/generate-page.js.map +1 -0
- package/dist/cli/commands/generate-skill.d.ts +8 -0
- package/dist/cli/commands/generate-skill.d.ts.map +1 -0
- package/dist/cli/commands/generate-skill.js +75 -0
- package/dist/cli/commands/generate-skill.js.map +1 -0
- package/dist/cli/commands/generate-system-settings.d.ts +10 -0
- package/dist/cli/commands/generate-system-settings.d.ts.map +1 -0
- package/dist/cli/commands/generate-system-settings.js +227 -0
- package/dist/cli/commands/generate-system-settings.js.map +1 -0
- package/dist/cli/commands/generate.d.ts +6 -0
- package/dist/cli/commands/generate.d.ts.map +1 -0
- package/dist/cli/commands/generate.js +21 -0
- package/dist/cli/commands/generate.js.map +1 -0
- package/dist/cli/commands/init.d.ts +8 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +388 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/notification.d.ts +8 -0
- package/dist/cli/commands/notification.d.ts.map +1 -0
- package/dist/cli/commands/notification.js +175 -0
- package/dist/cli/commands/notification.js.map +1 -0
- package/dist/cli/commands/observe.d.ts +9 -0
- package/dist/cli/commands/observe.d.ts.map +1 -0
- package/dist/cli/commands/observe.js +142 -0
- package/dist/cli/commands/observe.js.map +1 -0
- package/dist/cli/commands/process.d.ts +8 -0
- package/dist/cli/commands/process.d.ts.map +1 -0
- package/dist/cli/commands/process.js +538 -0
- package/dist/cli/commands/process.js.map +1 -0
- package/dist/cli/commands/role.d.ts +12 -0
- package/dist/cli/commands/role.d.ts.map +1 -0
- package/dist/cli/commands/role.js +208 -0
- package/dist/cli/commands/role.js.map +1 -0
- package/dist/cli/commands/serve.d.ts +12 -0
- package/dist/cli/commands/serve.d.ts.map +1 -0
- package/dist/cli/commands/serve.js +43 -0
- package/dist/cli/commands/serve.js.map +1 -0
- package/dist/cli/commands/skill.d.ts +9 -0
- package/dist/cli/commands/skill.d.ts.map +1 -0
- package/dist/cli/commands/skill.js +186 -0
- package/dist/cli/commands/skill.js.map +1 -0
- package/dist/cli/commands/user-cmd.d.ts +9 -0
- package/dist/cli/commands/user-cmd.d.ts.map +1 -0
- package/dist/cli/commands/user-cmd.js +195 -0
- package/dist/cli/commands/user-cmd.js.map +1 -0
- package/dist/cli/framework.d.ts +28 -0
- package/dist/cli/framework.d.ts.map +1 -0
- package/dist/cli/framework.js +29 -0
- package/dist/cli/framework.js.map +1 -0
- package/dist/cli/generators/capability-generator.d.ts +35 -0
- package/dist/cli/generators/capability-generator.d.ts.map +1 -0
- package/dist/cli/generators/capability-generator.js +380 -0
- package/dist/cli/generators/capability-generator.js.map +1 -0
- package/dist/cli/helpers/app-tsx-wiring.d.ts +52 -0
- package/dist/cli/helpers/app-tsx-wiring.d.ts.map +1 -0
- package/dist/cli/helpers/app-tsx-wiring.js +732 -0
- package/dist/cli/helpers/app-tsx-wiring.js.map +1 -0
- package/dist/cli/helpers/auth-client.d.ts +19 -0
- package/dist/cli/helpers/auth-client.d.ts.map +1 -0
- package/dist/cli/helpers/auth-client.js +42 -0
- package/dist/cli/helpers/auth-client.js.map +1 -0
- package/dist/cli/helpers/backup.d.ts +16 -0
- package/dist/cli/helpers/backup.d.ts.map +1 -0
- package/dist/cli/helpers/backup.js +34 -0
- package/dist/cli/helpers/backup.js.map +1 -0
- package/dist/cli/helpers/column-template.d.ts +20 -0
- package/dist/cli/helpers/column-template.d.ts.map +1 -0
- package/dist/cli/helpers/column-template.js +158 -0
- package/dist/cli/helpers/column-template.js.map +1 -0
- package/dist/cli/helpers/duration.d.ts +5 -0
- package/dist/cli/helpers/duration.d.ts.map +1 -0
- package/dist/cli/helpers/duration.js +5 -0
- package/dist/cli/helpers/duration.js.map +1 -0
- package/dist/cli/helpers/field-template.d.ts +14 -0
- package/dist/cli/helpers/field-template.d.ts.map +1 -0
- package/dist/cli/helpers/field-template.js +113 -0
- package/dist/cli/helpers/field-template.js.map +1 -0
- package/dist/cli/helpers/i18n-template.d.ts +21 -0
- package/dist/cli/helpers/i18n-template.d.ts.map +1 -0
- package/dist/cli/helpers/i18n-template.js +69 -0
- package/dist/cli/helpers/i18n-template.js.map +1 -0
- package/dist/cli/helpers/naming.d.ts +11 -0
- package/dist/cli/helpers/naming.d.ts.map +1 -0
- package/dist/cli/helpers/naming.js +21 -0
- package/dist/cli/helpers/naming.js.map +1 -0
- package/dist/cli/index.d.ts +9 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +45 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/lib/credentials.d.ts +27 -0
- package/dist/cli/lib/credentials.d.ts.map +1 -0
- package/dist/cli/lib/credentials.js +112 -0
- package/dist/cli/lib/credentials.js.map +1 -0
- package/dist/cli/templates/auth-wiring.d.ts +17 -0
- package/dist/cli/templates/auth-wiring.d.ts.map +1 -0
- package/dist/cli/templates/auth-wiring.js +31 -0
- package/dist/cli/templates/auth-wiring.js.map +1 -0
- package/dist/cli/templates/backend-entry.d.ts +5 -0
- package/dist/cli/templates/backend-entry.d.ts.map +1 -0
- package/dist/cli/templates/backend-entry.js +17 -0
- package/dist/cli/templates/backend-entry.js.map +1 -0
- package/dist/cli/templates/claude-md.d.ts +20 -0
- package/dist/cli/templates/claude-md.d.ts.map +1 -0
- package/dist/cli/templates/claude-md.js +123 -0
- package/dist/cli/templates/claude-md.js.map +1 -0
- package/dist/cli/templates/crud-page.d.ts +14 -0
- package/dist/cli/templates/crud-page.d.ts.map +1 -0
- package/dist/cli/templates/crud-page.js +430 -0
- package/dist/cli/templates/crud-page.js.map +1 -0
- package/dist/cli/templates/dashboard-page.d.ts +11 -0
- package/dist/cli/templates/dashboard-page.d.ts.map +1 -0
- package/dist/cli/templates/dashboard-page.js +464 -0
- package/dist/cli/templates/dashboard-page.js.map +1 -0
- package/dist/cli/templates/frontend-entry.d.ts +11 -0
- package/dist/cli/templates/frontend-entry.d.ts.map +1 -0
- package/dist/cli/templates/frontend-entry.js +94 -0
- package/dist/cli/templates/frontend-entry.js.map +1 -0
- package/dist/cli/templates/gitignore.d.ts +5 -0
- package/dist/cli/templates/gitignore.d.ts.map +1 -0
- package/dist/cli/templates/gitignore.js +13 -0
- package/dist/cli/templates/gitignore.js.map +1 -0
- package/dist/cli/templates/index.d.ts +21 -0
- package/dist/cli/templates/index.d.ts.map +1 -0
- package/dist/cli/templates/index.js +21 -0
- package/dist/cli/templates/index.js.map +1 -0
- package/dist/cli/templates/login-page.d.ts +9 -0
- package/dist/cli/templates/login-page.d.ts.map +1 -0
- package/dist/cli/templates/login-page.js +75 -0
- package/dist/cli/templates/login-page.js.map +1 -0
- package/dist/cli/templates/loom-config.d.ts +13 -0
- package/dist/cli/templates/loom-config.d.ts.map +1 -0
- package/dist/cli/templates/loom-config.js +61 -0
- package/dist/cli/templates/loom-config.js.map +1 -0
- package/dist/cli/templates/model-management-page.d.ts +9 -0
- package/dist/cli/templates/model-management-page.d.ts.map +1 -0
- package/dist/cli/templates/model-management-page.js +299 -0
- package/dist/cli/templates/model-management-page.js.map +1 -0
- package/dist/cli/templates/notification-center-page.d.ts +9 -0
- package/dist/cli/templates/notification-center-page.d.ts.map +1 -0
- package/dist/cli/templates/notification-center-page.js +258 -0
- package/dist/cli/templates/notification-center-page.js.map +1 -0
- package/dist/cli/templates/notification-detail-page.d.ts +9 -0
- package/dist/cli/templates/notification-detail-page.d.ts.map +1 -0
- package/dist/cli/templates/notification-detail-page.js +102 -0
- package/dist/cli/templates/notification-detail-page.js.map +1 -0
- package/dist/cli/templates/package-json.d.ts +9 -0
- package/dist/cli/templates/package-json.d.ts.map +1 -0
- package/dist/cli/templates/package-json.js +41 -0
- package/dist/cli/templates/package-json.js.map +1 -0
- package/dist/cli/templates/process-management-page.d.ts +8 -0
- package/dist/cli/templates/process-management-page.d.ts.map +1 -0
- package/dist/cli/templates/process-management-page.js +902 -0
- package/dist/cli/templates/process-management-page.js.map +1 -0
- package/dist/cli/templates/readme.d.ts +9 -0
- package/dist/cli/templates/readme.d.ts.map +1 -0
- package/dist/cli/templates/readme.js +47 -0
- package/dist/cli/templates/readme.js.map +1 -0
- package/dist/cli/templates/skill-management-page.d.ts +9 -0
- package/dist/cli/templates/skill-management-page.d.ts.map +1 -0
- package/dist/cli/templates/skill-management-page.js +476 -0
- package/dist/cli/templates/skill-management-page.js.map +1 -0
- package/dist/cli/templates/system-settings-page.d.ts +10 -0
- package/dist/cli/templates/system-settings-page.d.ts.map +1 -0
- package/dist/cli/templates/system-settings-page.js +768 -0
- package/dist/cli/templates/system-settings-page.js.map +1 -0
- package/dist/cli/templates/tsconfig.d.ts +6 -0
- package/dist/cli/templates/tsconfig.d.ts.map +1 -0
- package/dist/cli/templates/tsconfig.js +41 -0
- package/dist/cli/templates/tsconfig.js.map +1 -0
- package/dist/cli/templates/user-management-page.d.ts +10 -0
- package/dist/cli/templates/user-management-page.d.ts.map +1 -0
- package/dist/cli/templates/user-management-page.js +495 -0
- package/dist/cli/templates/user-management-page.js.map +1 -0
- package/dist/cli/templates/vite-config.d.ts +5 -0
- package/dist/cli/templates/vite-config.d.ts.map +1 -0
- package/dist/cli/templates/vite-config.js +24 -0
- package/dist/cli/templates/vite-config.js.map +1 -0
- package/dist/cli/utils.d.ts +10 -0
- package/dist/cli/utils.d.ts.map +1 -0
- package/dist/cli/utils.js +31 -0
- package/dist/cli/utils.js.map +1 -0
- package/dist/commands.d.ts +1 -5
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +0 -11
- package/dist/commands.js.map +1 -1
- package/dist/config.d.ts +1175 -93
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +136 -15
- package/dist/config.js.map +1 -1
- package/dist/dashboard-config.d.ts +149 -0
- package/dist/dashboard-config.d.ts.map +1 -0
- package/dist/dashboard-config.js +40 -0
- package/dist/dashboard-config.js.map +1 -0
- package/dist/index.d.ts +23 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -5
- package/dist/index.js.map +1 -1
- package/dist/server-bin.d.ts +12 -0
- package/dist/server-bin.d.ts.map +1 -0
- package/dist/server-bin.js +43 -0
- package/dist/server-bin.js.map +1 -0
- package/dist/system-prompt.d.ts +20 -0
- package/dist/system-prompt.d.ts.map +1 -0
- package/dist/system-prompt.js +140 -0
- package/dist/system-prompt.js.map +1 -0
- package/dist/types/adapter.d.ts +30 -0
- package/dist/types/adapter.d.ts.map +1 -0
- package/dist/types/adapter.js +5 -0
- package/dist/types/adapter.js.map +1 -0
- package/dist/types/ai.d.ts +74 -0
- package/dist/types/ai.d.ts.map +1 -0
- package/dist/types/ai.js +5 -0
- package/dist/types/ai.js.map +1 -0
- package/dist/types/auth.d.ts +62 -0
- package/dist/types/auth.d.ts.map +1 -0
- package/dist/types/auth.js +5 -0
- package/dist/types/auth.js.map +1 -0
- package/dist/types/chat.d.ts +47 -0
- package/dist/types/chat.d.ts.map +1 -0
- package/dist/types/chat.js +8 -0
- package/dist/types/chat.js.map +1 -0
- package/dist/types/command.d.ts +25 -0
- package/dist/types/command.d.ts.map +1 -0
- package/dist/types/command.js +5 -0
- package/dist/types/command.js.map +1 -0
- package/dist/types/config.d.ts +65 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +5 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/dashboard.d.ts +59 -0
- package/dist/types/dashboard.d.ts.map +1 -0
- package/dist/types/dashboard.js +5 -0
- package/dist/types/dashboard.js.map +1 -0
- package/dist/types/event.d.ts +101 -0
- package/dist/types/event.d.ts.map +1 -0
- package/dist/types/event.js +38 -0
- package/dist/types/event.js.map +1 -0
- package/dist/types/index.d.ts +21 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +9 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/locale.d.ts +21 -0
- package/dist/types/locale.d.ts.map +1 -0
- package/dist/types/locale.js +36 -0
- package/dist/types/locale.js.map +1 -0
- package/dist/types/model.d.ts +69 -0
- package/dist/types/model.d.ts.map +1 -0
- package/dist/types/model.js +5 -0
- package/dist/types/model.js.map +1 -0
- package/dist/types/notification.d.ts +31 -0
- package/dist/types/notification.d.ts.map +1 -0
- package/dist/types/notification.js +5 -0
- package/dist/types/notification.js.map +1 -0
- package/dist/types/process.d.ts +148 -0
- package/dist/types/process.d.ts.map +1 -0
- package/dist/types/process.js +5 -0
- package/dist/types/process.js.map +1 -0
- package/dist/types.d.ts +4 -199
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +4 -3
- package/dist/types.js.map +1 -1
- package/dist/utils/duration.d.ts +8 -0
- package/dist/utils/duration.d.ts.map +1 -0
- package/dist/utils/duration.js +22 -0
- package/dist/utils/duration.js.map +1 -0
- package/dist/utils/id.d.ts +7 -0
- package/dist/utils/id.d.ts.map +1 -0
- package/dist/utils/id.js +9 -0
- package/dist/utils/id.js.map +1 -0
- package/package.json +24 -3
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
# 用 Loom 开发 AI 平台
|
|
2
|
+
|
|
3
|
+
## 30 秒理解 Loom
|
|
4
|
+
|
|
5
|
+
你写一个配置文件描述你的数据模型和 AI 按钮,Loom 生成一个可运行的平台。然后你和 AI 一起迭代它。
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
你写的 Loom 生成的 你和 AI 继续做的
|
|
9
|
+
loom.config.ts → 页面 + API + AI 对话 → 改布局、加功能、调样式
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## 开发方式
|
|
13
|
+
|
|
14
|
+
Loom 项目的主要交互方式是**和 AI 对话**。你告诉 AI 想要什么,AI 通过 Loom Skill 知道怎么用 Loom 实现它。
|
|
15
|
+
|
|
16
|
+
两个入口,同一个 AI:
|
|
17
|
+
|
|
18
|
+
- **终端 Claude Code** — 适合搭建阶段、大范围代码修改
|
|
19
|
+
- **页面右侧 AI 面板** — 适合日常操作数据、小范围页面调整
|
|
20
|
+
|
|
21
|
+
两个入口背后是同一个 Claude Code 引擎、同一套项目上下文。在哪边改都行。
|
|
22
|
+
|
|
23
|
+
## 第一个项目
|
|
24
|
+
|
|
25
|
+
假设你要做一个**错题管理平台**。
|
|
26
|
+
|
|
27
|
+
### 第 1 步:告诉 AI 你的想法
|
|
28
|
+
|
|
29
|
+
在 Claude Code 中说:
|
|
30
|
+
|
|
31
|
+
> 用 loom 创建一个错题管理平台,项目名 wrong-questions,filesystem 适配器。
|
|
32
|
+
> 需要两个模型:错题记录(科目、题目内容、错误答案、正确答案、错误类型、是否掌握)和复习计划(错题ID、计划日期、状态)。
|
|
33
|
+
> AI 按钮要能分析错因和出类似题。
|
|
34
|
+
|
|
35
|
+
AI 会读取 Loom Skill,自动执行:
|
|
36
|
+
|
|
37
|
+
1. `loom init wrong-questions --adapter filesystem` — 创建项目(自动生成系统管理页面)
|
|
38
|
+
2. 编写 `loom.config.ts` — 把你的需求转成配置
|
|
39
|
+
3. `loom generate page` — 生成页面
|
|
40
|
+
4. `loom generate capabilities` — 生成应用 Skill
|
|
41
|
+
5. `loom generate dashboard` — 生成数据概览
|
|
42
|
+
6. 补充项目级 AI Skill — 让 AI 理解你的业务语义
|
|
43
|
+
|
|
44
|
+
你也可以自己跑命令,但通过 Loom Skill 让 AI 来做更省事 — 它知道每一步该做什么。
|
|
45
|
+
|
|
46
|
+
### 第 2 步:看看效果
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
cd wrong-questions
|
|
50
|
+
loom dev
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
打开 http://localhost:5173 ,你的平台已经能用了:
|
|
54
|
+
- 顶部导航有「错题记录」和「复习计划」页面
|
|
55
|
+
- 每个页面有新增、编辑、删除、筛选
|
|
56
|
+
- 错题记录每行有 AI 按钮:分析错因、出类似题
|
|
57
|
+
- 右侧 AI 面板可以自然语言操作数据
|
|
58
|
+
|
|
59
|
+
### 第 3 步:继续和 AI 聊
|
|
60
|
+
|
|
61
|
+
平台跑起来后,你主要的工作方式是对 AI 说需求:
|
|
62
|
+
|
|
63
|
+
| 你说的 | AI 做的 |
|
|
64
|
+
|-------|--------|
|
|
65
|
+
| "帮我记一道数学错题,3+5=7,正确答案是8" | 用 `loom data write` 创建记录 |
|
|
66
|
+
| "看看哪些错题还没掌握" | 查数据并展示 |
|
|
67
|
+
| "把这个页面改成卡片布局" | 修改页面 TSX |
|
|
68
|
+
| "加一个学期字段" | 改 loom.config.ts + 改页面 + 更新 Skill references |
|
|
69
|
+
| "加一个科目分布的饼图" | 修改 Dashboard 页面 |
|
|
70
|
+
|
|
71
|
+
这些操作在终端 Claude Code 和页面对话框里都能做。
|
|
72
|
+
|
|
73
|
+
## 配置变更与迭代
|
|
74
|
+
|
|
75
|
+
改了 `loom.config.ts` 后,不同类型的变更需要不同的处理方式:
|
|
76
|
+
|
|
77
|
+
| 变更类型 | 页面需要改吗 | 怎么做 |
|
|
78
|
+
|---------|------------|--------|
|
|
79
|
+
| 增删 AI 按钮 | 不需要 | 改配置 → `loom generate capabilities` 更新 Skill → 重启后端,按钮自动出现在页面 |
|
|
80
|
+
| 修改 enum 值 | 不需要 | 改配置 → `loom generate capabilities` 更新 Skill → 重启后端,筛选和下拉自动更新 |
|
|
81
|
+
| 新增数据模型 | 需要生成新页面 | 改配置 → `loom generate capabilities` + `loom generate page <Name> --model <model>` → 重启后端 |
|
|
82
|
+
| 新增/删除字段 | 需要 | 改配置 → AI 更新页面(推荐)或 `--force` 重建 → `loom generate capabilities` 更新 Skill |
|
|
83
|
+
|
|
84
|
+
**推荐:AI 辅助迭代**。告诉 AI 你改了什么(比如"我在配置里加了一个学期字段"),AI 会在页面中精确添加新字段的列和表单项,**保留你之前做的视觉定制代码**。
|
|
85
|
+
|
|
86
|
+
**谨慎使用 `--force`**。它会用最新配置全量覆盖页面,之前对页面做的任何定制修改都会丢失。
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
# 只改了 AI 按钮或 enum → 重启后端即可,不用碰页面
|
|
90
|
+
# 加了新字段 → 让 AI 更新页面
|
|
91
|
+
# 想重来一个干净页面 → --force
|
|
92
|
+
loom generate page WrongQuestions --model wrong_questions --force
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
页面不存在时直接 `loom generate page` 即可,不需要 `--force`。
|
|
96
|
+
|
|
97
|
+
## 配置写法
|
|
98
|
+
|
|
99
|
+
`loom.config.ts` 是唯一配置源,包含数据模型、AI 按钮和 Dashboard 定义。完整的字段类型和高级选项见 `references/data-model.md`。
|
|
100
|
+
|
|
101
|
+
```typescript
|
|
102
|
+
import { defineConfig } from '@loom-framework/core';
|
|
103
|
+
|
|
104
|
+
export default defineConfig({
|
|
105
|
+
project: { name: 'my-app', description: { 'zh-CN': '我的应用', 'en-US': 'My App' } },
|
|
106
|
+
data: {
|
|
107
|
+
defaultAdapter: 'filesystem',
|
|
108
|
+
models: [{
|
|
109
|
+
name: 'tasks',
|
|
110
|
+
description: { 'zh-CN': '任务管理', 'en-US': 'Tasks' },
|
|
111
|
+
fields: [
|
|
112
|
+
{ name: 'title', type: 'string', required: true, description: { 'zh-CN': '任务标题', 'en-US': 'Title' } },
|
|
113
|
+
{ name: 'status', type: 'string', enum: ['待办', '进行中', '已完成'], enumLabels: {
|
|
114
|
+
'待办': { 'zh-CN': '待办', 'en-US': 'Todo' },
|
|
115
|
+
'进行中': { 'zh-CN': '进行中', 'en-US': 'In Progress' },
|
|
116
|
+
'已完成': { 'zh-CN': '已完成', 'en-US': 'Done' },
|
|
117
|
+
}, default: '待办' },
|
|
118
|
+
{ name: 'priority', type: 'string', enum: ['低', '中', '高'] },
|
|
119
|
+
],
|
|
120
|
+
}],
|
|
121
|
+
},
|
|
122
|
+
aiButtons: [{
|
|
123
|
+
id: 'breakdown',
|
|
124
|
+
label: { 'zh-CN': '拆解任务', 'en-US': 'Break Down Task' },
|
|
125
|
+
prompt: '请将这个任务拆解为可执行的子步骤:{{title}}',
|
|
126
|
+
placement: 'tasks',
|
|
127
|
+
}],
|
|
128
|
+
dashboards: [{
|
|
129
|
+
name: 'overview',
|
|
130
|
+
description: { 'zh-CN': '数据概览', 'en-US': 'Overview' },
|
|
131
|
+
models: ['tasks'],
|
|
132
|
+
layout: [
|
|
133
|
+
{ row: [
|
|
134
|
+
{ type: 'stat', title: { 'zh-CN': '任务总数', 'en-US': 'Total Tasks' }, model: 'tasks', aggregate: 'count', span: 6 },
|
|
135
|
+
{ type: 'pie', title: { 'zh-CN': '状态分布', 'en-US': 'Status Distribution' }, model: 'tasks', groupBy: 'status', span: 8 },
|
|
136
|
+
{ type: 'bar', title: { 'zh-CN': '优先级分布', 'en-US': 'Priority Distribution' }, model: 'tasks', groupBy: 'priority', span: 8 },
|
|
137
|
+
]}
|
|
138
|
+
],
|
|
139
|
+
}],
|
|
140
|
+
});
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
- 所有展示文本(description、label、title)支持多语言:纯字符串 `'任务管理'` 或 `{ 'zh-CN': '任务管理', 'en-US': 'Tasks' }`
|
|
144
|
+
- `enum` 是存储值(所有语言一致),`enumLabels` 为每个值提供多语言显示文本
|
|
145
|
+
- AI 按钮的 `prompt` 支持 `{{fieldName}}` 插值,运行时替换为当前行的字段值
|
|
146
|
+
- `placement` 限制按钮只出现在指定模型页面,省略则全局显示
|
|
147
|
+
- Dashboard 的 15 种图表类型和配置 Schema 见 `references/dashboard.md`
|
|
148
|
+
|
|
149
|
+
## 项目级 AI Skill
|
|
150
|
+
|
|
151
|
+
每个项目的 `.claude/skills/<项目名>/SKILL.md` 是 AI 理解你业务的入口。`loom generate capabilities` 生成骨架(`references/` 下的内容自动维护),但 SKILL.md 主文档需要你补充三个地方:
|
|
152
|
+
|
|
153
|
+
1. **description**:写用户会说的话,如 `"记录错题", "查看错题", "分析错因"`
|
|
154
|
+
2. **Overview**:2-3 句话描述平台做什么
|
|
155
|
+
3. **Usage Scenarios**:5-10 个典型用户请求及对应的 `loom data` 命令
|
|
156
|
+
|
|
157
|
+
补充后,AI 在终端和对话框里都能理解"帮我查数学错题"这类业务请求。
|
|
158
|
+
|
|
159
|
+
## 数据操作
|
|
160
|
+
|
|
161
|
+
不打开页面也能操作数据。你可以自己跑命令,也可以让 AI 跑:
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
loom data read wrong_questions --filter '{"subject":"数学"}' --limit 10
|
|
165
|
+
loom data write wrong_questions --data '{"subject":"数学","questionContent":"3+5=?","wrongAnswer":"7","correctAnswer":"8"}'
|
|
166
|
+
loom data update wrong_questions --id rec_xxx --data '{"isMastered":true}'
|
|
167
|
+
loom data delete wrong_questions --id rec_xxx
|
|
168
|
+
loom data schema wrong_questions # 查看字段结构
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
## 后端扩展
|
|
172
|
+
|
|
173
|
+
需要自定义 API 路由时,编辑 `backend/src/index.ts`:
|
|
174
|
+
|
|
175
|
+
```typescript
|
|
176
|
+
import { LoomServer } from '@loom-framework/core';
|
|
177
|
+
|
|
178
|
+
const server = new LoomServer({
|
|
179
|
+
projectRoot,
|
|
180
|
+
hooks: {
|
|
181
|
+
afterInit({ app, adapter }) {
|
|
182
|
+
app.get('/api/v1/stats/trend', async (req, reply) => { ... });
|
|
183
|
+
},
|
|
184
|
+
},
|
|
185
|
+
});
|
|
186
|
+
await server.initialize();
|
|
187
|
+
await server.start();
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
不需要时就是原来的 3 行。
|
|
191
|
+
|
|
192
|
+
## AI 模型配置
|
|
193
|
+
|
|
194
|
+
在**系统配置 > 模型管理**页面中配置 AI 模型。也可以直接编辑 `loom.config.ts`:
|
|
195
|
+
|
|
196
|
+
```typescript
|
|
197
|
+
export default defineConfig({
|
|
198
|
+
ai: {
|
|
199
|
+
claudeCode: {
|
|
200
|
+
models: [
|
|
201
|
+
{ name: 'claude-sonnet-4-20250514', isDefault: true },
|
|
202
|
+
{ name: 'GLM-5.1', authToken: 'your-token', baseUrl: 'https://api.example.com' },
|
|
203
|
+
],
|
|
204
|
+
},
|
|
205
|
+
},
|
|
206
|
+
});
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
- `isDefault`:对话时默认使用的模型
|
|
210
|
+
- `authToken`:API 认证令牌,页面中显示脱敏,编辑时留空保持不变
|
|
211
|
+
- `baseUrl`:自定义 API 地址(适用于第三方模型)
|
|
212
|
+
- 页面和配置文件双向同步:在页面修改模型后会自动写入 `loom.config.ts`
|
|
213
|
+
|
|
214
|
+
在 AI 面板顶部的模型选择器中切换当前对话使用的模型。
|
|
215
|
+
|
|
216
|
+
## 文件上传
|
|
217
|
+
|
|
218
|
+
AI 对话支持上传文件,两种方式:
|
|
219
|
+
|
|
220
|
+
- **附件按钮** — 点击输入框左侧的回形针图标选择文件
|
|
221
|
+
- **粘贴上传** — 直接粘贴截图或复制的文件
|
|
222
|
+
|
|
223
|
+
上传的文件会随对话发送给 AI 分析。图片在气泡中显示缩略图,其他文件显示为可下载的标签。文件大小上限约 30MB。
|
|
224
|
+
|
|
225
|
+
## 页面功能控制
|
|
226
|
+
|
|
227
|
+
通过 `crud` 配置字段控制生成页面的功能:
|
|
228
|
+
|
|
229
|
+
```typescript
|
|
230
|
+
models: [{
|
|
231
|
+
name: 'tasks',
|
|
232
|
+
fields: [...],
|
|
233
|
+
crud: {
|
|
234
|
+
export: false, // 隐藏导出按钮
|
|
235
|
+
import: false, // 隐藏导入按钮
|
|
236
|
+
deleteWithUndo: false, // 删除改为确认对话框(而非撤销模式)
|
|
237
|
+
},
|
|
238
|
+
}],
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
省略 `crud` 字段时默认全部启用。
|
|
242
|
+
|
|
243
|
+
## 日期分区
|
|
244
|
+
|
|
245
|
+
数据可按日期字段自动分区存储,适合日志类数据:
|
|
246
|
+
|
|
247
|
+
```typescript
|
|
248
|
+
models: [{
|
|
249
|
+
name: 'logs',
|
|
250
|
+
fields: [
|
|
251
|
+
{ name: 'content', type: 'string' },
|
|
252
|
+
{ name: 'createdAt', type: 'string' },
|
|
253
|
+
],
|
|
254
|
+
datePattern: {
|
|
255
|
+
dateField: 'createdAt',
|
|
256
|
+
pattern: 'yyyy/MM', // 按月分区:data/logs/2026/04/*.json
|
|
257
|
+
},
|
|
258
|
+
}],
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
## 常见问题
|
|
262
|
+
|
|
263
|
+
**loom 命令报错 "No loom.config.ts found"**
|
|
264
|
+
在项目根目录下运行。
|
|
265
|
+
|
|
266
|
+
**better-sqlite3 加载失败**
|
|
267
|
+
`defaultAdapter` 改为 `'filesystem'`,或者 `cd node_modules/better-sqlite3 && npx node-gyp rebuild`。
|
|
268
|
+
|
|
269
|
+
**改了 loom.config.ts 页面没变**
|
|
270
|
+
取决于改了什么:AI 按钮和 enum 值变更是自动生效的(重启后端即可);字段增删需要让 AI 更新页面或 `--force` 重建。详见上方「配置变更与迭代」。
|
|
271
|
+
|
|
272
|
+
**改了配置后 AI 按钮没出现**
|
|
273
|
+
需要重启后端(`loom dev` 会自动重载,如果没生效就停掉重新 `loom dev`)。
|
|
274
|
+
|
|
275
|
+
**删除了配置中的字段,旧数据怎么办**
|
|
276
|
+
数据文件中的旧字段值不会删除,只是页面不再展示。如果之后加回同名字段,旧数据会自动恢复显示。
|
|
277
|
+
|
|
278
|
+
**--force 会丢掉我的页面定制吗**
|
|
279
|
+
会。`--force` 全量覆盖页面文件。如果你对页面做过视觉或交互定制,建议让 AI 辅助迭代而不是用 `--force`。
|
|
280
|
+
|
|
281
|
+
**AI 面板里的 AI 能改代码吗**
|
|
282
|
+
能。和终端 Claude Code 是同一个引擎,在哪边改都行。
|
|
283
|
+
|
|
284
|
+
**如何部署到生产环境**
|
|
285
|
+
`loom build` 构建前端和后端,然后 `node dist/backend/src/index.js` 启动后端。
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
# 生成 Dashboard(数据概览页面)
|
|
2
|
+
|
|
3
|
+
Dashboard 在 `loom.config.ts` 的 `dashboards` 字段中定义,然后通过 CLI 生成页面。
|
|
4
|
+
|
|
5
|
+
## 配置 Dashboard
|
|
6
|
+
|
|
7
|
+
在 `loom.config.ts` 中添加 `dashboards` 字段:
|
|
8
|
+
|
|
9
|
+
```typescript
|
|
10
|
+
import { defineConfig } from '@loom-framework/core';
|
|
11
|
+
|
|
12
|
+
export default defineConfig({
|
|
13
|
+
project: { name: 'my-app' },
|
|
14
|
+
data: { /* ... */ },
|
|
15
|
+
dashboards: [{
|
|
16
|
+
name: 'overview',
|
|
17
|
+
description: { 'zh-CN': '数据概览', 'en-US': 'Overview' },
|
|
18
|
+
models: ['items'],
|
|
19
|
+
layout: [
|
|
20
|
+
{ row: [{ type: 'stat', title: { 'zh-CN': '总数', 'en-US': 'Total' }, model: 'items', aggregate: 'count', span: 6 }] },
|
|
21
|
+
],
|
|
22
|
+
}],
|
|
23
|
+
});
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
**设计原则:**
|
|
27
|
+
- 统计卡片放第一行(一眼看到关键数字)
|
|
28
|
+
- 分布图表按业务重要性排列
|
|
29
|
+
- 趋势图放最后一行(需要更多空间)
|
|
30
|
+
- 每行不超过 4 个元素
|
|
31
|
+
- 标题用业务语言,不用字段名
|
|
32
|
+
|
|
33
|
+
### 配置 Schema
|
|
34
|
+
|
|
35
|
+
```typescript
|
|
36
|
+
{
|
|
37
|
+
name: 'overview', // 必填:Dashboard 标识(同模型命名规则)
|
|
38
|
+
description: { 'zh-CN': '数据概览', 'en-US': 'Overview' }, // 可选:支持多语言
|
|
39
|
+
models: ['model_a'], // 必填:关联的数据模型名列表
|
|
40
|
+
layout: [{ // 必填:布局定义,数组每项代表一行
|
|
41
|
+
row: [{ // 每行包含一组 widget
|
|
42
|
+
type: 'stat', // 图表类型,见下方图表类型表
|
|
43
|
+
title: { 'zh-CN': '总数', 'en-US': 'Total' }, // 支持多语言
|
|
44
|
+
model: 'model_a', // 数据模型名
|
|
45
|
+
span: 6, // 可选:Col 宽度(1-24),省略则自动均分
|
|
46
|
+
aggregate: 'count', // 可选:count|sum|avg|min|max|ratio(默认 count)
|
|
47
|
+
field: 'score', // aggregate 为 sum/avg/min/max 时必填:数值字段名
|
|
48
|
+
filter: { status: 'active' }, // 可选:聚合前筛选条件
|
|
49
|
+
groupBy: 'category', // 可选:分组字段(string/enum/date/boolean)
|
|
50
|
+
crossGroupBy: 'grade', // 可选:第二分组字段,用于二维图表
|
|
51
|
+
interval: 'month' // 可选:date 字段分组粒度 day|week|month(默认 month)
|
|
52
|
+
}]
|
|
53
|
+
}]
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### 字段说明
|
|
58
|
+
|
|
59
|
+
| 字段 | 类型 | 说明 |
|
|
60
|
+
|------|------|------|
|
|
61
|
+
| `aggregate` | `count\|sum\|avg\|min\|max\|ratio` | 聚合方式。`ratio` = 符合 filter 条件的记录数/总记录数,用于 gauge/liquid/stat 百分比 |
|
|
62
|
+
| `field` | string | 聚合目标字段。仅 aggregate 为 sum/avg/min/max 时需要 |
|
|
63
|
+
| `filter` | object | 筛选条件,键值对。如 `{isMastered: true}` 筛选已掌握的记录 |
|
|
64
|
+
| `groupBy` | string | 主分组字段。string/enum 字段按值分组计数;boolean 字段自动映射为"是/否";date 字段按 interval 分段 |
|
|
65
|
+
| `crossGroupBy` | string | 第二分组维度。配合 groupBy 使用,产生交叉分组数据,用于二维图表 |
|
|
66
|
+
| `interval` | `day\|week\|month` | date 字段的分组粒度,仅 groupBy 指向 date 字段时有效 |
|
|
67
|
+
|
|
68
|
+
### Dashboard 级别配置
|
|
69
|
+
|
|
70
|
+
除了 `layout` 中的 widget 配置,Dashboard 还支持以下顶级配置:
|
|
71
|
+
|
|
72
|
+
| 字段 | 类型 | 说明 |
|
|
73
|
+
|------|------|------|
|
|
74
|
+
| `defaultDateField` | string | 默认日期字段名。启用后 Dashboard 顶部显示日期范围选择器,选择日期后筛选条件发送到后端(`__range` filter) |
|
|
75
|
+
| `filterDimensions` | `DashboardFilterDimension[]` | 筛选维度定义。启用后 Dashboard 顶部显示对应的筛选控件,选择的值作为 filter 发送到后端 |
|
|
76
|
+
|
|
77
|
+
#### DashboardFilterDimension
|
|
78
|
+
|
|
79
|
+
```typescript
|
|
80
|
+
{
|
|
81
|
+
field: 'subject', // 必填:筛选字段名
|
|
82
|
+
label: { 'zh-CN': '科目' }, // 必填:显示标签,支持多语言
|
|
83
|
+
type: 'select', // 必填:'select'(下拉选择)| 'dateRange'(日期范围)
|
|
84
|
+
options: ['语文', '数学'], // 可选:select 类型的选项。省略则从数据中自动提取去重值
|
|
85
|
+
}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
**筛选机制:** 日期范围和 select 筛选器变更后只加载符合条件的数据,清除筛选后恢复加载全量数据。
|
|
89
|
+
|
|
90
|
+
**典型配置:**
|
|
91
|
+
|
|
92
|
+
```typescript
|
|
93
|
+
dashboards: [{
|
|
94
|
+
name: 'overview',
|
|
95
|
+
models: ['wrong_questions'],
|
|
96
|
+
defaultDateField: 'createdAt', // 启用日期范围筛选
|
|
97
|
+
filterDimensions: [ // 启用下拉筛选
|
|
98
|
+
{ field: 'subject', label: { 'zh-CN': '科目', 'en-US': 'Subject' }, type: 'select' },
|
|
99
|
+
{ field: 'difficulty', label: { 'zh-CN': '难度', 'en-US': 'Difficulty' }, type: 'select' },
|
|
100
|
+
],
|
|
101
|
+
layout: [/* ... */],
|
|
102
|
+
}]
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### 图表类型与配置要点
|
|
106
|
+
|
|
107
|
+
#### 数值类 — 展示关键指标
|
|
108
|
+
|
|
109
|
+
| type | 中文名称 | 必填字段 | 典型配置 | 生成效果 |
|
|
110
|
+
|------|---------|---------|---------|---------|
|
|
111
|
+
| `stat` | 统计卡片 | — | `{ aggregate: "count" }` 或 `{ aggregate: "avg", field: "score" }` 或 `{ aggregate: "ratio", filter: { passed: true } }` | Ant Design Statistic 数值卡片 |
|
|
112
|
+
| `gauge` | 仪表盘 | `aggregate: "ratio"` + `filter` | `{ aggregate: "ratio", filter: { isMastered: true } }` | G2 仪表盘(百分比进度) |
|
|
113
|
+
| `liquid` | 水波图 | `aggregate: "ratio"` + `filter` | `{ aggregate: "ratio", filter: { isMastered: true } }` | G2 水波图(百分比进度) |
|
|
114
|
+
|
|
115
|
+
> **说明**:gauge 和 liquid 使用 `aggregate: "ratio"` + `filter` 来计算百分比(如掌握率 = 已掌握数/总数),ratio 自动算出 0-1 之间的值。
|
|
116
|
+
|
|
117
|
+
#### 占比类 — 展示分布构成
|
|
118
|
+
|
|
119
|
+
| type | 中文名称 | 必填字段 | 典型配置 | 生成效果 |
|
|
120
|
+
|------|---------|---------|---------|---------|
|
|
121
|
+
| `pie` | 饼图 | `groupBy` (enum/string) | `{ groupBy: "subject" }` | G2 饼图(分布占比) |
|
|
122
|
+
| `ring` | 环形图 | `groupBy` (boolean/enum) | `{ groupBy: "difficulty" }` 或 `{ groupBy: "isMastered" }` | G2 环形图(占比对比,boolean 自动映射"是/否") |
|
|
123
|
+
| `treemap` | 矩形树图 | `groupBy` + 可选 `crossGroupBy` | `{ groupBy: "subject" }` 或 `{ groupBy: "subject", crossGroupBy: "difficulty" }` | G2 矩形树图(层级占比,有 crossGroupBy 则两层) |
|
|
124
|
+
|
|
125
|
+
#### 对比类 — 跨类别比较
|
|
126
|
+
|
|
127
|
+
| type | 中文名称 | 必填字段 | 典型配置 | 生成效果 |
|
|
128
|
+
|------|---------|---------|---------|---------|
|
|
129
|
+
| `bar` | 条形图 | `groupBy` | `{ groupBy: "errorType" }` | G2 条形图(横向分类对比) |
|
|
130
|
+
| `stacked_bar` | 堆叠条形图 | `groupBy` + `crossGroupBy` | `{ groupBy: "subject", crossGroupBy: "errorType" }` | G2 堆叠条形图(组成+对比) |
|
|
131
|
+
| `grouped_bar` | 分组条形图 | `groupBy` + `crossGroupBy` | `{ groupBy: "subject", crossGroupBy: "difficulty" }` | G2 分组条形图(并列对比) |
|
|
132
|
+
| `radar` | 雷达图 | `groupBy` | `{ groupBy: "subject" }` | G2 雷达图(多维度闭合多边形) |
|
|
133
|
+
| `funnel` | 漏斗图 | `groupBy` | `{ groupBy: "errorType" }` | G2 漏斗图(阶段转化,柱条宽度反映数值) |
|
|
134
|
+
|
|
135
|
+
#### 趋势类 — 时间维度变化
|
|
136
|
+
|
|
137
|
+
| type | 中文名称 | 必填字段 | 典型配置 | 生成效果 |
|
|
138
|
+
|------|---------|---------|---------|---------|
|
|
139
|
+
| `line` | 折线图 | `groupBy` (date 字段) + `interval` | `{ groupBy: "createdAt", interval: "month" }` | G2 折线图(时间趋势) |
|
|
140
|
+
| `area` | 面积图 | `groupBy` (date 字段) + `interval` | `{ groupBy: "createdAt", interval: "month" }` | G2 面积图(累计趋势) |
|
|
141
|
+
|
|
142
|
+
#### 分布类 — 交叉/密度分析
|
|
143
|
+
|
|
144
|
+
| type | 中文名称 | 必填字段 | 典型配置 | 生成效果 |
|
|
145
|
+
|------|---------|---------|---------|---------|
|
|
146
|
+
| `scatter` | 散点图 | `groupBy` | `{ groupBy: "subject" }` | G2 散点图(相关性/分布) |
|
|
147
|
+
| `heatmap` | 热力图 | `groupBy` + `crossGroupBy` | `{ groupBy: "subject", crossGroupBy: "grade" }` | G2 热力图(密度/交叉分析,颜色深浅表示数量) |
|
|
148
|
+
|
|
149
|
+
## 执行 generate dashboard
|
|
150
|
+
|
|
151
|
+
配置好 `dashboards` 字段后,运行命令生成页面:
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
loom generate dashboard <name>
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
此命令会:
|
|
158
|
+
1. 从 `loom.config.ts` 的 `dashboards` 字段读取配置
|
|
159
|
+
2. 验证引用的模型是否存在
|
|
160
|
+
3. 生成 Dashboard TSX 页面(含 `useData` + `useChartData` + `DashboardChart`)
|
|
161
|
+
4. 自动接线 App.tsx(添加 import、navItem、switch case)
|
|
162
|
+
5. 检测 `@antv/g2` 是否已安装,未安装则自动安装
|
|
163
|
+
|
|
164
|
+
**前置依赖:** Dashboard 使用 @antv/g2 渲染图表,需在 frontend 目录安装:
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
cd frontend && pnpm add @antv/g2
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
## 完整配置示例
|
|
171
|
+
|
|
172
|
+
以小学生错题管理平台为例,展示所有 15 种图表的配置:
|
|
173
|
+
|
|
174
|
+
```typescript
|
|
175
|
+
import { defineConfig } from '@loom-framework/core';
|
|
176
|
+
|
|
177
|
+
export default defineConfig({
|
|
178
|
+
project: { name: 'wrong-questions' },
|
|
179
|
+
data: { /* ... */ },
|
|
180
|
+
dashboards: [{
|
|
181
|
+
name: 'overview',
|
|
182
|
+
description: { 'zh-CN': '错题数据概览', 'en-US': 'Overview' },
|
|
183
|
+
models: ['wrong_questions', 'review_plans'],
|
|
184
|
+
defaultDateField: 'createdAt',
|
|
185
|
+
filterDimensions: [
|
|
186
|
+
{ field: 'subject', label: { 'zh-CN': '科目', 'en-US': 'Subject' }, type: 'select' },
|
|
187
|
+
{ field: 'difficulty', label: { 'zh-CN': '难度', 'en-US': 'Difficulty' }, type: 'select' },
|
|
188
|
+
],
|
|
189
|
+
layout: [
|
|
190
|
+
{
|
|
191
|
+
row: [
|
|
192
|
+
{ type: 'stat', title: { 'zh-CN': '错题总数', 'en-US': 'Total Questions' }, model: 'wrong_questions', aggregate: 'count', span: 4 },
|
|
193
|
+
{ type: 'stat', title: { 'zh-CN': '掌握率', 'en-US': 'Mastery Rate' }, model: 'wrong_questions', aggregate: 'ratio', filter: { isMastered: true }, span: 4 },
|
|
194
|
+
{ type: 'gauge', title: { 'zh-CN': '掌握率仪表盘', 'en-US': 'Mastery Gauge' }, model: 'wrong_questions', aggregate: 'ratio', filter: { isMastered: true }, span: 6 },
|
|
195
|
+
{ type: 'liquid', title: { 'zh-CN': '掌握率水波图', 'en-US': 'Mastery Liquid' }, model: 'wrong_questions', aggregate: 'ratio', filter: { isMastered: true }, span: 5 },
|
|
196
|
+
{ type: 'stat', title: { 'zh-CN': '平均复习次数', 'en-US': 'Avg Reviews' }, model: 'wrong_questions', aggregate: 'avg', field: 'reviewCount', span: 5 }
|
|
197
|
+
]
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
row: [
|
|
201
|
+
{ type: 'pie', title: { 'zh-CN': '科目分布', 'en-US': 'By Subject' }, model: 'wrong_questions', groupBy: 'subject', span: 8 },
|
|
202
|
+
{ type: 'ring', title: { 'zh-CN': '难度分布', 'en-US': 'By Difficulty' }, model: 'wrong_questions', groupBy: 'difficulty', span: 8 },
|
|
203
|
+
{ type: 'bar', title: { 'zh-CN': '错误类型分布', 'en-US': 'By Error Type' }, model: 'wrong_questions', groupBy: 'errorType', span: 8 }
|
|
204
|
+
]
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
row: [
|
|
208
|
+
{ type: 'line', title: { 'zh-CN': '错题录入趋势', 'en-US': 'Questions Trend' }, model: 'wrong_questions', groupBy: 'createdAt', interval: 'month', span: 12 },
|
|
209
|
+
{ type: 'area', title: { 'zh-CN': '复习计划趋势', 'en-US': 'Review Plans Trend' }, model: 'review_plans', groupBy: 'createdAt', interval: 'month', span: 12 }
|
|
210
|
+
]
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
row: [
|
|
214
|
+
{ type: 'radar', title: { 'zh-CN': '各科目概览', 'en-US': 'Subject Overview' }, model: 'wrong_questions', groupBy: 'subject', span: 8 },
|
|
215
|
+
{ type: 'stacked_bar', title: { 'zh-CN': '科目×错误类型', 'en-US': 'Subject × Error Type' }, model: 'wrong_questions', groupBy: 'subject', crossGroupBy: 'errorType', span: 8 },
|
|
216
|
+
{ type: 'grouped_bar', title: { 'zh-CN': '科目×难度', 'en-US': 'Subject × Difficulty' }, model: 'wrong_questions', groupBy: 'subject', crossGroupBy: 'difficulty', span: 8 }
|
|
217
|
+
]
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
row: [
|
|
221
|
+
{ type: 'scatter', title: { 'zh-CN': '科目分布散点', 'en-US': 'Subject Scatter' }, model: 'wrong_questions', groupBy: 'subject', span: 8 },
|
|
222
|
+
{ type: 'funnel', title: { 'zh-CN': '错误类型漏斗', 'en-US': 'Error Type Funnel' }, model: 'wrong_questions', groupBy: 'errorType', span: 8 },
|
|
223
|
+
{ type: 'treemap', title: { 'zh-CN': '科目×难度树图', 'en-US': 'Subject × Difficulty Tree' }, model: 'wrong_questions', groupBy: 'subject', crossGroupBy: 'difficulty', span: 8 }
|
|
224
|
+
]
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
row: [
|
|
228
|
+
{ type: 'heatmap', title: { 'zh-CN': '科目×年级热力图', 'en-US': 'Subject × Grade Heatmap' }, model: 'wrong_questions', groupBy: 'subject', crossGroupBy: 'grade', span: 24 }
|
|
229
|
+
]
|
|
230
|
+
}
|
|
231
|
+
]
|
|
232
|
+
}],
|
|
233
|
+
});
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
## 追加自定义图表
|
|
237
|
+
|
|
238
|
+
生成后的 Dashboard 页面是普通 TSX,可直接编辑追加图表:
|
|
239
|
+
|
|
240
|
+
1. 使用 `useChartData` / `useCrossGroupChartData` / `useTreemapChartData` 准备数据
|
|
241
|
+
2. 使用 `/antv-g2-chart` skill 生成 G2 v5 Spec 代码
|
|
242
|
+
3. 添加 `<DashboardChart spec={...} />` 组件
|
|
243
|
+
|
|
244
|
+
示例——追加一个科目×年级的堆叠柱状图:
|
|
245
|
+
|
|
246
|
+
```tsx
|
|
247
|
+
// 在已有的 Dashboard 页面中追加
|
|
248
|
+
const subjectGradeData = useCrossGroupChartData(wrongQuestionsList, { groupBy: 'subject', crossGroupBy: 'grade' });
|
|
249
|
+
|
|
250
|
+
<DashboardChart spec={{
|
|
251
|
+
type: 'interval',
|
|
252
|
+
data: subjectGradeData,
|
|
253
|
+
encode: { x: 'group', y: 'value', color: 'name' },
|
|
254
|
+
coordinate: { transform: [{ type: 'transpose' }] },
|
|
255
|
+
transform: [{ type: 'stackY' }],
|
|
256
|
+
}} />
|
|
257
|
+
```
|