@hotmeshio/long-tail 0.12.1 → 0.13.1

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 (234) hide show
  1. package/README.md +1 -0
  2. package/build/api/auth-sso.d.ts +6 -3
  3. package/build/api/auth-sso.js +6 -3
  4. package/build/api/escalations/helpers.js +4 -2
  5. package/build/api/settings.js +3 -0
  6. package/build/modules/auth.js +9 -3
  7. package/build/routes/auth-sso.js +6 -1
  8. package/build/services/agent/index.d.ts +11 -0
  9. package/build/services/agent/index.js +32 -0
  10. package/build/services/agent/sql.d.ts +7 -0
  11. package/build/services/agent/sql.js +32 -1
  12. package/build/services/agent/subscription-sql.d.ts +6 -0
  13. package/build/services/agent/subscription-sql.js +32 -1
  14. package/build/services/agent/subscriptions.d.ts +6 -0
  15. package/build/services/agent/subscriptions.js +23 -0
  16. package/build/services/config/index.d.ts +1 -1
  17. package/build/services/config/index.js +2 -1
  18. package/build/services/config/write.d.ts +10 -0
  19. package/build/services/config/write.js +49 -2
  20. package/build/services/domain/seed.d.ts +12 -5
  21. package/build/services/domain/seed.js +25 -6
  22. package/build/services/mcp/db.d.ts +16 -0
  23. package/build/services/mcp/db.js +24 -0
  24. package/build/services/mcp/sql.d.ts +8 -0
  25. package/build/services/mcp/sql.js +24 -1
  26. package/build/services/role/seed.d.ts +21 -0
  27. package/build/services/role/seed.js +113 -0
  28. package/build/services/role/sql.d.ts +8 -0
  29. package/build/services/role/sql.js +24 -1
  30. package/build/services/scan-code/index.d.ts +1 -1
  31. package/build/services/scan-code/index.js +3 -1
  32. package/build/services/scan-code/sql.d.ts +7 -0
  33. package/build/services/scan-code/sql.js +55 -1
  34. package/build/services/scan-code/write.d.ts +8 -0
  35. package/build/services/scan-code/write.js +23 -1
  36. package/build/services/topics/index.d.ts +2 -0
  37. package/build/services/topics/index.js +7 -0
  38. package/build/services/topics/sql.d.ts +2 -0
  39. package/build/services/topics/sql.js +5 -1
  40. package/build/services/topics/system-topics.d.ts +3 -2
  41. package/build/services/topics/system-topics.js +4 -3
  42. package/build/services/user/index.d.ts +1 -1
  43. package/build/services/user/index.js +2 -1
  44. package/build/services/user/roles.d.ts +8 -0
  45. package/build/services/user/roles.js +29 -0
  46. package/build/services/user/sql.d.ts +6 -0
  47. package/build/services/user/sql.js +9 -1
  48. package/build/services/user/sso-provision.js +14 -3
  49. package/build/start/apply-report.d.ts +26 -0
  50. package/build/start/apply-report.js +65 -0
  51. package/build/start/config.js +8 -1
  52. package/build/start/workers.js +222 -33
  53. package/build/tsconfig.tsbuildinfo +1 -1
  54. package/build/types/auth.d.ts +44 -4
  55. package/build/types/index.d.ts +1 -1
  56. package/build/types/startup.d.ts +160 -4
  57. package/dashboard/dist/assets/{AdminDashboard-DpTZG5EL.js → AdminDashboard-D2unnS2b.js} +2 -2
  58. package/dashboard/dist/assets/{AdminDashboard-DpTZG5EL.js.map → AdminDashboard-D2unnS2b.js.map} +1 -1
  59. package/dashboard/dist/assets/{AgentConfigPage-DVTL0NvC.js → AgentConfigPage-CBkf403g.js} +2 -2
  60. package/dashboard/dist/assets/{AgentConfigPage-DVTL0NvC.js.map → AgentConfigPage-CBkf403g.js.map} +1 -1
  61. package/dashboard/dist/assets/{AgentDetailPage-DOLKNPJl.js → AgentDetailPage-CAIU3yzo.js} +2 -2
  62. package/dashboard/dist/assets/{AgentDetailPage-DOLKNPJl.js.map → AgentDetailPage-CAIU3yzo.js.map} +1 -1
  63. package/dashboard/dist/assets/{AgentsPage-DiOZu6Xb.js → AgentsPage-qP9fWMyT.js} +2 -2
  64. package/dashboard/dist/assets/{AgentsPage-DiOZu6Xb.js.map → AgentsPage-qP9fWMyT.js.map} +1 -1
  65. package/dashboard/dist/assets/{AvailableEscalationsPage-CY5lfx27.js → AvailableEscalationsPage-DvWaiafI.js} +2 -2
  66. package/dashboard/dist/assets/{AvailableEscalationsPage-CY5lfx27.js.map → AvailableEscalationsPage-DvWaiafI.js.map} +1 -1
  67. package/dashboard/dist/assets/{BotPicker-ButjLJr2.js → BotPicker-BN-MKITV.js} +2 -2
  68. package/dashboard/dist/assets/{BotPicker-ButjLJr2.js.map → BotPicker-BN-MKITV.js.map} +1 -1
  69. package/dashboard/dist/assets/{CapabilitiesPage-CW_r2OlX.js → CapabilitiesPage-CJfmWokN.js} +2 -2
  70. package/dashboard/dist/assets/{CapabilitiesPage-CW_r2OlX.js.map → CapabilitiesPage-CJfmWokN.js.map} +1 -1
  71. package/dashboard/dist/assets/{CollapsibleSection-BOGRyCfm.js → CollapsibleSection-BvMHlHyt.js} +2 -2
  72. package/dashboard/dist/assets/{CollapsibleSection-BOGRyCfm.js.map → CollapsibleSection-BvMHlHyt.js.map} +1 -1
  73. package/dashboard/dist/assets/{CountdownTimer-UcHYZSg1.js → CountdownTimer-By4rbMDN.js} +2 -2
  74. package/dashboard/dist/assets/{CountdownTimer-UcHYZSg1.js.map → CountdownTimer-By4rbMDN.js.map} +1 -1
  75. package/dashboard/dist/assets/{CredentialsPage-A7OFYVsX.js → CredentialsPage-2TvvRwGJ.js} +2 -2
  76. package/dashboard/dist/assets/{CredentialsPage-A7OFYVsX.js.map → CredentialsPage-2TvvRwGJ.js.map} +1 -1
  77. package/dashboard/dist/assets/{CronLabel-Dve2Udsm.js → CronLabel-HxmsDSnV.js} +2 -2
  78. package/dashboard/dist/assets/{CronLabel-Dve2Udsm.js.map → CronLabel-HxmsDSnV.js.map} +1 -1
  79. package/dashboard/dist/assets/{CustomDurationPicker-BoPrA-Em.js → CustomDurationPicker-8Ao-1pKA.js} +2 -2
  80. package/dashboard/dist/assets/{CustomDurationPicker-BoPrA-Em.js.map → CustomDurationPicker-8Ao-1pKA.js.map} +1 -1
  81. package/dashboard/dist/assets/{ElapsedCell-B114P5mb.js → ElapsedCell-BkRu9Xpd.js} +2 -2
  82. package/dashboard/dist/assets/{ElapsedCell-B114P5mb.js.map → ElapsedCell-BkRu9Xpd.js.map} +1 -1
  83. package/dashboard/dist/assets/{EntityTimelinePanel-BqDWyOa9.js → EntityTimelinePanel--E6hLMCM.js} +2 -2
  84. package/dashboard/dist/assets/{EntityTimelinePanel-BqDWyOa9.js.map → EntityTimelinePanel--E6hLMCM.js.map} +1 -1
  85. package/dashboard/dist/assets/{EscalationListSchemaPage-DyyTyghx.js → EscalationListSchemaPage-CdFtqEEX.js} +2 -2
  86. package/dashboard/dist/assets/{EscalationListSchemaPage-DyyTyghx.js.map → EscalationListSchemaPage-CdFtqEEX.js.map} +1 -1
  87. package/dashboard/dist/assets/{EscalationSchemaPage-DLQG6EXQ.js → EscalationSchemaPage-BsjS2axz.js} +2 -2
  88. package/dashboard/dist/assets/{EscalationSchemaPage-DLQG6EXQ.js.map → EscalationSchemaPage-BsjS2axz.js.map} +1 -1
  89. package/dashboard/dist/assets/{EscalationsOverview-RrbkkEU0.js → EscalationsOverview-FL-xteVc.js} +2 -2
  90. package/dashboard/dist/assets/{EscalationsOverview-RrbkkEU0.js.map → EscalationsOverview-FL-xteVc.js.map} +1 -1
  91. package/dashboard/dist/assets/{EventTable-DOxubt7O.js → EventTable-BOcgZ78i.js} +2 -2
  92. package/dashboard/dist/assets/{EventTable-DOxubt7O.js.map → EventTable-BOcgZ78i.js.map} +1 -1
  93. package/dashboard/dist/assets/{FilterBar-y659Gc3X.js → FilterBar-DfCiCmm-.js} +2 -2
  94. package/dashboard/dist/assets/{FilterBar-y659Gc3X.js.map → FilterBar-DfCiCmm-.js.map} +1 -1
  95. package/dashboard/dist/assets/{GraphInvokePage-oHLgSAl6.js → GraphInvokePage-DfVeiN-8.js} +2 -2
  96. package/dashboard/dist/assets/{GraphInvokePage-oHLgSAl6.js.map → GraphInvokePage-DfVeiN-8.js.map} +1 -1
  97. package/dashboard/dist/assets/{HomePage-C9FUpD7x.js → HomePage-C2IhF9WB.js} +2 -2
  98. package/dashboard/dist/assets/{HomePage-C9FUpD7x.js.map → HomePage-C2IhF9WB.js.map} +1 -1
  99. package/dashboard/dist/assets/{ListToolbar-DfpSgWYU.js → ListToolbar-DA0PTOl5.js} +2 -2
  100. package/dashboard/dist/assets/{ListToolbar-DfpSgWYU.js.map → ListToolbar-DA0PTOl5.js.map} +1 -1
  101. package/dashboard/dist/assets/{McpOverview-6Ubpr9QS.js → McpOverview-DstPch5M.js} +2 -2
  102. package/dashboard/dist/assets/{McpOverview-6Ubpr9QS.js.map → McpOverview-DstPch5M.js.map} +1 -1
  103. package/dashboard/dist/assets/{McpQueryDetailPage-DFt-vQEp.js → McpQueryDetailPage-Csv0PKE0.js} +2 -2
  104. package/dashboard/dist/assets/{McpQueryDetailPage-DFt-vQEp.js.map → McpQueryDetailPage-Csv0PKE0.js.map} +1 -1
  105. package/dashboard/dist/assets/{McpQueryPage-DQiG0AE3.js → McpQueryPage-DxmqCkly.js} +2 -2
  106. package/dashboard/dist/assets/{McpQueryPage-DQiG0AE3.js.map → McpQueryPage-DxmqCkly.js.map} +1 -1
  107. package/dashboard/dist/assets/{McpRunDetailPage-BgsSegyP.js → McpRunDetailPage-CcJOlp_B.js} +2 -2
  108. package/dashboard/dist/assets/{McpRunDetailPage-BgsSegyP.js.map → McpRunDetailPage-CcJOlp_B.js.map} +1 -1
  109. package/dashboard/dist/assets/{McpRunsPage-tCMxspqS.js → McpRunsPage-BZCR043j.js} +2 -2
  110. package/dashboard/dist/assets/{McpRunsPage-tCMxspqS.js.map → McpRunsPage-BZCR043j.js.map} +1 -1
  111. package/dashboard/dist/assets/{OperationsPage-DUaRmEPa.js → OperationsPage-DMsPXITh.js} +2 -2
  112. package/dashboard/dist/assets/{OperationsPage-DUaRmEPa.js.map → OperationsPage-DMsPXITh.js.map} +1 -1
  113. package/dashboard/dist/assets/{OperatorDashboard-CayyjMcf.js → OperatorDashboard-DSloftQ5.js} +2 -2
  114. package/dashboard/dist/assets/{OperatorDashboard-CayyjMcf.js.map → OperatorDashboard-DSloftQ5.js.map} +1 -1
  115. package/dashboard/dist/assets/{PersonaDetailPage-DBcxfdbN.js → PersonaDetailPage-jDVRCLbU.js} +2 -2
  116. package/dashboard/dist/assets/{PersonaDetailPage-DBcxfdbN.js.map → PersonaDetailPage-jDVRCLbU.js.map} +1 -1
  117. package/dashboard/dist/assets/{PersonasPage-DPq0HQAB.js → PersonasPage-DnDDwXoy.js} +2 -2
  118. package/dashboard/dist/assets/{PersonasPage-DPq0HQAB.js.map → PersonasPage-DnDDwXoy.js.map} +1 -1
  119. package/dashboard/dist/assets/{ProcessDetailPage-QQZNNNMw.js → ProcessDetailPage-CfAUU6q2.js} +2 -2
  120. package/dashboard/dist/assets/{ProcessDetailPage-QQZNNNMw.js.map → ProcessDetailPage-CfAUU6q2.js.map} +1 -1
  121. package/dashboard/dist/assets/{ProcessesListPage-UKQMJ4Te.js → ProcessesListPage-CnAXzaVv.js} +2 -2
  122. package/dashboard/dist/assets/{ProcessesListPage-UKQMJ4Te.js.map → ProcessesListPage-CnAXzaVv.js.map} +1 -1
  123. package/dashboard/dist/assets/{RoleDetailPage-DT-3sSRD.js → RoleDetailPage-Dg1p6Qz_.js} +2 -2
  124. package/dashboard/dist/assets/{RoleDetailPage-DT-3sSRD.js.map → RoleDetailPage-Dg1p6Qz_.js.map} +1 -1
  125. package/dashboard/dist/assets/{RolesPage-DZg4niqL.js → RolesPage-DeRVQux8.js} +2 -2
  126. package/dashboard/dist/assets/{RolesPage-DZg4niqL.js.map → RolesPage-DeRVQux8.js.map} +1 -1
  127. package/dashboard/dist/assets/{RunAsSelector-DkcNR7L6.js → RunAsSelector-BFNqQGuG.js} +2 -2
  128. package/dashboard/dist/assets/{RunAsSelector-DkcNR7L6.js.map → RunAsSelector-BFNqQGuG.js.map} +1 -1
  129. package/dashboard/dist/assets/{ScanCodesPage-U-alpwWF.js → ScanCodesPage-D0GOdk5m.js} +2 -2
  130. package/dashboard/dist/assets/{ScanCodesPage-U-alpwWF.js.map → ScanCodesPage-D0GOdk5m.js.map} +1 -1
  131. package/dashboard/dist/assets/{ScanSchemeDetailPage-lXwlcraS.js → ScanSchemeDetailPage-vFqoe_P4.js} +2 -2
  132. package/dashboard/dist/assets/{ScanSchemeDetailPage-lXwlcraS.js.map → ScanSchemeDetailPage-vFqoe_P4.js.map} +1 -1
  133. package/dashboard/dist/assets/{ScanStationPage-DYMiTp-v.js → ScanStationPage-DH1ynTX9.js} +2 -2
  134. package/dashboard/dist/assets/{ScanStationPage-DYMiTp-v.js.map → ScanStationPage-DH1ynTX9.js.map} +1 -1
  135. package/dashboard/dist/assets/{StickyPagination-D896Wquq.js → StickyPagination-B99hVu95.js} +2 -2
  136. package/dashboard/dist/assets/{StickyPagination-D896Wquq.js.map → StickyPagination-B99hVu95.js.map} +1 -1
  137. package/dashboard/dist/assets/{StreamMessageDetail-DIh5qEGJ.js → StreamMessageDetail-DcDGISrv.js} +2 -2
  138. package/dashboard/dist/assets/{StreamMessageDetail-DIh5qEGJ.js.map → StreamMessageDetail-DcDGISrv.js.map} +1 -1
  139. package/dashboard/dist/assets/{SwimlaneTimeline-B8SucVj5.js → SwimlaneTimeline-BP3mSQAg.js} +2 -2
  140. package/dashboard/dist/assets/{SwimlaneTimeline-B8SucVj5.js.map → SwimlaneTimeline-BP3mSQAg.js.map} +1 -1
  141. package/dashboard/dist/assets/{TaskDetailPage-Di-z_ZE2.js → TaskDetailPage-_XWLJzt-.js} +2 -2
  142. package/dashboard/dist/assets/{TaskDetailPage-Di-z_ZE2.js.map → TaskDetailPage-_XWLJzt-.js.map} +1 -1
  143. package/dashboard/dist/assets/{TasksListPage-ClHGEdin.js → TasksListPage-iGriKiO2.js} +2 -2
  144. package/dashboard/dist/assets/{TasksListPage-ClHGEdin.js.map → TasksListPage-iGriKiO2.js.map} +1 -1
  145. package/dashboard/dist/assets/{TimeAgo-BSDHd9Xo.js → TimeAgo-BO33VeFl.js} +2 -2
  146. package/dashboard/dist/assets/{TimeAgo-BSDHd9Xo.js.map → TimeAgo-BO33VeFl.js.map} +1 -1
  147. package/dashboard/dist/assets/{TimestampCell-WQL3FxWl.js → TimestampCell-KAjX7w35.js} +2 -2
  148. package/dashboard/dist/assets/{TimestampCell-WQL3FxWl.js.map → TimestampCell-KAjX7w35.js.map} +1 -1
  149. package/dashboard/dist/assets/{ToolTestPanel-IVIkqZTi.js → ToolTestPanel-BchG2yC6.js} +2 -2
  150. package/dashboard/dist/assets/{ToolTestPanel-IVIkqZTi.js.map → ToolTestPanel-BchG2yC6.js.map} +1 -1
  151. package/dashboard/dist/assets/{TopicDetailPage-BOasQo68.js → TopicDetailPage-BaK8H0o1.js} +2 -2
  152. package/dashboard/dist/assets/{TopicDetailPage-BOasQo68.js.map → TopicDetailPage-BaK8H0o1.js.map} +1 -1
  153. package/dashboard/dist/assets/{TopicsPage-DV_orf_V.js → TopicsPage-DEyvm669.js} +2 -2
  154. package/dashboard/dist/assets/{TopicsPage-DV_orf_V.js.map → TopicsPage-DEyvm669.js.map} +1 -1
  155. package/dashboard/dist/assets/{UserName-rshjKBtm.js → UserName-BV6SKI9P.js} +2 -2
  156. package/dashboard/dist/assets/{UserName-rshjKBtm.js.map → UserName-BV6SKI9P.js.map} +1 -1
  157. package/dashboard/dist/assets/{WorkflowExecutionPage-BpNGLwbK.js → WorkflowExecutionPage-1sKoEFNC.js} +2 -2
  158. package/dashboard/dist/assets/{WorkflowExecutionPage-BpNGLwbK.js.map → WorkflowExecutionPage-1sKoEFNC.js.map} +1 -1
  159. package/dashboard/dist/assets/{WorkflowsDashboard-BAXt8gv_.js → WorkflowsDashboard-YTHDZZOD.js} +2 -2
  160. package/dashboard/dist/assets/{WorkflowsDashboard-BAXt8gv_.js.map → WorkflowsDashboard-YTHDZZOD.js.map} +1 -1
  161. package/dashboard/dist/assets/{WorkflowsOverview-DvOyzL6y.js → WorkflowsOverview-ucXPLTtm.js} +2 -2
  162. package/dashboard/dist/assets/{WorkflowsOverview-DvOyzL6y.js.map → WorkflowsOverview-ucXPLTtm.js.map} +1 -1
  163. package/dashboard/dist/assets/{YamlWorkflowDetailPage-CraijGy6.js → YamlWorkflowDetailPage-C_RTZKqZ.js} +2 -2
  164. package/dashboard/dist/assets/{YamlWorkflowDetailPage-CraijGy6.js.map → YamlWorkflowDetailPage-C_RTZKqZ.js.map} +1 -1
  165. package/dashboard/dist/assets/{YamlWorkflowsPage-CNz3ptmj.js → YamlWorkflowsPage-Usid3w2W.js} +2 -2
  166. package/dashboard/dist/assets/{YamlWorkflowsPage-CNz3ptmj.js.map → YamlWorkflowsPage-Usid3w2W.js.map} +1 -1
  167. package/dashboard/dist/assets/{agents-BswSJR-t.js → agents-BTDsRK8e.js} +2 -2
  168. package/dashboard/dist/assets/{agents-BswSJR-t.js.map → agents-BTDsRK8e.js.map} +1 -1
  169. package/dashboard/dist/assets/{bots-VzlLx_GQ.js → bots-DxLrfdfr.js} +2 -2
  170. package/dashboard/dist/assets/{bots-VzlLx_GQ.js.map → bots-DxLrfdfr.js.map} +1 -1
  171. package/dashboard/dist/assets/{capabilities-B0bNlTTA.js → capabilities-DbTmeW-S.js} +2 -2
  172. package/dashboard/dist/assets/{capabilities-B0bNlTTA.js.map → capabilities-DbTmeW-S.js.map} +1 -1
  173. package/dashboard/dist/assets/{controlplane-DBESTVZS.js → controlplane-CEBntAL4.js} +2 -2
  174. package/dashboard/dist/assets/{controlplane-DBESTVZS.js.map → controlplane-CEBntAL4.js.map} +1 -1
  175. package/dashboard/dist/assets/{escalation-columns-CoqsCdbP.js → escalation-columns-Carqdwoh.js} +2 -2
  176. package/dashboard/dist/assets/{escalation-columns-CoqsCdbP.js.map → escalation-columns-Carqdwoh.js.map} +1 -1
  177. package/dashboard/dist/assets/{index-DUfdCp8e.js → index-B2hz0pUh.js} +2 -2
  178. package/dashboard/dist/assets/{index-DUfdCp8e.js.map → index-B2hz0pUh.js.map} +1 -1
  179. package/dashboard/dist/assets/{index-DJS-hvDt.js → index-B9m7fA3M.js} +2 -2
  180. package/dashboard/dist/assets/{index-DJS-hvDt.js.map → index-B9m7fA3M.js.map} +1 -1
  181. package/dashboard/dist/assets/{index-C_lA7ghl.js → index-BhapT-Vl.js} +2 -2
  182. package/dashboard/dist/assets/{index-C_lA7ghl.js.map → index-BhapT-Vl.js.map} +1 -1
  183. package/dashboard/dist/assets/{index-DsDFZzqr.js → index-Bqm4zu46.js} +2 -2
  184. package/dashboard/dist/assets/{index-DsDFZzqr.js.map → index-Bqm4zu46.js.map} +1 -1
  185. package/dashboard/dist/assets/{index-Cd7jZylO.js → index-C0hSttF5.js} +2 -2
  186. package/dashboard/dist/assets/{index-Cd7jZylO.js.map → index-C0hSttF5.js.map} +1 -1
  187. package/dashboard/dist/assets/{index-ByUjwu37.js → index-CDkg6iOE.js} +2 -2
  188. package/dashboard/dist/assets/{index-ByUjwu37.js.map → index-CDkg6iOE.js.map} +1 -1
  189. package/dashboard/dist/assets/{index-Ci4lxPwS.js → index-CVBBkW8V.js} +2 -2
  190. package/dashboard/dist/assets/{index-Ci4lxPwS.js.map → index-CVBBkW8V.js.map} +1 -1
  191. package/dashboard/dist/assets/{index-DYDcjn-b.js → index-CgIBjZta.js} +2 -2
  192. package/dashboard/dist/assets/{index-DYDcjn-b.js.map → index-CgIBjZta.js.map} +1 -1
  193. package/dashboard/dist/assets/{index-Cqrp5B5S.js → index-DBXm49S6.js} +25 -25
  194. package/dashboard/dist/assets/index-DBXm49S6.js.map +1 -0
  195. package/dashboard/dist/assets/{index-BBXmIWKx.js → index-De8iV1y2.js} +2 -2
  196. package/dashboard/dist/assets/{index-BBXmIWKx.js.map → index-De8iV1y2.js.map} +1 -1
  197. package/dashboard/dist/assets/{index-D8ljRGIb.js → index-DsgjFRvA.js} +2 -2
  198. package/dashboard/dist/assets/{index-D8ljRGIb.js.map → index-DsgjFRvA.js.map} +1 -1
  199. package/dashboard/dist/assets/{index-BLzwfbZV.js → index-kes8V4Xw.js} +2 -2
  200. package/dashboard/dist/assets/{index-BLzwfbZV.js.map → index-kes8V4Xw.js.map} +1 -1
  201. package/dashboard/dist/assets/{index-CALocCAr.js → index-nwLh3CK2.js} +2 -2
  202. package/dashboard/dist/assets/{index-CALocCAr.js.map → index-nwLh3CK2.js.map} +1 -1
  203. package/dashboard/dist/assets/{knowledge-DB2DgDa_.js → knowledge-oFYAanUp.js} +2 -2
  204. package/dashboard/dist/assets/{knowledge-DB2DgDa_.js.map → knowledge-oFYAanUp.js.map} +1 -1
  205. package/dashboard/dist/assets/{mcp-D72yCeuf.js → mcp-C9Kw4Ow8.js} +2 -2
  206. package/dashboard/dist/assets/{mcp-D72yCeuf.js.map → mcp-C9Kw4Ow8.js.map} +1 -1
  207. package/dashboard/dist/assets/{mcp-query-Cyyc_0E8.js → mcp-query-BwzpZ91Z.js} +2 -2
  208. package/dashboard/dist/assets/{mcp-query-Cyyc_0E8.js.map → mcp-query-BwzpZ91Z.js.map} +1 -1
  209. package/dashboard/dist/assets/{personas-xMDV7yXb.js → personas-D5ehmtRb.js} +2 -2
  210. package/dashboard/dist/assets/{personas-xMDV7yXb.js.map → personas-D5ehmtRb.js.map} +1 -1
  211. package/dashboard/dist/assets/{pipelines-mlxfmi6m.js → pipelines-xgPKGEdD.js} +2 -2
  212. package/dashboard/dist/assets/{pipelines-mlxfmi6m.js.map → pipelines-xgPKGEdD.js.map} +1 -1
  213. package/dashboard/dist/assets/{tasks-CxgOp_9H.js → tasks-CLyrl-MU.js} +2 -2
  214. package/dashboard/dist/assets/{tasks-CxgOp_9H.js.map → tasks-CLyrl-MU.js.map} +1 -1
  215. package/dashboard/dist/assets/{topics-CFb_L0Vs.js → topics-B_gO7CQ0.js} +2 -2
  216. package/dashboard/dist/assets/{topics-CFb_L0Vs.js.map → topics-B_gO7CQ0.js.map} +1 -1
  217. package/dashboard/dist/assets/{useEventHooks-nC5kH-QW.js → useEventHooks-BdWYm63U.js} +2 -2
  218. package/dashboard/dist/assets/{useEventHooks-nC5kH-QW.js.map → useEventHooks-BdWYm63U.js.map} +1 -1
  219. package/dashboard/dist/assets/{useNamespace-DQeDgRFR.js → useNamespace-C238M4Qn.js} +2 -2
  220. package/dashboard/dist/assets/{useNamespace-DQeDgRFR.js.map → useNamespace-C238M4Qn.js.map} +1 -1
  221. package/dashboard/dist/assets/{useYamlActivityEvents-BuGC3oBE.js → useYamlActivityEvents-B2ryEK4S.js} +2 -2
  222. package/dashboard/dist/assets/{useYamlActivityEvents-BuGC3oBE.js.map → useYamlActivityEvents-B2ryEK4S.js.map} +1 -1
  223. package/dashboard/dist/assets/{users-BZUTtM_6.js → users-BFaTe6Mt.js} +2 -2
  224. package/dashboard/dist/assets/{users-BZUTtM_6.js.map → users-BFaTe6Mt.js.map} +1 -1
  225. package/dashboard/dist/assets/{workflows-DWhaZWVK.js → workflows-DXz7tZxp.js} +2 -2
  226. package/dashboard/dist/assets/{workflows-DWhaZWVK.js.map → workflows-DXz7tZxp.js.map} +1 -1
  227. package/dashboard/dist/assets/{yaml-workflows-C1TeDIIk.js → yaml-workflows-u3xuRAnS.js} +2 -2
  228. package/dashboard/dist/assets/{yaml-workflows-C1TeDIIk.js.map → yaml-workflows-u3xuRAnS.js.map} +1 -1
  229. package/dashboard/dist/index.html +1 -1
  230. package/docs/auth.md +26 -1
  231. package/docs/code-owned-configuration.md +158 -0
  232. package/docs/scan-codes.md +24 -0
  233. package/package.json +1 -1
  234. package/dashboard/dist/assets/index-Cqrp5B5S.js.map +0 -1
