@memberjunction/ng-dashboards 5.30.1 → 5.31.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 (424) hide show
  1. package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
  2. package/dist/AI/components/agents/agent-configuration.component.js +4 -4
  3. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  4. package/dist/AI/components/agents/agent-editor.component.d.ts +2 -1
  5. package/dist/AI/components/agents/agent-editor.component.d.ts.map +1 -1
  6. package/dist/AI/components/agents/agent-editor.component.js +8 -6
  7. package/dist/AI/components/agents/agent-editor.component.js.map +1 -1
  8. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts +2 -1
  9. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts.map +1 -1
  10. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js +6 -5
  11. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js.map +1 -1
  12. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts +2 -1
  13. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts.map +1 -1
  14. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js +6 -5
  15. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js.map +1 -1
  16. package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts +2 -1
  17. package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts.map +1 -1
  18. package/dist/AI/components/analytics/error-analysis/error-analysis.component.js +6 -5
  19. package/dist/AI/components/analytics/error-analysis/error-analysis.component.js.map +1 -1
  20. package/dist/AI/components/analytics/executive-summary/executive-summary.component.d.ts +2 -1
  21. package/dist/AI/components/analytics/executive-summary/executive-summary.component.d.ts.map +1 -1
  22. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js +7 -4
  23. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js.map +1 -1
  24. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts +3 -2
  25. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts.map +1 -1
  26. package/dist/AI/components/analytics/model-performance/model-performance.component.js +10 -6
  27. package/dist/AI/components/analytics/model-performance/model-performance.component.js.map +1 -1
  28. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts +2 -1
  29. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts.map +1 -1
  30. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js +6 -5
  31. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js.map +1 -1
  32. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts +2 -1
  33. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts.map +1 -1
  34. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js +6 -5
  35. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js.map +1 -1
  36. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
  37. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +55 -52
  38. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  39. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +15 -15
  40. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
  41. package/dist/AI/components/execution-monitoring.component.d.ts.map +1 -1
  42. package/dist/AI/components/execution-monitoring.component.js +4 -3
  43. package/dist/AI/components/execution-monitoring.component.js.map +1 -1
  44. package/dist/AI/components/models/model-management.component.js +2 -2
  45. package/dist/AI/components/models/model-management.component.js.map +1 -1
  46. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.d.ts +2 -1
  47. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.d.ts.map +1 -1
  48. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js +10 -8
  49. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js.map +1 -1
  50. package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -1
  51. package/dist/AI/components/prompts/prompt-management.component.js +2 -2
  52. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  53. package/dist/AI/components/prompts/prompt-version-control.component.d.ts +2 -1
  54. package/dist/AI/components/prompts/prompt-version-control.component.d.ts.map +1 -1
  55. package/dist/AI/components/prompts/prompt-version-control.component.js +13 -10
  56. package/dist/AI/components/prompts/prompt-version-control.component.js.map +1 -1
  57. package/dist/AI/components/requests/agent-requests-resource.component.js +1 -1
  58. package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
  59. package/dist/AI/components/tags/tags-resource.component.d.ts +1181 -0
  60. package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -0
  61. package/dist/AI/components/tags/tags-resource.component.js +7487 -0
  62. package/dist/AI/components/tags/tags-resource.component.js.map +1 -0
  63. package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
  64. package/dist/AI/components/vectors/vector-management-resource.component.js +25 -21
  65. package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
  66. package/dist/AI/index.d.ts +1 -0
  67. package/dist/AI/index.d.ts.map +1 -1
  68. package/dist/AI/index.js +5 -0
  69. package/dist/AI/index.js.map +1 -1
  70. package/dist/AI/services/ai-instrumentation.service.d.ts +5 -0
  71. package/dist/AI/services/ai-instrumentation.service.d.ts.map +1 -1
  72. package/dist/AI/services/ai-instrumentation.service.js +12 -4
  73. package/dist/AI/services/ai-instrumentation.service.js.map +1 -1
  74. package/dist/APIKeys/api-applications-panel.component.d.ts +3 -2
  75. package/dist/APIKeys/api-applications-panel.component.d.ts.map +1 -1
  76. package/dist/APIKeys/api-applications-panel.component.js +5 -4
  77. package/dist/APIKeys/api-applications-panel.component.js.map +1 -1
  78. package/dist/APIKeys/api-key-create-dialog.component.d.ts +2 -1
  79. package/dist/APIKeys/api-key-create-dialog.component.d.ts.map +1 -1
  80. package/dist/APIKeys/api-key-create-dialog.component.js +5 -5
  81. package/dist/APIKeys/api-key-create-dialog.component.js.map +1 -1
  82. package/dist/APIKeys/api-key-edit-panel.component.d.ts +3 -2
  83. package/dist/APIKeys/api-key-edit-panel.component.d.ts.map +1 -1
  84. package/dist/APIKeys/api-key-edit-panel.component.js +11 -10
  85. package/dist/APIKeys/api-key-edit-panel.component.js.map +1 -1
  86. package/dist/APIKeys/api-key-list.component.d.ts +2 -1
  87. package/dist/APIKeys/api-key-list.component.d.ts.map +1 -1
  88. package/dist/APIKeys/api-key-list.component.js +6 -5
  89. package/dist/APIKeys/api-key-list.component.js.map +1 -1
  90. package/dist/APIKeys/api-keys-resource.component.d.ts.map +1 -1
  91. package/dist/APIKeys/api-keys-resource.component.js +4 -4
  92. package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
  93. package/dist/APIKeys/api-scopes-panel.component.d.ts +3 -2
  94. package/dist/APIKeys/api-scopes-panel.component.d.ts.map +1 -1
  95. package/dist/APIKeys/api-scopes-panel.component.js +8 -6
  96. package/dist/APIKeys/api-scopes-panel.component.js.map +1 -1
  97. package/dist/APIKeys/api-usage-panel.component.d.ts +3 -2
  98. package/dist/APIKeys/api-usage-panel.component.d.ts.map +1 -1
  99. package/dist/APIKeys/api-usage-panel.component.js +10 -8
  100. package/dist/APIKeys/api-usage-panel.component.js.map +1 -1
  101. package/dist/Actions/components/actions-list-view.component.d.ts +2 -1
  102. package/dist/Actions/components/actions-list-view.component.d.ts.map +1 -1
  103. package/dist/Actions/components/actions-list-view.component.js +6 -5
  104. package/dist/Actions/components/actions-list-view.component.js.map +1 -1
  105. package/dist/Actions/components/actions-overview.component.js +2 -2
  106. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  107. package/dist/Actions/components/categories-list-view.component.d.ts +2 -1
  108. package/dist/Actions/components/categories-list-view.component.d.ts.map +1 -1
  109. package/dist/Actions/components/categories-list-view.component.js +6 -5
  110. package/dist/Actions/components/categories-list-view.component.js.map +1 -1
  111. package/dist/Actions/components/execution-monitoring.component.js +1 -1
  112. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  113. package/dist/Actions/components/explorer/action-card.component.d.ts +2 -1
  114. package/dist/Actions/components/explorer/action-card.component.d.ts.map +1 -1
  115. package/dist/Actions/components/explorer/action-card.component.js +6 -4
  116. package/dist/Actions/components/explorer/action-card.component.js.map +1 -1
  117. package/dist/Actions/components/explorer/action-explorer.component.js +1 -1
  118. package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
  119. package/dist/Actions/components/explorer/new-action-panel.component.d.ts +2 -1
  120. package/dist/Actions/components/explorer/new-action-panel.component.d.ts.map +1 -1
  121. package/dist/Actions/components/explorer/new-action-panel.component.js +7 -5
  122. package/dist/Actions/components/explorer/new-action-panel.component.js.map +1 -1
  123. package/dist/Actions/components/explorer/new-category-panel.component.d.ts +2 -1
  124. package/dist/Actions/components/explorer/new-category-panel.component.d.ts.map +1 -1
  125. package/dist/Actions/components/explorer/new-category-panel.component.js +7 -5
  126. package/dist/Actions/components/explorer/new-category-panel.component.js.map +1 -1
  127. package/dist/ApplicationRoles/application-roles-resource.component.js +4 -4
  128. package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
  129. package/dist/Communication/communication-logs-resource.component.js +1 -1
  130. package/dist/Communication/communication-logs-resource.component.js.map +1 -1
  131. package/dist/Communication/communication-monitor-resource.component.js +1 -1
  132. package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
  133. package/dist/Communication/communication-providers-resource.component.js +3 -3
  134. package/dist/Communication/communication-providers-resource.component.js.map +1 -1
  135. package/dist/Communication/communication-runs-resource.component.js +1 -1
  136. package/dist/Communication/communication-runs-resource.component.js.map +1 -1
  137. package/dist/Communication/communication-templates-resource.component.js +3 -3
  138. package/dist/Communication/communication-templates-resource.component.js.map +1 -1
  139. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts +1 -1
  140. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts.map +1 -1
  141. package/dist/ComponentStudio/component-studio-dashboard.component.js +5 -4
  142. package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
  143. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.d.ts +2 -1
  144. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.d.ts.map +1 -1
  145. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js +6 -4
  146. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js.map +1 -1
  147. package/dist/ComponentStudio/components/artifact-load-dialog.component.d.ts +11 -2
  148. package/dist/ComponentStudio/components/artifact-load-dialog.component.d.ts.map +1 -1
  149. package/dist/ComponentStudio/components/artifact-load-dialog.component.js +61 -27
  150. package/dist/ComponentStudio/components/artifact-load-dialog.component.js.map +1 -1
  151. package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts +4 -2
  152. package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts.map +1 -1
  153. package/dist/ComponentStudio/components/artifact-selection-dialog.component.js +19 -11
  154. package/dist/ComponentStudio/components/artifact-selection-dialog.component.js.map +1 -1
  155. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.d.ts +4 -2
  156. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.d.ts.map +1 -1
  157. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js +11 -3
  158. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js.map +1 -1
  159. package/dist/ComponentStudio/components/workspace/component-preview.component.d.ts +10 -1
  160. package/dist/ComponentStudio/components/workspace/component-preview.component.d.ts.map +1 -1
  161. package/dist/ComponentStudio/components/workspace/component-preview.component.js +18 -9
  162. package/dist/ComponentStudio/components/workspace/component-preview.component.js.map +1 -1
  163. package/dist/ComponentStudio/services/component-studio-state.service.d.ts +11 -1
  164. package/dist/ComponentStudio/services/component-studio-state.service.d.ts.map +1 -1
  165. package/dist/ComponentStudio/services/component-studio-state.service.js +23 -3
  166. package/dist/ComponentStudio/services/component-studio-state.service.js.map +1 -1
  167. package/dist/ComponentStudio/services/component-version.service.d.ts +6 -1
  168. package/dist/ComponentStudio/services/component-version.service.d.ts.map +1 -1
  169. package/dist/ComponentStudio/services/component-version.service.js +16 -6
  170. package/dist/ComponentStudio/services/component-version.service.js.map +1 -1
  171. package/dist/Credentials/components/credentials-audit-resource.component.js +1 -1
  172. package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
  173. package/dist/Credentials/components/credentials-categories-resource.component.d.ts.map +1 -1
  174. package/dist/Credentials/components/credentials-categories-resource.component.js +3 -3
  175. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  176. package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
  177. package/dist/Credentials/components/credentials-list-resource.component.js +3 -3
  178. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  179. package/dist/Credentials/components/credentials-overview-resource.component.d.ts.map +1 -1
  180. package/dist/Credentials/components/credentials-overview-resource.component.js +3 -3
  181. package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
  182. package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
  183. package/dist/Credentials/components/credentials-types-resource.component.js +3 -3
  184. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  185. package/dist/Credentials/credentials-dashboard.component.js +1 -1
  186. package/dist/Credentials/credentials-dashboard.component.js.map +1 -1
  187. package/dist/DashboardBrowser/dashboard-browser-resource.component.js +13 -13
  188. package/dist/DashboardBrowser/dashboard-browser-resource.component.js.map +1 -1
  189. package/dist/DashboardBrowser/dashboard-share-adapter.d.ts +4 -0
  190. package/dist/DashboardBrowser/dashboard-share-adapter.d.ts.map +1 -1
  191. package/dist/DashboardBrowser/dashboard-share-adapter.js +5 -2
  192. package/dist/DashboardBrowser/dashboard-share-adapter.js.map +1 -1
  193. package/dist/DashboardBrowser/dashboard-share-dialog.component.d.ts +3 -1
  194. package/dist/DashboardBrowser/dashboard-share-dialog.component.d.ts.map +1 -1
  195. package/dist/DashboardBrowser/dashboard-share-dialog.component.js +9 -4
  196. package/dist/DashboardBrowser/dashboard-share-dialog.component.js.map +1 -1
  197. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts +3 -2
  198. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts.map +1 -1
  199. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js +7 -6
  200. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js.map +1 -1
  201. package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts +3 -2
  202. package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts.map +1 -1
  203. package/dist/DataExplorer/components/view-selector/view-selector.component.js +6 -5
  204. package/dist/DataExplorer/components/view-selector/view-selector.component.js.map +1 -1
  205. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
  206. package/dist/DataExplorer/data-explorer-dashboard.component.js +10 -9
  207. package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
  208. package/dist/DataExplorer/services/explorer-state.service.d.ts +6 -1
  209. package/dist/DataExplorer/services/explorer-state.service.d.ts.map +1 -1
  210. package/dist/DataExplorer/services/explorer-state.service.js +15 -5
  211. package/dist/DataExplorer/services/explorer-state.service.js.map +1 -1
  212. package/dist/DatabaseDesigner/components/create-wizard/database-create-wizard.component.d.ts +64 -0
  213. package/dist/DatabaseDesigner/components/create-wizard/database-create-wizard.component.d.ts.map +1 -0
  214. package/dist/DatabaseDesigner/components/create-wizard/database-create-wizard.component.js +400 -0
  215. package/dist/DatabaseDesigner/components/create-wizard/database-create-wizard.component.js.map +1 -0
  216. package/dist/DatabaseDesigner/components/create-wizard/steps/step-basics.component.d.ts +42 -0
  217. package/dist/DatabaseDesigner/components/create-wizard/steps/step-basics.component.d.ts.map +1 -0
  218. package/dist/DatabaseDesigner/components/create-wizard/steps/step-basics.component.js +232 -0
  219. package/dist/DatabaseDesigner/components/create-wizard/steps/step-basics.component.js.map +1 -0
  220. package/dist/DatabaseDesigner/components/create-wizard/steps/step-fields.component.d.ts +14 -0
  221. package/dist/DatabaseDesigner/components/create-wizard/steps/step-fields.component.d.ts.map +1 -0
  222. package/dist/DatabaseDesigner/components/create-wizard/steps/step-fields.component.js +38 -0
  223. package/dist/DatabaseDesigner/components/create-wizard/steps/step-fields.component.js.map +1 -0
  224. package/dist/DatabaseDesigner/components/create-wizard/steps/step-pipeline.component.d.ts +24 -0
  225. package/dist/DatabaseDesigner/components/create-wizard/steps/step-pipeline.component.d.ts.map +1 -0
  226. package/dist/DatabaseDesigner/components/create-wizard/steps/step-pipeline.component.js +77 -0
  227. package/dist/DatabaseDesigner/components/create-wizard/steps/step-pipeline.component.js.map +1 -0
  228. package/dist/DatabaseDesigner/components/create-wizard/steps/step-relationships.component.d.ts +88 -0
  229. package/dist/DatabaseDesigner/components/create-wizard/steps/step-relationships.component.d.ts.map +1 -0
  230. package/dist/DatabaseDesigner/components/create-wizard/steps/step-relationships.component.js +404 -0
  231. package/dist/DatabaseDesigner/components/create-wizard/steps/step-relationships.component.js.map +1 -0
  232. package/dist/DatabaseDesigner/components/create-wizard/steps/step-review.component.d.ts +12 -0
  233. package/dist/DatabaseDesigner/components/create-wizard/steps/step-review.component.d.ts.map +1 -0
  234. package/dist/DatabaseDesigner/components/create-wizard/steps/step-review.component.js +116 -0
  235. package/dist/DatabaseDesigner/components/create-wizard/steps/step-review.component.js.map +1 -0
  236. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts +55 -0
  237. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts.map +1 -0
  238. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +204 -0
  239. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js.map +1 -0
  240. package/dist/DatabaseDesigner/components/entity-list.component.d.ts +61 -0
  241. package/dist/DatabaseDesigner/components/entity-list.component.d.ts.map +1 -0
  242. package/dist/DatabaseDesigner/components/entity-list.component.js +485 -0
  243. package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -0
  244. package/dist/DatabaseDesigner/components/modify/database-modify.component.d.ts +52 -0
  245. package/dist/DatabaseDesigner/components/modify/database-modify.component.d.ts.map +1 -0
  246. package/dist/DatabaseDesigner/components/modify/database-modify.component.js +320 -0
  247. package/dist/DatabaseDesigner/components/modify/database-modify.component.js.map +1 -0
  248. package/dist/DatabaseDesigner/components/shared/database-preview-pane.component.d.ts +79 -0
  249. package/dist/DatabaseDesigner/components/shared/database-preview-pane.component.d.ts.map +1 -0
  250. package/dist/DatabaseDesigner/components/shared/database-preview-pane.component.js +378 -0
  251. package/dist/DatabaseDesigner/components/shared/database-preview-pane.component.js.map +1 -0
  252. package/dist/DatabaseDesigner/components/shared/entity-fields-grid.component.d.ts +85 -0
  253. package/dist/DatabaseDesigner/components/shared/entity-fields-grid.component.d.ts.map +1 -0
  254. package/dist/DatabaseDesigner/components/shared/entity-fields-grid.component.js +429 -0
  255. package/dist/DatabaseDesigner/components/shared/entity-fields-grid.component.js.map +1 -0
  256. package/dist/DatabaseDesigner/components/shared/entity-pipeline-panel.component.d.ts +58 -0
  257. package/dist/DatabaseDesigner/components/shared/entity-pipeline-panel.component.d.ts.map +1 -0
  258. package/dist/DatabaseDesigner/components/shared/entity-pipeline-panel.component.js +333 -0
  259. package/dist/DatabaseDesigner/components/shared/entity-pipeline-panel.component.js.map +1 -0
  260. package/dist/DatabaseDesigner/components/shared/entity-review-panel.component.d.ts +36 -0
  261. package/dist/DatabaseDesigner/components/shared/entity-review-panel.component.d.ts.map +1 -0
  262. package/dist/DatabaseDesigner/components/shared/entity-review-panel.component.js +345 -0
  263. package/dist/DatabaseDesigner/components/shared/entity-review-panel.component.js.map +1 -0
  264. package/dist/DatabaseDesigner/components/shared/wizard-step-indicator.component.d.ts +13 -0
  265. package/dist/DatabaseDesigner/components/shared/wizard-step-indicator.component.d.ts.map +1 -0
  266. package/dist/DatabaseDesigner/components/shared/wizard-step-indicator.component.js +81 -0
  267. package/dist/DatabaseDesigner/components/shared/wizard-step-indicator.component.js.map +1 -0
  268. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +30 -0
  269. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -0
  270. package/dist/DatabaseDesigner/database-designer-dashboards.module.js +131 -0
  271. package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -0
  272. package/dist/DatabaseDesigner/database-designer-erd.d.ts +19 -0
  273. package/dist/DatabaseDesigner/database-designer-erd.d.ts.map +1 -0
  274. package/dist/DatabaseDesigner/database-designer-erd.js +84 -0
  275. package/dist/DatabaseDesigner/database-designer-erd.js.map +1 -0
  276. package/dist/DatabaseDesigner/database-designer.types.d.ts +167 -0
  277. package/dist/DatabaseDesigner/database-designer.types.d.ts.map +1 -0
  278. package/dist/DatabaseDesigner/database-designer.types.js +26 -0
  279. package/dist/DatabaseDesigner/database-designer.types.js.map +1 -0
  280. package/dist/DatabaseDesigner/services/database-designer.engine.d.ts +94 -0
  281. package/dist/DatabaseDesigner/services/database-designer.engine.d.ts.map +1 -0
  282. package/dist/DatabaseDesigner/services/database-designer.engine.js +392 -0
  283. package/dist/DatabaseDesigner/services/database-designer.engine.js.map +1 -0
  284. package/dist/DatabaseDesigner/services/database-designer.service.d.ts +78 -0
  285. package/dist/DatabaseDesigner/services/database-designer.service.d.ts.map +1 -0
  286. package/dist/DatabaseDesigner/services/database-designer.service.js +273 -0
  287. package/dist/DatabaseDesigner/services/database-designer.service.js.map +1 -0
  288. package/dist/DatabaseDesigner/services/entity-wizard-state.service.d.ts +79 -0
  289. package/dist/DatabaseDesigner/services/entity-wizard-state.service.d.ts.map +1 -0
  290. package/dist/DatabaseDesigner/services/entity-wizard-state.service.js +204 -0
  291. package/dist/DatabaseDesigner/services/entity-wizard-state.service.js.map +1 -0
  292. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts.map +1 -1
  293. package/dist/EntityAdmin/entity-admin-dashboard.component.js +2 -2
  294. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  295. package/dist/Home/action-pin-config-dialog.component.d.ts +2 -1
  296. package/dist/Home/action-pin-config-dialog.component.d.ts.map +1 -1
  297. package/dist/Home/action-pin-config-dialog.component.js +6 -4
  298. package/dist/Home/action-pin-config-dialog.component.js.map +1 -1
  299. package/dist/Home/action-pin-runner-dialog.component.d.ts +2 -1
  300. package/dist/Home/action-pin-runner-dialog.component.d.ts.map +1 -1
  301. package/dist/Home/action-pin-runner-dialog.component.js +5 -4
  302. package/dist/Home/action-pin-runner-dialog.component.js.map +1 -1
  303. package/dist/Home/home-application.d.ts.map +1 -1
  304. package/dist/Home/home-application.js +10 -12
  305. package/dist/Home/home-application.js.map +1 -1
  306. package/dist/Home/home-dashboard.component.d.ts.map +1 -1
  307. package/dist/Home/home-dashboard.component.js +3 -3
  308. package/dist/Home/home-dashboard.component.js.map +1 -1
  309. package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
  310. package/dist/Integration/components/activity/activity.component.js +1 -0
  311. package/dist/Integration/components/activity/activity.component.js.map +1 -1
  312. package/dist/Integration/components/connections/connections.component.d.ts.map +1 -1
  313. package/dist/Integration/components/connections/connections.component.js +11 -10
  314. package/dist/Integration/components/connections/connections.component.js.map +1 -1
  315. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.d.ts.map +1 -1
  316. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js +2 -2
  317. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js.map +1 -1
  318. package/dist/Integration/components/overview/overview.component.d.ts.map +1 -1
  319. package/dist/Integration/components/overview/overview.component.js +1 -0
  320. package/dist/Integration/components/overview/overview.component.js.map +1 -1
  321. package/dist/Integration/components/pipelines/pipelines.component.d.ts.map +1 -1
  322. package/dist/Integration/components/pipelines/pipelines.component.js +1 -0
  323. package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
  324. package/dist/Integration/components/schedules/schedules.component.d.ts.map +1 -1
  325. package/dist/Integration/components/schedules/schedules.component.js +5 -4
  326. package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
  327. package/dist/Integration/services/integration-data.service.d.ts +5 -1
  328. package/dist/Integration/services/integration-data.service.d.ts.map +1 -1
  329. package/dist/Integration/services/integration-data.service.js +27 -19
  330. package/dist/Integration/services/integration-data.service.js.map +1 -1
  331. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +6 -6
  332. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
  333. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts.map +1 -1
  334. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +8 -6
  335. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
  336. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +6 -6
  337. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  338. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +3 -3
  339. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
  340. package/dist/Lists/components/lists-browse-resource.component.js +6 -6
  341. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  342. package/dist/Lists/components/lists-categories-resource.component.js +4 -4
  343. package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
  344. package/dist/Lists/components/lists-my-lists-resource.component.js +6 -6
  345. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  346. package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
  347. package/dist/Lists/components/lists-operations-resource.component.js +11 -10
  348. package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
  349. package/dist/Lists/services/list-set-operations.service.d.ts +5 -0
  350. package/dist/Lists/services/list-set-operations.service.d.ts.map +1 -1
  351. package/dist/Lists/services/list-set-operations.service.js +11 -3
  352. package/dist/Lists/services/list-set-operations.service.js.map +1 -1
  353. package/dist/MCP/components/mcp-connection-dialog.component.d.ts +2 -1
  354. package/dist/MCP/components/mcp-connection-dialog.component.d.ts.map +1 -1
  355. package/dist/MCP/components/mcp-connection-dialog.component.js +8 -6
  356. package/dist/MCP/components/mcp-connection-dialog.component.js.map +1 -1
  357. package/dist/MCP/components/mcp-server-dialog.component.d.ts +2 -1
  358. package/dist/MCP/components/mcp-server-dialog.component.d.ts.map +1 -1
  359. package/dist/MCP/components/mcp-server-dialog.component.js +7 -5
  360. package/dist/MCP/components/mcp-server-dialog.component.js.map +1 -1
  361. package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
  362. package/dist/MCP/mcp-dashboard.component.js +12 -12
  363. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  364. package/dist/Permissions/permissions-shared.d.ts +3 -3
  365. package/dist/Permissions/permissions-shared.d.ts.map +1 -1
  366. package/dist/Permissions/permissions-shared.js +5 -5
  367. package/dist/Permissions/permissions-shared.js.map +1 -1
  368. package/dist/Permissions/resource-access-resource.component.js +1 -1
  369. package/dist/Permissions/resource-access-resource.component.js.map +1 -1
  370. package/dist/Permissions/user-access-resource.component.js +1 -2
  371. package/dist/Permissions/user-access-resource.component.js.map +1 -1
  372. package/dist/QueryBrowser/query-browser-resource.component.d.ts.map +1 -1
  373. package/dist/QueryBrowser/query-browser-resource.component.js +2 -2
  374. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  375. package/dist/Scheduling/scheduling-dashboard.component.d.ts.map +1 -1
  376. package/dist/Scheduling/scheduling-dashboard.component.js +1 -0
  377. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  378. package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts +5 -0
  379. package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts.map +1 -1
  380. package/dist/Scheduling/services/scheduling-instrumentation.service.js +21 -13
  381. package/dist/Scheduling/services/scheduling-instrumentation.service.js.map +1 -1
  382. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
  383. package/dist/SystemDiagnostics/system-diagnostics.component.js +2 -2
  384. package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
  385. package/dist/Testing/components/testing-explorer.component.d.ts +2 -1
  386. package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
  387. package/dist/Testing/components/testing-explorer.component.js +9 -7
  388. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  389. package/dist/Testing/services/testing-instrumentation.service.d.ts +6 -1
  390. package/dist/Testing/services/testing-instrumentation.service.d.ts.map +1 -1
  391. package/dist/Testing/services/testing-instrumentation.service.js +21 -11
  392. package/dist/Testing/services/testing-instrumentation.service.js.map +1 -1
  393. package/dist/Testing/testing-dashboard.component.d.ts +3 -1
  394. package/dist/Testing/testing-dashboard.component.d.ts.map +1 -1
  395. package/dist/Testing/testing-dashboard.component.js +15 -11
  396. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  397. package/dist/VersionHistory/components/diff-resource.component.d.ts.map +1 -1
  398. package/dist/VersionHistory/components/diff-resource.component.js +5 -5
  399. package/dist/VersionHistory/components/diff-resource.component.js.map +1 -1
  400. package/dist/VersionHistory/components/graph-resource.component.d.ts.map +1 -1
  401. package/dist/VersionHistory/components/graph-resource.component.js +1 -2
  402. package/dist/VersionHistory/components/graph-resource.component.js.map +1 -1
  403. package/dist/VersionHistory/components/labels-resource.component.d.ts.map +1 -1
  404. package/dist/VersionHistory/components/labels-resource.component.js +3 -3
  405. package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
  406. package/dist/VersionHistory/components/restore-resource.component.js +1 -1
  407. package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
  408. package/dist/ai-dashboards.module.d.ts +35 -34
  409. package/dist/ai-dashboards.module.d.ts.map +1 -1
  410. package/dist/ai-dashboards.module.js +6 -0
  411. package/dist/ai-dashboards.module.js.map +1 -1
  412. package/dist/module.d.ts +13 -12
  413. package/dist/module.d.ts.map +1 -1
  414. package/dist/module.js +7 -0
  415. package/dist/module.js.map +1 -1
  416. package/dist/public-api.d.ts +3 -1
  417. package/dist/public-api.d.ts.map +1 -1
  418. package/dist/public-api.js +3 -1
  419. package/dist/public-api.js.map +1 -1
  420. package/dist/shared/entity-field-display.d.ts +4 -3
  421. package/dist/shared/entity-field-display.d.ts.map +1 -1
  422. package/dist/shared/entity-field-display.js +9 -9
  423. package/dist/shared/entity-field-display.js.map +1 -1
  424. package/package.json +52 -51
