uneven-ai 1.1.3 → 1.1.4

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/CHANGELOG.md CHANGED
@@ -5,15 +5,29 @@ All notable changes to Uneven AI will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.1.4] - 2026-04-24
9
+
10
+ ### Changed
11
+ - **Major Dependency Upgrade**: Migrated to **TypeScript 6.0.3** and updated all core npm dependencies (`ts-jest`, `ora`, `mongodb`, `mysql2`, etc.).
12
+ - **Rust Core Update**: Upgraded Rust dependencies including `tokio`, `usearch`, and `candle` for better performance and security.
13
+ - **Improved Init Logic**: The `init` command now performs a clean-up of old state/config before starting, ensuring a fresh installation.
14
+ - **Resilient Path Resolution**: Enhanced the agentic search engine to resolve files even when provided with incomplete paths.
15
+ - **Omni-Support Sync**: Synchronized 60+ file extensions across both TypeScript and Rust layers for consistent project indexing.
16
+
8
17
  ## [1.1.3] - 2026-04-24
9
18
 
10
19
  ### Added
11
20
 
12
21
  - **Proactive AutoFix Mode**: The engine now performs "Silent Audits" on file save. It proactively scans for logic bugs, security vulnerabilities, and performance issues even if no terminal error is detected.
13
- - **Omni-Support: Universal Language Expansion**: Massive update to the knowledge engine, now supporting over 60+ file extensions across all major ecosystems (Web, Mobile, Systems, DevOps, Data Science).
22
+ - **Omni-Support: Universal Language Expansion**: Massive update to the knowledge engine, now supporting over 60+ file extensions across all major ecosystems (Web, Mobile, Systems, DevOps, Data Science) synchronized between TS and Rust core.
23
+ - **Agentic Autonomy**: Maria can now perform deep-scan audits directly via chat/ask command, injecting real-time findings into the conversation context.
14
24
  - **Intelligent Debouncing**: Refined the fix engine to handle concurrent terminal errors and proactive scans without conflicts.
25
+ - **Dependency Injection**: Refactored orchestration engine for better testability and ESM compatibility.
26
+
27
+ ## [1.1.2] - 2026-04-24 [DEPRECATED]
15
28
 
16
- ## [1.1.2] - 2026-04-24
29
+ > [!CAUTION]
30
+ > **This version is deprecated.** Users are strongly encouraged to upgrade to **v1.1.3** to benefit from the new Proactive Analysis engine and universal language support.
17
31
 
18
32
  ### Fixed
19
33
 
