@semiont/cli 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.
Files changed (36) hide show
  1. package/README.md +497 -0
  2. package/dist/cli.mjs +45524 -0
  3. package/dist/dashboard/dashboard.css +238 -0
  4. package/dist/dashboard/dashboard.js +14 -0
  5. package/dist/dashboard/dashboard.js.map +7 -0
  6. package/dist/mcp-server/handlers-stubs.d.ts +40 -0
  7. package/dist/mcp-server/handlers-stubs.d.ts.map +1 -0
  8. package/dist/mcp-server/handlers-stubs.js +22 -0
  9. package/dist/mcp-server/handlers-stubs.js.map +1 -0
  10. package/dist/mcp-server/handlers.d.ts +96 -0
  11. package/dist/mcp-server/handlers.d.ts.map +1 -0
  12. package/dist/mcp-server/handlers.js +253 -0
  13. package/dist/mcp-server/handlers.js.map +1 -0
  14. package/dist/mcp-server/index.d.ts +3 -0
  15. package/dist/mcp-server/index.d.ts.map +1 -0
  16. package/dist/mcp-server/index.js +365 -0
  17. package/dist/mcp-server/index.js.map +1 -0
  18. package/dist/mcp-server/index.test.d.ts +7 -0
  19. package/dist/mcp-server/index.test.d.ts.map +1 -0
  20. package/dist/mcp-server/index.test.js +183 -0
  21. package/dist/mcp-server/index.test.js.map +1 -0
  22. package/dist/templates/cdk/app-stack.ts +893 -0
  23. package/dist/templates/cdk/app.ts +54 -0
  24. package/dist/templates/cdk/data-stack.ts +416 -0
  25. package/dist/templates/cdk.json +36 -0
  26. package/dist/templates/environments/ci.json +52 -0
  27. package/dist/templates/environments/local.json +82 -0
  28. package/dist/templates/environments/production.json +57 -0
  29. package/dist/templates/environments/staging.json +49 -0
  30. package/dist/templates/environments/test.json +61 -0
  31. package/dist/templates/inference-claude.json +14 -0
  32. package/dist/templates/inference-openai.json +16 -0
  33. package/dist/templates/package.json +23 -0
  34. package/dist/templates/semiont.json +31 -0
  35. package/dist/templates/tsconfig.json +27 -0
  36. package/package.json +91 -0
