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 +16 -2
- package/dist/application/orchestration/engine/ask.d.ts.map +1 -1
- package/dist/application/orchestration/engine/ask.js +10 -1
- package/dist/cli/commands/init/command.d.ts.map +1 -1
- package/dist/cli/commands/init/command.js +17 -7
- package/dist/cli/theme.d.ts.map +1 -1
- package/package.json +10 -10
- package/prebuilds/darwin-arm64/uneven_core.node +0 -0
- package/prebuilds/linux-arm64/uneven_core.node +0 -0
- package/prebuilds/linux-x64/uneven_core.node +0 -0
- package/prebuilds/win32-x64/uneven_core.node +0 -0
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
|
-
|
|
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":"
|
|
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
|
-
|
|
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,
|
|
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
|
|
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
|
-
|
|
75
|
-
|
|
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,
|
package/dist/cli/theme.d.ts.map
CHANGED
|
@@ -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,
|
|
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
|
+
"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.
|
|
74
|
-
"mysql2": "^3.
|
|
75
|
-
"ora": "^9.
|
|
76
|
-
"pdfjs-dist": "^5.
|
|
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
|
|
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": "^
|
|
93
|
-
"prettier": "^3.8.
|
|
94
|
-
"ts-jest": "^29.
|
|
95
|
-
"typescript": "^
|
|
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
|
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|