@loom-framework/core 0.1.0-alpha.19 → 0.1.0-alpha.191

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 (815) 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 +47 -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 +365 -0
  187. package/builtin-skills/app-skill/references/evolution.md +90 -0
  188. package/builtin-skills/app-skill/references/feeder.md +184 -0
  189. package/builtin-skills/app-skill/references/model.md +124 -0
  190. package/builtin-skills/app-skill/references/models.md +59 -0
  191. package/builtin-skills/app-skill/references/notification.md +123 -0
  192. package/builtin-skills/app-skill/references/process-builder.md +420 -0
  193. package/builtin-skills/app-skill/references/process.md +458 -0
  194. package/builtin-skills/chart-visualization/SKILL.md +101 -0
  195. package/builtin-skills/loom/SKILL.md +308 -0
  196. package/builtin-skills/loom/references/README.md +285 -0
  197. package/builtin-skills/loom/references/dashboard.md +259 -0
  198. package/builtin-skills/loom/references/data-model.md +306 -0
  199. package/builtin-skills/loom/references/eject.md +111 -0
  200. package/builtin-skills/yuque-reader/SKILL.md +43 -0
  201. package/builtin-skills/yuque-reader/references/config.md +52 -0
  202. package/builtin-skills/yuque-reader/scripts/fetch_doc.py +121 -0
  203. package/dist/adapter-base.d.ts +31 -0
  204. package/dist/adapter-base.d.ts.map +1 -0
  205. package/dist/adapter-base.js +69 -0
  206. package/dist/adapter-base.js.map +1 -0
  207. package/dist/adapter-factory.d.ts +8 -0
  208. package/dist/adapter-factory.d.ts.map +1 -0
  209. package/dist/adapter-factory.js +25 -0
  210. package/dist/adapter-factory.js.map +1 -0
  211. package/dist/adapter-filesystem.d.ts +25 -11
  212. package/dist/adapter-filesystem.d.ts.map +1 -1
  213. package/dist/adapter-filesystem.js +230 -52
  214. package/dist/adapter-filesystem.js.map +1 -1
  215. package/dist/adapter-sqlite.d.ts +9 -23
  216. package/dist/adapter-sqlite.d.ts.map +1 -1
  217. package/dist/adapter-sqlite.js +94 -55
  218. package/dist/adapter-sqlite.js.map +1 -1
  219. package/dist/adapters/base.d.ts +31 -0
  220. package/dist/adapters/base.d.ts.map +1 -0
  221. package/dist/adapters/base.js +69 -0
  222. package/dist/adapters/base.js.map +1 -0
  223. package/dist/adapters/factory.d.ts +8 -0
  224. package/dist/adapters/factory.d.ts.map +1 -0
  225. package/dist/adapters/factory.js +25 -0
  226. package/dist/adapters/factory.js.map +1 -0
  227. package/dist/adapters/filesystem.d.ts +46 -0
  228. package/dist/adapters/filesystem.d.ts.map +1 -0
  229. package/dist/adapters/filesystem.js +321 -0
  230. package/dist/adapters/filesystem.js.map +1 -0
  231. package/dist/adapters/index.d.ts +10 -0
  232. package/dist/adapters/index.d.ts.map +1 -0
  233. package/dist/adapters/index.js +8 -0
  234. package/dist/adapters/index.js.map +1 -0
  235. package/dist/adapters/sqlite.d.ts +37 -0
  236. package/dist/adapters/sqlite.d.ts.map +1 -0
  237. package/dist/adapters/sqlite.js +264 -0
  238. package/dist/adapters/sqlite.js.map +1 -0
  239. package/dist/backend/ai/button-resolver.d.ts +18 -0
  240. package/dist/backend/ai/button-resolver.d.ts.map +1 -0
  241. package/dist/backend/ai/button-resolver.js +58 -0
  242. package/dist/backend/ai/button-resolver.js.map +1 -0
  243. package/dist/backend/ai/content-blocks.d.ts +18 -0
  244. package/dist/backend/ai/content-blocks.d.ts.map +1 -0
  245. package/dist/backend/ai/content-blocks.js +66 -0
  246. package/dist/backend/ai/content-blocks.js.map +1 -0
  247. package/dist/backend/ai/engine.d.ts +65 -0
  248. package/dist/backend/ai/engine.d.ts.map +1 -0
  249. package/dist/backend/ai/engine.js +238 -0
  250. package/dist/backend/ai/engine.js.map +1 -0
  251. package/dist/backend/ai/index.d.ts +11 -0
  252. package/dist/backend/ai/index.d.ts.map +1 -0
  253. package/dist/backend/ai/index.js +8 -0
  254. package/dist/backend/ai/index.js.map +1 -0
  255. package/dist/backend/ai/output-parser.d.ts +36 -0
  256. package/dist/backend/ai/output-parser.d.ts.map +1 -0
  257. package/dist/backend/ai/output-parser.js +264 -0
  258. package/dist/backend/ai/output-parser.js.map +1 -0
  259. package/dist/backend/ai/session-manager.d.ts +106 -0
  260. package/dist/backend/ai/session-manager.d.ts.map +1 -0
  261. package/dist/backend/ai/session-manager.js +304 -0
  262. package/dist/backend/ai/session-manager.js.map +1 -0
  263. package/dist/backend/auth/jwt.d.ts +16 -0
  264. package/dist/backend/auth/jwt.d.ts.map +1 -0
  265. package/dist/backend/auth/jwt.js +57 -0
  266. package/dist/backend/auth/jwt.js.map +1 -0
  267. package/dist/backend/auth/password.d.ts +10 -0
  268. package/dist/backend/auth/password.d.ts.map +1 -0
  269. package/dist/backend/auth/password.js +19 -0
  270. package/dist/backend/auth/password.js.map +1 -0
  271. package/dist/backend/auth/rbac.d.ts +36 -0
  272. package/dist/backend/auth/rbac.d.ts.map +1 -0
  273. package/dist/backend/auth/rbac.js +130 -0
  274. package/dist/backend/auth/rbac.js.map +1 -0
  275. package/dist/backend/auth/request-context.d.ts +15 -0
  276. package/dist/backend/auth/request-context.d.ts.map +1 -0
  277. package/dist/backend/auth/request-context.js +17 -0
  278. package/dist/backend/auth/request-context.js.map +1 -0
  279. package/dist/backend/auth/service-token.d.ts +11 -0
  280. package/dist/backend/auth/service-token.d.ts.map +1 -0
  281. package/dist/backend/auth/service-token.js +13 -0
  282. package/dist/backend/auth/service-token.js.map +1 -0
  283. package/dist/backend/auth/token-store.d.ts +28 -0
  284. package/dist/backend/auth/token-store.d.ts.map +1 -0
  285. package/dist/backend/auth/token-store.js +84 -0
  286. package/dist/backend/auth/token-store.js.map +1 -0
  287. package/dist/backend/auth/user-store.d.ts +42 -0
  288. package/dist/backend/auth/user-store.d.ts.map +1 -0
  289. package/dist/backend/auth/user-store.js +112 -0
  290. package/dist/backend/auth/user-store.js.map +1 -0
  291. package/dist/backend/events/event-bus.d.ts +39 -0
  292. package/dist/backend/events/event-bus.d.ts.map +1 -0
  293. package/dist/backend/events/event-bus.js +182 -0
  294. package/dist/backend/events/event-bus.js.map +1 -0
  295. package/dist/backend/events/event-emitting-adapter.d.ts +31 -0
  296. package/dist/backend/events/event-emitting-adapter.d.ts.map +1 -0
  297. package/dist/backend/events/event-emitting-adapter.js +70 -0
  298. package/dist/backend/events/event-emitting-adapter.js.map +1 -0
  299. package/dist/backend/events/event-registry.d.ts +22 -0
  300. package/dist/backend/events/event-registry.d.ts.map +1 -0
  301. package/dist/backend/events/event-registry.js +35 -0
  302. package/dist/backend/events/event-registry.js.map +1 -0
  303. package/dist/backend/events/index.d.ts +7 -0
  304. package/dist/backend/events/index.d.ts.map +1 -0
  305. package/dist/backend/events/index.js +7 -0
  306. package/dist/backend/events/index.js.map +1 -0
  307. package/dist/backend/events/subscription-service.d.ts +46 -0
  308. package/dist/backend/events/subscription-service.d.ts.map +1 -0
  309. package/dist/backend/events/subscription-service.js +220 -0
  310. package/dist/backend/events/subscription-service.js.map +1 -0
  311. package/dist/backend/index.d.ts +93 -0
  312. package/dist/backend/index.d.ts.map +1 -0
  313. package/dist/backend/index.js +481 -0
  314. package/dist/backend/index.js.map +1 -0
  315. package/dist/backend/lifecycle/index.d.ts +2 -0
  316. package/dist/backend/lifecycle/index.d.ts.map +1 -0
  317. package/dist/backend/lifecycle/index.js +2 -0
  318. package/dist/backend/lifecycle/index.js.map +1 -0
  319. package/dist/backend/lifecycle/manager.d.ts +73 -0
  320. package/dist/backend/lifecycle/manager.d.ts.map +1 -0
  321. package/dist/backend/lifecycle/manager.js +684 -0
  322. package/dist/backend/lifecycle/manager.js.map +1 -0
  323. package/dist/backend/loom-paths.d.ts +30 -0
  324. package/dist/backend/loom-paths.d.ts.map +1 -0
  325. package/dist/backend/loom-paths.js +49 -0
  326. package/dist/backend/loom-paths.js.map +1 -0
  327. package/dist/backend/notifications/interpolate.d.ts +6 -0
  328. package/dist/backend/notifications/interpolate.d.ts.map +1 -0
  329. package/dist/backend/notifications/interpolate.js +11 -0
  330. package/dist/backend/notifications/interpolate.js.map +1 -0
  331. package/dist/backend/notifications/notification-storage.d.ts +27 -0
  332. package/dist/backend/notifications/notification-storage.d.ts.map +1 -0
  333. package/dist/backend/notifications/notification-storage.js +160 -0
  334. package/dist/backend/notifications/notification-storage.js.map +1 -0
  335. package/dist/backend/observe/index.d.ts +6 -0
  336. package/dist/backend/observe/index.d.ts.map +1 -0
  337. package/dist/backend/observe/index.js +5 -0
  338. package/dist/backend/observe/index.js.map +1 -0
  339. package/dist/backend/observe/logger.d.ts +26 -0
  340. package/dist/backend/observe/logger.d.ts.map +1 -0
  341. package/dist/backend/observe/logger.js +68 -0
  342. package/dist/backend/observe/logger.js.map +1 -0
  343. package/dist/backend/observe/types.d.ts +26 -0
  344. package/dist/backend/observe/types.d.ts.map +1 -0
  345. package/dist/backend/observe/types.js +7 -0
  346. package/dist/backend/observe/types.js.map +1 -0
  347. package/dist/backend/process/engine.d.ts +127 -0
  348. package/dist/backend/process/engine.d.ts.map +1 -0
  349. package/dist/backend/process/engine.js +668 -0
  350. package/dist/backend/process/engine.js.map +1 -0
  351. package/dist/backend/process/index.d.ts +8 -0
  352. package/dist/backend/process/index.d.ts.map +1 -0
  353. package/dist/backend/process/index.js +7 -0
  354. package/dist/backend/process/index.js.map +1 -0
  355. package/dist/backend/process/logger.d.ts +38 -0
  356. package/dist/backend/process/logger.d.ts.map +1 -0
  357. package/dist/backend/process/logger.js +198 -0
  358. package/dist/backend/process/logger.js.map +1 -0
  359. package/dist/backend/process/metrics-store.d.ts +32 -0
  360. package/dist/backend/process/metrics-store.d.ts.map +1 -0
  361. package/dist/backend/process/metrics-store.js +108 -0
  362. package/dist/backend/process/metrics-store.js.map +1 -0
  363. package/dist/backend/process/migrate.d.ts +12 -0
  364. package/dist/backend/process/migrate.d.ts.map +1 -0
  365. package/dist/backend/process/migrate.js +145 -0
  366. package/dist/backend/process/migrate.js.map +1 -0
  367. package/dist/backend/process/process-helpers.d.ts +13 -0
  368. package/dist/backend/process/process-helpers.d.ts.map +1 -0
  369. package/dist/backend/process/process-helpers.js +23 -0
  370. package/dist/backend/process/process-helpers.js.map +1 -0
  371. package/dist/backend/process/queue.d.ts +33 -0
  372. package/dist/backend/process/queue.d.ts.map +1 -0
  373. package/dist/backend/process/queue.js +94 -0
  374. package/dist/backend/process/queue.js.map +1 -0
  375. package/dist/backend/process/registry.d.ts +64 -0
  376. package/dist/backend/process/registry.d.ts.map +1 -0
  377. package/dist/backend/process/registry.js +277 -0
  378. package/dist/backend/process/registry.js.map +1 -0
  379. package/dist/backend/process/trigger.d.ts +39 -0
  380. package/dist/backend/process/trigger.d.ts.map +1 -0
  381. package/dist/backend/process/trigger.js +162 -0
  382. package/dist/backend/process/trigger.js.map +1 -0
  383. package/dist/backend/routes/ai-config.d.ts +18 -0
  384. package/dist/backend/routes/ai-config.d.ts.map +1 -0
  385. package/dist/backend/routes/ai-config.js +227 -0
  386. package/dist/backend/routes/ai-config.js.map +1 -0
  387. package/dist/backend/routes/auth-routes.d.ts +33 -0
  388. package/dist/backend/routes/auth-routes.d.ts.map +1 -0
  389. package/dist/backend/routes/auth-routes.js +528 -0
  390. package/dist/backend/routes/auth-routes.js.map +1 -0
  391. package/dist/backend/routes/chat-sse.d.ts +17 -0
  392. package/dist/backend/routes/chat-sse.d.ts.map +1 -0
  393. package/dist/backend/routes/chat-sse.js +60 -0
  394. package/dist/backend/routes/chat-sse.js.map +1 -0
  395. package/dist/backend/routes/chat.d.ts +30 -0
  396. package/dist/backend/routes/chat.d.ts.map +1 -0
  397. package/dist/backend/routes/chat.js +258 -0
  398. package/dist/backend/routes/chat.js.map +1 -0
  399. package/dist/backend/routes/config-writer.d.ts +94 -0
  400. package/dist/backend/routes/config-writer.d.ts.map +1 -0
  401. package/dist/backend/routes/config-writer.js +538 -0
  402. package/dist/backend/routes/config-writer.js.map +1 -0
  403. package/dist/backend/routes/data.d.ts +16 -0
  404. package/dist/backend/routes/data.d.ts.map +1 -0
  405. package/dist/backend/routes/data.js +371 -0
  406. package/dist/backend/routes/data.js.map +1 -0
  407. package/dist/backend/routes/event-routes.d.ts +22 -0
  408. package/dist/backend/routes/event-routes.d.ts.map +1 -0
  409. package/dist/backend/routes/event-routes.js +153 -0
  410. package/dist/backend/routes/event-routes.js.map +1 -0
  411. package/dist/backend/routes/health.d.ts +7 -0
  412. package/dist/backend/routes/health.d.ts.map +1 -0
  413. package/dist/backend/routes/health.js +15 -0
  414. package/dist/backend/routes/health.js.map +1 -0
  415. package/dist/backend/routes/index.d.ts +24 -0
  416. package/dist/backend/routes/index.d.ts.map +1 -0
  417. package/dist/backend/routes/index.js +16 -0
  418. package/dist/backend/routes/index.js.map +1 -0
  419. package/dist/backend/routes/lifecycle-routes.d.ts +10 -0
  420. package/dist/backend/routes/lifecycle-routes.d.ts.map +1 -0
  421. package/dist/backend/routes/lifecycle-routes.js +54 -0
  422. package/dist/backend/routes/lifecycle-routes.js.map +1 -0
  423. package/dist/backend/routes/notification-routes.d.ts +22 -0
  424. package/dist/backend/routes/notification-routes.d.ts.map +1 -0
  425. package/dist/backend/routes/notification-routes.js +129 -0
  426. package/dist/backend/routes/notification-routes.js.map +1 -0
  427. package/dist/backend/routes/process-routes.d.ts +22 -0
  428. package/dist/backend/routes/process-routes.d.ts.map +1 -0
  429. package/dist/backend/routes/process-routes.js +542 -0
  430. package/dist/backend/routes/process-routes.js.map +1 -0
  431. package/dist/backend/routes/session-routes.d.ts +22 -0
  432. package/dist/backend/routes/session-routes.d.ts.map +1 -0
  433. package/dist/backend/routes/session-routes.js +97 -0
  434. package/dist/backend/routes/session-routes.js.map +1 -0
  435. package/dist/backend/routes/skill-archive.d.ts +13 -0
  436. package/dist/backend/routes/skill-archive.d.ts.map +1 -0
  437. package/dist/backend/routes/skill-archive.js +84 -0
  438. package/dist/backend/routes/skill-archive.js.map +1 -0
  439. package/dist/backend/routes/skill-parser.d.ts +41 -0
  440. package/dist/backend/routes/skill-parser.d.ts.map +1 -0
  441. package/dist/backend/routes/skill-parser.js +184 -0
  442. package/dist/backend/routes/skill-parser.js.map +1 -0
  443. package/dist/backend/routes/skill-service.d.ts +113 -0
  444. package/dist/backend/routes/skill-service.d.ts.map +1 -0
  445. package/dist/backend/routes/skill-service.js +265 -0
  446. package/dist/backend/routes/skill-service.js.map +1 -0
  447. package/dist/backend/routes/skills.d.ts +18 -0
  448. package/dist/backend/routes/skills.d.ts.map +1 -0
  449. package/dist/backend/routes/skills.js +168 -0
  450. package/dist/backend/routes/skills.js.map +1 -0
  451. package/dist/backend/routes/upload.d.ts +25 -0
  452. package/dist/backend/routes/upload.d.ts.map +1 -0
  453. package/dist/backend/routes/upload.js +100 -0
  454. package/dist/backend/routes/upload.js.map +1 -0
  455. package/dist/backend/services/skill-archive.d.ts +13 -0
  456. package/dist/backend/services/skill-archive.d.ts.map +1 -0
  457. package/dist/backend/services/skill-archive.js +84 -0
  458. package/dist/backend/services/skill-archive.js.map +1 -0
  459. package/dist/backend/services/skill-parser.d.ts +41 -0
  460. package/dist/backend/services/skill-parser.d.ts.map +1 -0
  461. package/dist/backend/services/skill-parser.js +184 -0
  462. package/dist/backend/services/skill-parser.js.map +1 -0
  463. package/dist/backend/services/skill-service.d.ts +113 -0
  464. package/dist/backend/services/skill-service.d.ts.map +1 -0
  465. package/dist/backend/services/skill-service.js +265 -0
  466. package/dist/backend/services/skill-service.js.map +1 -0
  467. package/dist/bin.d.ts +8 -0
  468. package/dist/bin.d.ts.map +1 -0
  469. package/dist/bin.js +12 -0
  470. package/dist/bin.js.map +1 -0
  471. package/dist/capability-generator.d.ts +21 -6
  472. package/dist/capability-generator.d.ts.map +1 -1
  473. package/dist/capability-generator.js +88 -261
  474. package/dist/capability-generator.js.map +1 -1
  475. package/dist/cli/commands/auth.d.ts +11 -0
  476. package/dist/cli/commands/auth.d.ts.map +1 -0
  477. package/dist/cli/commands/auth.js +211 -0
  478. package/dist/cli/commands/auth.js.map +1 -0
  479. package/dist/cli/commands/build.d.ts +11 -0
  480. package/dist/cli/commands/build.d.ts.map +1 -0
  481. package/dist/cli/commands/build.js +170 -0
  482. package/dist/cli/commands/build.js.map +1 -0
  483. package/dist/cli/commands/data.d.ts +15 -0
  484. package/dist/cli/commands/data.d.ts.map +1 -0
  485. package/dist/cli/commands/data.js +220 -0
  486. package/dist/cli/commands/data.js.map +1 -0
  487. package/dist/cli/commands/dev.d.ts +8 -0
  488. package/dist/cli/commands/dev.d.ts.map +1 -0
  489. package/dist/cli/commands/dev.js +114 -0
  490. package/dist/cli/commands/dev.js.map +1 -0
  491. package/dist/cli/commands/eject.d.ts +12 -0
  492. package/dist/cli/commands/eject.d.ts.map +1 -0
  493. package/dist/cli/commands/eject.js +280 -0
  494. package/dist/cli/commands/eject.js.map +1 -0
  495. package/dist/cli/commands/event.d.ts +13 -0
  496. package/dist/cli/commands/event.d.ts.map +1 -0
  497. package/dist/cli/commands/event.js +379 -0
  498. package/dist/cli/commands/event.js.map +1 -0
  499. package/dist/cli/commands/generate-capabilities.d.ts +8 -0
  500. package/dist/cli/commands/generate-capabilities.d.ts.map +1 -0
  501. package/dist/cli/commands/generate-capabilities.js +41 -0
  502. package/dist/cli/commands/generate-capabilities.js.map +1 -0
  503. package/dist/cli/commands/generate-cli-command.d.ts +8 -0
  504. package/dist/cli/commands/generate-cli-command.d.ts.map +1 -0
  505. package/dist/cli/commands/generate-cli-command.js +64 -0
  506. package/dist/cli/commands/generate-cli-command.js.map +1 -0
  507. package/dist/cli/commands/generate-dashboard.d.ts +9 -0
  508. package/dist/cli/commands/generate-dashboard.d.ts.map +1 -0
  509. package/dist/cli/commands/generate-dashboard.js +113 -0
  510. package/dist/cli/commands/generate-dashboard.js.map +1 -0
  511. package/dist/cli/commands/generate-notification.d.ts +9 -0
  512. package/dist/cli/commands/generate-notification.d.ts.map +1 -0
  513. package/dist/cli/commands/generate-notification.js +24 -0
  514. package/dist/cli/commands/generate-notification.js.map +1 -0
  515. package/dist/cli/commands/generate-page.d.ts +9 -0
  516. package/dist/cli/commands/generate-page.d.ts.map +1 -0
  517. package/dist/cli/commands/generate-page.js +105 -0
  518. package/dist/cli/commands/generate-page.js.map +1 -0
  519. package/dist/cli/commands/generate-skill.d.ts +8 -0
  520. package/dist/cli/commands/generate-skill.d.ts.map +1 -0
  521. package/dist/cli/commands/generate-skill.js +75 -0
  522. package/dist/cli/commands/generate-skill.js.map +1 -0
  523. package/dist/cli/commands/generate-system-settings.d.ts +10 -0
  524. package/dist/cli/commands/generate-system-settings.d.ts.map +1 -0
  525. package/dist/cli/commands/generate-system-settings.js +56 -0
  526. package/dist/cli/commands/generate-system-settings.js.map +1 -0
  527. package/dist/cli/commands/generate.d.ts +6 -0
  528. package/dist/cli/commands/generate.d.ts.map +1 -0
  529. package/dist/cli/commands/generate.js +21 -0
  530. package/dist/cli/commands/generate.js.map +1 -0
  531. package/dist/cli/commands/init.d.ts +8 -0
  532. package/dist/cli/commands/init.d.ts.map +1 -0
  533. package/dist/cli/commands/init.js +384 -0
  534. package/dist/cli/commands/init.js.map +1 -0
  535. package/dist/cli/commands/lifecycle.d.ts +8 -0
  536. package/dist/cli/commands/lifecycle.d.ts.map +1 -0
  537. package/dist/cli/commands/lifecycle.js +166 -0
  538. package/dist/cli/commands/lifecycle.js.map +1 -0
  539. package/dist/cli/commands/model.d.ts +9 -0
  540. package/dist/cli/commands/model.d.ts.map +1 -0
  541. package/dist/cli/commands/model.js +218 -0
  542. package/dist/cli/commands/model.js.map +1 -0
  543. package/dist/cli/commands/notification.d.ts +8 -0
  544. package/dist/cli/commands/notification.d.ts.map +1 -0
  545. package/dist/cli/commands/notification.js +179 -0
  546. package/dist/cli/commands/notification.js.map +1 -0
  547. package/dist/cli/commands/observe.d.ts +9 -0
  548. package/dist/cli/commands/observe.d.ts.map +1 -0
  549. package/dist/cli/commands/observe.js +142 -0
  550. package/dist/cli/commands/observe.js.map +1 -0
  551. package/dist/cli/commands/process.d.ts +8 -0
  552. package/dist/cli/commands/process.d.ts.map +1 -0
  553. package/dist/cli/commands/process.js +630 -0
  554. package/dist/cli/commands/process.js.map +1 -0
  555. package/dist/cli/commands/role.d.ts +12 -0
  556. package/dist/cli/commands/role.d.ts.map +1 -0
  557. package/dist/cli/commands/role.js +208 -0
  558. package/dist/cli/commands/role.js.map +1 -0
  559. package/dist/cli/commands/serve.d.ts +12 -0
  560. package/dist/cli/commands/serve.d.ts.map +1 -0
  561. package/dist/cli/commands/serve.js +43 -0
  562. package/dist/cli/commands/serve.js.map +1 -0
  563. package/dist/cli/commands/skill.d.ts +9 -0
  564. package/dist/cli/commands/skill.d.ts.map +1 -0
  565. package/dist/cli/commands/skill.js +186 -0
  566. package/dist/cli/commands/skill.js.map +1 -0
  567. package/dist/cli/commands/user-cmd.d.ts +9 -0
  568. package/dist/cli/commands/user-cmd.d.ts.map +1 -0
  569. package/dist/cli/commands/user-cmd.js +195 -0
  570. package/dist/cli/commands/user-cmd.js.map +1 -0
  571. package/dist/cli/framework.d.ts +28 -0
  572. package/dist/cli/framework.d.ts.map +1 -0
  573. package/dist/cli/framework.js +29 -0
  574. package/dist/cli/framework.js.map +1 -0
  575. package/dist/cli/generators/capability-generator.d.ts +35 -0
  576. package/dist/cli/generators/capability-generator.d.ts.map +1 -0
  577. package/dist/cli/generators/capability-generator.js +371 -0
  578. package/dist/cli/generators/capability-generator.js.map +1 -0
  579. package/dist/cli/helpers/app-tsx-utils.d.ts +12 -0
  580. package/dist/cli/helpers/app-tsx-utils.d.ts.map +1 -0
  581. package/dist/cli/helpers/app-tsx-utils.js +22 -0
  582. package/dist/cli/helpers/app-tsx-utils.js.map +1 -0
  583. package/dist/cli/helpers/app-tsx-wiring-engine.d.ts +70 -0
  584. package/dist/cli/helpers/app-tsx-wiring-engine.d.ts.map +1 -0
  585. package/dist/cli/helpers/app-tsx-wiring-engine.js +535 -0
  586. package/dist/cli/helpers/app-tsx-wiring-engine.js.map +1 -0
  587. package/dist/cli/helpers/app-tsx-wiring.d.ts +19 -0
  588. package/dist/cli/helpers/app-tsx-wiring.d.ts.map +1 -0
  589. package/dist/cli/helpers/app-tsx-wiring.js +145 -0
  590. package/dist/cli/helpers/app-tsx-wiring.js.map +1 -0
  591. package/dist/cli/helpers/auth-client.d.ts +19 -0
  592. package/dist/cli/helpers/auth-client.d.ts.map +1 -0
  593. package/dist/cli/helpers/auth-client.js +42 -0
  594. package/dist/cli/helpers/auth-client.js.map +1 -0
  595. package/dist/cli/helpers/backup.d.ts +16 -0
  596. package/dist/cli/helpers/backup.d.ts.map +1 -0
  597. package/dist/cli/helpers/backup.js +34 -0
  598. package/dist/cli/helpers/backup.js.map +1 -0
  599. package/dist/cli/helpers/column-template.d.ts +20 -0
  600. package/dist/cli/helpers/column-template.d.ts.map +1 -0
  601. package/dist/cli/helpers/column-template.js +165 -0
  602. package/dist/cli/helpers/column-template.js.map +1 -0
  603. package/dist/cli/helpers/duration.d.ts +5 -0
  604. package/dist/cli/helpers/duration.d.ts.map +1 -0
  605. package/dist/cli/helpers/duration.js +5 -0
  606. package/dist/cli/helpers/duration.js.map +1 -0
  607. package/dist/cli/helpers/field-template.d.ts +14 -0
  608. package/dist/cli/helpers/field-template.d.ts.map +1 -0
  609. package/dist/cli/helpers/field-template.js +117 -0
  610. package/dist/cli/helpers/field-template.js.map +1 -0
  611. package/dist/cli/helpers/i18n-template.d.ts +21 -0
  612. package/dist/cli/helpers/i18n-template.d.ts.map +1 -0
  613. package/dist/cli/helpers/i18n-template.js +69 -0
  614. package/dist/cli/helpers/i18n-template.js.map +1 -0
  615. package/dist/cli/helpers/naming.d.ts +11 -0
  616. package/dist/cli/helpers/naming.d.ts.map +1 -0
  617. package/dist/cli/helpers/naming.js +21 -0
  618. package/dist/cli/helpers/naming.js.map +1 -0
  619. package/dist/cli/helpers/system-page-config.d.ts +27 -0
  620. package/dist/cli/helpers/system-page-config.d.ts.map +1 -0
  621. package/dist/cli/helpers/system-page-config.js +82 -0
  622. package/dist/cli/helpers/system-page-config.js.map +1 -0
  623. package/dist/cli/index.d.ts +9 -0
  624. package/dist/cli/index.d.ts.map +1 -0
  625. package/dist/cli/index.js +51 -0
  626. package/dist/cli/index.js.map +1 -0
  627. package/dist/cli/lib/credentials.d.ts +27 -0
  628. package/dist/cli/lib/credentials.d.ts.map +1 -0
  629. package/dist/cli/lib/credentials.js +112 -0
  630. package/dist/cli/lib/credentials.js.map +1 -0
  631. package/dist/cli/templates/auth-wiring.d.ts +17 -0
  632. package/dist/cli/templates/auth-wiring.d.ts.map +1 -0
  633. package/dist/cli/templates/auth-wiring.js +31 -0
  634. package/dist/cli/templates/auth-wiring.js.map +1 -0
  635. package/dist/cli/templates/backend-entry.d.ts +5 -0
  636. package/dist/cli/templates/backend-entry.d.ts.map +1 -0
  637. package/dist/cli/templates/backend-entry.js +17 -0
  638. package/dist/cli/templates/backend-entry.js.map +1 -0
  639. package/dist/cli/templates/claude-md.d.ts +20 -0
  640. package/dist/cli/templates/claude-md.d.ts.map +1 -0
  641. package/dist/cli/templates/claude-md.js +123 -0
  642. package/dist/cli/templates/claude-md.js.map +1 -0
  643. package/dist/cli/templates/crud-page.d.ts +14 -0
  644. package/dist/cli/templates/crud-page.d.ts.map +1 -0
  645. package/dist/cli/templates/crud-page.js +436 -0
  646. package/dist/cli/templates/crud-page.js.map +1 -0
  647. package/dist/cli/templates/dashboard-page.d.ts +11 -0
  648. package/dist/cli/templates/dashboard-page.d.ts.map +1 -0
  649. package/dist/cli/templates/dashboard-page.js +613 -0
  650. package/dist/cli/templates/dashboard-page.js.map +1 -0
  651. package/dist/cli/templates/event-management-page.d.ts +8 -0
  652. package/dist/cli/templates/event-management-page.d.ts.map +1 -0
  653. package/dist/cli/templates/event-management-page.js +724 -0
  654. package/dist/cli/templates/event-management-page.js.map +1 -0
  655. package/dist/cli/templates/frontend-entry.d.ts +11 -0
  656. package/dist/cli/templates/frontend-entry.d.ts.map +1 -0
  657. package/dist/cli/templates/frontend-entry.js +94 -0
  658. package/dist/cli/templates/frontend-entry.js.map +1 -0
  659. package/dist/cli/templates/gitignore.d.ts +5 -0
  660. package/dist/cli/templates/gitignore.d.ts.map +1 -0
  661. package/dist/cli/templates/gitignore.js +13 -0
  662. package/dist/cli/templates/gitignore.js.map +1 -0
  663. package/dist/cli/templates/index.d.ts +21 -0
  664. package/dist/cli/templates/index.d.ts.map +1 -0
  665. package/dist/cli/templates/index.js +21 -0
  666. package/dist/cli/templates/index.js.map +1 -0
  667. package/dist/cli/templates/login-page.d.ts +8 -0
  668. package/dist/cli/templates/login-page.d.ts.map +1 -0
  669. package/dist/cli/templates/login-page.js +67 -0
  670. package/dist/cli/templates/login-page.js.map +1 -0
  671. package/dist/cli/templates/loom-config.d.ts +15 -0
  672. package/dist/cli/templates/loom-config.d.ts.map +1 -0
  673. package/dist/cli/templates/loom-config.js +91 -0
  674. package/dist/cli/templates/loom-config.js.map +1 -0
  675. package/dist/cli/templates/model-management-page.d.ts +8 -0
  676. package/dist/cli/templates/model-management-page.d.ts.map +1 -0
  677. package/dist/cli/templates/model-management-page.js +373 -0
  678. package/dist/cli/templates/model-management-page.js.map +1 -0
  679. package/dist/cli/templates/notification-center-page.d.ts +8 -0
  680. package/dist/cli/templates/notification-center-page.d.ts.map +1 -0
  681. package/dist/cli/templates/notification-center-page.js +240 -0
  682. package/dist/cli/templates/notification-center-page.js.map +1 -0
  683. package/dist/cli/templates/notification-detail-page.d.ts +8 -0
  684. package/dist/cli/templates/notification-detail-page.d.ts.map +1 -0
  685. package/dist/cli/templates/notification-detail-page.js +87 -0
  686. package/dist/cli/templates/notification-detail-page.js.map +1 -0
  687. package/dist/cli/templates/package-json.d.ts +9 -0
  688. package/dist/cli/templates/package-json.d.ts.map +1 -0
  689. package/dist/cli/templates/package-json.js +41 -0
  690. package/dist/cli/templates/package-json.js.map +1 -0
  691. package/dist/cli/templates/process-management-page.d.ts +8 -0
  692. package/dist/cli/templates/process-management-page.d.ts.map +1 -0
  693. package/dist/cli/templates/process-management-page.js +542 -0
  694. package/dist/cli/templates/process-management-page.js.map +1 -0
  695. package/dist/cli/templates/readme.d.ts +9 -0
  696. package/dist/cli/templates/readme.d.ts.map +1 -0
  697. package/dist/cli/templates/readme.js +47 -0
  698. package/dist/cli/templates/readme.js.map +1 -0
  699. package/dist/cli/templates/skill-management-page.d.ts +8 -0
  700. package/dist/cli/templates/skill-management-page.d.ts.map +1 -0
  701. package/dist/cli/templates/skill-management-page.js +476 -0
  702. package/dist/cli/templates/skill-management-page.js.map +1 -0
  703. package/dist/cli/templates/system-settings-page.d.ts +10 -0
  704. package/dist/cli/templates/system-settings-page.d.ts.map +1 -0
  705. package/dist/cli/templates/system-settings-page.js +768 -0
  706. package/dist/cli/templates/system-settings-page.js.map +1 -0
  707. package/dist/cli/templates/tsconfig.d.ts +6 -0
  708. package/dist/cli/templates/tsconfig.d.ts.map +1 -0
  709. package/dist/cli/templates/tsconfig.js +41 -0
  710. package/dist/cli/templates/tsconfig.js.map +1 -0
  711. package/dist/cli/templates/user-management-page.d.ts +8 -0
  712. package/dist/cli/templates/user-management-page.d.ts.map +1 -0
  713. package/dist/cli/templates/user-management-page.js +497 -0
  714. package/dist/cli/templates/user-management-page.js.map +1 -0
  715. package/dist/cli/templates/vite-config.d.ts +9 -0
  716. package/dist/cli/templates/vite-config.d.ts.map +1 -0
  717. package/dist/cli/templates/vite-config.js +26 -0
  718. package/dist/cli/templates/vite-config.js.map +1 -0
  719. package/dist/cli/utils.d.ts +10 -0
  720. package/dist/cli/utils.d.ts.map +1 -0
  721. package/dist/cli/utils.js +31 -0
  722. package/dist/cli/utils.js.map +1 -0
  723. package/dist/commands.d.ts +1 -5
  724. package/dist/commands.d.ts.map +1 -1
  725. package/dist/commands.js +0 -11
  726. package/dist/commands.js.map +1 -1
  727. package/dist/config.d.ts +2010 -95
  728. package/dist/config.d.ts.map +1 -1
  729. package/dist/config.js +195 -16
  730. package/dist/config.js.map +1 -1
  731. package/dist/dashboard-config.d.ts +149 -0
  732. package/dist/dashboard-config.d.ts.map +1 -0
  733. package/dist/dashboard-config.js +40 -0
  734. package/dist/dashboard-config.js.map +1 -0
  735. package/dist/index.d.ts +24 -9
  736. package/dist/index.d.ts.map +1 -1
  737. package/dist/index.js +20 -5
  738. package/dist/index.js.map +1 -1
  739. package/dist/server-bin.d.ts +12 -0
  740. package/dist/server-bin.d.ts.map +1 -0
  741. package/dist/server-bin.js +43 -0
  742. package/dist/server-bin.js.map +1 -0
  743. package/dist/system-prompt.d.ts +20 -0
  744. package/dist/system-prompt.d.ts.map +1 -0
  745. package/dist/system-prompt.js +140 -0
  746. package/dist/system-prompt.js.map +1 -0
  747. package/dist/types/adapter.d.ts +30 -0
  748. package/dist/types/adapter.d.ts.map +1 -0
  749. package/dist/types/adapter.js +5 -0
  750. package/dist/types/adapter.js.map +1 -0
  751. package/dist/types/ai.d.ts +78 -0
  752. package/dist/types/ai.d.ts.map +1 -0
  753. package/dist/types/ai.js +5 -0
  754. package/dist/types/ai.js.map +1 -0
  755. package/dist/types/auth.d.ts +62 -0
  756. package/dist/types/auth.d.ts.map +1 -0
  757. package/dist/types/auth.js +5 -0
  758. package/dist/types/auth.js.map +1 -0
  759. package/dist/types/chat.d.ts +47 -0
  760. package/dist/types/chat.d.ts.map +1 -0
  761. package/dist/types/chat.js +8 -0
  762. package/dist/types/chat.js.map +1 -0
  763. package/dist/types/command.d.ts +25 -0
  764. package/dist/types/command.d.ts.map +1 -0
  765. package/dist/types/command.js +5 -0
  766. package/dist/types/command.js.map +1 -0
  767. package/dist/types/config.d.ts +69 -0
  768. package/dist/types/config.d.ts.map +1 -0
  769. package/dist/types/config.js +5 -0
  770. package/dist/types/config.js.map +1 -0
  771. package/dist/types/dashboard.d.ts +59 -0
  772. package/dist/types/dashboard.d.ts.map +1 -0
  773. package/dist/types/dashboard.js +5 -0
  774. package/dist/types/dashboard.js.map +1 -0
  775. package/dist/types/event.d.ts +109 -0
  776. package/dist/types/event.d.ts.map +1 -0
  777. package/dist/types/event.js +38 -0
  778. package/dist/types/event.js.map +1 -0
  779. package/dist/types/index.d.ts +22 -0
  780. package/dist/types/index.d.ts.map +1 -0
  781. package/dist/types/index.js +9 -0
  782. package/dist/types/index.js.map +1 -0
  783. package/dist/types/lifecycle.d.ts +71 -0
  784. package/dist/types/lifecycle.d.ts.map +1 -0
  785. package/dist/types/lifecycle.js +10 -0
  786. package/dist/types/lifecycle.js.map +1 -0
  787. package/dist/types/locale.d.ts +21 -0
  788. package/dist/types/locale.d.ts.map +1 -0
  789. package/dist/types/locale.js +36 -0
  790. package/dist/types/locale.js.map +1 -0
  791. package/dist/types/model.d.ts +71 -0
  792. package/dist/types/model.d.ts.map +1 -0
  793. package/dist/types/model.js +5 -0
  794. package/dist/types/model.js.map +1 -0
  795. package/dist/types/notification.d.ts +33 -0
  796. package/dist/types/notification.d.ts.map +1 -0
  797. package/dist/types/notification.js +5 -0
  798. package/dist/types/notification.js.map +1 -0
  799. package/dist/types/process.d.ts +233 -0
  800. package/dist/types/process.d.ts.map +1 -0
  801. package/dist/types/process.js +5 -0
  802. package/dist/types/process.js.map +1 -0
  803. package/dist/types.d.ts +4 -199
  804. package/dist/types.d.ts.map +1 -1
  805. package/dist/types.js +4 -3
  806. package/dist/types.js.map +1 -1
  807. package/dist/utils/duration.d.ts +8 -0
  808. package/dist/utils/duration.d.ts.map +1 -0
  809. package/dist/utils/duration.js +22 -0
  810. package/dist/utils/duration.js.map +1 -0
  811. package/dist/utils/id.d.ts +7 -0
  812. package/dist/utils/id.d.ts.map +1 -0
  813. package/dist/utils/id.js +9 -0
  814. package/dist/utils/id.js.map +1 -0
  815. package/package.json +30 -5