@@ -0,0 +1,158 @@
1
+ # Code-Owned Configuration
2
+
3
+ Long-tail configuration — workflow registration profiles, roles and their
4
+ schemas, topics, MCP server definitions, agents, and the domain dictionary —
5
+ can be owned by either the database or the code that declares it. The
6
+ `configSource` dial on `LTStartConfig` decides, and every declarable entry can
7
+ override it individually.
8
+
9
+ ```typescript
10
+ const lt = await start({
11
+ database: { connectionString: dbUrl },
12
+ configSource: 'code', // declarations apply on every boot
13
+ roles: ROLES,
14
+ workers: WORKERS,
15
+ topics: TOPICS,
16
+ agents: AGENTS,
17
+ });
18
+ ```
19
+
20
+ ## The two ownership modes
21
+
22
+ **`'db'` (default).** Declarations are seeded insert-if-absent: the first boot
23
+ writes each record, and the database owns it from then on. Admins edit live
24
+ through the dashboard and APIs; when code and database disagree, boot logs a
25
+ `config drift:` warning and leaves the row alone.
26
+
27
+ **`'code'`.** Declarations are compared against the database and applied on
28
+ every boot. Code is the source of truth: a changed declaration overwrites the
29
+ stored config fields, and dashboard edits to declared surfaces are replaced at
30
+ the next deploy. An unchanged declaration is a no-op — no write, no version
31
+ bump. Records present in the database but absent from code are reported at
32
+ boot as orphans and never deleted.
33
+
34
+ Code ownership fits deployments that manage configuration through git and
35
+ CI/CD: the same declaration produces the same state in local, staging, and
36
+ production, without a database wipe. Local development that reseeds on every
37
+ `docker compose down -v` and a long-lived production database converge on
38
+ identical configuration.
39
+
40
+ ### Per-entry override
41
+
42
+ Every entry accepts `reset?: boolean`, which wins over the global dial in
43
+ either direction:
44
+
45
+ ```typescript
46
+ configSource: 'code',
47
+ topics: [
48
+ { topic: 'order.created', ... }, // code-owned (follows the dial)
49
+ { topic: 'ops.notes', ..., reset: false }, // db-owned — admins keep editing it
50
+ ],
51
+ ```
52
+
53
+ The domain dictionary's override lives beside its path:
54
+ `mcp.domainDictionaryReset`.
55
+
56
+ ## Per-surface semantics
57
+
58
+ | Surface | Declared via | Code-owned apply writes | Left alone (runtime state) |
59
+ |---|---|---|---|
60
+ | Workflow profiles | `workers[].config` | full profile incl. role lists (replace semantics) | task history, escalations |
61
+ | Roles | `roles[]` | declared fields only (PATCH); escalation targets replace | membership, undeclared fields |
62
+ | Topics | `topics[]` | whole catalog entry (`managed: true`) | `last_seen_at` |
63
+ | MCP servers | `mcp.serverFactories[].config` | description, tags, category, compile hints, credential providers | tool manifest, connection status |
64
+ | Agents | `agents[]` | description, status, goals, rules, domain, schedules | capabilities, metadata, run history |
65
+ | Agent subscriptions | `agents[].subscriptions` | reaction fields on (agent, topic) | `enabled` — the admin kill-switch |
66
+ | Scan schemes | `scanSchemes[]` | whole scheme + its rules (one ownership unit; `enabled` is declarative here) | — |
67
+ | Domain dictionary | `mcp.domainDictionaryPath` | whole document (version bumps once per change) | — |
68
+ | Graph workflows | `graphWorkflows[]` | always compare-and-apply: description/schema sync, redeploy on YAML version bump | run history |
69
+
70
+ `certified` on a workflow profile is explicit-only under code ownership: an
71
+ omitted flag registers the workflow as **not** certified. (The db-owned seed
72
+ path keeps the roles/consumes derivation, so existing declarations behave as
73
+ they always have.)
74
+
75
+ ## Roles: first-class declarations
76
+
77
+ `roles[]` registers roles with titles, versioned form/metadata/list schemas,
78
+ escalation targets, upstream inputs, dials, and pins:
79
+
80
+ ```typescript
81
+ roles: [
82
+ {
83
+ role: 'finisher',
84
+ title: 'Finisher',
85
+ form_schema: FINISHER_FORM, // versioned — see below
86
+ escalation_targets: ['engineer'],
87
+ sla_minutes: 30,
88
+ properties: { kiosk: true },
89
+ },
90
+ ],
91
+ ```
92
+
93
+ Only declared fields are ever written — an omitted field keeps whatever the
94
+ database holds, under either ownership mode. Under `'db'` the declaration is
95
+ written once when the role is first created (the role belongs to the database
96
+ afterward); under `'code'` it is diffed and applied every boot.
97
+
98
+ ### Versioned schemas
99
+
100
+ Role schemas version through the same write path the dashboard uses. Applying
101
+ a declaration whose `form_schema` or `metadata_schema` differs from the stored
102
+ pair advances the role's schema version and snapshots the new pair into the
103
+ version history with the change summary `startup apply (code)`. In-flight
104
+ escalations pin the version they were created against, so the forms they
105
+ render keep working while new escalations pick up the new shape. Version
106
+ lineage only grows — an apply never rewinds or rewrites an existing version.
107
+ `list_schema` versions independently, exactly as it does from the dashboard.
108
+
109
+ ## Scan schemes: scheme + rules as one unit
110
+
111
+ A scan scheme and its rules declare together — a rule cannot exist without its
112
+ scheme, so the pair is the ownership unit and one `reset` covers both:
113
+
114
+ ```typescript
115
+ scanSchemes: [
116
+ {
117
+ version: 12,
118
+ name: 'Serial locate',
119
+ target_facet: 'serialNumber',
120
+ encoding: 'fixed',
121
+ target_length: 8,
122
+ rules: [
123
+ { category: '1', name: 'Locate', steps: [{ verb: 'show-detail' }] },
124
+ ],
125
+ },
126
+ ],
127
+ ```
128
+
129
+ The scheme applies before its rules so rule validation sees the scheme's kind.
130
+ Rules present in the database but absent from a code-owned scheme's
131
+ declaration are reported as `version/category` orphans. The pass runs whether
132
+ or not the dashboard scan affordances (`features.scanCodes`) are enabled —
133
+ declaring schemes states intent.
134
+
135
+ ## The boot report
136
+
137
+ Each surface logs one line summarizing its pass:
138
+
139
+ ```
140
+ [long-tail] config apply (workflows): applied 2, unchanged 31, db-owned 0
141
+ [long-tail] config apply (roles): applied 1, unchanged 11, db-owned 0, orphans: [old-station]
142
+ ```
143
+
144
+ Orphans — database records of a declared surface with no matching declaration
145
+ in code — are reported at warn level and left untouched. Removing a workflow
146
+ config, role, topic, or agent remains a deliberate act through the dashboard
147
+ or API. For roles, only rows carrying real configuration (a title or a form
148
+ schema) are orphan candidates; bare rows auto-created for foreign keys and
149
+ membership-only roles never appear. Orphan reporting for roles is skipped when
150
+ `examples: true` (the demo seeders own their roles).
151
+
152
+ ## Concurrency
153
+
154
+ Concurrently booting containers serialize their configuration pass on a
155
+ dedicated advisory lock, separate from the migration lock. Single-statement
156
+ applies are also individually race-safe: every upsert carries an
157
+ `IS DISTINCT FROM` guard, so an identical declaration arriving from two
158
+ containers writes once and no-ops once.
@@ -360,6 +360,30 @@ The same CRUD rides `PUT/GET/DELETE /api/scan-codes/schemes/:version[/actions/:c
360
360
  rules fail the write with the exact problem — an `escalate` step names its
361
361
  `targetRole`, a `resolve` step carries its payload.
362
362
 
363
+ ## Declaring schemes in code
364
+
365
+ Schemes and their rules declare on `LTStartConfig.scanSchemes` and follow the
366
+ [code-owned configuration](code-owned-configuration.md) contract: under
367
+ `configSource: 'code'` a changed scheme or rule in code is live after the next
368
+ boot on every environment; under `'db'` (the default) the declaration seeds
369
+ once and the admin surfaces own it afterward. Per-entry `reset` overrides the
370
+ dial in either direction, covering the scheme and its rules together.
371
+
372
+ ```typescript
373
+ scanSchemes: [
374
+ {
375
+ version: 12,
376
+ name: 'Serial locate',
377
+ target_facet: 'serialNumber',
378
+ encoding: 'fixed',
379
+ target_length: 8,
380
+ rules: [
381
+ { category: '1', name: 'Locate', steps: [{ verb: 'show-detail' }] },
382
+ ],
383
+ },
384
+ ],
385
+ ```
386
+
363
387
  ## The printer demo
364
388
 
365
389
  The example seed (`examples/seed-scan-codes.ts`) configures scheme 10 over
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hotmeshio/long-tail",
3
- "version": "0.12.1",
3
+ "version": "0.13.1",
4
4
  "description": "Long Tail Workflows — Durable AI workflows with human-in-the-loop escalation. Powered by PostgreSQL.",
5
5
  "main": "./build/index.js",
6
6
  "types": "./build/index.d.ts",