@anastops/mcp-server 0.1.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 +94 -0
- package/dist/formatters.d.ts.map +1 -0
- package/dist/formatters.js +225 -0
- package/dist/formatters.js.map +1 -0
- package/dist/handlers.d.ts +2264 -0
- package/dist/handlers.d.ts.map +1 -0
- package/dist/handlers.js +1840 -0
- package/dist/handlers.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +61 -0
- package/dist/index.js.map +1 -0
- package/dist/persistence.d.ts +140 -0
- package/dist/persistence.d.ts.map +1 -0
- package/dist/persistence.js +495 -0
- package/dist/persistence.js.map +1 -0
- package/package.json +70 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI Response Formatters for anastops MCP server
|
|
3
|
+
*
|
|
4
|
+
* Provides beautiful ASCII table and status formatting
|
|
5
|
+
* for command-line interfaces instead of raw JSON.
|
|
6
|
+
*/
|
|
7
|
+
import chalk from 'chalk';
|
|
8
|
+
export interface TableColumn {
|
|
9
|
+
header: string;
|
|
10
|
+
width: number;
|
|
11
|
+
align?: 'left' | 'center' | 'right';
|
|
12
|
+
}
|
|
13
|
+
export interface TableOptions {
|
|
14
|
+
columns: TableColumn[];
|
|
15
|
+
borderColor?: typeof chalk.gray;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Renders a table with borders
|
|
19
|
+
*/
|
|
20
|
+
export declare function renderTable(options: TableOptions, rows: string[][]): string;
|
|
21
|
+
/**
|
|
22
|
+
* Symbols for status display
|
|
23
|
+
*/
|
|
24
|
+
export declare const symbols: {
|
|
25
|
+
success: string;
|
|
26
|
+
failure: string;
|
|
27
|
+
warning: string;
|
|
28
|
+
info: string;
|
|
29
|
+
pending: string;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Format status with color and symbol
|
|
33
|
+
*/
|
|
34
|
+
export declare function formatStatus(status: string): string;
|
|
35
|
+
/**
|
|
36
|
+
* Format session list as ASCII table
|
|
37
|
+
*/
|
|
38
|
+
export declare function formatSessionTable(sessions: Array<{
|
|
39
|
+
id: string;
|
|
40
|
+
objective: string;
|
|
41
|
+
status: string;
|
|
42
|
+
created_at: Date | string;
|
|
43
|
+
}>): string;
|
|
44
|
+
/**
|
|
45
|
+
* Format task execution result nicely
|
|
46
|
+
*/
|
|
47
|
+
export declare function formatTaskResult(task: {
|
|
48
|
+
task_id: string;
|
|
49
|
+
status: string;
|
|
50
|
+
routing?: {
|
|
51
|
+
tier: number;
|
|
52
|
+
provider: string;
|
|
53
|
+
model: string;
|
|
54
|
+
};
|
|
55
|
+
result?: string;
|
|
56
|
+
error?: string;
|
|
57
|
+
token_usage?: {
|
|
58
|
+
prompt_tokens: number;
|
|
59
|
+
completion_tokens: number;
|
|
60
|
+
total_tokens: number;
|
|
61
|
+
cost?: number;
|
|
62
|
+
};
|
|
63
|
+
safety?: {
|
|
64
|
+
rate_limit_usage?: number;
|
|
65
|
+
circuit_state?: string;
|
|
66
|
+
};
|
|
67
|
+
}): string;
|
|
68
|
+
/**
|
|
69
|
+
* Format task list as ASCII table
|
|
70
|
+
*/
|
|
71
|
+
export declare function formatTaskTable(tasks: Array<{
|
|
72
|
+
id: string;
|
|
73
|
+
type: string;
|
|
74
|
+
status: string;
|
|
75
|
+
description: string;
|
|
76
|
+
}>): string;
|
|
77
|
+
/**
|
|
78
|
+
* Format agent list as ASCII table
|
|
79
|
+
*/
|
|
80
|
+
export declare function formatAgentTable(agents: Array<{
|
|
81
|
+
id: string;
|
|
82
|
+
name: string;
|
|
83
|
+
role: string;
|
|
84
|
+
status: string;
|
|
85
|
+
}>): string;
|
|
86
|
+
/**
|
|
87
|
+
* Type for output format preference
|
|
88
|
+
*/
|
|
89
|
+
export type OutputFormat = 'table' | 'json';
|
|
90
|
+
/**
|
|
91
|
+
* Get the format from args, defaulting to 'json' for backward compatibility
|
|
92
|
+
*/
|
|
93
|
+
export declare function getOutputFormat(args: Record<string, unknown>): OutputFormat;
|
|
94
|
+
//# sourceMappingURL=formatters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../src/formatters.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;CACrC;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC;CACjC;AAyBD;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,CA0C3E;AAED;;GAEG;AACH,eAAO,MAAM,OAAO;;;;;;CAMnB,CAAC;AAEF;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAYnD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,KAAK,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,IAAI,GAAG,MAAM,CAAC;CAC3B,CAAC,GACD,MAAM,CAuBR;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE;QACZ,aAAa,EAAE,MAAM,CAAC;QACtB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,YAAY,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,MAAM,CAAC,EAAE;QACP,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;CACH,GAAG,MAAM,CA+DT;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,KAAK,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC,GACD,MAAM,CAuBR;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,KAAK,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,GACD,MAAM,CAkBR;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,MAAM,CAAC;AAE5C;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,YAAY,CAI3E"}
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI Response Formatters for anastops MCP server
|
|
3
|
+
*
|
|
4
|
+
* Provides beautiful ASCII table and status formatting
|
|
5
|
+
* for command-line interfaces instead of raw JSON.
|
|
6
|
+
*/
|
|
7
|
+
import chalk from 'chalk';
|
|
8
|
+
/**
|
|
9
|
+
* Pads a string to the specified width with the specified alignment
|
|
10
|
+
*/
|
|
11
|
+
function padString(str, width, align = 'left') {
|
|
12
|
+
// Strip ANSI codes for length calculation
|
|
13
|
+
// eslint-disable-next-line no-control-regex -- Required to match ANSI escape sequences for accurate string length calculation
|
|
14
|
+
const strippedLength = str.replace(/\x1B\[[0-9;]*m/g, '').length;
|
|
15
|
+
const padding = Math.max(0, width - strippedLength);
|
|
16
|
+
switch (align) {
|
|
17
|
+
case 'center': {
|
|
18
|
+
const leftPad = Math.floor(padding / 2);
|
|
19
|
+
const rightPad = padding - leftPad;
|
|
20
|
+
return ' '.repeat(leftPad) + str + ' '.repeat(rightPad);
|
|
21
|
+
}
|
|
22
|
+
case 'right':
|
|
23
|
+
return ' '.repeat(padding) + str;
|
|
24
|
+
case 'left':
|
|
25
|
+
default:
|
|
26
|
+
return str + ' '.repeat(padding);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Renders a table with borders
|
|
31
|
+
*/
|
|
32
|
+
export function renderTable(options, rows) {
|
|
33
|
+
const { columns, borderColor = chalk.gray } = options;
|
|
34
|
+
const lines = [];
|
|
35
|
+
// Build horizontal borders
|
|
36
|
+
const topBorder = borderColor('┌') +
|
|
37
|
+
columns.map((col) => borderColor('─'.repeat(col.width + 2))).join(borderColor('┬')) +
|
|
38
|
+
borderColor('┐');
|
|
39
|
+
const middleBorder = borderColor('├') +
|
|
40
|
+
columns.map((col) => borderColor('─'.repeat(col.width + 2))).join(borderColor('┼')) +
|
|
41
|
+
borderColor('┤');
|
|
42
|
+
const bottomBorder = borderColor('└') +
|
|
43
|
+
columns.map((col) => borderColor('─'.repeat(col.width + 2))).join(borderColor('┴')) +
|
|
44
|
+
borderColor('┘');
|
|
45
|
+
// Build header row
|
|
46
|
+
const headerRow = borderColor('│') +
|
|
47
|
+
columns.map((col) => ' ' + chalk.bold(padString(col.header, col.width, col.align)) + ' ').join(borderColor('│')) +
|
|
48
|
+
borderColor('│');
|
|
49
|
+
lines.push(topBorder);
|
|
50
|
+
lines.push(headerRow);
|
|
51
|
+
lines.push(middleBorder);
|
|
52
|
+
// Build data rows
|
|
53
|
+
for (const row of rows) {
|
|
54
|
+
const dataRow = borderColor('│') +
|
|
55
|
+
columns.map((col, i) => ' ' + padString(row[i] ?? '', col.width, col.align) + ' ').join(borderColor('│')) +
|
|
56
|
+
borderColor('│');
|
|
57
|
+
lines.push(dataRow);
|
|
58
|
+
}
|
|
59
|
+
lines.push(bottomBorder);
|
|
60
|
+
return lines.join('\n');
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Symbols for status display
|
|
64
|
+
*/
|
|
65
|
+
export const symbols = {
|
|
66
|
+
success: chalk.green('✓'),
|
|
67
|
+
failure: chalk.red('✗'),
|
|
68
|
+
warning: chalk.yellow('!'),
|
|
69
|
+
info: chalk.blue('i'),
|
|
70
|
+
pending: chalk.gray('●'),
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* Format status with color and symbol
|
|
74
|
+
*/
|
|
75
|
+
export function formatStatus(status) {
|
|
76
|
+
const statusLower = status.toLowerCase();
|
|
77
|
+
if (statusLower === 'active')
|
|
78
|
+
return `${symbols.success} Active`;
|
|
79
|
+
if (statusLower === 'completed')
|
|
80
|
+
return `${symbols.success} ${chalk.green('Completed')}`;
|
|
81
|
+
if (statusLower === 'failed')
|
|
82
|
+
return `${symbols.failure} Failed`;
|
|
83
|
+
if (statusLower === 'pending')
|
|
84
|
+
return `${symbols.pending} Pending`;
|
|
85
|
+
if (statusLower === 'running')
|
|
86
|
+
return `${chalk.cyan('⟳')} Running`;
|
|
87
|
+
if (statusLower === 'queued')
|
|
88
|
+
return `${chalk.yellow('◉')} Queued`;
|
|
89
|
+
if (statusLower === 'archived')
|
|
90
|
+
return `${chalk.gray('▣')} Archived`;
|
|
91
|
+
return status;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Format session list as ASCII table
|
|
95
|
+
*/
|
|
96
|
+
export function formatSessionTable(sessions) {
|
|
97
|
+
if (sessions.length === 0) {
|
|
98
|
+
return chalk.yellow('No sessions found');
|
|
99
|
+
}
|
|
100
|
+
const rows = sessions.map((s) => [
|
|
101
|
+
s.id.slice(0, 8) + '...',
|
|
102
|
+
s.objective.length > 40 ? s.objective.slice(0, 37) + '...' : s.objective,
|
|
103
|
+
formatStatus(s.status),
|
|
104
|
+
new Date(s.created_at).toLocaleString(),
|
|
105
|
+
]);
|
|
106
|
+
return renderTable({
|
|
107
|
+
columns: [
|
|
108
|
+
{ header: 'Session ID', width: 11, align: 'left' },
|
|
109
|
+
{ header: 'Objective', width: 40, align: 'left' },
|
|
110
|
+
{ header: 'Status', width: 12, align: 'center' },
|
|
111
|
+
{ header: 'Created', width: 20, align: 'left' },
|
|
112
|
+
],
|
|
113
|
+
}, rows);
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Format task execution result nicely
|
|
117
|
+
*/
|
|
118
|
+
export function formatTaskResult(task) {
|
|
119
|
+
const lines = [];
|
|
120
|
+
// Header
|
|
121
|
+
lines.push(chalk.bold(`Task ${task.task_id}`));
|
|
122
|
+
lines.push('─'.repeat(50));
|
|
123
|
+
// Status
|
|
124
|
+
lines.push(`${chalk.dim('Status:')} ${formatStatus(task.status)}`);
|
|
125
|
+
// Routing info
|
|
126
|
+
if (task.routing !== undefined) {
|
|
127
|
+
lines.push(`${chalk.dim('Provider:')} ${task.routing.provider} (${task.routing.model})`);
|
|
128
|
+
lines.push(`${chalk.dim('Tier:')} ${task.routing.tier}`);
|
|
129
|
+
}
|
|
130
|
+
// Token usage
|
|
131
|
+
if (task.token_usage !== undefined) {
|
|
132
|
+
lines.push('');
|
|
133
|
+
lines.push(chalk.bold('Token Usage:'));
|
|
134
|
+
lines.push(` ${chalk.dim('Input:')} ${task.token_usage.prompt_tokens.toLocaleString()}`);
|
|
135
|
+
lines.push(` ${chalk.dim('Output:')} ${task.token_usage.completion_tokens.toLocaleString()}`);
|
|
136
|
+
lines.push(` ${chalk.dim('Total:')} ${task.token_usage.total_tokens.toLocaleString()}`);
|
|
137
|
+
if (task.token_usage.cost !== undefined) {
|
|
138
|
+
lines.push(` ${chalk.dim('Cost:')} $${task.token_usage.cost.toFixed(4)}`);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
// Safety info
|
|
142
|
+
if (task.safety !== undefined) {
|
|
143
|
+
if (task.safety.rate_limit_usage !== undefined) {
|
|
144
|
+
const usage = task.safety.rate_limit_usage;
|
|
145
|
+
let usageColor = chalk.green;
|
|
146
|
+
if (usage >= 85)
|
|
147
|
+
usageColor = chalk.red;
|
|
148
|
+
else if (usage >= 70)
|
|
149
|
+
usageColor = chalk.yellow;
|
|
150
|
+
lines.push(`${chalk.dim('Rate Limit:')} ${usageColor(`${usage.toFixed(1)}%`)}`);
|
|
151
|
+
}
|
|
152
|
+
if (task.safety.circuit_state !== undefined) {
|
|
153
|
+
lines.push(`${chalk.dim('Circuit:')} ${task.safety.circuit_state}`);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
// Error
|
|
157
|
+
if (task.error !== undefined) {
|
|
158
|
+
lines.push('');
|
|
159
|
+
lines.push(`${symbols.failure} ${chalk.red('Error:')} ${task.error}`);
|
|
160
|
+
}
|
|
161
|
+
// Result
|
|
162
|
+
if (task.result !== undefined) {
|
|
163
|
+
lines.push('');
|
|
164
|
+
lines.push(chalk.bold('Result:'));
|
|
165
|
+
lines.push('─'.repeat(50));
|
|
166
|
+
// Truncate very long results
|
|
167
|
+
const maxLength = 2000;
|
|
168
|
+
if (task.result.length > maxLength) {
|
|
169
|
+
lines.push(task.result.slice(0, maxLength) + chalk.dim('\n... (truncated)'));
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
lines.push(task.result);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
return lines.join('\n');
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Format task list as ASCII table
|
|
179
|
+
*/
|
|
180
|
+
export function formatTaskTable(tasks) {
|
|
181
|
+
if (tasks.length === 0) {
|
|
182
|
+
return chalk.yellow('No tasks found');
|
|
183
|
+
}
|
|
184
|
+
const rows = tasks.map((t) => [
|
|
185
|
+
t.id.slice(0, 8) + '...',
|
|
186
|
+
t.type,
|
|
187
|
+
formatStatus(t.status),
|
|
188
|
+
t.description.length > 35 ? t.description.slice(0, 32) + '...' : t.description,
|
|
189
|
+
]);
|
|
190
|
+
return renderTable({
|
|
191
|
+
columns: [
|
|
192
|
+
{ header: 'Task ID', width: 11, align: 'left' },
|
|
193
|
+
{ header: 'Type', width: 12, align: 'left' },
|
|
194
|
+
{ header: 'Status', width: 12, align: 'center' },
|
|
195
|
+
{ header: 'Description', width: 35, align: 'left' },
|
|
196
|
+
],
|
|
197
|
+
}, rows);
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Format agent list as ASCII table
|
|
201
|
+
*/
|
|
202
|
+
export function formatAgentTable(agents) {
|
|
203
|
+
if (agents.length === 0) {
|
|
204
|
+
return chalk.yellow('No agents found');
|
|
205
|
+
}
|
|
206
|
+
const rows = agents.map((a) => [a.id.slice(0, 8) + '...', a.name, a.role, formatStatus(a.status)]);
|
|
207
|
+
return renderTable({
|
|
208
|
+
columns: [
|
|
209
|
+
{ header: 'Agent ID', width: 11, align: 'left' },
|
|
210
|
+
{ header: 'Name', width: 20, align: 'left' },
|
|
211
|
+
{ header: 'Role', width: 14, align: 'left' },
|
|
212
|
+
{ header: 'Status', width: 12, align: 'center' },
|
|
213
|
+
],
|
|
214
|
+
}, rows);
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Get the format from args, defaulting to 'json' for backward compatibility
|
|
218
|
+
*/
|
|
219
|
+
export function getOutputFormat(args) {
|
|
220
|
+
const format = args['format'];
|
|
221
|
+
if (format === 'table')
|
|
222
|
+
return 'table';
|
|
223
|
+
return 'json';
|
|
224
|
+
}
|
|
225
|
+
//# sourceMappingURL=formatters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatters.js","sourceRoot":"","sources":["../src/formatters.ts"],"names":[],"mappings":"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"}
|