@@ -1 +1 @@
1
- {"version":3,"file":"knowledge-config-resource.component.js","sourceRoot":"","sources":["../../../../src/KnowledgeHub/components/config/knowledge-config-resource.component.ts","../../../../src/KnowledgeHub/components/config/knowledge-config-resource.component.html"],"names":[],"mappings":"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","sourcesContent":["/**\n * @fileoverview Knowledge Hub Configuration Resource Component\n *\n * Full configuration dashboard for Knowledge Hub infrastructure:\n * Vector DB provider management, vector index CRUD, embedding model selection,\n * pipeline settings, full-text index config, and scoring thresholds.\n */\n\nimport { Component, ChangeDetectorRef, OnDestroy, AfterViewInit, inject } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { Metadata, RunView } from '@memberjunction/core';\nimport { ResourceData, MJVectorDatabaseEntity, MJVectorIndexEntity, MJEntityDocumentEntity, MJCredentialEntity, KnowledgeHubMetadataEngine } from '@memberjunction/core-entities';\nimport { RegisterClass, UUIDsEqual } from '@memberjunction/global';\nimport { BaseResourceComponent, NavigationService } from '@memberjunction/ng-shared';\nimport { MJNotificationService } from '@memberjunction/ng-notifications';\nimport { AIEngineBase } from '@memberjunction/ai-engine-base';\n\n/** Configuration section definition */\ninterface ConfigSection {\n ID: string;\n Label: string;\n Icon: string;\n Description: string;\n}\n\n/** Pipeline configuration settings */\ninterface PipelineConfig {\n AutotagOnIngest: boolean;\n VectorizeOnIngest: boolean;\n DefaultBatchSize: number;\n MaxConcurrentJobs: number;\n}\n\n/** Threshold settings */\ninterface ThresholdConfig {\n DuplicateAbsolute: number;\n DuplicatePotential: number;\n SearchRelevance: number;\n AutotagConfidence: number;\n}\n\n/** Vector DB provider display record */\ninterface VectorDBRecord {\n ID: string;\n Name: string;\n ClassKey: string;\n Description: string;\n CredentialID: string | null;\n CredentialName: string | null;\n}\n\n/** Vector index display record */\ninterface VectorIndexRecord {\n ID: string;\n Name: string;\n EmbeddingModel: string;\n EmbeddingModelID: string;\n VectorDatabase: string;\n VectorDatabaseID: string;\n}\n\n/** Embedding model display record */\ninterface EmbeddingModelRecord {\n ID: string;\n Name: string;\n}\n\n/** Full-text searchable entity */\ninterface FTSEntityRecord {\n EntityName: string;\n IndexedFields: string[];\n TitleField: string;\n SnippetField: string;\n Enabled: boolean;\n}\n\n@RegisterClass(BaseResourceComponent, 'KnowledgeConfigResource')\n@Component({\n standalone: false,\n selector: 'app-knowledge-config-resource',\n templateUrl: './knowledge-config-resource.component.html',\n styleUrls: ['./knowledge-config-resource.component.css']\n})\nexport class KnowledgeConfigResourceComponent extends BaseResourceComponent implements AfterViewInit, OnDestroy {\n private cdr = inject(ChangeDetectorRef);\n protected override navigationService = inject(NavigationService);\n protected override destroy$ = new Subject<void>();\n\n async GetResourceDisplayName(_data: ResourceData): Promise<string> {\n return 'Configuration';\n }\n\n async GetResourceIconClass(_data: ResourceData): Promise<string> {\n return 'fa-solid fa-gear';\n }\n\n // --- Navigation ---\n public Sections: ConfigSection[] = [\n { ID: 'pipeline', Label: 'Pipeline', Icon: 'fa-solid fa-diagram-project', Description: 'Configure the knowledge ingestion pipeline stages' },\n { ID: 'vectordb', Label: 'Vector Database', Icon: 'fa-solid fa-database', Description: 'Manage vector database connections and indexes' },\n { ID: 'fulltext', Label: 'Full-Text Indexes', Icon: 'fa-solid fa-text-width', Description: 'Configure SQL full-text search indexes' },\n { ID: 'embedding', Label: 'Embedding Models', Icon: 'fa-solid fa-microchip', Description: 'Select and configure embedding models' },\n { ID: 'thresholds', Label: 'Thresholds', Icon: 'fa-solid fa-sliders', Description: 'Set scoring thresholds for search and deduplication' },\n { ID: 'scheduling', Label: 'Scheduling', Icon: 'fa-solid fa-clock', Description: 'Manage automated pipeline schedules' },\n ];\n\n public ActiveSection = 'pipeline';\n public IsLoading = true;\n public IsSaving = false;\n public HasUnsavedChanges = false;\n\n // --- Pipeline ---\n public PipelineSettings: PipelineConfig = {\n AutotagOnIngest: true,\n VectorizeOnIngest: true,\n DefaultBatchSize: 100,\n MaxConcurrentJobs: 3\n };\n\n // --- Thresholds ---\n public ThresholdSettings: ThresholdConfig = {\n DuplicateAbsolute: 0.95,\n DuplicatePotential: 0.75,\n SearchRelevance: 0.3,\n AutotagConfidence: 0.7\n };\n\n // --- Vector DB Providers ---\n public VectorDBProviders: VectorDBRecord[] = [];\n public get HasVectorDBProvider(): boolean { return this.VectorDBProviders.length > 0; }\n\n // --- Vector Indexes ---\n public VectorIndexes: VectorIndexRecord[] = [];\n public get HasVectorIndex(): boolean { return this.VectorIndexes.length > 0; }\n\n // --- Embedding Models ---\n public EmbeddingModels: EmbeddingModelRecord[] = [];\n public get HasEmbeddingModel(): boolean { return this.EmbeddingModels.length > 0; }\n public get EmbeddingModelName(): string { return this.EmbeddingModels.length > 0 ? this.EmbeddingModels[0].Name : ''; }\n\n // --- Credentials (for vector DB provider binding) ---\n public AvailableCredentials: { ID: string; Name: string }[] = [];\n public IsSavingCredential = false;\n\n // --- Entity Documents (for persisting thresholds) ---\n private entityDocuments: MJEntityDocumentEntity[] = [];\n\n // --- Setup Progress ---\n public get SetupStepsCompleted(): number {\n let count = 0;\n if (this.HasVectorDBProvider) count++;\n if (this.HasEmbeddingModel) count++;\n if (this.HasVectorIndex) count++;\n return count;\n }\n public get VectorSetupComplete(): boolean {\n return this.HasVectorDBProvider && this.HasVectorIndex && this.HasEmbeddingModel;\n }\n\n // --- Full-Text Search Entities ---\n public FTSEntities: FTSEntityRecord[] = [];\n public IsLoadingFTSEntities = false;\n public FTSFilterText = '';\n\n public get EnabledFTSCount(): number {\n return this.FTSEntities.filter(e => e.Enabled).length;\n }\n\n public get FilteredFTSEntities(): FTSEntityRecord[] {\n if (!this.FTSFilterText.trim()) return this.FTSEntities;\n const filter = this.FTSFilterText.toLowerCase();\n return this.FTSEntities.filter(e => e.EntityName.toLowerCase().includes(filter));\n }\n\n // --- Create Index Form ---\n public ShowCreateIndexForm = false;\n public IsCreatingIndex = false;\n public NewIndexName = '';\n public NewIndexVectorDBID = '';\n public NewIndexEmbeddingModelID = '';\n\n ngAfterViewInit(): void {\n this.loadConfiguration();\n this.navigationService.SetAgentContext(this, {\n ActiveSection: this.ActiveSection,\n });\n this.NotifyLoadComplete();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n // ================================================================\n // Public Methods\n // ================================================================\n\n public SelectSection(sectionId: string): void {\n this.ActiveSection = sectionId;\n this.cdr.detectChanges();\n }\n\n public OnSettingChanged(): void {\n this.HasUnsavedChanges = true;\n this.cdr.detectChanges();\n }\n\n public async SaveConfiguration(): Promise<void> {\n this.IsSaving = true;\n this.cdr.detectChanges();\n try {\n await this.persistThresholdsToEntityDocuments();\n this.HasUnsavedChanges = false;\n MJNotificationService.Instance.CreateSimpleNotification('Configuration saved', 'success', 2000);\n } catch (error) {\n const msg = error instanceof Error ? error.message : String(error);\n console.error('[KnowledgeConfig] Save failed:', msg);\n MJNotificationService.Instance.CreateSimpleNotification(`Save failed: ${msg}`, 'error', 5000);\n } finally {\n this.IsSaving = false;\n this.cdr.detectChanges();\n }\n }\n\n public ResetConfiguration(): void {\n this.loadConfiguration();\n this.HasUnsavedChanges = false;\n this.cdr.detectChanges();\n }\n\n /** Handle toggling an FTS entity */\n public OnFTSEntityToggled(entity: FTSEntityRecord): void {\n this.HasUnsavedChanges = true;\n this.cdr.detectChanges();\n }\n\n public FormatThreshold(value: number): string {\n return `${Math.round(value * 100)}%`;\n }\n\n /** Open the create index inline form */\n public OpenCreateIndexForm(): void {\n this.ShowCreateIndexForm = true;\n this.NewIndexName = 'mj-knowledge-index';\n this.NewIndexVectorDBID = this.VectorDBProviders.length > 0 ? this.VectorDBProviders[0].ID : '';\n this.NewIndexEmbeddingModelID = this.EmbeddingModels.length > 0 ? this.EmbeddingModels[0].ID : '';\n this.cdr.detectChanges();\n }\n\n /** Cancel creating an index */\n public CancelCreateIndex(): void {\n this.ShowCreateIndexForm = false;\n this.cdr.detectChanges();\n }\n\n /** Create a new vector index */\n public async CreateIndex(): Promise<void> {\n if (!this.NewIndexName.trim() || !this.NewIndexVectorDBID || !this.NewIndexEmbeddingModelID) {\n MJNotificationService.Instance.CreateSimpleNotification('Please fill in all fields', 'warning', 3000);\n return;\n }\n\n this.IsCreatingIndex = true;\n this.cdr.detectChanges();\n\n try {\n const md = new Metadata();\n const index = await md.GetEntityObject<MJVectorIndexEntity>('MJ: Vector Indexes');\n index.NewRecord();\n index.Name = this.NewIndexName.trim();\n index.VectorDatabaseID = this.NewIndexVectorDBID;\n index.EmbeddingModelID = this.NewIndexEmbeddingModelID;\n index.Description = `Knowledge Hub vector index created ${new Date().toLocaleDateString()}`;\n\n const saved = await index.Save();\n if (saved) {\n MJNotificationService.Instance.CreateSimpleNotification(\n `Vector index \"${this.NewIndexName}\" created successfully`,\n 'success', 3000\n );\n this.ShowCreateIndexForm = false;\n await this.loadConfiguration();\n } else {\n const msg = index.LatestResult?.CompleteMessage || 'Unknown error';\n console.error('[KnowledgeConfig] Failed to create index:', msg);\n MJNotificationService.Instance.CreateSimpleNotification(`Failed to create index: ${msg}`, 'error', 5000);\n }\n } catch (error) {\n const msg = error instanceof Error ? error.message : String(error);\n console.error('[KnowledgeConfig] Error creating index:', msg);\n MJNotificationService.Instance.CreateSimpleNotification(`Error: ${msg}`, 'error', 5000);\n } finally {\n this.IsCreatingIndex = false;\n this.cdr.detectChanges();\n }\n }\n\n /** Delete a vector index */\n public async DeleteIndex(indexId: string): Promise<void> {\n const idx = this.VectorIndexes.find(i => UUIDsEqual(i.ID, indexId));\n if (!idx) return;\n\n try {\n const md = new Metadata();\n const entity = await md.GetEntityObject<MJVectorIndexEntity>('MJ: Vector Indexes');\n const loaded = await entity.Load(indexId);\n if (!loaded) {\n MJNotificationService.Instance.CreateSimpleNotification(\n `Could not load vector index \"${idx.Name}\"`, 'error', 3000\n );\n return;\n }\n const deleted = await entity.Delete();\n if (deleted) {\n MJNotificationService.Instance.CreateSimpleNotification(\n `Index \"${idx.Name}\" deleted`, 'success', 2000\n );\n await this.loadConfiguration();\n } else {\n const msg = entity.LatestResult?.CompleteMessage || 'Unknown error';\n console.error('[KnowledgeConfig] Delete failed:', msg);\n MJNotificationService.Instance.CreateSimpleNotification(\n `Delete failed: ${msg}`, 'error', 5000\n );\n }\n } catch (error) {\n const msg = error instanceof Error ? error.message : String(error);\n console.error('[KnowledgeConfig] Error deleting index:', msg);\n MJNotificationService.Instance.CreateSimpleNotification(`Error: ${msg}`, 'error', 5000);\n }\n }\n\n /** Update the credential linked to a vector database provider */\n public async SaveProviderCredential(provider: VectorDBRecord): Promise<void> {\n this.IsSavingCredential = true;\n this.cdr.detectChanges();\n\n try {\n const md = new Metadata();\n const entity = await md.GetEntityObject<MJVectorDatabaseEntity>('MJ: Vector Databases');\n const loaded = await entity.Load(provider.ID);\n if (!loaded) {\n MJNotificationService.Instance.CreateSimpleNotification(\n `Could not load vector database \"${provider.Name}\"`, 'error', 3000\n );\n return;\n }\n\n entity.CredentialID = provider.CredentialID || null;\n const saved = await entity.Save();\n if (saved) {\n provider.CredentialName = this.AvailableCredentials.find(c => UUIDsEqual(c.ID, provider.CredentialID))?.Name ?? null;\n MJNotificationService.Instance.CreateSimpleNotification(\n provider.CredentialID\n ? `Credential linked to \"${provider.Name}\"`\n : `Credential removed from \"${provider.Name}\"`,\n 'success', 2000\n );\n } else {\n const msg = entity.LatestResult?.CompleteMessage ?? 'Unknown error';\n console.error('[KnowledgeConfig] Save credential failed:', msg);\n MJNotificationService.Instance.CreateSimpleNotification(`Save failed: ${msg}`, 'error', 5000);\n }\n } catch (error) {\n const msg = error instanceof Error ? error.message : String(error);\n console.error('[KnowledgeConfig] Error saving credential:', msg);\n MJNotificationService.Instance.CreateSimpleNotification(`Error: ${msg}`, 'error', 5000);\n } finally {\n this.IsSavingCredential = false;\n this.cdr.detectChanges();\n }\n }\n\n // ================================================================\n // Private Methods\n // ================================================================\n\n private async loadConfiguration(): Promise<void> {\n this.IsLoading = true;\n this.cdr.detectChanges();\n\n try {\n // Use KnowledgeHubMetadataEngine for cached vector DBs, indexes, and entity docs\n const engine = KnowledgeHubMetadataEngine.Instance;\n await engine.Config(false);\n\n this.loadVectorDBProvidersFromEngine(AIEngineBase.Instance.VectorDatabases);\n this.loadVectorIndexesFromEngine(engine.VectorIndexes);\n this.loadEntityDocumentsAndThresholds(engine.GetActiveEntityDocuments());\n\n // AI Models and Credentials come from different domains — fetch via RunView\n const rv = new RunView();\n const [modelsResult, credentialsResult] = await rv.RunViews([\n { EntityName: 'MJ: AI Models', ResultType: 'simple' },\n { EntityName: 'MJ: Credentials', ExtraFilter: 'IsActive = 1', Fields: ['ID', 'Name'], ResultType: 'simple' }\n ]);\n this.loadEmbeddingModels(modelsResult.Success ? modelsResult.Results : []);\n this.AvailableCredentials = (credentialsResult.Success ? credentialsResult.Results : [])\n .map((c: Record<string, unknown>) => ({ ID: String(c['ID']), Name: String(c['Name']) }));\n } catch (error) {\n console.error('[KnowledgeConfig] Error loading configuration:', error);\n } finally {\n this.IsLoading = false;\n this.cdr.detectChanges();\n }\n\n // Load FTS entities in background (doesn't block main config)\n this.loadFTSEntities();\n }\n\n private async loadFTSEntities(): Promise<void> {\n this.IsLoadingFTSEntities = true;\n this.cdr.detectChanges();\n\n try {\n const md = new Metadata();\n const allEntities = md.Entities;\n const ftsEntities: FTSEntityRecord[] = [];\n\n for (const entity of allEntities) {\n const textFields = entity.Fields.filter(\n (f: { Name: string; Type: string; MaxLength: number; IsPrimaryKey: boolean }) =>\n !f.IsPrimaryKey &&\n !f.Name.startsWith('__mj') &&\n (f.Type.toLowerCase().includes('varchar') ||\n f.Type.toLowerCase().includes('text') ||\n f.Type.toLowerCase() === 'ntext') &&\n f.MaxLength !== 1\n );\n\n if (textFields.length === 0) continue;\n\n const preferredTitleNames = ['Name', 'Title', 'Subject', 'Label'];\n const preferredSnippetNames = ['Description', 'Summary', 'Body', 'Content', 'Text', 'Notes'];\n\n const titleField = textFields.find((f: { Name: string }) => preferredTitleNames.includes(f.Name))?.Name\n || textFields[0]?.Name || 'Name';\n const snippetField = textFields.find((f: { Name: string }) =>\n preferredSnippetNames.includes(f.Name) && f.Name !== titleField\n )?.Name || titleField;\n\n ftsEntities.push({\n EntityName: entity.Name,\n IndexedFields: textFields.slice(0, 4).map((f: { Name: string }) => f.Name),\n TitleField: titleField,\n SnippetField: snippetField,\n Enabled: true,\n });\n }\n\n ftsEntities.sort((a, b) => a.EntityName.localeCompare(b.EntityName));\n this.FTSEntities = ftsEntities;\n } catch (error) {\n console.error('[KnowledgeConfig] Error loading FTS entities:', error);\n } finally {\n this.IsLoadingFTSEntities = false;\n this.cdr.detectChanges();\n }\n }\n\n private loadVectorDBProvidersFromEngine(dbs: MJVectorDatabaseEntity[]): void {\n this.VectorDBProviders = dbs.map(db => ({\n ID: db.ID,\n Name: db.Name,\n ClassKey: db.ClassKey || '',\n Description: db.Description || '',\n CredentialID: db.CredentialID,\n CredentialName: db.Credential ?? null\n }));\n }\n\n private loadVectorIndexesFromEngine(indexes: MJVectorIndexEntity[]): void {\n this.VectorIndexes = indexes.map(vi => ({\n ID: vi.ID,\n Name: vi.Name || 'Unnamed Index',\n EmbeddingModel: vi.EmbeddingModel || '',\n EmbeddingModelID: vi.EmbeddingModelID || '',\n VectorDatabase: vi.VectorDatabase || '',\n VectorDatabaseID: vi.VectorDatabaseID || ''\n }));\n }\n\n /** Load entity documents and seed threshold settings from the first document's values */\n private loadEntityDocumentsAndThresholds(docs: MJEntityDocumentEntity[]): void {\n this.entityDocuments = docs;\n if (docs.length > 0) {\n // Use the first entity document's thresholds as the canonical values\n const doc = docs[0];\n this.ThresholdSettings.DuplicatePotential = doc.PotentialMatchThreshold;\n this.ThresholdSettings.DuplicateAbsolute = doc.AbsoluteMatchThreshold;\n }\n }\n\n /** Persist threshold settings back to all active entity documents */\n private async persistThresholdsToEntityDocuments(): Promise<void> {\n if (this.entityDocuments.length === 0) {\n return; // No entity documents to update\n }\n\n for (const doc of this.entityDocuments) {\n doc.PotentialMatchThreshold = this.ThresholdSettings.DuplicatePotential;\n doc.AbsoluteMatchThreshold = this.ThresholdSettings.DuplicateAbsolute;\n const saved = await doc.Save();\n if (!saved) {\n const msg = doc.LatestResult?.CompleteMessage || 'Unknown error';\n throw new Error(`Failed to save entity document \"${doc.Name}\": ${msg}`);\n }\n }\n }\n\n private loadEmbeddingModels(records: Record<string, unknown>[]): void {\n this.EmbeddingModels = records\n .filter(m =>\n String(m['AIModelType'] || '').toLowerCase().includes('embedding') ||\n String(m['Name'] || '').toLowerCase().includes('embedding') ||\n String(m['Name'] || '').toLowerCase().includes('embed')\n )\n .map(m => ({\n ID: String(m['ID']),\n Name: String(m['Name'])\n }));\n }\n}\n\n/** Tree-shaking prevention */\nexport function LoadKnowledgeConfigResource(): void {\n // Prevents tree-shaking\n}\n","@if (IsLoading) {\n <div class=\"config-loading\">\n <mj-loading text=\"Loading configuration...\" size=\"medium\"></mj-loading>\n </div>\n} @else {\n <div class=\"config-layout\">\n <!-- Left Navigation -->\n <nav class=\"config-nav\">\n <div class=\"config-nav-header\">\n <i class=\"fa-solid fa-cogs\"></i>\n <span>Configuration</span>\n </div>\n @for (section of Sections; track section.ID) {\n <button\n class=\"config-nav-item\"\n [class.config-nav-item-active]=\"ActiveSection === section.ID\"\n (click)=\"SelectSection(section.ID)\"\n >\n <i [class]=\"section.Icon\"></i>\n <span>{{ section.Label }}</span>\n </button>\n }\n </nav>\n\n <!-- Content Area -->\n <div class=\"config-content\">\n <!-- Pipeline Settings -->\n @if (ActiveSection === 'pipeline') {\n <div class=\"config-section\">\n <h2 class=\"config-section-title\">Pipeline Settings</h2>\n <p class=\"config-section-desc\">Configure how the Knowledge Pipeline processes incoming content.</p>\n\n <div class=\"config-group\">\n <label class=\"config-toggle-row\">\n <div class=\"config-toggle-info\">\n <span class=\"config-label\">Auto-tag on Ingest</span>\n <span class=\"config-hint\">Automatically run autotagging when new content is ingested</span>\n </div>\n <input type=\"checkbox\" [(ngModel)]=\"PipelineSettings.AutotagOnIngest\" (change)=\"OnSettingChanged()\" class=\"config-checkbox\" />\n </label>\n\n <label class=\"config-toggle-row\">\n <div class=\"config-toggle-info\">\n <span class=\"config-label\">Vectorize on Ingest</span>\n <span class=\"config-hint\">Automatically create embeddings for new content</span>\n </div>\n <input type=\"checkbox\" [(ngModel)]=\"PipelineSettings.VectorizeOnIngest\" (change)=\"OnSettingChanged()\" class=\"config-checkbox\" />\n </label>\n\n <div class=\"config-field-row\">\n <div class=\"config-field-info\">\n <span class=\"config-label\">Default Batch Size</span>\n <span class=\"config-hint\">Number of items processed per batch</span>\n </div>\n <input type=\"number\" [(ngModel)]=\"PipelineSettings.DefaultBatchSize\" (input)=\"OnSettingChanged()\" class=\"config-input config-input-number\" min=\"10\" max=\"1000\" />\n </div>\n\n <div class=\"config-field-row\">\n <div class=\"config-field-info\">\n <span class=\"config-label\">Max Concurrent Jobs</span>\n <span class=\"config-hint\">Maximum number of pipeline jobs running at once</span>\n </div>\n <input type=\"number\" [(ngModel)]=\"PipelineSettings.MaxConcurrentJobs\" (input)=\"OnSettingChanged()\" class=\"config-input config-input-number\" min=\"1\" max=\"10\" />\n </div>\n </div>\n </div>\n }\n\n <!-- Vector Database Settings -->\n @if (ActiveSection === 'vectordb') {\n <div class=\"config-section\">\n <h2 class=\"config-section-title\">Vector Database</h2>\n <p class=\"config-section-desc\">Manage the shared vector index and database connection.</p>\n\n <!-- Setup Progress -->\n <div class=\"setup-progress\">\n <div class=\"setup-progress-header\">\n <span class=\"setup-progress-label\">Setup Progress</span>\n <span class=\"setup-progress-count\">{{ SetupStepsCompleted }} of 3 complete</span>\n </div>\n <div class=\"setup-progress-bar\">\n <div class=\"setup-progress-fill\" [style.width.%]=\"(SetupStepsCompleted / 3) * 100\"></div>\n </div>\n </div>\n\n <!-- Step 1: Providers -->\n <div class=\"setup-step\" [class.setup-step-complete]=\"HasVectorDBProvider\" [class.setup-step-pending]=\"!HasVectorDBProvider\">\n <div class=\"setup-step-header\">\n <div class=\"setup-step-indicator\">\n @if (HasVectorDBProvider) {\n <i class=\"fa-solid fa-circle-check\"></i>\n } @else {\n <span class=\"setup-step-number\">1</span>\n }\n </div>\n <div class=\"setup-step-info\">\n <span class=\"setup-step-title\">Vector Database Providers</span>\n @if (HasVectorDBProvider) {\n <span class=\"setup-step-status\">{{ VectorDBProviders.length }} provider(s) registered</span>\n } @else {\n <span class=\"setup-step-status\">No providers registered. Add a vector database provider (e.g., Pinecone, Weaviate) via the admin console.</span>\n }\n </div>\n </div>\n @if (HasVectorDBProvider) {\n <div class=\"setup-step-detail\">\n @for (provider of VectorDBProviders; track provider.ID) {\n <div class=\"provider-card\">\n <div class=\"provider-icon\">\n <i class=\"fa-solid fa-database\"></i>\n </div>\n <div class=\"provider-info\">\n <span class=\"provider-name\">{{ provider.Name }}</span>\n <span class=\"provider-class\">{{ provider.ClassKey }}</span>\n </div>\n <span class=\"config-status-badge config-status-active\">\n <i class=\"fa-solid fa-circle-check\"></i> Active\n </span>\n </div>\n <div class=\"provider-credential-row\">\n <label class=\"provider-credential-label\">\n <i class=\"fa-solid fa-key\"></i> API Credential\n </label>\n <div class=\"provider-credential-picker\">\n <select class=\"provider-credential-select\"\n [(ngModel)]=\"provider.CredentialID\"\n (change)=\"SaveProviderCredential(provider)\"\n [disabled]=\"IsSavingCredential\">\n <option [ngValue]=\"null\">None (use environment variable)</option>\n @for (cred of AvailableCredentials; track cred.ID) {\n <option [ngValue]=\"cred.ID\">{{ cred.Name }}</option>\n }\n </select>\n @if (IsSavingCredential) {\n <i class=\"fa-solid fa-spinner fa-spin provider-credential-spinner\"></i>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Step 2: Embedding Model -->\n <div class=\"setup-step\" [class.setup-step-complete]=\"HasEmbeddingModel\" [class.setup-step-pending]=\"!HasEmbeddingModel\">\n <div class=\"setup-step-header\">\n <div class=\"setup-step-indicator\">\n @if (HasEmbeddingModel) {\n <i class=\"fa-solid fa-circle-check\"></i>\n } @else {\n <span class=\"setup-step-number\">2</span>\n }\n </div>\n <div class=\"setup-step-info\">\n <span class=\"setup-step-title\">Embedding Models</span>\n @if (HasEmbeddingModel) {\n <span class=\"setup-step-status\">{{ EmbeddingModels.length }} model(s) available</span>\n } @else {\n <span class=\"setup-step-status\">No embedding models found. Configure at least one in the AI app > Models tab.</span>\n }\n </div>\n </div>\n @if (HasEmbeddingModel) {\n <div class=\"setup-step-detail\">\n <div class=\"config-tag-list\">\n @for (model of EmbeddingModels; track model.ID) {\n <span class=\"config-tag\">{{ model.Name }}</span>\n }\n </div>\n </div>\n }\n </div>\n\n <!-- Step 3: Vector Indexes -->\n <div class=\"setup-step\" [class.setup-step-complete]=\"HasVectorIndex\" [class.setup-step-pending]=\"!HasVectorIndex\">\n <div class=\"setup-step-header\">\n <div class=\"setup-step-indicator\">\n @if (HasVectorIndex) {\n <i class=\"fa-solid fa-circle-check\"></i>\n } @else {\n <span class=\"setup-step-number\">3</span>\n }\n </div>\n <div class=\"setup-step-info\">\n <span class=\"setup-step-title\">Vector Indexes</span>\n @if (HasVectorIndex) {\n <span class=\"setup-step-status\">{{ VectorIndexes.length }} index(es) configured</span>\n } @else if (HasVectorDBProvider && HasEmbeddingModel) {\n <span class=\"setup-step-status\">No indexes yet — create one below.</span>\n } @else {\n <span class=\"setup-step-status\">Complete steps 1 and 2 first.</span>\n }\n </div>\n @if (HasVectorDBProvider && HasEmbeddingModel && !ShowCreateIndexForm) {\n <button class=\"setup-step-action\" (click)=\"OpenCreateIndexForm()\">\n <i class=\"fa-solid fa-plus\"></i> Create Index\n </button>\n }\n </div>\n\n <!-- Existing Indexes -->\n @if (HasVectorIndex) {\n <div class=\"setup-step-detail\">\n @for (idx of VectorIndexes; track idx.ID) {\n <div class=\"index-card\">\n <div class=\"index-icon\">\n <i class=\"fa-solid fa-cubes\"></i>\n </div>\n <div class=\"index-info\">\n <span class=\"index-name\">{{ idx.Name }}</span>\n <span class=\"index-meta\">\n <i class=\"fa-solid fa-database\"></i> {{ idx.VectorDatabase }}\n &nbsp;·&nbsp;\n <i class=\"fa-solid fa-microchip\"></i> {{ idx.EmbeddingModel }}\n </span>\n </div>\n <div class=\"index-actions\">\n <span class=\"config-status-badge config-status-active\">\n <i class=\"fa-solid fa-circle-check\"></i> Active\n </span>\n <button class=\"index-delete-btn\" (click)=\"DeleteIndex(idx.ID)\" title=\"Delete index\">\n <i class=\"fa-solid fa-trash-can\"></i>\n </button>\n </div>\n </div>\n }\n </div>\n }\n\n <!-- Create Index Form -->\n @if (ShowCreateIndexForm) {\n <div class=\"create-index-form\">\n <h4 class=\"create-index-title\">\n <i class=\"fa-solid fa-plus-circle\"></i> Create New Vector Index\n </h4>\n <div class=\"create-index-fields\">\n <div class=\"create-index-field\">\n <label class=\"create-index-label\">Index Name</label>\n <input type=\"text\"\n class=\"config-input\"\n [(ngModel)]=\"NewIndexName\"\n placeholder=\"e.g., mj-knowledge-index\" />\n </div>\n <div class=\"create-index-field\">\n <label class=\"create-index-label\">Vector Database</label>\n <select class=\"config-select\" [(ngModel)]=\"NewIndexVectorDBID\">\n @for (db of VectorDBProviders; track db.ID) {\n <option [value]=\"db.ID\">{{ db.Name }}</option>\n }\n </select>\n </div>\n <div class=\"create-index-field\">\n <label class=\"create-index-label\">Embedding Model</label>\n <select class=\"config-select\" [(ngModel)]=\"NewIndexEmbeddingModelID\">\n @for (model of EmbeddingModels; track model.ID) {\n <option [value]=\"model.ID\">{{ model.Name }}</option>\n }\n </select>\n </div>\n </div>\n <div class=\"create-index-actions\">\n <button class=\"create-index-submit\" (click)=\"CreateIndex()\" [disabled]=\"IsCreatingIndex\">\n @if (IsCreatingIndex) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Creating...\n } @else {\n <i class=\"fa-solid fa-plus\"></i> Create Index\n }\n </button>\n <button class=\"create-index-cancel\" (click)=\"CancelCreateIndex()\" [disabled]=\"IsCreatingIndex\">\n Cancel\n </button>\n </div>\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Full-Text Indexes -->\n @if (ActiveSection === 'fulltext') {\n <div class=\"config-section\">\n <h2 class=\"config-section-title\">Full-Text Search Entities</h2>\n <p class=\"config-section-desc\">Configure which entities are included in full-text search. Entities with text fields (Name, Description, etc.) are automatically discovered.</p>\n\n @if (IsLoadingFTSEntities) {\n <mj-loading text=\"Discovering searchable entities...\" size=\"medium\"></mj-loading>\n } @else if (FTSEntities.length === 0) {\n <div class=\"config-empty-state\">\n <i class=\"fa-solid fa-text-width config-empty-icon\"></i>\n <h3 class=\"config-empty-title\">No Searchable Entities Found</h3>\n <p class=\"config-empty-text\">No entities with text fields were discovered. Ensure your database schema includes entities with varchar/nvarchar columns.</p>\n </div>\n } @else {\n <div class=\"fts-entity-controls\">\n <div class=\"fts-summary\">\n <span class=\"fts-summary-count\">{{ EnabledFTSCount }} of {{ FTSEntities.length }} entities enabled for search</span>\n <input type=\"text\" class=\"config-input fts-filter-input\" placeholder=\"Filter entities...\" [(ngModel)]=\"FTSFilterText\" />\n </div>\n </div>\n\n <div class=\"fts-entity-list\">\n @for (entity of FilteredFTSEntities; track entity.EntityName) {\n <div class=\"fts-entity-card\" [class.fts-entity-enabled]=\"entity.Enabled\">\n <div class=\"fts-entity-toggle\">\n <input type=\"checkbox\" [(ngModel)]=\"entity.Enabled\" (change)=\"OnFTSEntityToggled(entity)\" class=\"config-checkbox\" />\n </div>\n <div class=\"fts-entity-info\">\n <span class=\"fts-entity-name\">{{ entity.EntityName }}</span>\n <div class=\"fts-entity-fields\">\n @for (field of entity.IndexedFields; track field) {\n <span class=\"fts-field-tag\">{{ field }}</span>\n }\n </div>\n </div>\n <div class=\"fts-entity-meta\">\n <span class=\"fts-entity-title-field\" title=\"Title field\">\n <i class=\"fa-solid fa-heading\"></i> {{ entity.TitleField }}\n </span>\n @if (entity.SnippetField !== entity.TitleField) {\n <span class=\"fts-entity-snippet-field\" title=\"Snippet field\">\n <i class=\"fa-solid fa-align-left\"></i> {{ entity.SnippetField }}\n </span>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n\n <!-- Embedding Models -->\n @if (ActiveSection === 'embedding') {\n <div class=\"config-section\">\n <h2 class=\"config-section-title\">Embedding Models</h2>\n <p class=\"config-section-desc\">AI models used for generating vector embeddings from text.</p>\n\n @if (HasEmbeddingModel) {\n <div class=\"config-group\">\n <div class=\"config-field-row\">\n <div class=\"config-field-info\">\n <span class=\"config-label\">Active Model</span>\n <span class=\"config-hint\">Currently selected embedding model</span>\n </div>\n <span class=\"config-value-display\">{{ EmbeddingModelName }}</span>\n </div>\n <div class=\"config-field-row\">\n <div class=\"config-field-info\">\n <span class=\"config-label\">Available Models</span>\n <span class=\"config-hint\">{{ EmbeddingModels.length }} embedding model(s) configured</span>\n </div>\n <div class=\"config-tag-list\">\n @for (model of EmbeddingModels; track model.ID) {\n <span class=\"config-tag\">{{ model.Name }}</span>\n }\n </div>\n </div>\n </div>\n <p class=\"config-section-note\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Manage embedding models in the AI Dashboard > Models tab.\n </p>\n } @else {\n <div class=\"config-empty-state\">\n <i class=\"fa-solid fa-microchip config-empty-icon\"></i>\n <h3 class=\"config-empty-title\">No Embedding Models Found</h3>\n <p class=\"config-empty-text\">\n Embedding models are required to convert text into vectors for semantic search and duplicate detection.\n Configure at least one embedding model (e.g., text-embedding-3-small) in the AI Dashboard > Models tab.\n </p>\n </div>\n }\n </div>\n }\n\n <!-- Thresholds -->\n @if (ActiveSection === 'thresholds') {\n <div class=\"config-section\">\n <h2 class=\"config-section-title\">Scoring Thresholds</h2>\n <p class=\"config-section-desc\">Set the scoring thresholds used by search, duplicate detection, and autotagging.</p>\n\n <div class=\"config-group\">\n <div class=\"config-field-row\">\n <div class=\"config-field-info\">\n <span class=\"config-label\">Duplicate Absolute Match</span>\n <span class=\"config-hint\">Score above which duplicates are auto-confirmed ({{ FormatThreshold(ThresholdSettings.DuplicateAbsolute) }})</span>\n </div>\n <input type=\"range\" [(ngModel)]=\"ThresholdSettings.DuplicateAbsolute\" (input)=\"OnSettingChanged()\" class=\"config-slider\" min=\"0.5\" max=\"1\" step=\"0.01\" />\n </div>\n\n <div class=\"config-field-row\">\n <div class=\"config-field-info\">\n <span class=\"config-label\">Duplicate Potential Match</span>\n <span class=\"config-hint\">Score above which duplicates are flagged for review ({{ FormatThreshold(ThresholdSettings.DuplicatePotential) }})</span>\n </div>\n <input type=\"range\" [(ngModel)]=\"ThresholdSettings.DuplicatePotential\" (input)=\"OnSettingChanged()\" class=\"config-slider\" min=\"0.3\" max=\"1\" step=\"0.01\" />\n </div>\n\n <div class=\"config-field-row\">\n <div class=\"config-field-info\">\n <span class=\"config-label\">Search Relevance</span>\n <span class=\"config-hint\">Minimum score for search results ({{ FormatThreshold(ThresholdSettings.SearchRelevance) }})</span>\n </div>\n <input type=\"range\" [(ngModel)]=\"ThresholdSettings.SearchRelevance\" (input)=\"OnSettingChanged()\" class=\"config-slider\" min=\"0\" max=\"1\" step=\"0.01\" />\n </div>\n\n <div class=\"config-field-row\">\n <div class=\"config-field-info\">\n <span class=\"config-label\">Autotag Confidence</span>\n <span class=\"config-hint\">Minimum confidence for accepting auto-generated tags ({{ FormatThreshold(ThresholdSettings.AutotagConfidence) }})</span>\n </div>\n <input type=\"range\" [(ngModel)]=\"ThresholdSettings.AutotagConfidence\" (input)=\"OnSettingChanged()\" class=\"config-slider\" min=\"0.3\" max=\"1\" step=\"0.01\" />\n </div>\n </div>\n </div>\n }\n\n <!-- Scheduling Section -->\n @if (ActiveSection === 'scheduling') {\n <div class=\"config-section-content\">\n <h2 class=\"config-section-title\"><i class=\"fa-solid fa-clock\"></i> Scheduling</h2>\n <p class=\"config-section-desc\">Manage automated pipeline schedules for content classification and vector sync. Create schedules here or manage all schedules in the dedicated Scheduling app.</p>\n <div style=\"margin-top: 16px;\">\n <app-scheduling-resource></app-scheduling-resource>\n </div>\n </div>\n }\n\n <!-- Save Bar -->\n @if (HasUnsavedChanges) {\n <div class=\"config-save-bar\">\n <span class=\"config-save-text\">You have unsaved changes</span>\n <button class=\"config-save-btn\" (click)=\"SaveConfiguration()\" [disabled]=\"IsSaving\">\n @if (IsSaving) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Saving...\n } @else {\n <i class=\"fa-solid fa-save\"></i> Save Changes\n }\n </button>\n <button class=\"config-reset-btn\" (click)=\"ResetConfiguration()\" [disabled]=\"IsSaving\">\n Reset\n </button>\n </div>\n }\n </div>\n </div>\n}\n"]}
1
+ {"version":3,"file":"knowledge-config-resource.component.js","sourceRoot":"","sources":["../../../../src/KnowledgeHub/components/config/knowledge-config-resource.component.ts","../../../../src/KnowledgeHub/components/config/knowledge-config-resource.component.html"],"names":[],"mappings":"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","sourcesContent":["/**\n * @fileoverview Knowledge Hub Configuration Resource Component\n *\n * Full configuration dashboard for Knowledge Hub infrastructure:\n * Vector DB provider management, vector index CRUD, embedding model selection,\n * pipeline settings, full-text index config, and scoring thresholds.\n */\n\nimport { Component, ChangeDetectorRef, OnDestroy, AfterViewInit, inject } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { Metadata, RunView } from '@memberjunction/core';\nimport { ResourceData, MJVectorDatabaseEntity, MJVectorIndexEntity, MJEntityDocumentEntity, MJCredentialEntity, KnowledgeHubMetadataEngine } from '@memberjunction/core-entities';\nimport { RegisterClass, UUIDsEqual } from '@memberjunction/global';\nimport { BaseResourceComponent, NavigationService } from '@memberjunction/ng-shared';\nimport { MJNotificationService } from '@memberjunction/ng-notifications';\nimport { AIEngineBase } from '@memberjunction/ai-engine-base';\n\n/** Configuration section definition */\ninterface ConfigSection {\n ID: string;\n Label: string;\n Icon: string;\n Description: string;\n}\n\n/** Pipeline configuration settings */\ninterface PipelineConfig {\n AutotagOnIngest: boolean;\n VectorizeOnIngest: boolean;\n DefaultBatchSize: number;\n MaxConcurrentJobs: number;\n}\n\n/** Threshold settings */\ninterface ThresholdConfig {\n DuplicateAbsolute: number;\n DuplicatePotential: number;\n SearchRelevance: number;\n AutotagConfidence: number;\n}\n\n/** Vector DB provider display record */\ninterface VectorDBRecord {\n ID: string;\n Name: string;\n ClassKey: string;\n Description: string;\n CredentialID: string | null;\n CredentialName: string | null;\n}\n\n/** Vector index display record */\ninterface VectorIndexRecord {\n ID: string;\n Name: string;\n EmbeddingModel: string;\n EmbeddingModelID: string;\n VectorDatabase: string;\n VectorDatabaseID: string;\n}\n\n/** Embedding model display record */\ninterface EmbeddingModelRecord {\n ID: string;\n Name: string;\n}\n\n/** Full-text searchable entity */\ninterface FTSEntityRecord {\n EntityName: string;\n IndexedFields: string[];\n TitleField: string;\n SnippetField: string;\n Enabled: boolean;\n}\n\n@RegisterClass(BaseResourceComponent, 'KnowledgeConfigResource')\n@Component({\n standalone: false,\n selector: 'app-knowledge-config-resource',\n templateUrl: './knowledge-config-resource.component.html',\n styleUrls: ['./knowledge-config-resource.component.css']\n})\nexport class KnowledgeConfigResourceComponent extends BaseResourceComponent implements AfterViewInit, OnDestroy {\n private cdr = inject(ChangeDetectorRef);\n protected override navigationService = inject(NavigationService);\n protected override destroy$ = new Subject<void>();\n\n async GetResourceDisplayName(_data: ResourceData): Promise<string> {\n return 'Configuration';\n }\n\n async GetResourceIconClass(_data: ResourceData): Promise<string> {\n return 'fa-solid fa-gear';\n }\n\n // --- Navigation ---\n public Sections: ConfigSection[] = [\n { ID: 'pipeline', Label: 'Pipeline', Icon: 'fa-solid fa-diagram-project', Description: 'Configure the knowledge ingestion pipeline stages' },\n { ID: 'vectordb', Label: 'Vector Database', Icon: 'fa-solid fa-database', Description: 'Manage vector database connections and indexes' },\n { ID: 'fulltext', Label: 'Full-Text Indexes', Icon: 'fa-solid fa-text-width', Description: 'Configure SQL full-text search indexes' },\n { ID: 'embedding', Label: 'Embedding Models', Icon: 'fa-solid fa-microchip', Description: 'Select and configure embedding models' },\n { ID: 'thresholds', Label: 'Thresholds', Icon: 'fa-solid fa-sliders', Description: 'Set scoring thresholds for search and deduplication' },\n { ID: 'scheduling', Label: 'Scheduling', Icon: 'fa-solid fa-clock', Description: 'Manage automated pipeline schedules' },\n ];\n\n public ActiveSection = 'pipeline';\n public IsLoading = true;\n public IsSaving = false;\n public HasUnsavedChanges = false;\n\n // --- Pipeline ---\n public PipelineSettings: PipelineConfig = {\n AutotagOnIngest: true,\n VectorizeOnIngest: true,\n DefaultBatchSize: 100,\n MaxConcurrentJobs: 3\n };\n\n // --- Thresholds ---\n public ThresholdSettings: ThresholdConfig = {\n DuplicateAbsolute: 0.95,\n DuplicatePotential: 0.75,\n SearchRelevance: 0.3,\n AutotagConfidence: 0.7\n };\n\n // --- Vector DB Providers ---\n public VectorDBProviders: VectorDBRecord[] = [];\n public get HasVectorDBProvider(): boolean { return this.VectorDBProviders.length > 0; }\n\n // --- Vector Indexes ---\n public VectorIndexes: VectorIndexRecord[] = [];\n public get HasVectorIndex(): boolean { return this.VectorIndexes.length > 0; }\n\n // --- Embedding Models ---\n public EmbeddingModels: EmbeddingModelRecord[] = [];\n public get HasEmbeddingModel(): boolean { return this.EmbeddingModels.length > 0; }\n public get EmbeddingModelName(): string { return this.EmbeddingModels.length > 0 ? this.EmbeddingModels[0].Name : ''; }\n\n // --- Credentials (for vector DB provider binding) ---\n public AvailableCredentials: { ID: string; Name: string }[] = [];\n public IsSavingCredential = false;\n\n // --- Entity Documents (for persisting thresholds) ---\n private entityDocuments: MJEntityDocumentEntity[] = [];\n\n // --- Setup Progress ---\n public get SetupStepsCompleted(): number {\n let count = 0;\n if (this.HasVectorDBProvider) count++;\n if (this.HasEmbeddingModel) count++;\n if (this.HasVectorIndex) count++;\n return count;\n }\n public get VectorSetupComplete(): boolean {\n return this.HasVectorDBProvider && this.HasVectorIndex && this.HasEmbeddingModel;\n }\n\n // --- Full-Text Search Entities ---\n public FTSEntities: FTSEntityRecord[] = [];\n public IsLoadingFTSEntities = false;\n public FTSFilterText = '';\n\n public get EnabledFTSCount(): number {\n return this.FTSEntities.filter(e => e.Enabled).length;\n }\n\n public get FilteredFTSEntities(): FTSEntityRecord[] {\n if (!this.FTSFilterText.trim()) return this.FTSEntities;\n const filter = this.FTSFilterText.toLowerCase();\n return this.FTSEntities.filter(e => e.EntityName.toLowerCase().includes(filter));\n }\n\n // --- Create Index Form ---\n public ShowCreateIndexForm = false;\n public IsCreatingIndex = false;\n public NewIndexName = '';\n public NewIndexVectorDBID = '';\n public NewIndexEmbeddingModelID = '';\n\n ngAfterViewInit(): void {\n this.loadConfiguration();\n this.navigationService.SetAgentContext(this, {\n ActiveSection: this.ActiveSection,\n });\n this.NotifyLoadComplete();\n }\n\n ngOnDestroy(): void {\n super.ngOnDestroy();\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n // ================================================================\n // Public Methods\n // ================================================================\n\n public SelectSection(sectionId: string): void {\n this.ActiveSection = sectionId;\n this.cdr.detectChanges();\n }\n\n public OnSettingChanged(): void {\n this.HasUnsavedChanges = true;\n this.cdr.detectChanges();\n }\n\n public async SaveConfiguration(): Promise<void> {\n this.IsSaving = true;\n this.cdr.detectChanges();\n try {\n await this.persistThresholdsToEntityDocuments();\n this.HasUnsavedChanges = false;\n MJNotificationService.Instance.CreateSimpleNotification('Configuration saved', 'success', 2000);\n } catch (error) {\n const msg = error instanceof Error ? error.message : String(error);\n console.error('[KnowledgeConfig] Save failed:', msg);\n MJNotificationService.Instance.CreateSimpleNotification(`Save failed: ${msg}`, 'error', 5000);\n } finally {\n this.IsSaving = false;\n this.cdr.detectChanges();\n }\n }\n\n public ResetConfiguration(): void {\n this.loadConfiguration();\n this.HasUnsavedChanges = false;\n this.cdr.detectChanges();\n }\n\n /** Handle toggling an FTS entity */\n public OnFTSEntityToggled(entity: FTSEntityRecord): void {\n this.HasUnsavedChanges = true;\n this.cdr.detectChanges();\n }\n\n public FormatThreshold(value: number): string {\n return `${Math.round(value * 100)}%`;\n }\n\n /** Open the create index inline form */\n public OpenCreateIndexForm(): void {\n this.ShowCreateIndexForm = true;\n this.NewIndexName = 'mj-knowledge-index';\n this.NewIndexVectorDBID = this.VectorDBProviders.length > 0 ? this.VectorDBProviders[0].ID : '';\n this.NewIndexEmbeddingModelID = this.EmbeddingModels.length > 0 ? this.EmbeddingModels[0].ID : '';\n this.cdr.detectChanges();\n }\n\n /** Cancel creating an index */\n public CancelCreateIndex(): void {\n this.ShowCreateIndexForm = false;\n this.cdr.detectChanges();\n }\n\n /** Create a new vector index */\n public async CreateIndex(): Promise<void> {\n if (!this.NewIndexName.trim() || !this.NewIndexVectorDBID || !this.NewIndexEmbeddingModelID) {\n MJNotificationService.Instance.CreateSimpleNotification('Please fill in all fields', 'warning', 3000);\n return;\n }\n\n this.IsCreatingIndex = true;\n this.cdr.detectChanges();\n\n try {\n const md = this.ProviderToUse;\n const index = await md.GetEntityObject<MJVectorIndexEntity>('MJ: Vector Indexes');\n index.NewRecord();\n index.Name = this.NewIndexName.trim();\n index.VectorDatabaseID = this.NewIndexVectorDBID;\n index.EmbeddingModelID = this.NewIndexEmbeddingModelID;\n index.Description = `Knowledge Hub vector index created ${new Date().toLocaleDateString()}`;\n\n const saved = await index.Save();\n if (saved) {\n MJNotificationService.Instance.CreateSimpleNotification(\n `Vector index \"${this.NewIndexName}\" created successfully`,\n 'success', 3000\n );\n this.ShowCreateIndexForm = false;\n await this.loadConfiguration();\n } else {\n const msg = index.LatestResult?.CompleteMessage || 'Unknown error';\n console.error('[KnowledgeConfig] Failed to create index:', msg);\n MJNotificationService.Instance.CreateSimpleNotification(`Failed to create index: ${msg}`, 'error', 5000);\n }\n } catch (error) {\n const msg = error instanceof Error ? error.message : String(error);\n console.error('[KnowledgeConfig] Error creating index:', msg);\n MJNotificationService.Instance.CreateSimpleNotification(`Error: ${msg}`, 'error', 5000);\n } finally {\n this.IsCreatingIndex = false;\n this.cdr.detectChanges();\n }\n }\n\n /** Delete a vector index */\n public async DeleteIndex(indexId: string): Promise<void> {\n const idx = this.VectorIndexes.find(i => UUIDsEqual(i.ID, indexId));\n if (!idx) return;\n\n try {\n const md = this.ProviderToUse;\n const entity = await md.GetEntityObject<MJVectorIndexEntity>('MJ: Vector Indexes');\n const loaded = await entity.Load(indexId);\n if (!loaded) {\n MJNotificationService.Instance.CreateSimpleNotification(\n `Could not load vector index \"${idx.Name}\"`, 'error', 3000\n );\n return;\n }\n const deleted = await entity.Delete();\n if (deleted) {\n MJNotificationService.Instance.CreateSimpleNotification(\n `Index \"${idx.Name}\" deleted`, 'success', 2000\n );\n await this.loadConfiguration();\n } else {\n const msg = entity.LatestResult?.CompleteMessage || 'Unknown error';\n console.error('[KnowledgeConfig] Delete failed:', msg);\n MJNotificationService.Instance.CreateSimpleNotification(\n `Delete failed: ${msg}`, 'error', 5000\n );\n }\n } catch (error) {\n const msg = error instanceof Error ? error.message : String(error);\n console.error('[KnowledgeConfig] Error deleting index:', msg);\n MJNotificationService.Instance.CreateSimpleNotification(`Error: ${msg}`, 'error', 5000);\n }\n }\n\n /** Update the credential linked to a vector database provider */\n public async SaveProviderCredential(provider: VectorDBRecord): Promise<void> {\n this.IsSavingCredential = true;\n this.cdr.detectChanges();\n\n try {\n const md = this.ProviderToUse;\n const entity = await md.GetEntityObject<MJVectorDatabaseEntity>('MJ: Vector Databases');\n const loaded = await entity.Load(provider.ID);\n if (!loaded) {\n MJNotificationService.Instance.CreateSimpleNotification(\n `Could not load vector database \"${provider.Name}\"`, 'error', 3000\n );\n return;\n }\n\n entity.CredentialID = provider.CredentialID || null;\n const saved = await entity.Save();\n if (saved) {\n provider.CredentialName = this.AvailableCredentials.find(c => UUIDsEqual(c.ID, provider.CredentialID))?.Name ?? null;\n MJNotificationService.Instance.CreateSimpleNotification(\n provider.CredentialID\n ? `Credential linked to \"${provider.Name}\"`\n : `Credential removed from \"${provider.Name}\"`,\n 'success', 2000\n );\n } else {\n const msg = entity.LatestResult?.CompleteMessage ?? 'Unknown error';\n console.error('[KnowledgeConfig] Save credential failed:', msg);\n MJNotificationService.Instance.CreateSimpleNotification(`Save failed: ${msg}`, 'error', 5000);\n }\n } catch (error) {\n const msg = error instanceof Error ? error.message : String(error);\n console.error('[KnowledgeConfig] Error saving credential:', msg);\n MJNotificationService.Instance.CreateSimpleNotification(`Error: ${msg}`, 'error', 5000);\n } finally {\n this.IsSavingCredential = false;\n this.cdr.detectChanges();\n }\n }\n\n // ================================================================\n // Private Methods\n // ================================================================\n\n private async loadConfiguration(): Promise<void> {\n this.IsLoading = true;\n this.cdr.detectChanges();\n\n try {\n // Use KnowledgeHubMetadataEngine for cached vector DBs, indexes, and entity docs\n const engine = KnowledgeHubMetadataEngine.Instance;\n await engine.Config(false);\n\n this.loadVectorDBProvidersFromEngine(AIEngineBase.Instance.VectorDatabases);\n this.loadVectorIndexesFromEngine(engine.VectorIndexes);\n this.loadEntityDocumentsAndThresholds(engine.GetActiveEntityDocuments());\n\n // AI Models and Credentials come from different domains — fetch via RunView\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const [modelsResult, credentialsResult] = await rv.RunViews([\n { EntityName: 'MJ: AI Models', ResultType: 'simple' },\n { EntityName: 'MJ: Credentials', ExtraFilter: 'IsActive = 1', Fields: ['ID', 'Name'], ResultType: 'simple' }\n ]);\n this.loadEmbeddingModels(modelsResult.Success ? modelsResult.Results : []);\n this.AvailableCredentials = (credentialsResult.Success ? credentialsResult.Results : [])\n .map((c: Record<string, unknown>) => ({ ID: String(c['ID']), Name: String(c['Name']) }));\n } catch (error) {\n console.error('[KnowledgeConfig] Error loading configuration:', error);\n } finally {\n this.IsLoading = false;\n this.cdr.detectChanges();\n }\n\n // Load FTS entities in background (doesn't block main config)\n this.loadFTSEntities();\n }\n\n private async loadFTSEntities(): Promise<void> {\n this.IsLoadingFTSEntities = true;\n this.cdr.detectChanges();\n\n try {\n const md = this.ProviderToUse;\n const allEntities = md.Entities;\n const ftsEntities: FTSEntityRecord[] = [];\n\n for (const entity of allEntities) {\n const textFields = entity.Fields.filter(\n (f: { Name: string; Type: string; MaxLength: number; IsPrimaryKey: boolean }) =>\n !f.IsPrimaryKey &&\n !f.Name.startsWith('__mj') &&\n (f.Type.toLowerCase().includes('varchar') ||\n f.Type.toLowerCase().includes('text') ||\n f.Type.toLowerCase() === 'ntext') &&\n f.MaxLength !== 1\n );\n\n if (textFields.length === 0) continue;\n\n const preferredTitleNames = ['Name', 'Title', 'Subject', 'Label'];\n const preferredSnippetNames = ['Description', 'Summary', 'Body', 'Content', 'Text', 'Notes'];\n\n const titleField = textFields.find((f: { Name: string }) => preferredTitleNames.includes(f.Name))?.Name\n || textFields[0]?.Name || 'Name';\n const snippetField = textFields.find((f: { Name: string }) =>\n preferredSnippetNames.includes(f.Name) && f.Name !== titleField\n )?.Name || titleField;\n\n ftsEntities.push({\n EntityName: entity.Name,\n IndexedFields: textFields.slice(0, 4).map((f: { Name: string }) => f.Name),\n TitleField: titleField,\n SnippetField: snippetField,\n Enabled: true,\n });\n }\n\n ftsEntities.sort((a, b) => a.EntityName.localeCompare(b.EntityName));\n this.FTSEntities = ftsEntities;\n } catch (error) {\n console.error('[KnowledgeConfig] Error loading FTS entities:', error);\n } finally {\n this.IsLoadingFTSEntities = false;\n this.cdr.detectChanges();\n }\n }\n\n private loadVectorDBProvidersFromEngine(dbs: MJVectorDatabaseEntity[]): void {\n this.VectorDBProviders = dbs.map(db => ({\n ID: db.ID,\n Name: db.Name,\n ClassKey: db.ClassKey || '',\n Description: db.Description || '',\n CredentialID: db.CredentialID,\n CredentialName: db.Credential ?? null\n }));\n }\n\n private loadVectorIndexesFromEngine(indexes: MJVectorIndexEntity[]): void {\n this.VectorIndexes = indexes.map(vi => ({\n ID: vi.ID,\n Name: vi.Name || 'Unnamed Index',\n EmbeddingModel: vi.EmbeddingModel || '',\n EmbeddingModelID: vi.EmbeddingModelID || '',\n VectorDatabase: vi.VectorDatabase || '',\n VectorDatabaseID: vi.VectorDatabaseID || ''\n }));\n }\n\n /** Load entity documents and seed threshold settings from the first document's values */\n private loadEntityDocumentsAndThresholds(docs: MJEntityDocumentEntity[]): void {\n this.entityDocuments = docs;\n if (docs.length > 0) {\n // Use the first entity document's thresholds as the canonical values\n const doc = docs[0];\n this.ThresholdSettings.DuplicatePotential = doc.PotentialMatchThreshold;\n this.ThresholdSettings.DuplicateAbsolute = doc.AbsoluteMatchThreshold;\n }\n }\n\n /** Persist threshold settings back to all active entity documents */\n private async persistThresholdsToEntityDocuments(): Promise<void> {\n if (this.entityDocuments.length === 0) {\n return; // No entity documents to update\n }\n\n for (const doc of this.entityDocuments) {\n doc.PotentialMatchThreshold = this.ThresholdSettings.DuplicatePotential;\n doc.AbsoluteMatchThreshold = this.ThresholdSettings.DuplicateAbsolute;\n const saved = await doc.Save();\n if (!saved) {\n const msg = doc.LatestResult?.CompleteMessage || 'Unknown error';\n throw new Error(`Failed to save entity document \"${doc.Name}\": ${msg}`);\n }\n }\n }\n\n private loadEmbeddingModels(records: Record<string, unknown>[]): void {\n this.EmbeddingModels = records\n .filter(m =>\n String(m['AIModelType'] || '').toLowerCase().includes('embedding') ||\n String(m['Name'] || '').toLowerCase().includes('embedding') ||\n String(m['Name'] || '').toLowerCase().includes('embed')\n )\n .map(m => ({\n ID: String(m['ID']),\n Name: String(m['Name'])\n }));\n }\n}\n\n/** Tree-shaking prevention */\nexport function LoadKnowledgeConfigResource(): void {\n // Prevents tree-shaking\n}\n","@if (IsLoading) {\n <div class=\"config-loading\">\n <mj-loading text=\"Loading configuration...\" size=\"medium\"></mj-loading>\n </div>\n} @else {\n <div class=\"config-layout\">\n <!-- Left Navigation -->\n <nav class=\"config-nav\">\n <div class=\"config-nav-header\">\n <i class=\"fa-solid fa-cogs\"></i>\n <span>Configuration</span>\n </div>\n @for (section of Sections; track section.ID) {\n <button\n class=\"config-nav-item\"\n [class.config-nav-item-active]=\"ActiveSection === section.ID\"\n (click)=\"SelectSection(section.ID)\"\n >\n <i [class]=\"section.Icon\"></i>\n <span>{{ section.Label }}</span>\n </button>\n }\n </nav>\n\n <!-- Content Area -->\n <div class=\"config-content\">\n <!-- Pipeline Settings -->\n @if (ActiveSection === 'pipeline') {\n <div class=\"config-section\">\n <h2 class=\"config-section-title\">Pipeline Settings</h2>\n <p class=\"config-section-desc\">Configure how the Knowledge Pipeline processes incoming content.</p>\n\n <div class=\"config-group\">\n <label class=\"config-toggle-row\">\n <div class=\"config-toggle-info\">\n <span class=\"config-label\">Auto-tag on Ingest</span>\n <span class=\"config-hint\">Automatically run autotagging when new content is ingested</span>\n </div>\n <input type=\"checkbox\" [(ngModel)]=\"PipelineSettings.AutotagOnIngest\" (change)=\"OnSettingChanged()\" class=\"config-checkbox\" />\n </label>\n\n <label class=\"config-toggle-row\">\n <div class=\"config-toggle-info\">\n <span class=\"config-label\">Vectorize on Ingest</span>\n <span class=\"config-hint\">Automatically create embeddings for new content</span>\n </div>\n <input type=\"checkbox\" [(ngModel)]=\"PipelineSettings.VectorizeOnIngest\" (change)=\"OnSettingChanged()\" class=\"config-checkbox\" />\n </label>\n\n <div class=\"config-field-row\">\n <div class=\"config-field-info\">\n <span class=\"config-label\">Default Batch Size</span>\n <span class=\"config-hint\">Number of items processed per batch</span>\n </div>\n <input type=\"number\" [(ngModel)]=\"PipelineSettings.DefaultBatchSize\" (input)=\"OnSettingChanged()\" class=\"config-input config-input-number\" min=\"10\" max=\"1000\" />\n </div>\n\n <div class=\"config-field-row\">\n <div class=\"config-field-info\">\n <span class=\"config-label\">Max Concurrent Jobs</span>\n <span class=\"config-hint\">Maximum number of pipeline jobs running at once</span>\n </div>\n <input type=\"number\" [(ngModel)]=\"PipelineSettings.MaxConcurrentJobs\" (input)=\"OnSettingChanged()\" class=\"config-input config-input-number\" min=\"1\" max=\"10\" />\n </div>\n </div>\n </div>\n }\n\n <!-- Vector Database Settings -->\n @if (ActiveSection === 'vectordb') {\n <div class=\"config-section\">\n <h2 class=\"config-section-title\">Vector Database</h2>\n <p class=\"config-section-desc\">Manage the shared vector index and database connection.</p>\n\n <!-- Setup Progress -->\n <div class=\"setup-progress\">\n <div class=\"setup-progress-header\">\n <span class=\"setup-progress-label\">Setup Progress</span>\n <span class=\"setup-progress-count\">{{ SetupStepsCompleted }} of 3 complete</span>\n </div>\n <div class=\"setup-progress-bar\">\n <div class=\"setup-progress-fill\" [style.width.%]=\"(SetupStepsCompleted / 3) * 100\"></div>\n </div>\n </div>\n\n <!-- Step 1: Providers -->\n <div class=\"setup-step\" [class.setup-step-complete]=\"HasVectorDBProvider\" [class.setup-step-pending]=\"!HasVectorDBProvider\">\n <div class=\"setup-step-header\">\n <div class=\"setup-step-indicator\">\n @if (HasVectorDBProvider) {\n <i class=\"fa-solid fa-circle-check\"></i>\n } @else {\n <span class=\"setup-step-number\">1</span>\n }\n </div>\n <div class=\"setup-step-info\">\n <span class=\"setup-step-title\">Vector Database Providers</span>\n @if (HasVectorDBProvider) {\n <span class=\"setup-step-status\">{{ VectorDBProviders.length }} provider(s) registered</span>\n } @else {\n <span class=\"setup-step-status\">No providers registered. Add a vector database provider (e.g., Pinecone, Weaviate) via the admin console.</span>\n }\n </div>\n </div>\n @if (HasVectorDBProvider) {\n <div class=\"setup-step-detail\">\n @for (provider of VectorDBProviders; track provider.ID) {\n <div class=\"provider-card\">\n <div class=\"provider-icon\">\n <i class=\"fa-solid fa-database\"></i>\n </div>\n <div class=\"provider-info\">\n <span class=\"provider-name\">{{ provider.Name }}</span>\n <span class=\"provider-class\">{{ provider.ClassKey }}</span>\n </div>\n <span class=\"config-status-badge config-status-active\">\n <i class=\"fa-solid fa-circle-check\"></i> Active\n </span>\n </div>\n <div class=\"provider-credential-row\">\n <label class=\"provider-credential-label\">\n <i class=\"fa-solid fa-key\"></i> API Credential\n </label>\n <div class=\"provider-credential-picker\">\n <select class=\"provider-credential-select\"\n [(ngModel)]=\"provider.CredentialID\"\n (change)=\"SaveProviderCredential(provider)\"\n [disabled]=\"IsSavingCredential\">\n <option [ngValue]=\"null\">None (use environment variable)</option>\n @for (cred of AvailableCredentials; track cred.ID) {\n <option [ngValue]=\"cred.ID\">{{ cred.Name }}</option>\n }\n </select>\n @if (IsSavingCredential) {\n <i class=\"fa-solid fa-spinner fa-spin provider-credential-spinner\"></i>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Step 2: Embedding Model -->\n <div class=\"setup-step\" [class.setup-step-complete]=\"HasEmbeddingModel\" [class.setup-step-pending]=\"!HasEmbeddingModel\">\n <div class=\"setup-step-header\">\n <div class=\"setup-step-indicator\">\n @if (HasEmbeddingModel) {\n <i class=\"fa-solid fa-circle-check\"></i>\n } @else {\n <span class=\"setup-step-number\">2</span>\n }\n </div>\n <div class=\"setup-step-info\">\n <span class=\"setup-step-title\">Embedding Models</span>\n @if (HasEmbeddingModel) {\n <span class=\"setup-step-status\">{{ EmbeddingModels.length }} model(s) available</span>\n } @else {\n <span class=\"setup-step-status\">No embedding models found. Configure at least one in the AI app > Models tab.</span>\n }\n </div>\n </div>\n @if (HasEmbeddingModel) {\n <div class=\"setup-step-detail\">\n <div class=\"config-tag-list\">\n @for (model of EmbeddingModels; track model.ID) {\n <span class=\"config-tag\">{{ model.Name }}</span>\n }\n </div>\n </div>\n }\n </div>\n\n <!-- Step 3: Vector Indexes -->\n <div class=\"setup-step\" [class.setup-step-complete]=\"HasVectorIndex\" [class.setup-step-pending]=\"!HasVectorIndex\">\n <div class=\"setup-step-header\">\n <div class=\"setup-step-indicator\">\n @if (HasVectorIndex) {\n <i class=\"fa-solid fa-circle-check\"></i>\n } @else {\n <span class=\"setup-step-number\">3</span>\n }\n </div>\n <div class=\"setup-step-info\">\n <span class=\"setup-step-title\">Vector Indexes</span>\n @if (HasVectorIndex) {\n <span class=\"setup-step-status\">{{ VectorIndexes.length }} index(es) configured</span>\n } @else if (HasVectorDBProvider && HasEmbeddingModel) {\n <span class=\"setup-step-status\">No indexes yet — create one below.</span>\n } @else {\n <span class=\"setup-step-status\">Complete steps 1 and 2 first.</span>\n }\n </div>\n @if (HasVectorDBProvider && HasEmbeddingModel && !ShowCreateIndexForm) {\n <button class=\"setup-step-action\" (click)=\"OpenCreateIndexForm()\">\n <i class=\"fa-solid fa-plus\"></i> Create Index\n </button>\n }\n </div>\n\n <!-- Existing Indexes -->\n @if (HasVectorIndex) {\n <div class=\"setup-step-detail\">\n @for (idx of VectorIndexes; track idx.ID) {\n <div class=\"index-card\">\n <div class=\"index-icon\">\n <i class=\"fa-solid fa-cubes\"></i>\n </div>\n <div class=\"index-info\">\n <span class=\"index-name\">{{ idx.Name }}</span>\n <span class=\"index-meta\">\n <i class=\"fa-solid fa-database\"></i> {{ idx.VectorDatabase }}\n &nbsp;·&nbsp;\n <i class=\"fa-solid fa-microchip\"></i> {{ idx.EmbeddingModel }}\n </span>\n </div>\n <div class=\"index-actions\">\n <span class=\"config-status-badge config-status-active\">\n <i class=\"fa-solid fa-circle-check\"></i> Active\n </span>\n <button class=\"index-delete-btn\" (click)=\"DeleteIndex(idx.ID)\" title=\"Delete index\">\n <i class=\"fa-solid fa-trash-can\"></i>\n </button>\n </div>\n </div>\n }\n </div>\n }\n\n <!-- Create Index Form -->\n @if (ShowCreateIndexForm) {\n <div class=\"create-index-form\">\n <h4 class=\"create-index-title\">\n <i class=\"fa-solid fa-plus-circle\"></i> Create New Vector Index\n </h4>\n <div class=\"create-index-fields\">\n <div class=\"create-index-field\">\n <label class=\"create-index-label\">Index Name</label>\n <input type=\"text\"\n class=\"config-input\"\n [(ngModel)]=\"NewIndexName\"\n placeholder=\"e.g., mj-knowledge-index\" />\n </div>\n <div class=\"create-index-field\">\n <label class=\"create-index-label\">Vector Database</label>\n <select class=\"config-select\" [(ngModel)]=\"NewIndexVectorDBID\">\n @for (db of VectorDBProviders; track db.ID) {\n <option [value]=\"db.ID\">{{ db.Name }}</option>\n }\n </select>\n </div>\n <div class=\"create-index-field\">\n <label class=\"create-index-label\">Embedding Model</label>\n <select class=\"config-select\" [(ngModel)]=\"NewIndexEmbeddingModelID\">\n @for (model of EmbeddingModels; track model.ID) {\n <option [value]=\"model.ID\">{{ model.Name }}</option>\n }\n </select>\n </div>\n </div>\n <div class=\"create-index-actions\">\n <button class=\"create-index-submit\" (click)=\"CreateIndex()\" [disabled]=\"IsCreatingIndex\">\n @if (IsCreatingIndex) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Creating...\n } @else {\n <i class=\"fa-solid fa-plus\"></i> Create Index\n }\n </button>\n <button class=\"create-index-cancel\" (click)=\"CancelCreateIndex()\" [disabled]=\"IsCreatingIndex\">\n Cancel\n </button>\n </div>\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Full-Text Indexes -->\n @if (ActiveSection === 'fulltext') {\n <div class=\"config-section\">\n <h2 class=\"config-section-title\">Full-Text Search Entities</h2>\n <p class=\"config-section-desc\">Configure which entities are included in full-text search. Entities with text fields (Name, Description, etc.) are automatically discovered.</p>\n\n @if (IsLoadingFTSEntities) {\n <mj-loading text=\"Discovering searchable entities...\" size=\"medium\"></mj-loading>\n } @else if (FTSEntities.length === 0) {\n <div class=\"config-empty-state\">\n <i class=\"fa-solid fa-text-width config-empty-icon\"></i>\n <h3 class=\"config-empty-title\">No Searchable Entities Found</h3>\n <p class=\"config-empty-text\">No entities with text fields were discovered. Ensure your database schema includes entities with varchar/nvarchar columns.</p>\n </div>\n } @else {\n <div class=\"fts-entity-controls\">\n <div class=\"fts-summary\">\n <span class=\"fts-summary-count\">{{ EnabledFTSCount }} of {{ FTSEntities.length }} entities enabled for search</span>\n <input type=\"text\" class=\"config-input fts-filter-input\" placeholder=\"Filter entities...\" [(ngModel)]=\"FTSFilterText\" />\n </div>\n </div>\n\n <div class=\"fts-entity-list\">\n @for (entity of FilteredFTSEntities; track entity.EntityName) {\n <div class=\"fts-entity-card\" [class.fts-entity-enabled]=\"entity.Enabled\">\n <div class=\"fts-entity-toggle\">\n <input type=\"checkbox\" [(ngModel)]=\"entity.Enabled\" (change)=\"OnFTSEntityToggled(entity)\" class=\"config-checkbox\" />\n </div>\n <div class=\"fts-entity-info\">\n <span class=\"fts-entity-name\">{{ entity.EntityName }}</span>\n <div class=\"fts-entity-fields\">\n @for (field of entity.IndexedFields; track field) {\n <span class=\"fts-field-tag\">{{ field }}</span>\n }\n </div>\n </div>\n <div class=\"fts-entity-meta\">\n <span class=\"fts-entity-title-field\" title=\"Title field\">\n <i class=\"fa-solid fa-heading\"></i> {{ entity.TitleField }}\n </span>\n @if (entity.SnippetField !== entity.TitleField) {\n <span class=\"fts-entity-snippet-field\" title=\"Snippet field\">\n <i class=\"fa-solid fa-align-left\"></i> {{ entity.SnippetField }}\n </span>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n\n <!-- Embedding Models -->\n @if (ActiveSection === 'embedding') {\n <div class=\"config-section\">\n <h2 class=\"config-section-title\">Embedding Models</h2>\n <p class=\"config-section-desc\">AI models used for generating vector embeddings from text.</p>\n\n @if (HasEmbeddingModel) {\n <div class=\"config-group\">\n <div class=\"config-field-row\">\n <div class=\"config-field-info\">\n <span class=\"config-label\">Active Model</span>\n <span class=\"config-hint\">Currently selected embedding model</span>\n </div>\n <span class=\"config-value-display\">{{ EmbeddingModelName }}</span>\n </div>\n <div class=\"config-field-row\">\n <div class=\"config-field-info\">\n <span class=\"config-label\">Available Models</span>\n <span class=\"config-hint\">{{ EmbeddingModels.length }} embedding model(s) configured</span>\n </div>\n <div class=\"config-tag-list\">\n @for (model of EmbeddingModels; track model.ID) {\n <span class=\"config-tag\">{{ model.Name }}</span>\n }\n </div>\n </div>\n </div>\n <p class=\"config-section-note\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Manage embedding models in the AI Dashboard > Models tab.\n </p>\n } @else {\n <div class=\"config-empty-state\">\n <i class=\"fa-solid fa-microchip config-empty-icon\"></i>\n <h3 class=\"config-empty-title\">No Embedding Models Found</h3>\n <p class=\"config-empty-text\">\n Embedding models are required to convert text into vectors for semantic search and duplicate detection.\n Configure at least one embedding model (e.g., text-embedding-3-small) in the AI Dashboard > Models tab.\n </p>\n </div>\n }\n </div>\n }\n\n <!-- Thresholds -->\n @if (ActiveSection === 'thresholds') {\n <div class=\"config-section\">\n <h2 class=\"config-section-title\">Scoring Thresholds</h2>\n <p class=\"config-section-desc\">Set the scoring thresholds used by search, duplicate detection, and autotagging.</p>\n\n <div class=\"config-group\">\n <div class=\"config-field-row\">\n <div class=\"config-field-info\">\n <span class=\"config-label\">Duplicate Absolute Match</span>\n <span class=\"config-hint\">Score above which duplicates are auto-confirmed ({{ FormatThreshold(ThresholdSettings.DuplicateAbsolute) }})</span>\n </div>\n <input type=\"range\" [(ngModel)]=\"ThresholdSettings.DuplicateAbsolute\" (input)=\"OnSettingChanged()\" class=\"config-slider\" min=\"0.5\" max=\"1\" step=\"0.01\" />\n </div>\n\n <div class=\"config-field-row\">\n <div class=\"config-field-info\">\n <span class=\"config-label\">Duplicate Potential Match</span>\n <span class=\"config-hint\">Score above which duplicates are flagged for review ({{ FormatThreshold(ThresholdSettings.DuplicatePotential) }})</span>\n </div>\n <input type=\"range\" [(ngModel)]=\"ThresholdSettings.DuplicatePotential\" (input)=\"OnSettingChanged()\" class=\"config-slider\" min=\"0.3\" max=\"1\" step=\"0.01\" />\n </div>\n\n <div class=\"config-field-row\">\n <div class=\"config-field-info\">\n <span class=\"config-label\">Search Relevance</span>\n <span class=\"config-hint\">Minimum score for search results ({{ FormatThreshold(ThresholdSettings.SearchRelevance) }})</span>\n </div>\n <input type=\"range\" [(ngModel)]=\"ThresholdSettings.SearchRelevance\" (input)=\"OnSettingChanged()\" class=\"config-slider\" min=\"0\" max=\"1\" step=\"0.01\" />\n </div>\n\n <div class=\"config-field-row\">\n <div class=\"config-field-info\">\n <span class=\"config-label\">Autotag Confidence</span>\n <span class=\"config-hint\">Minimum confidence for accepting auto-generated tags ({{ FormatThreshold(ThresholdSettings.AutotagConfidence) }})</span>\n </div>\n <input type=\"range\" [(ngModel)]=\"ThresholdSettings.AutotagConfidence\" (input)=\"OnSettingChanged()\" class=\"config-slider\" min=\"0.3\" max=\"1\" step=\"0.01\" />\n </div>\n </div>\n </div>\n }\n\n <!-- Scheduling Section -->\n @if (ActiveSection === 'scheduling') {\n <div class=\"config-section-content\">\n <h2 class=\"config-section-title\"><i class=\"fa-solid fa-clock\"></i> Scheduling</h2>\n <p class=\"config-section-desc\">Manage automated pipeline schedules for content classification and vector sync. Create schedules here or manage all schedules in the dedicated Scheduling app.</p>\n <div style=\"margin-top: 16px;\">\n <app-scheduling-resource></app-scheduling-resource>\n </div>\n </div>\n }\n\n <!-- Save Bar -->\n @if (HasUnsavedChanges) {\n <div class=\"config-save-bar\">\n <span class=\"config-save-text\">You have unsaved changes</span>\n <button class=\"config-save-btn\" (click)=\"SaveConfiguration()\" [disabled]=\"IsSaving\">\n @if (IsSaving) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Saving...\n } @else {\n <i class=\"fa-solid fa-save\"></i> Save Changes\n }\n </button>\n <button class=\"config-reset-btn\" (click)=\"ResetConfiguration()\" [disabled]=\"IsSaving\">\n Reset\n </button>\n </div>\n }\n </div>\n </div>\n}\n"]}
@@ -16,7 +16,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
16
16
  */
