@aiready/core 0.24.6 → 0.24.8

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/dist/index.js CHANGED
@@ -2214,66 +2214,8 @@ __export(index_exports, {
2214
2214
  });
2215
2215
  module.exports = __toCommonJS(index_exports);
2216
2216
 
2217
- // src/types/business.ts
2218
- var import_zod = require("zod");
2219
- var LeadSource = /* @__PURE__ */ ((LeadSource2) => {
2220
- LeadSource2["ClawMoreHero"] = "clawmore-hero";
2221
- LeadSource2["ClawMoreWaitlist"] = "clawmore-waitlist";
2222
- LeadSource2["ClawMoreBeta"] = "clawmore-beta";
2223
- LeadSource2["AiReadyPlatform"] = "aiready-platform";
2224
- return LeadSource2;
2225
- })(LeadSource || {});
2226
- var LeadSourceSchema = import_zod.z.nativeEnum(LeadSource);
2227
- var LeadSchema = import_zod.z.object({
2228
- id: import_zod.z.string(),
2229
- email: import_zod.z.string().email(),
2230
- name: import_zod.z.string().min(1),
2231
- interest: import_zod.z.string().default("General"),
2232
- notes: import_zod.z.string().optional(),
2233
- timestamp: import_zod.z.string().datetime(),
2234
- source: LeadSourceSchema,
2235
- status: import_zod.z.enum(["new", "contacted", "qualified", "converted", "archived"]).default("new")
2236
- });
2237
- var LeadSubmissionSchema = LeadSchema.omit({
2238
- id: true,
2239
- timestamp: true,
2240
- status: true
2241
- });
2242
- var ManagedAccountSchema = import_zod.z.object({
2243
- id: import_zod.z.string(),
2244
- // Internal UUID
2245
- accountId: import_zod.z.string(),
2246
- // AWS Account ID
2247
- userId: import_zod.z.string(),
2248
- // Owner (caopengau@gmail.com)
2249
- stripeSubscriptionId: import_zod.z.string(),
2250
- // AI Token Management
2251
- tokenStrategy: import_zod.z.enum(["managed", "byok"]).default("managed"),
2252
- byokConfig: import_zod.z.object({
2253
- openaiKey: import_zod.z.string().optional(),
2254
- anthropicKey: import_zod.z.string().optional(),
2255
- openrouterKey: import_zod.z.string().optional()
2256
- }).optional(),
2257
- // Financials (in cents)
2258
- baseFeeCents: import_zod.z.number().default(2900),
2259
- includedComputeCents: import_zod.z.number().default(1500),
2260
- // $15.00 AWS included
2261
- includedTokenCents: import_zod.z.number().default(500),
2262
- // $5.00 Managed Tokens included
2263
- // Pre-paid Balance (credits)
2264
- prepaidTokenBalanceCents: import_zod.z.number().default(0),
2265
- // Users buy these in $10 packs
2266
- currentMonthlyTokenSpendCents: import_zod.z.number().default(0),
2267
- // Governance
2268
- status: import_zod.z.enum(["provisioning", "active", "warning", "quarantined", "suspended"]).default("provisioning"),
2269
- lastCostSyncAt: import_zod.z.string().datetime().optional(),
2270
- region: import_zod.z.string().default("ap-southeast-2"),
2271
- // Alerting thresholds (percentage of includedComputeCents)
2272
- alertThresholds: import_zod.z.array(import_zod.z.number()).default([50, 80, 100, 150])
2273
- });
2274
-
2275
2217
  // src/types/enums.ts
