@memberjunction/ng-dashboards 5.37.0 → 5.39.0

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 (328) hide show
  1. package/README.md +46 -7
  2. package/dist/AI/components/agents/agent-configuration.component.js +199 -198
  3. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  4. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts.map +1 -1
  5. package/dist/AI/components/analytics/ai-analytics-resource.component.js +20 -17
  6. package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
  7. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts +15 -0
  8. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts.map +1 -1
  9. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js +166 -58
  10. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js.map +1 -1
  11. package/dist/AI/components/analytics/executive-summary/executive-summary.component.d.ts.map +1 -1
  12. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js +2 -1
  13. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js.map +1 -1
  14. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts +1 -0
  15. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts.map +1 -1
  16. package/dist/AI/components/analytics/model-performance/model-performance.component.js +55 -36
  17. package/dist/AI/components/analytics/model-performance/model-performance.component.js.map +1 -1
  18. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts +9 -1
  19. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts.map +1 -1
  20. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js +158 -117
  21. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js.map +1 -1
  22. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts +1 -0
  23. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts.map +1 -1
  24. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js +22 -8
  25. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js.map +1 -1
  26. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +89 -842
  27. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
  28. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +1353 -7683
  29. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  30. package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.d.ts +87 -0
  31. package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.d.ts.map +1 -0
  32. package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.js +475 -0
  33. package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.js.map +1 -0
  34. package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.d.ts +29 -0
  35. package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.d.ts.map +1 -0
  36. package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.js +208 -0
  37. package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.js.map +1 -0
  38. package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.d.ts +21 -0
  39. package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.d.ts.map +1 -0
  40. package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.js +70 -0
  41. package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.js.map +1 -0
  42. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.d.ts +235 -0
  43. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.d.ts.map +1 -0
  44. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.js +1735 -0
  45. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.js.map +1 -0
  46. package/dist/AI/components/autotagging/shared/classify.dryrun.d.ts +61 -0
  47. package/dist/AI/components/autotagging/shared/classify.dryrun.d.ts.map +1 -0
  48. package/dist/AI/components/autotagging/shared/classify.dryrun.js +78 -0
  49. package/dist/AI/components/autotagging/shared/classify.dryrun.js.map +1 -0
  50. package/dist/AI/components/autotagging/shared/classify.format.d.ts +43 -0
  51. package/dist/AI/components/autotagging/shared/classify.format.d.ts.map +1 -0
  52. package/dist/AI/components/autotagging/shared/classify.format.js +209 -0
  53. package/dist/AI/components/autotagging/shared/classify.format.js.map +1 -0
  54. package/dist/AI/components/autotagging/shared/classify.types.d.ts +276 -0
  55. package/dist/AI/components/autotagging/shared/classify.types.d.ts.map +1 -0
  56. package/dist/AI/components/autotagging/shared/classify.types.js +6 -0
  57. package/dist/AI/components/autotagging/shared/classify.types.js.map +1 -0
  58. package/dist/AI/components/autotagging/tabs/health-tab.component.d.ts +103 -0
  59. package/dist/AI/components/autotagging/tabs/health-tab.component.d.ts.map +1 -0
  60. package/dist/AI/components/autotagging/tabs/health-tab.component.js +571 -0
  61. package/dist/AI/components/autotagging/tabs/health-tab.component.js.map +1 -0
  62. package/dist/AI/components/autotagging/tabs/history-tab.component.d.ts +40 -0
  63. package/dist/AI/components/autotagging/tabs/history-tab.component.d.ts.map +1 -0
  64. package/dist/AI/components/autotagging/tabs/history-tab.component.js +402 -0
  65. package/dist/AI/components/autotagging/tabs/history-tab.component.js.map +1 -0
  66. package/dist/AI/components/autotagging/tabs/inbox-tab.component.d.ts +107 -0
  67. package/dist/AI/components/autotagging/tabs/inbox-tab.component.d.ts.map +1 -0
  68. package/dist/AI/components/autotagging/tabs/inbox-tab.component.js +719 -0
  69. package/dist/AI/components/autotagging/tabs/inbox-tab.component.js.map +1 -0
  70. package/dist/AI/components/autotagging/tabs/pipeline-tab.component.d.ts +122 -0
  71. package/dist/AI/components/autotagging/tabs/pipeline-tab.component.d.ts.map +1 -0
  72. package/dist/AI/components/autotagging/tabs/pipeline-tab.component.js +752 -0
  73. package/dist/AI/components/autotagging/tabs/pipeline-tab.component.js.map +1 -0
  74. package/dist/AI/components/autotagging/tabs/sources-tab.component.d.ts +166 -0
  75. package/dist/AI/components/autotagging/tabs/sources-tab.component.d.ts.map +1 -0
  76. package/dist/AI/components/autotagging/tabs/sources-tab.component.js +1384 -0
  77. package/dist/AI/components/autotagging/tabs/sources-tab.component.js.map +1 -0
  78. package/dist/AI/components/autotagging/tabs/tags-tab.component.d.ts +70 -0
  79. package/dist/AI/components/autotagging/tabs/tags-tab.component.d.ts.map +1 -0
  80. package/dist/AI/components/autotagging/tabs/tags-tab.component.js +448 -0
  81. package/dist/AI/components/autotagging/tabs/tags-tab.component.js.map +1 -0
  82. package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.d.ts +397 -0
  83. package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.d.ts.map +1 -0
  84. package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.js +3490 -0
  85. package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.js.map +1 -0
  86. package/dist/AI/components/autotagging/tabs/types-tab.component.d.ts +47 -0
  87. package/dist/AI/components/autotagging/tabs/types-tab.component.d.ts.map +1 -0
  88. package/dist/AI/components/autotagging/tabs/types-tab.component.js +220 -0
  89. package/dist/AI/components/autotagging/tabs/types-tab.component.js.map +1 -0
  90. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +293 -289
  91. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
  92. package/dist/AI/components/models/model-management.component.js +209 -208
  93. package/dist/AI/components/models/model-management.component.js.map +1 -1
  94. package/dist/AI/components/prompts/prompt-management.component.js +130 -128
  95. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  96. package/dist/AI/components/requests/agent-requests-resource.component.js +61 -61
  97. package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
  98. package/dist/AI/components/system/system-configuration.component.js +17 -17
  99. package/dist/AI/components/system/system-configuration.component.js.map +1 -1
  100. package/dist/AI/components/tags/tags-resource.component.js +550 -532
  101. package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
  102. package/dist/AI/components/vectors/vector-management-resource.component.js +1 -1
  103. package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
  104. package/dist/AI/services/ai-instrumentation.service.d.ts +5 -0
  105. package/dist/AI/services/ai-instrumentation.service.d.ts.map +1 -1
  106. package/dist/AI/services/ai-instrumentation.service.js +14 -2
  107. package/dist/AI/services/ai-instrumentation.service.js.map +1 -1
  108. package/dist/AI/services/cache-metrics.d.ts +50 -0
  109. package/dist/AI/services/cache-metrics.d.ts.map +1 -0
  110. package/dist/AI/services/cache-metrics.js +43 -0
  111. package/dist/AI/services/cache-metrics.js.map +1 -0
  112. package/dist/APIKeys/api-key-edit-panel.component.js +2 -2
  113. package/dist/APIKeys/api-keys-resource.component.js +132 -131
  114. package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
  115. package/dist/Actions/components/actions-overview.component.js +141 -141
  116. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  117. package/dist/Actions/components/execution-monitoring.component.js +15 -15
  118. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  119. package/dist/Actions/components/explorer/action-explorer.component.d.ts +0 -5
  120. package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
  121. package/dist/Actions/components/explorer/action-explorer.component.js +139 -212
  122. package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
  123. package/dist/Admin/admin-data-schema.component.js +2 -2
  124. package/dist/Admin/admin-data-schema.component.js.map +1 -1
  125. package/dist/Admin/admin-dev-tools-resource.component.js +2 -2
  126. package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
  127. package/dist/Admin/admin-identity-access.component.js +2 -2
  128. package/dist/Admin/admin-identity-access.component.js.map +1 -1
  129. package/dist/Admin/admin-monitoring.component.js +2 -2
  130. package/dist/Admin/admin-monitoring.component.js.map +1 -1
  131. package/dist/ApplicationRoles/application-roles-resource.component.js +54 -49
  132. package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
  133. package/dist/Communication/communication-logs-resource.component.d.ts +6 -0
  134. package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
  135. package/dist/Communication/communication-logs-resource.component.js +72 -50
  136. package/dist/Communication/communication-logs-resource.component.js.map +1 -1
  137. package/dist/Communication/communication-monitor-resource.component.js +103 -102
  138. package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
  139. package/dist/Communication/communication-providers-resource.component.js +52 -51
  140. package/dist/Communication/communication-providers-resource.component.js.map +1 -1
  141. package/dist/Communication/communication-runs-resource.component.js +39 -38
  142. package/dist/Communication/communication-runs-resource.component.js.map +1 -1
  143. package/dist/Communication/communication-templates-resource.component.d.ts +6 -0
  144. package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
  145. package/dist/Communication/communication-templates-resource.component.js +92 -89
  146. package/dist/Communication/communication-templates-resource.component.js.map +1 -1
  147. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts +73 -1
  148. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts.map +1 -1
  149. package/dist/ComponentStudio/component-studio-dashboard.component.js +512 -127
  150. package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
  151. package/dist/ComponentStudio/component-studio-resource.component.d.ts +22 -0
  152. package/dist/ComponentStudio/component-studio-resource.component.d.ts.map +1 -0
  153. package/dist/ComponentStudio/component-studio-resource.component.js +55 -0
  154. package/dist/ComponentStudio/component-studio-resource.component.js.map +1 -0
  155. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.d.ts +104 -45
  156. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.d.ts.map +1 -1
  157. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js +234 -331
  158. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js.map +1 -1
  159. package/dist/ComponentStudio/components/form-builder/form-builder-canvas.component.d.ts +54 -0
  160. package/dist/ComponentStudio/components/form-builder/form-builder-canvas.component.d.ts.map +1 -0
  161. package/dist/ComponentStudio/components/form-builder/form-builder-canvas.component.js +339 -0
  162. package/dist/ComponentStudio/components/form-builder/form-builder-canvas.component.js.map +1 -0
  163. package/dist/ComponentStudio/components/form-builder/form-builder-right-panel.component.d.ts +65 -0
  164. package/dist/ComponentStudio/components/form-builder/form-builder-right-panel.component.d.ts.map +1 -0
  165. package/dist/ComponentStudio/components/form-builder/form-builder-right-panel.component.js +492 -0
  166. package/dist/ComponentStudio/components/form-builder/form-builder-right-panel.component.js.map +1 -0
  167. package/dist/ComponentStudio/components/form-builder/form-builder-tab.component.d.ts +88 -0
  168. package/dist/ComponentStudio/components/form-builder/form-builder-tab.component.d.ts.map +1 -0
  169. package/dist/ComponentStudio/components/form-builder/form-builder-tab.component.js +457 -0
  170. package/dist/ComponentStudio/components/form-builder/form-builder-tab.component.js.map +1 -0
  171. package/dist/ComponentStudio/components/form-override-dialog.component.d.ts +106 -0
  172. package/dist/ComponentStudio/components/form-override-dialog.component.d.ts.map +1 -0
  173. package/dist/ComponentStudio/components/form-override-dialog.component.js +478 -0
  174. package/dist/ComponentStudio/components/form-override-dialog.component.js.map +1 -0
  175. package/dist/ComponentStudio/components/workspace/component-preview.component.d.ts +54 -0
  176. package/dist/ComponentStudio/components/workspace/component-preview.component.d.ts.map +1 -1
  177. package/dist/ComponentStudio/components/workspace/component-preview.component.js +361 -50
  178. package/dist/ComponentStudio/components/workspace/component-preview.component.js.map +1 -1
  179. package/dist/ComponentStudio/components/workspace/editor-tabs.component.d.ts +10 -0
  180. package/dist/ComponentStudio/components/workspace/editor-tabs.component.d.ts.map +1 -1
  181. package/dist/ComponentStudio/components/workspace/editor-tabs.component.js +114 -45
  182. package/dist/ComponentStudio/components/workspace/editor-tabs.component.js.map +1 -1
  183. package/dist/ComponentStudio/services/canvas-to-code.d.ts +32 -0
  184. package/dist/ComponentStudio/services/canvas-to-code.d.ts.map +1 -0
  185. package/dist/ComponentStudio/services/canvas-to-code.js +347 -0
  186. package/dist/ComponentStudio/services/canvas-to-code.js.map +1 -0
  187. package/dist/ComponentStudio/services/code-to-canvas.d.ts +32 -0
  188. package/dist/ComponentStudio/services/code-to-canvas.d.ts.map +1 -0
  189. package/dist/ComponentStudio/services/code-to-canvas.js +92 -0
  190. package/dist/ComponentStudio/services/code-to-canvas.js.map +1 -0
  191. package/dist/ComponentStudio/services/component-studio-state.service.d.ts +29 -0
  192. package/dist/ComponentStudio/services/component-studio-state.service.d.ts.map +1 -1
  193. package/dist/ComponentStudio/services/component-studio-state.service.js +76 -0
  194. package/dist/ComponentStudio/services/component-studio-state.service.js.map +1 -1
  195. package/dist/ComponentStudio/services/entity-form-override.service.d.ts +86 -0
  196. package/dist/ComponentStudio/services/entity-form-override.service.d.ts.map +1 -0
  197. package/dist/ComponentStudio/services/entity-form-override.service.js +246 -0
  198. package/dist/ComponentStudio/services/entity-form-override.service.js.map +1 -0
  199. package/dist/ComponentStudio/services/field-binding-scanner.d.ts +29 -0
  200. package/dist/ComponentStudio/services/field-binding-scanner.d.ts.map +1 -0
  201. package/dist/ComponentStudio/services/field-binding-scanner.js +110 -0
  202. package/dist/ComponentStudio/services/field-binding-scanner.js.map +1 -0
  203. package/dist/ComponentStudio/services/form-canvas-model.d.ts +56 -0
  204. package/dist/ComponentStudio/services/form-canvas-model.d.ts.map +1 -0
  205. package/dist/ComponentStudio/services/form-canvas-model.js +35 -0
  206. package/dist/ComponentStudio/services/form-canvas-model.js.map +1 -0
  207. package/dist/ComponentStudio/services/form-host-props-fixture.d.ts +10 -0
  208. package/dist/ComponentStudio/services/form-host-props-fixture.d.ts.map +1 -0
  209. package/dist/ComponentStudio/services/form-host-props-fixture.js +10 -0
  210. package/dist/ComponentStudio/services/form-host-props-fixture.js.map +1 -0
  211. package/dist/Credentials/components/credentials-audit-resource.component.js +136 -135
  212. package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
  213. package/dist/Credentials/components/credentials-categories-resource.component.js +155 -152
  214. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  215. package/dist/Credentials/components/credentials-list-resource.component.js +119 -118
  216. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  217. package/dist/Credentials/components/credentials-overview-resource.component.js +129 -128
  218. package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
  219. package/dist/Credentials/components/credentials-types-resource.component.js +107 -106
  220. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  221. package/dist/DataExplorer/data-explorer-dashboard.component.js +2 -2
  222. package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
  223. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +1 -1
  224. package/dist/DatabaseDesigner/components/entity-list.component.js +115 -114
  225. package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -1
  226. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +5 -6
  227. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -1
  228. package/dist/DatabaseDesigner/database-designer-dashboards.module.js +4 -5
  229. package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
  230. package/dist/DevTools/app-state-inspector.component.js +18 -17
  231. package/dist/DevTools/app-state-inspector.component.js.map +1 -1
  232. package/dist/DevTools/class-registry.component.js +88 -85
  233. package/dist/DevTools/class-registry.component.js.map +1 -1
  234. package/dist/DevTools/event-monitor.component.js +155 -150
  235. package/dist/DevTools/event-monitor.component.js.map +1 -1
  236. package/dist/DevTools/graphql-console.component.js +245 -243
  237. package/dist/DevTools/graphql-console.component.js.map +1 -1
  238. package/dist/DevTools/layout-inspector.component.js +18 -17
  239. package/dist/DevTools/layout-inspector.component.js.map +1 -1
  240. package/dist/EntityAdmin/entity-admin-dashboard.component.js +20 -19
  241. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  242. package/dist/FormBuilder/form-builder-resource.component.d.ts +964 -0
  243. package/dist/FormBuilder/form-builder-resource.component.d.ts.map +1 -0
  244. package/dist/FormBuilder/form-builder-resource.component.js +4487 -0
  245. package/dist/FormBuilder/form-builder-resource.component.js.map +1 -0
  246. package/dist/FormBuilder/form-builder-version-rail.helpers.d.ts +55 -0
  247. package/dist/FormBuilder/form-builder-version-rail.helpers.d.ts.map +1 -0
  248. package/dist/FormBuilder/form-builder-version-rail.helpers.js +73 -0
  249. package/dist/FormBuilder/form-builder-version-rail.helpers.js.map +1 -0
  250. package/dist/Home/home-application.d.ts +21 -1
  251. package/dist/Home/home-application.d.ts.map +1 -1
  252. package/dist/Home/home-application.js +60 -8
  253. package/dist/Home/home-application.js.map +1 -1
  254. package/dist/Home/home-dashboard.component.js +2 -2
  255. package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
  256. package/dist/Integration/components/activity/activity.component.js +236 -229
  257. package/dist/Integration/components/activity/activity.component.js.map +1 -1
  258. package/dist/Integration/components/connections/connections.component.js +390 -389
  259. package/dist/Integration/components/connections/connections.component.js.map +1 -1
  260. package/dist/Integration/components/overview/overview.component.js +2 -2
  261. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +2 -2
  262. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
  263. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +45 -44
  264. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
  265. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +293 -291
  266. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  267. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +62 -61
  268. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
  269. package/dist/Lists/components/lists-browse-resource.component.d.ts +6 -2
  270. package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
  271. package/dist/Lists/components/lists-browse-resource.component.js +525 -566
  272. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  273. package/dist/Lists/components/lists-categories-resource.component.js +135 -134
  274. package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
  275. package/dist/Lists/components/lists-my-lists-resource.component.js +199 -198
  276. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  277. package/dist/MCP/mcp-dashboard.component.js +443 -438
  278. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  279. package/dist/QueryBrowser/query-browser-resource.component.d.ts +14 -14
  280. package/dist/QueryBrowser/query-browser-resource.component.d.ts.map +1 -1
  281. package/dist/QueryBrowser/query-browser-resource.component.js +11 -10
  282. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  283. package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -1
  284. package/dist/Scheduling/components/scheduling-activity.component.js +146 -147
  285. package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
  286. package/dist/Scheduling/components/scheduling-jobs.component.js +76 -75
  287. package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
  288. package/dist/Scheduling/components/scheduling-overview.component.js +97 -96
  289. package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
  290. package/dist/Scheduling/scheduling-dashboard.component.js +24 -22
  291. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  292. package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts +2 -0
  293. package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts.map +1 -1
  294. package/dist/Scheduling/services/scheduling-instrumentation.service.js +1 -0
  295. package/dist/Scheduling/services/scheduling-instrumentation.service.js.map +1 -1
  296. package/dist/Testing/components/testing-dashboard-tab-resource.component.js +1 -1
  297. package/dist/Testing/components/testing-explorer.component.d.ts +14 -4
  298. package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
  299. package/dist/Testing/components/testing-explorer.component.js +436 -427
  300. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  301. package/dist/Testing/components/testing-runs-resource.component.js +1 -1
  302. package/dist/Testing/components/testing-runs.component.js +116 -115
  303. package/dist/Testing/components/testing-runs.component.js.map +1 -1
  304. package/dist/Testing/testing-dashboard.component.js +6 -7
  305. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  306. package/dist/VersionHistory/components/labels-resource.component.js +173 -172
  307. package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
  308. package/dist/VersionHistory/components/restore-resource.component.d.ts +6 -0
  309. package/dist/VersionHistory/components/restore-resource.component.d.ts.map +1 -1
  310. package/dist/VersionHistory/components/restore-resource.component.js +116 -92
  311. package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
  312. package/dist/ai-dashboards.module.d.ts +47 -35
  313. package/dist/ai-dashboards.module.d.ts.map +1 -1
  314. package/dist/ai-dashboards.module.js +40 -1
  315. package/dist/ai-dashboards.module.js.map +1 -1
  316. package/dist/communication-dashboards.module.d.ts +1 -1
  317. package/dist/communication-dashboards.module.d.ts.map +1 -1
  318. package/dist/communication-dashboards.module.js +7 -1
  319. package/dist/communication-dashboards.module.js.map +1 -1
  320. package/dist/component-studio-dashboards.module.d.ts +34 -22
  321. package/dist/component-studio-dashboards.module.d.ts.map +1 -1
  322. package/dist/component-studio-dashboards.module.js +65 -9
  323. package/dist/component-studio-dashboards.module.js.map +1 -1
  324. package/dist/testing-dashboards.module.d.ts +4 -5
  325. package/dist/testing-dashboards.module.d.ts.map +1 -1
  326. package/dist/testing-dashboards.module.js +7 -5
  327. package/dist/testing-dashboards.module.js.map +1 -1
  328. package/package.json +55 -53
