@anastops/mcp-server 0.1.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/formatters.d.ts.map +1 -1
- package/dist/formatters.js +12 -3
- package/dist/formatters.js.map +1 -1
- package/dist/handlers/agent-handlers.d.ts +8 -0
- package/dist/handlers/agent-handlers.d.ts.map +1 -0
- package/dist/handlers/agent-handlers.js +184 -0
- package/dist/handlers/agent-handlers.js.map +1 -0
- package/dist/handlers/artifact-handlers.d.ts +8 -0
- package/dist/handlers/artifact-handlers.d.ts.map +1 -0
- package/dist/handlers/artifact-handlers.js +122 -0
- package/dist/handlers/artifact-handlers.js.map +1 -0
- package/dist/handlers/cost-handlers.d.ts +8 -0
- package/dist/handlers/cost-handlers.d.ts.map +1 -0
- package/dist/handlers/cost-handlers.js +140 -0
- package/dist/handlers/cost-handlers.js.map +1 -0
- package/dist/handlers/handlers.agent.d.ts +10 -0
- package/dist/handlers/handlers.agent.d.ts.map +1 -0
- package/dist/handlers/handlers.agent.js +99 -0
- package/dist/handlers/handlers.agent.js.map +1 -0
- package/dist/handlers/handlers.base.d.ts +82 -0
- package/dist/handlers/handlers.base.d.ts.map +1 -0
- package/dist/handlers/handlers.base.js +337 -0
- package/dist/handlers/handlers.base.js.map +1 -0
- package/dist/handlers/handlers.lock.d.ts +8 -0
- package/dist/handlers/handlers.lock.d.ts.map +1 -0
- package/dist/handlers/handlers.lock.js +111 -0
- package/dist/handlers/handlers.lock.js.map +1 -0
- package/dist/handlers/handlers.memory.d.ts +11 -0
- package/dist/handlers/handlers.memory.d.ts.map +1 -0
- package/dist/handlers/handlers.memory.js +122 -0
- package/dist/handlers/handlers.memory.js.map +1 -0
- package/dist/handlers/handlers.monitoring.d.ts +8 -0
- package/dist/handlers/handlers.monitoring.d.ts.map +1 -0
- package/dist/handlers/handlers.monitoring.js +99 -0
- package/dist/handlers/handlers.monitoring.js.map +1 -0
- package/dist/handlers/handlers.orchestration.d.ts +9 -0
- package/dist/handlers/handlers.orchestration.d.ts.map +1 -0
- package/dist/handlers/handlers.orchestration.js +128 -0
- package/dist/handlers/handlers.orchestration.js.map +1 -0
- package/dist/handlers/handlers.session.d.ts +18 -0
- package/dist/handlers/handlers.session.d.ts.map +1 -0
- package/dist/handlers/handlers.session.js +286 -0
- package/dist/handlers/handlers.session.js.map +1 -0
- package/dist/handlers/handlers.task.d.ts +15 -0
- package/dist/handlers/handlers.task.d.ts.map +1 -0
- package/dist/handlers/handlers.task.js +753 -0
- package/dist/handlers/handlers.task.js.map +1 -0
- package/dist/handlers/handlers.utility.d.ts +10 -0
- package/dist/handlers/handlers.utility.d.ts.map +1 -0
- package/dist/handlers/handlers.utility.js +59 -0
- package/dist/handlers/handlers.utility.js.map +1 -0
- package/dist/handlers/index.d.ts +18 -0
- package/dist/handlers/index.d.ts.map +1 -0
- package/dist/handlers/index.js +209 -0
- package/dist/handlers/index.js.map +1 -0
- package/dist/handlers/lock-handlers.d.ts +8 -0
- package/dist/handlers/lock-handlers.d.ts.map +1 -0
- package/dist/handlers/lock-handlers.js +154 -0
- package/dist/handlers/lock-handlers.js.map +1 -0
- package/dist/handlers/memory-handlers.d.ts +8 -0
- package/dist/handlers/memory-handlers.d.ts.map +1 -0
- package/dist/handlers/memory-handlers.js +76 -0
- package/dist/handlers/memory-handlers.js.map +1 -0
- package/dist/handlers/orchestration-handlers.d.ts +8 -0
- package/dist/handlers/orchestration-handlers.d.ts.map +1 -0
- package/dist/handlers/orchestration-handlers.js +113 -0
- package/dist/handlers/orchestration-handlers.js.map +1 -0
- package/dist/handlers/session-handlers.d.ts +8 -0
- package/dist/handlers/session-handlers.d.ts.map +1 -0
- package/dist/handlers/session-handlers.js +558 -0
- package/dist/handlers/session-handlers.js.map +1 -0
- package/dist/handlers/task-handlers.d.ts +8 -0
- package/dist/handlers/task-handlers.d.ts.map +1 -0
- package/dist/handlers/task-handlers.js +677 -0
- package/dist/handlers/task-handlers.js.map +1 -0
- package/dist/handlers/tool-definitions.d.ts +2626 -0
- package/dist/handlers/tool-definitions.d.ts.map +1 -0
- package/dist/handlers/tool-definitions.js +641 -0
- package/dist/handlers/tool-definitions.js.map +1 -0
- package/dist/handlers/types.d.ts +90 -0
- package/dist/handlers/types.d.ts.map +1 -0
- package/dist/handlers/types.js +5 -0
- package/dist/handlers/types.js.map +1 -0
- package/dist/handlers/utility-handlers.d.ts +8 -0
- package/dist/handlers/utility-handlers.d.ts.map +1 -0
- package/dist/handlers/utility-handlers.js +113 -0
- package/dist/handlers/utility-handlers.js.map +1 -0
- package/dist/handlers/utils.d.ts +30 -0
- package/dist/handlers/utils.d.ts.map +1 -0
- package/dist/handlers/utils.js +95 -0
- package/dist/handlers/utils.js.map +1 -0
- package/dist/handlers.d.ts +17 -2260
- package/dist/handlers.d.ts.map +1 -1
- package/dist/handlers.js +17 -1836
- package/dist/handlers.js.map +1 -1
- package/dist/index.js +41 -7
- package/dist/index.js.map +1 -1
- package/dist/persistence.d.ts.map +1 -1
- package/dist/persistence.js +84 -47
- package/dist/persistence.js.map +1 -1
- package/dist/schemas.d.ts +299 -0
- package/dist/schemas.d.ts.map +1 -0
- package/dist/schemas.js +334 -0
- package/dist/schemas.js.map +1 -0
- package/package.json +8 -5
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlers.lock.js","sourceRoot":"","sources":["../../src/handlers/handlers.lock.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tool Handlers - Memory & Artifacts
|
|
3
|
+
* Handles: memory_store, memory_retrieve, artifact_save, artifact_get, artifact_list, context_optimize
|
|
4
|
+
*/
|
|
5
|
+
export declare function handleMemoryStore(args: Record<string, unknown>): Promise<unknown>;
|
|
6
|
+
export declare function handleMemoryRetrieve(args: Record<string, unknown>): Promise<unknown>;
|
|
7
|
+
export declare function handleArtifactSave(args: Record<string, unknown>): Promise<unknown>;
|
|
8
|
+
export declare function handleArtifactGet(args: Record<string, unknown>): Promise<unknown>;
|
|
9
|
+
export declare function handleArtifactList(args: Record<string, unknown>): Promise<unknown>;
|
|
10
|
+
export declare function handleContextOptimize(args: Record<string, unknown>): Promise<unknown>;
|
|
11
|
+
//# sourceMappingURL=handlers.memory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlers.memory.d.ts","sourceRoot":"","sources":["../../src/handlers/handlers.memory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAOjF;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAIpF;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CA6BlF;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAIvF;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAuCxF;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAgCrF"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tool Handlers - Memory & Artifacts
|
|
3
|
+
* Handles: memory_store, memory_retrieve, artifact_save, artifact_get, artifact_list, context_optimize
|
|
4
|
+
*/
|
|
5
|
+
import { ContextOptimizer } from '@anastops/core';
|
|
6
|
+
import { nanoid } from 'nanoid';
|
|
7
|
+
import { getPersistence } from '../persistence.js';
|
|
8
|
+
import { safePersist, memoryStore, artifacts, getArtifact } from './handlers.base.js';
|
|
9
|
+
const contextOptimizer = new ContextOptimizer();
|
|
10
|
+
export function handleMemoryStore(args) {
|
|
11
|
+
const key = args['session_id'] !== undefined
|
|
12
|
+
? `${String(args['session_id'])}:${String(args['key'])}`
|
|
13
|
+
: String(args['key']);
|
|
14
|
+
memoryStore.set(key, { value: args['value'], stored_at: new Date() });
|
|
15
|
+
return Promise.resolve({ key, stored: true });
|
|
16
|
+
}
|
|
17
|
+
export function handleMemoryRetrieve(args) {
|
|
18
|
+
const data = memoryStore.get(args['key']);
|
|
19
|
+
if (data === undefined)
|
|
20
|
+
return Promise.reject(new Error('Key not found'));
|
|
21
|
+
return Promise.resolve({ key: args['key'], data });
|
|
22
|
+
}
|
|
23
|
+
export function handleArtifactSave(args) {
|
|
24
|
+
const artifactId = nanoid(21);
|
|
25
|
+
const now = new Date();
|
|
26
|
+
const content = args['content'];
|
|
27
|
+
const artifact = {
|
|
28
|
+
id: artifactId,
|
|
29
|
+
session_id: args['session_id'],
|
|
30
|
+
task_id: null,
|
|
31
|
+
type: args['type'] ?? 'other',
|
|
32
|
+
name: args['name'],
|
|
33
|
+
extension: '',
|
|
34
|
+
content,
|
|
35
|
+
content_hash: '',
|
|
36
|
+
size_bytes: content.length,
|
|
37
|
+
summary: content.slice(0, 200),
|
|
38
|
+
token_count: Math.ceil(content.length / 4),
|
|
39
|
+
relevance_score: 50,
|
|
40
|
+
metadata: {},
|
|
41
|
+
created_at: now,
|
|
42
|
+
updated_at: now,
|
|
43
|
+
};
|
|
44
|
+
artifacts.set(artifactId, artifact);
|
|
45
|
+
// Persist to MongoDB
|
|
46
|
+
safePersist(getPersistence().saveArtifact(artifact));
|
|
47
|
+
return Promise.resolve({
|
|
48
|
+
artifact_id: artifact.id,
|
|
49
|
+
name: artifact.name,
|
|
50
|
+
size_bytes: artifact.size_bytes,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
export async function handleArtifactGet(args) {
|
|
54
|
+
const artifact = await getArtifact(args['artifact_id']);
|
|
55
|
+
if (artifact === null)
|
|
56
|
+
throw new Error('Artifact not found');
|
|
57
|
+
return artifact;
|
|
58
|
+
}
|
|
59
|
+
export async function handleArtifactList(args) {
|
|
60
|
+
const sessionId = args['session_id'];
|
|
61
|
+
const typeFilter = args['type'];
|
|
62
|
+
// Get from in-memory cache first
|
|
63
|
+
const inMemoryArtifacts = [];
|
|
64
|
+
for (const [, artifact] of artifacts.entries()) {
|
|
65
|
+
if (artifact.session_id === sessionId) {
|
|
66
|
+
if (typeFilter === undefined || artifact.type === typeFilter) {
|
|
67
|
+
inMemoryArtifacts.push(artifact);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// Also get from MongoDB for persistence
|
|
72
|
+
const persistedArtifacts = await getPersistence().listArtifacts({
|
|
73
|
+
session_id: sessionId,
|
|
74
|
+
...(typeFilter !== undefined && { type: typeFilter }),
|
|
75
|
+
});
|
|
76
|
+
// Merge: in-memory takes precedence
|
|
77
|
+
const inMemoryIds = new Set(inMemoryArtifacts.map((a) => a.id));
|
|
78
|
+
const sessionArtifacts = [
|
|
79
|
+
...inMemoryArtifacts,
|
|
80
|
+
...persistedArtifacts.filter((a) => !inMemoryIds.has(a.id)),
|
|
81
|
+
];
|
|
82
|
+
return {
|
|
83
|
+
session_id: sessionId,
|
|
84
|
+
count: sessionArtifacts.length,
|
|
85
|
+
...(typeFilter !== undefined && { type_filter: typeFilter }),
|
|
86
|
+
artifacts: sessionArtifacts.map((a) => ({
|
|
87
|
+
id: a.id,
|
|
88
|
+
name: a.name,
|
|
89
|
+
type: a.type,
|
|
90
|
+
size_bytes: a.size_bytes,
|
|
91
|
+
created_at: a.created_at,
|
|
92
|
+
})),
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
export function handleContextOptimize(args) {
|
|
96
|
+
const sessionArtifacts = [];
|
|
97
|
+
for (const [, artifact] of artifacts.entries()) {
|
|
98
|
+
if (artifact.session_id === args['session_id']) {
|
|
99
|
+
sessionArtifacts.push(artifact);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
const result = contextOptimizer.optimize({
|
|
103
|
+
session_id: args['session_id'],
|
|
104
|
+
objective: args['objective'],
|
|
105
|
+
phase: args['phase'],
|
|
106
|
+
progress: args['progress'],
|
|
107
|
+
current_task: null,
|
|
108
|
+
artifacts: sessionArtifacts,
|
|
109
|
+
messages: args['messages'],
|
|
110
|
+
decisions: [],
|
|
111
|
+
completed_tasks: [],
|
|
112
|
+
active_work: [],
|
|
113
|
+
blockers: [],
|
|
114
|
+
});
|
|
115
|
+
return Promise.resolve({
|
|
116
|
+
original_tokens: result.original_tokens,
|
|
117
|
+
optimized_tokens: result.optimized_tokens,
|
|
118
|
+
reduction_percent: result.reduction_percent,
|
|
119
|
+
minimal_context: result.context,
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=handlers.memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlers.memory.js","sourceRoot":"","sources":["../../src/handlers/handlers.memory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAoC,MAAM,gBAAgB,CAAC;AACpF,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtF,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAC;AAEhD,MAAM,UAAU,iBAAiB,CAAC,IAA6B;IAC7D,MAAM,GAAG,GACP,IAAI,CAAC,YAAY,CAAC,KAAK,SAAS;QAC9B,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;QACxD,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1B,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAA4B,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;IACjG,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAA6B;IAChE,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAW,CAAC,CAAC;IACpD,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;IAC1E,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAA6B;IAC9D,MAAM,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IAC9B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAW,CAAC;IAC1C,MAAM,QAAQ,GAAa;QACzB,EAAE,EAAE,UAAU;QACd,UAAU,EAAE,IAAI,CAAC,YAAY,CAAW;QACxC,OAAO,EAAE,IAAI;QACb,IAAI,EAAG,IAAI,CAAC,MAAM,CAAkB,IAAI,OAAO;QAC/C,IAAI,EAAE,IAAI,CAAC,MAAM,CAAW;QAC5B,SAAS,EAAE,EAAE;QACb,OAAO;QACP,YAAY,EAAE,EAAE;QAChB,UAAU,EAAE,OAAO,CAAC,MAAM;QAC1B,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;QAC9B,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QAC1C,eAAe,EAAE,EAAE;QACnB,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,GAAG;QACf,UAAU,EAAE,GAAG;KAChB,CAAC;IACF,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACpC,qBAAqB;IACrB,WAAW,CAAC,cAAc,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrD,OAAO,OAAO,CAAC,OAAO,CAAC;QACrB,WAAW,EAAE,QAAQ,CAAC,EAAE;QACxB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,UAAU,EAAE,QAAQ,CAAC,UAAU;KAChC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAA6B;IACnE,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,aAAa,CAAW,CAAC,CAAC;IAClE,IAAI,QAAQ,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAC7D,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAA6B;IACpE,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAW,CAAC;IAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAA6B,CAAC;IAE5D,iCAAiC;IACjC,MAAM,iBAAiB,GAAe,EAAE,CAAC;IACzC,KAAK,MAAM,CAAC,EAAE,QAAQ,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;QAC/C,IAAI,QAAQ,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACtC,IAAI,UAAU,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC7D,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;IACH,CAAC;IAED,wCAAwC;IACxC,MAAM,kBAAkB,GAAG,MAAM,cAAc,EAAE,CAAC,aAAa,CAAC;QAC9D,UAAU,EAAE,SAAS;QACrB,GAAG,CAAC,UAAU,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;KACtD,CAAC,CAAC;IAEH,oCAAoC;IACpC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChE,MAAM,gBAAgB,GAAG;QACvB,GAAG,iBAAiB;QACpB,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;KAC5D,CAAC;IAEF,OAAO;QACL,UAAU,EAAE,SAAS;QACrB,KAAK,EAAE,gBAAgB,CAAC,MAAM;QAC9B,GAAG,CAAC,UAAU,KAAK,SAAS,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;QAC5D,SAAS,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACtC,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,UAAU,EAAE,CAAC,CAAC,UAAU;SACzB,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAA6B;IACjE,MAAM,gBAAgB,GAAe,EAAE,CAAC;IACxC,KAAK,MAAM,CAAC,EAAE,QAAQ,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;QAC/C,IAAI,QAAQ,CAAC,UAAU,KAAK,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YAC/C,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC;QACvC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAW;QACxC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAW;QACtC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAiE;QACpF,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAW;QACpC,YAAY,EAAE,IAAI;QAClB,SAAS,EAAE,gBAAgB;QAC3B,QAAQ,EAAE,IAAI,CAAC,UAAU,CAIvB;QACF,SAAS,EAAE,EAAE;QACb,eAAe,EAAE,EAAE;QACnB,WAAW,EAAE,EAAE;QACf,QAAQ,EAAE,EAAE;KACb,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC,OAAO,CAAC;QACrB,eAAe,EAAE,MAAM,CAAC,eAAe;QACvC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;QACzC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;QAC3C,eAAe,EAAE,MAAM,CAAC,OAAO;KAChC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tool Handlers - Cost & Monitoring
|
|
3
|
+
* Handles: session_cost, session_metrics, session_throttle
|
|
4
|
+
*/
|
|
5
|
+
export declare function handleSessionCost(args: Record<string, unknown>): Promise<unknown>;
|
|
6
|
+
export declare function handleSessionMetrics(args: Record<string, unknown>): Promise<unknown>;
|
|
7
|
+
export declare function handleSessionThrottle(args: Record<string, unknown>): Promise<unknown>;
|
|
8
|
+
//# sourceMappingURL=handlers.monitoring.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlers.monitoring.d.ts","sourceRoot":"","sources":["../../src/handlers/handlers.monitoring.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAgBjF;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CA6BpF;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAwDrF"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tool Handlers - Cost & Monitoring
|
|
3
|
+
* Handles: session_cost, session_metrics, session_throttle
|
|
4
|
+
*/
|
|
5
|
+
import { tasks, memoryStore } from './handlers.base.js';
|
|
6
|
+
export function handleSessionCost(args) {
|
|
7
|
+
const sessionId = args['session_id'];
|
|
8
|
+
// Aggregate cost from task token_usage
|
|
9
|
+
let totalCost = 0;
|
|
10
|
+
for (const [, task] of tasks.entries()) {
|
|
11
|
+
if (task.session_id === sessionId && task.token_usage !== undefined) {
|
|
12
|
+
totalCost += task.token_usage.cost ?? 0;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
return Promise.resolve({
|
|
16
|
+
session_id: sessionId,
|
|
17
|
+
total_cost_usd: totalCost,
|
|
18
|
+
currency: 'USD',
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
export function handleSessionMetrics(args) {
|
|
22
|
+
const sessionId = args['session_id'];
|
|
23
|
+
// Aggregate metrics from tasks
|
|
24
|
+
let requestCount = 0;
|
|
25
|
+
let inputTokens = 0;
|
|
26
|
+
let outputTokens = 0;
|
|
27
|
+
let totalTokens = 0;
|
|
28
|
+
for (const [, task] of tasks.entries()) {
|
|
29
|
+
if (task.session_id === sessionId) {
|
|
30
|
+
requestCount++;
|
|
31
|
+
if (task.token_usage !== undefined) {
|
|
32
|
+
inputTokens += task.token_usage.prompt_tokens ?? 0;
|
|
33
|
+
outputTokens += task.token_usage.completion_tokens ?? 0;
|
|
34
|
+
totalTokens += task.token_usage.total_tokens ?? 0;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return Promise.resolve({
|
|
39
|
+
session_id: sessionId,
|
|
40
|
+
request_count: requestCount,
|
|
41
|
+
token_usage: {
|
|
42
|
+
input: inputTokens,
|
|
43
|
+
output: outputTokens,
|
|
44
|
+
total: totalTokens,
|
|
45
|
+
},
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
export function handleSessionThrottle(args) {
|
|
49
|
+
const sessionId = args['session_id'];
|
|
50
|
+
const provider = args['provider'] ?? 'claude';
|
|
51
|
+
// In-memory rate limit tracking (Redis-based in production)
|
|
52
|
+
const rateKey = `rate:${sessionId}:${provider}`;
|
|
53
|
+
const rateData = memoryStore.get(rateKey);
|
|
54
|
+
// Default limits per provider (requests per minute)
|
|
55
|
+
const defaultLimit = 30;
|
|
56
|
+
const limits = {
|
|
57
|
+
claude: 50,
|
|
58
|
+
openai: 60,
|
|
59
|
+
gemini: 60,
|
|
60
|
+
};
|
|
61
|
+
const limit = limits[provider] ?? defaultLimit;
|
|
62
|
+
if (rateData !== undefined) {
|
|
63
|
+
const data = rateData.value;
|
|
64
|
+
const windowSize = 60000; // 1 minute
|
|
65
|
+
const now = Date.now();
|
|
66
|
+
if (now - data.window_start > windowSize) {
|
|
67
|
+
// Window expired, reset
|
|
68
|
+
return Promise.resolve({
|
|
69
|
+
session_id: sessionId,
|
|
70
|
+
provider,
|
|
71
|
+
usage_percent: 0,
|
|
72
|
+
current_count: 0,
|
|
73
|
+
limit,
|
|
74
|
+
throttled: false,
|
|
75
|
+
blocked: false,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
const usagePercent = (data.count / limit) * 100;
|
|
79
|
+
return Promise.resolve({
|
|
80
|
+
session_id: sessionId,
|
|
81
|
+
provider,
|
|
82
|
+
usage_percent: Math.min(100, usagePercent),
|
|
83
|
+
current_count: data.count,
|
|
84
|
+
limit,
|
|
85
|
+
throttled: usagePercent >= 85,
|
|
86
|
+
blocked: usagePercent >= 95,
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
return Promise.resolve({
|
|
90
|
+
session_id: sessionId,
|
|
91
|
+
provider,
|
|
92
|
+
usage_percent: 0,
|
|
93
|
+
current_count: 0,
|
|
94
|
+
limit,
|
|
95
|
+
throttled: false,
|
|
96
|
+
blocked: false,
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=handlers.monitoring.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlers.monitoring.js","sourceRoot":"","sources":["../../src/handlers/handlers.monitoring.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tool Handlers - Orchestration
|
|
3
|
+
* Handles: dispatch, route, broadcast, aggregate
|
|
4
|
+
*/
|
|
5
|
+
export declare function handleDispatch(args: Record<string, unknown>): Promise<unknown>;
|
|
6
|
+
export declare function handleRoute(args: Record<string, unknown>): Promise<unknown>;
|
|
7
|
+
export declare function handleBroadcast(args: Record<string, unknown>): Promise<unknown>;
|
|
8
|
+
export declare function handleAggregate(args: Record<string, unknown>): Promise<unknown>;
|
|
9
|
+
//# sourceMappingURL=handlers.orchestration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlers.orchestration.d.ts","sourceRoot":"","sources":["../../src/handlers/handlers.orchestration.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAkBH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAmFpF;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CA6B3E;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAO/E;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAO/E"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tool Handlers - Orchestration
|
|
3
|
+
* Handles: dispatch, route, broadcast, aggregate
|
|
4
|
+
*/
|
|
5
|
+
import { AdapterRegistry } from '@anastops/adapters';
|
|
6
|
+
import { IntelligentRouter, ProviderFailoverService, } from '@anastops/core';
|
|
7
|
+
import { nanoid } from 'nanoid';
|
|
8
|
+
import { tasks } from './handlers.base.js';
|
|
9
|
+
const registry = AdapterRegistry.getInstance();
|
|
10
|
+
const router = new IntelligentRouter();
|
|
11
|
+
const failoverService = new ProviderFailoverService(router);
|
|
12
|
+
export async function handleDispatch(args) {
|
|
13
|
+
const taskId = nanoid(21);
|
|
14
|
+
const task = {
|
|
15
|
+
id: taskId,
|
|
16
|
+
session_id: args['session_id'],
|
|
17
|
+
agent_id: null,
|
|
18
|
+
type: args['type'] ?? 'other',
|
|
19
|
+
status: 'pending',
|
|
20
|
+
description: args['prompt'].slice(0, 200),
|
|
21
|
+
input: { prompt: args['prompt'] },
|
|
22
|
+
output: null,
|
|
23
|
+
error: null,
|
|
24
|
+
complexity_score: 0,
|
|
25
|
+
routing_tier: 3,
|
|
26
|
+
provider: 'claude',
|
|
27
|
+
model: 'claude-sonnet',
|
|
28
|
+
token_usage: { prompt_tokens: 0, completion_tokens: 0, total_tokens: 0, cost: 0 },
|
|
29
|
+
created_at: new Date(),
|
|
30
|
+
started_at: null,
|
|
31
|
+
completed_at: null,
|
|
32
|
+
dependencies: [],
|
|
33
|
+
priority: 5,
|
|
34
|
+
retry_count: 0,
|
|
35
|
+
max_retries: 3,
|
|
36
|
+
failover_history: [],
|
|
37
|
+
failover_enabled: args['disable_failover'] !== true,
|
|
38
|
+
};
|
|
39
|
+
const routingOverride = {};
|
|
40
|
+
if (args['force_provider'] !== undefined) {
|
|
41
|
+
routingOverride.force_provider = args['force_provider'];
|
|
42
|
+
}
|
|
43
|
+
if (args['force_tier'] !== undefined) {
|
|
44
|
+
routingOverride.force_tier = args['force_tier'];
|
|
45
|
+
}
|
|
46
|
+
const routing = router.route(task, routingOverride);
|
|
47
|
+
// Update task with routing decision
|
|
48
|
+
task.routing_tier = routing.tier;
|
|
49
|
+
task.provider = routing.provider;
|
|
50
|
+
task.model = routing.model;
|
|
51
|
+
task.complexity_score = routing.complexity_score;
|
|
52
|
+
// Use workspace root for dispatch calls
|
|
53
|
+
const workingDir = process.env['ANASTOPS_WORKSPACE'] ?? process.cwd();
|
|
54
|
+
const executeRequest = {
|
|
55
|
+
prompt: args['prompt'],
|
|
56
|
+
model: routing.model,
|
|
57
|
+
working_dir: workingDir,
|
|
58
|
+
};
|
|
59
|
+
// Execute with failover support
|
|
60
|
+
const failoverResult = await failoverService.executeWithFailover(task, executeRequest, registry, { workingDir });
|
|
61
|
+
const response = failoverResult.response;
|
|
62
|
+
const dispatchResult = {
|
|
63
|
+
task_id: taskId,
|
|
64
|
+
routing: {
|
|
65
|
+
tier: failoverResult.successful_tier,
|
|
66
|
+
provider: failoverResult.successful_provider,
|
|
67
|
+
model: routing.model,
|
|
68
|
+
original_tier: routing.tier,
|
|
69
|
+
original_provider: routing.provider,
|
|
70
|
+
},
|
|
71
|
+
response: { content: response.content, usage: response.usage },
|
|
72
|
+
failover: failoverResult.failover_used
|
|
73
|
+
? {
|
|
74
|
+
used: true,
|
|
75
|
+
attempts: failoverResult.failover_attempts,
|
|
76
|
+
history: failoverResult.attempt_history,
|
|
77
|
+
}
|
|
78
|
+
: undefined,
|
|
79
|
+
};
|
|
80
|
+
// TOON encoding applied in handleToolCall
|
|
81
|
+
return dispatchResult;
|
|
82
|
+
}
|
|
83
|
+
export function handleRoute(args) {
|
|
84
|
+
const task = {
|
|
85
|
+
id: 'route-check',
|
|
86
|
+
session_id: 'route-check',
|
|
87
|
+
agent_id: null,
|
|
88
|
+
type: args['type'] ?? 'other',
|
|
89
|
+
status: 'pending',
|
|
90
|
+
description: args['description'],
|
|
91
|
+
input: { prompt: args['description'] },
|
|
92
|
+
output: null,
|
|
93
|
+
error: null,
|
|
94
|
+
complexity_score: 0,
|
|
95
|
+
routing_tier: 3,
|
|
96
|
+
provider: 'claude',
|
|
97
|
+
model: 'claude-sonnet',
|
|
98
|
+
token_usage: { prompt_tokens: 0, completion_tokens: 0, total_tokens: 0, cost: 0 },
|
|
99
|
+
created_at: new Date(),
|
|
100
|
+
started_at: null,
|
|
101
|
+
completed_at: null,
|
|
102
|
+
dependencies: [],
|
|
103
|
+
priority: 5,
|
|
104
|
+
retry_count: 0,
|
|
105
|
+
max_retries: 3,
|
|
106
|
+
failover_history: [],
|
|
107
|
+
failover_enabled: true,
|
|
108
|
+
};
|
|
109
|
+
const routing = router.route(task, {});
|
|
110
|
+
return Promise.resolve(routing);
|
|
111
|
+
}
|
|
112
|
+
export function handleBroadcast(args) {
|
|
113
|
+
return Promise.resolve({
|
|
114
|
+
session_id: args['session_id'],
|
|
115
|
+
message: args['message'],
|
|
116
|
+
message_type: args['message_type'] ?? 'info',
|
|
117
|
+
broadcast_at: new Date(),
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
export function handleAggregate(args) {
|
|
121
|
+
const taskIds = args['task_ids'];
|
|
122
|
+
const taskResults = taskIds.map((id) => tasks.get(id)).filter((t) => t !== undefined);
|
|
123
|
+
return Promise.resolve({
|
|
124
|
+
task_count: taskResults.length,
|
|
125
|
+
strategy: args['strategy'] ?? 'concat',
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=handlers.orchestration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlers.orchestration.js","sourceRoot":"","sources":["../../src/handlers/handlers.orchestration.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tool Handlers - Session Management
|
|
3
|
+
* Handles: session_spawn, session_status, session_list, session_fork, session_archive, session_report, session_purge
|
|
4
|
+
*/
|
|
5
|
+
import { SessionManager, SessionForkService } from '@anastops/core';
|
|
6
|
+
declare const sessionManager: SessionManager;
|
|
7
|
+
declare const forkService: SessionForkService;
|
|
8
|
+
export declare function handleSessionSpawn(args: Record<string, unknown>): Promise<unknown>;
|
|
9
|
+
export declare function handleSessionStatus(args: Record<string, unknown>): Promise<unknown>;
|
|
10
|
+
export declare function handleSessionList(args: Record<string, unknown>): Promise<unknown>;
|
|
11
|
+
export declare function handleSessionFork(args: Record<string, unknown>): Promise<unknown>;
|
|
12
|
+
export declare function handleSessionArchive(args: Record<string, unknown>): Promise<unknown>;
|
|
13
|
+
export declare function handleSessionReport(args: Record<string, unknown>): Promise<unknown>;
|
|
14
|
+
export declare function handleSessionPurge(args: Record<string, unknown>): Promise<unknown>;
|
|
15
|
+
export declare function handleSessionQueueConfig(args: Record<string, unknown>): Promise<unknown>;
|
|
16
|
+
export declare function handleQueueStatus(args: Record<string, unknown>): Promise<unknown>;
|
|
17
|
+
export { sessionManager, forkService };
|
|
18
|
+
//# sourceMappingURL=handlers.session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlers.session.d.ts","sourceRoot":"","sources":["../../src/handlers/handlers.session.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,cAAc,EACd,kBAAkB,EAGnB,MAAM,gBAAgB,CAAC;AAOxB,QAAA,MAAM,cAAc,gBAAuB,CAAC;AAC5C,QAAA,MAAM,WAAW,oBAAyC,CAAC;AAE3D,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAuBlF;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAInF;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAkCvF;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAsBjF;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAKpF;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CA8BzF;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CA4FxF;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAqCxF;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAwDvF;AAED,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC"}
|