@siemens/ix-mcp-angular 3.2.0-v.1.10.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/AGENTS.md +86 -0
- package/LICENSE.md +20 -0
- package/README.md +391 -0
- package/config.json +51 -0
- package/database/vectors.db/documents.lance/_transactions/109-667922df-dcb8-4400-846a-fcca46a3cfd8.txn +0 -0
- package/database/vectors.db/documents.lance/_versions/111.manifest +0 -0
- package/database/vectors.db/documents.lance/data/1001001000111000111110002d01c8449a9aa9f7ce9a04125c.lance +0 -0
- package/dist/src/cli.d.ts +3 -0
- package/dist/src/cli.d.ts.map +1 -0
- package/dist/src/cli.js +310 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/config.d.ts +35 -0
- package/dist/src/config.d.ts.map +1 -0
- package/dist/src/config.js +33 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/db-handler.d.ts +50 -0
- package/dist/src/db-handler.d.ts.map +1 -0
- package/dist/src/db-handler.js +256 -0
- package/dist/src/db-handler.js.map +1 -0
- package/dist/src/embeddings.d.ts +77 -0
- package/dist/src/embeddings.d.ts.map +1 -0
- package/dist/src/embeddings.js +280 -0
- package/dist/src/embeddings.js.map +1 -0
- package/dist/src/index.d.ts +30 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +427 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/keys.d.ts +4 -0
- package/dist/src/keys.d.ts.map +1 -0
- package/dist/src/keys.js +24 -0
- package/dist/src/keys.js.map +1 -0
- package/dist/src/logger.d.ts +24 -0
- package/dist/src/logger.d.ts.map +1 -0
- package/dist/src/logger.js +185 -0
- package/dist/src/logger.js.map +1 -0
- package/dist/src/prompt.d.ts +19 -0
- package/dist/src/prompt.d.ts.map +1 -0
- package/dist/src/prompt.js +94 -0
- package/dist/src/prompt.js.map +1 -0
- package/dist/src/setup.d.ts +29 -0
- package/dist/src/setup.d.ts.map +1 -0
- package/dist/src/setup.js +851 -0
- package/dist/src/setup.js.map +1 -0
- package/dist/src/token.d.ts +22 -0
- package/dist/src/token.d.ts.map +1 -0
- package/dist/src/token.js +76 -0
- package/dist/src/token.js.map +1 -0
- package/package.json +69 -0
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Siemens 2016 - 2025
|
|
3
|
+
* SPDX-License-Identifier: MIT
|
|
4
|
+
*/
|
|
5
|
+
import * as fs from 'fs';
|
|
6
|
+
import * as path from 'path';
|
|
7
|
+
import { homedir, platform } from 'os';
|
|
8
|
+
import { loadConfig } from './config.js';
|
|
9
|
+
const config = loadConfig();
|
|
10
|
+
export class ObservabilityLogger {
|
|
11
|
+
logDir;
|
|
12
|
+
sessionLogPath;
|
|
13
|
+
enabled;
|
|
14
|
+
debug;
|
|
15
|
+
constructor(hasDebugFlag, override) {
|
|
16
|
+
this.debug = hasDebugFlag || false;
|
|
17
|
+
this.enabled = override === true || ((config.observabilityLogging || this.debug) && override !== false) || false;
|
|
18
|
+
if (!this.enabled) {
|
|
19
|
+
this.logDir = '';
|
|
20
|
+
this.sessionLogPath = '';
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const binName = config.binName;
|
|
24
|
+
this.logDir = path.join(homedir(), `.${binName}`);
|
|
25
|
+
try {
|
|
26
|
+
if (!fs.existsSync(this.logDir)) {
|
|
27
|
+
fs.mkdirSync(this.logDir, { recursive: true });
|
|
28
|
+
}
|
|
29
|
+
const sessionFileName = this.generateSessionFileName();
|
|
30
|
+
this.sessionLogPath = path.join(this.logDir, sessionFileName);
|
|
31
|
+
this.initializeLogFile();
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
if (this.debug) {
|
|
35
|
+
console.error('Failed to initialize observabilityLogging logger:', error);
|
|
36
|
+
}
|
|
37
|
+
this.enabled = false;
|
|
38
|
+
this.logDir = '';
|
|
39
|
+
this.sessionLogPath = '';
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
generateSessionFileName() {
|
|
43
|
+
const now = new Date();
|
|
44
|
+
const year = now.getFullYear();
|
|
45
|
+
const month = String(now.getMonth() + 1).padStart(2, '0');
|
|
46
|
+
const day = String(now.getDate()).padStart(2, '0');
|
|
47
|
+
const hours = String(now.getHours()).padStart(2, '0');
|
|
48
|
+
const minutes = String(now.getMinutes()).padStart(2, '0');
|
|
49
|
+
const seconds = String(now.getSeconds()).padStart(2, '0');
|
|
50
|
+
return `session_${year}-${month}-${day}_${hours}-${minutes}-${seconds}.log`;
|
|
51
|
+
}
|
|
52
|
+
initializeLogFile() {
|
|
53
|
+
if (!this.enabled || !this.sessionLogPath)
|
|
54
|
+
return;
|
|
55
|
+
try {
|
|
56
|
+
const header = `MCP Server Session Log
|
|
57
|
+
========================================
|
|
58
|
+
Started: ${new Date().toISOString()}
|
|
59
|
+
Config: ${config.displayName}
|
|
60
|
+
========================================
|
|
61
|
+
|
|
62
|
+
`;
|
|
63
|
+
fs.writeFileSync(this.sessionLogPath, header, 'utf8');
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
if (this.debug) {
|
|
67
|
+
console.error('Failed to initialize log file:', error);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
async logRetrieval(toolName, query, params, response, results) {
|
|
72
|
+
if (!this.enabled || !this.sessionLogPath)
|
|
73
|
+
return;
|
|
74
|
+
setImmediate(() => {
|
|
75
|
+
try {
|
|
76
|
+
const timestamp = new Date().toISOString();
|
|
77
|
+
const date = new Date();
|
|
78
|
+
const timeStr = `${String(date.getHours()).padStart(2, '0')}:${String(date.getMinutes()).padStart(2, '0')}:${String(date.getSeconds()).padStart(2, '0')}`;
|
|
79
|
+
let logEntry = `[${timeStr}] ${toolName}\n`;
|
|
80
|
+
logEntry += `Query: ${query}\n`;
|
|
81
|
+
if (params && Object.keys(params).length > 0) {
|
|
82
|
+
logEntry += `Params: ${JSON.stringify(params)}\n`;
|
|
83
|
+
}
|
|
84
|
+
logEntry += `Result: ${response.success ? '✓' : '✗'} ${response.resultCount} result(s)`;
|
|
85
|
+
if (response.error) {
|
|
86
|
+
logEntry += ` - Error: ${response.error}`;
|
|
87
|
+
}
|
|
88
|
+
logEntry += '\n';
|
|
89
|
+
logEntry += `Timestamp: ${timestamp}\n`;
|
|
90
|
+
if (results) {
|
|
91
|
+
logEntry += '\nResults:\n';
|
|
92
|
+
logEntry += results + '\n';
|
|
93
|
+
}
|
|
94
|
+
logEntry += '----------------------------------------\n\n';
|
|
95
|
+
fs.appendFileSync(this.sessionLogPath, logEntry, 'utf8');
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
if (this.debug) {
|
|
99
|
+
console.error('Failed to log retrieval:', error);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
getLogDir() {
|
|
105
|
+
return this.logDir;
|
|
106
|
+
}
|
|
107
|
+
getSessionLogPath() {
|
|
108
|
+
return this.sessionLogPath;
|
|
109
|
+
}
|
|
110
|
+
isEnabled() {
|
|
111
|
+
return this.enabled;
|
|
112
|
+
}
|
|
113
|
+
static getLogDir() {
|
|
114
|
+
const binName = config.binName;
|
|
115
|
+
if (platform() === 'win32') {
|
|
116
|
+
const localAppData = process.env.LOCALAPPDATA;
|
|
117
|
+
if (localAppData) {
|
|
118
|
+
return path.join(localAppData, binName);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return path.join(homedir(), `.${binName}`);
|
|
122
|
+
}
|
|
123
|
+
static listSessions() {
|
|
124
|
+
const logDir = ObservabilityLogger.getLogDir();
|
|
125
|
+
try {
|
|
126
|
+
if (!fs.existsSync(logDir)) {
|
|
127
|
+
return [];
|
|
128
|
+
}
|
|
129
|
+
const files = fs.readdirSync(logDir);
|
|
130
|
+
return files
|
|
131
|
+
.filter(file => file.startsWith('session_') && file.endsWith('.log'))
|
|
132
|
+
.sort()
|
|
133
|
+
.reverse();
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
return [];
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
static getSessionPath(fileName) {
|
|
140
|
+
return path.join(ObservabilityLogger.getLogDir(), fileName);
|
|
141
|
+
}
|
|
142
|
+
static readSessionLog(fileName) {
|
|
143
|
+
const filePath = ObservabilityLogger.getSessionPath(fileName);
|
|
144
|
+
try {
|
|
145
|
+
return fs.readFileSync(filePath, 'utf8');
|
|
146
|
+
}
|
|
147
|
+
catch (error) {
|
|
148
|
+
throw new Error(`Failed to read log file: ${error}`);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
static parseSessionFileName(fileName) {
|
|
152
|
+
const match = fileName.match(/session_(\d{4})-(\d{2})-(\d{2})_(\d{2})-(\d{2})-(\d{2})\.log/);
|
|
153
|
+
if (!match)
|
|
154
|
+
return null;
|
|
155
|
+
const [, year, month, day, hours, minutes, seconds] = match;
|
|
156
|
+
return new Date(parseInt(year), parseInt(month) - 1, parseInt(day), parseInt(hours), parseInt(minutes), parseInt(seconds));
|
|
157
|
+
}
|
|
158
|
+
static formatSessionDate(fileName) {
|
|
159
|
+
const date = ObservabilityLogger.parseSessionFileName(fileName);
|
|
160
|
+
if (!date)
|
|
161
|
+
return fileName;
|
|
162
|
+
const now = new Date();
|
|
163
|
+
const diffMs = now.getTime() - date.getTime();
|
|
164
|
+
const diffDays = Math.floor(diffMs / (1000 * 60 * 60 * 24));
|
|
165
|
+
const dateStr = date.toLocaleDateString('en-UK', {
|
|
166
|
+
year: 'numeric',
|
|
167
|
+
month: 'short',
|
|
168
|
+
day: 'numeric'
|
|
169
|
+
});
|
|
170
|
+
const timeStr = `${String(date.getHours()).padStart(2, '0')}:${String(date.getMinutes()).padStart(2, '0')}:${String(date.getSeconds()).padStart(2, '0')}`;
|
|
171
|
+
if (diffDays === 0) {
|
|
172
|
+
return `Today at ${timeStr}`;
|
|
173
|
+
}
|
|
174
|
+
else if (diffDays === 1) {
|
|
175
|
+
return `Yesterday at ${timeStr}`;
|
|
176
|
+
}
|
|
177
|
+
else if (diffDays < 7) {
|
|
178
|
+
return `${diffDays} days ago (${dateStr} ${timeStr})`;
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
return `${dateStr} ${timeStr}`;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/mcp/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare const prompt: (promptText: string, type?: string, initial?: string) => Promise<any>;
|
|
2
|
+
export declare const confirmPrompt: (message: string, initial?: boolean) => Promise<any>;
|
|
3
|
+
export declare const selectPrompt: (message: string, choices: {
|
|
4
|
+
title: string;
|
|
5
|
+
value: string;
|
|
6
|
+
description?: string;
|
|
7
|
+
}[], initial?: number) => Promise<any>;
|
|
8
|
+
export declare const multiSelectPrompt: (message: string, choices: {
|
|
9
|
+
title: string;
|
|
10
|
+
value: string;
|
|
11
|
+
description?: string;
|
|
12
|
+
selected?: boolean;
|
|
13
|
+
}[]) => Promise<any>;
|
|
14
|
+
export declare const passwordPrompt: (message: string, required?: boolean) => Promise<any>;
|
|
15
|
+
export declare const showSuccess: (message: string) => void;
|
|
16
|
+
export declare const showError: (message: string) => void;
|
|
17
|
+
export declare const showWarning: (message: string) => void;
|
|
18
|
+
export declare const showInfo: (message: string) => void;
|
|
19
|
+
//# sourceMappingURL=prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../../src/mcp/prompt.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,MAAM,GAAU,YAAY,MAAM,EAAE,OAAM,MAAe,EAAE,UAAU,MAAM,iBAyBvF,CAAC;AAEF,eAAO,MAAM,aAAa,GAAU,SAAS,MAAM,EAAE,UAAS,OAAc,iBAa3E,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,SAAS,MAAM,EACf,SAAS;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,EACjE,UAAS,MAAU,iBAgBpB,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,SAAS,MAAM,EACf,SAAS;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,EAAE,iBAgBtF,CAAC;AAEF,eAAO,MAAM,cAAc,GAAU,SAAS,MAAM,EAAE,kBAAe,iBAapE,CAAC;AAGF,eAAO,MAAM,WAAW,GAAI,SAAS,MAAM,SAE1C,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,SAAS,MAAM,SAExC,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,SAAS,MAAM,SAE1C,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,SAAS,MAAM,SAEvC,CAAC"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Siemens 2016 - 2025
|
|
3
|
+
* SPDX-License-Identifier: MIT
|
|
4
|
+
*/
|
|
5
|
+
import prompts from 'prompts';
|
|
6
|
+
import chalk from 'chalk';
|
|
7
|
+
// Otherwise E2E testing is a pain
|
|
8
|
+
const testEmptyContinueOverride = () => {
|
|
9
|
+
return process.env.SDL_MCP_SETUP_SKIP === 'true';
|
|
10
|
+
};
|
|
11
|
+
export const prompt = async (promptText, type = 'text', initial) => {
|
|
12
|
+
if (testEmptyContinueOverride()) {
|
|
13
|
+
console.log(chalk.gray(`${promptText} (skipped, using default or empty)`));
|
|
14
|
+
return initial ?? '';
|
|
15
|
+
}
|
|
16
|
+
const response = await prompts({
|
|
17
|
+
type: type,
|
|
18
|
+
name: 'value',
|
|
19
|
+
message: promptText,
|
|
20
|
+
initial: initial,
|
|
21
|
+
validate: value => (value ? true : 'This field is required.')
|
|
22
|
+
});
|
|
23
|
+
return response.value;
|
|
24
|
+
};
|
|
25
|
+
export const confirmPrompt = async (message, initial = true) => {
|
|
26
|
+
if (testEmptyContinueOverride()) {
|
|
27
|
+
console.log(chalk.gray(`${message} (skipped, using default: ${initial ? 'yes' : 'no'})`));
|
|
28
|
+
return initial;
|
|
29
|
+
}
|
|
30
|
+
const response = await prompts({
|
|
31
|
+
type: 'confirm',
|
|
32
|
+
name: 'value',
|
|
33
|
+
message: message,
|
|
34
|
+
initial: initial
|
|
35
|
+
});
|
|
36
|
+
return response.value;
|
|
37
|
+
};
|
|
38
|
+
export const selectPrompt = async (message, choices, initial = 0) => {
|
|
39
|
+
if (testEmptyContinueOverride()) {
|
|
40
|
+
const choice = choices[initial] || choices[0];
|
|
41
|
+
console.log(chalk.gray(`${message} (skipped, using default: ${choice.title})`));
|
|
42
|
+
return choice.value;
|
|
43
|
+
}
|
|
44
|
+
const response = await prompts({
|
|
45
|
+
type: 'select',
|
|
46
|
+
name: 'value',
|
|
47
|
+
message: message,
|
|
48
|
+
choices: choices,
|
|
49
|
+
initial: initial
|
|
50
|
+
});
|
|
51
|
+
return response.value;
|
|
52
|
+
};
|
|
53
|
+
export const multiSelectPrompt = async (message, choices) => {
|
|
54
|
+
if (testEmptyContinueOverride()) {
|
|
55
|
+
const selected = choices.filter(c => c.selected).map(c => c.value);
|
|
56
|
+
console.log(chalk.gray(`${message} (skipped, using default: ${selected.join(', ') || 'none'})`));
|
|
57
|
+
return selected;
|
|
58
|
+
}
|
|
59
|
+
const response = await prompts({
|
|
60
|
+
type: 'multiselect',
|
|
61
|
+
name: 'value',
|
|
62
|
+
message: message,
|
|
63
|
+
choices: choices,
|
|
64
|
+
hint: '- Space to select. Return to submit'
|
|
65
|
+
});
|
|
66
|
+
return response.value;
|
|
67
|
+
};
|
|
68
|
+
export const passwordPrompt = async (message, required = true) => {
|
|
69
|
+
if (testEmptyContinueOverride()) {
|
|
70
|
+
console.log(chalk.gray(`${message} (skipped, using empty)`));
|
|
71
|
+
return '';
|
|
72
|
+
}
|
|
73
|
+
const response = await prompts({
|
|
74
|
+
type: 'password',
|
|
75
|
+
name: 'value',
|
|
76
|
+
message: message,
|
|
77
|
+
validate: value => (value || !required ? true : 'Password is required.')
|
|
78
|
+
});
|
|
79
|
+
return response.value;
|
|
80
|
+
};
|
|
81
|
+
// Utility functions for better UX
|
|
82
|
+
export const showSuccess = (message) => {
|
|
83
|
+
console.log(chalk.green('✓'), message);
|
|
84
|
+
};
|
|
85
|
+
export const showError = (message) => {
|
|
86
|
+
console.log(chalk.red('✗'), message);
|
|
87
|
+
};
|
|
88
|
+
export const showWarning = (message) => {
|
|
89
|
+
console.log(chalk.yellow('⚠'), message);
|
|
90
|
+
};
|
|
91
|
+
export const showInfo = (message) => {
|
|
92
|
+
console.log(chalk.blue('ℹ'), message);
|
|
93
|
+
};
|
|
94
|
+
//# sourceMappingURL=prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../../src/mcp/prompt.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export declare class SDLMCPSetup {
|
|
2
|
+
private config;
|
|
3
|
+
private repoRoot;
|
|
4
|
+
private setupOptions;
|
|
5
|
+
private getRepoConfigOptions;
|
|
6
|
+
private findRepoRoot;
|
|
7
|
+
private isInstalledInProject;
|
|
8
|
+
private getConfigPaths;
|
|
9
|
+
private updateJsonWithComments;
|
|
10
|
+
private setNestedValue;
|
|
11
|
+
setupMCPConfigs(): Promise<void>;
|
|
12
|
+
setupToken(): Promise<void>;
|
|
13
|
+
private setupLocalVSCodeConfig;
|
|
14
|
+
private setupClineGlobalConfig;
|
|
15
|
+
private setupVSCodeUserConfig;
|
|
16
|
+
private setupZedConfig;
|
|
17
|
+
private setupOpenCodeConfig;
|
|
18
|
+
private setupOpenCodeGlobalConfig;
|
|
19
|
+
private findNpxPath;
|
|
20
|
+
private isWSL;
|
|
21
|
+
private ensureDirectoryExists;
|
|
22
|
+
checkSetup(): Promise<void>;
|
|
23
|
+
private printUsageInstructions;
|
|
24
|
+
setupAgentInstructions(): Promise<boolean>;
|
|
25
|
+
private setupInstructionFile;
|
|
26
|
+
private createSymlink;
|
|
27
|
+
private printAgentInstructions;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/mcp/setup.ts"],"names":[],"mappings":"AAkGA,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,QAAQ,CAAuB;IAEvC,OAAO,CAAC,YAAY,CAoClB;IAEF,OAAO,CAAC,oBAAoB;IAgC5B,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,oBAAoB;IAwB5B,OAAO,CAAC,cAAc;IA2CtB,OAAO,CAAC,sBAAsB;IAiF9B,OAAO,CAAC,cAAc;IAYhB,eAAe;IAqGf,UAAU;YAkDF,sBAAsB;YAyCtB,sBAAsB;YAoCtB,qBAAqB;YAqCrB,cAAc;YA+Cd,mBAAmB;YA2CnB,yBAAyB;YAiDzB,WAAW;YAmBX,KAAK;YASL,qBAAqB;IAM7B,UAAU;IA2EhB,OAAO,CAAC,sBAAsB;IA0DxB,sBAAsB,IAAI,OAAO,CAAC,OAAO,CAAC;YAgFlC,oBAAoB;YAqDpB,aAAa;IAQ3B,OAAO,CAAC,sBAAsB;CA0B/B"}
|