@@ -0,0 +1,752 @@
1
+ /**
2
+ * @fileoverview Classify · Pipeline Monitor tab.
3
+ *
4
+ * Presentational sub-page: owns its header-interior (with a Refresh action) and
5
+ * the pipeline monitor body — KPI strip, pipeline-stage visualization, live
6
+ * progress + controls, per-source live-run detail table, the recent-processing
7
+ * feed (with its own search/sort/pagination), the trending-tags cloud, the
8
+ * sources mini-list, and the collapsible pipeline-config panel.
9
+ *
10
+ * It is a VIEW only: all pipeline RUN orchestration (start/pause/resume/cancel,
11
+ * the GraphQL progress subscription, shared data loading, and every `build*`
12
+ * view-model method) stays in the host because it is shared by the global
13
+ * "Run Pipeline" header button and the Sources tab. This tab receives the
14
+ * already-built view models + run state via `@Input()` and emits user intents
15
+ * (refresh, pause/resume/cancel, feed-item click, config toggle) via `@Output()`.
16
+ */
17
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
18
+ import { BaseAngularComponent } from '@memberjunction/ng-base-types';
19
+ import { formatTokenCount } from '../shared/classify.format';
20
+ import * as i0 from "@angular/core";
21
+ import * as i1 from "@angular/forms";
22
+ import * as i2 from "@memberjunction/ng-ui-components";
23
+ import * as i3 from "@angular/common";
24
+ const _forTrack0 = ($index, $item) => $item.Label;
25
+ const _forTrack1 = ($index, $item) => $item.Name + $item.SourceName + $item.TimeAgo;
26
+ const _forTrack2 = ($index, $item) => $item.ID;
27
+ const _forTrack3 = ($index, $item) => $item.Tag;
28
+ const _forTrack4 = ($index, $item) => $item.Name;
29
+ const _forTrack5 = ($index, $item) => $item.SourceName;
30
+ function ClassifyPipelineTabComponent_For_11_Conditional_6_Conditional_1_Template(rf, ctx) { if (rf & 1) {
31
+ i0.ɵɵelement(0, "i", 50);
32
+ } }
33
+ function ClassifyPipelineTabComponent_For_11_Conditional_6_Template(rf, ctx) { if (rf & 1) {
34
+ i0.ɵɵelementStart(0, "div", 49);
35
+ i0.ɵɵconditionalCreate(1, ClassifyPipelineTabComponent_For_11_Conditional_6_Conditional_1_Template, 1, 0, "i", 50);
36
+ i0.ɵɵtext(2);
37
+ i0.ɵɵelementEnd();
38
+ } if (rf & 2) {
39
+ const kpi_r1 = i0.ɵɵnextContext().$implicit;
40
+ i0.ɵɵclassProp("up", kpi_r1.TrendUp);
41
+ i0.ɵɵadvance();
42
+ i0.ɵɵconditional(kpi_r1.TrendUp ? 1 : -1);
43
+ i0.ɵɵadvance();
44
+ i0.ɵɵtextInterpolate1(" ", kpi_r1.Trend, " ");
45
+ } }
46
+ function ClassifyPipelineTabComponent_For_11_Template(rf, ctx) { if (rf & 1) {
47
+ i0.ɵɵelementStart(0, "div", 9)(1, "div", 46);
48
+ i0.ɵɵtext(2);
49
+ i0.ɵɵpipe(3, "number");
50
+ i0.ɵɵelementEnd();
51
+ i0.ɵɵelementStart(4, "div", 47);
52
+ i0.ɵɵtext(5);
53
+ i0.ɵɵelementEnd();
54
+ i0.ɵɵconditionalCreate(6, ClassifyPipelineTabComponent_For_11_Conditional_6_Template, 3, 4, "div", 48);
55
+ i0.ɵɵelementEnd();
56
+ } if (rf & 2) {
57
+ const kpi_r1 = ctx.$implicit;
58
+ i0.ɵɵadvance();
59
+ i0.ɵɵclassProp("at-kpi-error-value", kpi_r1.Label === "Errors" && kpi_r1.Value > 0);
60
+ i0.ɵɵadvance();
61
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 5, kpi_r1.Value));
62
+ i0.ɵɵadvance(3);
63
+ i0.ɵɵtextInterpolate(kpi_r1.Label);
64
+ i0.ɵɵadvance();
65
+ i0.ɵɵconditional(kpi_r1.Trend ? 6 : -1);
66
+ } }
67
+ function ClassifyPipelineTabComponent_Conditional_14_For_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
68
+ i0.ɵɵelement(0, "i", 53);
69
+ } }
70
+ function ClassifyPipelineTabComponent_Conditional_14_For_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
71
+ i0.ɵɵelement(0, "i", 54);
72
+ } }
73
+ function ClassifyPipelineTabComponent_Conditional_14_For_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
74
+ i0.ɵɵelement(0, "i");
75
+ } if (rf & 2) {
76
+ const stage_r2 = i0.ɵɵnextContext().$implicit;
77
+ i0.ɵɵclassMap(stage_r2.Icon);
78
+ } }
79
+ function ClassifyPipelineTabComponent_Conditional_14_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
80
+ i0.ɵɵelement(0, "div", 58);
81
+ } if (rf & 2) {
82
+ const stage_r2 = i0.ɵɵnextContext().$implicit;
83
+ i0.ɵɵclassProp("connector-complete", stage_r2.Status === "complete");
84
+ } }
85
+ function ClassifyPipelineTabComponent_Conditional_14_For_2_Template(rf, ctx) { if (rf & 1) {
86
+ i0.ɵɵelementStart(0, "div", 51)(1, "div", 52);
87
+ i0.ɵɵconditionalCreate(2, ClassifyPipelineTabComponent_Conditional_14_For_2_Conditional_2_Template, 1, 0, "i", 53)(3, ClassifyPipelineTabComponent_Conditional_14_For_2_Conditional_3_Template, 1, 0, "i", 54)(4, ClassifyPipelineTabComponent_Conditional_14_For_2_Conditional_4_Template, 1, 2, "i", 55);
88
+ i0.ɵɵelementEnd();
89
+ i0.ɵɵelementStart(5, "div", 56);
90
+ i0.ɵɵtext(6);
91
+ i0.ɵɵelementEnd()();
92
+ i0.ɵɵconditionalCreate(7, ClassifyPipelineTabComponent_Conditional_14_For_2_Conditional_7_Template, 1, 2, "div", 57);
93
+ } if (rf & 2) {
94
+ const stage_r2 = ctx.$implicit;
95
+ const ɵ$index_44_r3 = ctx.$index;
96
+ const ɵ$count_44_r4 = ctx.$count;
97
+ i0.ɵɵclassProp("stage-idle", stage_r2.Status === "idle")("stage-active", stage_r2.Status === "active")("stage-complete", stage_r2.Status === "complete");
98
+ i0.ɵɵadvance(2);
99
+ i0.ɵɵconditional(stage_r2.Status === "active" ? 2 : stage_r2.Status === "complete" ? 3 : 4);
100
+ i0.ɵɵadvance(4);
101
+ i0.ɵɵtextInterpolate(stage_r2.Name);
102
+ i0.ɵɵadvance();
103
+ i0.ɵɵconditional(!(ɵ$index_44_r3 === ɵ$count_44_r4 - 1) ? 7 : -1);
104
+ } }
105
+ function ClassifyPipelineTabComponent_Conditional_14_Template(rf, ctx) { if (rf & 1) {
106
+ i0.ɵɵelementStart(0, "div", 12);
107
+ i0.ɵɵrepeaterCreate(1, ClassifyPipelineTabComponent_Conditional_14_For_2_Template, 8, 9, null, null, _forTrack4);
108
+ i0.ɵɵelementEnd();
109
+ } if (rf & 2) {
110
+ const ctx_r4 = i0.ɵɵnextContext();
111
+ i0.ɵɵadvance();
112
+ i0.ɵɵrepeater(ctx_r4.PipelineStages);
113
+ } }
114
+ function ClassifyPipelineTabComponent_Conditional_15_Conditional_9_Template(rf, ctx) { if (rf & 1) {
115
+ i0.ɵɵelementStart(0, "div", 64);
116
+ i0.ɵɵtext(1);
117
+ i0.ɵɵelementEnd();
118
+ } if (rf & 2) {
119
+ const ctx_r4 = i0.ɵɵnextContext(2);
120
+ i0.ɵɵadvance();
121
+ i0.ɵɵtextInterpolate(ctx_r4.RunCurrentItem);
122
+ } }
123
+ function ClassifyPipelineTabComponent_Conditional_15_Conditional_11_Template(rf, ctx) { if (rf & 1) {
124
+ const _r7 = i0.ɵɵgetCurrentView();
125
+ i0.ɵɵelementStart(0, "button", 70);
126
+ i0.ɵɵlistener("click", function ClassifyPipelineTabComponent_Conditional_15_Conditional_11_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r4 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r4.onPause()); });
127
+ i0.ɵɵelement(1, "i", 71);
128
+ i0.ɵɵtext(2, " Pause ");
129
+ i0.ɵɵelementEnd();
130
+ } if (rf & 2) {
131
+ const ctx_r4 = i0.ɵɵnextContext(2);
132
+ i0.ɵɵproperty("disabled", !ctx_r4.CurrentProcessRunID);
133
+ } }
134
+ function ClassifyPipelineTabComponent_Conditional_15_Conditional_12_Template(rf, ctx) { if (rf & 1) {
135
+ const _r8 = i0.ɵɵgetCurrentView();
136
+ i0.ɵɵelementStart(0, "button", 72);
137
+ i0.ɵɵlistener("click", function ClassifyPipelineTabComponent_Conditional_15_Conditional_12_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r4 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r4.onResume()); });
138
+ i0.ɵɵelement(1, "i", 73);
139
+ i0.ɵɵtext(2, " Resume ");
140
+ i0.ɵɵelementEnd();
141
+ } }
142
+ function ClassifyPipelineTabComponent_Conditional_15_Template(rf, ctx) { if (rf & 1) {
143
+ const _r6 = i0.ɵɵgetCurrentView();
144
+ i0.ɵɵelementStart(0, "div", 13)(1, "div", 59)(2, "span", 60);
145
+ i0.ɵɵtext(3);
146
+ i0.ɵɵelementEnd();
147
+ i0.ɵɵelementStart(4, "span", 61);
148
+ i0.ɵɵtext(5);
149
+ i0.ɵɵpipe(6, "number");
150
+ i0.ɵɵelementEnd()();
151
+ i0.ɵɵelementStart(7, "div", 62);
152
+ i0.ɵɵelement(8, "div", 63);
153
+ i0.ɵɵelementEnd();
154
+ i0.ɵɵconditionalCreate(9, ClassifyPipelineTabComponent_Conditional_15_Conditional_9_Template, 2, 1, "div", 64);
155
+ i0.ɵɵelementStart(10, "div", 65);
156
+ i0.ɵɵconditionalCreate(11, ClassifyPipelineTabComponent_Conditional_15_Conditional_11_Template, 3, 1, "button", 66);
157
+ i0.ɵɵconditionalCreate(12, ClassifyPipelineTabComponent_Conditional_15_Conditional_12_Template, 3, 0, "button", 67);
158
+ i0.ɵɵelementStart(13, "button", 68);
159
+ i0.ɵɵlistener("click", function ClassifyPipelineTabComponent_Conditional_15_Template_button_click_13_listener() { i0.ɵɵrestoreView(_r6); const ctx_r4 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r4.onCancel()); });
160
+ i0.ɵɵelement(14, "i", 69);
161
+ i0.ɵɵtext(15, " Cancel ");
162
+ i0.ɵɵelementEnd()()();
163
+ } if (rf & 2) {
164
+ const ctx_r4 = i0.ɵɵnextContext();
165
+ i0.ɵɵadvance(3);
166
+ i0.ɵɵtextInterpolate(ctx_r4.RunStage);
167
+ i0.ɵɵadvance(2);
168
+ i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind2(6, 9, ctx_r4.RunProgress, "1.0-0"), "%");
169
+ i0.ɵɵadvance(3);
170
+ i0.ɵɵstyleProp("width", ctx_r4.RunProgress, "%");
171
+ i0.ɵɵclassProp("at-progress-fill-paused", ctx_r4.IsPaused);
172
+ i0.ɵɵadvance();
173
+ i0.ɵɵconditional(ctx_r4.RunCurrentItem ? 9 : -1);
174
+ i0.ɵɵadvance(2);
175
+ i0.ɵɵconditional(ctx_r4.IsRunning && !ctx_r4.IsPaused ? 11 : -1);
176
+ i0.ɵɵadvance();
177
+ i0.ɵɵconditional(ctx_r4.IsPaused ? 12 : -1);
178
+ } }
179
+ function ClassifyPipelineTabComponent_Conditional_16_For_25_Conditional_5_Template(rf, ctx) { if (rf & 1) {
180
+ i0.ɵɵelement(0, "i", 80);
181
+ } }
182
+ function ClassifyPipelineTabComponent_Conditional_16_For_25_Template(rf, ctx) { if (rf & 1) {
183
+ i0.ɵɵelementStart(0, "tr")(1, "td", 78);
184
+ i0.ɵɵtext(2);
185
+ i0.ɵɵelementEnd();
186
+ i0.ɵɵelementStart(3, "td")(4, "span", 79);
187
+ i0.ɵɵconditionalCreate(5, ClassifyPipelineTabComponent_Conditional_16_For_25_Conditional_5_Template, 1, 0, "i", 80);
188
+ i0.ɵɵtext(6);
189
+ i0.ɵɵelementEnd()();
190
+ i0.ɵɵelementStart(7, "td");
191
+ i0.ɵɵtext(8);
192
+ i0.ɵɵelementEnd();
193
+ i0.ɵɵelementStart(9, "td");
194
+ i0.ɵɵtext(10);
195
+ i0.ɵɵelementEnd();
196
+ i0.ɵɵelementStart(11, "td");
197
+ i0.ɵɵtext(12);
198
+ i0.ɵɵelementEnd();
199
+ i0.ɵɵelementStart(13, "td");
200
+ i0.ɵɵtext(14);
201
+ i0.ɵɵelementEnd()();
202
+ } if (rf & 2) {
203
+ const row_r10 = ctx.$implicit;
204
+ i0.ɵɵadvance(2);
205
+ i0.ɵɵtextInterpolate(row_r10.SourceName);
206
+ i0.ɵɵadvance(2);
207
+ i0.ɵɵclassMap(row_r10.StatusClass);
208
+ i0.ɵɵadvance();
209
+ i0.ɵɵconditional(row_r10.StatusClass === "running" ? 5 : -1);
210
+ i0.ɵɵadvance();
211
+ i0.ɵɵtextInterpolate1(" ", row_r10.Status, " ");
212
+ i0.ɵɵadvance(2);
213
+ i0.ɵɵtextInterpolate(row_r10.ItemsProcessed);
214
+ i0.ɵɵadvance(2);
215
+ i0.ɵɵtextInterpolate(row_r10.ItemsTagged);
216
+ i0.ɵɵadvance(2);
217
+ i0.ɵɵtextInterpolate(row_r10.ItemsVectorized);
218
+ i0.ɵɵadvance();
219
+ i0.ɵɵclassProp("run-error-text", row_r10.ErrorCount > 0);
220
+ i0.ɵɵadvance();
221
+ i0.ɵɵtextInterpolate(row_r10.ErrorCount);
222
+ } }
223
+ function ClassifyPipelineTabComponent_Conditional_16_Template(rf, ctx) { if (rf & 1) {
224
+ const _r9 = i0.ɵɵgetCurrentView();
225
+ i0.ɵɵelementStart(0, "div", 14)(1, "div", 16)(2, "span", 17);
226
+ i0.ɵɵelement(3, "i", 74);
227
+ i0.ɵɵtext(4, " Per-Source Progress");
228
+ i0.ɵɵelementEnd();
229
+ i0.ɵɵelementStart(5, "button", 75);
230
+ i0.ɵɵlistener("click", function ClassifyPipelineTabComponent_Conditional_16_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r9); const ctx_r4 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r4.onLoadLiveRunDetails()); });
231
+ i0.ɵɵelement(6, "i", 3);
232
+ i0.ɵɵelementEnd()();
233
+ i0.ɵɵelementStart(7, "div", 76)(8, "table", 77)(9, "thead")(10, "tr")(11, "th");
234
+ i0.ɵɵtext(12, "Source");
235
+ i0.ɵɵelementEnd();
236
+ i0.ɵɵelementStart(13, "th");
237
+ i0.ɵɵtext(14, "Status");
238
+ i0.ɵɵelementEnd();
239
+ i0.ɵɵelementStart(15, "th");
240
+ i0.ɵɵtext(16, "Items");
241
+ i0.ɵɵelementEnd();
242
+ i0.ɵɵelementStart(17, "th");
243
+ i0.ɵɵtext(18, "Tagged");
244
+ i0.ɵɵelementEnd();
245
+ i0.ɵɵelementStart(19, "th");
246
+ i0.ɵɵtext(20, "Vectorized");
247
+ i0.ɵɵelementEnd();
248
+ i0.ɵɵelementStart(21, "th");
249
+ i0.ɵɵtext(22, "Errors");
250
+ i0.ɵɵelementEnd()()();
251
+ i0.ɵɵelementStart(23, "tbody");
252
+ i0.ɵɵrepeaterCreate(24, ClassifyPipelineTabComponent_Conditional_16_For_25_Template, 15, 11, "tr", null, _forTrack5);
253
+ i0.ɵɵelementEnd()()()();
254
+ } if (rf & 2) {
255
+ const ctx_r4 = i0.ɵɵnextContext();
256
+ i0.ɵɵadvance(24);
257
+ i0.ɵɵrepeater(ctx_r4.LiveRunDetailRows);
258
+ } }
259
+ function ClassifyPipelineTabComponent_Conditional_31_Template(rf, ctx) { if (rf & 1) {
260
+ const _r11 = i0.ɵɵgetCurrentView();
261
+ i0.ɵɵelementStart(0, "button", 81);
262
+ i0.ɵɵlistener("click", function ClassifyPipelineTabComponent_Conditional_31_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r4 = i0.ɵɵnextContext(); ctx_r4.FeedSearchQuery = ""; return i0.ɵɵresetView(ctx_r4.OnFeedSearchChange()); });
263
+ i0.ɵɵelement(1, "i", 82);
264
+ i0.ɵɵelementEnd();
265
+ } }
266
+ function ClassifyPipelineTabComponent_Conditional_33_Conditional_2_Template(rf, ctx) { if (rf & 1) {
267
+ i0.ɵɵelementStart(0, "p");
268
+ i0.ɵɵtext(1);
269
+ i0.ɵɵelementEnd();
270
+ } if (rf & 2) {
271
+ const ctx_r4 = i0.ɵɵnextContext(2);
272
+ i0.ɵɵadvance();
273
+ i0.ɵɵtextInterpolate1("No items match \"", ctx_r4.FeedSearchQuery, "\"");
274
+ } }
275
+ function ClassifyPipelineTabComponent_Conditional_33_Conditional_3_Template(rf, ctx) { if (rf & 1) {
276
+ i0.ɵɵelementStart(0, "p");
277
+ i0.ɵɵtext(1, "No processed items yet.");
278
+ i0.ɵɵelementEnd();
279
+ } }
280
+ function ClassifyPipelineTabComponent_Conditional_33_Template(rf, ctx) { if (rf & 1) {
281
+ i0.ɵɵelementStart(0, "div", 28);
282
+ i0.ɵɵelement(1, "i", 83);
283
+ i0.ɵɵconditionalCreate(2, ClassifyPipelineTabComponent_Conditional_33_Conditional_2_Template, 2, 1, "p")(3, ClassifyPipelineTabComponent_Conditional_33_Conditional_3_Template, 2, 0, "p");
284
+ i0.ɵɵelementEnd();
285
+ } if (rf & 2) {
286
+ const ctx_r4 = i0.ɵɵnextContext();
287
+ i0.ɵɵadvance(2);
288
+ i0.ɵɵconditional(ctx_r4.FeedSearchQuery ? 2 : 3);
289
+ } }
290
+ function ClassifyPipelineTabComponent_For_35_For_9_Template(rf, ctx) { if (rf & 1) {
291
+ i0.ɵɵelementStart(0, "span", 90);
292
+ i0.ɵɵtext(1);
293
+ i0.ɵɵelementEnd();
294
+ } if (rf & 2) {
295
+ const tag_r14 = ctx.$implicit;
296
+ i0.ɵɵadvance();
297
+ i0.ɵɵtextInterpolate(tag_r14);
298
+ } }
299
+ function ClassifyPipelineTabComponent_For_35_Template(rf, ctx) { if (rf & 1) {
300
+ const _r12 = i0.ɵɵgetCurrentView();
301
+ i0.ɵɵelementStart(0, "div", 84);
302
+ i0.ɵɵlistener("click", function ClassifyPipelineTabComponent_For_35_Template_div_click_0_listener() { const item_r13 = i0.ɵɵrestoreView(_r12).$implicit; const ctx_r4 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r4.onFeedItemClick(ctx_r4.GetFeedItemOriginalIndex(item_r13))); });
303
+ i0.ɵɵelement(1, "div", 85);
304
+ i0.ɵɵelementStart(2, "div", 86)(3, "span", 87);
305
+ i0.ɵɵtext(4);
306
+ i0.ɵɵelementEnd();
307
+ i0.ɵɵelementStart(5, "span", 88);
308
+ i0.ɵɵtext(6);
309
+ i0.ɵɵelementEnd()();
310
+ i0.ɵɵelementStart(7, "div", 89);
311
+ i0.ɵɵrepeaterCreate(8, ClassifyPipelineTabComponent_For_35_For_9_Template, 2, 1, "span", 90, i0.ɵɵrepeaterTrackByIdentity);
312
+ i0.ɵɵelementEnd();
313
+ i0.ɵɵelementStart(10, "span", 91);
314
+ i0.ɵɵtext(11);
315
+ i0.ɵɵelementEnd()();
316
+ } if (rf & 2) {
317
+ const item_r13 = ctx.$implicit;
318
+ i0.ɵɵadvance();
319
+ i0.ɵɵclassMap(item_r13.Status);
320
+ i0.ɵɵadvance(3);
321
+ i0.ɵɵtextInterpolate(item_r13.Name);
322
+ i0.ɵɵadvance(2);
323
+ i0.ɵɵtextInterpolate(item_r13.SourceName);
324
+ i0.ɵɵadvance(2);
325
+ i0.ɵɵrepeater(item_r13.Tags);
326
+ i0.ɵɵadvance(3);
327
+ i0.ɵɵtextInterpolate(item_r13.TimeAgo);
328
+ } }
329
+ function ClassifyPipelineTabComponent_Conditional_36_Template(rf, ctx) { if (rf & 1) {
330
+ const _r15 = i0.ɵɵgetCurrentView();
331
+ i0.ɵɵelementStart(0, "div", 30)(1, "button", 70);
332
+ i0.ɵɵlistener("click", function ClassifyPipelineTabComponent_Conditional_36_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r15); const ctx_r4 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r4.FeedPrevPage()); });
333
+ i0.ɵɵelement(2, "i", 92);
334
+ i0.ɵɵelementEnd();
335
+ i0.ɵɵelementStart(3, "span", 93);
336
+ i0.ɵɵtext(4);
337
+ i0.ɵɵelementEnd();
338
+ i0.ɵɵelementStart(5, "button", 70);
339
+ i0.ɵɵlistener("click", function ClassifyPipelineTabComponent_Conditional_36_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r15); const ctx_r4 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r4.FeedNextPage()); });
340
+ i0.ɵɵelement(6, "i", 94);
341
+ i0.ɵɵelementEnd()();
342
+ } if (rf & 2) {
343
+ const ctx_r4 = i0.ɵɵnextContext();
344
+ i0.ɵɵadvance();
345
+ i0.ɵɵproperty("disabled", ctx_r4.FeedPage === 0);
346
+ i0.ɵɵadvance(3);
347
+ i0.ɵɵtextInterpolate2("Page ", ctx_r4.FeedPage + 1, " of ", ctx_r4.FeedTotalPages);
348
+ i0.ɵɵadvance();
349
+ i0.ɵɵproperty("disabled", ctx_r4.FeedPage >= ctx_r4.FeedTotalPages - 1);
350
+ } }
351
+ function ClassifyPipelineTabComponent_For_45_Template(rf, ctx) { if (rf & 1) {
352
+ i0.ɵɵelementStart(0, "div", 35)(1, "div", 95);
353
+ i0.ɵɵelement(2, "i");
354
+ i0.ɵɵelementEnd();
355
+ i0.ɵɵelementStart(3, "div", 96)(4, "div", 97);
356
+ i0.ɵɵtext(5);
357
+ i0.ɵɵelementEnd();
358
+ i0.ɵɵelementStart(6, "div", 98);
359
+ i0.ɵɵtext(7);
360
+ i0.ɵɵelementEnd()();
361
+ i0.ɵɵelement(8, "div", 99);
362
+ i0.ɵɵelementEnd();
363
+ } if (rf & 2) {
364
+ const source_r16 = ctx.$implicit;
365
+ i0.ɵɵadvance(2);
366
+ i0.ɵɵclassMap(source_r16.Icon);
367
+ i0.ɵɵadvance(3);
368
+ i0.ɵɵtextInterpolate(source_r16.Name);
369
+ i0.ɵɵadvance(2);
370
+ i0.ɵɵtextInterpolate(source_r16.Meta);
371
+ i0.ɵɵadvance();
372
+ i0.ɵɵclassMap(source_r16.StatusClass);
373
+ } }
374
+ function ClassifyPipelineTabComponent_For_52_Template(rf, ctx) { if (rf & 1) {
375
+ i0.ɵɵelementStart(0, "span", 100);
376
+ i0.ɵɵtext(1);
377
+ i0.ɵɵelementEnd();
378
+ } if (rf & 2) {
379
+ const tag_r17 = ctx.$implicit;
380
+ i0.ɵɵclassMap(tag_r17.SizeClass);
381
+ i0.ɵɵstyleProp("opacity", 0.4 + tag_r17.AvgWeight * 0.6);
382
+ i0.ɵɵproperty("title", "Weight: " + tag_r17.AvgWeight.toFixed(2));
383
+ i0.ɵɵadvance();
384
+ i0.ɵɵtextInterpolate(tag_r17.Tag);
385
+ } }
386
+ function ClassifyPipelineTabComponent_Conditional_59_Template(rf, ctx) { if (rf & 1) {
387
+ const _r18 = i0.ɵɵgetCurrentView();
388
+ i0.ɵɵelementStart(0, "div", 45)(1, "div", 101)(2, "label", 102);
389
+ i0.ɵɵtext(3, "Batch Size");
390
+ i0.ɵɵelementEnd();
391
+ i0.ɵɵelementStart(4, "div", 103)(5, "input", 104);
392
+ i0.ɵɵtwoWayListener("ngModelChange", function ClassifyPipelineTabComponent_Conditional_59_Template_input_ngModelChange_5_listener($event) { i0.ɵɵrestoreView(_r18); const ctx_r4 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r4.PipelineConfig.Pipeline.BatchSize, $event) || (ctx_r4.PipelineConfig.Pipeline.BatchSize = $event); return i0.ɵɵresetView($event); });
393
+ i0.ɵɵelementEnd()()();
394
+ i0.ɵɵelementStart(6, "div", 101)(7, "label", 102);
395
+ i0.ɵɵtext(8, "Throttle (ms)");
396
+ i0.ɵɵelementEnd();
397
+ i0.ɵɵelementStart(9, "div", 103)(10, "input", 105);
398
+ i0.ɵɵtwoWayListener("ngModelChange", function ClassifyPipelineTabComponent_Conditional_59_Template_input_ngModelChange_10_listener($event) { i0.ɵɵrestoreView(_r18); const ctx_r4 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r4.PipelineConfig.Pipeline.DelayBetweenBatchesMs, $event) || (ctx_r4.PipelineConfig.Pipeline.DelayBetweenBatchesMs = $event); return i0.ɵɵresetView($event); });
399
+ i0.ɵɵelementEnd();
400
+ i0.ɵɵelementStart(11, "span", 106);
401
+ i0.ɵɵtext(12);
402
+ i0.ɵɵelementEnd()()();
403
+ i0.ɵɵelementStart(13, "div", 101)(14, "label", 102);
404
+ i0.ɵɵtext(15, "Error Tolerance");
405
+ i0.ɵɵelementEnd();
406
+ i0.ɵɵelementStart(16, "div", 103)(17, "input", 107);
407
+ i0.ɵɵtwoWayListener("ngModelChange", function ClassifyPipelineTabComponent_Conditional_59_Template_input_ngModelChange_17_listener($event) { i0.ɵɵrestoreView(_r18); const ctx_r4 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r4.PipelineConfig.Pipeline.ErrorThresholdPercent, $event) || (ctx_r4.PipelineConfig.Pipeline.ErrorThresholdPercent = $event); return i0.ɵɵresetView($event); });
408
+ i0.ɵɵelementEnd();
409
+ i0.ɵɵelementStart(18, "span", 106);
410
+ i0.ɵɵtext(19);
411
+ i0.ɵɵelementEnd()()();
412
+ i0.ɵɵelementStart(20, "div", 101)(21, "label", 102);
413
+ i0.ɵɵtext(22, "Auto-resume");
414
+ i0.ɵɵelementEnd();
415
+ i0.ɵɵelementStart(23, "div", 103)(24, "label", 108)(25, "input", 109);
416
+ i0.ɵɵtwoWayListener("ngModelChange", function ClassifyPipelineTabComponent_Conditional_59_Template_input_ngModelChange_25_listener($event) { i0.ɵɵrestoreView(_r18); const ctx_r4 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r4.PipelineConfig.Pipeline.ResumeFromLastBatch, $event) || (ctx_r4.PipelineConfig.Pipeline.ResumeFromLastBatch = $event); return i0.ɵɵresetView($event); });
417
+ i0.ɵɵelementEnd();
418
+ i0.ɵɵelementStart(26, "span", 110);
419
+ i0.ɵɵelement(27, "span", 111);
420
+ i0.ɵɵelementEnd()()()();
421
+ i0.ɵɵelement(28, "div", 112);
422
+ i0.ɵɵelementStart(29, "div", 113);
423
+ i0.ɵɵtext(30, "LLM Rate Limits");
424
+ i0.ɵɵelementEnd();
425
+ i0.ɵɵelementStart(31, "div", 101)(32, "label", 102);
426
+ i0.ɵɵtext(33, "Requests/min");
427
+ i0.ɵɵelementEnd();
428
+ i0.ɵɵelementStart(34, "div", 103)(35, "input", 114);
429
+ i0.ɵɵtwoWayListener("ngModelChange", function ClassifyPipelineTabComponent_Conditional_59_Template_input_ngModelChange_35_listener($event) { i0.ɵɵrestoreView(_r18); const ctx_r4 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r4.PipelineConfig.RateLimits.LLM.RequestsPerMinute, $event) || (ctx_r4.PipelineConfig.RateLimits.LLM.RequestsPerMinute = $event); return i0.ɵɵresetView($event); });
430
+ i0.ɵɵelementEnd()()();
431
+ i0.ɵɵelementStart(36, "div", 101)(37, "label", 102);
432
+ i0.ɵɵtext(38, "Tokens/min");
433
+ i0.ɵɵelementEnd();
434
+ i0.ɵɵelementStart(39, "div", 103)(40, "input", 115);
435
+ i0.ɵɵtwoWayListener("ngModelChange", function ClassifyPipelineTabComponent_Conditional_59_Template_input_ngModelChange_40_listener($event) { i0.ɵɵrestoreView(_r18); const ctx_r4 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r4.PipelineConfig.RateLimits.LLM.TokensPerMinute, $event) || (ctx_r4.PipelineConfig.RateLimits.LLM.TokensPerMinute = $event); return i0.ɵɵresetView($event); });
436
+ i0.ɵɵelementEnd();
437
+ i0.ɵɵelementStart(41, "span", 106);
438
+ i0.ɵɵtext(42);
439
+ i0.ɵɵelementEnd()()();
440
+ i0.ɵɵelementStart(43, "div", 113);
441
+ i0.ɵɵtext(44, "Embedding Rate Limits");
442
+ i0.ɵɵelementEnd();
443
+ i0.ɵɵelementStart(45, "div", 101)(46, "label", 102);
444
+ i0.ɵɵtext(47, "Requests/min");
445
+ i0.ɵɵelementEnd();
446
+ i0.ɵɵelementStart(48, "div", 103)(49, "input", 116);
447
+ i0.ɵɵtwoWayListener("ngModelChange", function ClassifyPipelineTabComponent_Conditional_59_Template_input_ngModelChange_49_listener($event) { i0.ɵɵrestoreView(_r18); const ctx_r4 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r4.PipelineConfig.RateLimits.Embedding.RequestsPerMinute, $event) || (ctx_r4.PipelineConfig.RateLimits.Embedding.RequestsPerMinute = $event); return i0.ɵɵresetView($event); });
448
+ i0.ɵɵelementEnd()()()();
449
+ } if (rf & 2) {
450
+ const ctx_r4 = i0.ɵɵnextContext();
451
+ i0.ɵɵadvance(5);
452
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r4.PipelineConfig.Pipeline.BatchSize);
453
+ i0.ɵɵadvance(5);
454
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r4.PipelineConfig.Pipeline.DelayBetweenBatchesMs);
455
+ i0.ɵɵadvance(2);
456
+ i0.ɵɵtextInterpolate1("", ctx_r4.PipelineConfig.Pipeline.DelayBetweenBatchesMs, "ms");
457
+ i0.ɵɵadvance(5);
458
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r4.PipelineConfig.Pipeline.ErrorThresholdPercent);
459
+ i0.ɵɵadvance(2);
460
+ i0.ɵɵtextInterpolate1("", ctx_r4.PipelineConfig.Pipeline.ErrorThresholdPercent, "%");
461
+ i0.ɵɵadvance(6);
462
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r4.PipelineConfig.Pipeline.ResumeFromLastBatch);
463
+ i0.ɵɵadvance(10);
464
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r4.PipelineConfig.RateLimits.LLM.RequestsPerMinute);
465
+ i0.ɵɵadvance(5);
466
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r4.PipelineConfig.RateLimits.LLM.TokensPerMinute);
467
+ i0.ɵɵadvance(2);
468
+ i0.ɵɵtextInterpolate(ctx_r4.formatTokenCount(ctx_r4.PipelineConfig.RateLimits.LLM.TokensPerMinute ?? 0));
469
+ i0.ɵɵadvance(7);
470
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r4.PipelineConfig.RateLimits.Embedding.RequestsPerMinute);
471
+ } }
472
+ export class ClassifyPipelineTabComponent extends BaseAngularComponent {
473
+ // ── Built view models (data DOWN from the host orchestrator) ──
474
+ /** KPI strip cards. */
475
+ KPIMetrics = [];
476
+ /** Pipeline-stage visualization (shown only during an active/paused run). */
477
+ PipelineStages = [];
478
+ /** Recent-processing feed source list (host keeps it index-aligned with its raw content items). */
479
+ FeedItems = [];
480
+ /** Sources mini-list (right sidebar). */
481
+ SourceMinis = [];
482
+ /** Trending-tags cloud. */
483
+ TrendingTags = [];
484
+ /** Per-source live-run detail rows (shown during an active run). */
485
+ LiveRunDetailRows = [];
486
+ // ── Run state (data DOWN from the host) ──
487
+ IsRunning = false;
488
+ IsPaused = false;
489
+ RunProgress = 0;
490
+ RunStage = '';
491
+ RunCurrentItem = '';
492
+ /** Server-side process run ID — gates the Pause button. */
493
+ CurrentProcessRunID = null;
494
+ /**
495
+ * The pipeline-config object the host owns. Two-way bound in-place via the
496
+ * config panel's `[(ngModel)]` bindings — since this is a shared object
497
+ * reference, mutations flow straight back to the host without an output.
498
+ */
499
+ PipelineConfig = {};
500
+ /** Config-panel expanded state — host persists this to user prefs + reports it to the agent. */
501
+ ShowPipelineConfig = false;
502
+ // ── Tab-local view state (purely presentational, pipeline-only) ──
503
+ /** Feed search text. */
504
+ FeedSearchQuery = '';
505
+ /** Current feed page (0-based). */
506
+ FeedPage = 0;
507
+ FeedPageSize = 20;
508
+ /** Sort order for the feed: 'newest' (default) or 'oldest'. */
509
+ FeedSortOrder = 'newest';
510
+ /** Template-facing formatter for token-count config values. */
511
+ formatTokenCount = formatTokenCount;
512
+ // ── User intents (events UP to the host) ──
513
+ /** Refresh the pipeline data → host `LoadPipelineData()`. */
514
+ RefreshRequested = new EventEmitter();
515
+ /** Pause the running pipeline → host `PausePipeline()`. */
516
+ PauseRequested = new EventEmitter();
517
+ /** Resume the paused pipeline → host `ResumePipeline()`. */
518
+ ResumeRequested = new EventEmitter();
519
+ /** Cancel the running/paused pipeline → host `CancelPipeline()`. */
520
+ CancelRequested = new EventEmitter();
521
+ /** Reload live per-source progress → host `LoadLiveRunDetails()`. */
522
+ LoadLiveRunDetailsRequested = new EventEmitter();
523
+ /** Open a feed item's detail slide-in (emits the item's original index into the host's FeedItems). */
524
+ FeedItemClicked = new EventEmitter();
525
+ /** Toggle the config panel → host `TogglePipelineConfig()` (persists + reports to agent). */
526
+ ConfigToggled = new EventEmitter();
527
+ // ════════════════════════════════════════════
528
+ // FEED — search, sort, pagination (presentational)
529
+ // ════════════════════════════════════════════
530
+ /** Feed items filtered by search query and sorted. */
531
+ get FilteredFeedItems() {
532
+ let items = this.FeedItems;
533
+ if (this.FeedSearchQuery.trim()) {
534
+ const q = this.FeedSearchQuery.toLowerCase();
535
+ items = items.filter(item => item.Name.toLowerCase().includes(q) ||
536
+ item.SourceName.toLowerCase().includes(q) ||
537
+ item.Tags.some(t => t.toLowerCase().includes(q)));
538
+ }
539
+ if (this.FeedSortOrder === 'oldest') {
540
+ return [...items].reverse();
541
+ }
542
+ return items;
543
+ }
544
+ /** Paginated feed items for the current page. */
545
+ get PaginatedFeedItems() {
546
+ const items = this.FilteredFeedItems;
547
+ const start = this.FeedPage * this.FeedPageSize;
548
+ return items.slice(start, start + this.FeedPageSize);
549
+ }
550
+ /** Total pages for the feed. */
551
+ get FeedTotalPages() {
552
+ return Math.max(1, Math.ceil(this.FilteredFeedItems.length / this.FeedPageSize));
553
+ }
554
+ /** Toggle feed sort order. */
555
+ ToggleFeedSort() {
556
+ this.FeedSortOrder = this.FeedSortOrder === 'newest' ? 'oldest' : 'newest';
557
+ this.FeedPage = 0;
558
+ }
559
+ /** Handle feed search input change. */
560
+ OnFeedSearchChange() {
561
+ this.FeedPage = 0;
562
+ }
563
+ /** Navigate to the previous feed page. */
564
+ FeedPrevPage() {
565
+ if (this.FeedPage > 0) {
566
+ this.FeedPage--;
567
+ }
568
+ }
569
+ /** Navigate to the next feed page. */
570
+ FeedNextPage() {
571
+ if (this.FeedPage < this.FeedTotalPages - 1) {
572
+ this.FeedPage++;
573
+ }
574
+ }
575
+ /** Get the index in the host's original FeedItems array for a paginated item. */
576
+ GetFeedItemOriginalIndex(item) {
577
+ return this.FeedItems.indexOf(item);
578
+ }
579
+ // ── Intent emitters ──
580
+ onRefresh() {
581
+ this.RefreshRequested.emit();
582
+ }
583
+ onPause() {
584
+ this.PauseRequested.emit();
585
+ }
586
+ onResume() {
587
+ this.ResumeRequested.emit();
588
+ }
589
+ onCancel() {
590
+ this.CancelRequested.emit();
591
+ }
592
+ onLoadLiveRunDetails() {
593
+ this.LoadLiveRunDetailsRequested.emit();
594
+ }
595
+ onFeedItemClick(originalIndex) {
596
+ this.FeedItemClicked.emit(originalIndex);
597
+ }
598
+ onToggleConfig() {
599
+ this.ConfigToggled.emit();
600
+ }
601
+ static ɵfac = /*@__PURE__*/ (() => { let ɵClassifyPipelineTabComponent_BaseFactory; return function ClassifyPipelineTabComponent_Factory(__ngFactoryType__) { return (ɵClassifyPipelineTabComponent_BaseFactory || (ɵClassifyPipelineTabComponent_BaseFactory = i0.ɵɵgetInheritedFactory(ClassifyPipelineTabComponent)))(__ngFactoryType__ || ClassifyPipelineTabComponent); }; })();
602
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ClassifyPipelineTabComponent, selectors: [["classify-pipeline-tab"]], inputs: { KPIMetrics: "KPIMetrics", PipelineStages: "PipelineStages", FeedItems: "FeedItems", SourceMinis: "SourceMinis", TrendingTags: "TrendingTags", LiveRunDetailRows: "LiveRunDetailRows", IsRunning: "IsRunning", IsPaused: "IsPaused", RunProgress: "RunProgress", RunStage: "RunStage", RunCurrentItem: "RunCurrentItem", CurrentProcessRunID: "CurrentProcessRunID", PipelineConfig: "PipelineConfig", ShowPipelineConfig: "ShowPipelineConfig" }, outputs: { RefreshRequested: "RefreshRequested", PauseRequested: "PauseRequested", ResumeRequested: "ResumeRequested", CancelRequested: "CancelRequested", LoadLiveRunDetailsRequested: "LoadLiveRunDetailsRequested", FeedItemClicked: "FeedItemClicked", ConfigToggled: "ConfigToggled" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 60, vars: 21, consts: [["Title", "Pipeline Monitor", "Subtitle", "Real-time processing status and recent activity"], ["actions", ""], ["mjButton", "", "variant", "secondary", "size", "sm", 3, "click"], [1, "fa-solid", "fa-arrows-rotate"], [1, "mj-action-label"], [3, "Padding", "Flex"], [1, "at-main-area"], [1, "at-page-body"], [1, "at-kpi-strip"], [1, "at-kpi-card"], [1, "at-pipeline-layout"], [1, "at-pipeline-center"], [1, "at-pipeline-stages"], [1, "at-progress-section"], [1, "at-card", 2, "margin-bottom", "12px"], [1, "at-card", "at-feed-card"], [1, "at-card-header"], [1, "at-card-title"], [1, "fa-solid", "fa-bolt"], [1, "at-feed-header-actions"], [1, "at-feed-sort-btn", 3, "click", "title"], [1, "fa-solid"], [1, "at-feed-count"], [1, "at-feed-search-bar"], [1, "fa-solid", "fa-search", "at-feed-search-icon"], ["type", "text", "placeholder", "Search items, sources, or tags...", 1, "mj-input", "at-feed-search-input", 3, "ngModelChange", "input", "ngModel"], [1, "at-feed-search-clear"], [1, "at-card-body", "at-feed-scroll-body"], [1, "at-empty-state"], [1, "at-feed-item", "at-feed-item-clickable"], [1, "at-feed-pagination"], [1, "at-pipeline-right"], [1, "at-card"], [1, "fa-solid", "fa-database"], [1, "at-card-body"], [1, "at-source-mini"], [1, "at-card", "at-tag-cloud-card"], [1, "at-card-title", 2, "margin-bottom", "10px"], [1, "fa-solid", "fa-chart-bar"], [1, "at-tag-cloud"], [1, "at-tag-pill", 3, "class", "opacity", "title"], [1, "at-card", "at-config-card"], [1, "at-card-header", 2, "cursor", "pointer", 3, "click"], [1, "fa-solid", "fa-sliders"], [1, "fa-solid", 2, "font-size", "0.7rem", "color", "var(--mj-text-muted)"], [1, "at-card-body", "at-config-body"], [1, "at-kpi-value"], [1, "at-kpi-label"], [1, "at-kpi-trend", 3, "up"], [1, "at-kpi-trend"], [1, "fa-solid", "fa-arrow-up"], [1, "at-pipeline-stage"], [1, "at-pipeline-stage-icon"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "fa-solid", "fa-check"], [3, "class"], [1, "at-pipeline-stage-name"], [1, "at-stage-connector", 3, "connector-complete"], [1, "at-stage-connector"], [1, "at-progress-header"], [1, "at-progress-stage-label"], [1, "at-progress-pct"], [1, "at-progress-bar"], [1, "at-progress-fill"], [1, "at-progress-current"], [1, "at-pipeline-controls"], [1, "at-action-btn", "at-secondary-btn", 3, "disabled"], [1, "at-action-btn", "at-primary-btn"], [1, "at-action-btn", "at-danger-btn", 3, "click"], [1, "fa-solid", "fa-stop"], [1, "at-action-btn", "at-secondary-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-pause"], [1, "at-action-btn", "at-primary-btn", 3, "click"], [1, "fa-solid", "fa-play"], [1, "fa-solid", "fa-list-check"], [1, "at-action-btn", "at-secondary-btn", 2, "font-size", "11px", "padding", "3px 8px", 3, "click"], [1, "at-card-body", 2, "max-height", "200px", "overflow-y", "auto"], [1, "at-run-table"], [1, "at-run-source-name"], [1, "at-run-status-badge"], [1, "fa-solid", "fa-spinner", "fa-spin", 2, "font-size", "0.55rem"], [1, "at-feed-search-clear", 3, "click"], [1, "fa-solid", "fa-times"], [1, "fa-solid", "fa-inbox"], [1, "at-feed-item", "at-feed-item-clickable", 3, "click"], [1, "at-feed-status-dot"], [1, "at-feed-item-content"], [1, "at-feed-item-name"], [1, "at-feed-item-source-label"], [1, "at-feed-item-tags"], [1, "at-feed-tag"], [1, "at-feed-item-time"], [1, "fa-solid", "fa-chevron-left"], [1, "at-feed-pagination-label"], [1, "fa-solid", "fa-chevron-right"], [1, "at-source-mini-icon"], [1, "at-source-mini-info"], [1, "at-source-mini-name"], [1, "at-source-mini-meta"], [1, "at-source-mini-status"], [1, "at-tag-pill", 3, "title"], [1, "at-config-row"], [1, "at-config-label"], [1, "at-config-control"], ["type", "number", "min", "10", "max", "1000", "step", "10", 1, "at-config-input", 3, "ngModelChange", "ngModel"], ["type", "range", "min", "0", "max", "5000", "step", "100", 1, "at-config-slider", 3, "ngModelChange", "ngModel"], [1, "at-config-value"], ["type", "range", "min", "5", "max", "50", "step", "5", 1, "at-config-slider", 3, "ngModelChange", "ngModel"], [1, "at-config-toggle"], ["type", "checkbox", 3, "ngModelChange", "ngModel"], [1, "at-toggle-track"], [1, "at-toggle-thumb"], [1, "at-config-divider"], [1, "at-config-section-label"], ["type", "number", "min", "1", "max", "500", 1, "at-config-input", 3, "ngModelChange", "ngModel"], ["type", "number", "min", "1000", "max", "5000000", "step", "10000", 1, "at-config-input", 3, "ngModelChange", "ngModel"], ["type", "number", "min", "1", "max", "1000", 1, "at-config-input", 3, "ngModelChange", "ngModel"]], template: function ClassifyPipelineTabComponent_Template(rf, ctx) { if (rf & 1) {
603
+ i0.ɵɵelementStart(0, "mj-page-header-interior", 0)(1, "div", 1)(2, "button", 2);
604
+ i0.ɵɵlistener("click", function ClassifyPipelineTabComponent_Template_button_click_2_listener() { return ctx.onRefresh(); });
605
+ i0.ɵɵelement(3, "i", 3);
606
+ i0.ɵɵelementStart(4, "span", 4);
607
+ i0.ɵɵtext(5, "Refresh");
608
+ i0.ɵɵelementEnd()()()();
609
+ i0.ɵɵelementStart(6, "mj-page-body-interior", 5)(7, "div", 6)(8, "div", 7)(9, "div", 8);
610
+ i0.ɵɵrepeaterCreate(10, ClassifyPipelineTabComponent_For_11_Template, 7, 7, "div", 9, _forTrack0);
611
+ i0.ɵɵelementEnd();
612
+ i0.ɵɵelementStart(12, "div", 10)(13, "div", 11);
613
+ i0.ɵɵconditionalCreate(14, ClassifyPipelineTabComponent_Conditional_14_Template, 3, 0, "div", 12);
614
+ i0.ɵɵconditionalCreate(15, ClassifyPipelineTabComponent_Conditional_15_Template, 16, 12, "div", 13);
615
+ i0.ɵɵconditionalCreate(16, ClassifyPipelineTabComponent_Conditional_16_Template, 26, 0, "div", 14);
616
+ i0.ɵɵelementStart(17, "div", 15)(18, "div", 16)(19, "span", 17);
617
+ i0.ɵɵelement(20, "i", 18);
618
+ i0.ɵɵtext(21, " Recent Processing");
619
+ i0.ɵɵelementEnd();
620
+ i0.ɵɵelementStart(22, "div", 19)(23, "button", 20);
621
+ i0.ɵɵlistener("click", function ClassifyPipelineTabComponent_Template_button_click_23_listener() { return ctx.ToggleFeedSort(); });
622
+ i0.ɵɵelement(24, "i", 21);
623
+ i0.ɵɵtext(25);
624
+ i0.ɵɵelementEnd();
625
+ i0.ɵɵelementStart(26, "span", 22);
626
+ i0.ɵɵtext(27);
627
+ i0.ɵɵelementEnd()()();
628
+ i0.ɵɵelementStart(28, "div", 23);
629
+ i0.ɵɵelement(29, "i", 24);
630
+ i0.ɵɵelementStart(30, "input", 25);
631
+ i0.ɵɵtwoWayListener("ngModelChange", function ClassifyPipelineTabComponent_Template_input_ngModelChange_30_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.FeedSearchQuery, $event) || (ctx.FeedSearchQuery = $event); return $event; });
632
+ i0.ɵɵlistener("input", function ClassifyPipelineTabComponent_Template_input_input_30_listener() { return ctx.OnFeedSearchChange(); });
633
+ i0.ɵɵelementEnd();
634
+ i0.ɵɵconditionalCreate(31, ClassifyPipelineTabComponent_Conditional_31_Template, 2, 0, "button", 26);
635
+ i0.ɵɵelementEnd();
636
+ i0.ɵɵelementStart(32, "div", 27);
637
+ i0.ɵɵconditionalCreate(33, ClassifyPipelineTabComponent_Conditional_33_Template, 4, 1, "div", 28);
638
+ i0.ɵɵrepeaterCreate(34, ClassifyPipelineTabComponent_For_35_Template, 12, 5, "div", 29, _forTrack1);
639
+ i0.ɵɵelementEnd();
640
+ i0.ɵɵconditionalCreate(36, ClassifyPipelineTabComponent_Conditional_36_Template, 7, 4, "div", 30);
641
+ i0.ɵɵelementEnd()();
642
+ i0.ɵɵelementStart(37, "div", 31)(38, "div", 32)(39, "div", 16)(40, "span", 17);
643
+ i0.ɵɵelement(41, "i", 33);
644
+ i0.ɵɵtext(42, " Sources");
645
+ i0.ɵɵelementEnd()();
646
+ i0.ɵɵelementStart(43, "div", 34);
647
+ i0.ɵɵrepeaterCreate(44, ClassifyPipelineTabComponent_For_45_Template, 9, 6, "div", 35, _forTrack2);
648
+ i0.ɵɵelementEnd()();
649
+ i0.ɵɵelementStart(46, "div", 36)(47, "div", 37);
650
+ i0.ɵɵelement(48, "i", 38);
651
+ i0.ɵɵtext(49, " Trending Tags");
652
+ i0.ɵɵelementEnd();
653
+ i0.ɵɵelementStart(50, "div", 39);
654
+ i0.ɵɵrepeaterCreate(51, ClassifyPipelineTabComponent_For_52_Template, 2, 6, "span", 40, _forTrack3);
655
+ i0.ɵɵelementEnd()();
656
+ i0.ɵɵelementStart(53, "div", 41)(54, "div", 42);
657
+ i0.ɵɵlistener("click", function ClassifyPipelineTabComponent_Template_div_click_54_listener() { return ctx.onToggleConfig(); });
658
+ i0.ɵɵelementStart(55, "span", 17);
659
+ i0.ɵɵelement(56, "i", 43);
660
+ i0.ɵɵtext(57, " Pipeline Settings");
661
+ i0.ɵɵelementEnd();
662
+ i0.ɵɵelement(58, "i", 44);
663
+ i0.ɵɵelementEnd();
664
+ i0.ɵɵconditionalCreate(59, ClassifyPipelineTabComponent_Conditional_59_Template, 50, 10, "div", 45);
665
+ i0.ɵɵelementEnd()()()()()();
666
+ } if (rf & 2) {
667
+ i0.ɵɵadvance(6);
668
+ i0.ɵɵproperty("Padding", false)("Flex", true);
669
+ i0.ɵɵadvance(4);
670
+ i0.ɵɵrepeater(ctx.KPIMetrics);
671
+ i0.ɵɵadvance(4);
672
+ i0.ɵɵconditional(ctx.PipelineStages.length > 0 && (ctx.IsRunning || ctx.IsPaused) ? 14 : -1);
673
+ i0.ɵɵadvance();
674
+ i0.ɵɵconditional(ctx.IsRunning || ctx.IsPaused ? 15 : -1);
675
+ i0.ɵɵadvance();
676
+ i0.ɵɵconditional(ctx.IsRunning && ctx.LiveRunDetailRows.length > 0 ? 16 : -1);
677
+ i0.ɵɵadvance(7);
678
+ i0.ɵɵproperty("title", ctx.FeedSortOrder === "newest" ? "Showing newest first" : "Showing oldest first");
679
+ i0.ɵɵadvance();
680
+ i0.ɵɵclassProp("fa-arrow-down-short-wide", ctx.FeedSortOrder === "newest")("fa-arrow-up-short-wide", ctx.FeedSortOrder === "oldest");
681
+ i0.ɵɵadvance();
682
+ i0.ɵɵtextInterpolate1(" ", ctx.FeedSortOrder === "newest" ? "Newest" : "Oldest", " ");
683
+ i0.ɵɵadvance(2);
684
+ i0.ɵɵtextInterpolate1("", ctx.FilteredFeedItems.length, " items");
685
+ i0.ɵɵadvance(3);
686
+ i0.ɵɵtwoWayProperty("ngModel", ctx.FeedSearchQuery);
687
+ i0.ɵɵadvance();
688
+ i0.ɵɵconditional(ctx.FeedSearchQuery ? 31 : -1);
689
+ i0.ɵɵadvance(2);
690
+ i0.ɵɵconditional(ctx.FilteredFeedItems.length === 0 ? 33 : -1);
691
+ i0.ɵɵadvance();
692
+ i0.ɵɵrepeater(ctx.PaginatedFeedItems);
693
+ i0.ɵɵadvance(2);
694
+ i0.ɵɵconditional(ctx.FeedTotalPages > 1 ? 36 : -1);
695
+ i0.ɵɵadvance(8);
696
+ i0.ɵɵrepeater(ctx.SourceMinis);
697
+ i0.ɵɵadvance(7);
698
+ i0.ɵɵrepeater(ctx.TrendingTags);
699
+ i0.ɵɵadvance(7);
700
+ i0.ɵɵclassProp("fa-chevron-down", !ctx.ShowPipelineConfig)("fa-chevron-up", ctx.ShowPipelineConfig);
701
+ i0.ɵɵadvance();
702
+ i0.ɵɵconditional(ctx.ShowPipelineConfig ? 59 : -1);
703
+ } }, dependencies: [i1.DefaultValueAccessor, i1.NumberValueAccessor, i1.RangeValueAccessor, i1.CheckboxControlValueAccessor, i1.NgControlStatus, i1.MinValidator, i1.MaxValidator, i1.NgModel, i2.MJButtonDirective, i2.MJPageHeaderInteriorComponent, i2.MJPageBodyInteriorComponent, i3.DecimalPipe], encapsulation: 2 });
704
+ }
705
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ClassifyPipelineTabComponent, [{
706
+ type: Component,
707
+ args: [{ standalone: false, selector: 'classify-pipeline-tab', template: "<mj-page-header-interior\n Title=\"Pipeline Monitor\"\n Subtitle=\"Real-time processing status and recent activity\">\n <div actions>\n <button mjButton variant=\"secondary\" size=\"sm\" (click)=\"onRefresh()\">\n <i class=\"fa-solid fa-arrows-rotate\"></i> <span class=\"mj-action-label\">Refresh</span>\n </button>\n </div>\n</mj-page-header-interior>\n\n<mj-page-body-interior [Padding]=\"false\" [Flex]=\"true\">\n<div class=\"at-main-area\">\n <div class=\"at-page-body\">\n <!-- KPIs -->\n <div class=\"at-kpi-strip\">\n @for (kpi of KPIMetrics; track kpi.Label) {\n <div class=\"at-kpi-card\">\n <div class=\"at-kpi-value\" [class.at-kpi-error-value]=\"kpi.Label === 'Errors' && kpi.Value > 0\">{{ kpi.Value | number }}</div>\n <div class=\"at-kpi-label\">{{ kpi.Label }}</div>\n @if (kpi.Trend) {\n <div class=\"at-kpi-trend\" [class.up]=\"kpi.TrendUp\">\n @if (kpi.TrendUp) { <i class=\"fa-solid fa-arrow-up\"></i> }\n {{ kpi.Trend }}\n </div>\n }\n </div>\n }\n </div>\n\n <div class=\"at-pipeline-layout\">\n <div class=\"at-pipeline-center\">\n <!-- Pipeline stages visualization (only during active run) -->\n @if (PipelineStages.length > 0 && (IsRunning || IsPaused)) {\n <div class=\"at-pipeline-stages\">\n @for (stage of PipelineStages; track stage.Name; let last = $last) {\n <div class=\"at-pipeline-stage\"\n [class.stage-idle]=\"stage.Status === 'idle'\"\n [class.stage-active]=\"stage.Status === 'active'\"\n [class.stage-complete]=\"stage.Status === 'complete'\">\n <div class=\"at-pipeline-stage-icon\">\n @if (stage.Status === 'active') {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n } @else if (stage.Status === 'complete') {\n <i class=\"fa-solid fa-check\"></i>\n } @else {\n <i [class]=\"stage.Icon\"></i>\n }\n </div>\n <div class=\"at-pipeline-stage-name\">{{ stage.Name }}</div>\n </div>\n @if (!last) {\n <div class=\"at-stage-connector\"\n [class.connector-complete]=\"stage.Status === 'complete'\">\n </div>\n }\n }\n </div>\n }\n\n <!-- Progress bar (visible during run or paused) -->\n @if (IsRunning || IsPaused) {\n <div class=\"at-progress-section\">\n <div class=\"at-progress-header\">\n <span class=\"at-progress-stage-label\">{{ RunStage }}</span>\n <span class=\"at-progress-pct\">{{ RunProgress | number:'1.0-0' }}%</span>\n </div>\n <div class=\"at-progress-bar\"><div class=\"at-progress-fill\" [style.width.%]=\"RunProgress\" [class.at-progress-fill-paused]=\"IsPaused\"></div></div>\n @if (RunCurrentItem) {\n <div class=\"at-progress-current\">{{ RunCurrentItem }}</div>\n }\n <div class=\"at-pipeline-controls\">\n @if (IsRunning && !IsPaused) {\n <button class=\"at-action-btn at-secondary-btn\" (click)=\"onPause()\" [disabled]=\"!CurrentProcessRunID\">\n <i class=\"fa-solid fa-pause\"></i> Pause\n </button>\n }\n @if (IsPaused) {\n <button class=\"at-action-btn at-primary-btn\" (click)=\"onResume()\">\n <i class=\"fa-solid fa-play\"></i> Resume\n </button>\n }\n <button class=\"at-action-btn at-danger-btn\" (click)=\"onCancel()\">\n <i class=\"fa-solid fa-stop\"></i> Cancel\n </button>\n </div>\n </div>\n }\n\n <!-- D2: Live Per-Source Progress (visible during run) -->\n @if (IsRunning && LiveRunDetailRows.length > 0) {\n <div class=\"at-card\" style=\"margin-bottom: 12px;\">\n <div class=\"at-card-header\">\n <span class=\"at-card-title\"><i class=\"fa-solid fa-list-check\"></i> Per-Source Progress</span>\n <button class=\"at-action-btn at-secondary-btn\" style=\"font-size: 11px; padding: 3px 8px;\" (click)=\"onLoadLiveRunDetails()\">\n <i class=\"fa-solid fa-arrows-rotate\"></i>\n </button>\n </div>\n <div class=\"at-card-body\" style=\"max-height: 200px; overflow-y: auto;\">\n <table class=\"at-run-table\">\n <thead>\n <tr>\n <th>Source</th>\n <th>Status</th>\n <th>Items</th>\n <th>Tagged</th>\n <th>Vectorized</th>\n <th>Errors</th>\n </tr>\n </thead>\n <tbody>\n @for (row of LiveRunDetailRows; track row.SourceName) {\n <tr>\n <td class=\"at-run-source-name\">{{ row.SourceName }}</td>\n <td>\n <span class=\"at-run-status-badge\" [class]=\"row.StatusClass\">\n @if (row.StatusClass === 'running') {\n <i class=\"fa-solid fa-spinner fa-spin\" style=\"font-size: 0.55rem\"></i>\n }\n {{ row.Status }}\n </span>\n </td>\n <td>{{ row.ItemsProcessed }}</td>\n <td>{{ row.ItemsTagged }}</td>\n <td>{{ row.ItemsVectorized }}</td>\n <td [class.run-error-text]=\"row.ErrorCount > 0\">{{ row.ErrorCount }}</td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n </div>\n }\n\n <!-- Recent Processing Feed -->\n <div class=\"at-card at-feed-card\">\n <div class=\"at-card-header\">\n <span class=\"at-card-title\"><i class=\"fa-solid fa-bolt\"></i> Recent Processing</span>\n <div class=\"at-feed-header-actions\">\n <button class=\"at-feed-sort-btn\" (click)=\"ToggleFeedSort()\"\n [title]=\"FeedSortOrder === 'newest' ? 'Showing newest first' : 'Showing oldest first'\">\n <i class=\"fa-solid\" [class.fa-arrow-down-short-wide]=\"FeedSortOrder === 'newest'\"\n [class.fa-arrow-up-short-wide]=\"FeedSortOrder === 'oldest'\"></i>\n {{ FeedSortOrder === 'newest' ? 'Newest' : 'Oldest' }}\n </button>\n <span class=\"at-feed-count\">{{ FilteredFeedItems.length }} items</span>\n </div>\n </div>\n <!-- Feed search bar -->\n <div class=\"at-feed-search-bar\">\n <i class=\"fa-solid fa-search at-feed-search-icon\"></i>\n <input type=\"text\"\n class=\"mj-input at-feed-search-input\"\n placeholder=\"Search items, sources, or tags...\"\n [(ngModel)]=\"FeedSearchQuery\"\n (input)=\"OnFeedSearchChange()\">\n @if (FeedSearchQuery) {\n <button class=\"at-feed-search-clear\" (click)=\"FeedSearchQuery = ''; OnFeedSearchChange()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n </div>\n <div class=\"at-card-body at-feed-scroll-body\">\n @if (FilteredFeedItems.length === 0) {\n <div class=\"at-empty-state\">\n <i class=\"fa-solid fa-inbox\"></i>\n @if (FeedSearchQuery) {\n <p>No items match \"{{ FeedSearchQuery }}\"</p>\n } @else {\n <p>No processed items yet.</p>\n }\n </div>\n }\n @for (item of PaginatedFeedItems; track item.Name + item.SourceName + item.TimeAgo) {\n <div class=\"at-feed-item at-feed-item-clickable\" (click)=\"onFeedItemClick(GetFeedItemOriginalIndex(item))\">\n <div class=\"at-feed-status-dot\" [class]=\"item.Status\"></div>\n <div class=\"at-feed-item-content\">\n <span class=\"at-feed-item-name\">{{ item.Name }}</span>\n <span class=\"at-feed-item-source-label\">{{ item.SourceName }}</span>\n </div>\n <div class=\"at-feed-item-tags\">\n @for (tag of item.Tags; track tag) {\n <span class=\"at-feed-tag\">{{ tag }}</span>\n }\n </div>\n <span class=\"at-feed-item-time\">{{ item.TimeAgo }}</span>\n </div>\n }\n </div>\n <!-- Feed pagination -->\n @if (FeedTotalPages > 1) {\n <div class=\"at-feed-pagination\">\n <button class=\"at-action-btn at-secondary-btn\" [disabled]=\"FeedPage === 0\" (click)=\"FeedPrevPage()\">\n <i class=\"fa-solid fa-chevron-left\"></i>\n </button>\n <span class=\"at-feed-pagination-label\">Page {{ FeedPage + 1 }} of {{ FeedTotalPages }}</span>\n <button class=\"at-action-btn at-secondary-btn\" [disabled]=\"FeedPage >= FeedTotalPages - 1\" (click)=\"FeedNextPage()\">\n <i class=\"fa-solid fa-chevron-right\"></i>\n </button>\n </div>\n }\n </div>\n </div>\n\n <!-- Right sidebar -->\n <div class=\"at-pipeline-right\">\n <!-- Sources Quick List -->\n <div class=\"at-card\">\n <div class=\"at-card-header\">\n <span class=\"at-card-title\"><i class=\"fa-solid fa-database\"></i> Sources</span>\n </div>\n <div class=\"at-card-body\">\n @for (source of SourceMinis; track source.ID) {\n <div class=\"at-source-mini\">\n <div class=\"at-source-mini-icon\"><i [class]=\"source.Icon\"></i></div>\n <div class=\"at-source-mini-info\">\n <div class=\"at-source-mini-name\">{{ source.Name }}</div>\n <div class=\"at-source-mini-meta\">{{ source.Meta }}</div>\n </div>\n <div class=\"at-source-mini-status\" [class]=\"source.StatusClass\"></div>\n </div>\n }\n </div>\n </div>\n <!-- Trending Tags -->\n <div class=\"at-card at-tag-cloud-card\">\n <div class=\"at-card-title\" style=\"margin-bottom: 10px;\"><i class=\"fa-solid fa-chart-bar\"></i> Trending Tags</div>\n <div class=\"at-tag-cloud\">\n @for (tag of TrendingTags; track tag.Tag) {\n <span class=\"at-tag-pill\" [class]=\"tag.SizeClass\"\n [style.opacity]=\"0.4 + tag.AvgWeight * 0.6\"\n [title]=\"'Weight: ' + tag.AvgWeight.toFixed(2)\">{{ tag.Tag }}</span>\n }\n </div>\n </div>\n\n <!-- Pipeline Settings Widget -->\n <div class=\"at-card at-config-card\">\n <div class=\"at-card-header\" (click)=\"onToggleConfig()\" style=\"cursor:pointer\">\n <span class=\"at-card-title\"><i class=\"fa-solid fa-sliders\"></i> Pipeline Settings</span>\n <i class=\"fa-solid\" [class.fa-chevron-down]=\"!ShowPipelineConfig\" [class.fa-chevron-up]=\"ShowPipelineConfig\" style=\"font-size:0.7rem; color:var(--mj-text-muted)\"></i>\n </div>\n @if (ShowPipelineConfig) {\n <div class=\"at-card-body at-config-body\">\n <div class=\"at-config-row\">\n <label class=\"at-config-label\">Batch Size</label>\n <div class=\"at-config-control\">\n <input type=\"number\" class=\"at-config-input\" min=\"10\" max=\"1000\" step=\"10\"\n [(ngModel)]=\"PipelineConfig.Pipeline!.BatchSize\">\n </div>\n </div>\n <div class=\"at-config-row\">\n <label class=\"at-config-label\">Throttle (ms)</label>\n <div class=\"at-config-control\">\n <input type=\"range\" class=\"at-config-slider\" min=\"0\" max=\"5000\" step=\"100\"\n [(ngModel)]=\"PipelineConfig.Pipeline!.DelayBetweenBatchesMs\">\n <span class=\"at-config-value\">{{ PipelineConfig.Pipeline!.DelayBetweenBatchesMs }}ms</span>\n </div>\n </div>\n <div class=\"at-config-row\">\n <label class=\"at-config-label\">Error Tolerance</label>\n <div class=\"at-config-control\">\n <input type=\"range\" class=\"at-config-slider\" min=\"5\" max=\"50\" step=\"5\"\n [(ngModel)]=\"PipelineConfig.Pipeline!.ErrorThresholdPercent\">\n <span class=\"at-config-value\">{{ PipelineConfig.Pipeline!.ErrorThresholdPercent }}%</span>\n </div>\n </div>\n <div class=\"at-config-row\">\n <label class=\"at-config-label\">Auto-resume</label>\n <div class=\"at-config-control\">\n <label class=\"at-config-toggle\">\n <input type=\"checkbox\" [(ngModel)]=\"PipelineConfig.Pipeline!.ResumeFromLastBatch\">\n <span class=\"at-toggle-track\"><span class=\"at-toggle-thumb\"></span></span>\n </label>\n </div>\n </div>\n <div class=\"at-config-divider\"></div>\n <div class=\"at-config-section-label\">LLM Rate Limits</div>\n <div class=\"at-config-row\">\n <label class=\"at-config-label\">Requests/min</label>\n <div class=\"at-config-control\">\n <input type=\"number\" class=\"at-config-input\" min=\"1\" max=\"500\"\n [(ngModel)]=\"PipelineConfig.RateLimits!.LLM!.RequestsPerMinute\">\n </div>\n </div>\n <div class=\"at-config-row\">\n <label class=\"at-config-label\">Tokens/min</label>\n <div class=\"at-config-control\">\n <input type=\"number\" class=\"at-config-input\" min=\"1000\" max=\"5000000\" step=\"10000\"\n [(ngModel)]=\"PipelineConfig.RateLimits!.LLM!.TokensPerMinute\">\n <span class=\"at-config-value\">{{ formatTokenCount(PipelineConfig.RateLimits!.LLM!.TokensPerMinute ?? 0) }}</span>\n </div>\n </div>\n <div class=\"at-config-section-label\">Embedding Rate Limits</div>\n <div class=\"at-config-row\">\n <label class=\"at-config-label\">Requests/min</label>\n <div class=\"at-config-control\">\n <input type=\"number\" class=\"at-config-input\" min=\"1\" max=\"1000\"\n [(ngModel)]=\"PipelineConfig.RateLimits!.Embedding!.RequestsPerMinute\">\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n</div>\n</mj-page-body-interior>\n", styles: ["/*\n * Pipeline Monitor tab styles.\n *\n * The host (AutotaggingPipelineResourceComponent) uses ViewEncapsulation.None,\n * so its `.at-*` rules are global and already style this tab's markup while it\n * renders inside the host shell. Tab-specific rules would live here as the\n * shared CSS is partitioned during the host-slim step.\n */\n"] }]
708
+ }], null, { KPIMetrics: [{
709
+ type: Input
710
+ }], PipelineStages: [{
711
+ type: Input
712
+ }], FeedItems: [{
713
+ type: Input
714
+ }], SourceMinis: [{
715
+ type: Input
716
+ }], TrendingTags: [{
717
+ type: Input
718
+ }], LiveRunDetailRows: [{
719
+ type: Input
720
+ }], IsRunning: [{
721
+ type: Input
722
+ }], IsPaused: [{
723
+ type: Input
724
+ }], RunProgress: [{
725
+ type: Input
726
+ }], RunStage: [{
727
+ type: Input
728
+ }], RunCurrentItem: [{
729
+ type: Input
730
+ }], CurrentProcessRunID: [{
731
+ type: Input
732
+ }], PipelineConfig: [{
733
+ type: Input
734
+ }], ShowPipelineConfig: [{
735
+ type: Input
736
+ }], RefreshRequested: [{
737
+ type: Output
738
+ }], PauseRequested: [{
739
+ type: Output
740
+ }], ResumeRequested: [{
741
+ type: Output
742
+ }], CancelRequested: [{
743
+ type: Output
744
+ }], LoadLiveRunDetailsRequested: [{
745
+ type: Output
746
+ }], FeedItemClicked: [{
747
+ type: Output
748
+ }], ConfigToggled: [{
749
+ type: Output
750
+ }] }); })();
751
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ClassifyPipelineTabComponent, { className: "ClassifyPipelineTabComponent", filePath: "src/AI/components/autotagging/tabs/pipeline-tab.component.ts", lineNumber: 34 }); })();
752
+ //# sourceMappingURL=pipeline-tab.component.js.map