@hotmeshio/long-tail 0.4.6 → 0.4.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/adapters/express.d.ts +68 -0
- package/build/adapters/express.js +163 -0
- package/build/api/users.d.ts +2 -0
- package/build/api/users.js +1 -0
- package/build/index.d.ts +1 -0
- package/build/index.js +11 -1
- package/build/lib/events/socketio.d.ts +3 -0
- package/build/lib/events/socketio.js +6 -1
- package/build/services/user/crud.js +4 -0
- package/build/services/user/index.d.ts +1 -0
- package/build/services/user/index.js +3 -1
- package/build/services/user/seed-admin.d.ts +13 -0
- package/build/services/user/seed-admin.js +42 -0
- package/build/services/user/types.d.ts +1 -0
- package/build/start/index.js +2 -2
- package/build/start/workers.d.ts +3 -1
- package/build/start/workers.js +10 -0
- package/build/tsconfig.tsbuildinfo +1 -1
- package/build/types/startup.d.ts +41 -0
- package/dashboard/dist/assets/{AdminDashboard-qZYNzvw8.js → AdminDashboard-BVtpNGO1.js} +2 -2
- package/dashboard/dist/assets/{AdminDashboard-qZYNzvw8.js.map → AdminDashboard-BVtpNGO1.js.map} +1 -1
- package/dashboard/dist/assets/{AgentConfigPage-_SMbioNp.js → AgentConfigPage-BGDDZpxn.js} +2 -2
- package/dashboard/dist/assets/{AgentConfigPage-_SMbioNp.js.map → AgentConfigPage-BGDDZpxn.js.map} +1 -1
- package/dashboard/dist/assets/{AgentDetailPage-Cf_SRtbT.js → AgentDetailPage-9wlNBv63.js} +2 -2
- package/dashboard/dist/assets/{AgentDetailPage-Cf_SRtbT.js.map → AgentDetailPage-9wlNBv63.js.map} +1 -1
- package/dashboard/dist/assets/{AgentsPage-q53C1Xk_.js → AgentsPage-C8Sf-OUW.js} +2 -2
- package/dashboard/dist/assets/{AgentsPage-q53C1Xk_.js.map → AgentsPage-C8Sf-OUW.js.map} +1 -1
- package/dashboard/dist/assets/{AvailableEscalationsPage-DHWciaKb.js → AvailableEscalationsPage-BzfgOP5p.js} +2 -2
- package/dashboard/dist/assets/{AvailableEscalationsPage-DHWciaKb.js.map → AvailableEscalationsPage-BzfgOP5p.js.map} +1 -1
- package/dashboard/dist/assets/{BotPicker-638n5Jaz.js → BotPicker-6Xk1Fq1l.js} +2 -2
- package/dashboard/dist/assets/{BotPicker-638n5Jaz.js.map → BotPicker-6Xk1Fq1l.js.map} +1 -1
- package/dashboard/dist/assets/{CapabilitiesPage-PmgEhPl8.js → CapabilitiesPage-C30RqH3d.js} +2 -2
- package/dashboard/dist/assets/{CapabilitiesPage-PmgEhPl8.js.map → CapabilitiesPage-C30RqH3d.js.map} +1 -1
- package/dashboard/dist/assets/{CollapsibleSection-BEZoI6NU.js → CollapsibleSection-DR3D4kMt.js} +2 -2
- package/dashboard/dist/assets/{CollapsibleSection-BEZoI6NU.js.map → CollapsibleSection-DR3D4kMt.js.map} +1 -1
- package/dashboard/dist/assets/CredentialsPage-2nEwkFSm.js +2 -0
- package/dashboard/dist/assets/CredentialsPage-2nEwkFSm.js.map +1 -0
- package/dashboard/dist/assets/{CronLabel-Dg8U0s5a.js → CronLabel-Cfq2Hlsq.js} +2 -2
- package/dashboard/dist/assets/{CronLabel-Dg8U0s5a.js.map → CronLabel-Cfq2Hlsq.js.map} +1 -1
- package/dashboard/dist/assets/{CustomDurationPicker-BCbVMr-4.js → CustomDurationPicker-CSvIDpXD.js} +2 -2
- package/dashboard/dist/assets/{CustomDurationPicker-BCbVMr-4.js.map → CustomDurationPicker-CSvIDpXD.js.map} +1 -1
- package/dashboard/dist/assets/{ElapsedCell-fuG5wRDw.js → ElapsedCell-B4nhqILk.js} +2 -2
- package/dashboard/dist/assets/{ElapsedCell-fuG5wRDw.js.map → ElapsedCell-B4nhqILk.js.map} +1 -1
- package/dashboard/dist/assets/{EscalationsOverview-nYOZczYx.js → EscalationsOverview-CvMHVxgm.js} +2 -2
- package/dashboard/dist/assets/{EscalationsOverview-nYOZczYx.js.map → EscalationsOverview-CvMHVxgm.js.map} +1 -1
- package/dashboard/dist/assets/{EventTable-Cm0Ql46x.js → EventTable-faF8fMen.js} +2 -2
- package/dashboard/dist/assets/{EventTable-Cm0Ql46x.js.map → EventTable-faF8fMen.js.map} +1 -1
- package/dashboard/dist/assets/{HomePage-Cx6pvCFX.js → HomePage-DnSHq_dm.js} +2 -2
- package/dashboard/dist/assets/{HomePage-Cx6pvCFX.js.map → HomePage-DnSHq_dm.js.map} +1 -1
- package/dashboard/dist/assets/ListToolbar-C1EXfNfS.js +2 -0
- package/dashboard/dist/assets/ListToolbar-C1EXfNfS.js.map +1 -0
- package/dashboard/dist/assets/{McpOverview-BWsaxVKL.js → McpOverview-B9ZDlmUD.js} +2 -2
- package/dashboard/dist/assets/{McpOverview-BWsaxVKL.js.map → McpOverview-B9ZDlmUD.js.map} +1 -1
- package/dashboard/dist/assets/{McpQueryDetailPage-CQk3YpR-.js → McpQueryDetailPage-DdrdIa-N.js} +2 -2
- package/dashboard/dist/assets/{McpQueryDetailPage-CQk3YpR-.js.map → McpQueryDetailPage-DdrdIa-N.js.map} +1 -1
- package/dashboard/dist/assets/{McpQueryPage-Uf5DKujM.js → McpQueryPage-C9wb1cOa.js} +2 -2
- package/dashboard/dist/assets/{McpQueryPage-Uf5DKujM.js.map → McpQueryPage-C9wb1cOa.js.map} +1 -1
- package/dashboard/dist/assets/{McpRunDetailPage-D9GU27cS.js → McpRunDetailPage-b5ungm-L.js} +2 -2
- package/dashboard/dist/assets/{McpRunDetailPage-D9GU27cS.js.map → McpRunDetailPage-b5ungm-L.js.map} +1 -1
- package/dashboard/dist/assets/{McpRunsPage-5dVAu25-.js → McpRunsPage-wa62n3tp.js} +2 -2
- package/dashboard/dist/assets/{McpRunsPage-5dVAu25-.js.map → McpRunsPage-wa62n3tp.js.map} +1 -1
- package/dashboard/dist/assets/{OperatorDashboard-DNJtUDxl.js → OperatorDashboard-BDpk_HF5.js} +2 -2
- package/dashboard/dist/assets/{OperatorDashboard-DNJtUDxl.js.map → OperatorDashboard-BDpk_HF5.js.map} +1 -1
- package/dashboard/dist/assets/{ProcessDetailPage-BPsvlG0E.js → ProcessDetailPage-DHLKP0kz.js} +2 -2
- package/dashboard/dist/assets/{ProcessDetailPage-BPsvlG0E.js.map → ProcessDetailPage-DHLKP0kz.js.map} +1 -1
- package/dashboard/dist/assets/{ProcessesListPage-CnuCtHSP.js → ProcessesListPage-CpANHQGA.js} +2 -2
- package/dashboard/dist/assets/{ProcessesListPage-CnuCtHSP.js.map → ProcessesListPage-CpANHQGA.js.map} +1 -1
- package/dashboard/dist/assets/{RolesPage-BGJMx2S2.js → RolesPage-Ddta3UZX.js} +2 -2
- package/dashboard/dist/assets/{RolesPage-BGJMx2S2.js.map → RolesPage-Ddta3UZX.js.map} +1 -1
- package/dashboard/dist/assets/{RunAsSelector-CcNnj5AF.js → RunAsSelector-BpeN2J3V.js} +2 -2
- package/dashboard/dist/assets/{RunAsSelector-CcNnj5AF.js.map → RunAsSelector-BpeN2J3V.js.map} +1 -1
- package/dashboard/dist/assets/{SwimlaneTimeline-fWiYlTQw.js → SwimlaneTimeline-DSra_wMN.js} +2 -2
- package/dashboard/dist/assets/{SwimlaneTimeline-fWiYlTQw.js.map → SwimlaneTimeline-DSra_wMN.js.map} +1 -1
- package/dashboard/dist/assets/{TaskDetailPage-Byz19B5I.js → TaskDetailPage-Dqha2tKb.js} +2 -2
- package/dashboard/dist/assets/{TaskDetailPage-Byz19B5I.js.map → TaskDetailPage-Dqha2tKb.js.map} +1 -1
- package/dashboard/dist/assets/{TasksListPage-pe1Opw6s.js → TasksListPage-CM16b5S8.js} +2 -2
- package/dashboard/dist/assets/{TasksListPage-pe1Opw6s.js.map → TasksListPage-CM16b5S8.js.map} +1 -1
- package/dashboard/dist/assets/{TimeAgo-8aYUlXT9.js → TimeAgo-DCjPMPw-.js} +2 -2
- package/dashboard/dist/assets/{TimeAgo-8aYUlXT9.js.map → TimeAgo-DCjPMPw-.js.map} +1 -1
- package/dashboard/dist/assets/{TimestampCell-_1fW34op.js → TimestampCell-BBdTvZ08.js} +2 -2
- package/dashboard/dist/assets/{TimestampCell-_1fW34op.js.map → TimestampCell-BBdTvZ08.js.map} +1 -1
- package/dashboard/dist/assets/{ToolTestPanel-BD7ZkPeM.js → ToolTestPanel-Dz-76HVQ.js} +2 -2
- package/dashboard/dist/assets/{ToolTestPanel-BD7ZkPeM.js.map → ToolTestPanel-Dz-76HVQ.js.map} +1 -1
- package/dashboard/dist/assets/{TopicDetailPage-DL6QarSi.js → TopicDetailPage-Ccqf9h5E.js} +2 -2
- package/dashboard/dist/assets/{TopicDetailPage-DL6QarSi.js.map → TopicDetailPage-Ccqf9h5E.js.map} +1 -1
- package/dashboard/dist/assets/{TopicsPage-JYAk0csl.js → TopicsPage--1V67zFa.js} +2 -2
- package/dashboard/dist/assets/{TopicsPage-JYAk0csl.js.map → TopicsPage--1V67zFa.js.map} +1 -1
- package/dashboard/dist/assets/{UserName-Dcn8reNm.js → UserName-CfaTpV3T.js} +2 -2
- package/dashboard/dist/assets/{UserName-Dcn8reNm.js.map → UserName-CfaTpV3T.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowExecutionPage-DPie2xiD.js → WorkflowExecutionPage-Cp5_bsHY.js} +2 -2
- package/dashboard/dist/assets/{WorkflowExecutionPage-DPie2xiD.js.map → WorkflowExecutionPage-Cp5_bsHY.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowsDashboard-BRKurUye.js → WorkflowsDashboard-DaZZg4xU.js} +2 -2
- package/dashboard/dist/assets/{WorkflowsDashboard-BRKurUye.js.map → WorkflowsDashboard-DaZZg4xU.js.map} +1 -1
- package/dashboard/dist/assets/{WorkflowsOverview-C9Wob38P.js → WorkflowsOverview-D_ZkBVhB.js} +2 -2
- package/dashboard/dist/assets/{WorkflowsOverview-C9Wob38P.js.map → WorkflowsOverview-D_ZkBVhB.js.map} +1 -1
- package/dashboard/dist/assets/{YamlWorkflowsPage-BoKSRpKN.js → YamlWorkflowsPage-BKFXRwbK.js} +2 -2
- package/dashboard/dist/assets/{YamlWorkflowsPage-BoKSRpKN.js.map → YamlWorkflowsPage-BKFXRwbK.js.map} +1 -1
- package/dashboard/dist/assets/{agents-CpLOugsY.js → agents-GIg2jxet.js} +2 -2
- package/dashboard/dist/assets/{agents-CpLOugsY.js.map → agents-GIg2jxet.js.map} +1 -1
- package/dashboard/dist/assets/{bots-DRrquJqC.js → bots-CvrmNkL3.js} +2 -2
- package/dashboard/dist/assets/{bots-DRrquJqC.js.map → bots-CvrmNkL3.js.map} +1 -1
- package/dashboard/dist/assets/{capabilities-xbHvOXKc.js → capabilities-CQ5WgulO.js} +2 -2
- package/dashboard/dist/assets/{capabilities-xbHvOXKc.js.map → capabilities-CQ5WgulO.js.map} +1 -1
- package/dashboard/dist/assets/{controlplane-FilVp8jI.js → controlplane-sh5paKGB.js} +2 -2
- package/dashboard/dist/assets/{controlplane-FilVp8jI.js.map → controlplane-sh5paKGB.js.map} +1 -1
- package/dashboard/dist/assets/{escalation-SGea3mBy.js → escalation-DlTtA35J.js} +2 -2
- package/dashboard/dist/assets/{escalation-SGea3mBy.js.map → escalation-DlTtA35J.js.map} +1 -1
- package/dashboard/dist/assets/{escalation-columns-C6sLGnSX.js → escalation-columns-BHiDO_RZ.js} +2 -2
- package/dashboard/dist/assets/{escalation-columns-C6sLGnSX.js.map → escalation-columns-BHiDO_RZ.js.map} +1 -1
- package/dashboard/dist/assets/{helpers-wHzG3Maf.js → helpers-DuKOBZxw.js} +2 -2
- package/dashboard/dist/assets/{helpers-wHzG3Maf.js.map → helpers-DuKOBZxw.js.map} +1 -1
- package/dashboard/dist/assets/{index-C7k3xfpt.js → index-7icR5Pxv.js} +2 -2
- package/dashboard/dist/assets/index-7icR5Pxv.js.map +1 -0
- package/dashboard/dist/assets/{index-E1i1ADY1.js → index-BWXKb7C7.js} +2 -2
- package/dashboard/dist/assets/{index-E1i1ADY1.js.map → index-BWXKb7C7.js.map} +1 -1
- package/dashboard/dist/assets/{index-90jmsIHz.js → index-BXGMin7U.js} +2 -2
- package/dashboard/dist/assets/{index-90jmsIHz.js.map → index-BXGMin7U.js.map} +1 -1
- package/dashboard/dist/assets/{index-B7Vxutyl.js → index-B_e2uIz9.js} +28 -28
- package/dashboard/dist/assets/index-B_e2uIz9.js.map +1 -0
- package/dashboard/dist/assets/{index-Bu2EEWNN.js → index-C-JkowYp.js} +2 -2
- package/dashboard/dist/assets/{index-Bu2EEWNN.js.map → index-C-JkowYp.js.map} +1 -1
- package/dashboard/dist/assets/{index-H2tN256i.js → index-CRDT24gK.js} +2 -2
- package/dashboard/dist/assets/{index-H2tN256i.js.map → index-CRDT24gK.js.map} +1 -1
- package/dashboard/dist/assets/{index-BS3KIrQL.js → index-CglOyur2.js} +2 -2
- package/dashboard/dist/assets/{index-BS3KIrQL.js.map → index-CglOyur2.js.map} +1 -1
- package/dashboard/dist/assets/{index-DzgixtgL.js → index-CugmdGk-.js} +2 -2
- package/dashboard/dist/assets/{index-DzgixtgL.js.map → index-CugmdGk-.js.map} +1 -1
- package/dashboard/dist/assets/{index-WwUcAoas.js → index-DIpDSspp.js} +2 -2
- package/dashboard/dist/assets/{index-WwUcAoas.js.map → index-DIpDSspp.js.map} +1 -1
- package/dashboard/dist/assets/{index-DVxBi47d.js → index-Dbxp9Nvq.js} +2 -2
- package/dashboard/dist/assets/{index-DVxBi47d.js.map → index-Dbxp9Nvq.js.map} +1 -1
- package/dashboard/dist/assets/{index-CkYNpw4d.js → index-JH__2KWY.js} +2 -2
- package/dashboard/dist/assets/{index-CkYNpw4d.js.map → index-JH__2KWY.js.map} +1 -1
- package/dashboard/dist/assets/{index-C8xDd-Ys.js → index-PZaFsSGv.js} +2 -2
- package/dashboard/dist/assets/{index-C8xDd-Ys.js.map → index-PZaFsSGv.js.map} +1 -1
- package/dashboard/dist/assets/{index-Dr8WJAGM.js → index-qpt9aUuQ.js} +2 -2
- package/dashboard/dist/assets/{index-Dr8WJAGM.js.map → index-qpt9aUuQ.js.map} +1 -1
- package/dashboard/dist/assets/{knowledge-CQWNz28-.js → knowledge-tDl7bioT.js} +2 -2
- package/dashboard/dist/assets/{knowledge-CQWNz28-.js.map → knowledge-tDl7bioT.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-J_cDlKuA.js → mcp-CvdtxZQK.js} +2 -2
- package/dashboard/dist/assets/{mcp-J_cDlKuA.js.map → mcp-CvdtxZQK.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-query-C1zyeRvo.js → mcp-query-D5uxvom6.js} +2 -2
- package/dashboard/dist/assets/{mcp-query-C1zyeRvo.js.map → mcp-query-D5uxvom6.js.map} +1 -1
- package/dashboard/dist/assets/{mcp-runs-BR4fvXXw.js → mcp-runs-DBUF_MeD.js} +2 -2
- package/dashboard/dist/assets/{mcp-runs-BR4fvXXw.js.map → mcp-runs-DBUF_MeD.js.map} +1 -1
- package/dashboard/dist/assets/{namespaces-XOr9_XCV.js → namespaces-BYTDs3EH.js} +2 -2
- package/dashboard/dist/assets/{namespaces-XOr9_XCV.js.map → namespaces-BYTDs3EH.js.map} +1 -1
- package/dashboard/dist/assets/{roles-yuxJgQBf.js → roles-BWPoKy_E.js} +2 -2
- package/dashboard/dist/assets/{roles-yuxJgQBf.js.map → roles-BWPoKy_E.js.map} +1 -1
- package/dashboard/dist/assets/{tasks-CI3qsHdP.js → tasks-BQH9o3Ge.js} +2 -2
- package/dashboard/dist/assets/{tasks-CI3qsHdP.js.map → tasks-BQH9o3Ge.js.map} +1 -1
- package/dashboard/dist/assets/{topics-lm2GYKuv.js → topics-BjuxqPQn.js} +2 -2
- package/dashboard/dist/assets/{topics-lm2GYKuv.js.map → topics-BjuxqPQn.js.map} +1 -1
- package/dashboard/dist/assets/{useEventHooks-DpvfSw9p.js → useEventHooks-CZR0V3cW.js} +2 -2
- package/dashboard/dist/assets/{useEventHooks-DpvfSw9p.js.map → useEventHooks-CZR0V3cW.js.map} +1 -1
- package/dashboard/dist/assets/{useYamlActivityEvents-D-zuU9Ts.js → useYamlActivityEvents-DATwT-Bk.js} +2 -2
- package/dashboard/dist/assets/{useYamlActivityEvents-D-zuU9Ts.js.map → useYamlActivityEvents-DATwT-Bk.js.map} +1 -1
- package/dashboard/dist/assets/{users-DRkulG9o.js → users-DzO800OU.js} +2 -2
- package/dashboard/dist/assets/{users-DRkulG9o.js.map → users-DzO800OU.js.map} +1 -1
- package/dashboard/dist/assets/{workflows-dhvM792w.js → workflows-C093TSq9.js} +2 -2
- package/dashboard/dist/assets/{workflows-dhvM792w.js.map → workflows-C093TSq9.js.map} +1 -1
- package/dashboard/dist/assets/{yaml-workflows-DqbGpE2x.js → yaml-workflows-Du9N-ZOj.js} +2 -2
- package/dashboard/dist/assets/{yaml-workflows-DqbGpE2x.js.map → yaml-workflows-Du9N-ZOj.js.map} +1 -1
- package/dashboard/dist/index.html +6 -6
- package/package.json +1 -1
- package/dashboard/dist/assets/CredentialsPage-Dl15oW3U.js +0 -2
- package/dashboard/dist/assets/CredentialsPage-Dl15oW3U.js.map +0 -1
- package/dashboard/dist/assets/ListToolbar-YHesiWwN.js +0 -2
- package/dashboard/dist/assets/ListToolbar-YHesiWwN.js.map +0 -1
- package/dashboard/dist/assets/index-B7Vxutyl.js.map +0 -1
- package/dashboard/dist/assets/index-C7k3xfpt.js.map +0 -1
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { Router } from 'express';
|
|
2
|
+
import type { Server as HttpServer } from 'http';
|
|
3
|
+
/**
|
|
4
|
+
* Express adapter for mounting the Long Tail dashboard at an arbitrary subpath
|
|
5
|
+
* inside an existing Express-based application (NestJS, Fastify-Express, etc.).
|
|
6
|
+
*
|
|
7
|
+
* @example NestJS
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { LTExpressAdapter } from '@hotmeshio/long-tail';
|
|
10
|
+
*
|
|
11
|
+
* const adapter = new LTExpressAdapter();
|
|
12
|
+
* adapter.setBasePath('/admin/longtail');
|
|
13
|
+
*
|
|
14
|
+
* @Module({})
|
|
15
|
+
* export class LongTailUiModule implements NestModule {
|
|
16
|
+
* configure(consumer: MiddlewareConsumer) {
|
|
17
|
+
* consumer
|
|
18
|
+
* .apply(adapter.getRouter())
|
|
19
|
+
* .forRoutes('/admin/longtail');
|
|
20
|
+
* }
|
|
21
|
+
*
|
|
22
|
+
* async onModuleInit() {
|
|
23
|
+
* // Attach socket.io to the host's HTTP server for real-time events
|
|
24
|
+
* const httpServer = this.httpAdapterHost.httpAdapter.getHttpServer();
|
|
25
|
+
* await adapter.attachServer(httpServer);
|
|
26
|
+
* }
|
|
27
|
+
* }
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* @example Express
|
|
31
|
+
* ```typescript
|
|
32
|
+
* import { LTExpressAdapter } from '@hotmeshio/long-tail';
|
|
33
|
+
*
|
|
34
|
+
* const adapter = new LTExpressAdapter();
|
|
35
|
+
* adapter.setBasePath('/admin/longtail');
|
|
36
|
+
* app.use('/admin/longtail', adapter.getRouter());
|
|
37
|
+
*
|
|
38
|
+
* const server = app.listen(3000);
|
|
39
|
+
* await adapter.attachServer(server);
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
export declare class LTExpressAdapter {
|
|
43
|
+
private basePath;
|
|
44
|
+
/**
|
|
45
|
+
* Set the subpath where the dashboard is mounted.
|
|
46
|
+
* Omit or pass '' for root-level deployment (standalone mode).
|
|
47
|
+
*/
|
|
48
|
+
setBasePath(basePath: string): void;
|
|
49
|
+
/**
|
|
50
|
+
* Attach Socket.IO to the host's HTTP server for real-time events.
|
|
51
|
+
*
|
|
52
|
+
* When Long Tail is started with `server: { enabled: false }` (embedded mode),
|
|
53
|
+
* the internal server is not created. Call this after the host server is
|
|
54
|
+
* listening so Socket.IO can bind to it with the correct subpath.
|
|
55
|
+
*
|
|
56
|
+
* Safe to call even when no Socket.IO adapter is registered — it no-ops.
|
|
57
|
+
*/
|
|
58
|
+
attachServer(server: HttpServer): Promise<void>;
|
|
59
|
+
/**
|
|
60
|
+
* Return a self-contained Express Router that serves:
|
|
61
|
+
* - `/api/*` — Long Tail API routes (auth, tasks, escalations, etc.)
|
|
62
|
+
* - `/health` — health check
|
|
63
|
+
* - Static dashboard assets
|
|
64
|
+
* - SPA fallback with injected `<base href>` and `window.__LT_BASE__`
|
|
65
|
+
*/
|
|
66
|
+
getRouter(): Router;
|
|
67
|
+
private resolveDashboardDist;
|
|
68
|
+
}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.LTExpressAdapter = void 0;
|
|
40
|
+
const fs_1 = require("fs");
|
|
41
|
+
const path_1 = __importDefault(require("path"));
|
|
42
|
+
const express_1 = __importStar(require("express"));
|
|
43
|
+
const routes_1 = __importDefault(require("../routes"));
|
|
44
|
+
const events_1 = require("../lib/events");
|
|
45
|
+
const socketio_1 = require("../lib/events/socketio");
|
|
46
|
+
/**
|
|
47
|
+
* Express adapter for mounting the Long Tail dashboard at an arbitrary subpath
|
|
48
|
+
* inside an existing Express-based application (NestJS, Fastify-Express, etc.).
|
|
49
|
+
*
|
|
50
|
+
* @example NestJS
|
|
51
|
+
* ```typescript
|
|
52
|
+
* import { LTExpressAdapter } from '@hotmeshio/long-tail';
|
|
53
|
+
*
|
|
54
|
+
* const adapter = new LTExpressAdapter();
|
|
55
|
+
* adapter.setBasePath('/admin/longtail');
|
|
56
|
+
*
|
|
57
|
+
* @Module({})
|
|
58
|
+
* export class LongTailUiModule implements NestModule {
|
|
59
|
+
* configure(consumer: MiddlewareConsumer) {
|
|
60
|
+
* consumer
|
|
61
|
+
* .apply(adapter.getRouter())
|
|
62
|
+
* .forRoutes('/admin/longtail');
|
|
63
|
+
* }
|
|
64
|
+
*
|
|
65
|
+
* async onModuleInit() {
|
|
66
|
+
* // Attach socket.io to the host's HTTP server for real-time events
|
|
67
|
+
* const httpServer = this.httpAdapterHost.httpAdapter.getHttpServer();
|
|
68
|
+
* await adapter.attachServer(httpServer);
|
|
69
|
+
* }
|
|
70
|
+
* }
|
|
71
|
+
* ```
|
|
72
|
+
*
|
|
73
|
+
* @example Express
|
|
74
|
+
* ```typescript
|
|
75
|
+
* import { LTExpressAdapter } from '@hotmeshio/long-tail';
|
|
76
|
+
*
|
|
77
|
+
* const adapter = new LTExpressAdapter();
|
|
78
|
+
* adapter.setBasePath('/admin/longtail');
|
|
79
|
+
* app.use('/admin/longtail', adapter.getRouter());
|
|
80
|
+
*
|
|
81
|
+
* const server = app.listen(3000);
|
|
82
|
+
* await adapter.attachServer(server);
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
class LTExpressAdapter {
|
|
86
|
+
constructor() {
|
|
87
|
+
this.basePath = '';
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Set the subpath where the dashboard is mounted.
|
|
91
|
+
* Omit or pass '' for root-level deployment (standalone mode).
|
|
92
|
+
*/
|
|
93
|
+
setBasePath(basePath) {
|
|
94
|
+
this.basePath = basePath.replace(/\/+$/, '');
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Attach Socket.IO to the host's HTTP server for real-time events.
|
|
98
|
+
*
|
|
99
|
+
* When Long Tail is started with `server: { enabled: false }` (embedded mode),
|
|
100
|
+
* the internal server is not created. Call this after the host server is
|
|
101
|
+
* listening so Socket.IO can bind to it with the correct subpath.
|
|
102
|
+
*
|
|
103
|
+
* Safe to call even when no Socket.IO adapter is registered — it no-ops.
|
|
104
|
+
*/
|
|
105
|
+
async attachServer(server) {
|
|
106
|
+
const socketAdapter = events_1.eventRegistry.getAdapter(socketio_1.SocketIOEventAdapter);
|
|
107
|
+
if (socketAdapter) {
|
|
108
|
+
// Override the socket.io path to include the base path
|
|
109
|
+
if (this.basePath) {
|
|
110
|
+
socketAdapter.setPath(`${this.basePath}/socket.io`);
|
|
111
|
+
}
|
|
112
|
+
socketAdapter.attachServer(server);
|
|
113
|
+
await socketAdapter.connect();
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Return a self-contained Express Router that serves:
|
|
118
|
+
* - `/api/*` — Long Tail API routes (auth, tasks, escalations, etc.)
|
|
119
|
+
* - `/health` — health check
|
|
120
|
+
* - Static dashboard assets
|
|
121
|
+
* - SPA fallback with injected `<base href>` and `window.__LT_BASE__`
|
|
122
|
+
*/
|
|
123
|
+
getRouter() {
|
|
124
|
+
const router = (0, express_1.Router)();
|
|
125
|
+
router.use(express_1.default.json());
|
|
126
|
+
// Health check
|
|
127
|
+
router.get('/health', (_req, res) => {
|
|
128
|
+
res.json({ status: 'ok', timestamp: new Date().toISOString() });
|
|
129
|
+
});
|
|
130
|
+
// API routes — internal routes handle their own JWT auth
|
|
131
|
+
router.use('/api', routes_1.default);
|
|
132
|
+
// Dashboard static assets
|
|
133
|
+
const dashboardDist = this.resolveDashboardDist();
|
|
134
|
+
if (dashboardDist) {
|
|
135
|
+
router.use(express_1.default.static(dashboardDist));
|
|
136
|
+
// SPA fallback — inject base path into index.html
|
|
137
|
+
const indexHtml = (0, fs_1.readFileSync)(path_1.default.join(dashboardDist, 'index.html'), 'utf-8');
|
|
138
|
+
router.get('/{*splat}', (_req, res) => {
|
|
139
|
+
const html = indexHtml.replace('<head>', '<head>' +
|
|
140
|
+
`<base href="${this.basePath}/">` +
|
|
141
|
+
`<script>window.__LT_BASE__="${this.basePath}"</script>`);
|
|
142
|
+
res.type('html').send(html);
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
return router;
|
|
146
|
+
}
|
|
147
|
+
resolveDashboardDist() {
|
|
148
|
+
// Check multiple paths relative to the compiled output location:
|
|
149
|
+
// - Dev (ts-node from repo root): adapters/ -> dashboard/dist
|
|
150
|
+
// - Prod (node build/): build/adapters/ -> dashboard/dist
|
|
151
|
+
// - npm package: node_modules/@hotmeshio/long-tail/build/adapters/ -> dashboard/dist
|
|
152
|
+
const candidates = [
|
|
153
|
+
path_1.default.join(__dirname, '..', 'dashboard', 'dist'),
|
|
154
|
+
path_1.default.join(__dirname, '..', '..', 'dashboard', 'dist'),
|
|
155
|
+
];
|
|
156
|
+
for (const candidate of candidates) {
|
|
157
|
+
if ((0, fs_1.existsSync)(candidate))
|
|
158
|
+
return candidate;
|
|
159
|
+
}
|
|
160
|
+
return null;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
exports.LTExpressAdapter = LTExpressAdapter;
|
package/build/api/users.d.ts
CHANGED
|
@@ -43,6 +43,7 @@ export declare function createUser(input: {
|
|
|
43
43
|
external_id?: string;
|
|
44
44
|
email?: string;
|
|
45
45
|
display_name?: string;
|
|
46
|
+
password?: string;
|
|
46
47
|
roles?: {
|
|
47
48
|
role: string;
|
|
48
49
|
type: string;
|
|
@@ -65,6 +66,7 @@ export declare function updateUser(input: {
|
|
|
65
66
|
id: string;
|
|
66
67
|
email?: string;
|
|
67
68
|
display_name?: string;
|
|
69
|
+
password?: string;
|
|
68
70
|
status?: string;
|
|
69
71
|
metadata?: Record<string, any>;
|
|
70
72
|
}): Promise<LTApiResult>;
|
package/build/api/users.js
CHANGED
package/build/index.d.ts
CHANGED
package/build/index.js
CHANGED
|
@@ -37,7 +37,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
37
37
|
})();
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.getSystemWorkers = exports.registerMcpTool = exports.getToolContext = exports.getActivityIdentity = exports.McpEscalationStrategy = exports.DefaultEscalationStrategy = exports.escalationStrategyRegistry = exports.McpVisionServer = exports.McpTranslationServer = exports.McpServer = exports.McpClient = exports.McpService = exports.BuiltInMcpAdapter = exports.mcpRegistry = exports.defaultMaintenanceConfig = exports.maintenanceRegistry = exports.PinoLoggerAdapter = exports.loggerRegistry = exports.HoneycombTelemetryAdapter = exports.telemetryRegistry = exports.publishKnowledgeEvent = exports.publishAgentEvent = exports.publishWorkflowEvent = exports.publishActivityEvent = exports.publishEscalationEvent = exports.publishTaskEvent = exports.publishMilestoneEvent = exports.SocketIOEventAdapter = exports.InMemoryEventAdapter = exports.NatsEventAdapter = exports.eventRegistry = exports.ltConfig = exports.seedConfigTopics = exports.seedSystemTopics = exports.TopicService = exports.UserService = exports.ConfigService = exports.EscalationService = exports.TaskService = exports.signToken = exports.requireAdmin = exports.requireAuth = exports.createAuthMiddleware = exports.JwtAuthAdapter = exports.conditionLT = exports.executeLT = exports.createLTActivityInterceptor = exports.createLTInterceptor = exports.registerLT = exports.start = void 0;
|
|
40
|
-
exports.api = exports.KnowledgeApi = exports.resolveCredential = exports.mimeFromPath = exports.getStorageBackend = exports.listOAuthConnections = exports.getFreshAccessToken = exports.createClient = exports.CallbackEventAdapter = exports.builtinMcpServerFactories = exports.getSystemAgents = void 0;
|
|
40
|
+
exports.LTExpressAdapter = exports.api = exports.KnowledgeApi = exports.resolveCredential = exports.mimeFromPath = exports.getStorageBackend = exports.listOAuthConnections = exports.getFreshAccessToken = exports.createClient = exports.CallbackEventAdapter = exports.builtinMcpServerFactories = exports.getSystemAgents = void 0;
|
|
41
41
|
const config_1 = require("./modules/config");
|
|
42
42
|
const logger_1 = require("./lib/logger");
|
|
43
43
|
const start_1 = require("./start");
|
|
@@ -138,6 +138,8 @@ var credentials_1 = require("./services/iam/credentials");
|
|
|
138
138
|
Object.defineProperty(exports, "resolveCredential", { enumerable: true, get: function () { return credentials_1.resolveCredential; } });
|
|
139
139
|
exports.KnowledgeApi = __importStar(require("./api/knowledge"));
|
|
140
140
|
exports.api = __importStar(require("./api"));
|
|
141
|
+
var express_1 = require("./adapters/express");
|
|
142
|
+
Object.defineProperty(exports, "LTExpressAdapter", { enumerable: true, get: function () { return express_1.LTExpressAdapter; } });
|
|
141
143
|
// ─── Server ──────────────────────────────────────────────────────────────────
|
|
142
144
|
async function main() {
|
|
143
145
|
const honeycombKey = process.env.HONEYCOMB_API_KEY;
|
|
@@ -152,6 +154,14 @@ async function main() {
|
|
|
152
154
|
server: {
|
|
153
155
|
port: config_1.config.PORT,
|
|
154
156
|
},
|
|
157
|
+
seed: {
|
|
158
|
+
admin: {
|
|
159
|
+
externalId: 'superadmin',
|
|
160
|
+
displayName: 'Super Admin',
|
|
161
|
+
email: 'admin@longtail.local',
|
|
162
|
+
password: 'l0ngt@1l',
|
|
163
|
+
},
|
|
164
|
+
},
|
|
155
165
|
examples: true,
|
|
156
166
|
mcp: {
|
|
157
167
|
server: { enabled: true },
|
|
@@ -34,11 +34,14 @@ export declare class SocketIOEventAdapter implements LTEventAdapter {
|
|
|
34
34
|
private io;
|
|
35
35
|
private httpServer;
|
|
36
36
|
private authenticate;
|
|
37
|
+
private socketPath;
|
|
37
38
|
constructor(options?: {
|
|
38
39
|
authenticate?: SocketIOAuthenticator;
|
|
39
40
|
});
|
|
40
41
|
/** Attach to an HTTP server. Must be called before connect(). */
|
|
41
42
|
attachServer(server: HttpServer): void;
|
|
43
|
+
/** Override the socket.io path (for subpath-mounted deployments). */
|
|
44
|
+
setPath(socketPath: string): void;
|
|
42
45
|
connect(): Promise<void>;
|
|
43
46
|
publish(event: LTEvent): Promise<void>;
|
|
44
47
|
disconnect(): Promise<void>;
|
|
@@ -32,12 +32,17 @@ class SocketIOEventAdapter {
|
|
|
32
32
|
constructor(options) {
|
|
33
33
|
this.io = null;
|
|
34
34
|
this.httpServer = null;
|
|
35
|
+
this.socketPath = '/socket.io';
|
|
35
36
|
this.authenticate = options?.authenticate ?? null;
|
|
36
37
|
}
|
|
37
38
|
/** Attach to an HTTP server. Must be called before connect(). */
|
|
38
39
|
attachServer(server) {
|
|
39
40
|
this.httpServer = server;
|
|
40
41
|
}
|
|
42
|
+
/** Override the socket.io path (for subpath-mounted deployments). */
|
|
43
|
+
setPath(socketPath) {
|
|
44
|
+
this.socketPath = socketPath;
|
|
45
|
+
}
|
|
41
46
|
async connect() {
|
|
42
47
|
if (!this.httpServer) {
|
|
43
48
|
logger_1.loggerRegistry.warn('[lt-events:socketio] no HTTP server attached — skipping');
|
|
@@ -45,7 +50,7 @@ class SocketIOEventAdapter {
|
|
|
45
50
|
}
|
|
46
51
|
this.io = new socket_io_1.Server(this.httpServer, {
|
|
47
52
|
cors: { origin: '*', methods: ['GET', 'POST'] },
|
|
48
|
-
path:
|
|
53
|
+
path: this.socketPath,
|
|
49
54
|
transports: ['polling', 'websocket'],
|
|
50
55
|
allowEIO3: true,
|
|
51
56
|
});
|
|
@@ -98,6 +98,10 @@ async function updateUser(id, input) {
|
|
|
98
98
|
sets.push(`status = $${idx++}`);
|
|
99
99
|
values.push(input.status);
|
|
100
100
|
}
|
|
101
|
+
if (input.password !== undefined) {
|
|
102
|
+
sets.push(`password_hash = $${idx++}`);
|
|
103
|
+
values.push(await bcryptjs_1.default.hash(input.password, 10));
|
|
104
|
+
}
|
|
101
105
|
if (input.metadata !== undefined) {
|
|
102
106
|
sets.push(`metadata = $${idx++}`);
|
|
103
107
|
values.push(JSON.stringify(input.metadata));
|
|
@@ -3,3 +3,4 @@ export { createUser, getUser, getUserByExternalId, getUserByEmail, updateUser, d
|
|
|
3
3
|
export { isValidRoleType, addUserRole, removeUserRole, getUserRoles, hasRole, hasRoleType, } from './roles';
|
|
4
4
|
export { isSuperAdmin, isGroupAdmin, canManageRole } from './rbac';
|
|
5
5
|
export { verifyPassword } from './auth';
|
|
6
|
+
export { seedAdmin } from './seed-admin';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.verifyPassword = exports.canManageRole = exports.isGroupAdmin = exports.isSuperAdmin = exports.hasRoleType = exports.hasRole = exports.getUserRoles = exports.removeUserRole = exports.addUserRole = exports.isValidRoleType = exports.listUsers = exports.deleteUser = exports.updateUser = exports.getUserByEmail = exports.getUserByExternalId = exports.getUser = exports.createUser = exports.VALID_ROLE_TYPES = void 0;
|
|
3
|
+
exports.seedAdmin = exports.verifyPassword = exports.canManageRole = exports.isGroupAdmin = exports.isSuperAdmin = exports.hasRoleType = exports.hasRole = exports.getUserRoles = exports.removeUserRole = exports.addUserRole = exports.isValidRoleType = exports.listUsers = exports.deleteUser = exports.updateUser = exports.getUserByEmail = exports.getUserByExternalId = exports.getUser = exports.createUser = exports.VALID_ROLE_TYPES = void 0;
|
|
4
4
|
var types_1 = require("./types");
|
|
5
5
|
Object.defineProperty(exports, "VALID_ROLE_TYPES", { enumerable: true, get: function () { return types_1.VALID_ROLE_TYPES; } });
|
|
6
6
|
var crud_1 = require("./crud");
|
|
@@ -24,3 +24,5 @@ Object.defineProperty(exports, "isGroupAdmin", { enumerable: true, get: function
|
|
|
24
24
|
Object.defineProperty(exports, "canManageRole", { enumerable: true, get: function () { return rbac_1.canManageRole; } });
|
|
25
25
|
var auth_1 = require("./auth");
|
|
26
26
|
Object.defineProperty(exports, "verifyPassword", { enumerable: true, get: function () { return auth_1.verifyPassword; } });
|
|
27
|
+
var seed_admin_1 = require("./seed-admin");
|
|
28
|
+
Object.defineProperty(exports, "seedAdmin", { enumerable: true, get: function () { return seed_admin_1.seedAdmin; } });
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface SeedAdminInput {
|
|
2
|
+
externalId: string;
|
|
3
|
+
displayName?: string;
|
|
4
|
+
email?: string;
|
|
5
|
+
password?: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Seed a superadmin user. Idempotent — skips creation if the user
|
|
9
|
+
* already exists, but ensures the superadmin role is present.
|
|
10
|
+
*
|
|
11
|
+
* Returns the user's UUID so callers can pass it to `createClient()`.
|
|
12
|
+
*/
|
|
13
|
+
export declare function seedAdmin(input: SeedAdminInput): Promise<string>;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.seedAdmin = seedAdmin;
|
|
4
|
+
const logger_1 = require("../../lib/logger");
|
|
5
|
+
const role_1 = require("../role");
|
|
6
|
+
const crud_1 = require("./crud");
|
|
7
|
+
const roles_1 = require("./roles");
|
|
8
|
+
/**
|
|
9
|
+
* Seed a superadmin user. Idempotent — skips creation if the user
|
|
10
|
+
* already exists, but ensures the superadmin role is present.
|
|
11
|
+
*
|
|
12
|
+
* Returns the user's UUID so callers can pass it to `createClient()`.
|
|
13
|
+
*/
|
|
14
|
+
async function seedAdmin(input) {
|
|
15
|
+
const { externalId, displayName, email, password } = input;
|
|
16
|
+
// Ensure the superadmin role exists
|
|
17
|
+
try {
|
|
18
|
+
await (0, role_1.createRole)('superadmin');
|
|
19
|
+
}
|
|
20
|
+
catch { /* ON CONFLICT DO NOTHING */ }
|
|
21
|
+
const existing = await (0, crud_1.getUserByExternalId)(externalId);
|
|
22
|
+
if (existing) {
|
|
23
|
+
// Ensure existing user has the superadmin role
|
|
24
|
+
const roles = await (0, roles_1.getUserRoles)(existing.id);
|
|
25
|
+
const hasSuperadmin = roles.some((r) => r.role === 'superadmin' && r.type === 'superadmin');
|
|
26
|
+
if (!hasSuperadmin) {
|
|
27
|
+
await (0, roles_1.addUserRole)(existing.id, 'superadmin', 'superadmin');
|
|
28
|
+
logger_1.loggerRegistry.info(`[seed-admin] granted superadmin role to ${externalId}`);
|
|
29
|
+
}
|
|
30
|
+
logger_1.loggerRegistry.info(`[seed-admin] ${externalId} already exists, skipping creation`);
|
|
31
|
+
return existing.id;
|
|
32
|
+
}
|
|
33
|
+
const user = await (0, crud_1.createUser)({
|
|
34
|
+
external_id: externalId,
|
|
35
|
+
email: email || undefined,
|
|
36
|
+
display_name: displayName || externalId,
|
|
37
|
+
password: password || undefined,
|
|
38
|
+
roles: [{ role: 'superadmin', type: 'superadmin' }],
|
|
39
|
+
});
|
|
40
|
+
logger_1.loggerRegistry.info(`[seed-admin] created superadmin user: ${externalId}`);
|
|
41
|
+
return user.id;
|
|
42
|
+
}
|
package/build/start/index.js
CHANGED
|
@@ -67,7 +67,7 @@ async function start(startConfig) {
|
|
|
67
67
|
logger_1.loggerRegistry.info('[long-tail] starting...');
|
|
68
68
|
// 4-5. Collect workers, run migrations, start workers, seed data
|
|
69
69
|
const { workers, builtinMcpServerFactories } = await (0, workers_1.collectWorkers)(startConfig);
|
|
70
|
-
await (0, workers_1.startWorkers)(startConfig, workers, builtinMcpServerFactories);
|
|
70
|
+
const { adminUserId } = await (0, workers_1.startWorkers)(startConfig, workers, builtinMcpServerFactories);
|
|
71
71
|
// 6. Start embedded server (if enabled)
|
|
72
72
|
const serverEnabled = startConfig.server?.enabled !== false;
|
|
73
73
|
let httpServer = null;
|
|
@@ -107,5 +107,5 @@ async function start(startConfig) {
|
|
|
107
107
|
await hotmesh_1.Durable.shutdown();
|
|
108
108
|
logger_1.loggerRegistry.info('[long-tail] shutdown complete');
|
|
109
109
|
};
|
|
110
|
-
return { client, shutdown };
|
|
110
|
+
return { client, shutdown, adminUserId };
|
|
111
111
|
}
|
package/build/start/workers.d.ts
CHANGED
|
@@ -26,5 +26,7 @@ export declare function collectWorkers(startConfig: LTStartConfig): Promise<{
|
|
|
26
26
|
* Run database migrations, start all workers, connect adapters,
|
|
27
27
|
* register MCP server factories, and seed data.
|
|
28
28
|
*/
|
|
29
|
-
export declare function startWorkers(startConfig: LTStartConfig, workers: WorkerEntry[], builtinMcpServerFactories: Record<string, any>): Promise<
|
|
29
|
+
export declare function startWorkers(startConfig: LTStartConfig, workers: WorkerEntry[], builtinMcpServerFactories: Record<string, any>): Promise<{
|
|
30
|
+
adminUserId?: string;
|
|
31
|
+
}>;
|
|
30
32
|
export {};
|
package/build/start/workers.js
CHANGED
|
@@ -102,6 +102,15 @@ async function startWorkers(startConfig, workers, builtinMcpServerFactories) {
|
|
|
102
102
|
// Run migrations
|
|
103
103
|
logger_1.loggerRegistry.info('[long-tail] running migrations...');
|
|
104
104
|
await (0, migrate_1.migrate)();
|
|
105
|
+
// Seed admin user from config (idempotent, runs before workers)
|
|
106
|
+
let adminUserId;
|
|
107
|
+
if (startConfig.seed?.admin) {
|
|
108
|
+
const { seedAdmin } = await Promise.resolve().then(() => __importStar(require('../services/user/seed-admin')));
|
|
109
|
+
adminUserId = await seedAdmin(startConfig.seed.admin).catch((err) => {
|
|
110
|
+
logger_1.loggerRegistry.warn(`[long-tail] seed admin error: ${err.message}`);
|
|
111
|
+
return undefined;
|
|
112
|
+
});
|
|
113
|
+
}
|
|
105
114
|
const connection = buildConnection();
|
|
106
115
|
// Readonly mode: all user-provided workers are observers — skip crons, triggers, and agent seeding.
|
|
107
116
|
// System workers (mcpQuery, etc.) are always added by collectWorkers, so check the original config.
|
|
@@ -327,4 +336,5 @@ async function startWorkers(startConfig, workers, builtinMcpServerFactories) {
|
|
|
327
336
|
seedExamples(seedClient).catch((err) => logger_1.loggerRegistry.warn(`[long-tail] seed error: ${err.message}`));
|
|
328
337
|
}, 2000);
|
|
329
338
|
}
|
|
339
|
+
return { adminUserId };
|
|
330
340
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../index.ts","../vitest.config.ts","../vitest.integration.config.ts","../api/agent-subscriptions.ts","../api/agents.ts","../api/auth.ts","../api/bot-accounts.ts","../api/capabilities.ts","../api/controlplane.ts","../api/dba.ts","../api/exports.ts","../api/files.ts","../api/index.ts","../api/insight.ts","../api/knowledge.ts","../api/maintenance.ts","../api/mcp-runs.ts","../api/namespaces.ts","../api/roles.ts","../api/settings.ts","../api/tasks.ts","../api/topics.ts","../api/users.ts","../api/workflow-sets.ts","../api/escalations/bulk.ts","../api/escalations/claim.ts","../api/escalations/create.ts","../api/escalations/helpers.ts","../api/escalations/index.ts","../api/escalations/list.ts","../api/escalations/resolve.ts","../api/escalations/single.ts","../api/mcp/index.ts","../api/mcp/servers.ts","../api/mcp/tools.ts","../api/workflows/config.ts","../api/workflows/discovery.ts","../api/workflows/index.ts","../api/workflows/invocation.ts","../api/yaml-workflows/cron.ts","../api/yaml-workflows/crud.ts","../api/yaml-workflows/deploy.ts","../api/yaml-workflows/helpers.ts","../api/yaml-workflows/index.ts","../api/yaml-workflows/versions.ts","../bin/ltc.ts","../lib/cli/auth.ts","../lib/cli/client.ts","../lib/cli/compile.ts","../lib/cli/format.ts","../lib/cli/init.ts","../lib/cli/output.ts","../lib/cli/scanner.ts","../lib/cli/types.ts","../lib/cli/commands/escalations.ts","../lib/cli/commands/knowledge.ts","../lib/cli/commands/mcp.ts","../lib/cli/commands/pipelines.ts","../lib/cli/commands/status.ts","../lib/cli/commands/streams.ts","../lib/cli/commands/users.ts","../lib/cli/commands/workflows.ts","../lib/db/index.ts","../lib/db/migrate.ts","../lib/events/callback.ts","../lib/events/index.ts","../lib/events/matching.ts","../lib/events/memory.ts","../lib/events/nats.ts","../lib/events/publish.ts","../lib/events/socketio.ts","../lib/logger/index.ts","../lib/logger/pino.ts","../lib/storage/index.ts","../lib/storage/local.ts","../lib/storage/mime.ts","../lib/storage/s3.ts","../lib/storage/types.ts","../lib/telemetry/honeycomb.ts","../lib/telemetry/index.ts","../modules/auth.ts","../modules/config.ts","../modules/defaults.ts","../modules/ltconfig.ts","../modules/maintenance.ts","../modules/utils.ts","../routes/agents.ts","../routes/auth.ts","../routes/bot-accounts.ts","../routes/capabilities.ts","../routes/controlplane.ts","../routes/dba.ts","../routes/delegation.ts","../routes/docs.ts","../routes/exports.ts","../routes/file-browser.ts","../routes/files.ts","../routes/index.ts","../routes/insight.ts","../routes/knowledge.ts","../routes/maintenance.ts","../routes/mcp-runs.ts","../routes/mcp.ts","../routes/namespaces.ts","../routes/nats-credentials.ts","../routes/oauth.ts","../routes/roles.ts","../routes/settings.ts","../routes/tasks.ts","../routes/topics.ts","../routes/users.ts","../routes/workflow-sets.ts","../routes/escalations/bulk.ts","../routes/escalations/index.ts","../routes/escalations/list.ts","../routes/escalations/resolve.ts","../routes/escalations/single.ts","../routes/workflows/config.ts","../routes/workflows/discovery.ts","../routes/workflows/index.ts","../routes/workflows/invocation.ts","../routes/yaml-workflows/cron.ts","../routes/yaml-workflows/crud.ts","../routes/yaml-workflows/deployment.ts","../routes/yaml-workflows/index.ts","../routes/yaml-workflows/versions.ts","../scripts/process-helpers.ts","../scripts/process.ts","../scripts/token.ts","../sdk/index.ts","../services/dba.ts","../services/hotmesh-utils.ts","../services/workflow-invocation.ts","../services/agent/index.ts","../services/agent/input-mapper.ts","../services/agent/sql.ts","../services/agent/subscription-sql.ts","../services/agent/subscriptions.ts","../services/agent/trigger-registry.ts","../services/auth/bot-api-key.ts","../services/auth/delegation.ts","../services/auth/index.ts","../services/auth/service-token.ts","../services/config/cache.ts","../services/config/index.ts","../services/config/provider.ts","../services/config/read.ts","../services/config/sql.ts","../services/config/write.ts","../services/controlplane/index.ts","../services/controlplane/quorum-bridge.ts","../services/controlplane/sql.ts","../services/controlplane/stream-messages-sql.ts","../services/controlplane/types.ts","../services/cron/index.ts","../services/escalation/bulk.ts","../services/escalation/crud.ts","../services/escalation/index.ts","../services/escalation/queries.ts","../services/escalation/sql.ts","../services/escalation/types.ts","../services/escalation-strategy/default.ts","../services/escalation-strategy/index.ts","../services/escalation-strategy/mcp.ts","../services/export/client.ts","../services/export/index.ts","../services/export/post-process.ts","../services/export/types.ts","../services/iam/activity.ts","../services/iam/bots.ts","../services/iam/context.ts","../services/iam/credentials.ts","../services/iam/envelope.ts","../services/iam/ephemeral.ts","../services/iam/index.ts","../services/iam/principal.ts","../services/iam/resolve.ts","../services/iam/sql.ts","../services/insight/index.ts","../services/insight/prompts.ts","../services/interceptor/activity-interceptor.ts","../services/interceptor/completion.ts","../services/interceptor/context.ts","../services/interceptor/escalation.ts","../services/interceptor/index.ts","../services/interceptor/lifecycle.ts","../services/interceptor/state.ts","../services/interceptor/types.ts","../services/interceptor/activities/config.ts","../services/interceptor/activities/escalation.ts","../services/interceptor/activities/index.ts","../services/interceptor/activities/task.ts","../services/interceptor/activities/workflow.ts","../services/llm/detect.ts","../services/llm/index.ts","../services/llm/translate.ts","../services/llm/types.ts","../services/llm/providers/anthropic.ts","../services/llm/providers/openai.ts","../services/maintenance/index.ts","../services/mcp/adapter.ts","../services/mcp/db.ts","../services/mcp/index.ts","../services/mcp/register-tool.ts","../services/mcp/server-lifecycle.ts","../services/mcp/server-tools.ts","../services/mcp/server.ts","../services/mcp/sql.ts","../services/mcp/types.ts","../services/mcp/workflow-compiler-server.ts","../services/mcp/workflow-server.ts","../services/mcp/client/connection-dispatch.ts","../services/mcp/client/connection-lifecycle.ts","../services/mcp/client/connection-test.ts","../services/mcp/client/connection.ts","../services/mcp/client/index.ts","../services/mcp/client/tools.ts","../services/mcp/db-server/index.ts","../services/mcp/db-server/schemas.ts","../services/mcp/db-server/tools.ts","../services/mcp/playwright-server/index.ts","../services/mcp/playwright-server/lifecycle.ts","../services/mcp/playwright-server/schemas.ts","../services/mcp/playwright-server/tools.ts","../services/mcp-runs/enrichment.ts","../services/mcp-runs/events.ts","../services/mcp-runs/execution-builder.ts","../services/mcp-runs/index.ts","../services/mcp-runs/queries.ts","../services/mcp-runs/sql.ts","../services/mcp-runs/types.ts","../services/namespace/index.ts","../services/namespace/sql.ts","../services/namespace/types.ts","../services/oauth/crypto.ts","../services/oauth/db.ts","../services/oauth/index.ts","../services/oauth/sql.ts","../services/oauth/state.ts","../services/oauth/providers/anthropic.ts","../services/oauth/providers/github.ts","../services/oauth/providers/google.ts","../services/oauth/providers/index.ts","../services/oauth/providers/microsoft.ts","../services/oauth/providers/mock.ts","../services/oauth/providers/registry.ts","../services/oauth/providers/types.ts","../services/orchestrator/condition.ts","../services/orchestrator/index.ts","../services/orchestrator/types.ts","../services/role/index.ts","../services/role/sql.ts","../services/role/types.ts","../services/task/crud.ts","../services/task/index.ts","../services/task/process.ts","../services/task/resolve.ts","../services/task/sql.ts","../services/task/types.ts","../services/topics/index.ts","../services/topics/sql.ts","../services/topics/system-topics.ts","../services/user/auth.ts","../services/user/crud.ts","../services/user/index.ts","../services/user/rbac.ts","../services/user/roles.ts","../services/user/sql.ts","../services/user/types.ts","../services/workers/registry.ts","../services/workflow-sets/db.ts","../services/workflow-sets/index.ts","../services/workflow-sets/sql.ts","../services/yaml-workflow/builder-regenerate.ts","../services/yaml-workflow/db-utils.ts","../services/yaml-workflow/db-versions.ts","../services/yaml-workflow/db.ts","../services/yaml-workflow/deployer-helpers.ts","../services/yaml-workflow/deployer.ts","../services/yaml-workflow/generator.ts","../services/yaml-workflow/index.ts","../services/yaml-workflow/input-analyzer-helpers.ts","../services/yaml-workflow/input-analyzer.ts","../services/yaml-workflow/invoke.ts","../services/yaml-workflow/sql.ts","../services/yaml-workflow/types.ts","../services/yaml-workflow/durable-compiler/index.ts","../services/yaml-workflow/durable-compiler/parser.ts","../services/yaml-workflow/durable-compiler/prompts.ts","../services/yaml-workflow/durable-compiler/types.ts","../services/yaml-workflow/pattern-detector/array-source.ts","../services/yaml-workflow/pattern-detector/collapse.ts","../services/yaml-workflow/pattern-detector/index.ts","../services/yaml-workflow/pattern-detector/run-detection.ts","../services/yaml-workflow/pattern-detector/types.ts","../services/yaml-workflow/pipeline/analyze.ts","../services/yaml-workflow/pipeline/extract-helpers.ts","../services/yaml-workflow/pipeline/extract.ts","../services/yaml-workflow/pipeline/index.ts","../services/yaml-workflow/pipeline/prompt-templates.ts","../services/yaml-workflow/pipeline/prompts.ts","../services/yaml-workflow/pipeline/validate.ts","../services/yaml-workflow/pipeline/build/dag-assembly.ts","../services/yaml-workflow/pipeline/build/dag.ts","../services/yaml-workflow/pipeline/build/index.ts","../services/yaml-workflow/pipeline/build/iteration.ts","../services/yaml-workflow/pipeline/build/metadata.ts","../services/yaml-workflow/pipeline/build/transform.ts","../services/yaml-workflow/pipeline/build/utils.ts","../services/yaml-workflow/pipeline/build/wiring.ts","../services/yaml-workflow/pipeline/compile/index.ts","../services/yaml-workflow/pipeline/compile/llm-call.ts","../services/yaml-workflow/pipeline/compile/parse-plan.ts","../services/yaml-workflow/pipeline/compile/summarize.ts","../services/yaml-workflow/workers/callbacks.ts","../services/yaml-workflow/workers/events.ts","../services/yaml-workflow/workers/index.ts","../services/yaml-workflow/workers/register.ts","../services/yaml-workflow/workers/scope.ts","../start/adapters.ts","../start/config.ts","../start/index.ts","../start/server.ts","../start/socket-auth.ts","../start/workers.ts","../system/index.ts","../system/activities/claude-code.ts","../system/activities/file-storage.ts","../system/activities/http.ts","../system/activities/knowledge.ts","../system/activities/oauth.ts","../system/activities/schema-exchange.ts","../system/activities/sql.ts","../system/activities/triage/cache.ts","../system/activities/triage/context.ts","../system/activities/triage/discovery.ts","../system/activities/triage/index.ts","../system/activities/triage/llm.ts","../system/activities/triage/tools.ts","../system/mcp-servers/claude-code.ts","../system/mcp-servers/docs.ts","../system/mcp-servers/events.ts","../system/mcp-servers/file-storage.ts","../system/mcp-servers/http-fetch.ts","../system/mcp-servers/human-queue-schemas.ts","../system/mcp-servers/human-queue.ts","../system/mcp-servers/knowledge.ts","../system/mcp-servers/oauth.ts","../system/mcp-servers/schema-exchange.ts","../system/mcp-servers/translation.ts","../system/mcp-servers/vision-prompts.ts","../system/mcp-servers/vision.ts","../system/mcp-servers/workflow-compiler.ts","../system/mcp-servers/workflow.ts","../system/mcp-servers/admin/escalations.ts","../system/mcp-servers/admin/index.ts","../system/mcp-servers/admin/maintenance.ts","../system/mcp-servers/admin/mcp-servers.ts","../system/mcp-servers/admin/schemas.ts","../system/mcp-servers/admin/tasks.ts","../system/mcp-servers/admin/users.ts","../system/mcp-servers/admin/workflow-config.ts","../system/mcp-servers/admin/workflows.ts","../system/mcp-servers/admin/yaml-workflows.ts","../system/mcp-servers/db-query/index.ts","../system/mcp-servers/db-query/schemas.ts","../system/mcp-servers/db-query/tools.ts","../system/mcp-servers/playwright/browser-lifecycle.ts","../system/mcp-servers/playwright/index.ts","../system/mcp-servers/playwright/schemas.ts","../system/mcp-servers/playwright/tools-atomic.ts","../system/mcp-servers/playwright/tools-navigation.ts","../system/mcp-servers/playwright/tools-page-interaction.ts","../system/mcp-servers/playwright/tools-run-script.ts","../system/mcp-servers/playwright/types.ts","../system/mcp-servers/playwright/vision-helper.ts","../system/mcp-servers/playwright-cli/helpers.ts","../system/mcp-servers/playwright-cli/index.ts","../system/mcp-servers/playwright-cli/schemas.ts","../system/mcp-servers/playwright-cli/tools-auth.ts","../system/mcp-servers/playwright-cli/tools-capture.ts","../system/seed/index.ts","../system/seed/tool-manifests-admin.ts","../system/seed/tool-manifests-browser.ts","../system/seed/tool-manifests-data.ts","../system/seed/tool-manifests-escalation.ts","../system/seed/tool-manifests-events.ts","../system/seed/tool-manifests-knowledge.ts","../system/seed/tool-manifests-workflows.ts","../system/workflows/tool-result-guard.ts","../system/workflows/capability-invoke/activities.ts","../system/workflows/capability-invoke/index.ts","../system/workflows/mcp-deterministic/activities.ts","../system/workflows/mcp-deterministic/index.ts","../system/workflows/mcp-query/index.ts","../system/workflows/mcp-query/prompts.ts","../system/workflows/mcp-query/strategy-advisors.ts","../system/workflows/mcp-query/types.ts","../system/workflows/mcp-query/activities/caches.ts","../system/workflows/mcp-query/activities/discovery.ts","../system/workflows/mcp-query/activities/index.ts","../system/workflows/mcp-query/activities/llm.ts","../system/workflows/mcp-query/activities/tool-executor.ts","../system/workflows/mcp-query/activities/tool-loader.ts","../system/workflows/mcp-query-router/activities.ts","../system/workflows/mcp-query-router/index.ts","../system/workflows/mcp-query-router/prompts.ts","../system/workflows/mcp-triage/activities-proxy.ts","../system/workflows/mcp-triage/index.ts","../system/workflows/mcp-triage/prompts.ts","../system/workflows/mcp-triage/response-builders.ts","../system/workflows/mcp-triage/response.ts","../system/workflows/mcp-triage/types.ts","../system/workflows/mcp-triage-deterministic/activities.ts","../system/workflows/mcp-triage-deterministic/index.ts","../system/workflows/mcp-triage-router/activities.ts","../system/workflows/mcp-triage-router/index.ts","../system/workflows/mcp-workflow-builder/index.ts","../system/workflows/mcp-workflow-builder/prompts.ts","../system/workflows/mcp-workflow-builder/activities/caches.ts","../system/workflows/mcp-workflow-builder/activities/index.ts","../system/workflows/mcp-workflow-builder/activities/llm.ts","../system/workflows/mcp-workflow-builder/activities/tool-loader.ts","../system/workflows/mcp-workflow-planner/index.ts","../system/workflows/mcp-workflow-planner/prompts.ts","../system/workflows/mcp-workflow-planner/activities/analyze.ts","../system/workflows/mcp-workflow-planner/activities/index.ts","../system/workflows/mcp-workflow-planner/activities/persist.ts","../system/workflows/mcp-workflow-planner/activities/plan.ts","../system/workflows/shared/discovery.ts","../system/workflows/shared/index.ts","../system/workflows/shared/llm-caller.ts","../system/workflows/shared/prompts.ts","../system/workflows/shared/strategy-advisors.ts","../system/workflows/shared/tool-executor.ts","../system/workflows/shared/tool-loader.ts","../system/workflows/shared/types.ts","../types/agent.ts","../types/auth.ts","../types/config.ts","../types/delegation.ts","../types/discovery.ts","../types/envelope.ts","../types/escalation-strategy.ts","../types/escalation.ts","../types/events.ts","../types/export.ts","../types/express.d.ts","../types/index.ts","../types/logger.ts","../types/maintenance.ts","../types/mcp.ts","../types/oauth.ts","../types/sdk.ts","../types/startup.ts","../types/task.ts","../types/telemetry.ts","../types/tool-context.ts","../types/user.ts","../types/workflow-set.ts","../types/workflow.ts","../types/yaml-workflow.ts","../workers/index.ts"],"version":"5.9.3"}
|
|
1
|
+
{"root":["../index.ts","../vitest.config.ts","../vitest.integration.config.ts","../adapters/express.ts","../api/agent-subscriptions.ts","../api/agents.ts","../api/auth.ts","../api/bot-accounts.ts","../api/capabilities.ts","../api/controlplane.ts","../api/dba.ts","../api/exports.ts","../api/files.ts","../api/index.ts","../api/insight.ts","../api/knowledge.ts","../api/maintenance.ts","../api/mcp-runs.ts","../api/namespaces.ts","../api/roles.ts","../api/settings.ts","../api/tasks.ts","../api/topics.ts","../api/users.ts","../api/workflow-sets.ts","../api/escalations/bulk.ts","../api/escalations/claim.ts","../api/escalations/create.ts","../api/escalations/helpers.ts","../api/escalations/index.ts","../api/escalations/list.ts","../api/escalations/resolve.ts","../api/escalations/single.ts","../api/mcp/index.ts","../api/mcp/servers.ts","../api/mcp/tools.ts","../api/workflows/config.ts","../api/workflows/discovery.ts","../api/workflows/index.ts","../api/workflows/invocation.ts","../api/yaml-workflows/cron.ts","../api/yaml-workflows/crud.ts","../api/yaml-workflows/deploy.ts","../api/yaml-workflows/helpers.ts","../api/yaml-workflows/index.ts","../api/yaml-workflows/versions.ts","../bin/ltc.ts","../lib/cli/auth.ts","../lib/cli/client.ts","../lib/cli/compile.ts","../lib/cli/format.ts","../lib/cli/init.ts","../lib/cli/output.ts","../lib/cli/scanner.ts","../lib/cli/types.ts","../lib/cli/commands/escalations.ts","../lib/cli/commands/knowledge.ts","../lib/cli/commands/mcp.ts","../lib/cli/commands/pipelines.ts","../lib/cli/commands/status.ts","../lib/cli/commands/streams.ts","../lib/cli/commands/users.ts","../lib/cli/commands/workflows.ts","../lib/db/index.ts","../lib/db/migrate.ts","../lib/events/callback.ts","../lib/events/index.ts","../lib/events/matching.ts","../lib/events/memory.ts","../lib/events/nats.ts","../lib/events/publish.ts","../lib/events/socketio.ts","../lib/logger/index.ts","../lib/logger/pino.ts","../lib/storage/index.ts","../lib/storage/local.ts","../lib/storage/mime.ts","../lib/storage/s3.ts","../lib/storage/types.ts","../lib/telemetry/honeycomb.ts","../lib/telemetry/index.ts","../modules/auth.ts","../modules/config.ts","../modules/defaults.ts","../modules/ltconfig.ts","../modules/maintenance.ts","../modules/utils.ts","../routes/agents.ts","../routes/auth.ts","../routes/bot-accounts.ts","../routes/capabilities.ts","../routes/controlplane.ts","../routes/dba.ts","../routes/delegation.ts","../routes/docs.ts","../routes/exports.ts","../routes/file-browser.ts","../routes/files.ts","../routes/index.ts","../routes/insight.ts","../routes/knowledge.ts","../routes/maintenance.ts","../routes/mcp-runs.ts","../routes/mcp.ts","../routes/namespaces.ts","../routes/nats-credentials.ts","../routes/oauth.ts","../routes/roles.ts","../routes/settings.ts","../routes/tasks.ts","../routes/topics.ts","../routes/users.ts","../routes/workflow-sets.ts","../routes/escalations/bulk.ts","../routes/escalations/index.ts","../routes/escalations/list.ts","../routes/escalations/resolve.ts","../routes/escalations/single.ts","../routes/workflows/config.ts","../routes/workflows/discovery.ts","../routes/workflows/index.ts","../routes/workflows/invocation.ts","../routes/yaml-workflows/cron.ts","../routes/yaml-workflows/crud.ts","../routes/yaml-workflows/deployment.ts","../routes/yaml-workflows/index.ts","../routes/yaml-workflows/versions.ts","../scripts/process-helpers.ts","../scripts/process.ts","../scripts/token.ts","../sdk/index.ts","../services/dba.ts","../services/hotmesh-utils.ts","../services/workflow-invocation.ts","../services/agent/index.ts","../services/agent/input-mapper.ts","../services/agent/sql.ts","../services/agent/subscription-sql.ts","../services/agent/subscriptions.ts","../services/agent/trigger-registry.ts","../services/auth/bot-api-key.ts","../services/auth/delegation.ts","../services/auth/index.ts","../services/auth/service-token.ts","../services/config/cache.ts","../services/config/index.ts","../services/config/provider.ts","../services/config/read.ts","../services/config/sql.ts","../services/config/write.ts","../services/controlplane/index.ts","../services/controlplane/quorum-bridge.ts","../services/controlplane/sql.ts","../services/controlplane/stream-messages-sql.ts","../services/controlplane/types.ts","../services/cron/index.ts","../services/escalation/bulk.ts","../services/escalation/crud.ts","../services/escalation/index.ts","../services/escalation/queries.ts","../services/escalation/sql.ts","../services/escalation/types.ts","../services/escalation-strategy/default.ts","../services/escalation-strategy/index.ts","../services/escalation-strategy/mcp.ts","../services/export/client.ts","../services/export/index.ts","../services/export/post-process.ts","../services/export/types.ts","../services/iam/activity.ts","../services/iam/bots.ts","../services/iam/context.ts","../services/iam/credentials.ts","../services/iam/envelope.ts","../services/iam/ephemeral.ts","../services/iam/index.ts","../services/iam/principal.ts","../services/iam/resolve.ts","../services/iam/sql.ts","../services/insight/index.ts","../services/insight/prompts.ts","../services/interceptor/activity-interceptor.ts","../services/interceptor/completion.ts","../services/interceptor/context.ts","../services/interceptor/escalation.ts","../services/interceptor/index.ts","../services/interceptor/lifecycle.ts","../services/interceptor/state.ts","../services/interceptor/types.ts","../services/interceptor/activities/config.ts","../services/interceptor/activities/escalation.ts","../services/interceptor/activities/index.ts","../services/interceptor/activities/task.ts","../services/interceptor/activities/workflow.ts","../services/llm/detect.ts","../services/llm/index.ts","../services/llm/translate.ts","../services/llm/types.ts","../services/llm/providers/anthropic.ts","../services/llm/providers/openai.ts","../services/maintenance/index.ts","../services/mcp/adapter.ts","../services/mcp/db.ts","../services/mcp/index.ts","../services/mcp/register-tool.ts","../services/mcp/server-lifecycle.ts","../services/mcp/server-tools.ts","../services/mcp/server.ts","../services/mcp/sql.ts","../services/mcp/types.ts","../services/mcp/workflow-compiler-server.ts","../services/mcp/workflow-server.ts","../services/mcp/client/connection-dispatch.ts","../services/mcp/client/connection-lifecycle.ts","../services/mcp/client/connection-test.ts","../services/mcp/client/connection.ts","../services/mcp/client/index.ts","../services/mcp/client/tools.ts","../services/mcp/db-server/index.ts","../services/mcp/db-server/schemas.ts","../services/mcp/db-server/tools.ts","../services/mcp/playwright-server/index.ts","../services/mcp/playwright-server/lifecycle.ts","../services/mcp/playwright-server/schemas.ts","../services/mcp/playwright-server/tools.ts","../services/mcp-runs/enrichment.ts","../services/mcp-runs/events.ts","../services/mcp-runs/execution-builder.ts","../services/mcp-runs/index.ts","../services/mcp-runs/queries.ts","../services/mcp-runs/sql.ts","../services/mcp-runs/types.ts","../services/namespace/index.ts","../services/namespace/sql.ts","../services/namespace/types.ts","../services/oauth/crypto.ts","../services/oauth/db.ts","../services/oauth/index.ts","../services/oauth/sql.ts","../services/oauth/state.ts","../services/oauth/providers/anthropic.ts","../services/oauth/providers/github.ts","../services/oauth/providers/google.ts","../services/oauth/providers/index.ts","../services/oauth/providers/microsoft.ts","../services/oauth/providers/mock.ts","../services/oauth/providers/registry.ts","../services/oauth/providers/types.ts","../services/orchestrator/condition.ts","../services/orchestrator/index.ts","../services/orchestrator/types.ts","../services/role/index.ts","../services/role/sql.ts","../services/role/types.ts","../services/task/crud.ts","../services/task/index.ts","../services/task/process.ts","../services/task/resolve.ts","../services/task/sql.ts","../services/task/types.ts","../services/topics/index.ts","../services/topics/sql.ts","../services/topics/system-topics.ts","../services/user/auth.ts","../services/user/crud.ts","../services/user/index.ts","../services/user/rbac.ts","../services/user/roles.ts","../services/user/seed-admin.ts","../services/user/sql.ts","../services/user/types.ts","../services/workers/registry.ts","../services/workflow-sets/db.ts","../services/workflow-sets/index.ts","../services/workflow-sets/sql.ts","../services/yaml-workflow/builder-regenerate.ts","../services/yaml-workflow/db-utils.ts","../services/yaml-workflow/db-versions.ts","../services/yaml-workflow/db.ts","../services/yaml-workflow/deployer-helpers.ts","../services/yaml-workflow/deployer.ts","../services/yaml-workflow/generator.ts","../services/yaml-workflow/index.ts","../services/yaml-workflow/input-analyzer-helpers.ts","../services/yaml-workflow/input-analyzer.ts","../services/yaml-workflow/invoke.ts","../services/yaml-workflow/sql.ts","../services/yaml-workflow/types.ts","../services/yaml-workflow/durable-compiler/index.ts","../services/yaml-workflow/durable-compiler/parser.ts","../services/yaml-workflow/durable-compiler/prompts.ts","../services/yaml-workflow/durable-compiler/types.ts","../services/yaml-workflow/pattern-detector/array-source.ts","../services/yaml-workflow/pattern-detector/collapse.ts","../services/yaml-workflow/pattern-detector/index.ts","../services/yaml-workflow/pattern-detector/run-detection.ts","../services/yaml-workflow/pattern-detector/types.ts","../services/yaml-workflow/pipeline/analyze.ts","../services/yaml-workflow/pipeline/extract-helpers.ts","../services/yaml-workflow/pipeline/extract.ts","../services/yaml-workflow/pipeline/index.ts","../services/yaml-workflow/pipeline/prompt-templates.ts","../services/yaml-workflow/pipeline/prompts.ts","../services/yaml-workflow/pipeline/validate.ts","../services/yaml-workflow/pipeline/build/dag-assembly.ts","../services/yaml-workflow/pipeline/build/dag.ts","../services/yaml-workflow/pipeline/build/index.ts","../services/yaml-workflow/pipeline/build/iteration.ts","../services/yaml-workflow/pipeline/build/metadata.ts","../services/yaml-workflow/pipeline/build/transform.ts","../services/yaml-workflow/pipeline/build/utils.ts","../services/yaml-workflow/pipeline/build/wiring.ts","../services/yaml-workflow/pipeline/compile/index.ts","../services/yaml-workflow/pipeline/compile/llm-call.ts","../services/yaml-workflow/pipeline/compile/parse-plan.ts","../services/yaml-workflow/pipeline/compile/summarize.ts","../services/yaml-workflow/workers/callbacks.ts","../services/yaml-workflow/workers/events.ts","../services/yaml-workflow/workers/index.ts","../services/yaml-workflow/workers/register.ts","../services/yaml-workflow/workers/scope.ts","../start/adapters.ts","../start/config.ts","../start/index.ts","../start/server.ts","../start/socket-auth.ts","../start/workers.ts","../system/index.ts","../system/activities/claude-code.ts","../system/activities/file-storage.ts","../system/activities/http.ts","../system/activities/knowledge.ts","../system/activities/oauth.ts","../system/activities/schema-exchange.ts","../system/activities/sql.ts","../system/activities/triage/cache.ts","../system/activities/triage/context.ts","../system/activities/triage/discovery.ts","../system/activities/triage/index.ts","../system/activities/triage/llm.ts","../system/activities/triage/tools.ts","../system/mcp-servers/claude-code.ts","../system/mcp-servers/docs.ts","../system/mcp-servers/events.ts","../system/mcp-servers/file-storage.ts","../system/mcp-servers/http-fetch.ts","../system/mcp-servers/human-queue-schemas.ts","../system/mcp-servers/human-queue.ts","../system/mcp-servers/knowledge.ts","../system/mcp-servers/oauth.ts","../system/mcp-servers/schema-exchange.ts","../system/mcp-servers/translation.ts","../system/mcp-servers/vision-prompts.ts","../system/mcp-servers/vision.ts","../system/mcp-servers/workflow-compiler.ts","../system/mcp-servers/workflow.ts","../system/mcp-servers/admin/escalations.ts","../system/mcp-servers/admin/index.ts","../system/mcp-servers/admin/maintenance.ts","../system/mcp-servers/admin/mcp-servers.ts","../system/mcp-servers/admin/schemas.ts","../system/mcp-servers/admin/tasks.ts","../system/mcp-servers/admin/users.ts","../system/mcp-servers/admin/workflow-config.ts","../system/mcp-servers/admin/workflows.ts","../system/mcp-servers/admin/yaml-workflows.ts","../system/mcp-servers/db-query/index.ts","../system/mcp-servers/db-query/schemas.ts","../system/mcp-servers/db-query/tools.ts","../system/mcp-servers/playwright/browser-lifecycle.ts","../system/mcp-servers/playwright/index.ts","../system/mcp-servers/playwright/schemas.ts","../system/mcp-servers/playwright/tools-atomic.ts","../system/mcp-servers/playwright/tools-navigation.ts","../system/mcp-servers/playwright/tools-page-interaction.ts","../system/mcp-servers/playwright/tools-run-script.ts","../system/mcp-servers/playwright/types.ts","../system/mcp-servers/playwright/vision-helper.ts","../system/mcp-servers/playwright-cli/helpers.ts","../system/mcp-servers/playwright-cli/index.ts","../system/mcp-servers/playwright-cli/schemas.ts","../system/mcp-servers/playwright-cli/tools-auth.ts","../system/mcp-servers/playwright-cli/tools-capture.ts","../system/seed/index.ts","../system/seed/tool-manifests-admin.ts","../system/seed/tool-manifests-browser.ts","../system/seed/tool-manifests-data.ts","../system/seed/tool-manifests-escalation.ts","../system/seed/tool-manifests-events.ts","../system/seed/tool-manifests-knowledge.ts","../system/seed/tool-manifests-workflows.ts","../system/workflows/tool-result-guard.ts","../system/workflows/capability-invoke/activities.ts","../system/workflows/capability-invoke/index.ts","../system/workflows/mcp-deterministic/activities.ts","../system/workflows/mcp-deterministic/index.ts","../system/workflows/mcp-query/index.ts","../system/workflows/mcp-query/prompts.ts","../system/workflows/mcp-query/strategy-advisors.ts","../system/workflows/mcp-query/types.ts","../system/workflows/mcp-query/activities/caches.ts","../system/workflows/mcp-query/activities/discovery.ts","../system/workflows/mcp-query/activities/index.ts","../system/workflows/mcp-query/activities/llm.ts","../system/workflows/mcp-query/activities/tool-executor.ts","../system/workflows/mcp-query/activities/tool-loader.ts","../system/workflows/mcp-query-router/activities.ts","../system/workflows/mcp-query-router/index.ts","../system/workflows/mcp-query-router/prompts.ts","../system/workflows/mcp-triage/activities-proxy.ts","../system/workflows/mcp-triage/index.ts","../system/workflows/mcp-triage/prompts.ts","../system/workflows/mcp-triage/response-builders.ts","../system/workflows/mcp-triage/response.ts","../system/workflows/mcp-triage/types.ts","../system/workflows/mcp-triage-deterministic/activities.ts","../system/workflows/mcp-triage-deterministic/index.ts","../system/workflows/mcp-triage-router/activities.ts","../system/workflows/mcp-triage-router/index.ts","../system/workflows/mcp-workflow-builder/index.ts","../system/workflows/mcp-workflow-builder/prompts.ts","../system/workflows/mcp-workflow-builder/activities/caches.ts","../system/workflows/mcp-workflow-builder/activities/index.ts","../system/workflows/mcp-workflow-builder/activities/llm.ts","../system/workflows/mcp-workflow-builder/activities/tool-loader.ts","../system/workflows/mcp-workflow-planner/index.ts","../system/workflows/mcp-workflow-planner/prompts.ts","../system/workflows/mcp-workflow-planner/activities/analyze.ts","../system/workflows/mcp-workflow-planner/activities/index.ts","../system/workflows/mcp-workflow-planner/activities/persist.ts","../system/workflows/mcp-workflow-planner/activities/plan.ts","../system/workflows/shared/discovery.ts","../system/workflows/shared/index.ts","../system/workflows/shared/llm-caller.ts","../system/workflows/shared/prompts.ts","../system/workflows/shared/strategy-advisors.ts","../system/workflows/shared/tool-executor.ts","../system/workflows/shared/tool-loader.ts","../system/workflows/shared/types.ts","../types/agent.ts","../types/auth.ts","../types/config.ts","../types/delegation.ts","../types/discovery.ts","../types/envelope.ts","../types/escalation-strategy.ts","../types/escalation.ts","../types/events.ts","../types/export.ts","../types/express.d.ts","../types/index.ts","../types/logger.ts","../types/maintenance.ts","../types/mcp.ts","../types/oauth.ts","../types/sdk.ts","../types/startup.ts","../types/task.ts","../types/telemetry.ts","../types/tool-context.ts","../types/user.ts","../types/workflow-set.ts","../types/workflow.ts","../types/yaml-workflow.ts","../workers/index.ts"],"version":"5.9.3"}
|