agentinit 1.6.0 → 1.8.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 (173) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/README.md +220 -114
  3. package/dist/agents/Agent.d.ts +44 -0
  4. package/dist/agents/Agent.d.ts.map +1 -1
  5. package/dist/agents/Agent.js +111 -22
  6. package/dist/agents/Agent.js.map +1 -1
  7. package/dist/agents/AiderAgent.d.ts +9 -0
  8. package/dist/agents/AiderAgent.d.ts.map +1 -0
  9. package/dist/agents/AiderAgent.js +135 -0
  10. package/dist/agents/AiderAgent.js.map +1 -0
  11. package/dist/agents/ClaudeAgent.d.ts +4 -0
  12. package/dist/agents/ClaudeAgent.d.ts.map +1 -1
  13. package/dist/agents/ClaudeAgent.js +33 -18
  14. package/dist/agents/ClaudeAgent.js.map +1 -1
  15. package/dist/agents/ClaudeDesktopAgent.d.ts +5 -0
  16. package/dist/agents/ClaudeDesktopAgent.d.ts.map +1 -1
  17. package/dist/agents/ClaudeDesktopAgent.js +31 -1
  18. package/dist/agents/ClaudeDesktopAgent.js.map +1 -1
  19. package/dist/agents/ClineAgent.d.ts +8 -0
  20. package/dist/agents/ClineAgent.d.ts.map +1 -0
  21. package/dist/agents/ClineAgent.js +42 -0
  22. package/dist/agents/ClineAgent.js.map +1 -0
  23. package/dist/agents/CodexCliAgent.d.ts +4 -0
  24. package/dist/agents/CodexCliAgent.d.ts.map +1 -1
  25. package/dist/agents/CodexCliAgent.js +38 -8
  26. package/dist/agents/CodexCliAgent.js.map +1 -1
  27. package/dist/agents/CopilotAgent.d.ts +9 -0
  28. package/dist/agents/CopilotAgent.d.ts.map +1 -0
  29. package/dist/agents/CopilotAgent.js +131 -0
  30. package/dist/agents/CopilotAgent.js.map +1 -0
  31. package/dist/agents/CursorAgent.d.ts +4 -4
  32. package/dist/agents/CursorAgent.d.ts.map +1 -1
  33. package/dist/agents/CursorAgent.js +32 -43
  34. package/dist/agents/CursorAgent.js.map +1 -1
  35. package/dist/agents/DroidAgent.d.ts +5 -0
  36. package/dist/agents/DroidAgent.d.ts.map +1 -1
  37. package/dist/agents/DroidAgent.js +37 -18
  38. package/dist/agents/DroidAgent.js.map +1 -1
  39. package/dist/agents/GeminiCliAgent.d.ts +4 -0
  40. package/dist/agents/GeminiCliAgent.d.ts.map +1 -1
  41. package/dist/agents/GeminiCliAgent.js +37 -8
  42. package/dist/agents/GeminiCliAgent.js.map +1 -1
  43. package/dist/agents/MarkdownRulesAgent.d.ts +13 -0
  44. package/dist/agents/MarkdownRulesAgent.d.ts.map +1 -0
  45. package/dist/agents/MarkdownRulesAgent.js +53 -0
  46. package/dist/agents/MarkdownRulesAgent.js.map +1 -0
  47. package/dist/agents/RooCodeAgent.d.ts +9 -0
  48. package/dist/agents/RooCodeAgent.d.ts.map +1 -0
  49. package/dist/agents/RooCodeAgent.js +131 -0
  50. package/dist/agents/RooCodeAgent.js.map +1 -0
  51. package/dist/agents/WindsurfAgent.d.ts +9 -0
  52. package/dist/agents/WindsurfAgent.d.ts.map +1 -0
  53. package/dist/agents/WindsurfAgent.js +127 -0
  54. package/dist/agents/WindsurfAgent.js.map +1 -0
  55. package/dist/agents/ZedAgent.d.ts +9 -0
  56. package/dist/agents/ZedAgent.d.ts.map +1 -0
  57. package/dist/agents/ZedAgent.js +127 -0
  58. package/dist/agents/ZedAgent.js.map +1 -0
  59. package/dist/cli.js +29992 -11107
  60. package/dist/cli.js.map +1 -1
  61. package/dist/commands/apply.d.ts +10 -0
  62. package/dist/commands/apply.d.ts.map +1 -1
  63. package/dist/commands/apply.js +136 -5
  64. package/dist/commands/apply.js.map +1 -1
  65. package/dist/commands/detect.d.ts.map +1 -1
  66. package/dist/commands/detect.js +25 -0
  67. package/dist/commands/detect.js.map +1 -1
  68. package/dist/commands/init.js +1 -1
  69. package/dist/commands/init.js.map +1 -1
  70. package/dist/commands/mcp.d.ts +2 -7
  71. package/dist/commands/mcp.d.ts.map +1 -1
  72. package/dist/commands/mcp.js +541 -110
  73. package/dist/commands/mcp.js.map +1 -1
  74. package/dist/commands/plugins.d.ts +3 -0
  75. package/dist/commands/plugins.d.ts.map +1 -0
  76. package/dist/commands/plugins.js +309 -0
  77. package/dist/commands/plugins.js.map +1 -0
  78. package/dist/commands/revert.d.ts +7 -0
  79. package/dist/commands/revert.d.ts.map +1 -0
  80. package/dist/commands/revert.js +48 -0
  81. package/dist/commands/revert.js.map +1 -0
  82. package/dist/commands/rules.d.ts +3 -0
  83. package/dist/commands/rules.d.ts.map +1 -0
  84. package/dist/commands/rules.js +354 -0
  85. package/dist/commands/rules.js.map +1 -0
  86. package/dist/commands/skills.d.ts +3 -0
  87. package/dist/commands/skills.d.ts.map +1 -0
  88. package/dist/commands/skills.js +179 -0
  89. package/dist/commands/skills.js.map +1 -0
  90. package/dist/commands/sync.d.ts +1 -0
  91. package/dist/commands/sync.d.ts.map +1 -1
  92. package/dist/commands/sync.js +18 -1
  93. package/dist/commands/sync.js.map +1 -1
  94. package/dist/commands/verifyMcp.d.ts.map +1 -1
  95. package/dist/commands/verifyMcp.js +27 -5
  96. package/dist/commands/verifyMcp.js.map +1 -1
  97. package/dist/constants/index.d.ts +1 -1
  98. package/dist/constants/index.d.ts.map +1 -1
  99. package/dist/constants/index.js +1 -1
  100. package/dist/constants/index.js.map +1 -1
  101. package/dist/constants/mcp.d.ts +1 -0
  102. package/dist/constants/mcp.d.ts.map +1 -1
  103. package/dist/constants/mcp.js +2 -0
  104. package/dist/constants/mcp.js.map +1 -1
  105. package/dist/core/agentDetector.d.ts.map +1 -1
  106. package/dist/core/agentDetector.js +8 -2
  107. package/dist/core/agentDetector.js.map +1 -1
  108. package/dist/core/agentManager.d.ts.map +1 -1
  109. package/dist/core/agentManager.js +12 -0
  110. package/dist/core/agentManager.js.map +1 -1
  111. package/dist/core/gitignoreManager.d.ts +8 -0
  112. package/dist/core/gitignoreManager.d.ts.map +1 -0
  113. package/dist/core/gitignoreManager.js +114 -0
  114. package/dist/core/gitignoreManager.js.map +1 -0
  115. package/dist/core/managedState.d.ts +42 -0
  116. package/dist/core/managedState.d.ts.map +1 -0
  117. package/dist/core/managedState.js +194 -0
  118. package/dist/core/managedState.js.map +1 -0
  119. package/dist/core/mcpClient.d.ts +124 -6
  120. package/dist/core/mcpClient.d.ts.map +1 -1
  121. package/dist/core/mcpClient.js +385 -39
  122. package/dist/core/mcpClient.js.map +1 -1
  123. package/dist/core/pluginManager.d.ts +134 -0
  124. package/dist/core/pluginManager.d.ts.map +1 -0
  125. package/dist/core/pluginManager.js +845 -0
  126. package/dist/core/pluginManager.js.map +1 -0
  127. package/dist/core/projectSkills.d.ts +19 -0
  128. package/dist/core/projectSkills.d.ts.map +1 -0
  129. package/dist/core/projectSkills.js +105 -0
  130. package/dist/core/projectSkills.js.map +1 -0
  131. package/dist/core/propagator.d.ts +8 -1
  132. package/dist/core/propagator.d.ts.map +1 -1
  133. package/dist/core/propagator.js +179 -36
  134. package/dist/core/propagator.js.map +1 -1
  135. package/dist/core/rulesApplicator.d.ts +0 -4
  136. package/dist/core/rulesApplicator.d.ts.map +1 -1
  137. package/dist/core/rulesApplicator.js +8 -39
  138. package/dist/core/rulesApplicator.js.map +1 -1
  139. package/dist/core/rulesTemplateLoader.js +2 -2
  140. package/dist/core/rulesTemplateLoader.js.map +1 -1
  141. package/dist/core/skillsManager.d.ts +61 -0
  142. package/dist/core/skillsManager.d.ts.map +1 -0
  143. package/dist/core/skillsManager.js +407 -0
  144. package/dist/core/skillsManager.js.map +1 -0
  145. package/dist/lib/utils/index.d.ts +3 -1
  146. package/dist/lib/utils/index.d.ts.map +1 -1
  147. package/dist/lib/utils/index.js +4 -1
  148. package/dist/lib/utils/index.js.map +1 -1
  149. package/dist/types/index.d.ts +24 -1
  150. package/dist/types/index.d.ts.map +1 -1
  151. package/dist/types/index.js.map +1 -1
  152. package/dist/types/jsonSchema.d.ts +31 -0
  153. package/dist/types/jsonSchema.d.ts.map +1 -0
  154. package/dist/types/jsonSchema.js +6 -0
  155. package/dist/types/jsonSchema.js.map +1 -0
  156. package/dist/types/plugins.d.ts +161 -0
  157. package/dist/types/plugins.d.ts.map +1 -0
  158. package/dist/types/plugins.js +2 -0
  159. package/dist/types/plugins.js.map +1 -0
  160. package/dist/types/skills.d.ts +50 -0
  161. package/dist/types/skills.d.ts.map +1 -0
  162. package/dist/types/skills.js +2 -0
  163. package/dist/types/skills.js.map +1 -0
  164. package/dist/utils/packageVersion.d.ts +105 -0
  165. package/dist/utils/packageVersion.d.ts.map +1 -0
  166. package/dist/utils/packageVersion.js +219 -0
  167. package/dist/utils/packageVersion.js.map +1 -0
  168. package/package.json +7 -2
  169. package/dist/agentinit-1.6.0.tgz +0 -0
  170. package/dist/registry/mcpRegistry.d.ts +0 -12
  171. package/dist/registry/mcpRegistry.d.ts.map +0 -1
  172. package/dist/registry/mcpRegistry.js +0 -114
  173. package/dist/registry/mcpRegistry.js.map +0 -1