@@ -0,0 +1,253 @@
1
+ /**
2
+ * Tool execution handlers using @semiont/api-client
3
+ */
4
+ import { getExactText, getBodySource, resourceUri, annotationUri } from '@semiont/api-client';
5
+ export async function handleCreateResource(client, args) {
6
+ // Create File from content string for multipart/form-data upload
7
+ const format = args?.contentType || 'text/plain';
8
+ const content = args?.content || '';
9
+ const blob = new Blob([content], { type: format });
10
+ const file = new File([blob], args?.name + '.txt', { type: format });
11
+ const data = await client.createResource({
12
+ name: args?.name,
13
+ file: file,
14
+ format: format,
15
+ entityTypes: args?.entityTypes || [],
16
+ });
17
+ return {
18
+ content: [{
19
+ type: 'text',
20
+ text: `Resource created successfully:\nID: ${data.resource.id}\nName: ${data.resource.name}\nEntity Types: ${data.resource.entityTypes?.join(', ') || 'None'}`,
21
+ }],
22
+ };
23
+ }
24
+ export async function handleGetResource(client, id) {
25
+ const data = await client.getResource(resourceUri(id));
26
+ return {
27
+ content: [{
28
+ type: 'text',
29
+ text: JSON.stringify(data, null, 2),
30
+ }],
31
+ };
32
+ }
33
+ export async function handleListResources(client, args) {
34
+ const data = await client.listResources(args?.limit, args?.archived ?? false);
35
+ return {
36
+ content: [{
37
+ type: 'text',
38
+ text: `Found ${data.total} resources:\n${data.resources.map((d) => `- ${d.name} (${d.id}) - ${d.entityTypes?.join(', ') || 'No types'}`).join('\n')}`,
39
+ }],
40
+ };
41
+ }
42
+ export async function handleDetectAnnotations(client, args) {
43
+ const rUri = resourceUri(args?.resourceId);
44
+ const entityTypes = args?.entityTypes || [];
45
+ return new Promise((resolve) => {
46
+ const stream = client.sse.detectAnnotations(rUri, { entityTypes });
47
+ const progressMessages = [];
48
+ stream.onProgress((progress) => {
49
+ const msg = progress.status === 'scanning'
50
+ ? `Scanning for ${progress.currentEntityType}... (${progress.processedEntityTypes}/${progress.totalEntityTypes})`
51
+ : `Status: ${progress.status}`;
52
+ progressMessages.push(msg);
53
+ console.error(msg); // Send to stderr for MCP progress
54
+ });
55
+ stream.onComplete((result) => {
56
+ resolve({
57
+ content: [{
58
+ type: 'text',
59
+ text: `Entity detection complete!\nFound ${result.foundCount || 0} entities\n\nProgress:\n${progressMessages.join('\n')}`,
60
+ }],
61
+ });
62
+ });
63
+ stream.onError((error) => {
64
+ resolve({
65
+ content: [{
66
+ type: 'text',
67
+ text: `Entity detection failed: ${error.message}`,
68
+ }],
69
+ isError: true,
70
+ });
71
+ });
72
+ });
73
+ }
74
+ export async function handleCreateAnnotation(client, args) {
75
+ const selectionData = args?.selectionData || {};
76
+ const entityTypes = args?.entityTypes || [];
77
+ // Convert entityTypes to W3C TextualBody items
78
+ const body = entityTypes.map((value) => ({
79
+ type: 'TextualBody',
80
+ value,
81
+ purpose: 'tagging',
82
+ }));
83
+ const rUri = resourceUri(args?.resourceId);
84
+ const data = await client.createAnnotation(rUri, {
85
+ motivation: 'highlighting',
86
+ target: {
87
+ source: args?.resourceId,
88
+ selector: [
89
+ {
90
+ type: 'TextPositionSelector',
91
+ start: selectionData.offset || 0,
92
+ end: (selectionData.offset || 0) + (selectionData.length || 0),
93
+ },
94
+ {
95
+ type: 'TextQuoteSelector',
96
+ exact: selectionData.text || '',
97
+ },
98
+ ],
99
+ },
100
+ body,
101
+ });
102
+ // Extract text using SDK utility
103
+ const targetSelector = typeof data.annotation.target === 'string'
104
+ ? undefined
105
+ : data.annotation.target.selector;
106
+ const exactText = getExactText(targetSelector);
107
+ return {
108
+ content: [{
109
+ type: 'text',
110
+ text: `Annotation created:\nID: ${data.annotation.id}\nMotivation: ${data.annotation.motivation}\nText: ${exactText}`,
111
+ }],
112
+ };
113
+ }
114
+ export async function handleSaveAnnotation(_client, _args) {
115
+ // NOTE: The /save endpoint was removed from the API
116
+ // This functionality may have been merged into the main annotation creation
117
+ return {
118
+ content: [{
119
+ type: 'text',
120
+ text: `Error: The save annotation endpoint is no longer available. Annotations are automatically persisted when created.`,
121
+ }],
122
+ isError: true,
123
+ };
124
+ }
125
+ export async function handleResolveAnnotation(client, args) {
126
+ const data = await client.updateAnnotationBody(args?.selectionId, {
127
+ resourceId: args?.sourceResourceId,
128
+ operations: [{
129
+ op: 'add',
130
+ item: {
131
+ type: 'SpecificResource',
132
+ source: args?.resourceId,
133
+ purpose: 'linking',
134
+ },
135
+ }],
136
+ });
137
+ return {
138
+ content: [{
139
+ type: 'text',
140
+ text: `Annotation linked to resource:\nAnnotation ID: ${data.annotation.id}\nLinked to: ${args?.resourceId || 'null'}`,
141
+ }],
142
+ };
143
+ }
144
+ export async function handleGenerateResourceFromAnnotation(client, args) {
145
+ const rUri = resourceUri(args?.resourceId);
146
+ const aUri = annotationUri(args?.annotationId);
147
+ const request = {
148
+ title: args?.title,
149
+ prompt: args?.prompt,
150
+ language: args?.language,
151
+ };
152
+ return new Promise((resolve) => {
153
+ const stream = client.sse.generateResourceFromAnnotation(rUri, aUri, request);
154
+ const progressMessages = [];
155
+ stream.onProgress((progress) => {
156
+ const msg = `${progress.status}: ${progress.percentage}% - ${progress.message || ''}`;
157
+ progressMessages.push(msg);
158
+ console.error(msg); // Send to stderr for MCP progress
159
+ });
160
+ stream.onComplete((result) => {
161
+ resolve({
162
+ content: [{
163
+ type: 'text',
164
+ text: `Resource generation complete!\nResource ID: ${result.resourceId || 'unknown'}\nResource Name: ${result.resourceName || 'unknown'}\n\nProgress:\n${progressMessages.join('\n')}`,
165
+ }],
166
+ });
167
+ });
168
+ stream.onError((error) => {
169
+ resolve({
170
+ content: [{
171
+ type: 'text',
172
+ text: `Resource generation failed: ${error.message}`,
173
+ }],
174
+ isError: true,
175
+ });
176
+ });
177
+ });
178
+ }
179
+ export async function handleGetContextualSummary(_client, _args) {
180
+ // NOTE: /contextual-summary endpoint was removed or renamed
181
+ // Use /api/annotations/{id}/summary or /api/annotations/{id}/context instead
182
+ return {
183
+ content: [{
184
+ type: 'text',
185
+ text: `Error: The contextual-summary endpoint is no longer available. Use /summary or /context endpoints instead.`,
186
+ }],
187
+ isError: true,
188
+ };
189
+ }
190
+ export async function handleGetSchemaDescription(_client) {
191
+ // NOTE: /schema-description endpoint was removed
192
+ return {
193
+ content: [{
194
+ type: 'text',
195
+ text: `Error: The schema-description endpoint is no longer available.`,
196
+ }],
197
+ isError: true,
198
+ };
199
+ }
200
+ export async function handleGetLLMContext(_client, _args) {
201
+ // NOTE: Endpoint path may have changed - need to verify correct path
202
+ return {
203
+ content: [{
204
+ type: 'text',
205
+ text: `Error: The llm-context endpoint path needs to be updated.`,
206
+ }],
207
+ isError: true,
208
+ };
209
+ }
210
+ export async function handleGetResourceAnnotations(_client, _args) {
211
+ // NOTE: Use /api/resources/{id}/annotations instead
212
+ return {
213
+ content: [{
214
+ type: 'text',
215
+ text: `Error: This endpoint needs to be updated to use /api/resources/{id}/annotations.`,
216
+ }],
217
+ isError: true,
218
+ };
219
+ }
220
+ export async function handleGetResourceHighlights(client, args) {
221
+ const data = await client.getResourceAnnotations(resourceUri(args?.resourceId));
222
+ const highlights = data.annotations.filter(a => a.motivation === 'highlighting');
223
+ return {
224
+ content: [{
225
+ type: 'text',
226
+ text: `Found ${highlights.length} highlights in resource:\n${highlights.map(h => {
227
+ // Safely get exact text from TextQuoteSelector
228
+ const targetSelector = typeof h.target === 'string' ? undefined : h.target.selector;
229
+ const selectors = Array.isArray(targetSelector) ? targetSelector : [targetSelector];
230
+ const textQuoteSelector = selectors.find(s => s?.type === 'TextQuoteSelector');
231
+ const text = textQuoteSelector && 'exact' in textQuoteSelector ? textQuoteSelector.exact : h.id;
232
+ return `- ${text}${h.creator ? ` (creator: ${h.creator.name})` : ''}`;
233
+ }).join('\n')}`,
234
+ }],
235
+ };
236
+ }
237
+ export async function handleGetResourceReferences(client, args) {
238
+ const data = await client.getResourceAnnotations(resourceUri(args?.resourceId));
239
+ const references = data.annotations.filter(a => a.motivation === 'linking');
240
+ return {
241
+ content: [{
242
+ type: 'text',
243
+ text: `Found ${references.length} references in resource:\n${references.map(r => {
244
+ // Use SDK utilities to extract text and source
245
+ const targetSelector = typeof r.target === 'string' ? undefined : r.target.selector;
246
+ const text = getExactText(targetSelector) || r.id;
247
+ const source = getBodySource(r.body);
248
+ return `- ${text} → ${source || 'stub (no link)'}`;
249
+ }).join('\n')}`,
250
+ }],
251
+ };
252
+ }
253
+ //# sourceMappingURL=handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../src/handlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,365 @@
1
+ #!/usr/bin/env node
2
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
3
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
4
+ import { CallToolRequestSchema, ListToolsRequestSchema, ListResourcesRequestSchema, ListPromptsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
5
+ import { SemiontApiClient, baseUrl, accessToken } from '@semiont/api-client';
6
+ /**
7
+ * Semiont MCP Server
8
+ *
9
+ * This MCP server provides access to the Semiont API.
10
+ * It handles authentication and makes the API available to AI applications.
11
+ */
12
+ import * as handlers from './handlers.js';
13
+ // Configuration from environment variables
14
+ if (!process.env.SEMIONT_ENV) {
15
+ throw new Error('SEMIONT_ENV environment variable is required');
16
+ }
17
+ if (!process.env.SEMIONT_API_URL) {
18
+ throw new Error('SEMIONT_API_URL environment variable is required');
19
+ }
20
+ if (!process.env.SEMIONT_ACCESS_TOKEN) {
21
+ throw new Error('SEMIONT_ACCESS_TOKEN environment variable is required');
22
+ }
23
+ const SEMIONT_ENV = process.env.SEMIONT_ENV;
24
+ const SEMIONT_API_URL = process.env.SEMIONT_API_URL;
25
+ const SEMIONT_ACCESS_TOKEN = process.env.SEMIONT_ACCESS_TOKEN;
26
+ // Create the Semiont API client
27
+ const apiClient = new SemiontApiClient({
28
+ baseUrl: baseUrl(SEMIONT_API_URL),
29
+ accessToken: accessToken(SEMIONT_ACCESS_TOKEN),
30
+ });
31
+ // Create the MCP server
32
+ const server = new Server({
33
+ name: 'semiont-mcp',
34
+ version: '0.1.0',
35
+ }, {
36
+ capabilities: {
37
+ tools: {},
38
+ resources: {},
39
+ prompts: {},
40
+ },
41
+ });
42
+ // Define all available tools
43
+ server.setRequestHandler(ListToolsRequestSchema, async () => {
44
+ return {
45
+ tools: [
46
+ // Resource Management
47
+ {
48
+ name: 'semiont_create_resource',
49
+ description: 'Create a new resource in the knowledge graph',
50
+ inputSchema: {
51
+ type: 'object',
52
+ properties: {
53
+ name: { type: 'string', description: 'Resource name' },
54
+ content: { type: 'string', description: 'Resource content' },
55
+ entityTypes: {
56
+ type: 'array',
57
+ items: { type: 'string' },
58
+ description: 'Entity types (e.g., Person, Topic, Concept)'
59
+ },
60
+ contentType: { type: 'string', description: 'Content MIME type (default: text/plain)' },
61
+ metadata: { type: 'object', description: 'Additional metadata' },
62
+ },
63
+ required: ['name', 'content'],
64
+ },
65
+ },
66
+ {
67
+ name: 'semiont_get_resource',
68
+ description: 'Get a resource by ID with its selections',
69
+ inputSchema: {
70
+ type: 'object',
71
+ properties: {
72
+ id: { type: 'string', description: 'Resource ID' },
73
+ },
74
+ required: ['id'],
75
+ },
76
+ },
77
+ {
78
+ name: 'semiont_list_resources',
79
+ description: 'List and search resources',
80
+ inputSchema: {
81
+ type: 'object',
82
+ properties: {
83
+ entityTypes: { type: 'string', description: 'Comma-separated entity types to filter' },
84
+ search: { type: 'string', description: 'Search query' },
85
+ archived: { type: 'boolean', description: 'Filter by archived status (default: false - shows only non-archived resources)' },
86
+ limit: { type: 'number', description: 'Maximum results (default: 20)' },
87
+ offset: { type: 'number', description: 'Offset for pagination (default: 0)' },
88
+ },
89
+ },
90
+ },
91
+ {
92
+ name: 'semiont_detect_selections',
93
+ description: 'Detect selections (entities, references) in a resource',
94
+ inputSchema: {
95
+ type: 'object',
96
+ properties: {
97
+ resourceId: { type: 'string', description: 'Resource ID' },
98
+ types: {
99
+ type: 'array',
100
+ items: { type: 'string' },
101
+ description: 'Types to detect (default: entities, concepts)'
102
+ },
103
+ confidence: { type: 'number', description: 'Minimum confidence (0-1, default: 0.7)' },
104
+ },
105
+ required: ['resourceId'],
106
+ },
107
+ },
108
+ // Selection Management
109
+ {
110
+ name: 'semiont_create_selection',
111
+ description: 'Create a new selection in a resource',
112
+ inputSchema: {
113
+ type: 'object',
114
+ properties: {
115
+ resourceId: { type: 'string', description: 'Resource ID' },
116
+ selectionType: { type: 'string', description: 'Selection type (e.g., text_span)' },
117
+ selectionData: {
118
+ type: 'object',
119
+ description: 'Selection data (offset, length, text, etc.)',
120
+ properties: {
121
+ type: { type: 'string' },
122
+ offset: { type: 'number' },
123
+ length: { type: 'number' },
124
+ text: { type: 'string' },
125
+ },
126
+ },
127
+ entityTypes: {
128
+ type: 'array',
129
+ items: { type: 'string' },
130
+ description: 'Entity types for this selection'
131
+ },
132
+ provisional: { type: 'boolean', description: 'Is this provisional?' },
133
+ },
134
+ required: ['resourceId', 'selectionType', 'selectionData'],
135
+ },
136
+ },
137
+ {
138
+ name: 'semiont_save_selection',
139
+ description: 'Save a selection as a highlight',
140
+ inputSchema: {
141
+ type: 'object',
142
+ properties: {
143
+ selectionId: { type: 'string', description: 'Selection ID' },
144
+ metadata: { type: 'object', description: 'Additional metadata' },
145
+ },
146
+ required: ['selectionId'],
147
+ },
148
+ },
149
+ {
150
+ name: 'semiont_resolve_selection',
151
+ description: 'Link a selection to a resource (adds SpecificResource to annotation body)',
152
+ inputSchema: {
153
+ type: 'object',
154
+ properties: {
155
+ selectionId: { type: 'string', description: 'Selection ID' },
156
+ resourceId: { type: 'string', description: 'Target resource ID to link to' },
157
+ },
158
+ required: ['selectionId', 'resourceId'],
159
+ },
160
+ },
161
+ // Resource Generation from Selections
162
+ {
163
+ name: 'semiont_generate_resource_from_selection',
164
+ description: 'Generate a resource with AI-generated content from a selection',
165
+ inputSchema: {
166
+ type: 'object',
167
+ properties: {
168
+ selectionId: { type: 'string', description: 'Selection ID' },
169
+ name: { type: 'string', description: 'Resource name (optional)' },
170
+ entityTypes: {
171
+ type: 'array',
172
+ items: { type: 'string' },
173
+ description: 'Entity types for the new resource'
174
+ },
175
+ prompt: { type: 'string', description: 'AI generation prompt' },
176
+ },
177
+ required: ['selectionId'],
178
+ },
179
+ },
180
+ // Context and Analysis
181
+ {
182
+ name: 'semiont_get_contextual_summary',
183
+ description: 'Get a contextual summary for a selection',
184
+ inputSchema: {
185
+ type: 'object',
186
+ properties: {
187
+ selectionId: { type: 'string', description: 'Selection ID' },
188
+ includeRelated: { type: 'boolean', description: 'Include related resources' },
189
+ maxRelated: { type: 'number', description: 'Max related resources' },
190
+ },
191
+ required: ['selectionId'],
192
+ },
193
+ },
194
+ {
195
+ name: 'semiont_get_schema_description',
196
+ description: 'Get a natural language description of the graph schema',
197
+ inputSchema: {
198
+ type: 'object',
199
+ properties: {},
200
+ },
201
+ },
202
+ {
203
+ name: 'semiont_get_llm_context',
204
+ description: 'Get LLM-suitable context for a resource and optional selection',
205
+ inputSchema: {
206
+ type: 'object',
207
+ properties: {
208
+ resourceId: { type: 'string', description: 'Resource ID' },
209
+ selectionId: { type: 'string', description: 'Optional selection ID' },
210
+ includeReferences: { type: 'boolean', description: 'Include references (default: true)' },
211
+ includeSelections: { type: 'boolean', description: 'Include selections (default: true)' },
212
+ maxReferencedResources: { type: 'number', description: 'Max referenced docs (default: 5)' },
213
+ contextWindow: { type: 'number', description: 'Context window size (default: 1000)' },
214
+ },
215
+ required: ['resourceId'],
216
+ },
217
+ },
218
+ // Relationship Queries
219
+ {
220
+ name: 'semiont_get_resource_selections',
221
+ description: 'Get all selections in a resource',
222
+ inputSchema: {
223
+ type: 'object',
224
+ properties: {
225
+ resourceId: { type: 'string', description: 'Resource ID' },
226
+ },
227
+ required: ['resourceId'],
228
+ },
229
+ },
230
+ {
231
+ name: 'semiont_get_resource_highlights',
232
+ description: 'Get saved highlights in a resource',
233
+ inputSchema: {
234
+ type: 'object',
235
+ properties: {
236
+ resourceId: { type: 'string', description: 'Resource ID' },
237
+ },
238
+ required: ['resourceId'],
239
+ },
240
+ },
241
+ {
242
+ name: 'semiont_get_resource_references',
243
+ description: 'Get linked references in a resource',
244
+ inputSchema: {
245
+ type: 'object',
246
+ properties: {
247
+ resourceId: { type: 'string', description: 'Resource ID' },
248
+ },
249
+ required: ['resourceId'],
250
+ },
251
+ },
252
+ ],
253
+ };
254
+ });
255
+ // Handle resources list (empty - we don't provide resources)
256
+ server.setRequestHandler(ListResourcesRequestSchema, async () => {
257
+ return {
258
+ resources: [],
259
+ };
260
+ });
261
+ // Handle prompts list (empty - we don't provide prompts)
262
+ server.setRequestHandler(ListPromptsRequestSchema, async () => {
263
+ return {
264
+ prompts: [],
265
+ };
266
+ });
267
+ // Handle tool execution
268
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
269
+ const { name, arguments: args } = request.params;
270
+ try {
271
+ switch (name) {
272
+ case 'semiont_create_resource':
273
+ return await handlers.handleCreateResource(apiClient, args);
274
+ case 'semiont_get_resource':
275
+ return await handlers.handleGetResource(apiClient, args?.id);
276
+ case 'semiont_list_resources':
277
+ return await handlers.handleListResources(apiClient, args);
278
+ case 'semiont_detect_selections':
279
+ return await handlers.handleDetectAnnotations(apiClient, args);
280
+ case 'semiont_create_selection':
281
+ return await handlers.handleCreateAnnotation(apiClient, args);
282
+ case 'semiont_save_selection':
283
+ return await handlers.handleSaveAnnotation(apiClient, args);
284
+ case 'semiont_resolve_selection':
285
+ return await handlers.handleResolveAnnotation(apiClient, args);
286
+ case 'semiont_generate_resource_from_selection':
287
+ return await handlers.handleGenerateResourceFromAnnotation(apiClient, args);
288
+ case 'semiont_get_contextual_summary':
289
+ return await handlers.handleGetContextualSummary(apiClient, args);
290
+ case 'semiont_get_schema_description':
291
+ return await handlers.handleGetSchemaDescription(apiClient);
292
+ case 'semiont_get_llm_context':
293
+ return await handlers.handleGetLLMContext(apiClient, args);
294
+ case 'semiont_get_resource_selections':
295
+ return await handlers.handleGetResourceAnnotations(apiClient, args);
296
+ case 'semiont_get_resource_highlights':
297
+ return await handlers.handleGetResourceHighlights(apiClient, args || {});
298
+ case 'semiont_get_resource_references':
299
+ return await handlers.handleGetResourceReferences(apiClient, args || {});
300
+ default:
301
+ throw new Error(`Unknown tool: ${name}`);
302
+ }
303
+ }
304
+ catch (error) {
305
+ return {
306
+ content: [{
307
+ type: 'text',
308
+ text: `Error calling Semiont API: ${error instanceof Error ? error.message : 'Unknown error'}`,
309
+ }],
310
+ isError: true,
311
+ };
312
+ }
313
+ });
314
+ // Start the server
315
+ async function main() {
316
+ console.error('[MCP Server] Starting up...');
317
+ console.error('[MCP Server] Environment:', {
318
+ SEMIONT_ENV,
319
+ SEMIONT_API_URL,
320
+ NODE_ENV: process.env.NODE_ENV,
321
+ cwd: process.cwd()
322
+ });
323
+ const transport = new StdioServerTransport();
324
+ console.error('[MCP Server] Connecting to transport...');
325
+ await server.connect(transport);
326
+ console.error('[MCP Server] Connected successfully');
327
+ // Keep the server alive until it receives a termination signal
328
+ process.on('SIGINT', async () => {
329
+ console.error('[MCP Server] Received SIGINT, shutting down...');
330
+ await server.close();
331
+ process.exit(0);
332
+ });
333
+ process.on('SIGTERM', async () => {
334
+ console.error('[MCP Server] Received SIGTERM, shutting down...');
335
+ await server.close();
336
+ process.exit(0);
337
+ });
338
+ // Add handler for unexpected exits
339
+ process.on('exit', (code) => {
340
+ console.error(`[MCP Server] Process exiting with code ${code}`);
341
+ });
342
+ process.on('uncaughtException', (error) => {
343
+ console.error('[MCP Server] Uncaught exception:', error);
344
+ process.exit(1);
345
+ });
346
+ process.on('unhandledRejection', (reason, promise) => {
347
+ console.error('[MCP Server] Unhandled rejection at:', promise, 'reason:', reason);
348
+ process.exit(1);
349
+ });
350
+ console.error('[MCP Server] Setting up keep-alive...');
351
+ // Keep the process alive
352
+ // The server will handle incoming messages via the transport
353
+ await new Promise(() => {
354
+ console.error('[MCP Server] Keep-alive promise created, server should stay running...');
355
+ // Log periodic heartbeat to show we're still alive
356
+ setInterval(() => {
357
+ console.error(`[MCP Server] Still alive at ${new Date().toISOString()}`);
358
+ }, 30000); // Every 30 seconds
359
+ });
360
+ }
361
+ main().catch((error) => {
362
+ console.error('[MCP Server] Fatal error in main:', error);
363
+ process.exit(1);
364
+ });
365
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}