@simpletoolsindiaorg/engi-mcp 1.0.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 (116) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/LICENSE +21 -0
  3. package/README.md +592 -0
  4. package/dist/bin.d.ts +3 -0
  5. package/dist/bin.d.ts.map +1 -0
  6. package/dist/bin.js +6 -0
  7. package/dist/bin.js.map +1 -0
  8. package/dist/capabilities/analysis/analysis.d.ts +223 -0
  9. package/dist/capabilities/analysis/analysis.d.ts.map +1 -0
  10. package/dist/capabilities/analysis/analysis.js +202 -0
  11. package/dist/capabilities/analysis/analysis.js.map +1 -0
  12. package/dist/capabilities/analysis/index.d.ts +2 -0
  13. package/dist/capabilities/analysis/index.d.ts.map +1 -0
  14. package/dist/capabilities/analysis/index.js +19 -0
  15. package/dist/capabilities/analysis/index.js.map +1 -0
  16. package/dist/capabilities/documentation/documentation.d.ts +107 -0
  17. package/dist/capabilities/documentation/documentation.d.ts.map +1 -0
  18. package/dist/capabilities/documentation/documentation.js +112 -0
  19. package/dist/capabilities/documentation/documentation.js.map +1 -0
  20. package/dist/capabilities/documentation/index.d.ts +2 -0
  21. package/dist/capabilities/documentation/index.d.ts.map +1 -0
  22. package/dist/capabilities/documentation/index.js +19 -0
  23. package/dist/capabilities/documentation/index.js.map +1 -0
  24. package/dist/capabilities/execution/execution.d.ts +96 -0
  25. package/dist/capabilities/execution/execution.d.ts.map +1 -0
  26. package/dist/capabilities/execution/execution.js +175 -0
  27. package/dist/capabilities/execution/execution.js.map +1 -0
  28. package/dist/capabilities/execution/index.d.ts +2 -0
  29. package/dist/capabilities/execution/index.d.ts.map +1 -0
  30. package/dist/capabilities/execution/index.js +19 -0
  31. package/dist/capabilities/execution/index.js.map +1 -0
  32. package/dist/capabilities/memory/index.d.ts +2 -0
  33. package/dist/capabilities/memory/index.d.ts.map +1 -0
  34. package/dist/capabilities/memory/index.js +19 -0
  35. package/dist/capabilities/memory/index.js.map +1 -0
  36. package/dist/capabilities/memory/memory.d.ts +227 -0
  37. package/dist/capabilities/memory/memory.d.ts.map +1 -0
  38. package/dist/capabilities/memory/memory.js +106 -0
  39. package/dist/capabilities/memory/memory.js.map +1 -0
  40. package/dist/capabilities/planning/index.d.ts +2 -0
  41. package/dist/capabilities/planning/index.d.ts.map +1 -0
  42. package/dist/capabilities/planning/index.js +19 -0
  43. package/dist/capabilities/planning/index.js.map +1 -0
  44. package/dist/capabilities/planning/planning.d.ts +131 -0
  45. package/dist/capabilities/planning/planning.d.ts.map +1 -0
  46. package/dist/capabilities/planning/planning.js +179 -0
  47. package/dist/capabilities/planning/planning.js.map +1 -0
  48. package/dist/core/index.d.ts +2 -0
  49. package/dist/core/index.d.ts.map +1 -0
  50. package/dist/core/index.js +19 -0
  51. package/dist/core/index.js.map +1 -0
  52. package/dist/core/indexer/index.d.ts +2 -0
  53. package/dist/core/indexer/index.d.ts.map +1 -0
  54. package/dist/core/indexer/index.js +9 -0
  55. package/dist/core/indexer/index.js.map +1 -0
  56. package/dist/core/indexer/indexer.d.ts +35 -0
  57. package/dist/core/indexer/indexer.d.ts.map +1 -0
  58. package/dist/core/indexer/indexer.js +377 -0
  59. package/dist/core/indexer/indexer.js.map +1 -0
  60. package/dist/core/retrieval/index.d.ts +2 -0
  61. package/dist/core/retrieval/index.d.ts.map +1 -0
  62. package/dist/core/retrieval/index.js +8 -0
  63. package/dist/core/retrieval/index.js.map +1 -0
  64. package/dist/core/retrieval/retriever.d.ts +28 -0
  65. package/dist/core/retrieval/retriever.d.ts.map +1 -0
  66. package/dist/core/retrieval/retriever.js +258 -0
  67. package/dist/core/retrieval/retriever.js.map +1 -0
  68. package/dist/core/summarizer/index.d.ts +2 -0
  69. package/dist/core/summarizer/index.d.ts.map +1 -0
  70. package/dist/core/summarizer/index.js +8 -0
  71. package/dist/core/summarizer/index.js.map +1 -0
  72. package/dist/core/summarizer/summarizer.d.ts +33 -0
  73. package/dist/core/summarizer/summarizer.d.ts.map +1 -0
  74. package/dist/core/summarizer/summarizer.js +341 -0
  75. package/dist/core/summarizer/summarizer.js.map +1 -0
  76. package/dist/core/types.d.ts +224 -0
  77. package/dist/core/types.d.ts.map +1 -0
  78. package/dist/core/types.js +4 -0
  79. package/dist/core/types.js.map +1 -0
  80. package/dist/index.d.ts +2 -0
  81. package/dist/index.d.ts.map +1 -0
  82. package/dist/index.js +127 -0
  83. package/dist/index.js.map +1 -0
  84. package/dist/memory/index.d.ts +2 -0
  85. package/dist/memory/index.d.ts.map +1 -0
  86. package/dist/memory/index.js +9 -0
  87. package/dist/memory/index.js.map +1 -0
  88. package/dist/memory/memory.d.ts +59 -0
  89. package/dist/memory/memory.d.ts.map +1 -0
  90. package/dist/memory/memory.js +212 -0
  91. package/dist/memory/memory.js.map +1 -0
  92. package/dist/resources/index.d.ts +3 -0
  93. package/dist/resources/index.d.ts.map +1 -0
  94. package/dist/resources/index.js +16 -0
  95. package/dist/resources/index.js.map +1 -0
  96. package/dist/resources/resources.d.ts +86 -0
  97. package/dist/resources/resources.d.ts.map +1 -0
  98. package/dist/resources/resources.js +285 -0
  99. package/dist/resources/resources.js.map +1 -0
  100. package/dist/utils/formatter.d.ts +26 -0
  101. package/dist/utils/formatter.d.ts.map +1 -0
  102. package/dist/utils/formatter.js +56 -0
  103. package/dist/utils/formatter.js.map +1 -0
  104. package/dist/utils/index.d.ts +7 -0
  105. package/dist/utils/index.d.ts.map +1 -0
  106. package/dist/utils/index.js +17 -0
  107. package/dist/utils/index.js.map +1 -0
  108. package/dist/utils/logger.d.ts +21 -0
  109. package/dist/utils/logger.d.ts.map +1 -0
  110. package/dist/utils/logger.js +44 -0
  111. package/dist/utils/logger.js.map +1 -0
  112. package/dist/utils/token-counter.d.ts +24 -0
  113. package/dist/utils/token-counter.d.ts.map +1 -0
  114. package/dist/utils/token-counter.js +49 -0
  115. package/dist/utils/token-counter.js.map +1 -0
  116. package/package.json +70 -0
@@ -0,0 +1,285 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RESOURCE_LIST = exports.RESOURCE_URIS = void 0;
4
+ exports.buildArchitectureMap = buildArchitectureMap;
5
+ exports.buildModuleIndex = buildModuleIndex;
6
+ exports.buildSymbolIndex = buildSymbolIndex;
7
+ exports.buildTestMap = buildTestMap;
8
+ exports.buildDocMap = buildDocMap;
9
+ exports.buildPatterns = buildPatterns;
10
+ exports.buildGlossary = buildGlossary;
11
+ exports.readResource = readResource;
12
+ const indexer_js_1 = require("../core/indexer/indexer.js");
13
+ // ============================================================================
14
+ // Resource URI constants
15
+ // ============================================================================
16
+ exports.RESOURCE_URIS = {
17
+ ARCHITECTURE_MAP: 'repo://architecture-map',
18
+ MODULE_INDEX: 'repo://module-index',
19
+ SYMBOL_INDEX: 'repo://symbol-index',
20
+ TEST_MAP: 'repo://test-map',
21
+ DOC_MAP: 'repo://doc-map',
22
+ PATTERNS: 'repo://patterns',
23
+ GLOSSARY: 'repo://glossary'
24
+ };
25
+ // ============================================================================
26
+ // Resource metadata list (for ListResources)
27
+ // ============================================================================
28
+ exports.RESOURCE_LIST = [
29
+ {
30
+ uri: exports.RESOURCE_URIS.ARCHITECTURE_MAP,
31
+ name: 'Architecture Map',
32
+ description: 'Compact high-level module structure and dependency graph of the repository',
33
+ mimeType: 'application/json'
34
+ },
35
+ {
36
+ uri: exports.RESOURCE_URIS.MODULE_INDEX,
37
+ name: 'Module Index',
38
+ description: 'Index of all top-level modules with file counts, types, and export summaries',
39
+ mimeType: 'application/json'
40
+ },
41
+ {
42
+ uri: exports.RESOURCE_URIS.SYMBOL_INDEX,
43
+ name: 'Symbol Index',
44
+ description: 'Compact index of exported functions, classes, interfaces, and types',
45
+ mimeType: 'application/json'
46
+ },
47
+ {
48
+ uri: exports.RESOURCE_URIS.TEST_MAP,
49
+ name: 'Test Map',
50
+ description: 'Map of test files with their types and target source files',
51
+ mimeType: 'application/json'
52
+ },
53
+ {
54
+ uri: exports.RESOURCE_URIS.DOC_MAP,
55
+ name: 'Documentation Map',
56
+ description: 'Map of documentation files with section summaries',
57
+ mimeType: 'application/json'
58
+ },
59
+ {
60
+ uri: exports.RESOURCE_URIS.PATTERNS,
61
+ name: 'Code Patterns',
62
+ description: 'Common patterns detected in the repository (singletons, factories, handlers, etc.)',
63
+ mimeType: 'application/json'
64
+ },
65
+ {
66
+ uri: exports.RESOURCE_URIS.GLOSSARY,
67
+ name: 'Project Glossary',
68
+ description: 'Key terms, symbol names, file names, and module names in this repository',
69
+ mimeType: 'application/json'
70
+ }
71
+ ];
72
+ // ============================================================================
73
+ // Resource Builders
74
+ // ============================================================================
75
+ function requireIndex() {
76
+ return (0, indexer_js_1.getIndexer)().getIndex();
77
+ }
78
+ /**
79
+ * repo://architecture-map
80
+ * High-level module structure: dependencies between top-level modules
81
+ */
82
+ function buildArchitectureMap() {
83
+ const index = requireIndex();
84
+ if (!index)
85
+ return { error: 'No repository indexed. Use repo_scope_find with repoPath first.' };
86
+ // Group files by top-level module
87
+ const modules = {};
88
+ for (const [filePath, file] of index.files) {
89
+ const module = filePath.split('/')[0] ?? 'root';
90
+ if (!modules[module]) {
91
+ modules[module] = { files: 0, sourceFiles: 0, testFiles: 0, exports: [], imports: [] };
92
+ }
93
+ modules[module].files++;
94
+ if (file.type === 'source')
95
+ modules[module].sourceFiles++;
96
+ if (file.type === 'test')
97
+ modules[module].testFiles++;
98
+ modules[module].exports.push(...file.exports.slice(0, 5));
99
+ modules[module].imports.push(...file.imports.map(i => i.split('/')[0] ?? i).filter(i => !i.startsWith('.')));
100
+ }
101
+ // Deduplicate
102
+ for (const mod of Object.values(modules)) {
103
+ mod.exports = [...new Set(mod.exports)].slice(0, 10);
104
+ mod.imports = [...new Set(mod.imports)].slice(0, 10);
105
+ }
106
+ // Build inter-module dependency edges
107
+ const edges = [];
108
+ for (const edge of index.imports) {
109
+ const fromModule = edge.from.split('/')[0] ?? 'root';
110
+ const toModule = edge.to.split('/')[0] ?? 'root';
111
+ if (fromModule !== toModule && !edges.some(e => e.from === fromModule && e.to === toModule)) {
112
+ edges.push({ from: fromModule, to: toModule });
113
+ }
114
+ }
115
+ return {
116
+ rootPath: index.rootPath,
117
+ lastIndexed: new Date(index.lastIndexed).toISOString(),
118
+ totalFiles: index.files.size,
119
+ modules,
120
+ dependencyEdges: edges
121
+ };
122
+ }
123
+ /**
124
+ * repo://module-index
125
+ * Flat index of modules with file/symbol counts
126
+ */
127
+ function buildModuleIndex() {
128
+ const index = requireIndex();
129
+ if (!index)
130
+ return { error: 'No repository indexed.' };
131
+ const modules = {};
132
+ for (const [filePath, file] of index.files) {
133
+ const parts = filePath.split('/');
134
+ const module = parts.length > 1 ? parts[0] : 'root';
135
+ if (!modules[module]) {
136
+ modules[module] = { path: module, fileCount: 0, sourceFileCount: 0, topExports: [], language: file.language };
137
+ }
138
+ modules[module].fileCount++;
139
+ if (file.type === 'source') {
140
+ modules[module].sourceFileCount++;
141
+ modules[module].topExports.push(...file.exports.slice(0, 3));
142
+ }
143
+ }
144
+ for (const mod of Object.values(modules)) {
145
+ mod.topExports = [...new Set(mod.topExports)].slice(0, 10);
146
+ }
147
+ return { modules };
148
+ }
149
+ /**
150
+ * repo://symbol-index
151
+ * Compact index of all exported symbols
152
+ */
153
+ function buildSymbolIndex() {
154
+ const index = requireIndex();
155
+ if (!index)
156
+ return { error: 'No repository indexed.' };
157
+ const exported = [];
158
+ for (const [, symbols] of index.symbols) {
159
+ for (const sym of symbols) {
160
+ if (sym.exported) {
161
+ exported.push({ name: sym.name, type: sym.type, file: sym.file, line: sym.line });
162
+ }
163
+ }
164
+ }
165
+ return {
166
+ totalSymbols: exported.length,
167
+ symbols: exported.slice(0, 200) // cap at 200 for compactness
168
+ };
169
+ }
170
+ /**
171
+ * repo://test-map
172
+ * Map of test files and their targets
173
+ */
174
+ function buildTestMap() {
175
+ const index = requireIndex();
176
+ if (!index)
177
+ return { error: 'No repository indexed.' };
178
+ return {
179
+ totalTests: index.tests.length,
180
+ tests: index.tests.map(t => ({
181
+ path: t.path,
182
+ type: t.type,
183
+ targetFile: t.targetFile ?? null
184
+ }))
185
+ };
186
+ }
187
+ /**
188
+ * repo://doc-map
189
+ * Map of documentation files
190
+ */
191
+ function buildDocMap() {
192
+ const index = requireIndex();
193
+ if (!index)
194
+ return { error: 'No repository indexed.' };
195
+ return {
196
+ totalDocs: index.docs.length,
197
+ docs: index.docs.map(d => ({
198
+ path: d.path,
199
+ type: d.type,
200
+ sections: d.sections.slice(0, 5)
201
+ }))
202
+ };
203
+ }
204
+ /**
205
+ * repo://patterns
206
+ * Detect common code patterns in the repo
207
+ */
208
+ function buildPatterns() {
209
+ const index = requireIndex();
210
+ if (!index)
211
+ return { error: 'No repository indexed.' };
212
+ const singletons = [];
213
+ const factories = [];
214
+ const handlers = [];
215
+ const schemas = [];
216
+ for (const [filePath, symbols] of index.symbols) {
217
+ for (const sym of symbols) {
218
+ const nameLower = sym.name.toLowerCase();
219
+ if (nameLower.startsWith('get') && sym.type === 'function') {
220
+ singletons.push(`${sym.name} (${filePath})`);
221
+ }
222
+ if (nameLower.includes('factory') || nameLower.includes('create')) {
223
+ factories.push(`${sym.name} (${filePath})`);
224
+ }
225
+ if (nameLower.includes('handler') || nameLower.includes('middleware')) {
226
+ handlers.push(`${sym.name} (${filePath})`);
227
+ }
228
+ if (nameLower.includes('schema') || nameLower.includes('validator')) {
229
+ schemas.push(`${sym.name} (${filePath})`);
230
+ }
231
+ }
232
+ }
233
+ return {
234
+ singletonGetters: singletons.slice(0, 20),
235
+ factories: factories.slice(0, 20),
236
+ handlers: handlers.slice(0, 20),
237
+ schemas: schemas.slice(0, 20)
238
+ };
239
+ }
240
+ /**
241
+ * repo://glossary
242
+ * Key names (symbols, files, modules) for quick reference
243
+ */
244
+ function buildGlossary() {
245
+ const index = requireIndex();
246
+ if (!index)
247
+ return { error: 'No repository indexed.' };
248
+ const modules = new Set();
249
+ const fileNames = new Set();
250
+ const exportedSymbols = new Set();
251
+ for (const [filePath, file] of index.files) {
252
+ const mod = filePath.split('/')[0];
253
+ if (mod)
254
+ modules.add(mod);
255
+ fileNames.add(file.name);
256
+ file.exports.forEach(e => exportedSymbols.add(e));
257
+ }
258
+ return {
259
+ modules: [...modules].sort(),
260
+ fileNames: [...fileNames].sort().slice(0, 100),
261
+ exportedSymbols: [...exportedSymbols].sort().slice(0, 200)
262
+ };
263
+ }
264
+ // ============================================================================
265
+ // Resource Router
266
+ // ============================================================================
267
+ function readResource(uri) {
268
+ const builders = {
269
+ [exports.RESOURCE_URIS.ARCHITECTURE_MAP]: buildArchitectureMap,
270
+ [exports.RESOURCE_URIS.MODULE_INDEX]: buildModuleIndex,
271
+ [exports.RESOURCE_URIS.SYMBOL_INDEX]: buildSymbolIndex,
272
+ [exports.RESOURCE_URIS.TEST_MAP]: buildTestMap,
273
+ [exports.RESOURCE_URIS.DOC_MAP]: buildDocMap,
274
+ [exports.RESOURCE_URIS.PATTERNS]: buildPatterns,
275
+ [exports.RESOURCE_URIS.GLOSSARY]: buildGlossary
276
+ };
277
+ const builder = builders[uri];
278
+ if (!builder)
279
+ return null;
280
+ return {
281
+ content: JSON.stringify(builder(), null, 2),
282
+ mimeType: 'application/json'
283
+ };
284
+ }
285
+ //# sourceMappingURL=resources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../src/resources/resources.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { Verbosity } from '../core/types.js';
2
+ /**
3
+ * Filter object fields based on verbosity level.
4
+ * minimal: only include key fields
5
+ * standard: include most fields
6
+ * detailed: include everything
7
+ */
8
+ export declare function filterByVerbosity<T extends object>(obj: T, verbosity: Verbosity, minimalFields: (keyof T)[], standardFields: (keyof T)[]): Partial<T>;
9
+ /**
10
+ * Format a list of items, truncating if too many for the verbosity level
11
+ */
12
+ export declare function formatList(items: string[], verbosity: Verbosity, label?: string): string;
13
+ /**
14
+ * Format a compact summary string from key-value pairs
15
+ */
16
+ export declare function formatCompact(pairs: Record<string, string | number | boolean | undefined>): string;
17
+ /**
18
+ * Wrap a tool result with verbosity metadata for downstream use
19
+ */
20
+ export interface VerboseResult<T> {
21
+ data: T;
22
+ verbosity: Verbosity;
23
+ tokenEstimate?: number;
24
+ }
25
+ export declare function wrapResult<T>(data: T, verbosity: Verbosity): VerboseResult<T>;
26
+ //# sourceMappingURL=formatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../../src/utils/formatter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAChD,GAAG,EAAE,CAAC,EACN,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAC1B,cAAc,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,GAC1B,OAAO,CAAC,CAAC,CAAC,CAaZ;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,MAAM,EAAE,EACf,SAAS,EAAE,SAAS,EACpB,KAAK,CAAC,EAAE,MAAM,GACb,MAAM,CAeR;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,GAAG,MAAM,CAKlG;AAED;;GAEG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,IAAI,EAAE,CAAC,CAAC;IACR,SAAS,EAAE,SAAS,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,GAAG,aAAa,CAAC,CAAC,CAAC,CAE7E"}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.filterByVerbosity = filterByVerbosity;
4
+ exports.formatList = formatList;
5
+ exports.formatCompact = formatCompact;
6
+ exports.wrapResult = wrapResult;
7
+ /**
8
+ * Filter object fields based on verbosity level.
9
+ * minimal: only include key fields
10
+ * standard: include most fields
11
+ * detailed: include everything
12
+ */
13
+ function filterByVerbosity(obj, verbosity, minimalFields, standardFields) {
14
+ if (verbosity === 'detailed') {
15
+ return obj;
16
+ }
17
+ const fields = verbosity === 'minimal' ? minimalFields : standardFields;
18
+ const result = {};
19
+ for (const field of fields) {
20
+ if (field in obj) {
21
+ result[field] = obj[field];
22
+ }
23
+ }
24
+ return result;
25
+ }
26
+ /**
27
+ * Format a list of items, truncating if too many for the verbosity level
28
+ */
29
+ function formatList(items, verbosity, label) {
30
+ const limits = {
31
+ minimal: 3,
32
+ standard: 10,
33
+ detailed: items.length
34
+ };
35
+ const limit = limits[verbosity];
36
+ const shown = items.slice(0, limit);
37
+ const remaining = items.length - shown.length;
38
+ let result = shown.join(', ');
39
+ if (remaining > 0) {
40
+ result += ` (+${remaining} more)`;
41
+ }
42
+ return label ? `${label}: ${result}` : result;
43
+ }
44
+ /**
45
+ * Format a compact summary string from key-value pairs
46
+ */
47
+ function formatCompact(pairs) {
48
+ return Object.entries(pairs)
49
+ .filter(([, v]) => v !== undefined && v !== null && v !== '')
50
+ .map(([k, v]) => `${k}=${v}`)
51
+ .join(' | ');
52
+ }
53
+ function wrapResult(data, verbosity) {
54
+ return { data, verbosity };
55
+ }
56
+ //# sourceMappingURL=formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatter.js","sourceRoot":"","sources":["../../src/utils/formatter.ts"],"names":[],"mappings":";;AASA,8CAkBC;AAKD,gCAmBC;AAKD,sCAKC;AAWD,gCAEC;AAvED;;;;;GAKG;AACH,SAAgB,iBAAiB,CAC/B,GAAM,EACN,SAAoB,EACpB,aAA0B,EAC1B,cAA2B;IAE3B,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;QAC7B,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,MAAM,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC;IACxE,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC;YACjB,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAgB,UAAU,CACxB,KAAe,EACf,SAAoB,EACpB,KAAc;IAEd,MAAM,MAAM,GAA8B;QACxC,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,EAAE;QACZ,QAAQ,EAAE,KAAK,CAAC,MAAM;KACvB,CAAC;IACF,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IAChC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACpC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAE9C,IAAI,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAClB,MAAM,IAAI,MAAM,SAAS,QAAQ,CAAC;IACpC,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAAC,KAA4D;IACxF,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;SACzB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;SAC5D,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;SAC5B,IAAI,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC;AAWD,SAAgB,UAAU,CAAI,IAAO,EAAE,SAAoB;IACzD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,7 @@
1
+ export { logger } from './logger.js';
2
+ export type { LogLevel, LogEntry } from './logger.js';
3
+ export { estimateTokens, estimateObjectTokens, truncateToTokenBudget, checkTokenBudget } from './token-counter.js';
4
+ export type { TokenBudgetSummary } from './token-counter.js';
5
+ export { filterByVerbosity, formatList, formatCompact, wrapResult } from './formatter.js';
6
+ export type { VerboseResult } from './formatter.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEtD,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,OAAO,EACL,iBAAiB,EACjB,UAAU,EACV,aAAa,EACb,UAAU,EACX,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.wrapResult = exports.formatCompact = exports.formatList = exports.filterByVerbosity = exports.checkTokenBudget = exports.truncateToTokenBudget = exports.estimateObjectTokens = exports.estimateTokens = exports.logger = void 0;
4
+ // Utils module exports
5
+ var logger_js_1 = require("./logger.js");
6
+ Object.defineProperty(exports, "logger", { enumerable: true, get: function () { return logger_js_1.logger; } });
7
+ var token_counter_js_1 = require("./token-counter.js");
8
+ Object.defineProperty(exports, "estimateTokens", { enumerable: true, get: function () { return token_counter_js_1.estimateTokens; } });
9
+ Object.defineProperty(exports, "estimateObjectTokens", { enumerable: true, get: function () { return token_counter_js_1.estimateObjectTokens; } });
10
+ Object.defineProperty(exports, "truncateToTokenBudget", { enumerable: true, get: function () { return token_counter_js_1.truncateToTokenBudget; } });
11
+ Object.defineProperty(exports, "checkTokenBudget", { enumerable: true, get: function () { return token_counter_js_1.checkTokenBudget; } });
12
+ var formatter_js_1 = require("./formatter.js");
13
+ Object.defineProperty(exports, "filterByVerbosity", { enumerable: true, get: function () { return formatter_js_1.filterByVerbosity; } });
14
+ Object.defineProperty(exports, "formatList", { enumerable: true, get: function () { return formatter_js_1.formatList; } });
15
+ Object.defineProperty(exports, "formatCompact", { enumerable: true, get: function () { return formatter_js_1.formatCompact; } });
16
+ Object.defineProperty(exports, "wrapResult", { enumerable: true, get: function () { return formatter_js_1.wrapResult; } });
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;AAAA,uBAAuB;AACvB,yCAAqC;AAA5B,mGAAA,MAAM,OAAA;AAGf,uDAK4B;AAJ1B,kHAAA,cAAc,OAAA;AACd,wHAAA,oBAAoB,OAAA;AACpB,yHAAA,qBAAqB,OAAA;AACrB,oHAAA,gBAAgB,OAAA;AAIlB,+CAKwB;AAJtB,iHAAA,iBAAiB,OAAA;AACjB,0GAAA,UAAU,OAAA;AACV,6GAAA,aAAa,OAAA;AACb,0GAAA,UAAU,OAAA"}
@@ -0,0 +1,21 @@
1
+ export type LogLevel = 'debug' | 'info' | 'warn' | 'error';
2
+ export interface LogEntry {
3
+ level: LogLevel;
4
+ message: string;
5
+ timestamp: number;
6
+ args?: unknown[];
7
+ }
8
+ declare class Logger {
9
+ private level;
10
+ constructor(level?: LogLevel);
11
+ private shouldLog;
12
+ private format;
13
+ debug(message: string, ...args: unknown[]): void;
14
+ info(message: string, ...args: unknown[]): void;
15
+ warn(message: string, ...args: unknown[]): void;
16
+ error(message: string, ...args: unknown[]): void;
17
+ setLevel(level: LogLevel): void;
18
+ }
19
+ export declare const logger: Logger;
20
+ export {};
21
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;CAClB;AAED,cAAM,MAAM;IACV,OAAO,CAAC,KAAK,CAAW;gBAEZ,KAAK,GAAE,QAAiB;IAIpC,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,MAAM;IAMd,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAMhD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAM/C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAM/C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAMhD,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;CAGhC;AAGD,eAAO,MAAM,MAAM,QAElB,CAAC"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.logger = void 0;
4
+ class Logger {
5
+ level;
6
+ constructor(level = 'info') {
7
+ this.level = level;
8
+ }
9
+ shouldLog(level) {
10
+ const levels = ['debug', 'info', 'warn', 'error'];
11
+ return levels.indexOf(level) >= levels.indexOf(this.level);
12
+ }
13
+ format(level, message, args) {
14
+ const timestamp = new Date().toISOString();
15
+ const argsStr = args.length > 0 ? ' ' + args.map(a => typeof a === 'object' ? JSON.stringify(a) : String(a)).join(' ') : '';
16
+ return `[${timestamp}] [${level.toUpperCase()}] ${message}${argsStr}`;
17
+ }
18
+ debug(message, ...args) {
19
+ if (this.shouldLog('debug')) {
20
+ process.stderr.write(this.format('debug', message, args) + '\n');
21
+ }
22
+ }
23
+ info(message, ...args) {
24
+ if (this.shouldLog('info')) {
25
+ process.stderr.write(this.format('info', message, args) + '\n');
26
+ }
27
+ }
28
+ warn(message, ...args) {
29
+ if (this.shouldLog('warn')) {
30
+ process.stderr.write(this.format('warn', message, args) + '\n');
31
+ }
32
+ }
33
+ error(message, ...args) {
34
+ if (this.shouldLog('error')) {
35
+ process.stderr.write(this.format('error', message, args) + '\n');
36
+ }
37
+ }
38
+ setLevel(level) {
39
+ this.level = level;
40
+ }
41
+ }
42
+ // Singleton logger
43
+ exports.logger = new Logger(process.env.LOG_LEVEL ?? 'info');
44
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":";;;AAUA,MAAM,MAAM;IACF,KAAK,CAAW;IAExB,YAAY,QAAkB,MAAM;QAClC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAEO,SAAS,CAAC,KAAe;QAC/B,MAAM,MAAM,GAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAC9D,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7D,CAAC;IAEO,MAAM,CAAC,KAAe,EAAE,OAAe,EAAE,IAAe;QAC9D,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5H,OAAO,IAAI,SAAS,MAAM,KAAK,CAAC,WAAW,EAAE,KAAK,OAAO,GAAG,OAAO,EAAE,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,GAAG,IAAe;QACvC,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,GAAG,IAAe;QACtC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,GAAG,IAAe;QACtC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,GAAG,IAAe;QACvC,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,KAAe;QACtB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AAED,mBAAmB;AACN,QAAA,MAAM,GAAG,IAAI,MAAM,CAC7B,OAAO,CAAC,GAAG,CAAC,SAAkC,IAAI,MAAM,CAC1D,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Rough token estimation: ~4 chars per token for English text
3
+ * This is a fast approximation — good enough for budgeting purposes.
4
+ */
5
+ export declare function estimateTokens(text: string): number;
6
+ /**
7
+ * Estimate tokens for a JSON-serializable object
8
+ */
9
+ export declare function estimateObjectTokens(obj: unknown): number;
10
+ /**
11
+ * Truncate text to fit within a token budget
12
+ */
13
+ export declare function truncateToTokenBudget(text: string, maxTokens: number): string;
14
+ /**
15
+ * Token budget summary for a response object
16
+ */
17
+ export interface TokenBudgetSummary {
18
+ estimated: number;
19
+ withinBudget: boolean;
20
+ budget: number;
21
+ efficiency: number;
22
+ }
23
+ export declare function checkTokenBudget(obj: unknown, budget?: number): TokenBudgetSummary;
24
+ //# sourceMappingURL=token-counter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-counter.d.ts","sourceRoot":"","sources":["../../src/utils/token-counter.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CASnD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAEzD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAO7E;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,GAAE,MAAa,GAAG,kBAAkB,CAQxF"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ // Token counter utility - estimates token usage to help minimize context usage
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.estimateTokens = estimateTokens;
5
+ exports.estimateObjectTokens = estimateObjectTokens;
6
+ exports.truncateToTokenBudget = truncateToTokenBudget;
7
+ exports.checkTokenBudget = checkTokenBudget;
8
+ /**
9
+ * Rough token estimation: ~4 chars per token for English text
10
+ * This is a fast approximation — good enough for budgeting purposes.
11
+ */
12
+ function estimateTokens(text) {
13
+ if (!text)
14
+ return 0;
15
+ // Words count more accurately: avg 1.3 tokens per word
16
+ const words = text.trim().split(/\s+/).filter(w => w.length > 0);
17
+ const chars = text.length;
18
+ // Use the average of char-based and word-based estimates
19
+ const charEstimate = Math.ceil(chars / 4);
20
+ const wordEstimate = Math.ceil(words.length * 1.3);
21
+ return Math.ceil((charEstimate + wordEstimate) / 2);
22
+ }
23
+ /**
24
+ * Estimate tokens for a JSON-serializable object
25
+ */
26
+ function estimateObjectTokens(obj) {
27
+ return estimateTokens(JSON.stringify(obj));
28
+ }
29
+ /**
30
+ * Truncate text to fit within a token budget
31
+ */
32
+ function truncateToTokenBudget(text, maxTokens) {
33
+ const current = estimateTokens(text);
34
+ if (current <= maxTokens)
35
+ return text;
36
+ // Estimate how many chars we can keep
37
+ const charBudget = Math.floor(maxTokens * 4);
38
+ return text.slice(0, charBudget) + '... [truncated]';
39
+ }
40
+ function checkTokenBudget(obj, budget = 2000) {
41
+ const estimated = estimateObjectTokens(obj);
42
+ return {
43
+ estimated,
44
+ withinBudget: estimated <= budget,
45
+ budget,
46
+ efficiency: Math.min(budget / Math.max(estimated, 1), 1)
47
+ };
48
+ }
49
+ //# sourceMappingURL=token-counter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-counter.js","sourceRoot":"","sources":["../../src/utils/token-counter.ts"],"names":[],"mappings":";AAAA,+EAA+E;;AAM/E,wCASC;AAKD,oDAEC;AAKD,sDAOC;AAYD,4CAQC;AApDD;;;GAGG;AACH,SAAgB,cAAc,CAAC,IAAY;IACzC,IAAI,CAAC,IAAI;QAAE,OAAO,CAAC,CAAC;IACpB,uDAAuD;IACvD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACjE,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;IAC1B,yDAAyD;IACzD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC1C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;IACnD,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;AACtD,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAAC,GAAY;IAC/C,OAAO,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CAAC,IAAY,EAAE,SAAiB;IACnE,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,OAAO,IAAI,SAAS;QAAE,OAAO,IAAI,CAAC;IAEtC,sCAAsC;IACtC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;IAC7C,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,iBAAiB,CAAC;AACvD,CAAC;AAYD,SAAgB,gBAAgB,CAAC,GAAY,EAAE,SAAiB,IAAI;IAClE,MAAM,SAAS,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAC5C,OAAO;QACL,SAAS;QACT,YAAY,EAAE,SAAS,IAAI,MAAM;QACjC,MAAM;QACN,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;KACzD,CAAC;AACJ,CAAC"}