uneven-ai 1.1.0 โ†’ 1.1.2

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,6 +5,19 @@ 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.2] - 2026-04-24
9
+
10
+ ### Fixed
11
+
12
+ - **Engine Initialization**: Resolved a naming convention mismatch where `maxTokens` (camelCase) from the TypeScript configuration was not being correctly mapped to `max_tokens` (snake_case) expected by the native Rust engine.
13
+ - **Native Bridge**: Updated the bridge to ensure all configuration fields are correctly transformed before being passed to the native core, preventing initialization failures.
14
+
15
+ ## [1.1.1] - 2026-04-24
16
+
17
+ ### Fixed
18
+
19
+ - **Naming Conventions**: Stabilized internal naming conventions between TypeScript and Rust layers.
20
+
8
21
  ## [1.1.0] - 2026-04-20
9
22
 
10
23
  ### Added
package/README.md CHANGED
@@ -18,7 +18,7 @@
18
18
  - **๐Ÿ’ฌ Maria Shell** โ€” Run `uneven-ai` to talk with **Maria**, your local senior agent. She understands your intent and dispatches commands automatically.
19
19
  - **๐Ÿง  Local Sovereignty** โ€” Powered by **Maria**, our built-in offline brain. Choose between **Maria Standard** (Llama 3.2 โ€” fast & light) or **Maria Pro** (Llama 4 Scout โ€” high performance).
20
20
  - **โšก Selective Knowledge Retrieval** โ€” New **Knowledge Map Strategy** for massive projects. The AI identifies relevant files from a compact project map before reading content, reducing token costs by up to 90% and eliminating "context noise".
21
- - **๐Ÿ” Semantic Knowledge Base** โ€” Scalable indexing for codebase, databases, and docs. Optimized for surgical context delivery in v1.1.0.
21
+ - **๐Ÿ” Semantic Knowledge Base** โ€” Scalable indexing for codebase, databases, and docs. Optimized for surgical context delivery in v1.1.1.
22
22
  - **๐Ÿ‘€ Terminal Watcher** โ€” Monitors your dev workflow and catches execution errors in real time.
23
23
  - **๐Ÿค– Autonomous Correction** โ€” Diagnoses errors using your project's context and applies surgical fixes.
24
24
  - **๐Ÿฆ  Security Shield** โ€” Detects malicious patterns, supply chain attacks, and compromised dependencies.
@@ -158,7 +158,7 @@ uneven-ai ci
158
158
  Run `uneven-ai` with no arguments to open the interactive shell:
159
159
 
160
160
  ```
161
- โ—ˆ Uneven AI v1.1.0
161
+ โ—ˆ Uneven AI v1.1.1
162
162
  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
163
163
  Olรก! O que posso fazer por vocรช hoje?
164
164
  (Escreva sua mensagem ou "sair" para encerrar)
@@ -1 +1 @@
1
- {"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/adapters/bridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/adapters/bridge.ts"],"names":[],"mappings":"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"}
@@ -79,11 +79,45 @@ export function getNativeBinding() {
79
79
  export function isNativeAvailable() {
80
80
  return nativeBinding !== null;
81
81
  }
82
+ /**
83
+ * Converts camelCase TypeScript config to snake_case Rust config.
84
+ * Rust's UnevenConfig expects snake_case for several fields.
85
+ */
86
+ function toNativeConfig(config) {
87
+ const native = {
88
+ brain: {
89
+ provider: config.brain?.provider,
90
+ model: config.brain?.model,
91
+ api_key: config.brain?.apiKey,
92
+ temperature: config.brain?.temperature,
93
+ max_tokens: config.brain?.maxTokens || config.brain?.max_tokens, // fallback
94
+ local: config.brain?.local ? {
95
+ threads: config.brain.local.threads,
96
+ gpu_layers: config.brain.local.gpuLayers,
97
+ unload_timeout: config.brain.local.unloadTimeout,
98
+ } : undefined
99
+ },
100
+ knowledge: {
101
+ dirs: config.knowledge?.dirs || [],
102
+ files: config.knowledge?.files || [],
103
+ urls: config.knowledge?.urls || [],
104
+ external_project: config.knowledge?.externalProject,
105
+ },
106
+ watch: {
107
+ terminal: config.watch?.terminal || 'npm run dev',
108
+ auto_fix: config.watch?.autoFix ?? true,
109
+ confirm_before_fix: config.watch?.confirmBeforeFix ?? false,
110
+ dirs: config.watch?.dirs || [],
111
+ }
112
+ };
113
+ return native;
114
+ }
82
115
  export async function initNativeEngine(config, threads = 4) {
83
116
  if (!nativeBinding)
84
117
  throw new Error('Native binding not available');
85
118
  try {
86
- await nativeBinding.initEngine(JSON.stringify(config), threads);
119
+ const nativeConfig = toNativeConfig(config);
120
+ await nativeBinding.initEngine(JSON.stringify(nativeConfig), threads);
87
121
  }
88
122
  catch (error) {
89
123
  throw new Error(`Failed to initialize native engine: ${error}`);
@@ -172,7 +206,14 @@ export async function storeDocumentsBatch(docIds, docPaths, docContents, docType
172
206
  */
173
207
  function safeParseNativeJson(raw, context) {
174
208
  try {
175
- return JSON.parse(raw);
209
+ const parsed = JSON.parse(raw);
210
+ // Map snake_case response to camelCase TS
211
+ if (parsed && typeof parsed === 'object') {
212
+ if (parsed.tokens_used !== undefined) {
213
+ parsed.tokensUsed = parsed.tokens_used;
214
+ }
215
+ }
216
+ return parsed;
176
217
  }
177
218
  catch (parseError) {
178
219
  const preview = raw.length > 500 ? raw.slice(0, 500) + '...' : raw;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "uneven-ai",
3
- "version": "1.1.0",
3
+ "version": "1.1.2",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "registry": "https://registry.npmjs.org/"