2276
- var import_zod2 = require("zod");
2218
+ var import_zod = require("zod");
2277
2219
  var Severity = /* @__PURE__ */ ((Severity2) => {
2278
2220
  Severity2["Critical"] = "critical";
2279
2221
  Severity2["Major"] = "major";
@@ -2281,7 +2223,7 @@ var Severity = /* @__PURE__ */ ((Severity2) => {
2281
2223
  Severity2["Info"] = "info";
2282
2224
  return Severity2;
2283
2225
  })(Severity || {});
2284
- var SeveritySchema = import_zod2.z.nativeEnum(Severity);
2226
+ var SeveritySchema = import_zod.z.nativeEnum(Severity);
2285
2227
  var ToolName = /* @__PURE__ */ ((ToolName2) => {
2286
2228
  ToolName2["PatternDetect"] = "pattern-detect";
2287
2229
  ToolName2["ContextAnalyzer"] = "context-analyzer";
@@ -2299,7 +2241,7 @@ var ToolName = /* @__PURE__ */ ((ToolName2) => {
2299
2241
  ToolName2["ContractEnforcement"] = "contract-enforcement";
2300
2242
  return ToolName2;
2301
2243
  })(ToolName || {});
2302
- var ToolNameSchema = import_zod2.z.nativeEnum(ToolName);
2244
+ var ToolNameSchema = import_zod.z.nativeEnum(ToolName);
2303
2245
  var FRIENDLY_TOOL_NAMES = {
2304
2246
  ["pattern-detect" /* PatternDetect */]: "Semantic Duplicates",
2305
2247
  ["context-analyzer" /* ContextAnalyzer */]: "Context Fragmentation",
@@ -2338,14 +2280,14 @@ var IssueType = /* @__PURE__ */ ((IssueType2) => {
2338
2280
  IssueType2["ContractGap"] = "contract-gap";
2339
2281
  return IssueType2;
2340
2282
  })(IssueType || {});
2341
- var IssueTypeSchema = import_zod2.z.nativeEnum(IssueType);
2283
+ var IssueTypeSchema = import_zod.z.nativeEnum(IssueType);
2342
2284
  var AnalysisStatus = /* @__PURE__ */ ((AnalysisStatus2) => {
2343
2285
  AnalysisStatus2["Processing"] = "processing";
2344
2286
  AnalysisStatus2["Completed"] = "completed";
2345
2287
  AnalysisStatus2["Failed"] = "failed";
2346
2288
  return AnalysisStatus2;
2347
2289
  })(AnalysisStatus || {});
2348
- var AnalysisStatusSchema = import_zod2.z.nativeEnum(AnalysisStatus);
2290
+ var AnalysisStatusSchema = import_zod.z.nativeEnum(AnalysisStatus);
2349
2291
  var ModelTier = /* @__PURE__ */ ((ModelTier2) => {
2350
2292
  ModelTier2["Compact"] = "compact";
2351
2293
  ModelTier2["Standard"] = "standard";
@@ -2353,149 +2295,207 @@ var ModelTier = /* @__PURE__ */ ((ModelTier2) => {
2353
2295
  ModelTier2["Frontier"] = "frontier";
2354
2296
  return ModelTier2;
2355
2297
  })(ModelTier || {});
2356
- var ModelTierSchema = import_zod2.z.nativeEnum(ModelTier);
2298
+ var ModelTierSchema = import_zod.z.nativeEnum(ModelTier);
2357
2299
 
2358
2300
  // src/types/common.ts
2359
- var import_zod3 = require("zod");
2360
- var LocationSchema = import_zod3.z.object({
2361
- file: import_zod3.z.string(),
2362
- line: import_zod3.z.number(),
2363
- column: import_zod3.z.number().optional(),
2364
- endLine: import_zod3.z.number().optional(),
2365
- endColumn: import_zod3.z.number().optional()
2301
+ var import_zod2 = require("zod");
2302
+ var LocationSchema = import_zod2.z.object({
2303
+ file: import_zod2.z.string(),
2304
+ line: import_zod2.z.number(),
2305
+ column: import_zod2.z.number().optional(),
2306
+ endLine: import_zod2.z.number().optional(),
2307
+ endColumn: import_zod2.z.number().optional()
2366
2308
  });
2367
2309
 
2368
2310
  // src/types/schemas/issue.ts
2369
- var import_zod4 = require("zod");
2370
- var IssueSchema = import_zod4.z.object({
2311
+ var import_zod3 = require("zod");
2312
+ var IssueSchema = import_zod3.z.object({
2371
2313
  type: IssueTypeSchema,
2372
2314
  severity: SeveritySchema,
2373
- message: import_zod4.z.string(),
2315
+ message: import_zod3.z.string(),
2374
2316
  location: LocationSchema,
2375
- suggestion: import_zod4.z.string().optional()
2317
+ suggestion: import_zod3.z.string().optional()
2376
2318
  });
2377
2319
 
2378
2320
  // src/types/schemas/metrics.ts
2379
- var import_zod5 = require("zod");
2380
- var MetricsSchema = import_zod5.z.object({
2381
- tokenCost: import_zod5.z.number().optional(),
2382
- complexityScore: import_zod5.z.number().optional(),
2383
- consistencyScore: import_zod5.z.number().optional(),
2384
- docFreshnessScore: import_zod5.z.number().optional(),
2321
+ var import_zod4 = require("zod");
2322
+ var MetricsSchema = import_zod4.z.object({
2323
+ tokenCost: import_zod4.z.number().optional(),
2324
+ complexityScore: import_zod4.z.number().optional(),
2325
+ consistencyScore: import_zod4.z.number().optional(),
2326
+ docFreshnessScore: import_zod4.z.number().optional(),
2385
2327
  // AI agent readiness metrics (v0.12+)
2386
- aiSignalClarityScore: import_zod5.z.number().optional(),
2387
- agentGroundingScore: import_zod5.z.number().optional(),
2388
- testabilityScore: import_zod5.z.number().optional(),
2389
- docDriftScore: import_zod5.z.number().optional(),
2390
- dependencyHealthScore: import_zod5.z.number().optional(),
2328
+ aiSignalClarityScore: import_zod4.z.number().optional(),
2329
+ agentGroundingScore: import_zod4.z.number().optional(),
2330
+ testabilityScore: import_zod4.z.number().optional(),
2331
+ docDriftScore: import_zod4.z.number().optional(),
2332
+ dependencyHealthScore: import_zod4.z.number().optional(),
2391
2333
  modelContextTier: ModelTierSchema.optional(),
2392
2334
  // Business value metrics
2393
- estimatedMonthlyCost: import_zod5.z.number().optional(),
2394
- estimatedDeveloperHours: import_zod5.z.number().optional(),
2395
- comprehensionDifficultyIndex: import_zod5.z.number().optional(),
2335
+ estimatedMonthlyCost: import_zod4.z.number().optional(),
2336
+ estimatedDeveloperHours: import_zod4.z.number().optional(),
2337
+ comprehensionDifficultyIndex: import_zod4.z.number().optional(),
2396
2338
  // Extended metrics for specific spokes
2397
- totalSymbols: import_zod5.z.number().optional(),
2398
- totalExports: import_zod5.z.number().optional()
2339
+ totalSymbols: import_zod4.z.number().optional(),
2340
+ totalExports: import_zod4.z.number().optional()
2399
2341
  });
2400
2342
 
2401
2343
  // src/types/schemas/report.ts
2402
- var import_zod6 = require("zod");
2403
- var AnalysisResultSchema = import_zod6.z.object({
2404
- fileName: import_zod6.z.string(),
2405
- issues: import_zod6.z.array(IssueSchema),
2344
+ var import_zod5 = require("zod");
2345
+ var AnalysisResultSchema = import_zod5.z.object({
2346
+ fileName: import_zod5.z.string(),
2347
+ issues: import_zod5.z.array(IssueSchema),
2406
2348
  metrics: MetricsSchema
2407
2349
  });
2408
- var SpokeSummarySchema = import_zod6.z.object({
2409
- totalFiles: import_zod6.z.number().optional(),
2410
- totalIssues: import_zod6.z.number().optional(),
2411
- criticalIssues: import_zod6.z.number().optional(),
2412
- majorIssues: import_zod6.z.number().optional(),
2413
- score: import_zod6.z.number().optional()
2414
- }).catchall(import_zod6.z.any());
2415
- var SpokeOutputSchema = import_zod6.z.object({
2416
- results: import_zod6.z.array(AnalysisResultSchema),
2350
+ var SpokeSummarySchema = import_zod5.z.object({
2351
+ totalFiles: import_zod5.z.number().optional(),
2352
+ totalIssues: import_zod5.z.number().optional(),
2353
+ criticalIssues: import_zod5.z.number().optional(),
2354
+ majorIssues: import_zod5.z.number().optional(),
2355
+ score: import_zod5.z.number().optional()
2356
+ }).catchall(import_zod5.z.any());
2357
+ var SpokeOutputSchema = import_zod5.z.object({
2358
+ results: import_zod5.z.array(AnalysisResultSchema),
2417
2359
  summary: SpokeSummarySchema,
2418
- metadata: import_zod6.z.object({
2419
- toolName: import_zod6.z.string(),
2420
- version: import_zod6.z.string().optional(),
2421
- timestamp: import_zod6.z.string().optional(),
2422
- config: import_zod6.z.any().optional()
2423
- }).catchall(import_zod6.z.any()).optional()
2360
+ metadata: import_zod5.z.object({
2361
+ toolName: import_zod5.z.string(),
2362
+ version: import_zod5.z.string().optional(),
2363
+ timestamp: import_zod5.z.string().optional(),
2364
+ config: import_zod5.z.any().optional()
2365
+ }).catchall(import_zod5.z.any()).optional()
2424
2366
  });
2425
- var UnifiedReportSchema = import_zod6.z.object({
2426
- summary: import_zod6.z.object({
2427
- totalFiles: import_zod6.z.number(),
2428
- totalIssues: import_zod6.z.number(),
2429
- criticalIssues: import_zod6.z.number(),
2430
- majorIssues: import_zod6.z.number(),
2431
- businessImpact: import_zod6.z.object({
2432
- estimatedMonthlyWaste: import_zod6.z.number().optional(),
2433
- potentialSavings: import_zod6.z.number().optional(),
2434
- productivityHours: import_zod6.z.number().optional()
2367
+ var UnifiedReportSchema = import_zod5.z.object({
2368
+ summary: import_zod5.z.object({
2369
+ totalFiles: import_zod5.z.number(),
2370
+ totalIssues: import_zod5.z.number(),
2371
+ criticalIssues: import_zod5.z.number(),
2372
+ majorIssues: import_zod5.z.number(),
2373
+ businessImpact: import_zod5.z.object({
2374
+ estimatedMonthlyWaste: import_zod5.z.number().optional(),
2375
+ potentialSavings: import_zod5.z.number().optional(),
2376
+ productivityHours: import_zod5.z.number().optional()
2435
2377
  }).optional()
2436
2378
  }),
2437
- results: import_zod6.z.array(AnalysisResultSchema),
2438
- scoring: import_zod6.z.object({
2439
- overall: import_zod6.z.number(),
2440
- rating: import_zod6.z.string(),
2441
- timestamp: import_zod6.z.string(),
2442
- breakdown: import_zod6.z.array(
2443
- import_zod6.z.object({
2444
- toolName: import_zod6.z.union([ToolNameSchema, import_zod6.z.string()]),
2445
- score: import_zod6.z.number()
2446
- }).catchall(import_zod6.z.any())
2379
+ results: import_zod5.z.array(AnalysisResultSchema),
2380
+ scoring: import_zod5.z.object({
2381
+ overall: import_zod5.z.number(),
2382
+ rating: import_zod5.z.string(),
2383
+ timestamp: import_zod5.z.string(),
2384
+ breakdown: import_zod5.z.array(
2385
+ import_zod5.z.object({
2386
+ toolName: import_zod5.z.union([ToolNameSchema, import_zod5.z.string()]),
2387
+ score: import_zod5.z.number()
2388
+ }).catchall(import_zod5.z.any())
2447
2389
  )
2448
2390
  }).optional()
2449
- }).catchall(import_zod6.z.any());
2391
+ }).catchall(import_zod5.z.any());
2450
2392
 
2451
2393
  // src/types/schemas/config.ts
2452
- var import_zod7 = require("zod");
2453
- var AIReadyConfigSchema = import_zod7.z.object({
2394
+ var import_zod6 = require("zod");
2395
+ var AIReadyConfigSchema = import_zod6.z.object({
2454
2396
  /** Files or directories to exclude from scan */
2455
- exclude: import_zod7.z.array(import_zod7.z.string()).optional(),
2397
+ exclude: import_zod6.z.array(import_zod6.z.string()).optional(),
2456
2398
  /** Fail CI/CD if score below threshold (0-100) */
2457
- threshold: import_zod7.z.number().optional(),
2399
+ threshold: import_zod6.z.number().optional(),
2458
2400
  /** Fail on issues: critical, major, any */
2459
- failOn: import_zod7.z.enum(["critical", "major", "any", "none"]).optional(),
2401
+ failOn: import_zod6.z.enum(["critical", "major", "any", "none"]).optional(),
2460
2402
  /** Scan-specific configuration */
2461
- scan: import_zod7.z.object({
2462
- include: import_zod7.z.array(import_zod7.z.string()).optional(),
2463
- exclude: import_zod7.z.array(import_zod7.z.string()).optional(),
2464
- parallel: import_zod7.z.boolean().optional(),
2465
- deep: import_zod7.z.boolean().optional(),
2466
- tools: import_zod7.z.array(import_zod7.z.string()).optional()
2403
+ scan: import_zod6.z.object({
2404
+ include: import_zod6.z.array(import_zod6.z.string()).optional(),
2405
+ exclude: import_zod6.z.array(import_zod6.z.string()).optional(),
2406
+ parallel: import_zod6.z.boolean().optional(),
2407
+ deep: import_zod6.z.boolean().optional(),
2408
+ tools: import_zod6.z.array(import_zod6.z.string()).optional()
2467
2409
  }).optional(),
2468
2410
  /** Output-specific configuration */
2469
- output: import_zod7.z.object({
2411
+ output: import_zod6.z.object({
2470
2412
  /** Output format (json, console, html) */
2471
- format: import_zod7.z.enum(["json", "console", "html"]).optional(),
2413
+ format: import_zod6.z.enum(["json", "console", "html"]).optional(),
2472
2414
  /** Output file path */
2473
- path: import_zod7.z.string().optional(),
2415
+ path: import_zod6.z.string().optional(),
2474
2416
  /** Output directory */
2475
- saveTo: import_zod7.z.string().optional(),
2417
+ saveTo: import_zod6.z.string().optional(),
2476
2418
  /** Whether to show score breakdown in console */
2477
- showBreakdown: import_zod7.z.boolean().optional(),
2419
+ showBreakdown: import_zod6.z.boolean().optional(),
2478
2420
  /** Baseline report to compare against */
2479
- compareBaseline: import_zod7.z.string().optional()
2421
+ compareBaseline: import_zod6.z.string().optional()
2480
2422
  }).optional(),
2481
2423
  /** Tool-specific configuration overrides (Strictly ToolName -> Config) */
2482
- tools: import_zod7.z.record(import_zod7.z.string(), import_zod7.z.any()).optional(),
2424
+ tools: import_zod6.z.record(import_zod6.z.string(), import_zod6.z.any()).optional(),
2483
2425
  /** Scoring profile and weights */
2484
- scoring: import_zod7.z.object({
2426
+ scoring: import_zod6.z.object({
2485
2427
  /** Name of the scoring profile (e.g. "strict", "balanced") */
2486
- profile: import_zod7.z.string().optional(),
2428
+ profile: import_zod6.z.string().optional(),
2487
2429
  /** Custom weights for tools and metrics */
2488
- weights: import_zod7.z.record(import_zod7.z.string(), import_zod7.z.number()).optional()
2430
+ weights: import_zod6.z.record(import_zod6.z.string(), import_zod6.z.number()).optional()
2489
2431
  }).optional(),
2490
2432
  /** Visualizer settings (interactive graph) */
2491
- visualizer: import_zod7.z.object({
2492
- groupingDirs: import_zod7.z.array(import_zod7.z.string()).optional(),
2493
- graph: import_zod7.z.object({
2494
- maxNodes: import_zod7.z.number().optional(),
2495
- maxEdges: import_zod7.z.number().optional()
2433
+ visualizer: import_zod6.z.object({
2434
+ groupingDirs: import_zod6.z.array(import_zod6.z.string()).optional(),
2435
+ graph: import_zod6.z.object({
2436
+ maxNodes: import_zod6.z.number().optional(),
2437
+ maxEdges: import_zod6.z.number().optional()
2496
2438
  }).optional()
2497
2439
  }).optional()
2498
- }).catchall(import_zod7.z.any());
2440
+ }).catchall(import_zod6.z.any());
2441
+
2442
+ // src/types/business.ts
2443
+ var import_zod7 = require("zod");
2444
+ var LeadSource = /* @__PURE__ */ ((LeadSource2) => {
2445
+ LeadSource2["ClawMoreHero"] = "clawmore-hero";
2446
+ LeadSource2["ClawMoreWaitlist"] = "clawmore-waitlist";
2447
+ LeadSource2["ClawMoreBeta"] = "clawmore-beta";
2448
+ LeadSource2["AiReadyPlatform"] = "aiready-platform";
2449
+ return LeadSource2;
2450
+ })(LeadSource || {});
2451
+ var LeadSourceSchema = import_zod7.z.nativeEnum(LeadSource);
2452
+ var LeadSchema = import_zod7.z.object({
2453
+ id: import_zod7.z.string(),
2454
+ email: import_zod7.z.string().email(),
2455
+ name: import_zod7.z.string().min(1),
2456
+ interest: import_zod7.z.string().default("General"),
2457
+ notes: import_zod7.z.string().optional(),
2458
+ timestamp: import_zod7.z.string().datetime(),
2459
+ source: LeadSourceSchema,
2460
+ status: import_zod7.z.enum(["new", "contacted", "qualified", "converted", "archived"]).default("new")
2461
+ });
2462
+ var LeadSubmissionSchema = LeadSchema.omit({
2463
+ id: true,
2464
+ timestamp: true,
2465
+ status: true
2466
+ });
2467
+ var ManagedAccountSchema = import_zod7.z.object({
2468
+ id: import_zod7.z.string(),
2469
+ // Internal UUID
2470
+ accountId: import_zod7.z.string(),
2471
+ // AWS Account ID
2472
+ userId: import_zod7.z.string(),
2473
+ // Owner (caopengau@gmail.com)
2474
+ stripeSubscriptionId: import_zod7.z.string(),
2475
+ // AI Token Management
2476
+ tokenStrategy: import_zod7.z.enum(["managed", "byok"]).default("managed"),
2477
+ byokConfig: import_zod7.z.object({
2478
+ openaiKey: import_zod7.z.string().optional(),
2479
+ anthropicKey: import_zod7.z.string().optional(),
2480
+ openrouterKey: import_zod7.z.string().optional()
2481
+ }).optional(),
2482
+ // Financials (in cents)
2483
+ baseFeeCents: import_zod7.z.number().default(2900),
2484
+ includedComputeCents: import_zod7.z.number().default(1500),
2485
+ // $15.00 AWS included
2486
+ includedTokenCents: import_zod7.z.number().default(500),
2487
+ // $5.00 Managed Tokens included
2488
+ // Pre-paid Balance (credits)
2489
+ prepaidTokenBalanceCents: import_zod7.z.number().default(0),
2490
+ // Users buy these in $10 packs
2491
+ currentMonthlyTokenSpendCents: import_zod7.z.number().default(0),
2492
+ // Governance
2493
+ status: import_zod7.z.enum(["provisioning", "active", "warning", "quarantined", "suspended"]).default("provisioning"),
2494
+ lastCostSyncAt: import_zod7.z.string().datetime().optional(),
2495
+ region: import_zod7.z.string().default("ap-southeast-2"),
2496
+ // Alerting thresholds (percentage of includedComputeCents)
2497
+ alertThresholds: import_zod7.z.array(import_zod7.z.number()).default([50, 80, 100, 150])
2498
+ });
2499
2499
 
2500
2500
  // src/types.ts
2501
2501
  var GLOBAL_INFRA_OPTIONS = [
@@ -3560,7 +3560,7 @@ function extractExportsWithDependencies(ast, fileImports) {
3560
3560
  type: "default",
3561
3561
  imports: usedImports,
3562
3562
  dependencies: [],
3563
- typeReferences: [],
3563
+ typeReferences,
3564
3564
  loc: node.loc
3565
3565
  });
3566
3566
  } else if (node.type === "ExportAllDeclaration") {
@@ -3810,15 +3810,19 @@ function mergeConfigWithDefaults(userConfig, defaults) {
3810
3810
  if (!mergedConfig.toolConfigs) mergedConfig.toolConfigs = {};
3811
3811
  for (const [toolName, toolConfig] of Object.entries(userConfig.tools)) {
3812
3812
  if (typeof toolConfig === "object" && toolConfig !== null) {
3813
- mergedConfig.toolConfigs[toolName] = {
3814
- ...mergedConfig.toolConfigs[toolName],
3813
+ const toolConfigs = mergedConfig.toolConfigs;
3814
+ toolConfigs[toolName] = {
3815
+ ...toolConfigs[toolName],
3815
3816
  ...toolConfig
3816
3817
  };
3817
3818
  }
3818
3819
  }
3819
3820
  }
3820
3821
  if (userConfig.output) {
3821
- mergedConfig.output = { ...mergedConfig.output, ...userConfig.output };
3822
+ mergedConfig.output = {
3823
+ ...mergedConfig.output,
3824
+ ...userConfig.output
3825
+ };
3822
3826
  }
3823
3827
  return mergedConfig;
3824
3828
  }
@@ -4357,6 +4361,7 @@ var TOOL_NAME_MAP = {
4357
4361
  context: "context-analyzer" /* ContextAnalyzer */,
4358
4362
  "context-analyzer": "context-analyzer" /* ContextAnalyzer */,
4359
4363
  consistency: "naming-consistency" /* NamingConsistency */,
4364
+ namingconsistency: "naming-consistency" /* NamingConsistency */,
4360
4365
  "naming-consistency": "naming-consistency" /* NamingConsistency */,
4361
4366
  "ai-signal": "ai-signal-clarity" /* AiSignalClarity */,
4362
4367
  "ai-signal-clarity": "ai-signal-clarity" /* AiSignalClarity */,
@@ -6546,23 +6551,27 @@ async function executeSpokeCli(name, description, options, analyzeFn) {
6546
6551
  console.log(import_chalk6.default.cyan(`Analyzing ${description.toLowerCase()}...`));
6547
6552
  try {
6548
6553
  const report = await analyzeFn({
6549
- rootDir: process.cwd(),
6550
- ...options
6554
+ ...options,
6555
+ rootDir: options.rootDir ?? process.cwd()
6551
6556
  });
6552
6557
  console.log(import_chalk6.default.bold(`
6553
6558
  ${name} Analysis Results:`));
6559
+ const reportRecord = report;
6560
+ const summary = reportRecord.summary;
6554
6561
  console.log(
6555
- `Rating: ${report.summary.rating.toUpperCase()} (Score: ${report.summary.score})`
6562
+ `Rating: ${summary.rating.toUpperCase()} (Score: ${summary.score})`
6556
6563
  );
6557
- if (report.issues && report.issues.length > 0) {
6564
+ const issues = reportRecord.issues;
6565
+ if (issues && issues.length > 0) {
6558
6566
  console.log(import_chalk6.default.red(`
6559
- Found ${report.issues.length} issues.`));
6567
+ Found ${issues.length} issues.`));
6560
6568
  } else {
6561
6569
  console.log(import_chalk6.default.green("\nNo issues detected."));
6562
6570
  }
6563
6571
  return report;
6564
6572
  } catch (err) {
6565
- console.error(import_chalk6.default.red(`Error during ${name} analysis: ${err.message}`));
6573
+ const errorMessage = err instanceof Error ? err.message : String(err);
6574
+ console.error(import_chalk6.default.red(`Error during ${name} analysis: ${errorMessage}`));
6566
6575
  process.exit(1);
6567
6576
  }
6568
6577
  }
package/dist/index.mjs CHANGED
@@ -52,7 +52,7 @@ import {
52
52
  getToolWeight,
53
53
  normalizeToolName,
54
54
  parseWeightString
55
- } from "./chunk-FAESSLG7.mjs";
55
+ } from "./chunk-LRM26BOB.mjs";
56
56
  import {
57
57
  TypeScriptParser
58
58
  } from "./chunk-5IVDH26E.mjs";
@@ -1116,7 +1116,7 @@ function extractExportsWithDependencies(ast, fileImports) {
1116
1116
  type: "default",
1117
1117
  imports: usedImports,
1118
1118
  dependencies: [],
1119
- typeReferences: [],
1119
+ typeReferences,
1120
1120
  loc: node.loc
1121
1121
  });
1122
1122
  } else if (node.type === "ExportAllDeclaration") {
@@ -1366,15 +1366,19 @@ function mergeConfigWithDefaults(userConfig, defaults) {
1366
1366
  if (!mergedConfig.toolConfigs) mergedConfig.toolConfigs = {};
1367
1367
  for (const [toolName, toolConfig] of Object.entries(userConfig.tools)) {
1368
1368
  if (typeof toolConfig === "object" && toolConfig !== null) {
1369
- mergedConfig.toolConfigs[toolName] = {
1370
- ...mergedConfig.toolConfigs[toolName],
1369
+ const toolConfigs = mergedConfig.toolConfigs;
1370
+ toolConfigs[toolName] = {
1371
+ ...toolConfigs[toolName],
1371
1372
  ...toolConfig
1372
1373
  };
1373
1374
  }
1374
1375
  }
1375
1376
  }
1376
1377
  if (userConfig.output) {
1377
- mergedConfig.output = { ...mergedConfig.output, ...userConfig.output };
1378
+ mergedConfig.output = {
1379
+ ...mergedConfig.output,
1380
+ ...userConfig.output
1381
+ };
1378
1382
  }
1379
1383
  return mergedConfig;
1380
1384
  }
@@ -3571,23 +3575,27 @@ async function executeSpokeCli(name, description, options, analyzeFn) {
3571
3575
  console.log(chalk6.cyan(`Analyzing ${description.toLowerCase()}...`));
3572
3576
  try {
3573
3577
  const report = await analyzeFn({
3574
- rootDir: process.cwd(),
3575
- ...options
3578
+ ...options,
3579
+ rootDir: options.rootDir ?? process.cwd()
3576
3580
  });
3577
3581
  console.log(chalk6.bold(`
3578
3582
  ${name} Analysis Results:`));
3583
+ const reportRecord = report;
3584
+ const summary = reportRecord.summary;
3579
3585
  console.log(
3580
- `Rating: ${report.summary.rating.toUpperCase()} (Score: ${report.summary.score})`
3586
+ `Rating: ${summary.rating.toUpperCase()} (Score: ${summary.score})`
3581
3587
  );
3582
- if (report.issues && report.issues.length > 0) {
3588
+ const issues = reportRecord.issues;
3589
+ if (issues && issues.length > 0) {
3583
3590
  console.log(chalk6.red(`
3584
- Found ${report.issues.length} issues.`));
3591
+ Found ${issues.length} issues.`));
3585
3592
  } else {
3586
3593
  console.log(chalk6.green("\nNo issues detected."));
3587
3594
  }
3588
3595
  return report;
3589
3596
  } catch (err) {
3590
- console.error(chalk6.red(`Error during ${name} analysis: ${err.message}`));
3597
+ const errorMessage = err instanceof Error ? err.message : String(err);
3598
+ console.error(chalk6.red(`Error during ${name} analysis: ${errorMessage}`));
3591
3599
  process.exit(1);
3592
3600
  }
3593
3601
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aiready/core",
3
- "version": "0.24.6",
3
+ "version": "0.24.8",
4
4
  "description": "Shared utilities for AIReady analysis tools",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -62,6 +62,8 @@
62
62
  "test": "vitest run --hookTimeout=30000",
63
63
  "lint": "eslint src",
64
64
  "clean": "rm -rf dist",
65
- "release": "pnpm build && pnpm publish --no-git-checks"
65
+ "release": "pnpm build && pnpm publish --no-git-checks",
66
+ "type-check": "tsc --noEmit",
67
+ "format-check": "prettier --check . --ignore-path ../../.prettierignore"
66
68
  }
67
69
  }