@@ -0,0 +1,194 @@
1
+ import { promises as fs } from 'fs';
2
+ import { dirname, join, relative, resolve } from 'path';
3
+ import { fileExists } from '../utils/fs.js';
4
+ const MANAGED_STATE_FILE = 'managed-state.json';
5
+ const BACKUPS_DIR = 'backups';
6
+ function toPosixPath(value) {
7
+ return value.replace(/\\/g, '/');
8
+ }
9
+ async function pathType(targetPath) {
10
+ try {
11
+ const stat = await fs.stat(targetPath);
12
+ return stat.isDirectory() ? 'directory' : 'file';
13
+ }
14
+ catch {
15
+ return null;
16
+ }
17
+ }
18
+ async function copyDirectory(src, dest) {
19
+ await fs.mkdir(dest, { recursive: true });
20
+ const entries = await fs.readdir(src, { withFileTypes: true });
21
+ for (const entry of entries) {
22
+ const srcPath = join(src, entry.name);
23
+ const destPath = join(dest, entry.name);
24
+ if (entry.isDirectory()) {
25
+ await copyDirectory(srcPath, destPath);
26
+ }
27
+ else {
28
+ await fs.mkdir(dirname(destPath), { recursive: true });
29
+ await fs.copyFile(srcPath, destPath);
30
+ }
31
+ }
32
+ }
33
+ async function copyPath(src, dest) {
34
+ const type = await pathType(src);
35
+ if (!type) {
36
+ return;
37
+ }
38
+ await fs.mkdir(dirname(dest), { recursive: true });
39
+ if (type === 'directory') {
40
+ await copyDirectory(src, dest);
41
+ }
42
+ else {
43
+ await fs.copyFile(src, dest);
44
+ }
45
+ }
46
+ export class ManagedStateStore {
47
+ projectPath;
48
+ state;
49
+ constructor(projectPath, state) {
50
+ this.projectPath = projectPath;
51
+ this.state = state;
52
+ }
53
+ static async open(projectPath) {
54
+ const agentInitDir = join(projectPath, '.agentinit');
55
+ const statePath = join(agentInitDir, MANAGED_STATE_FILE);
56
+ const emptyState = { version: 1, entries: [] };
57
+ try {
58
+ const raw = await fs.readFile(statePath, 'utf8');
59
+ const parsed = JSON.parse(raw);
60
+ if (!parsed || parsed.version !== 1 || !Array.isArray(parsed.entries)) {
61
+ return new ManagedStateStore(projectPath, emptyState);
62
+ }
63
+ return new ManagedStateStore(projectPath, parsed);
64
+ }
65
+ catch {
66
+ return new ManagedStateStore(projectPath, emptyState);
67
+ }
68
+ }
69
+ get agentInitDir() {
70
+ return join(this.projectPath, '.agentinit');
71
+ }
72
+ get stateFilePath() {
73
+ return join(this.agentInitDir, MANAGED_STATE_FILE);
74
+ }
75
+ get backupsDir() {
76
+ return join(this.agentInitDir, BACKUPS_DIR);
77
+ }
78
+ normalizeRelativePath(targetPath, preserveTrailingSlash = false) {
79
+ const hasTrailingSlash = preserveTrailingSlash && /[\\/]$/.test(targetPath);
80
+ const relativePath = relative(this.projectPath, resolve(targetPath));
81
+ const normalizedPath = toPosixPath(relativePath);
82
+ if (hasTrailingSlash && normalizedPath) {
83
+ return normalizedPath.endsWith('/') ? normalizedPath : `${normalizedPath}/`;
84
+ }
85
+ return normalizedPath;
86
+ }
87
+ getEntry(targetPath) {
88
+ const relativePath = this.normalizeRelativePath(targetPath);
89
+ return this.state.entries.find(entry => entry.path === relativePath);
90
+ }
91
+ async createBackup(targetPath) {
92
+ if (!(await fileExists(targetPath))) {
93
+ return undefined;
94
+ }
95
+ const relativeTargetPath = this.normalizeRelativePath(targetPath);
96
+ const backupPath = join(this.backupsDir, relativeTargetPath);
97
+ if (!(await fileExists(backupPath))) {
98
+ await copyPath(targetPath, backupPath);
99
+ }
100
+ return this.normalizeRelativePath(backupPath);
101
+ }
102
+ async trackGeneratedPath(targetPath, options) {
103
+ const existing = this.getEntry(targetPath);
104
+ if (existing) {
105
+ if (options.ignorePath && !existing.ignorePath) {
106
+ existing.ignorePath = this.normalizeRelativePath(options.ignorePath);
107
+ }
108
+ return existing;
109
+ }
110
+ const existedBefore = await fileExists(targetPath);
111
+ const backupPath = existedBefore ? await this.createBackup(targetPath) : undefined;
112
+ const entry = {
113
+ path: this.normalizeRelativePath(targetPath),
114
+ kind: options.kind,
115
+ source: options.source,
116
+ existedBefore,
117
+ ...(backupPath ? { backupPath } : {}),
118
+ ...(options.ignorePath ? { ignorePath: this.normalizeRelativePath(options.ignorePath, true) } : {}),
119
+ };
120
+ this.state.entries.push(entry);
121
+ return entry;
122
+ }
123
+ getEntries() {
124
+ return [...this.state.entries];
125
+ }
126
+ getIgnorePaths() {
127
+ if (this.state.entries.length === 0) {
128
+ return [];
129
+ }
130
+ const paths = new Set([
131
+ '.agentinit/managed-state.json',
132
+ '.agentinit/backups/',
133
+ ]);
134
+ for (const entry of this.state.entries) {
135
+ if (entry.ignorePath) {
136
+ paths.add(entry.ignorePath);
137
+ }
138
+ }
139
+ return [...paths];
140
+ }
141
+ async save() {
142
+ await fs.mkdir(this.agentInitDir, { recursive: true });
143
+ await fs.writeFile(this.stateFilePath, JSON.stringify(this.state, null, 2), 'utf8');
144
+ }
145
+ async revertAll(options = {}) {
146
+ const summary = {
147
+ restored: 0,
148
+ removed: 0,
149
+ backupsRemoved: 0,
150
+ };
151
+ const entries = [...this.state.entries].sort((a, b) => b.path.length - a.path.length);
152
+ for (const entry of entries) {
153
+ const absolutePath = resolve(this.projectPath, entry.path);
154
+ const backupPath = entry.backupPath ? resolve(this.projectPath, entry.backupPath) : null;
155
+ if (entry.existedBefore && backupPath && (await fileExists(backupPath))) {
156
+ if (!options.dryRun) {
157
+ await fs.rm(absolutePath, { recursive: true, force: true }).catch(() => { });
158
+ await copyPath(backupPath, absolutePath);
159
+ }
160
+ summary.restored++;
161
+ }
162
+ else {
163
+ if (!options.dryRun) {
164
+ await fs.rm(absolutePath, { recursive: true, force: true }).catch(() => { });
165
+ }
166
+ summary.removed++;
167
+ }
168
+ if (!options.keepBackups && backupPath && (await fileExists(backupPath))) {
169
+ if (!options.dryRun) {
170
+ await fs.rm(backupPath, { recursive: true, force: true }).catch(() => { });
171
+ }
172
+ summary.backupsRemoved++;
173
+ }
174
+ }
175
+ if (!options.dryRun) {
176
+ this.state.entries.length = 0;
177
+ await fs.rm(this.stateFilePath, { force: true }).catch(() => { });
178
+ if (!options.keepBackups) {
179
+ await fs.rm(this.backupsDir, { recursive: true, force: true }).catch(() => { });
180
+ }
181
+ try {
182
+ const remainingEntries = await fs.readdir(this.agentInitDir);
183
+ if (remainingEntries.length === 0) {
184
+ await fs.rm(this.agentInitDir, { recursive: true, force: true });
185
+ }
186
+ }
187
+ catch {
188
+ // Ignore cleanup errors when the directory does not exist.
189
+ }
190
+ }
191
+ return summary;
192
+ }
193
+ }
194
+ //# sourceMappingURL=managedState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"managedState.js","sourceRoot":"","sources":["../../src/core/managedState.ts"],"names":[],"mappings":"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"}
@@ -1,27 +1,129 @@
1
- import type { MCPServerConfig, MCPVerificationResult } from '../types/index.js';
1
+ import type { MCPServerConfig, MCPVerificationResult, MCPVerificationOptions } from '../types/index.js';
2
2
  export declare class MCPVerificationError extends Error {
3
3
  readonly serverName: string;
4
4
  constructor(message: string, serverName: string);
5
5
  }