@@ -0,0 +1,668 @@
1
+ /**
2
+ * ProcessEngine - Core orchestration engine
3
+ *
4
+ * Manages process definitions, triggers, concurrent execution, AI calls, and logging.
5
+ */
6
+ import fs from 'fs/promises';
7
+ import path from 'path';
8
+ import { ClaudeCodeEngine } from '../ai/engine.js';
9
+ import { generateId } from '../../utils/id.js';
10
+ import { parseDuration } from '../../utils/duration.js';
11
+ import { ProcessRegistry } from './registry.js';
12
+ import { TriggerManager } from './trigger.js';
13
+ import { ExecutionQueue } from './queue.js';
14
+ import { ProcessLogger } from './logger.js';
15
+ import { ProcessMetricsStore } from './metrics-store.js';
16
+ import { issueServiceToken } from '../auth/service-token.js';
17
+ import { mergeContentBlock } from '../ai/content-blocks.js';
18
+ const FILE_SIZE_INLINE_LIMIT = 10 * 1024; // 10KB
19
+ export class ProcessEngine {
20
+ registry;
21
+ triggerManager;
22
+ queue;
23
+ logger;
24
+ metricsStore;
25
+ engine;
26
+ sessionManager;
27
+ config;
28
+ paths;
29
+ defaultUserId;
30
+ eventBus;
31
+ eventRegistry;
32
+ authConfig;
33
+ userStore;
34
+ serverUrl;
35
+ isShutdown = false;
36
+ /** Tracks event subscriptions per process for pause/resume (processName → subscriptions) */
37
+ eventSubscriptionMap = new Map();
38
+ constructor(options) {
39
+ this.config = options.config;
40
+ this.engine = options.engine;
41
+ this.sessionManager = options.sessionManager;
42
+ this.paths = options.paths;
43
+ this.defaultUserId = options.defaultUserId ?? 'admin';
44
+ this.eventBus = options.eventBus;
45
+ this.eventRegistry = options.eventRegistry;
46
+ this.authConfig = options.authConfig;
47
+ this.userStore = options.userStore;
48
+ this.serverUrl = options.serverUrl;
49
+ this.registry = new ProcessRegistry(options.paths, this.defaultUserId);
50
+ this.logger = new ProcessLogger(options.paths, this.defaultUserId);
51
+ this.metricsStore = new ProcessMetricsStore(options.paths, this.defaultUserId);
52
+ this.queue = new ExecutionQueue(options.config.maxConcurrent ?? 5);
53
+ this.triggerManager = new TriggerManager((name, type, payload) => {
54
+ void this.runProcess(name, type, payload).catch(err => {
55
+ console.error(`[ProcessEngine] Error triggering process "${name}":`, err);
56
+ });
57
+ });
58
+ }
59
+ async initialize() {
60
+ await this.registry.initialize();
61
+ await this.logger.initialize();
62
+ await this.metricsStore.initialize();
63
+ // Crash recovery: mark stale 'running' entries as 'failed'
64
+ const recovered = await this.logger.recoverCrashedEntries();
65
+ if (recovered > 0) {
66
+ console.warn(`[ProcessEngine] Recovered ${recovered} crashed execution(s)`);
67
+ }
68
+ // Restore cron triggers from registry (skip paused processes; event subscriptions are NOT restored here —
69
+ // they are registered by the server startup loop in index.ts)
70
+ const processes = await this.registry.listProcesses();
71
+ const definitions = processes
72
+ .filter(p => !p.paused)
73
+ .map(p => ({
74
+ name: p.name,
75
+ cron: p.cron,
76
+ cronTimezone: p.cronTimezone,
77
+ }));
78
+ await this.triggerManager.restoreTriggers(definitions);
79
+ // Register process event patterns for discoverability
80
+ if (this.eventRegistry) {
81
+ for (const proc of processes) {
82
+ this.registerEventPatterns(proc.name);
83
+ }
84
+ }
85
+ const cronCount = processes.filter(p => p.cron).length;
86
+ console.log(`[ProcessEngine] Started, ${processes.length} process(es) registered, ${cronCount} cron trigger(s)`);
87
+ }
88
+ registerEventPatterns(name) {
89
+ if (!this.eventRegistry)
90
+ return;
91
+ this.eventRegistry.register(`process:started:${name}`, 'process', `Process ${name} started execution`, '{ runId, processName, triggerType }');
92
+ this.eventRegistry.register(`process:completed:${name}`, 'process', `Process ${name} completed successfully`, '{ runId, processName, durationMs }');
93
+ this.eventRegistry.register(`process:failed:${name}`, 'process', `Process ${name} failed`, '{ runId, processName, error }');
94
+ }
95
+ async addProcess(def) {
96
+ // Validate: exactly one of prompt or hasProcessFile must be set
97
+ if (!def.prompt && !def.hasProcessFile) {
98
+ throw new Error('Process must have either "prompt" (lightweight) or "hasProcessFile" (full)');
99
+ }
100
+ if (def.prompt && def.hasProcessFile) {
101
+ throw new Error('Process cannot have both "prompt" and "hasProcessFile" — choose one mode');
102
+ }
103
+ // Validate: if hasProcessFile, check PROCESS.md exists
104
+ if (def.hasProcessFile) {
105
+ const valid = await this.registry.validateProcessFile(def.name);
106
+ if (!valid) {
107
+ throw new Error(`PROCESS.md not found — run 'loom process generate ${def.name}' first`);
108
+ }
109
+ }
110
+ const process = await this.registry.addProcess(def);
111
+ // Start cron trigger (event subscriptions are managed externally via registerEventSubscription)
112
+ if (process.cron) {
113
+ this.triggerManager.startCron(process.name, process.cron, process.cronTimezone);
114
+ }
115
+ // Register event patterns
116
+ this.registerEventPatterns(process.name);
117
+ return process;
118
+ }
119
+ async removeProcess(name) {
120
+ const process = await this.registry.getProcess(name);
121
+ if (!process)
122
+ return false;
123
+ // Cancel queued entries
124
+ this.queue.cancelForProcess(name);
125
+ // Stop triggers
126
+ if (process.cron)
127
+ this.triggerManager.stopCron(name);
128
+ this.triggerManager.stopEventSubscription(name); // stops all patterns for this process
129
+ // Clean up event subscription map
130
+ this.eventSubscriptionMap.delete(name);
131
+ // Unregister process event patterns from registry
132
+ if (this.eventRegistry) {
133
+ this.eventRegistry.unregister(`process:started:${name}`);
134
+ this.eventRegistry.unregister(`process:completed:${name}`);
135
+ this.eventRegistry.unregister(`process:failed:${name}`);
136
+ }
137
+ return this.registry.removeProcess(name);
138
+ }
139
+ async pauseProcess(name) {
140
+ const process = await this.registry.getProcess(name);
141
+ if (!process)
142
+ throw new Error(`Process "${name}" not found`);
143
+ if (process.paused)
144
+ return;
145
+ const updated = await this.registry.updateProcess(name, { paused: true });
146
+ if (updated?.cron)
147
+ this.triggerManager.stopCron(name);
148
+ // Stop all event subscriptions for this process
149
+ this.triggerManager.stopEventSubscription(name);
150
+ }
151
+ async resumeProcess(name) {
152
+ const process = await this.registry.getProcess(name);
153
+ if (!process)
154
+ throw new Error(`Process "${name}" not found`);
155
+ if (!process.paused)
156
+ return;
157
+ const updated = await this.registry.updateProcess(name, { paused: false });
158
+ if (updated?.cron)
159
+ this.triggerManager.startCron(name, updated.cron, updated.cronTimezone);
160
+ // Resume all event subscriptions from eventSubscriptionMap
161
+ const subs = this.eventSubscriptionMap.get(name);
162
+ if (subs && this.eventBus) {
163
+ for (const sub of subs) {
164
+ this.triggerManager.startEventSubscription(name, this.eventBus, sub.pattern, sub.filter, sub.debounceMs);
165
+ }
166
+ }
167
+ }
168
+ async updateProcess(name, updates) {
169
+ const existing = await this.registry.getProcess(name);
170
+ if (!existing)
171
+ return undefined;
172
+ const updated = await this.registry.updateProcess(name, updates);
173
+ if (!updated)
174
+ return undefined;
175
+ // Re-register cron triggers if cron/cronTimezone changed
176
+ if ('cron' in updates || 'cronTimezone' in updates) {
177
+ if (existing.cron)
178
+ this.triggerManager.stopCron(name);
179
+ if (updated.cron)
180
+ this.triggerManager.startCron(name, updated.cron, updated.cronTimezone);
181
+ }
182
+ // Note: event subscriptions are managed via registerEventSubscription/unregisterEventSubscription
183
+ return updated;
184
+ }
185
+ /** Register an event subscription for a process (in-memory + TriggerManager) */
186
+ registerEventSubscription(processName, eventBus, pattern, filter, debounceMs, start = true) {
187
+ // Always track in eventSubscriptionMap (needed for resumeProcess)
188
+ let subs = this.eventSubscriptionMap.get(processName);
189
+ if (!subs) {
190
+ subs = [];
191
+ this.eventSubscriptionMap.set(processName, subs);
192
+ }
193
+ // Replace existing entry for same pattern, or add new
194
+ const existingIdx = subs.findIndex(s => s.pattern === pattern);
195
+ if (existingIdx !== -1) {
196
+ subs[existingIdx] = { pattern, filter, debounceMs };
197
+ }
198
+ else {
199
+ subs.push({ pattern, filter, debounceMs });
200
+ }
201
+ // Only start the TriggerManager subscription when start=true
202
+ // (start=false for paused processes: map is populated but trigger is not active)
203
+ if (start) {
204
+ this.triggerManager.startEventSubscription(processName, eventBus, pattern, filter, debounceMs);
205
+ }
206
+ }
207
+ /** Unregister an event subscription for a process */
208
+ unregisterEventSubscription(processName, pattern) {
209
+ this.triggerManager.stopEventSubscription(processName, pattern);
210
+ if (pattern) {
211
+ // Remove specific pattern from eventSubscriptionMap
212
+ const subs = this.eventSubscriptionMap.get(processName);
213
+ if (subs) {
214
+ const idx = subs.findIndex(s => s.pattern === pattern);
215
+ if (idx !== -1)
216
+ subs.splice(idx, 1);
217
+ if (subs.length === 0)
218
+ this.eventSubscriptionMap.delete(processName);
219
+ }
220
+ }
221
+ else {
222
+ // Remove all subscriptions for this process
223
+ this.eventSubscriptionMap.delete(processName);
224
+ }
225
+ }
226
+ /** Get event subscriptions for a process (for API responses) */
227
+ getEventSubscriptions(processName) {
228
+ return this.eventSubscriptionMap.get(processName)?.slice() ?? [];
229
+ }
230
+ async runProcess(name, triggerType, eventPayload) {
231
+ const definition = await this.registry.getProcess(name);
232
+ if (!definition)
233
+ throw new Error(`Process "${name}" not found`);
234
+ if (definition.paused && triggerType !== 'manual') {
235
+ throw new Error(`Process "${name}" is paused. Resume it before triggering.`);
236
+ }
237
+ // Manual run overrides pause, but we still queue it
238
+ const runId = generateId('proc-run');
239
+ const entry = {
240
+ runId,
241
+ processName: name,
242
+ enqueuedAt: new Date().toISOString(),
243
+ triggerType,
244
+ eventPayload,
245
+ state: 'queued',
246
+ };
247
+ this.queue.enqueue(entry);
248
+ // Try to execute if slot available
249
+ this.tryExecuteNext();
250
+ return runId;
251
+ }
252
+ /** Build AI prompt from process definition */
253
+ async buildProcessPrompt(definition, runId, triggerType, eventPayload) {
254
+ const sections = [];
255
+ const files = [];
256
+ let processContent = '';
257
+ let hasMetricsSection = false;
258
+ // 1. Read process definition (PROCESS.md or inline prompt)
259
+ if (definition.hasProcessFile) {
260
+ const processDir = this.paths.forUser(definition.owner).processDir(definition.name);
261
+ const processMd = path.join(processDir, 'PROCESS.md');
262
+ try {
263
+ processContent = await fs.readFile(processMd, 'utf-8');
264
+ }
265
+ catch {
266
+ throw new Error(`PROCESS.md not found at ${processMd}`);
267
+ }
268
+ hasMetricsSection = /^## Metrics\b/m.test(processContent);
269
+ sections.push(`=== Process Definition ===\n${processContent}`);
270
+ // Read references directory
271
+ const refsDir = path.join(processDir, 'references');
272
+ try {
273
+ const refFiles = await fs.readdir(refsDir);
274
+ for (const file of refFiles) {
275
+ const refPath = path.join(refsDir, file);
276
+ const stat = await fs.stat(refPath);
277
+ if (stat.isFile()) {
278
+ if (stat.size > FILE_SIZE_INLINE_LIMIT) {
279
+ files.push({ name: file, path: refPath });
280
+ }
281
+ else {
282
+ const content = await fs.readFile(refPath, 'utf-8');
283
+ if (!sections.some(s => s.startsWith('=== References ==='))) {
284
+ sections.push('=== References ===');
285
+ }
286
+ sections[sections.length - 1] += `\n\n--- ${file} ---\n${content}`;
287
+ }
288
+ }
289
+ }
290
+ }
291
+ catch {
292
+ // references dir doesn't exist, that's fine
293
+ }
294
+ }
295
+ else if (definition.prompt) {
296
+ processContent = definition.prompt;
297
+ hasMetricsSection = /^## Metrics\b/m.test(processContent);
298
+ sections.push(`=== Process Definition ===\n${processContent}`);
299
+ }
300
+ // 2. Event context
301
+ if (eventPayload && Object.keys(eventPayload).length > 0) {
302
+ sections.push(`=== Event Context ===\n${JSON.stringify(eventPayload, null, 2)}`);
303
+ }
304
+ // 3. Execution instruction
305
+ sections.push(this.buildExecutionInstruction(definition.name, runId, triggerType));
306
+ // 4. Metrics Protocol (if ## Metrics section exists in process definition)
307
+ if (hasMetricsSection) {
308
+ sections.push(this.buildMetricsProtocol(definition.name, processContent));
309
+ }
310
+ return { prompt: sections.join('\n\n'), files: files.length > 0 ? files : undefined };
311
+ }
312
+ /** Build the execution instruction telling the model to execute the process */
313
+ buildExecutionInstruction(processName, runId, triggerType) {
314
+ const triggerLabel = triggerType === 'cron' ? 'scheduled (cron)' : triggerType === 'event' ? 'event-triggered' : 'manual';
315
+ return `=== Execution Instruction ===
316
+ You are executing process "${processName}" (run ID: ${runId}), triggered by ${triggerLabel}.
317
+
318
+ Rules:
319
+ - Follow the process Flow step by step
320
+ - Respect Decision Points when conditions apply
321
+ - Do NOT modify, create, or optimize the process definition itself — only execute it
322
+ - Your run ID is ${runId} — use it when reporting metrics (via $LOOM_RUN_ID) or referencing this execution
323
+ - Your session ID is available via $LOOM_SESSION_ID — use it when sending notifications to link back to this session
324
+ - After completing all steps, summarize what was done`;
325
+ }
326
+ /** Build the Metrics Protocol injection for processes with ## Metrics section */
327
+ buildMetricsProtocol(processName, processContent) {
328
+ // Extract individual metric names from the ## Metrics section
329
+ const metricsSection = processContent.match(/^## Metrics\s*\n([\s\S]*?)(?=\n## |\n*$)/m)?.[1]?.trim() ?? '';
330
+ const metricLines = metricsSection
331
+ .split('\n')
332
+ .filter(line => /^\s*-\s*\*\*/.test(line))
333
+ .map(line => {
334
+ const match = line.match(/^\s*-\s*\*\*(.+?)\*\*/);
335
+ return match ? match[1].trim() : null;
336
+ })
337
+ .filter((name) => name !== null);
338
+ const metricList = metricLines.length > 0
339
+ ? `\nRequired metrics to report:\n${metricLines.map((name, i) => `${i + 1}. "${name}"`).join('\n')}\n`
340
+ : '';
341
+ return `=== Metrics Protocol ===
342
+ This process defines business metrics. You MUST collect and report each metric value during execution.
343
+ ${metricList}
344
+ Command to report a metric value (MUST call after computing each metric):
345
+ loom process metrics-report ${processName} --metric-name "指标名" --value <number> [--target <number>] [--unit "单位"] [--dimensions '{"key":"value"}']
346
+ - --run-id is auto-detected from $LOOM_RUN_ID environment variable
347
+
348
+ Instructions:
349
+ 1. Read each metric definition in the ## Metrics section of the Process Definition above and understand what data it requires.
350
+ 2. Use \`loom data read\` to query relevant data and compute metric values.
351
+ 3. Report EACH metric using \`loom process metrics-report\` immediately after computing it — do not batch at the end.
352
+ 4. The --metric-name value MUST exactly match the bold name in the ## Metrics section (e.g., "${metricLines[0] ?? '指标名'}").`;
353
+ }
354
+ /**
355
+ * Consume AsyncGenerator<AIChunk> until completion or error.
356
+ * Timeout is handled by engine.call() internally.
357
+ * Returns claudeSessionId, usage, and contentBlocks for session persistence.
358
+ */
359
+ async consumeAIStream(stream) {
360
+ let resultSummary = '';
361
+ let claudeSessionId;
362
+ let usage;
363
+ let contentBlocks = [];
364
+ try {
365
+ for await (const chunk of stream) {
366
+ if (chunk.type === 'done') {
367
+ return { success: true, timedOut: false, resultSummary: resultSummary.substring(0, 500), claudeSessionId, usage, contentBlocks };
368
+ }
369
+ if (chunk.type === 'error') {
370
+ const msg = chunk.error ?? 'Unknown error';
371
+ const timedOut = msg.toLowerCase().includes('timed out');
372
+ return { success: false, timedOut, resultSummary: resultSummary.substring(0, 500), error: msg, claudeSessionId, usage, contentBlocks };
373
+ }
374
+ // Merge chunk into content blocks for session persistence
375
+ contentBlocks = mergeContentBlock(contentBlocks, chunk);
376
+ if (chunk.type === 'content') {
377
+ const text = chunk.content ?? '';
378
+ if (resultSummary.length < 500) {
379
+ resultSummary += text;
380
+ }
381
+ }
382
+ else if (chunk.type === 'session_info') {
383
+ if (chunk.sessionId)
384
+ claudeSessionId = chunk.sessionId;
385
+ if (chunk.usage)
386
+ usage = chunk.usage;
387
+ }
388
+ }
389
+ // Generator ended without 'done' — treat as success
390
+ return { success: true, timedOut: false, resultSummary: resultSummary.substring(0, 500), claudeSessionId, usage, contentBlocks };
391
+ }
392
+ catch (err) {
393
+ const msg = err instanceof Error ? err.message : String(err);
394
+ const timedOut = msg.toLowerCase().includes('timed out');
395
+ return { success: false, timedOut, resultSummary: resultSummary.substring(0, 500), error: msg, claudeSessionId, usage, contentBlocks };
396
+ }
397
+ }
398
+ tryExecuteNext() {
399
+ while (this.queue.hasSlot()) {
400
+ const entry = this.queue.dequeue();
401
+ if (!entry)
402
+ break;
403
+ // Eagerly move to running map so getProcessStatus() sees 'running' immediately
404
+ this.queue.markRunningEager(entry);
405
+ void this.executeEntry(entry).catch(err => {
406
+ console.error(`[ProcessEngine] Unhandled error executing ${entry.runId}:`, err);
407
+ });
408
+ }
409
+ }
410
+ async executeEntry(entry) {
411
+ const definition = await this.registry.getProcess(entry.processName);
412
+ if (!definition) {
413
+ this.queue.markFailed(entry.runId, `Process "${entry.processName}" not found`);
414
+ return;
415
+ }
416
+ // Build prompt
417
+ let prompt;
418
+ let files;
419
+ try {
420
+ const built = await this.buildProcessPrompt(definition, entry.runId, entry.triggerType, entry.eventPayload);
421
+ prompt = built.prompt;
422
+ files = built.files;
423
+ }
424
+ catch (err) {
425
+ this.queue.markFailed(entry.runId, err instanceof Error ? err.message : String(err));
426
+ return;
427
+ }
428
+ const promptSummary = prompt.substring(0, 200);
429
+ // Resolve owner service token
430
+ let userToken;
431
+ if (definition.ownerToken) {
432
+ userToken = definition.ownerToken;
433
+ }
434
+ else if (this.authConfig && this.userStore) {
435
+ try {
436
+ const user = await this.userStore.findByUsername(definition.owner);
437
+ if (!user) {
438
+ this.queue.markFailed(entry.runId, `Owner user "${definition.owner}" not found`);
439
+ return;
440
+ }
441
+ userToken = issueServiceToken(user.userId, user.username, user.role, this.authConfig);
442
+ }
443
+ catch (err) {
444
+ this.queue.markFailed(entry.runId, `Failed to resolve service token: ${err instanceof Error ? err.message : String(err)}`);
445
+ return;
446
+ }
447
+ }
448
+ // Create session and mark running (each execution gets an isolated session)
449
+ let session;
450
+ try {
451
+ session = await this.sessionManager.createSession();
452
+ }
453
+ catch (err) {
454
+ const msg = err instanceof Error ? err.message : String(err);
455
+ this.queue.markFailed(entry.runId, `Failed to create session: ${msg}`);
456
+ this.tryExecuteNext();
457
+ return;
458
+ }
459
+ const sessionId = session.id;
460
+ this.queue.markRunning(entry.runId, sessionId);
461
+ // Persist user message to session (so the session has conversation history)
462
+ const userMsgId = generateId('msg');
463
+ const userMsg = {
464
+ id: userMsgId,
465
+ role: 'user',
466
+ content: prompt,
467
+ timestamp: new Date().toISOString(),
468
+ };
469
+ await this.sessionManager.addMessages(sessionId, [userMsg]);
470
+ // Write START log for crash recovery
471
+ const startLog = {
472
+ runId: entry.runId,
473
+ processName: entry.processName,
474
+ triggerType: entry.triggerType,
475
+ promptSummary,
476
+ sessionId,
477
+ owner: definition.owner,
478
+ status: 'running',
479
+ startedAt: new Date().toISOString(),
480
+ endedAt: '',
481
+ durationMs: 0,
482
+ eventPayload: entry.eventPayload,
483
+ };
484
+ await this.logger.writeLog(startLog);
485
+ // Emit process started event
486
+ this.eventBus?.emit(`process:started:${entry.processName}`, {
487
+ runId: entry.runId,
488
+ processName: entry.processName,
489
+ triggerType: entry.triggerType,
490
+ sessionId,
491
+ }, { source: 'server' });
492
+ // Execute AI call
493
+ const startTime = Date.now();
494
+ const timeout = parseDuration(this.config.executionTimeout ?? '30m');
495
+ try {
496
+ const options = {
497
+ sessionId,
498
+ resumeSessionId: session.claudeSessionId,
499
+ userToken,
500
+ timeout,
501
+ serverUrl: this.serverUrl,
502
+ processName: definition.name,
503
+ runId: entry.runId,
504
+ model: definition.model,
505
+ };
506
+ if (files && files.length > 0) {
507
+ options.files = files;
508
+ }
509
+ const stream = this.engine.call(prompt, options);
510
+ const result = await this.consumeAIStream(stream);
511
+ const durationMs = Date.now() - startTime;
512
+ const endedAt = new Date().toISOString();
513
+ // Persist assistant message to session (so the session has AI response history)
514
+ if (result.resultSummary || result.contentBlocks.length > 0) {
515
+ const assistantMsg = {
516
+ id: `resp_${userMsgId}`,
517
+ role: 'assistant',
518
+ content: result.resultSummary || '(empty response)',
519
+ timestamp: endedAt,
520
+ ...(result.contentBlocks.length > 0 ? { contentBlocks: result.contentBlocks } : {}),
521
+ };
522
+ await this.sessionManager.addMessages(sessionId, [assistantMsg], result.claudeSessionId, result.usage);
523
+ }
524
+ else if (result.claudeSessionId || result.usage) {
525
+ // Even without content, update claudeSessionId/usage if available
526
+ await this.sessionManager.addMessages(sessionId, [], result.claudeSessionId, result.usage);
527
+ }
528
+ if (result.timedOut) {
529
+ // Safety net: kill session on timeout
530
+ if (this.engine instanceof ClaudeCodeEngine) {
531
+ try {
532
+ this.engine.killSession(sessionId);
533
+ }
534
+ catch { /* ignore */ }
535
+ }
536
+ this.queue.markTimeout(entry.runId);
537
+ await this.logger.writeLog({ ...startLog, status: 'timeout', endedAt, durationMs, error: result.error });
538
+ this.eventBus?.emit(`process:failed:${entry.processName}`, {
539
+ runId: entry.runId, processName: entry.processName, error: result.error, timedOut: true, sessionId,
540
+ }, { source: 'server' });
541
+ }
542
+ else if (!result.success) {
543
+ this.queue.markFailed(entry.runId, result.error ?? 'Unknown error');
544
+ await this.logger.writeLog({ ...startLog, status: 'failed', endedAt, durationMs, error: result.error });
545
+ this.eventBus?.emit(`process:failed:${entry.processName}`, {
546
+ runId: entry.runId, processName: entry.processName, error: result.error, sessionId,
547
+ }, { source: 'server' });
548
+ }
549
+ else {
550
+ this.queue.markCompleted(entry.runId);
551
+ await this.logger.writeLog({ ...startLog, status: 'completed', endedAt, durationMs });
552
+ this.eventBus?.emit(`process:completed:${entry.processName}`, {
553
+ runId: entry.runId, processName: entry.processName, durationMs, sessionId,
554
+ }, { source: 'server' });
555
+ }
556
+ }
557
+ catch (err) {
558
+ const durationMs = Date.now() - startTime;
559
+ const endedAt = new Date().toISOString();
560
+ const error = err instanceof Error ? err.message : String(err);
561
+ this.queue.markFailed(entry.runId, error);
562
+ await this.logger.writeLog({ ...startLog, status: 'failed', endedAt, durationMs, error });
563
+ this.eventBus?.emit(`process:failed:${entry.processName}`, {
564
+ runId: entry.runId, processName: entry.processName, error, sessionId,
565
+ }, { source: 'server' });
566
+ }
567
+ // Try to execute next queued entry
568
+ this.tryExecuteNext();
569
+ }
570
+ // --- Public getters for routes ---
571
+ getQueueStatus() {
572
+ return this.queue.getQueueStatus();
573
+ }
574
+ getProcessStatus(name) {
575
+ const running = this.queue.getRunning().find(e => e.processName === name);
576
+ if (running)
577
+ return 'running';
578
+ // Check for queued entries (busy = waiting for execution slot)
579
+ const queued = this.queue.getQueued().find(e => e.processName === name);
580
+ if (queued)
581
+ return 'busy';
582
+ // Check if paused (sync lookup from registry cache)
583
+ const process = this.registry.getProcessSync(name);
584
+ if (!process)
585
+ return 'idle';
586
+ if (process.paused)
587
+ return 'paused';
588
+ return 'idle';
589
+ }
590
+ listProcesses(options) {
591
+ return this.registry.listProcesses(options);
592
+ }
593
+ /** Get all registry definitions (for config persistence by route layer) */
594
+ getRegistryDefinitions() {
595
+ return this.registry.getAllDefinitions();
596
+ }
597
+ getProcess(name) {
598
+ return this.registry.getProcess(name);
599
+ }
600
+ getRunning() {
601
+ return this.queue.getRunning();
602
+ }
603
+ getLogger() {
604
+ return this.logger;
605
+ }
606
+ async getLogs(processName, options) {
607
+ return this.logger.listLogs(processName, options);
608
+ }
609
+ async getLogCount(processName, options) {
610
+ return this.logger.countLogs(processName, options);
611
+ }
612
+ async getLog(processName, runId) {
613
+ return this.logger.readLog(processName, runId);
614
+ }
615
+ async getMetrics(processName) {
616
+ return this.logger.aggregateMetrics(processName);
617
+ }
618
+ // --- Business Metrics (agent-reported snapshots) ---
619
+ async reportMetric(processName, snapshot) {
620
+ const full = {
621
+ ...snapshot,
622
+ timestamp: snapshot.timestamp ?? new Date().toISOString(),
623
+ };
624
+ await this.metricsStore.writeSnapshot(processName, full);
625
+ }
626
+ async getMetricSnapshots(processName, options) {
627
+ return this.metricsStore.listSnapshots(processName, options);
628
+ }
629
+ async getMetricsViewConfig(processName) {
630
+ return this.metricsStore.readViewConfig(processName);
631
+ }
632
+ async setMetricsViewConfig(processName, config) {
633
+ await this.metricsStore.writeViewConfig(processName, config);
634
+ }
635
+ async deleteMetricsViewConfig(processName) {
636
+ await this.metricsStore.deleteViewConfig(processName);
637
+ }
638
+ async shutdown() {
639
+ this.isShutdown = true;
640
+ this.triggerManager.stopAll();
641
+ // Wait for running executions to complete (with 5s timeout)
642
+ const running = this.queue.getRunning();
643
+ if (running.length > 0) {
644
+ const timeout = new Promise(resolve => setTimeout(resolve, 5000));
645
+ await Promise.race([
646
+ Promise.all(running.map(async (entry) => {
647
+ // Mark as failed since we're shutting down
648
+ this.queue.markFailed(entry.runId, 'Server shutting down');
649
+ await this.logger.writeLog({
650
+ runId: entry.runId,
651
+ processName: entry.processName,
652
+ triggerType: entry.triggerType,
653
+ promptSummary: entry.promptSummary ?? '',
654
+ sessionId: entry.sessionId ?? '',
655
+ owner: '',
656
+ status: 'failed',
657
+ startedAt: entry.startedAt ?? new Date().toISOString(),
658
+ endedAt: new Date().toISOString(),
659
+ durationMs: 0,
660
+ error: 'Server shutting down',
661
+ });
662
+ })),
663
+ timeout,
664
+ ]);
665
+ }
666
+ }
667
+ }
668
+ //# sourceMappingURL=engine.js.map