@@ -1 +1 @@
1
- {"version":3,"file":"ask.d.ts","sourceRoot":"","sources":["../../../../src/application/orchestration/engine/ask.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAE1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAE7C;;;;;;GAMG;AACH,wBAAsB,KAAK,CACzB,GAAG,EAAE,SAAS,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,EACjC,OAAO,GAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAM,EACpE,iBAAiB,CAAC,EAAE,SAAS,GAC5B,OAAO,CAAC,MAAM,CAAC,CAiIjB"}
1
+ {"version":3,"file":"ask.d.ts","sourceRoot":"","sources":["../../../../src/application/orchestration/engine/ask.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAE1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAE7C;;;;;;GAMG;AACH,wBAAsB,KAAK,CACzB,GAAG,EAAE,SAAS,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,EACjC,OAAO,GAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAM,EACpE,iBAAiB,CAAC,EAAE,SAAS,GAC5B,OAAO,CAAC,MAAM,CAAC,CA2IjB"}
@@ -1,4 +1,5 @@
1
1
  import * as fs from 'fs/promises';
2
+ import * as fsSync from 'fs';
2
3
  import * as path from 'path';
3
4
  import { isNativeAvailable, llmEmbed, llmInfer, llmInferStream, retrievalSearch, } from '../../../infrastructure/adapters/bridge.js';
4
5
  import { ExternalProviders } from '../../../infrastructure/adapters/providers/index.js';
@@ -34,7 +35,15 @@ export async function doAsk(ctx, question, onToken, history = [], fixEngineOverr
34
35
  const fixEngine = fixEngineOverride ?? new FixEngine(ctx.logger, ctx.projectRoot, retriever);
35
36
  for (const relPath of relevantPaths) {
36
37
  try {
37
- const absPath = path.resolve(ctx.projectRoot, relPath);
38
+ let absPath = path.resolve(ctx.projectRoot, relPath);
39
+ // Fallback: If LLM returned only filename, try to find it in the files map
40
+ if (!fsSync.existsSync(absPath)) {
41
+ const fullMap = filesMap.split('\n');
42
+ const found = fullMap.find(p => p.endsWith(relPath) || p.endsWith('/' + relPath));
43
+ if (found) {
44
+ absPath = path.resolve(ctx.projectRoot, found);
45
+ }
46
+ }
38
47
  const content = await fs.readFile(absPath, 'utf8');
39
48
  context += `**File: ${relPath}**\n\`\`\`\n${content}\n\`\`\`\n\n`;
40
49
  // Agentic Autonomy: If it's an audit request, run a proactive scan too
@@ -1 +1 @@
1
- {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/init/command.ts"],"names":[],"mappings":"AAeA,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CA2JjD"}
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/init/command.ts"],"names":[],"mappings":"AAeA,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAuKjD"}
@@ -41,11 +41,22 @@ export async function initCommand() {
41
41
  console.log(t.dim(' This will only take a moment.'));
42
42
  console.log();
43
43
  const spinner = ora({ text: t.dim('Preparing workspace...'), color: 'blue' }).start();
44
+ // 1. Pre-init Cleanup (as requested by user)
45
+ // We remove existing state/logs but keep models to avoid 1.4GB redownload
46
+ try {
47
+ await fs.rm('.uneven/cache', { recursive: true, force: true });
48
+ await fs.rm('.uneven/logs', { recursive: true, force: true });
49
+ await fs.rm('.uneven/index-state.json', { force: true });
50
+ await fs.rm('.uneven/config.json', { force: true });
51
+ await fs.rm('.uneven/vectors.json', { force: true });
52
+ await fs.rm('uneven-reports', { recursive: true, force: true });
53
+ }
54
+ catch { /* ignore */ }
44
55
  await fs.mkdir('.uneven/cache', { recursive: true });
45
56
  await fs.mkdir('.uneven/models', { recursive: true });
46
57
  await fs.mkdir('.uneven/logs', { recursive: true });
47
58
  await fs.mkdir('uneven-reports', { recursive: true });
48
- spinner.succeed(t.crystal('Workspace ready') + t.dim(' (.uneven/ and uneven-reports/)'));
59
+ spinner.succeed(t.crystal('Workspace prepared') + t.dim(' (Cleaned and ready)'));
49
60
  section('Which brain should power Uneven?');
50
61
  const providers = [
51
62
  { key: '1', id: 'local', label: 'Maria', note: `${chalk.green('Recommended:')} 100% Private and Sovereign` },
@@ -71,13 +82,12 @@ export async function initCommand() {
71
82
  blank();
72
83
  ok(`Brain set to ${t.bright(PROVIDER_LABELS[provider] ?? provider)}`);
73
84
  const newConfigPath = path.join(process.cwd(), 'uneven.config.ts');
74
- if (await fileExists(newConfigPath)) {
75
- warn('uneven.config.ts already exists keeping it');
76
- }
77
- else {
78
- await fs.writeFile(newConfigPath, makeConfig(provider, recommendedThreads, recommendedGpuLayers));
79
- ok('uneven.config.ts created');
85
+ try {
86
+ await fs.rm(newConfigPath, { force: true });
80
87
  }
88
+ catch { /* ignore */ }
89
+ await fs.writeFile(newConfigPath, makeConfig(provider, recommendedThreads, recommendedGpuLayers));
90
+ ok('uneven.config.ts created');
81
91
  await saveConfig({
82
92
  brain: {
83
93
  provider: provider,
@@ -1 +1 @@
1
- {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../src/cli/theme.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,eAAO,MAAM,CAAC;gBACE,MAAM;gBACN,MAAM;iBACN,MAAM;aACN,MAAM;eACN,MAAM;cACN,MAAM;cACN,MAAM;oBACJ,MAAM;CACvB,CAAA;AAUD,eAAO,MAAM,GAAG;IACd,oCAAoC;oBACpB,MAAM,GAAG,IAAI;IAa7B,sBAAsB;eACX,IAAI;IAIf,qCAAqC;kBACvB,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI;CAW5E,CAAA;AAID,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAI3C;AAID,eAAO,MAAM,EAAE,QAAY,MAAM,SAAmD,CAAA;AACpF,eAAO,MAAM,IAAI,QAAU,MAAM,SAAmD,CAAA;AACpF,eAAO,MAAM,IAAI,QAAU,MAAM,SAAmD,CAAA;AACpF,eAAO,MAAM,IAAI,QAAU,MAAM,SAAgD,CAAA;AACjF,eAAO,MAAM,IAAI,QAAU,MAAM,SAAsC,CAAA;AACvE,eAAO,MAAM,KAAK,YAAiC,CAAA;AAInD,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAGvD;AAID,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAMlD,CAAA"}
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../src/cli/theme.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,eAAO,MAAM,CAAC;gBACE,MAAM;gBACN,MAAM;iBACN,MAAM;aACN,MAAM;eACN,MAAM;cACN,MAAM;cACN,MAAM;oBACJ,MAAM;CACvB,CAAA;AAUD,eAAO,MAAM,GAAG;IACd,oCAAoC;oBACpB,MAAM,GAAG,IAAI;IAa7B,sBAAsB;eACX,IAAI;IAIf,qCAAqC;kBACvB,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI;CAW5E,CAAA;AAID,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAI3C;AAID,eAAO,MAAM,EAAE,GAAO,KAAK,MAAM,SAAmD,CAAA;AACpF,eAAO,MAAM,IAAI,GAAK,KAAK,MAAM,SAAmD,CAAA;AACpF,eAAO,MAAM,IAAI,GAAK,KAAK,MAAM,SAAmD,CAAA;AACpF,eAAO,MAAM,IAAI,GAAK,KAAK,MAAM,SAAgD,CAAA;AACjF,eAAO,MAAM,IAAI,GAAK,KAAK,MAAM,SAAsC,CAAA;AACvE,eAAO,MAAM,KAAK,YAAiC,CAAA;AAInD,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAGvD;AAID,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAMlD,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "uneven-ai",
3
- "version": "1.1.3",
3
+ "version": "1.1.4",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "registry": "https://registry.npmjs.org/"
@@ -70,12 +70,12 @@
70
70
  "exceljs": "^4.4.0",
71
71
  "knex": "^3.2.9",
72
72
  "mammoth": "^1.12.0",
73
- "mongodb": "^7.1.1",
74
- "mysql2": "^3.20.0",
75
- "ora": "^9.3.0",
76
- "pdfjs-dist": "^5.0.0",
73
+ "mongodb": "^7.2.0",
74
+ "mysql2": "^3.22.2",
75
+ "ora": "^9.4.0",
76
+ "pdfjs-dist": "^5.6.205",
77
77
  "pg": "^8.20.0",
78
- "undici": "^8.0.2"
78
+ "undici": "^8.1.0"
79
79
  },
80
80
  "overrides": {
81
81
  "chokidar": "^5.0.0"
@@ -89,9 +89,9 @@
89
89
  "@typescript-eslint/utils": "^8.58.0",
90
90
  "eslint": "^10.2.0",
91
91
  "jest": "^29.0.0",
92
- "jest-junit": "^16.0.0",
93
- "prettier": "^3.8.1",
94
- "ts-jest": "^29.2.5",
95
- "typescript": "^5.7.3"
92
+ "jest-junit": "^17.0.0",
93
+ "prettier": "^3.8.3",
94
+ "ts-jest": "^29.4.9",
95
+ "typescript": "^6.0.3"
96
96
  }
97
97
  }