6
6
  export declare class MCPVerifier {
7
7
  private defaultTimeout;
8
+ /**
9
+ * Creates a new MCP server verifier instance
10
+ *
11
+ * @param defaultTimeout - Default connection timeout in milliseconds (default: 30000)
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * const verifier = new MCPVerifier();
16
+ * // or with custom timeout
17
+ * const verifier = new MCPVerifier(15000);
18
+ * ```
19
+ */
8
20
  constructor(defaultTimeout?: number);
9
21
  /**
10
22
  * Color utility function for token display
11
23
  */
12
24
  private colorizeTokenCount;
25
+ /**
26
+ * Check if tool has valid input schema with properties
27
+ */
28
+ private hasValidInputSchema;
29
+ /**
30
+ * Format type information from schema property
31
+ */
32
+ private formatType;
33
+ /**
34
+ * Format number range constraints
35
+ */
36
+ private formatNumberRange;
37
+ /**
38
+ * Format string length constraints
39
+ */
40
+ private formatStringLength;
41
+ /**
42
+ * Format array item constraints
43
+ */
44
+ private formatArrayConstraints;
45
+ /**
46
+ * Collect all constraints for a parameter
47
+ */
48
+ private formatConstraints;
49
+ /**
50
+ * Format a single parameter for display
51
+ */
52
+ private formatParameter;
53
+ /**
54
+ * Format tool parameters from inputSchema for display
55
+ */
56
+ private formatToolParameters;
13
57
  /**
14
58
  * Calculate token counts for MCP tools based on how they appear in Claude's context
15
59
  */
16
60
  private calculateToolTokens;
17
61
  /**
18
- * Verify a single MCP server
62
+ * Verifies a single MCP server and retrieves its capabilities
63
+ *
64
+ * @param server - MCP server configuration
65
+ * @param options - Verification options
66
+ * @param options.timeout - Connection timeout in milliseconds (overrides default)
67
+ * @param options.includeResourceContents - Fetch actual resource data (may be slow for large resources)
68
+ * @param options.includePromptDetails - Fetch prompt templates with full message content
69
+ * @param options.includeTokenCounts - Calculate token usage for tools (default: true)
70
+ * @returns Verification result with server capabilities, connection time, and status
71
+ *
72
+ * @example
73
+ * ```typescript
74
+ * const verifier = new MCPVerifier();
75
+ * const result = await verifier.verifyServer(
76
+ * {
77
+ * name: 'filesystem',
78
+ * type: MCPServerType.STDIO,
79
+ * command: 'npx',
80
+ * args: ['-y', '@modelcontextprotocol/server-filesystem', '/workspace']
81
+ * },
82
+ * {
83
+ * timeout: 10000,
84
+ * includeResourceContents: true,
85
+ * includePromptDetails: true
86
+ * }
87
+ * );
88
+ *
89
+ * if (result.status === 'success') {
90
+ * console.log(`Tools: ${result.capabilities.tools.length}`);
91
+ * console.log(`Total tokens: ${result.capabilities.totalToolTokens}`);
92
+ * }
93
+ * ```
19
94
  */
20
- verifyServer(server: MCPServerConfig, timeout?: number): Promise<MCPVerificationResult>;
95
+ verifyServer(server: MCPServerConfig, options?: MCPVerificationOptions): Promise<MCPVerificationResult>;
21
96
  /**
22
- * Verify multiple MCP servers
97
+ * Verifies multiple MCP servers in parallel
98
+ *
99
+ * @param servers - Array of MCP server configurations to verify
100
+ * @param options - Verification options (applied to all servers)
101
+ * @returns Array of verification results for each server
102
+ *
103
+ * @example
104
+ * ```typescript
105
+ * const verifier = new MCPVerifier();
106
+ * const servers = [
107
+ * {
108
+ * name: 'filesystem',
109
+ * type: MCPServerType.STDIO,
110
+ * command: 'npx',
111
+ * args: ['-y', '@modelcontextprotocol/server-filesystem', '/workspace']
112
+ * },
113
+ * {
114
+ * name: 'github',
115
+ * type: MCPServerType.HTTP,
116
+ * url: 'https://api.githubcopilot.com/mcp/',
117
+ * headers: { Authorization: 'Bearer YOUR_TOKEN' }
118
+ * }
119
+ * ];
120
+ *
121
+ * const results = await verifier.verifyServers(servers, { timeout: 15000 });
122
+ * const successCount = results.filter(r => r.status === 'success').length;
123
+ * console.log(`${successCount}/${results.length} servers verified successfully`);
124
+ * ```
23
125
  */
24
- verifyServers(servers: MCPServerConfig[], timeout?: number): Promise<MCPVerificationResult[]>;
126
+ verifyServers(servers: MCPServerConfig[], options?: MCPVerificationOptions): Promise<MCPVerificationResult[]>;
25
127
  /**
26
128
  * Create the appropriate transport for the server type
27
129
  */
@@ -31,7 +133,23 @@ export declare class MCPVerifier {
31
133
  */
32
134
  private connectAndVerify;
33
135
  /**
34
- * Format verification results for display
136
+ * Formats verification results for console display with color-coded output
137
+ *
138
+ * @param results - Array of verification results to format
139
+ * @returns Formatted string with tools, resources, prompts, and connection status
140
+ *
141
+ * @remarks
142
+ * - Token counts are color-coded: green (≤5k), yellow (5k-15k), red (>15k)
143
+ * - Resources and prompts are shown when DEBUG=1 or when content/templates are fetched
144
+ * - Failed servers display connection details for debugging
145
+ *
146
+ * @example
147
+ * ```typescript
148
+ * const verifier = new MCPVerifier();
149
+ * const results = await verifier.verifyServers(servers);
150
+ * const formatted = verifier.formatResults(results);
151
+ * console.log(formatted);
152
+ * ```
35
153
  */
36
154
  formatResults(results: MCPVerificationResult[]): string;
37
155
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mcpClient.d.ts","sourceRoot":"","sources":["../../src/core/mcpClient.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,eAAe,EACf,qBAAqB,EAKtB,MAAM,mBAAmB,CAAC;AAE3B,qBAAa,oBAAqB,SAAQ,KAAK;aACA,UAAU,EAAE,MAAM;gBAAnD,OAAO,EAAE,MAAM,EAAkB,UAAU,EAAE,MAAM;CAIhE;AAGD,qBAAa,WAAW;IACtB,OAAO,CAAC,cAAc,CAAS;gBAEnB,cAAc,GAAE,MAAsC;IAIlE;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAM1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAsE3B;;OAEG;IACG,YAAY,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAiF7F;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,eAAe,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAsBnG;;OAEG;YACW,eAAe;IA0C7B;;OAEG;YACW,gBAAgB;IA8G9B;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,qBAAqB,EAAE,GAAG,MAAM;CAiFxD"}
1
+ {"version":3,"file":"mcpClient.d.ts","sourceRoot":"","sources":["../../src/core/mcpClient.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,eAAe,EACf,qBAAqB,EAKrB,sBAAsB,EAGvB,MAAM,mBAAmB,CAAC;AAE3B,qBAAa,oBAAqB,SAAQ,KAAK;aACA,UAAU,EAAE,MAAM;gBAAnD,OAAO,EAAE,MAAM,EAAkB,UAAU,EAAE,MAAM;CAIhE;AAGD,qBAAa,WAAW;IACtB,OAAO,CAAC,cAAc,CAAS;IAE/B;;;;;;;;;;;OAWG;gBACS,cAAc,GAAE,MAAsC;IAIlE;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAM1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAM3B;;OAEG;IACH,OAAO,CAAC,UAAU;IAKlB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAMzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAM1B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAoB9B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAuCzB;;OAEG;IACH,OAAO,CAAC,eAAe;IAsBvB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAc5B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAoF3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACG,YAAY,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAiF7G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACG,aAAa,CAAC,OAAO,EAAE,eAAe,EAAE,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAsBnH;;OAEG;YACW,eAAe;IA0C7B;;OAEG;YACW,gBAAgB;IAkN9B;;;;;;;;;;;;;;;;;;OAkBG;IACH,aAAa,CAAC,OAAO,EAAE,qBAAqB,EAAE,GAAG,MAAM;CAsHxD"}