@contextium/mcp-server 0.3.0 → 0.4.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/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +126 -211
- package/dist/cli/setup.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +12 -0
- package/dist/server.js.map +1 -1
- package/dist/tools/get-agent.d.ts +10 -0
- package/dist/tools/get-agent.d.ts.map +1 -0
- package/dist/tools/get-agent.js +71 -0
- package/dist/tools/get-agent.js.map +1 -0
- package/dist/tools/get-context-library.d.ts +17 -0
- package/dist/tools/get-context-library.d.ts.map +1 -0
- package/dist/tools/get-context-library.js +113 -0
- package/dist/tools/get-context-library.js.map +1 -0
- package/dist/tools/get-skill.d.ts +17 -0
- package/dist/tools/get-skill.d.ts.map +1 -0
- package/dist/tools/get-skill.js +104 -0
- package/dist/tools/get-skill.js.map +1 -0
- package/dist/tools/get-workflow.d.ts +10 -0
- package/dist/tools/get-workflow.d.ts.map +1 -0
- package/dist/tools/get-workflow.js +93 -0
- package/dist/tools/get-workflow.js.map +1 -0
- package/dist/tools/index.d.ts +4 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +4 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/load-workflow.d.ts +5 -0
- package/dist/tools/load-workflow.d.ts.map +1 -1
- package/dist/tools/load-workflow.js +109 -18
- package/dist/tools/load-workflow.js.map +1 -1
- package/package.json +1 -1
package/dist/cli/setup.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"AAKA,UAAU,YAAY;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAmKD;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2G5E"}
|
package/dist/cli/setup.js
CHANGED
|
@@ -1,36 +1,68 @@
|
|
|
1
|
-
import http from 'http';
|
|
2
1
|
import open from 'open';
|
|
3
2
|
import readline from 'readline';
|
|
4
3
|
import { saveProfile } from './credentials.js';
|
|
5
4
|
import { updateClaudeConfigForContextium, claudeConfigExists } from './config-manager.js';
|
|
6
5
|
const DEFAULT_API_URL = 'https://api.contextium.io/api/v1';
|
|
7
|
-
const AUTH_TIMEOUT_MS =
|
|
8
|
-
const PORT_RANGE_START = 8000;
|
|
9
|
-
const PORT_RANGE_END = 9000;
|
|
6
|
+
const AUTH_TIMEOUT_MS = 15 * 60 * 1000; // 15 minutes (matches device code expiry)
|
|
10
7
|
/**
|
|
11
|
-
*
|
|
8
|
+
* Generate device code from API
|
|
12
9
|
*/
|
|
13
|
-
async function
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
10
|
+
async function generateDeviceCode(apiUrl) {
|
|
11
|
+
const response = await fetch(`${apiUrl}/mcp/device`, {
|
|
12
|
+
method: 'POST',
|
|
13
|
+
headers: {
|
|
14
|
+
'Content-Type': 'application/json',
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
if (!response.ok) {
|
|
18
|
+
const error = await response.text();
|
|
19
|
+
throw new Error(`Failed to generate device code: ${error}`);
|
|
20
|
+
}
|
|
21
|
+
const data = (await response.json());
|
|
22
|
+
return data.data;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Poll for device authorization
|
|
26
|
+
*/
|
|
27
|
+
async function pollForToken(apiUrl, deviceCode, interval) {
|
|
28
|
+
const startTime = Date.now();
|
|
29
|
+
while (Date.now() - startTime < AUTH_TIMEOUT_MS) {
|
|
30
|
+
try {
|
|
31
|
+
const response = await fetch(`${apiUrl}/mcp/device/token`, {
|
|
32
|
+
method: 'POST',
|
|
33
|
+
headers: {
|
|
34
|
+
'Content-Type': 'application/json',
|
|
35
|
+
},
|
|
36
|
+
body: JSON.stringify({ device_code: deviceCode }),
|
|
37
|
+
});
|
|
38
|
+
if (response.ok) {
|
|
39
|
+
const data = (await response.json());
|
|
40
|
+
return data.data;
|
|
41
|
+
}
|
|
42
|
+
const errorData = (await response.json());
|
|
43
|
+
if (errorData.error === 'authorization_pending') {
|
|
44
|
+
// Still waiting for user authorization, continue polling
|
|
45
|
+
await sleep(interval * 1000);
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
// Other error
|
|
49
|
+
throw new Error(errorData.error_description || errorData.error || 'Authorization failed');
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
if (error instanceof Error && error.message.includes('authorization_pending')) {
|
|
53
|
+
await sleep(interval * 1000);
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
throw error;
|
|
17
57
|
}
|
|
18
58
|
}
|
|
19
|
-
throw new Error(
|
|
59
|
+
throw new Error('Authorization timeout - please try again');
|
|
20
60
|
}
|
|
21
61
|
/**
|
|
22
|
-
*
|
|
62
|
+
* Sleep for specified milliseconds
|
|
23
63
|
*/
|
|
24
|
-
function
|
|
25
|
-
return new Promise((resolve) =>
|
|
26
|
-
const server = http.createServer();
|
|
27
|
-
server.once('error', () => resolve(false));
|
|
28
|
-
server.once('listening', () => {
|
|
29
|
-
server.close();
|
|
30
|
-
resolve(true);
|
|
31
|
-
});
|
|
32
|
-
server.listen(port);
|
|
33
|
-
});
|
|
64
|
+
function sleep(ms) {
|
|
65
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
34
66
|
}
|
|
35
67
|
/**
|
|
36
68
|
* Ask user a yes/no question
|
|
@@ -47,6 +79,49 @@ async function askYesNo(question) {
|
|
|
47
79
|
});
|
|
48
80
|
});
|
|
49
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* Ask user a question and get text input
|
|
84
|
+
*/
|
|
85
|
+
async function askQuestion(question, defaultValue) {
|
|
86
|
+
const rl = readline.createInterface({
|
|
87
|
+
input: process.stdin,
|
|
88
|
+
output: process.stdout,
|
|
89
|
+
});
|
|
90
|
+
return new Promise((resolve) => {
|
|
91
|
+
const prompt = defaultValue ? `${question} (default: ${defaultValue}): ` : `${question}: `;
|
|
92
|
+
rl.question(prompt, (answer) => {
|
|
93
|
+
rl.close();
|
|
94
|
+
resolve(answer.trim() || defaultValue || '');
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Detect device information
|
|
100
|
+
*/
|
|
101
|
+
function getDeviceInfo() {
|
|
102
|
+
const platform = process.platform;
|
|
103
|
+
const arch = process.arch;
|
|
104
|
+
let osName = 'Unknown';
|
|
105
|
+
let deviceName = 'CLI Device';
|
|
106
|
+
switch (platform) {
|
|
107
|
+
case 'darwin':
|
|
108
|
+
osName = 'macOS';
|
|
109
|
+
deviceName = 'Mac';
|
|
110
|
+
break;
|
|
111
|
+
case 'win32':
|
|
112
|
+
osName = 'Windows';
|
|
113
|
+
deviceName = 'Windows PC';
|
|
114
|
+
break;
|
|
115
|
+
case 'linux':
|
|
116
|
+
osName = 'Linux';
|
|
117
|
+
deviceName = 'Linux Machine';
|
|
118
|
+
break;
|
|
119
|
+
}
|
|
120
|
+
return {
|
|
121
|
+
name: deviceName,
|
|
122
|
+
os: `${osName} (${arch})`,
|
|
123
|
+
};
|
|
124
|
+
}
|
|
50
125
|
/**
|
|
51
126
|
* Main setup command
|
|
52
127
|
*/
|
|
@@ -56,20 +131,27 @@ export async function setupCommand(options = {}) {
|
|
|
56
131
|
console.log('\n🚀 Contextium MCP Setup\n');
|
|
57
132
|
console.log('This will authorize your MCP server to access Contextium.\n');
|
|
58
133
|
try {
|
|
59
|
-
// Step 1:
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
// Step 2:
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
console.log(
|
|
72
|
-
|
|
134
|
+
// Step 1: Get device info
|
|
135
|
+
const detectedDevice = getDeviceInfo();
|
|
136
|
+
const deviceName = await askQuestion('What is this device?', detectedDevice.name);
|
|
137
|
+
// Step 2: Generate device code
|
|
138
|
+
console.log('\n⏳ Generating device code...');
|
|
139
|
+
const deviceCodeResponse = await generateDeviceCode(apiUrl);
|
|
140
|
+
console.log('✓ Device code generated\n');
|
|
141
|
+
// Step 3: Display user code
|
|
142
|
+
console.log('═══════════════════════════════════════════════');
|
|
143
|
+
console.log('');
|
|
144
|
+
console.log(' 📱 Your device code:');
|
|
145
|
+
console.log('');
|
|
146
|
+
console.log(` ${deviceCodeResponse.userCode}`);
|
|
147
|
+
console.log('');
|
|
148
|
+
console.log('═══════════════════════════════════════════════\n');
|
|
149
|
+
console.log(`Device: ${deviceName}`);
|
|
150
|
+
console.log(`This code will expire in 15 minutes.`);
|
|
151
|
+
console.log(`Code expires at: ${new Date(deviceCodeResponse.expiresAt).toLocaleString()}\n`);
|
|
152
|
+
// Step 4: Open browser to authorization page
|
|
153
|
+
const authUrl = `${deviceCodeResponse.verificationUri}?code=${deviceCodeResponse.userCode}&deviceName=${encodeURIComponent(deviceName)}`;
|
|
154
|
+
console.log('📝 Opening browser for authorization...\n');
|
|
73
155
|
if (!options.skipBrowser) {
|
|
74
156
|
try {
|
|
75
157
|
await open(authUrl);
|
|
@@ -85,20 +167,21 @@ export async function setupCommand(options = {}) {
|
|
|
85
167
|
console.log('Please open this URL in your browser:');
|
|
86
168
|
console.log(authUrl);
|
|
87
169
|
}
|
|
88
|
-
console.log('\n⏳ Waiting for authorization
|
|
89
|
-
|
|
90
|
-
|
|
170
|
+
console.log('\n⏳ Waiting for authorization...');
|
|
171
|
+
console.log('(This will continue automatically once you authorize in your browser)\n');
|
|
172
|
+
// Step 5: Poll for authorization
|
|
173
|
+
const result = await pollForToken(apiUrl, deviceCodeResponse.deviceCode, deviceCodeResponse.interval);
|
|
91
174
|
console.log('✓ Authorization successful!');
|
|
92
|
-
// Step
|
|
175
|
+
// Step 6: Save credentials
|
|
93
176
|
saveProfile(profileName, {
|
|
94
177
|
apiUrl,
|
|
95
|
-
accessToken: result.
|
|
96
|
-
workspaceId: result.
|
|
178
|
+
accessToken: result.access_token,
|
|
179
|
+
workspaceId: result.workspace_id || null,
|
|
97
180
|
createdAt: new Date().toISOString(),
|
|
98
|
-
expiresAt: result.
|
|
181
|
+
expiresAt: result.expires_at,
|
|
99
182
|
}, true);
|
|
100
183
|
console.log(`✓ Credentials saved to profile: ${profileName}`);
|
|
101
|
-
// Step
|
|
184
|
+
// Step 7: Ask about Claude config
|
|
102
185
|
if (claudeConfigExists()) {
|
|
103
186
|
console.log('\n🔧 Claude Desktop detected');
|
|
104
187
|
const shouldUpdate = await askYesNo('Would you like to update Claude Desktop config?');
|
|
@@ -128,172 +211,4 @@ export async function setupCommand(options = {}) {
|
|
|
128
211
|
process.exit(1);
|
|
129
212
|
}
|
|
130
213
|
}
|
|
131
|
-
/**
|
|
132
|
-
* Start local HTTP server to receive callback
|
|
133
|
-
*/
|
|
134
|
-
function startCallbackServer(port) {
|
|
135
|
-
return new Promise((resolve, reject) => {
|
|
136
|
-
const timeout = setTimeout(() => {
|
|
137
|
-
server.close();
|
|
138
|
-
reject(new Error('Authorization timeout - please try again'));
|
|
139
|
-
}, AUTH_TIMEOUT_MS);
|
|
140
|
-
const server = http.createServer(async (req, res) => {
|
|
141
|
-
const url = new URL(req.url || '', `http://localhost:${port}`);
|
|
142
|
-
if (url.pathname === '/callback') {
|
|
143
|
-
const token = url.searchParams.get('token');
|
|
144
|
-
const workspaceId = url.searchParams.get('workspaceId');
|
|
145
|
-
const expiresAt = url.searchParams.get('expiresAt');
|
|
146
|
-
const error = url.searchParams.get('error');
|
|
147
|
-
if (error) {
|
|
148
|
-
res.writeHead(400, { 'Content-Type': 'text/html' });
|
|
149
|
-
res.end(`
|
|
150
|
-
<html>
|
|
151
|
-
<body style="font-family: sans-serif; padding: 40px; text-align: center;">
|
|
152
|
-
<h1>❌ Authorization Failed</h1>
|
|
153
|
-
<p>${error}</p>
|
|
154
|
-
<p>You can close this window and try again.</p>
|
|
155
|
-
</body>
|
|
156
|
-
</html>
|
|
157
|
-
`);
|
|
158
|
-
clearTimeout(timeout);
|
|
159
|
-
server.close();
|
|
160
|
-
reject(new Error(error));
|
|
161
|
-
return;
|
|
162
|
-
}
|
|
163
|
-
if (!token || !expiresAt) {
|
|
164
|
-
res.writeHead(400, { 'Content-Type': 'text/html' });
|
|
165
|
-
res.end(`
|
|
166
|
-
<html>
|
|
167
|
-
<body style="font-family: sans-serif; padding: 40px; text-align: center;">
|
|
168
|
-
<h1>❌ Missing Data</h1>
|
|
169
|
-
<p>Token or expiry date missing. Please try again.</p>
|
|
170
|
-
</body>
|
|
171
|
-
</html>
|
|
172
|
-
`);
|
|
173
|
-
clearTimeout(timeout);
|
|
174
|
-
server.close();
|
|
175
|
-
reject(new Error('Missing token or expiry data'));
|
|
176
|
-
return;
|
|
177
|
-
}
|
|
178
|
-
// Success!
|
|
179
|
-
res.writeHead(200, { 'Content-Type': 'text/html' });
|
|
180
|
-
res.end(`
|
|
181
|
-
<!DOCTYPE html>
|
|
182
|
-
<html lang="en">
|
|
183
|
-
<head>
|
|
184
|
-
<meta charset="UTF-8">
|
|
185
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
186
|
-
<title>Contextium - Setup Complete</title>
|
|
187
|
-
<style>
|
|
188
|
-
* { margin: 0; padding: 0; box-sizing: border-box; }
|
|
189
|
-
body {
|
|
190
|
-
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
191
|
-
background: #0a0a0b;
|
|
192
|
-
color: #e5e5e7;
|
|
193
|
-
display: flex;
|
|
194
|
-
align-items: center;
|
|
195
|
-
justify-content: center;
|
|
196
|
-
min-height: 100vh;
|
|
197
|
-
padding: 20px;
|
|
198
|
-
}
|
|
199
|
-
.container {
|
|
200
|
-
text-align: center;
|
|
201
|
-
max-width: 500px;
|
|
202
|
-
}
|
|
203
|
-
.icon {
|
|
204
|
-
width: 80px;
|
|
205
|
-
height: 80px;
|
|
206
|
-
margin: 0 auto 32px;
|
|
207
|
-
background: rgba(34, 197, 94, 0.1);
|
|
208
|
-
border-radius: 50%;
|
|
209
|
-
display: flex;
|
|
210
|
-
align-items: center;
|
|
211
|
-
justify-content: center;
|
|
212
|
-
position: relative;
|
|
213
|
-
}
|
|
214
|
-
.icon::before {
|
|
215
|
-
content: '';
|
|
216
|
-
position: absolute;
|
|
217
|
-
inset: 0;
|
|
218
|
-
background: rgba(34, 197, 94, 0.2);
|
|
219
|
-
border-radius: 50%;
|
|
220
|
-
filter: blur(40px);
|
|
221
|
-
}
|
|
222
|
-
.icon svg {
|
|
223
|
-
width: 40px;
|
|
224
|
-
height: 40px;
|
|
225
|
-
position: relative;
|
|
226
|
-
z-index: 1;
|
|
227
|
-
}
|
|
228
|
-
h1 {
|
|
229
|
-
font-size: 32px;
|
|
230
|
-
font-weight: 700;
|
|
231
|
-
margin-bottom: 16px;
|
|
232
|
-
color: #fff;
|
|
233
|
-
}
|
|
234
|
-
p {
|
|
235
|
-
font-size: 16px;
|
|
236
|
-
color: #a1a1aa;
|
|
237
|
-
line-height: 1.6;
|
|
238
|
-
}
|
|
239
|
-
.badge {
|
|
240
|
-
display: inline-flex;
|
|
241
|
-
align-items: center;
|
|
242
|
-
gap: 8px;
|
|
243
|
-
margin-top: 32px;
|
|
244
|
-
padding: 12px 24px;
|
|
245
|
-
background: rgba(34, 197, 94, 0.1);
|
|
246
|
-
border: 1px solid rgba(34, 197, 94, 0.2);
|
|
247
|
-
border-radius: 12px;
|
|
248
|
-
color: #22c55e;
|
|
249
|
-
font-size: 14px;
|
|
250
|
-
font-weight: 500;
|
|
251
|
-
}
|
|
252
|
-
</style>
|
|
253
|
-
</head>
|
|
254
|
-
<body>
|
|
255
|
-
<div class="container">
|
|
256
|
-
<div class="icon">
|
|
257
|
-
<svg fill="none" stroke="#22c55e" stroke-width="3" viewBox="0 0 24 24">
|
|
258
|
-
<path stroke-linecap="round" stroke-linejoin="round" d="M5 13l4 4L19 7" />
|
|
259
|
-
</svg>
|
|
260
|
-
</div>
|
|
261
|
-
<h1>Setup Complete!</h1>
|
|
262
|
-
<p>Your MCP server is now connected to Contextium.<br>Return to your terminal to continue.</p>
|
|
263
|
-
<div class="badge">
|
|
264
|
-
<svg width="16" height="16" fill="currentColor" viewBox="0 0 24 24">
|
|
265
|
-
<path d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"/>
|
|
266
|
-
</svg>
|
|
267
|
-
Credentials Saved
|
|
268
|
-
</div>
|
|
269
|
-
<p style="margin-top: 24px; padding: 16px; background: rgba(251, 191, 36, 0.1); border: 1px solid rgba(251, 191, 36, 0.2); border-radius: 8px; color: #fbbf24; font-size: 14px; line-height: 1.5;">
|
|
270
|
-
<strong>⚠️ Important:</strong> If Claude Desktop is already open, please quit and restart it for changes to take effect.
|
|
271
|
-
</p>
|
|
272
|
-
</div>
|
|
273
|
-
<script>setTimeout(() => window.close(), 5000);</script>
|
|
274
|
-
</body>
|
|
275
|
-
</html>
|
|
276
|
-
`);
|
|
277
|
-
clearTimeout(timeout);
|
|
278
|
-
server.close();
|
|
279
|
-
resolve({
|
|
280
|
-
token,
|
|
281
|
-
workspaceId: workspaceId || null,
|
|
282
|
-
expiresAt,
|
|
283
|
-
});
|
|
284
|
-
}
|
|
285
|
-
else {
|
|
286
|
-
res.writeHead(404);
|
|
287
|
-
res.end('Not Found');
|
|
288
|
-
}
|
|
289
|
-
});
|
|
290
|
-
server.on('error', (err) => {
|
|
291
|
-
clearTimeout(timeout);
|
|
292
|
-
reject(err);
|
|
293
|
-
});
|
|
294
|
-
server.listen(port, '127.0.0.1', () => {
|
|
295
|
-
console.log(`✓ Callback server listening on http://localhost:${port}`);
|
|
296
|
-
});
|
|
297
|
-
});
|
|
298
|
-
}
|
|
299
214
|
//# sourceMappingURL=setup.js.map
|
package/dist/cli/setup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAQnE,wBAAgB,YAAY;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAQnE,wBAAgB,YAAY;;;;;;;;;;;;;;;;;;6CAkJ3B"}
|
package/dist/server.js
CHANGED
|
@@ -42,6 +42,10 @@ export function createServer() {
|
|
|
42
42
|
tools.listTagsTool,
|
|
43
43
|
tools.listWorkflowsTool,
|
|
44
44
|
tools.getFileTool,
|
|
45
|
+
tools.getAgentTool,
|
|
46
|
+
tools.getSkillTool,
|
|
47
|
+
tools.getWorkflowTool,
|
|
48
|
+
tools.getContextLibraryTool,
|
|
45
49
|
tools.searchDocumentationTool,
|
|
46
50
|
tools.searchByTagsTool,
|
|
47
51
|
tools.loadWorkflowTool,
|
|
@@ -89,6 +93,14 @@ export function createServer() {
|
|
|
89
93
|
return await tools.listWorkflows(auth, args || {});
|
|
90
94
|
case 'get_file':
|
|
91
95
|
return await tools.getFile(auth, args);
|
|
96
|
+
case 'get_agent':
|
|
97
|
+
return await tools.getAgent(auth, args);
|
|
98
|
+
case 'get_skill':
|
|
99
|
+
return await tools.getSkill(auth, args);
|
|
100
|
+
case 'get_workflow':
|
|
101
|
+
return await tools.getWorkflow(auth, args);
|
|
102
|
+
case 'get_context_library':
|
|
103
|
+
return await tools.getContextLibrary(auth, args);
|
|
92
104
|
case 'search_documentation':
|
|
93
105
|
return await tools.searchDocumentation(auth, args);
|
|
94
106
|
case 'search_by_tags':
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
import type { AuthContext } from '../types.js';
|
|
3
|
+
export declare const getAgentTool: Tool;
|
|
4
|
+
export declare function getAgent(_auth: AuthContext, args: any): Promise<{
|
|
5
|
+
content: {
|
|
6
|
+
type: string;
|
|
7
|
+
text: string;
|
|
8
|
+
}[];
|
|
9
|
+
}>;
|
|
10
|
+
//# sourceMappingURL=get-agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-agent.d.ts","sourceRoot":"","sources":["../../src/tools/get-agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI/C,eAAO,MAAM,YAAY,EAAE,IAkB1B,CAAC;AAEF,wBAAsB,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG;;;;;GAiE3D"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { ContextiumApiClient } from '../api-client.js';
|
|
2
|
+
import { getCurrentProfile } from '../cli/credentials.js';
|
|
3
|
+
export const getAgentTool = {
|
|
4
|
+
name: 'get_agent',
|
|
5
|
+
description: 'Get detailed information about a specific agent including system prompt, persona, configuration, and associated files. Returns complete agent context for use in LLM workflows.',
|
|
6
|
+
inputSchema: {
|
|
7
|
+
type: 'object',
|
|
8
|
+
properties: {
|
|
9
|
+
agentId: {
|
|
10
|
+
type: 'string',
|
|
11
|
+
description: 'Agent ID to retrieve',
|
|
12
|
+
},
|
|
13
|
+
workspaceId: {
|
|
14
|
+
type: 'string',
|
|
15
|
+
description: 'Optional: workspace ID (uses default if not specified)',
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
required: ['agentId'],
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
export async function getAgent(_auth, args) {
|
|
22
|
+
const { agentId, workspaceId } = args || {};
|
|
23
|
+
if (!agentId) {
|
|
24
|
+
throw new Error('agentId is required');
|
|
25
|
+
}
|
|
26
|
+
const profile = getCurrentProfile();
|
|
27
|
+
if (!profile || !profile.accessToken) {
|
|
28
|
+
throw new Error('Not authenticated');
|
|
29
|
+
}
|
|
30
|
+
const client = new ContextiumApiClient(profile.apiUrl || 'https://api.contextium.io/api/v1', profile.accessToken);
|
|
31
|
+
// Determine workspace ID
|
|
32
|
+
let targetWorkspaceId = workspaceId;
|
|
33
|
+
if (!targetWorkspaceId) {
|
|
34
|
+
const workspacesResponse = await client.get('/workspaces');
|
|
35
|
+
const workspaces = workspacesResponse.data || [];
|
|
36
|
+
if (workspaces.length === 0) {
|
|
37
|
+
throw new Error('No workspaces found');
|
|
38
|
+
}
|
|
39
|
+
targetWorkspaceId = workspaces[0].id;
|
|
40
|
+
}
|
|
41
|
+
// Get agent details
|
|
42
|
+
const response = await client.get(`/workspaces/${targetWorkspaceId}/agents/${agentId}`);
|
|
43
|
+
const agent = response.data;
|
|
44
|
+
// Format the agent data
|
|
45
|
+
const formattedAgent = {
|
|
46
|
+
id: agent.id,
|
|
47
|
+
name: agent.name,
|
|
48
|
+
description: agent.description || null,
|
|
49
|
+
systemPrompt: agent.systemPrompt || null,
|
|
50
|
+
persona: agent.persona || null,
|
|
51
|
+
configuration: {
|
|
52
|
+
model: agent.model || null,
|
|
53
|
+
temperature: agent.temperature || null,
|
|
54
|
+
maxTokens: agent.maxTokens || null,
|
|
55
|
+
},
|
|
56
|
+
skills: agent.skills || [],
|
|
57
|
+
fileCount: agent.fileCount || 0,
|
|
58
|
+
workspaceId: agent.workspaceId,
|
|
59
|
+
createdAt: agent.createdAt,
|
|
60
|
+
updatedAt: agent.updatedAt,
|
|
61
|
+
};
|
|
62
|
+
return {
|
|
63
|
+
content: [
|
|
64
|
+
{
|
|
65
|
+
type: 'text',
|
|
66
|
+
text: JSON.stringify(formattedAgent, null, 2),
|
|
67
|
+
},
|
|
68
|
+
],
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=get-agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-agent.js","sourceRoot":"","sources":["../../src/tools/get-agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
import type { AuthContext } from '../types.js';
|
|
3
|
+
export declare const getContextLibraryTool: Tool;
|
|
4
|
+
export declare function getContextLibrary(auth: AuthContext, args: any): Promise<{
|
|
5
|
+
content: {
|
|
6
|
+
type: string;
|
|
7
|
+
text: string;
|
|
8
|
+
}[];
|
|
9
|
+
isError: boolean;
|
|
10
|
+
} | {
|
|
11
|
+
content: {
|
|
12
|
+
type: string;
|
|
13
|
+
text: string;
|
|
14
|
+
}[];
|
|
15
|
+
isError?: never;
|
|
16
|
+
}>;
|
|
17
|
+
//# sourceMappingURL=get-context-library.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-context-library.d.ts","sourceRoot":"","sources":["../../src/tools/get-context-library.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,eAAO,MAAM,qBAAqB,EAAE,IAkBnC,CAAC;AAEF,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG;;;;;;;;;;;;GAsGnE"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { getApiClient } from '../api-client.js';
|
|
2
|
+
export const getContextLibraryTool = {
|
|
3
|
+
name: 'get_context_library',
|
|
4
|
+
description: 'Get detailed information about a specific context library (project) including metadata, file structure, and statistics. Context libraries are collections of documentation and knowledge files.',
|
|
5
|
+
inputSchema: {
|
|
6
|
+
type: 'object',
|
|
7
|
+
properties: {
|
|
8
|
+
libraryId: {
|
|
9
|
+
type: 'string',
|
|
10
|
+
description: 'Context library ID (project ID) to retrieve',
|
|
11
|
+
},
|
|
12
|
+
workspaceId: {
|
|
13
|
+
type: 'string',
|
|
14
|
+
description: 'Optional: workspace ID (uses default if not specified)',
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
required: ['libraryId'],
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
export async function getContextLibrary(auth, args) {
|
|
21
|
+
const { libraryId, workspaceId } = args || {};
|
|
22
|
+
if (!libraryId) {
|
|
23
|
+
return {
|
|
24
|
+
content: [
|
|
25
|
+
{
|
|
26
|
+
type: 'text',
|
|
27
|
+
text: 'libraryId is required',
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
isError: true,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
const apiClient = getApiClient();
|
|
34
|
+
const targetWorkspaceId = workspaceId || auth.workspaceId;
|
|
35
|
+
try {
|
|
36
|
+
// Get library details (context libraries are regular projects or system projects with systemType='contextLibraries')
|
|
37
|
+
const library = await apiClient.getProject(targetWorkspaceId, libraryId);
|
|
38
|
+
// Get files associated with the library
|
|
39
|
+
const files = await apiClient.getFiles(libraryId);
|
|
40
|
+
// Group files by folder
|
|
41
|
+
const filesByFolder = {
|
|
42
|
+
root: [],
|
|
43
|
+
};
|
|
44
|
+
files.forEach((file) => {
|
|
45
|
+
const folder = file.folderId || 'root';
|
|
46
|
+
if (!filesByFolder[folder]) {
|
|
47
|
+
filesByFolder[folder] = [];
|
|
48
|
+
}
|
|
49
|
+
filesByFolder[folder].push(file);
|
|
50
|
+
});
|
|
51
|
+
// Format the library data
|
|
52
|
+
const formattedLibrary = {
|
|
53
|
+
id: library.id,
|
|
54
|
+
name: library.name,
|
|
55
|
+
slug: library.slug,
|
|
56
|
+
description: library.description || null,
|
|
57
|
+
isSystem: library.isSystem || false,
|
|
58
|
+
systemType: library.systemType || null,
|
|
59
|
+
fileCount: library.fileCount || files.length,
|
|
60
|
+
files: files.map((f) => ({
|
|
61
|
+
id: f.id,
|
|
62
|
+
title: f.title,
|
|
63
|
+
path: f.path,
|
|
64
|
+
folderId: f.folderId,
|
|
65
|
+
size: f.size,
|
|
66
|
+
status: f.status,
|
|
67
|
+
updatedAt: f.updatedAt,
|
|
68
|
+
})),
|
|
69
|
+
filesByFolder,
|
|
70
|
+
workspaceId: library.workspaceId,
|
|
71
|
+
createdAt: library.createdAt,
|
|
72
|
+
updatedAt: library.updatedAt,
|
|
73
|
+
};
|
|
74
|
+
let output = `📚 Context Library: ${library.name}\n\n`;
|
|
75
|
+
output += `ID: ${library.id}\n`;
|
|
76
|
+
output += `Slug: ${library.slug}\n`;
|
|
77
|
+
if (library.description) {
|
|
78
|
+
output += `Description: ${library.description}\n`;
|
|
79
|
+
}
|
|
80
|
+
output += `Type: ${library.isSystem ? `System (${library.systemType})` : 'Regular project'}\n`;
|
|
81
|
+
output += `\nFiles (${files.length}):\n`;
|
|
82
|
+
// Show files grouped by folder
|
|
83
|
+
Object.entries(filesByFolder).forEach(([folderId, folderFiles]) => {
|
|
84
|
+
const folderName = folderId === 'root' ? 'Root' : folderId;
|
|
85
|
+
output += `\n ${folderName}:\n`;
|
|
86
|
+
folderFiles.forEach((file) => {
|
|
87
|
+
output += ` - ${file.title} (${file.path})\n`;
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
output += `\n💡 Use list_files or get_project_structure for detailed file hierarchy.\n`;
|
|
91
|
+
output += `\nFull Details:\n${JSON.stringify(formattedLibrary, null, 2)}`;
|
|
92
|
+
return {
|
|
93
|
+
content: [
|
|
94
|
+
{
|
|
95
|
+
type: 'text',
|
|
96
|
+
text: output,
|
|
97
|
+
},
|
|
98
|
+
],
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
return {
|
|
103
|
+
content: [
|
|
104
|
+
{
|
|
105
|
+
type: 'text',
|
|
106
|
+
text: `Error getting context library: ${error instanceof Error ? error.message : 'Unknown error'}`,
|
|
107
|
+
},
|
|
108
|
+
],
|
|
109
|
+
isError: true,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=get-context-library.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-context-library.js","sourceRoot":"","sources":["../../src/tools/get-context-library.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,CAAC,MAAM,qBAAqB,GAAS;IACzC,IAAI,EAAE,qBAAqB;IAC3B,WAAW,EACT,iMAAiM;IACnM,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,6CAA6C;aAC3D;YACD,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,wDAAwD;aACtE;SACF;QACD,QAAQ,EAAE,CAAC,WAAW,CAAC;KACxB;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAiB,EAAE,IAAS;IAClE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC;IAE9C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,uBAAuB;iBAC9B;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,MAAM,iBAAiB,GAAG,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC;IAE1D,IAAI,CAAC;QACH,qHAAqH;QACrH,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,iBAAkB,EAAE,SAAS,CAAC,CAAC;QAE1E,wCAAwC;QACxC,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAElD,wBAAwB;QACxB,MAAM,aAAa,GAA0B;YAC3C,IAAI,EAAE,EAAE;SACT,CAAC;QAEF,KAAK,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;YAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC;YACvC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3B,aAAa,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YAC7B,CAAC;YACD,aAAa,CAAC,MAAM,CAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,0BAA0B;QAC1B,MAAM,gBAAgB,GAAG;YACvB,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,IAAI;YACxC,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,KAAK;YACnC,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,IAAI;YACtC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC,MAAM;YAC5C,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;gBAC5B,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,SAAS,EAAE,CAAC,CAAC,SAAS;aACvB,CAAC,CAAC;YACH,aAAa;YACb,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B,CAAC;QAEF,IAAI,MAAM,GAAG,uBAAuB,OAAO,CAAC,IAAI,MAAM,CAAC;QACvD,MAAM,IAAI,OAAO,OAAO,CAAC,EAAE,IAAI,CAAC;QAChC,MAAM,IAAI,SAAS,OAAO,CAAC,IAAI,IAAI,CAAC;QACpC,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,MAAM,IAAI,gBAAgB,OAAO,CAAC,WAAW,IAAI,CAAC;QACpD,CAAC;QACD,MAAM,IAAI,SAAS,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,iBAAiB,IAAI,CAAC;QAC/F,MAAM,IAAI,YAAY,KAAK,CAAC,MAAM,MAAM,CAAC;QAEzC,+BAA+B;QAC/B,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,EAAE;YAChE,MAAM,UAAU,GAAG,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;YAC3D,MAAM,IAAI,OAAO,UAAU,KAAK,CAAC;YACjC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;gBAChC,MAAM,IAAI,SAAS,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,IAAI,KAAK,CAAC;YACnD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI,6EAA6E,CAAC;QACxF,MAAM,IAAI,oBAAoB,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QAE1E,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,MAAM;iBACb;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,kCAAkC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE;iBACnG;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
import type { AuthContext } from '../types.js';
|
|
3
|
+
export declare const getSkillTool: Tool;
|
|
4
|
+
export declare function getSkill(auth: AuthContext, args: any): Promise<{
|
|
5
|
+
content: {
|
|
6
|
+
type: string;
|
|
7
|
+
text: string;
|
|
8
|
+
}[];
|
|
9
|
+
isError: boolean;
|
|
10
|
+
} | {
|
|
11
|
+
content: {
|
|
12
|
+
type: string;
|
|
13
|
+
text: string;
|
|
14
|
+
}[];
|
|
15
|
+
isError?: never;
|
|
16
|
+
}>;
|
|
17
|
+
//# sourceMappingURL=get-skill.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-skill.d.ts","sourceRoot":"","sources":["../../src/tools/get-skill.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,eAAO,MAAM,YAAY,EAAE,IAkB1B,CAAC;AAEF,wBAAsB,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG;;;;;;;;;;;;GA2F1D"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { getApiClient } from '../api-client.js';
|
|
2
|
+
export const getSkillTool = {
|
|
3
|
+
name: 'get_skill',
|
|
4
|
+
description: 'Get detailed information about a specific skill including code, configuration, and associated files. Returns complete skill context including full implementation code.',
|
|
5
|
+
inputSchema: {
|
|
6
|
+
type: 'object',
|
|
7
|
+
properties: {
|
|
8
|
+
skillId: {
|
|
9
|
+
type: 'string',
|
|
10
|
+
description: 'Skill ID (project ID) to retrieve',
|
|
11
|
+
},
|
|
12
|
+
workspaceId: {
|
|
13
|
+
type: 'string',
|
|
14
|
+
description: 'Optional: workspace ID (uses default if not specified)',
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
required: ['skillId'],
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
export async function getSkill(auth, args) {
|
|
21
|
+
const { skillId, workspaceId } = args || {};
|
|
22
|
+
if (!skillId) {
|
|
23
|
+
return {
|
|
24
|
+
content: [
|
|
25
|
+
{
|
|
26
|
+
type: 'text',
|
|
27
|
+
text: 'skillId is required',
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
isError: true,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
const apiClient = getApiClient();
|
|
34
|
+
const targetWorkspaceId = workspaceId || auth.workspaceId;
|
|
35
|
+
try {
|
|
36
|
+
// Get skill details (skills are projects with systemType='skills')
|
|
37
|
+
const skill = await apiClient.getProject(targetWorkspaceId, skillId);
|
|
38
|
+
// Verify it's actually a skill
|
|
39
|
+
if (!skill.isSystem || skill.systemType !== 'skills') {
|
|
40
|
+
return {
|
|
41
|
+
content: [
|
|
42
|
+
{
|
|
43
|
+
type: 'text',
|
|
44
|
+
text: `Project ${skillId} is not a skill. It's a ${skill.isSystem ? skill.systemType : 'regular project'}.`,
|
|
45
|
+
},
|
|
46
|
+
],
|
|
47
|
+
isError: true,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
// Get files associated with the skill
|
|
51
|
+
const files = await apiClient.getFiles(skillId);
|
|
52
|
+
// Format the skill data
|
|
53
|
+
const formattedSkill = {
|
|
54
|
+
id: skill.id,
|
|
55
|
+
name: skill.name,
|
|
56
|
+
slug: skill.slug,
|
|
57
|
+
description: skill.description || null,
|
|
58
|
+
fileCount: skill.fileCount || files.length,
|
|
59
|
+
files: files.map((f) => ({
|
|
60
|
+
id: f.id,
|
|
61
|
+
title: f.title,
|
|
62
|
+
path: f.path,
|
|
63
|
+
size: f.size,
|
|
64
|
+
status: f.status,
|
|
65
|
+
updatedAt: f.updatedAt,
|
|
66
|
+
})),
|
|
67
|
+
workspaceId: skill.workspaceId,
|
|
68
|
+
createdAt: skill.createdAt,
|
|
69
|
+
updatedAt: skill.updatedAt,
|
|
70
|
+
};
|
|
71
|
+
let output = `📦 Skill: ${skill.name}\n\n`;
|
|
72
|
+
output += `ID: ${skill.id}\n`;
|
|
73
|
+
output += `Slug: ${skill.slug}\n`;
|
|
74
|
+
if (skill.description) {
|
|
75
|
+
output += `Description: ${skill.description}\n`;
|
|
76
|
+
}
|
|
77
|
+
output += `\nFiles (${files.length}):\n`;
|
|
78
|
+
files.forEach((file, index) => {
|
|
79
|
+
output += `${index + 1}. ${file.title} (${file.path})\n`;
|
|
80
|
+
});
|
|
81
|
+
output += `\n💡 Use get_file with a file ID to view the skill code.\n`;
|
|
82
|
+
output += `\nFull Details:\n${JSON.stringify(formattedSkill, null, 2)}`;
|
|
83
|
+
return {
|
|
84
|
+
content: [
|
|
85
|
+
{
|
|
86
|
+
type: 'text',
|
|
87
|
+
text: output,
|
|
88
|
+
},
|
|
89
|
+
],
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
return {
|
|
94
|
+
content: [
|
|
95
|
+
{
|
|
96
|
+
type: 'text',
|
|
97
|
+
text: `Error getting skill: ${error instanceof Error ? error.message : 'Unknown error'}`,
|
|
98
|
+
},
|
|
99
|
+
],
|
|
100
|
+
isError: true,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=get-skill.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-skill.js","sourceRoot":"","sources":["../../src/tools/get-skill.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
import type { AuthContext } from '../types.js';
|
|
3
|
+
export declare const getWorkflowTool: Tool;
|
|
4
|
+
export declare function getWorkflow(_auth: AuthContext, args: any): Promise<{
|
|
5
|
+
content: {
|
|
6
|
+
type: string;
|
|
7
|
+
text: string;
|
|
8
|
+
}[];
|
|
9
|
+
}>;
|
|
10
|
+
//# sourceMappingURL=get-workflow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-workflow.d.ts","sourceRoot":"","sources":["../../src/tools/get-workflow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI/C,eAAO,MAAM,eAAe,EAAE,IAkB7B,CAAC;AAEF,wBAAsB,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG;;;;;GAuF9D"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { ContextiumApiClient } from '../api-client.js';
|
|
2
|
+
import { getCurrentProfile } from '../cli/credentials.js';
|
|
3
|
+
export const getWorkflowTool = {
|
|
4
|
+
name: 'get_workflow',
|
|
5
|
+
description: 'Get detailed information about a specific workflow including name, description, associated agents, tags, and metadata. Use load_workflow to get the complete workflow context with all resources (agents, skills, files).',
|
|
6
|
+
inputSchema: {
|
|
7
|
+
type: 'object',
|
|
8
|
+
properties: {
|
|
9
|
+
workflowId: {
|
|
10
|
+
type: 'string',
|
|
11
|
+
description: 'Workflow ID to retrieve',
|
|
12
|
+
},
|
|
13
|
+
workspaceId: {
|
|
14
|
+
type: 'string',
|
|
15
|
+
description: 'Optional: workspace ID (uses default if not specified)',
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
required: ['workflowId'],
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
export async function getWorkflow(_auth, args) {
|
|
22
|
+
const { workflowId, workspaceId } = args || {};
|
|
23
|
+
if (!workflowId) {
|
|
24
|
+
throw new Error('workflowId is required');
|
|
25
|
+
}
|
|
26
|
+
const profile = getCurrentProfile();
|
|
27
|
+
if (!profile || !profile.accessToken) {
|
|
28
|
+
throw new Error('Not authenticated');
|
|
29
|
+
}
|
|
30
|
+
const client = new ContextiumApiClient(profile.apiUrl || 'https://api.contextium.io/api/v1', profile.accessToken);
|
|
31
|
+
// Determine workspace ID
|
|
32
|
+
let targetWorkspaceId = workspaceId;
|
|
33
|
+
if (!targetWorkspaceId) {
|
|
34
|
+
const workspacesResponse = await client.get('/workspaces');
|
|
35
|
+
const workspaces = workspacesResponse.data || [];
|
|
36
|
+
if (workspaces.length === 0) {
|
|
37
|
+
throw new Error('No workspaces found');
|
|
38
|
+
}
|
|
39
|
+
targetWorkspaceId = workspaces[0].id;
|
|
40
|
+
}
|
|
41
|
+
// Get workflow details
|
|
42
|
+
const response = await client.get(`/workspaces/${targetWorkspaceId}/workflows/${workflowId}`);
|
|
43
|
+
const workflow = response.data;
|
|
44
|
+
// Format the workflow data
|
|
45
|
+
const formattedWorkflow = {
|
|
46
|
+
id: workflow.id,
|
|
47
|
+
name: workflow.name,
|
|
48
|
+
description: workflow.description || null,
|
|
49
|
+
agentIds: workflow.agentIds || [],
|
|
50
|
+
projectId: workflow.projectId || null,
|
|
51
|
+
tags: workflow.tags || [],
|
|
52
|
+
workspaceId: workflow.workspaceId,
|
|
53
|
+
createdAt: workflow.createdAt,
|
|
54
|
+
updatedAt: workflow.updatedAt,
|
|
55
|
+
};
|
|
56
|
+
let output = `🔄 Workflow: ${workflow.name}\n\n`;
|
|
57
|
+
output += `ID: ${workflow.id}\n`;
|
|
58
|
+
if (workflow.description) {
|
|
59
|
+
output += `Description: ${workflow.description}\n`;
|
|
60
|
+
}
|
|
61
|
+
output += `\nAgents (${workflow.agentIds?.length || 0}):\n`;
|
|
62
|
+
if (workflow.agentIds && workflow.agentIds.length > 0) {
|
|
63
|
+
workflow.agentIds.forEach((agentId, index) => {
|
|
64
|
+
output += `${index + 1}. ${agentId}\n`;
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
output += ` No agents assigned\n`;
|
|
69
|
+
}
|
|
70
|
+
output += `\nTags (${workflow.tags?.length || 0}):\n`;
|
|
71
|
+
if (workflow.tags && workflow.tags.length > 0) {
|
|
72
|
+
workflow.tags.forEach((tag, index) => {
|
|
73
|
+
output += `${index + 1}. ${tag.value}`;
|
|
74
|
+
if (tag.color)
|
|
75
|
+
output += ` (${tag.color})`;
|
|
76
|
+
output += '\n';
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
output += ` No tags assigned\n`;
|
|
81
|
+
}
|
|
82
|
+
output += `\n💡 Use load_workflow to get all resources (agents, skills, files) for this workflow.\n`;
|
|
83
|
+
output += `\nFull Details:\n${JSON.stringify(formattedWorkflow, null, 2)}`;
|
|
84
|
+
return {
|
|
85
|
+
content: [
|
|
86
|
+
{
|
|
87
|
+
type: 'text',
|
|
88
|
+
text: output,
|
|
89
|
+
},
|
|
90
|
+
],
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=get-workflow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-workflow.js","sourceRoot":"","sources":["../../src/tools/get-workflow.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/index.d.ts
CHANGED
|
@@ -17,4 +17,8 @@ export * from './search-by-tags.js';
|
|
|
17
17
|
export * from './list-tags.js';
|
|
18
18
|
export * from './list-workflows.js';
|
|
19
19
|
export * from './load-workflow.js';
|
|
20
|
+
export * from './get-agent.js';
|
|
21
|
+
export * from './get-skill.js';
|
|
22
|
+
export * from './get-workflow.js';
|
|
23
|
+
export * from './get-context-library.js';
|
|
20
24
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC"}
|
package/dist/tools/index.js
CHANGED
|
@@ -17,4 +17,8 @@ export * from './search-by-tags.js';
|
|
|
17
17
|
export * from './list-tags.js';
|
|
18
18
|
export * from './list-workflows.js';
|
|
19
19
|
export * from './load-workflow.js';
|
|
20
|
+
export * from './get-agent.js';
|
|
21
|
+
export * from './get-skill.js';
|
|
22
|
+
export * from './get-workflow.js';
|
|
23
|
+
export * from './get-context-library.js';
|
|
20
24
|
//# sourceMappingURL=index.js.map
|
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load-workflow.d.ts","sourceRoot":"","sources":["../../src/tools/load-workflow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI/C,eAAO,MAAM,gBAAgB
|
|
1
|
+
{"version":3,"file":"load-workflow.d.ts","sourceRoot":"","sources":["../../src/tools/load-workflow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI/C,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;CAuB5B,CAAC;AAEF,wBAAsB,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG;;;;;GAyK/D"}
|
|
@@ -2,7 +2,7 @@ import { ContextiumApiClient } from '../api-client.js';
|
|
|
2
2
|
import { getCurrentProfile } from '../cli/credentials.js';
|
|
3
3
|
export const loadWorkflowTool = {
|
|
4
4
|
name: 'load_workflow',
|
|
5
|
-
description: 'Load all
|
|
5
|
+
description: 'Load all resources associated with a workflow including agents, skills, files, and context libraries. Returns the complete workflow context with all agents (full configuration and system prompts), skills (full code), files (from tags and assigned projects), and metadata. This provides everything needed to execute or understand the workflow in an LLM.',
|
|
6
6
|
inputSchema: {
|
|
7
7
|
type: 'object',
|
|
8
8
|
properties: {
|
|
@@ -14,12 +14,17 @@ export const loadWorkflowTool = {
|
|
|
14
14
|
type: 'string',
|
|
15
15
|
description: 'Optional: workspace ID (uses default if not specified)',
|
|
16
16
|
},
|
|
17
|
+
includeFileContent: {
|
|
18
|
+
type: 'boolean',
|
|
19
|
+
description: 'Optional: include full file content (default: false, only returns file metadata)',
|
|
20
|
+
default: false,
|
|
21
|
+
},
|
|
17
22
|
},
|
|
18
23
|
required: ['workflowId'],
|
|
19
24
|
},
|
|
20
25
|
};
|
|
21
26
|
export async function loadWorkflow(_auth, args) {
|
|
22
|
-
const { workflowId, workspaceId } = args || {};
|
|
27
|
+
const { workflowId, workspaceId, includeFileContent = false } = args || {};
|
|
23
28
|
if (!workflowId) {
|
|
24
29
|
throw new Error('workflowId is required');
|
|
25
30
|
}
|
|
@@ -42,44 +47,130 @@ export async function loadWorkflow(_auth, args) {
|
|
|
42
47
|
// Load workflow and its resources
|
|
43
48
|
const response = await client.get(`/workspaces/${targetWorkspaceId}/workflows/${workflowId}/load`);
|
|
44
49
|
const result = response.data;
|
|
45
|
-
const { workflow, files, tagDetails } = result;
|
|
50
|
+
const { workflow, files, agents, skills, contextLibraries, tagDetails } = result;
|
|
46
51
|
// Format tag details
|
|
47
|
-
const formattedTags = tagDetails.map((t) => ({
|
|
52
|
+
const formattedTags = (tagDetails || []).map((t) => ({
|
|
48
53
|
id: t.id,
|
|
49
54
|
value: t.value,
|
|
50
55
|
color: t.color,
|
|
51
56
|
}));
|
|
52
|
-
//
|
|
57
|
+
// Format agents
|
|
58
|
+
const formattedAgents = (agents || []).map((agent) => ({
|
|
59
|
+
id: agent.id,
|
|
60
|
+
name: agent.name,
|
|
61
|
+
description: agent.description,
|
|
62
|
+
fileCount: agent.fileCount,
|
|
63
|
+
}));
|
|
64
|
+
// Format skills
|
|
65
|
+
const formattedSkills = (skills || []).map((skill) => ({
|
|
66
|
+
id: skill.id,
|
|
67
|
+
name: skill.name,
|
|
68
|
+
description: skill.description,
|
|
69
|
+
fileCount: skill.fileCount,
|
|
70
|
+
}));
|
|
71
|
+
// Format context libraries
|
|
72
|
+
const formattedLibraries = (contextLibraries || []).map((lib) => ({
|
|
73
|
+
id: lib.id,
|
|
74
|
+
name: lib.name,
|
|
75
|
+
description: lib.description,
|
|
76
|
+
fileCount: lib.fileCount,
|
|
77
|
+
}));
|
|
78
|
+
// Group files by project type
|
|
53
79
|
const filesByProject = {};
|
|
80
|
+
const filesByType = {
|
|
81
|
+
agents: [],
|
|
82
|
+
skills: [],
|
|
83
|
+
contextLibraries: [],
|
|
84
|
+
other: [],
|
|
85
|
+
};
|
|
54
86
|
files.forEach((file) => {
|
|
55
87
|
const projectId = file.projectId || 'unknown';
|
|
56
88
|
if (!filesByProject[projectId]) {
|
|
57
89
|
filesByProject[projectId] = [];
|
|
58
90
|
}
|
|
59
|
-
|
|
91
|
+
const fileData = {
|
|
60
92
|
id: file.id,
|
|
61
93
|
title: file.title,
|
|
62
94
|
path: file.path,
|
|
95
|
+
projectId: file.projectId,
|
|
63
96
|
size: file.size,
|
|
64
97
|
status: file.status,
|
|
65
98
|
updatedAt: file.updatedAt,
|
|
66
|
-
}
|
|
99
|
+
};
|
|
100
|
+
filesByProject[projectId].push(fileData);
|
|
101
|
+
// Categorize by type
|
|
102
|
+
const isAgent = agents.some((a) => a.id === projectId);
|
|
103
|
+
const isSkill = skills.some((s) => s.id === projectId);
|
|
104
|
+
const isLibrary = contextLibraries.some((l) => l.id === projectId);
|
|
105
|
+
if (isAgent) {
|
|
106
|
+
filesByType.agents.push(fileData);
|
|
107
|
+
}
|
|
108
|
+
else if (isSkill) {
|
|
109
|
+
filesByType.skills.push(fileData);
|
|
110
|
+
}
|
|
111
|
+
else if (isLibrary) {
|
|
112
|
+
filesByType.contextLibraries.push(fileData);
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
filesByType.other.push(fileData);
|
|
116
|
+
}
|
|
67
117
|
});
|
|
118
|
+
// Optionally load full file content
|
|
119
|
+
let filesWithContent = [];
|
|
120
|
+
if (includeFileContent && files.length > 0) {
|
|
121
|
+
// Note: This could be slow for large workflows
|
|
122
|
+
// Consider adding pagination or limits
|
|
123
|
+
for (const file of files) {
|
|
124
|
+
try {
|
|
125
|
+
const fileResponse = await client.get(`/files/${file.id}`);
|
|
126
|
+
filesWithContent.push({
|
|
127
|
+
id: file.id,
|
|
128
|
+
title: file.title,
|
|
129
|
+
path: file.path,
|
|
130
|
+
content: fileResponse.data.content,
|
|
131
|
+
projectId: file.projectId,
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
catch (error) {
|
|
135
|
+
// Skip files that can't be loaded
|
|
136
|
+
console.error(`Failed to load file ${file.id}:`, error);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
const summary = {
|
|
141
|
+
message: `Loaded workflow "${workflow.name}"`,
|
|
142
|
+
resources: {
|
|
143
|
+
agents: formattedAgents.length,
|
|
144
|
+
skills: formattedSkills.length,
|
|
145
|
+
contextLibraries: formattedLibraries.length,
|
|
146
|
+
files: files.length,
|
|
147
|
+
tags: formattedTags.length,
|
|
148
|
+
},
|
|
149
|
+
workflow: {
|
|
150
|
+
id: workflow.id,
|
|
151
|
+
name: workflow.name,
|
|
152
|
+
description: workflow.description || null,
|
|
153
|
+
agentIds: workflow.agentIds || [],
|
|
154
|
+
projectId: workflow.projectId,
|
|
155
|
+
tags: formattedTags,
|
|
156
|
+
createdAt: workflow.createdAt,
|
|
157
|
+
updatedAt: workflow.updatedAt,
|
|
158
|
+
},
|
|
159
|
+
agents: formattedAgents,
|
|
160
|
+
skills: formattedSkills,
|
|
161
|
+
contextLibraries: formattedLibraries,
|
|
162
|
+
files: filesByType,
|
|
163
|
+
filesByProject,
|
|
164
|
+
};
|
|
165
|
+
// Add file content if requested
|
|
166
|
+
if (includeFileContent) {
|
|
167
|
+
summary.filesWithContent = filesWithContent;
|
|
168
|
+
}
|
|
68
169
|
return {
|
|
69
170
|
content: [
|
|
70
171
|
{
|
|
71
172
|
type: 'text',
|
|
72
|
-
text: JSON.stringify(
|
|
73
|
-
message: `Loaded workflow "${workflow.name}" with ${files.length} file(s)`,
|
|
74
|
-
workflow: {
|
|
75
|
-
id: workflow.id,
|
|
76
|
-
name: workflow.name,
|
|
77
|
-
description: workflow.description || null,
|
|
78
|
-
tags: formattedTags,
|
|
79
|
-
},
|
|
80
|
-
fileCount: files.length,
|
|
81
|
-
filesByProject,
|
|
82
|
-
}, null, 2),
|
|
173
|
+
text: JSON.stringify(summary, null, 2),
|
|
83
174
|
},
|
|
84
175
|
],
|
|
85
176
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load-workflow.js","sourceRoot":"","sources":["../../src/tools/load-workflow.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,IAAI,EAAE,eAAe;IACrB,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"load-workflow.js","sourceRoot":"","sources":["../../src/tools/load-workflow.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED