speccore 7.1.0 → 7.2.1

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 (64) hide show
  1. package/.agents/skills/spec-ask/SKILL.md +10 -5
  2. package/README.md +24 -0
  3. package/dist/cli.js +4 -0
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/analyze.d.ts +6 -0
  6. package/dist/commands/analyze.d.ts.map +1 -1
  7. package/dist/commands/analyze.js +607 -56
  8. package/dist/commands/analyze.js.map +1 -1
  9. package/dist/commands/ask.d.ts +1 -1
  10. package/dist/commands/ask.d.ts.map +1 -1
  11. package/dist/commands/ask.js +2 -2
  12. package/dist/commands/ask.js.map +1 -1
  13. package/dist/commands/config.js +2 -2
  14. package/dist/commands/config.js.map +1 -1
  15. package/dist/commands/dev.js +30 -8
  16. package/dist/commands/dev.js.map +1 -1
  17. package/dist/commands/init.js +16 -276
  18. package/dist/commands/init.js.map +1 -1
  19. package/dist/commands/iteration-from-global.js +2 -2
  20. package/dist/commands/prompts.d.ts +7 -0
  21. package/dist/commands/prompts.d.ts.map +1 -1
  22. package/dist/commands/prompts.js +650 -52
  23. package/dist/commands/prompts.js.map +1 -1
  24. package/dist/commands/status.d.ts.map +1 -1
  25. package/dist/commands/status.js +149 -0
  26. package/dist/commands/status.js.map +1 -1
  27. package/dist/core/ask-engine.d.ts.map +1 -1
  28. package/dist/core/ask-engine.js +58 -3
  29. package/dist/core/ask-engine.js.map +1 -1
  30. package/dist/core/change-impact-global.d.ts +20 -0
  31. package/dist/core/change-impact-global.d.ts.map +1 -0
  32. package/dist/core/change-impact-global.js +130 -0
  33. package/dist/core/change-impact-global.js.map +1 -0
  34. package/dist/core/dev-llm.d.ts +10 -0
  35. package/dist/core/dev-llm.d.ts.map +1 -1
  36. package/dist/core/dev-llm.js.map +1 -1
  37. package/dist/core/doc-cross-reference.d.ts +10 -0
  38. package/dist/core/doc-cross-reference.d.ts.map +1 -0
  39. package/dist/core/doc-cross-reference.js +108 -0
  40. package/dist/core/doc-cross-reference.js.map +1 -0
  41. package/dist/core/doc-quality-gate.d.ts +28 -0
  42. package/dist/core/doc-quality-gate.d.ts.map +1 -0
  43. package/dist/core/doc-quality-gate.js +209 -0
  44. package/dist/core/doc-quality-gate.js.map +1 -0
  45. package/dist/core/incremental-analyzer.js +1 -1
  46. package/dist/core/incremental-analyzer.js.map +1 -1
  47. package/dist/core/intent-recognition.d.ts.map +1 -1
  48. package/dist/core/intent-recognition.js +61 -2
  49. package/dist/core/intent-recognition.js.map +1 -1
  50. package/dist/core/iteration-cache.d.ts +48 -0
  51. package/dist/core/iteration-cache.d.ts.map +1 -0
  52. package/dist/core/iteration-cache.js +148 -0
  53. package/dist/core/iteration-cache.js.map +1 -0
  54. package/dist/core/platform-addition.js +3 -3
  55. package/dist/core/platform-addition.js.map +1 -1
  56. package/dist/core/semantic-locator.d.ts +42 -0
  57. package/dist/core/semantic-locator.d.ts.map +1 -0
  58. package/dist/core/semantic-locator.js +290 -0
  59. package/dist/core/semantic-locator.js.map +1 -0
  60. package/dist/core/structured-extractor.d.ts +89 -0
  61. package/dist/core/structured-extractor.d.ts.map +1 -0
  62. package/dist/core/structured-extractor.js +428 -0
  63. package/dist/core/structured-extractor.js.map +1 -0
  64. package/package.json +1 -1
@@ -0,0 +1,428 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.extractStructuredData = extractStructuredData;
37
+ exports.loadStructuredData = loadStructuredData;
38
+ /**
39
+ * structured-extractor — 结构化代码数据提取器
40
+ * v7.2.0+
41
+ *
42
+ * 基于 code-scanner 和 code-graph/parser,提取 AI 可消费的结构化数据:
43
+ * - API 接口清单(Controller/Handler 中的路由定义)
44
+ * - Entity/Model 定义(字段、类型、关系)
45
+ * - 路由配置(前端页面路由映射)
46
+ * - 依赖关系(模块间 import 依赖)
47
+ * - 组件树(前端组件层级)
48
+ *
49
+ * 输出: .speccore/cache/structured-data.json
50
+ * 供 analyze 命令的 Layer 1-4 Prompt 直接引用,减少 AI 读源码的 Token 消耗。
51
+ */
52
+ const fs_extra_1 = require("fs-extra");
53
+ const path_1 = require("path");
54
+ const ts = __importStar(require("typescript"));
55
+ const logger_1 = require("../utils/logger");
56
+ const CACHE_PATH = (0, path_1.join)('.speccore', 'cache', 'structured-data.json');
57
+ // ── TypeScript AST 辅助 ──
58
+ function isTsOrJs(filePath) {
59
+ return /\.(ts|tsx|js|jsx|mts|cts)$/i.test(filePath);
60
+ }
61
+ function getScriptKind(filePath) {
62
+ if (/\.tsx$/i.test(filePath))
63
+ return ts.ScriptKind.TSX;
64
+ if (/\.jsx$/i.test(filePath))
65
+ return ts.ScriptKind.JSX;
66
+ if (/\.(js|mjs|cjs)$/i.test(filePath))
67
+ return ts.ScriptKind.JS;
68
+ return ts.ScriptKind.TS;
69
+ }
70
+ function getJSDoc(node, sourceFile) {
71
+ const jsDocs = node.jsDoc;
72
+ if (!jsDocs || !Array.isArray(jsDocs))
73
+ return '';
74
+ const text = jsDocs[0]?.getText(sourceFile) || '';
75
+ return text
76
+ .replace(/\/\*\*/g, '')
77
+ .replace(/\*\//g, '')
78
+ .replace(/^\s*\*\s?/gm, '')
79
+ .replace(/\s+/g, ' ')
80
+ .trim()
81
+ .slice(0, 200);
82
+ }
83
+ // ── 提取器实现 ──
84
+ /**
85
+ * 从 TypeScript 源码提取 API 端点
86
+ */
87
+ function extractApisFromFile(filePath, sourceFile, relPath) {
88
+ const apis = [];
89
+ function visit(node) {
90
+ // NestJS: @Controller() + @Get/@Post/@Put/@Delete/@Patch
91
+ if (ts.isMethodDeclaration(node) || ts.isFunctionDeclaration(node)) {
92
+ const decorators = ts.canHaveDecorators(node) ? ts.getDecorators(node) : undefined;
93
+ if (decorators && decorators.length > 0) {
94
+ for (const dec of decorators) {
95
+ const decName = ts.isCallExpression(dec.expression)
96
+ ? dec.expression.expression.getText(sourceFile)
97
+ : dec.expression.getText(sourceFile);
98
+ if (/^(Get|Post|Put|Delete|Patch)$/i.test(decName)) {
99
+ const pathArg = ts.isCallExpression(dec.expression)
100
+ ? dec.expression.arguments[0]?.getText(sourceFile).replace(/['"]/g, '')
101
+ : '';
102
+ const handlerName = node.name?.getText(sourceFile) || 'anonymous';
103
+ const params = node.parameters.map(p => p.name.getText(sourceFile));
104
+ const returnType = node.type?.getText(sourceFile);
105
+ apis.push({
106
+ path: pathArg || '/',
107
+ method: decName.toUpperCase(),
108
+ handler: handlerName,
109
+ filePath: relPath,
110
+ line: sourceFile.getLineAndCharacterOfPosition(node.getStart(sourceFile)).line + 1,
111
+ parameters: params,
112
+ responseType: returnType,
113
+ decorators: decorators.map(d => d.getText(sourceFile).slice(0, 50)),
114
+ description: getJSDoc(node, sourceFile),
115
+ });
116
+ }
117
+ }
118
+ }
119
+ }
120
+ // Express/Koa/Fastify: router.get('/path', handler)
121
+ if (ts.isCallExpression(node)) {
122
+ const expr = node.expression.getText(sourceFile);
123
+ const match = expr.match(/^(?:router|app|route)\.?(get|post|put|delete|patch)$/i);
124
+ if (match && node.arguments.length >= 1) {
125
+ const pathArg = node.arguments[0].getText(sourceFile).replace(/['"`]/g, '');
126
+ const handlerArg = node.arguments[1];
127
+ const handlerName = handlerArg
128
+ ? (ts.isIdentifier(handlerArg) ? handlerArg.getText(sourceFile) : 'anonymous')
129
+ : 'anonymous';
130
+ apis.push({
131
+ path: pathArg,
132
+ method: match[1].toUpperCase(),
133
+ handler: handlerName,
134
+ filePath: relPath,
135
+ line: sourceFile.getLineAndCharacterOfPosition(node.getStart(sourceFile)).line + 1,
136
+ description: '',
137
+ });
138
+ }
139
+ }
140
+ ts.forEachChild(node, visit);
141
+ }
142
+ visit(sourceFile);
143
+ return apis;
144
+ }
145
+ /**
146
+ * 从 TypeScript 源码提取 Entity/Model 定义
147
+ */
148
+ function extractEntitiesFromFile(filePath, sourceFile, relPath) {
149
+ const entities = [];
150
+ function visit(node) {
151
+ if (ts.isClassDeclaration(node)) {
152
+ const className = node.name?.getText(sourceFile);
153
+ if (!className)
154
+ return;
155
+ // 检测是否是 Entity(有 @Entity 装饰器或继承 BaseEntity)
156
+ const decorators = ts.canHaveDecorators(node) ? ts.getDecorators(node) : undefined;
157
+ const isEntity = decorators?.some(d => {
158
+ const name = ts.isCallExpression(d.expression)
159
+ ? d.expression.expression.getText(sourceFile)
160
+ : d.expression.getText(sourceFile);
161
+ return /^(Entity|Table|Document|Model|Schema)$/i.test(name);
162
+ });
163
+ const heritage = node.heritageClauses?.some(h => h.types.some(t => /BaseEntity|Model|Document/.test(t.getText(sourceFile))));
164
+ if (!isEntity && !heritage)
165
+ return;
166
+ const fields = [];
167
+ const relations = [];
168
+ for (const member of node.members) {
169
+ if (ts.isPropertyDeclaration(member)) {
170
+ const fieldName = member.name.getText(sourceFile);
171
+ const fieldType = member.type?.getText(sourceFile) || 'unknown';
172
+ const isOptional = member.questionToken !== undefined;
173
+ const isPrimary = decorators?.some(d => d.getText(sourceFile).includes('@PrimaryGeneratedColumn') ||
174
+ d.getText(sourceFile).includes('@PrimaryColumn'));
175
+ // 检测关系装饰器
176
+ const fieldDecs = ts.canHaveDecorators(member) ? ts.getDecorators(member) : undefined;
177
+ if (fieldDecs) {
178
+ for (const d of fieldDecs) {
179
+ const decText = d.getText(sourceFile);
180
+ const relationMatch = decText.match(/@(ManyToOne|OneToMany|ManyToMany|OneToOne)/);
181
+ if (relationMatch) {
182
+ const targetType = member.type?.getText(sourceFile) || 'unknown';
183
+ relations.push({
184
+ target: targetType.replace(/[\[\]]/g, ''),
185
+ type: relationMatch[1],
186
+ field: fieldName,
187
+ });
188
+ }
189
+ }
190
+ }
191
+ fields.push({
192
+ name: fieldName,
193
+ type: fieldType,
194
+ nullable: isOptional,
195
+ isPrimaryKey: isPrimary,
196
+ description: getJSDoc(member, sourceFile),
197
+ });
198
+ }
199
+ }
200
+ // 提取表名(从 @Entity('name'))
201
+ let tableName;
202
+ if (decorators) {
203
+ for (const d of decorators) {
204
+ if (ts.isCallExpression(d.expression)) {
205
+ const decName = d.expression.expression.getText(sourceFile);
206
+ if (/^Entity$/i.test(decName) && d.expression.arguments.length > 0) {
207
+ tableName = d.expression.arguments[0].getText(sourceFile).replace(/['"]/g, '');
208
+ }
209
+ }
210
+ }
211
+ }
212
+ entities.push({
213
+ name: className,
214
+ tableName: tableName || className,
215
+ filePath: relPath,
216
+ line: sourceFile.getLineAndCharacterOfPosition(node.getStart(sourceFile)).line + 1,
217
+ fields,
218
+ relations: relations.length > 0 ? relations : undefined,
219
+ description: getJSDoc(node, sourceFile),
220
+ });
221
+ }
222
+ ts.forEachChild(node, visit);
223
+ }
224
+ visit(sourceFile);
225
+ return entities;
226
+ }
227
+ /**
228
+ * 从前端路由配置文件提取路由
229
+ */
230
+ function extractRoutesFromFile(filePath, sourceFile, relPath) {
231
+ const routes = [];
232
+ function visit(node) {
233
+ // React Router / Vue Router 配置数组
234
+ if (ts.isObjectLiteralExpression(node)) {
235
+ const pathProp = node.properties.find(p => ts.isPropertyAssignment(p) && p.name.getText(sourceFile) === 'path');
236
+ const componentProp = node.properties.find(p => ts.isPropertyAssignment(p) && (p.name.getText(sourceFile) === 'component' || p.name.getText(sourceFile) === 'element'));
237
+ const lazyProp = node.properties.find(p => ts.isPropertyAssignment(p) && p.name.getText(sourceFile) === 'lazy');
238
+ if (pathProp) {
239
+ const path = pathProp.initializer.getText(sourceFile).replace(/['"]/g, '');
240
+ const component = componentProp?.initializer.getText(sourceFile).replace(/[<>]/g, '');
241
+ routes.push({
242
+ path,
243
+ component: component || undefined,
244
+ lazy: !!lazyProp,
245
+ filePath: relPath,
246
+ line: sourceFile.getLineAndCharacterOfPosition(node.getStart(sourceFile)).line + 1,
247
+ });
248
+ }
249
+ }
250
+ ts.forEachChild(node, visit);
251
+ }
252
+ visit(sourceFile);
253
+ return routes;
254
+ }
255
+ /**
256
+ * 提取组件信息
257
+ */
258
+ function extractComponentsFromFile(filePath, sourceFile, relPath) {
259
+ const components = [];
260
+ function visit(node) {
261
+ // React 函数组件
262
+ if (ts.isFunctionDeclaration(node) || ts.isVariableStatement(node)) {
263
+ const name = ts.isFunctionDeclaration(node)
264
+ ? node.name?.getText(sourceFile)
265
+ : node.declarationList.declarations[0].name?.getText(sourceFile);
266
+ if (name && /^[A-Z]/.test(name)) {
267
+ const props = [];
268
+ if (ts.isFunctionDeclaration(node) && node.parameters.length > 0) {
269
+ const param = node.parameters[0];
270
+ if (param.type && ts.isTypeLiteralNode(param.type)) {
271
+ for (const member of param.type.members) {
272
+ if (ts.isPropertySignature(member)) {
273
+ props.push(member.name.getText(sourceFile));
274
+ }
275
+ }
276
+ }
277
+ }
278
+ components.push({
279
+ name,
280
+ filePath: relPath,
281
+ line: sourceFile.getLineAndCharacterOfPosition(node.getStart(sourceFile)).line + 1,
282
+ props: props.length > 0 ? props : undefined,
283
+ description: getJSDoc(node, sourceFile),
284
+ });
285
+ }
286
+ }
287
+ // Vue 组件(.vue 文件需要单独处理,这里只处理 TS 中的 defineComponent)
288
+ if (ts.isCallExpression(node)) {
289
+ const expr = node.expression.getText(sourceFile);
290
+ if (expr === 'defineComponent' && node.arguments.length > 0) {
291
+ const arg = node.arguments[0];
292
+ if (ts.isObjectLiteralExpression(arg)) {
293
+ const nameProp = arg.properties.find(p => ts.isPropertyAssignment(p) && p.name.getText(sourceFile) === 'name');
294
+ const name = nameProp?.initializer.getText(sourceFile).replace(/['"]/g, '');
295
+ if (name) {
296
+ components.push({
297
+ name,
298
+ filePath: relPath,
299
+ line: sourceFile.getLineAndCharacterOfPosition(node.getStart(sourceFile)).line + 1,
300
+ description: getJSDoc(node, sourceFile),
301
+ });
302
+ }
303
+ }
304
+ }
305
+ }
306
+ ts.forEachChild(node, visit);
307
+ }
308
+ visit(sourceFile);
309
+ return components;
310
+ }
311
+ // ── 主入口 ──
312
+ /**
313
+ * 扫描项目源码,提取结构化数据
314
+ * @param projectRoot 项目根目录
315
+ * @param sourcePaths 源码路径列表(从 CONSTITUTION.md 读取)
316
+ */
317
+ async function extractStructuredData(projectRoot, sourcePaths) {
318
+ const data = {
319
+ generatedAt: new Date().toISOString(),
320
+ projectRoot,
321
+ endpoints: {},
322
+ dependencies: [],
323
+ stats: { totalApis: 0, totalEntities: 0, totalRoutes: 0, totalComponents: 0, totalFiles: 0 },
324
+ };
325
+ let totalFiles = 0;
326
+ for (const srcPath of sourcePaths) {
327
+ const absPath = (0, path_1.join)(projectRoot, srcPath);
328
+ if (!(await (0, fs_extra_1.pathExists)(absPath)))
329
+ continue;
330
+ // 推断端名(从路径)
331
+ const platform = inferPlatform(srcPath);
332
+ if (!data.endpoints[platform]) {
333
+ data.endpoints[platform] = { apis: [], entities: [], routes: [], components: [] };
334
+ }
335
+ const files = await collectTsFiles(absPath);
336
+ for (const filePath of files) {
337
+ totalFiles++;
338
+ const relPath = (0, path_1.relative)(projectRoot, filePath);
339
+ const content = await (0, fs_extra_1.readFile)(filePath, 'utf-8');
340
+ const sourceFile = ts.createSourceFile(filePath, content, ts.ScriptTarget.ES2020, true, getScriptKind(filePath));
341
+ // 提取各类数据
342
+ const apis = extractApisFromFile(filePath, sourceFile, relPath);
343
+ const entities = extractEntitiesFromFile(filePath, sourceFile, relPath);
344
+ const routes = extractRoutesFromFile(filePath, sourceFile, relPath);
345
+ const components = extractComponentsFromFile(filePath, sourceFile, relPath);
346
+ data.endpoints[platform].apis.push(...apis);
347
+ data.endpoints[platform].entities.push(...entities);
348
+ data.endpoints[platform].routes.push(...routes);
349
+ data.endpoints[platform].components.push(...components);
350
+ // 提取 import 依赖
351
+ const imports = extractImports(content, relPath);
352
+ data.dependencies.push(...imports);
353
+ }
354
+ }
355
+ // 统计
356
+ for (const platform of Object.keys(data.endpoints)) {
357
+ const ep = data.endpoints[platform];
358
+ data.stats.totalApis += ep.apis.length;
359
+ data.stats.totalEntities += ep.entities.length;
360
+ data.stats.totalRoutes += ep.routes.length;
361
+ data.stats.totalComponents += ep.components.length;
362
+ }
363
+ data.stats.totalFiles = totalFiles;
364
+ // 写入缓存
365
+ await (0, fs_extra_1.ensureDir)((0, path_1.dirname)(CACHE_PATH));
366
+ await (0, fs_extra_1.writeFile)(CACHE_PATH, JSON.stringify(data, null, 2));
367
+ logger_1.logger.info(`📊 结构化数据提取完成: ${CACHE_PATH}`);
368
+ logger_1.logger.info(` API: ${data.stats.totalApis}, Entity: ${data.stats.totalEntities}, Route: ${data.stats.totalRoutes}, Component: ${data.stats.totalComponents}, Files: ${totalFiles}`);
369
+ return data;
370
+ }
371
+ /**
372
+ * 加载已提取的结构化数据
373
+ */
374
+ async function loadStructuredData() {
375
+ if (!(await (0, fs_extra_1.pathExists)(CACHE_PATH)))
376
+ return null;
377
+ try {
378
+ const content = await (0, fs_extra_1.readFile)(CACHE_PATH, 'utf-8');
379
+ return JSON.parse(content);
380
+ }
381
+ catch {
382
+ return null;
383
+ }
384
+ }
385
+ // ── 内部辅助 ──
386
+ async function collectTsFiles(dir) {
387
+ const results = [];
388
+ try {
389
+ const entries = await (0, fs_extra_1.readdir)(dir, { withFileTypes: true });
390
+ for (const entry of entries) {
391
+ const fullPath = (0, path_1.join)(dir, entry.name);
392
+ if (entry.isDirectory() && !entry.name.startsWith('.') && entry.name !== 'node_modules') {
393
+ results.push(...await collectTsFiles(fullPath));
394
+ }
395
+ else if (entry.isFile() && isTsOrJs(fullPath)) {
396
+ results.push(fullPath);
397
+ }
398
+ }
399
+ }
400
+ catch { /* ignore */ }
401
+ return results;
402
+ }
403
+ function inferPlatform(path) {
404
+ const lower = path.toLowerCase();
405
+ if (/admin|web|frontend|client|h5/.test(lower))
406
+ return 'frontend';
407
+ if (/api|server|backend|service/.test(lower))
408
+ return 'backend';
409
+ if (/mobile|app|ios|android/.test(lower))
410
+ return 'mobile';
411
+ if (/cli|command|bin/.test(lower))
412
+ return 'cli';
413
+ if (/shared|common|lib|utils/.test(lower))
414
+ return 'shared';
415
+ return 'unknown';
416
+ }
417
+ function extractImports(content, fromPath) {
418
+ const edges = [];
419
+ const lines = content.split('\n');
420
+ for (const line of lines) {
421
+ const match = line.match(/import\s+.*?\s+from\s+['"](\.\/[^'"]+)['"]/);
422
+ if (match) {
423
+ edges.push({ from: fromPath, to: match[1], type: 'import' });
424
+ }
425
+ }
426
+ return edges;
427
+ }
428
+ //# sourceMappingURL=structured-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structured-extractor.js","sourceRoot":"","sources":["../../src/core/structured-extractor.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "speccore",
3
- "version": "7.1.0",
3
+ "version": "7.2.1",
4
4
  "description": "SpecCore - Code by Spec, Not by Vibe.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",