@hotmeshio/long-tail 0.1.2 → 0.1.4
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/README.md +118 -173
- package/build/index.d.ts +1 -0
- package/build/index.js +3 -1
- package/build/services/mcp/register-tool.d.ts +11 -0
- package/build/services/mcp/register-tool.js +15 -0
- package/build/start/workers.js +7 -3
- package/build/tsconfig.tsbuildinfo +1 -1
- package/build/types/startup.d.ts +5 -0
- package/build/vitest.config.d.ts +1 -1
- package/build/vitest.integration.config.d.ts +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,230 +1,165 @@
|
|
|
1
1
|
# Long Tail
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Durable workflows with IAM, Human in the Loop, and MCP tool orchestration. Backed by PostgreSQL.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
```bash
|
|
6
|
+
npm install @hotmeshio/long-tail
|
|
7
|
+
```
|
|
6
8
|
|
|
7
|
-
|
|
9
|
+
## Use Long Tail for
|
|
8
10
|
|
|
9
|
-
|
|
11
|
+
- **Durable execution** — Your functions run as workflows and checkpoint to Postgres. If the process crashes, execution resumes from the last completed step.
|
|
12
|
+
- **Identity everywhere** — Workflows know who started them, whose credentials govern their execution, and what permissions are in play. IAM is not bolted on — it's woven into every activity call.
|
|
13
|
+
- **Human-in-the-loop** — When confidence is low, the workflow escalates. RBAC-scoped escalation chains route work to the right reviewer. Approval workflows, content review, document verification — the pattern is the same.
|
|
14
|
+
- **AI triage** — When human-in-the-loop teams can't resolve a request, AI takes over. Its tool calls are checkpointed. And when the fix works, it compiles into a deterministic pipeline for next time.
|
|
15
|
+
- **MCP tool orchestration** — Describe what you need. If you've registered the tools, the Pipeline Designer builds the workflow. Every compiled pipeline deploys as a reusable MCP tool.
|
|
10
16
|
|
|
11
|
-
|
|
12
|
-
git clone https://github.com/hotmeshio/long-tail.git
|
|
13
|
-
cd long-tail
|
|
14
|
-
docker compose up -d --build
|
|
15
|
-
```
|
|
17
|
+
A dashboard, REST API, and live event stream ship with the package. Use what you need.
|
|
16
18
|
|
|
17
|
-
|
|
19
|
+
## Start
|
|
18
20
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
| `reviewer` | `l0ngt@1l` | reviewer |
|
|
21
|
+
Point at Postgres. Everything else is optional.
|
|
22
|
+
|
|
23
|
+
```typescript
|
|
24
|
+
import { start } from '@hotmeshio/long-tail';
|
|
25
|
+
import * as myWorkflow from './workflows/my-workflow';
|
|
25
26
|
|
|
26
|
-
|
|
27
|
+
const lt = await start({
|
|
28
|
+
database: { host: 'localhost', port: 5432, user: 'postgres', password: 'password', database: 'mydb' },
|
|
29
|
+
workers: [{ taskQueue: 'default', workflow: myWorkflow.reviewContent }],
|
|
30
|
+
auth: { secret: process.env.JWT_SECRET },
|
|
31
|
+
});
|
|
32
|
+
```
|
|
27
33
|
|
|
28
|
-
|
|
34
|
+
Dashboard at [http://localhost:3000](http://localhost:3000). The [boilerplate](https://github.com/hotmeshio/long-tail-boilerplate) has a working project with custom MCP servers, MinIO, and example workflows.
|
|
29
35
|
|
|
30
|
-
|
|
36
|
+
## Write a Durable Workflow
|
|
31
37
|
|
|
32
|
-
|
|
38
|
+
A workflow receives an envelope and returns a result. Each activity call checkpoints — no work is lost, no step runs twice.
|
|
33
39
|
|
|
34
40
|
```typescript
|
|
35
41
|
import { Durable } from '@hotmeshio/hotmesh';
|
|
36
|
-
import type { LTEnvelope
|
|
42
|
+
import type { LTEnvelope } from '@hotmeshio/long-tail';
|
|
37
43
|
import * as activities from './activities';
|
|
38
44
|
|
|
39
|
-
const { analyzeContent } = Durable.workflow.proxyActivities<typeof activities>({
|
|
40
|
-
activities,
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
export async function reviewContent(
|
|
44
|
-
envelope: LTEnvelope,
|
|
45
|
-
): Promise<LTReturn | LTEscalation> {
|
|
46
|
-
|
|
47
|
-
// A resolved escalation re-enters here with the human's decision
|
|
48
|
-
if (envelope.resolver) {
|
|
49
|
-
return {
|
|
50
|
-
type: 'return',
|
|
51
|
-
data: {
|
|
52
|
-
...envelope.data,
|
|
53
|
-
resolution: envelope.resolver,
|
|
54
|
-
},
|
|
55
|
-
};
|
|
56
|
-
}
|
|
45
|
+
const { analyzeContent } = Durable.workflow.proxyActivities<typeof activities>({ activities });
|
|
57
46
|
|
|
47
|
+
export async function reviewContent(envelope: LTEnvelope) {
|
|
58
48
|
const analysis = await analyzeContent(envelope.data.content);
|
|
59
49
|
|
|
60
50
|
if (analysis.confidence >= 0.85) {
|
|
61
|
-
return {
|
|
62
|
-
type: 'return',
|
|
63
|
-
data: { approved: true, analysis },
|
|
64
|
-
};
|
|
51
|
+
return { type: 'return' as const, data: { approved: true, analysis } };
|
|
65
52
|
}
|
|
66
53
|
|
|
67
|
-
// Low confidence — escalate to a human reviewer
|
|
68
54
|
return {
|
|
69
|
-
type: 'escalation',
|
|
70
|
-
data: {
|
|
71
|
-
content: envelope.data.content,
|
|
72
|
-
analysis,
|
|
73
|
-
},
|
|
74
|
-
message: `Review needed (confidence: ${analysis.confidence})`,
|
|
55
|
+
type: 'escalation' as const,
|
|
75
56
|
role: 'reviewer',
|
|
57
|
+
message: `Review needed (confidence: ${analysis.confidence})`,
|
|
58
|
+
data: { content: envelope.data.content, analysis },
|
|
76
59
|
};
|
|
77
60
|
}
|
|
78
61
|
```
|
|
79
62
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
## Every Activity is a Tool
|
|
83
|
-
|
|
84
|
-
The `proxyActivities` call in the workflow above does more than checkpoint `analyzeContent` — it also registers it as an **MCP tool**. The function you write is both a durable workflow step and a tool that any agent, workflow, or compiled pipeline can invoke.
|
|
85
|
-
|
|
86
|
-
The same is true in reverse: register an MCP server and its tools become proxy activities automatically.
|
|
63
|
+
Activities are plain functions with side effects — API calls, LLM invocations, database queries. The `proxyActivities` call wraps them so the engine can checkpoint each result.
|
|
87
64
|
|
|
88
65
|
```typescript
|
|
89
|
-
//
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
const response = await llm.analyze(args.content);
|
|
94
|
-
return { category: response.category, confidence: response.confidence };
|
|
66
|
+
// activities.ts
|
|
67
|
+
export async function analyzeContent(content: string) {
|
|
68
|
+
const result = await llm.classify(content);
|
|
69
|
+
return { confidence: result.confidence, flags: result.flags };
|
|
95
70
|
}
|
|
96
71
|
```
|
|
97
72
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
This uniformity is what makes the system composable — and it's what closes the loop from uncertainty to automation.
|
|
101
|
-
|
|
102
|
-
See the [Architecture Guide](docs/architecture.md) for project structure, conventions, built-in servers, and tag-based tool discovery. See the [MCP Guide](docs/mcp.md) for server registration, tool calls, and the human queue protocol.
|
|
73
|
+
## Certify a Workflow
|
|
103
74
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
Register and start. MCP Servers initialize, workers start, and the API listens. The only infrastructure is PostgreSQL.
|
|
107
|
-
|
|
108
|
-
```typescript
|
|
109
|
-
import { start } from '@hotmeshio/long-tail';
|
|
110
|
-
import * as myWorkflow from './workflows/my-workflow';
|
|
111
|
-
|
|
112
|
-
const lt = await start({
|
|
113
|
-
database: {
|
|
114
|
-
host: 'localhost',
|
|
115
|
-
port: 5432,
|
|
116
|
-
user: 'postgres',
|
|
117
|
-
password: 'password',
|
|
118
|
-
database: 'mydb',
|
|
119
|
-
},
|
|
120
|
-
workers: [{
|
|
121
|
-
taskQueue: 'my-queue',
|
|
122
|
-
workflow: myWorkflow.reviewContent,
|
|
123
|
-
}],
|
|
124
|
-
});
|
|
75
|
+
Any durable workflow can be promoted to **certified** through the dashboard or API. A certified workflow gains interceptor guarantees: failures escalate instead of throwing, escalation chains route through roles, and every error is either handled or surfaced. It cannot silently fail.
|
|
125
76
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
}],
|
|
131
|
-
taskQueue: 'my-queue',
|
|
132
|
-
workflowName: 'reviewContent',
|
|
133
|
-
workflowId: `review-${Date.now()}`,
|
|
134
|
-
});
|
|
77
|
+
```bash
|
|
78
|
+
curl -X PUT http://localhost:3000/api/workflows/reviewContent/config \
|
|
79
|
+
-H "Authorization: Bearer $TOKEN" \
|
|
80
|
+
-d '{ "invocable": true, "task_queue": "default", "default_role": "reviewer" }'
|
|
135
81
|
```
|
|
136
82
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
## How the System Evolves
|
|
83
|
+
De-certifying removes the interceptor. The workflow continues as a standard durable workflow — same code, different guarantees.
|
|
140
84
|
|
|
141
|
-
|
|
85
|
+
## Register an MCP Server
|
|
142
86
|
|
|
143
|
-
|
|
87
|
+
Write an MCP server to expose your own tools. The `registerMcpTool` helper handles the SDK's type complexity.
|
|
144
88
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
89
|
+
```typescript
|
|
90
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
91
|
+
import { z } from 'zod';
|
|
92
|
+
import { registerMcpTool } from '@hotmeshio/long-tail';
|
|
93
|
+
|
|
94
|
+
export function createImageToolsServer(): McpServer {
|
|
95
|
+
const server = new McpServer({ name: 'image-tools', version: '1.0.0' });
|
|
96
|
+
|
|
97
|
+
registerMcpTool(server, 'resize_image', 'Resize an image.', {
|
|
98
|
+
path: z.string().describe('Path to the image'),
|
|
99
|
+
width: z.number().optional().describe('Target width'),
|
|
100
|
+
height: z.number().optional().describe('Target height'),
|
|
101
|
+
}, async (args: any) => ({
|
|
102
|
+
content: [{ type: 'text', text: JSON.stringify(await resize(args)) }],
|
|
103
|
+
}));
|
|
104
|
+
|
|
105
|
+
return server;
|
|
106
|
+
}
|
|
150
107
|
```
|
|
151
108
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
### 2. Triage
|
|
155
|
-
|
|
156
|
-
An upside-down page, a document in the wrong language, a missing API credential — the human flags `needsTriage` with a hint, and an AI triage agent takes over.
|
|
157
|
-
|
|
158
|
-
Because every activity is a tool, the triage agent already has what it needs. It queries the escalation history, discovers available tools by tag, and runs an agentic loop — rotate the page, re-extract data, call an external API, validate against a database. Every tool call is checkpointed. If the agent can't fix it either, it escalates to an engineer with a full diagnosis. The engineer might install a missing tool, fix a configuration, then send it back. The handoff is always bidirectional — human to AI, AI to human, human to different human — until the problem is resolved and the original workflow gets its answer.
|
|
109
|
+
Register it at startup and it appears in the dashboard:
|
|
159
110
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
extract_links(page) → step 2: extract_links
|
|
168
|
-
screenshot(link) × N step 3: screenshot (iterates over step 2 output)
|
|
111
|
+
```typescript
|
|
112
|
+
const lt = await start({
|
|
113
|
+
// ...
|
|
114
|
+
mcp: {
|
|
115
|
+
serverFactories: { 'image-tools': createImageToolsServer },
|
|
116
|
+
},
|
|
117
|
+
});
|
|
169
118
|
```
|
|
170
119
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
The compiled workflow deploys as a new MCP tool — tagged for discovery, versioned, and invocable by any agent, workflow, or API call. See the [Compilation Pipeline Guide](docs/compilation.md) for a detailed walkthrough with screenshots.
|
|
120
|
+
## Ask It Anything
|
|
174
121
|
|
|
175
|
-
|
|
122
|
+
Once your tools are registered, the Pipeline Designer orchestrates them. Describe what you need in plain language:
|
|
176
123
|
|
|
177
|
-
|
|
124
|
+
> *"Log into localhost:3000 as superadmin, navigate to every page in the sidebar, and save a screenshot of each."*
|
|
178
125
|
|
|
179
|
-
|
|
180
|
-
User prompt → Router → Discovery (FTS + tags) → LLM Judge (scope match?)
|
|
181
|
-
│ │
|
|
182
|
-
│ confidence ≥ 0.7 │ no match
|
|
183
|
-
▼ ▼
|
|
184
|
-
mcpDeterministic mcpQuery
|
|
185
|
-
(compiled YAML, no LLM) (dynamic, LLM agentic loop)
|
|
186
|
-
```
|
|
126
|
+
The system discovers the right MCP servers, calls the tools, chains the results. If it works, the compilation wizard converts the execution into a deterministic pipeline — parameterized inputs, typed schema, no LLM at runtime. It deploys as a new MCP tool that any workflow, agent, or API call can invoke.
|
|
187
127
|
|
|
188
|
-
The
|
|
128
|
+
The inventory of compiled tools grows over time. The need for LLM reasoning shrinks. Problems that once required a human, then required an AI, eventually require neither.
|
|
189
129
|
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
## Developer API
|
|
130
|
+
## Full Configuration
|
|
193
131
|
|
|
194
132
|
```typescript
|
|
195
|
-
import { start } from '@hotmeshio/long-tail';
|
|
196
|
-
|
|
197
133
|
const lt = await start({
|
|
198
134
|
database: { connectionString: process.env.DATABASE_URL },
|
|
199
|
-
workers: [{ taskQueue: '
|
|
135
|
+
workers: [{ taskQueue: 'default', workflow: myWorkflow.reviewContent }],
|
|
200
136
|
|
|
201
137
|
// Everything below is optional
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
138
|
+
mcp: {
|
|
139
|
+
server: { enabled: true },
|
|
140
|
+
serverFactories: { 'my-tools': createMyToolsServer },
|
|
141
|
+
},
|
|
142
|
+
escalation: { strategy: 'mcp' },
|
|
143
|
+
auth: { secret: process.env.JWT_SECRET },
|
|
144
|
+
telemetry: { honeycomb: { apiKey: process.env.HNY } },
|
|
145
|
+
logging: { pino: { level: 'info' } },
|
|
146
|
+
maintenance: true,
|
|
210
147
|
});
|
|
211
148
|
```
|
|
212
149
|
|
|
213
|
-
Every cross-cutting concern follows the same pattern: implement a typed interface, register at startup, done. Every workflow executes with identity context — who initiated the request, which user or bot it runs as, and what credentials it holds. Escalations carry the same context, so reviewers see exactly who triggered the work and what permissions were in play. See the [Docs](#docs) section for the full list of guides.
|
|
214
|
-
|
|
215
150
|
## Deployment
|
|
216
151
|
|
|
217
|
-
Two container types from the same codebase
|
|
152
|
+
Two container types from the same codebase:
|
|
218
153
|
|
|
219
154
|
```typescript
|
|
220
|
-
// api.ts —
|
|
155
|
+
// api.ts — dashboard + REST API
|
|
221
156
|
await start({ database: { connectionString: process.env.DATABASE_URL } });
|
|
222
157
|
|
|
223
158
|
// worker.ts — workflow execution, no HTTP server
|
|
224
159
|
await start({
|
|
225
160
|
database: { connectionString: process.env.DATABASE_URL },
|
|
226
161
|
server: { enabled: false },
|
|
227
|
-
workers: [{ taskQueue: '
|
|
162
|
+
workers: [{ taskQueue: 'default', workflow: reviewContent.reviewContent }],
|
|
228
163
|
});
|
|
229
164
|
```
|
|
230
165
|
|
|
@@ -234,29 +169,39 @@ Both share PostgreSQL and scale independently. See [Cloud Deployment](docs/cloud
|
|
|
234
169
|
|
|
235
170
|
| Guide | What it covers |
|
|
236
171
|
|-------|---------------|
|
|
237
|
-
| [
|
|
238
|
-
| [
|
|
239
|
-
| [
|
|
240
|
-
| [MCP](docs/mcp.md) | Server registration, tool calls, human queue
|
|
241
|
-
| [
|
|
242
|
-
| [
|
|
243
|
-
| [
|
|
244
|
-
| [
|
|
172
|
+
| [Workflows](docs/workflows.md) | Activities, interceptor, escalation lifecycle, composition |
|
|
173
|
+
| [IAM](docs/iam.md) | Identity propagation, service accounts, credential exchange |
|
|
174
|
+
| [Dashboard](docs/dashboard.md) | Navigation, key pages, event feed |
|
|
175
|
+
| [MCP](docs/mcp.md) | Server registration, tool calls, human queue |
|
|
176
|
+
| [Compilation](docs/compilation.md) | Dynamic → deterministic pipeline wizard |
|
|
177
|
+
| [Escalation Strategies](docs/escalation-strategies.md) | Default, MCP triage, custom handlers |
|
|
178
|
+
| [Architecture](docs/architecture.md) | Project structure, conventions, discovery |
|
|
179
|
+
| [Cloud](docs/cloud.md) | AWS ECS, GCP Cloud Run, Docker |
|
|
180
|
+
| [Data Model](docs/data.md) | Database schema |
|
|
245
181
|
|
|
246
|
-
|
|
182
|
+
**Adapters:** [Auth](docs/auth.md) · [Events](docs/events.md) · [Telemetry](docs/telemetry.md) · [Logging](docs/logging.md) · [Maintenance](docs/maintenance.md) · [OAuth](docs/oauth-and-delegation.md)
|
|
247
183
|
|
|
248
|
-
[
|
|
184
|
+
**API:** [Workflows](docs/api/workflows.md) · [Tasks](docs/api/tasks.md) · [Escalations](docs/api/escalations.md) · [YAML Workflows](docs/api/yaml-workflows.md) · [Users](docs/api/users.md) · [Roles](docs/api/roles.md) · [Service Accounts](docs/api/service-accounts.md) · [MCP Servers](docs/api/mcp-servers.md) · [MCP Runs](docs/api/mcp-runs.md) · [Exports](docs/api/exports.md)
|
|
249
185
|
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
[Workflows](docs/api/workflows.md) | [Tasks](docs/api/tasks.md) | [Escalations](docs/api/escalations.md) | [YAML Workflows](docs/api/yaml-workflows.md) | [Users](docs/api/users.md) | [Roles](docs/api/roles.md) | [MCP Servers](docs/api/mcp-servers.md) | [MCP Runs](docs/api/mcp-runs.md) | [Namespaces](docs/api/namespaces.md) | [Settings](docs/api/settings.md) | [Maintenance](docs/api/maintenance.md) | [DBA](docs/api/dba.md) | [Exports](docs/api/exports.md)
|
|
253
|
-
|
|
254
|
-
## Install
|
|
186
|
+
## Contributing
|
|
255
187
|
|
|
256
188
|
```bash
|
|
257
|
-
|
|
189
|
+
git clone https://github.com/hotmeshio/long-tail.git
|
|
190
|
+
cd long-tail
|
|
191
|
+
docker compose up -d --build
|
|
258
192
|
```
|
|
259
193
|
|
|
194
|
+
Open [http://localhost:3000](http://localhost:3000). Example workflows seed the dashboard.
|
|
195
|
+
|
|
196
|
+
| User | Password | Role |
|
|
197
|
+
|------|----------|------|
|
|
198
|
+
| `superadmin` | `l0ngt@1l` | superadmin |
|
|
199
|
+
| `admin` | `l0ngt@1l` | admin |
|
|
200
|
+
| `engineer` | `l0ngt@1l` | engineer |
|
|
201
|
+
| `reviewer` | `l0ngt@1l` | reviewer |
|
|
202
|
+
|
|
203
|
+
See [Contributing](docs/contributing.md).
|
|
204
|
+
|
|
260
205
|
## License
|
|
261
206
|
|
|
262
207
|
See [LICENSE](LICENSE).
|
package/build/index.d.ts
CHANGED
|
@@ -33,5 +33,6 @@ export { McpEscalationStrategy } from './services/escalation-strategy/mcp';
|
|
|
33
33
|
export { exampleWorkers, seedExamples } from './examples';
|
|
34
34
|
export { getActivityIdentity } from './services/iam/activity';
|
|
35
35
|
export { getToolContext } from './services/iam/context';
|
|
36
|
+
export { registerMcpTool } from './services/mcp/register-tool';
|
|
36
37
|
export { getSystemWorkers, builtinMcpServerFactories } from './system';
|
|
37
38
|
export { seedSystemMcpServers } from './system/seed';
|
package/build/index.js
CHANGED
|
@@ -36,7 +36,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
36
36
|
};
|
|
37
37
|
})();
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.seedSystemMcpServers = exports.builtinMcpServerFactories = exports.getSystemWorkers = exports.getToolContext = exports.getActivityIdentity = exports.seedExamples = exports.exampleWorkers = exports.McpEscalationStrategy = exports.DefaultEscalationStrategy = exports.escalationStrategyRegistry = exports.McpVisionServer = exports.McpServer = exports.McpClient = exports.McpService = exports.BuiltInMcpAdapter = exports.mcpRegistry = exports.defaultMaintenanceConfig = exports.maintenanceRegistry = exports.PinoLoggerAdapter = exports.loggerRegistry = exports.HoneycombTelemetryAdapter = exports.telemetryRegistry = exports.publishWorkflowEvent = exports.publishEscalationEvent = exports.publishTaskEvent = exports.publishMilestoneEvent = exports.SocketIOEventAdapter = exports.InMemoryEventAdapter = exports.NatsEventAdapter = exports.eventRegistry = exports.ltConfig = exports.UserService = exports.ConfigService = exports.EscalationService = exports.TaskService = exports.signToken = exports.requireAdmin = exports.requireAuth = exports.createAuthMiddleware = exports.JwtAuthAdapter = exports.executeLT = exports.createLTActivityInterceptor = exports.createLTInterceptor = exports.registerLT = exports.start = void 0;
|
|
39
|
+
exports.seedSystemMcpServers = exports.builtinMcpServerFactories = exports.getSystemWorkers = exports.registerMcpTool = exports.getToolContext = exports.getActivityIdentity = exports.seedExamples = exports.exampleWorkers = exports.McpEscalationStrategy = exports.DefaultEscalationStrategy = exports.escalationStrategyRegistry = exports.McpVisionServer = exports.McpServer = exports.McpClient = exports.McpService = exports.BuiltInMcpAdapter = exports.mcpRegistry = exports.defaultMaintenanceConfig = exports.maintenanceRegistry = exports.PinoLoggerAdapter = exports.loggerRegistry = exports.HoneycombTelemetryAdapter = exports.telemetryRegistry = exports.publishWorkflowEvent = exports.publishEscalationEvent = exports.publishTaskEvent = exports.publishMilestoneEvent = exports.SocketIOEventAdapter = exports.InMemoryEventAdapter = exports.NatsEventAdapter = exports.eventRegistry = exports.ltConfig = exports.UserService = exports.ConfigService = exports.EscalationService = exports.TaskService = exports.signToken = exports.requireAdmin = exports.requireAuth = exports.createAuthMiddleware = exports.JwtAuthAdapter = exports.executeLT = exports.createLTActivityInterceptor = exports.createLTInterceptor = exports.registerLT = exports.start = void 0;
|
|
40
40
|
const config_1 = require("./modules/config");
|
|
41
41
|
const logger_1 = require("./services/logger");
|
|
42
42
|
const start_1 = require("./start");
|
|
@@ -109,6 +109,8 @@ var activity_1 = require("./services/iam/activity");
|
|
|
109
109
|
Object.defineProperty(exports, "getActivityIdentity", { enumerable: true, get: function () { return activity_1.getActivityIdentity; } });
|
|
110
110
|
var context_1 = require("./services/iam/context");
|
|
111
111
|
Object.defineProperty(exports, "getToolContext", { enumerable: true, get: function () { return context_1.getToolContext; } });
|
|
112
|
+
var register_tool_1 = require("./services/mcp/register-tool");
|
|
113
|
+
Object.defineProperty(exports, "registerMcpTool", { enumerable: true, get: function () { return register_tool_1.registerMcpTool; } });
|
|
112
114
|
var system_1 = require("./system");
|
|
113
115
|
Object.defineProperty(exports, "getSystemWorkers", { enumerable: true, get: function () { return system_1.getSystemWorkers; } });
|
|
114
116
|
Object.defineProperty(exports, "builtinMcpServerFactories", { enumerable: true, get: function () { return system_1.builtinMcpServerFactories; } });
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Register a tool on an McpServer, bypassing the SDK's generic type
|
|
3
|
+
* inference that causes TypeScript to OOM during compilation.
|
|
4
|
+
*
|
|
5
|
+
* The MCP SDK's .tool() signatures use deeply nested Zod generics
|
|
6
|
+
* that trigger unbounded type expansion in tsc. Routing through
|
|
7
|
+
* `any` avoids this. Runtime validation is unaffected — the SDK
|
|
8
|
+
* still validates inputs against the Zod schemas at call time.
|
|
9
|
+
*/
|
|
10
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
11
|
+
export declare const registerMcpTool: (server: McpServer, ...args: any[]) => any;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Register a tool on an McpServer, bypassing the SDK's generic type
|
|
4
|
+
* inference that causes TypeScript to OOM during compilation.
|
|
5
|
+
*
|
|
6
|
+
* The MCP SDK's .tool() signatures use deeply nested Zod generics
|
|
7
|
+
* that trigger unbounded type expansion in tsc. Routing through
|
|
8
|
+
* `any` avoids this. Runtime validation is unaffected — the SDK
|
|
9
|
+
* still validates inputs against the Zod schemas at call time.
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.registerMcpTool = void 0;
|
|
13
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
14
|
+
const registerMcpTool = (server, ...args) => server.tool(...args);
|
|
15
|
+
exports.registerMcpTool = registerMcpTool;
|
package/build/start/workers.js
CHANGED
|
@@ -118,12 +118,16 @@ async function startWorkers(startConfig, workers, builtinMcpServerFactories) {
|
|
|
118
118
|
await mcp_1.mcpRegistry.connect();
|
|
119
119
|
logger_1.loggerRegistry.info('[long-tail] MCP adapter connected');
|
|
120
120
|
}
|
|
121
|
-
// Register
|
|
121
|
+
// Register MCP server factories: built-in (from system/) + user-provided
|
|
122
122
|
const { registerBuiltinServer } = await Promise.resolve().then(() => __importStar(require('../services/mcp/client')));
|
|
123
|
-
|
|
123
|
+
const allFactories = {
|
|
124
|
+
...builtinMcpServerFactories,
|
|
125
|
+
...(startConfig.mcp?.serverFactories ?? {}),
|
|
126
|
+
};
|
|
127
|
+
for (const [name, factory] of Object.entries(allFactories)) {
|
|
124
128
|
registerBuiltinServer(name, factory);
|
|
125
129
|
}
|
|
126
|
-
logger_1.loggerRegistry.info(`[long-tail] ${Object.keys(
|
|
130
|
+
logger_1.loggerRegistry.info(`[long-tail] ${Object.keys(allFactories).length} MCP server factories registered`);
|
|
127
131
|
// Register workers for active YAML (deterministic) workflows
|
|
128
132
|
await yamlWorkflowWorkers.registerAllActiveWorkers();
|
|
129
133
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../index.ts","../vitest.config.ts","../vitest.integration.config.ts","../examples/index.ts","../examples/seed.ts","../examples/workers.ts","../examples/external-mcp-server/server.ts","../examples/types/envelopes.ts","../examples/types/index.ts","../examples/types/resolvers.ts","../examples/workflows/basic-echo/activities.ts","../examples/workflows/basic-echo/index.ts","../examples/workflows/kitchen-sink/activities.ts","../examples/workflows/kitchen-sink/index.ts","../examples/workflows/review-content/activities.ts","../examples/workflows/review-content/index.ts","../examples/workflows/review-content/types.ts","../modules/auth.ts","../modules/config.ts","../modules/defaults.ts","../modules/ltconfig.ts","../modules/maintenance.ts","../routes/auth.ts","../routes/bot-accounts.ts","../routes/controlplane.ts","../routes/dba.ts","../routes/delegation.ts","../routes/exports.ts","../routes/files.ts","../routes/index.ts","../routes/insight.ts","../routes/maintenance.ts","../routes/mcp-runs.ts","../routes/mcp.ts","../routes/namespaces.ts","../routes/oauth.ts","../routes/resolve.ts","../routes/roles.ts","../routes/settings.ts","../routes/tasks.ts","../routes/users.ts","../routes/escalations/bulk.ts","../routes/escalations/helpers.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/crud.ts","../routes/yaml-workflows/deployment.ts","../routes/yaml-workflows/helpers.ts","../routes/yaml-workflows/index.ts","../routes/yaml-workflows/versions.ts","../scripts/process-helpers.ts","../scripts/process.ts","../scripts/token.ts","../services/dba.ts","../services/hotmesh-utils.ts","../services/workflow-invocation.ts","../services/auth/bot-api-key.ts","../services/auth/delegation.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/types.ts","../services/cron/index.ts","../services/db/index.ts","../services/db/migrate.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/events/index.ts","../services/events/memory.ts","../services/events/nats.ts","../services/events/publish.ts","../services/events/socketio.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/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/logger/index.ts","../services/logger/pino.ts","../services/maintenance/index.ts","../services/mcp/adapter.ts","../services/mcp/db.ts","../services/mcp/index.ts","../services/mcp/server.ts","../services/mcp/sql.ts","../services/mcp/types.ts","../services/mcp/vision-server.ts","../services/mcp/workflow-compiler-server.ts","../services/mcp/workflow-server.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/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/index.ts","../services/orchestrator/types.ts","../services/role/index.ts","../services/role/sql.ts","../services/role/types.ts","../services/storage/index.ts","../services/storage/local.ts","../services/storage/s3.ts","../services/storage/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/telemetry/honeycomb.ts","../services/telemetry/index.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/yaml-workflow/db-utils.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/sql.ts","../services/yaml-workflow/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/prompts.ts","../services/yaml-workflow/pipeline/validate.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/workers.ts","../system/index.ts","../system/activities/claude-code.ts","../system/activities/file-storage.ts","../system/activities/http.ts","../system/activities/oauth.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/document-vision.ts","../system/mcp-servers/file-storage.ts","../system/mcp-servers/http-fetch.ts","../system/mcp-servers/human-queue.ts","../system/mcp-servers/oauth.ts","../system/mcp-servers/prompts.ts","../system/mcp-servers/workflow-compiler.ts","../system/mcp-servers/workflow.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-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/server-definitions.ts","../system/seed/tool-manifests-browser.ts","../system/seed/tool-manifests-data.ts","../system/seed/tool-manifests-escalation.ts","../system/seed/tool-manifests-workflows.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/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","../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/startup.ts","../types/task.ts","../types/telemetry.ts","../types/tool-context.ts","../types/user.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","../examples/index.ts","../examples/seed.ts","../examples/workers.ts","../examples/external-mcp-server/server.ts","../examples/types/envelopes.ts","../examples/types/index.ts","../examples/types/resolvers.ts","../examples/workflows/basic-echo/activities.ts","../examples/workflows/basic-echo/index.ts","../examples/workflows/kitchen-sink/activities.ts","../examples/workflows/kitchen-sink/index.ts","../examples/workflows/review-content/activities.ts","../examples/workflows/review-content/index.ts","../examples/workflows/review-content/types.ts","../modules/auth.ts","../modules/config.ts","../modules/defaults.ts","../modules/ltconfig.ts","../modules/maintenance.ts","../routes/auth.ts","../routes/bot-accounts.ts","../routes/controlplane.ts","../routes/dba.ts","../routes/delegation.ts","../routes/exports.ts","../routes/files.ts","../routes/index.ts","../routes/insight.ts","../routes/maintenance.ts","../routes/mcp-runs.ts","../routes/mcp.ts","../routes/namespaces.ts","../routes/oauth.ts","../routes/resolve.ts","../routes/roles.ts","../routes/settings.ts","../routes/tasks.ts","../routes/users.ts","../routes/escalations/bulk.ts","../routes/escalations/helpers.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/crud.ts","../routes/yaml-workflows/deployment.ts","../routes/yaml-workflows/helpers.ts","../routes/yaml-workflows/index.ts","../routes/yaml-workflows/versions.ts","../scripts/process-helpers.ts","../scripts/process.ts","../scripts/token.ts","../services/dba.ts","../services/hotmesh-utils.ts","../services/workflow-invocation.ts","../services/auth/bot-api-key.ts","../services/auth/delegation.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/types.ts","../services/cron/index.ts","../services/db/index.ts","../services/db/migrate.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/events/index.ts","../services/events/memory.ts","../services/events/nats.ts","../services/events/publish.ts","../services/events/socketio.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/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/logger/index.ts","../services/logger/pino.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.ts","../services/mcp/sql.ts","../services/mcp/types.ts","../services/mcp/vision-server.ts","../services/mcp/workflow-compiler-server.ts","../services/mcp/workflow-server.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/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/index.ts","../services/orchestrator/types.ts","../services/role/index.ts","../services/role/sql.ts","../services/role/types.ts","../services/storage/index.ts","../services/storage/local.ts","../services/storage/s3.ts","../services/storage/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/telemetry/honeycomb.ts","../services/telemetry/index.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/yaml-workflow/db-utils.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/sql.ts","../services/yaml-workflow/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/prompts.ts","../services/yaml-workflow/pipeline/validate.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/workers.ts","../system/index.ts","../system/activities/claude-code.ts","../system/activities/file-storage.ts","../system/activities/http.ts","../system/activities/oauth.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/document-vision.ts","../system/mcp-servers/file-storage.ts","../system/mcp-servers/http-fetch.ts","../system/mcp-servers/human-queue.ts","../system/mcp-servers/oauth.ts","../system/mcp-servers/prompts.ts","../system/mcp-servers/workflow-compiler.ts","../system/mcp-servers/workflow.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-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/server-definitions.ts","../system/seed/tool-manifests-browser.ts","../system/seed/tool-manifests-data.ts","../system/seed/tool-manifests-escalation.ts","../system/seed/tool-manifests-workflows.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/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","../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/startup.ts","../types/task.ts","../types/telemetry.ts","../types/tool-context.ts","../types/user.ts","../types/workflow.ts","../types/yaml-workflow.ts","../workers/index.ts"],"version":"5.9.3"}
|
package/build/types/startup.d.ts
CHANGED
|
@@ -98,6 +98,11 @@ export interface LTStartConfig {
|
|
|
98
98
|
};
|
|
99
99
|
/** MCP server IDs to auto-connect on startup. */
|
|
100
100
|
autoConnect?: string[];
|
|
101
|
+
/**
|
|
102
|
+
* Custom MCP server factories to register alongside the built-in ones.
|
|
103
|
+
* Key = server name, value = factory function returning an McpServer instance.
|
|
104
|
+
*/
|
|
105
|
+
serverFactories?: Record<string, () => any>;
|
|
101
106
|
/** Replace the built-in MCP adapter entirely. */
|
|
102
107
|
adapter?: LTMcpAdapter;
|
|
103
108
|
};
|
package/build/vitest.config.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const _default:
|
|
1
|
+
declare const _default: UserConfig;
|
|
2
2
|
export default _default;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const _default:
|
|
1
|
+
declare const _default: UserConfig;
|
|
2
2
|
export default _default;
|
package/package.json
CHANGED