17
17
  import { Component, ChangeDetectorRef, inject } from '@angular/core';
18
18
  import { Subject } from 'rxjs';
19
- import { Metadata, RunView } from '@memberjunction/core';
19
+ import { RunView } from '@memberjunction/core';
20
20
  import { RegisterClass } from '@memberjunction/global';
21
21
  import { BaseResourceComponent, NavigationService } from '@memberjunction/ng-shared';
22
22
  import { MJNotificationService } from '@memberjunction/ng-notifications';
@@ -284,7 +284,7 @@ let SchedulingResourceComponent = class SchedulingResourceComponent extends Base
284
284
  }
285
285
  /** Navigate to the full Scheduling application */
286
286
  GoToSchedulingApp() {
287
- const md = new Metadata();
287
+ const md = this.ProviderToUse;
288
288
  const schedulingApp = md.Applications.find(a => a.Name === 'Scheduling');
289
289
  if (schedulingApp) {
290
290
  this.navigationService.SwitchToApp(schedulingApp.ID);
@@ -377,7 +377,7 @@ let SchedulingResourceComponent = class SchedulingResourceComponent extends Base
377
377
  this.IsLoading = true;
378
378
  this.cdr.detectChanges();
379
379
  try {
380
- const rv = new RunView();
380
+ const rv = RunView.FromMetadataProvider(this.ProviderToUse);
381
381
  const [jobsResult, runsResult] = await rv.RunViews([
382
382
  {
383
383
  EntityName: 'MJ: Scheduled Jobs',