nyxora 1.6.3 → 1.6.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 +23 -0
- package/package.json +3 -4
- package/packages/core/package.json +1 -2
- package/packages/core/src/gateway/setup.ts +3 -2
- package/packages/core/src/memory/logger.ts +21 -14
- package/packages/dashboard/dist/assets/index-CfIids2e.js +170 -0
- package/packages/dashboard/dist/index.html +1 -1
- package/packages/dashboard/package.json +7 -7
- package/packages/policy/package.json +1 -1
- package/packages/signer/package.json +1 -1
- package/packages/signer/src/server.ts +3 -2
- package/test-db.ts +3 -0
- package/packages/dashboard/dist/assets/index-BTP1WrFj.js +0 -194
- package/packages/dashboard/package-lock.json +0 -2748
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,29 @@ All notable changes to this project 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.6.4]
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- **Node.js Native Database Engine**: Migrated the core `logger.ts` memory subsystem to use the built-in `node:sqlite` engine (Node 22+), maintaining ultra-fast 100% synchronous operations while dramatically reducing dependency bloat.
|
|
12
|
+
- **Next-Gen OS Keyring (N-API)**: Migrated `keytar` to `@napi-rs/keyring`. This replaces legacy C++ bindings with modern Rust/NAPI-RS, retaining identical OS-level security (Mac Keychain, Windows Credential Manager) while eliminating the `prebuild-install` deprecation warning and streamlining global installation.
|
|
13
|
+
|
|
14
|
+
### Removed
|
|
15
|
+
- `better-sqlite3` and `keytar` dependencies entirely removed from the monorepo architecture.
|
|
16
|
+
|
|
17
|
+
## [1.6.3]
|
|
18
|
+
|
|
19
|
+
### Added
|
|
20
|
+
- Implemented **Zero-Click Multi-Session** for instantaneous chat creation and switching.
|
|
21
|
+
- Introduced **Smart Auto-Naming** for automatic contextual session titles.
|
|
22
|
+
|
|
23
|
+
### Changed
|
|
24
|
+
- **Redesigned Sidebar Architecture**: enhanced utility-centric design, significantly reducing gaps for a compact, elegant look.
|
|
25
|
+
- Integrated **OS-Native Keyring**, replacing legacy AES-256-GCM and Master Password mechanics.
|
|
26
|
+
- Updated and cleaned up legacy cryptography references in VitePress guides and README.
|
|
27
|
+
|
|
28
|
+
### Fixed
|
|
29
|
+
- Resolved deeply-nested monorepo CI/CD deployment failures by isolating `package-lock.json` and mitigating peer-dependency conflicts.
|
|
30
|
+
|
|
8
31
|
## [1.4.5]
|
|
9
32
|
|
|
10
33
|
### Fixed
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nyxora",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.4",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"workspaces": [
|
|
6
6
|
"packages/*"
|
|
7
7
|
],
|
|
8
8
|
"bin": {
|
|
9
|
-
"nyxora": "
|
|
9
|
+
"nyxora": "bin/nyxora.mjs"
|
|
10
10
|
},
|
|
11
11
|
"scripts": {
|
|
12
12
|
"start": "node ./bin/nyxora.mjs start",
|
|
@@ -19,7 +19,6 @@
|
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
21
|
"@clack/prompts": "^1.4.0",
|
|
22
|
-
"better-sqlite3": "^12.10.0",
|
|
23
22
|
"concurrently": "^9.2.1",
|
|
24
23
|
"cors": "^2.8.6",
|
|
25
24
|
"dotenv": "^17.4.2",
|
|
@@ -27,7 +26,7 @@
|
|
|
27
26
|
"express-rate-limit": "^7.5.0",
|
|
28
27
|
"helmet": "^8.0.0",
|
|
29
28
|
"jsonwebtoken": "^9.0.2",
|
|
30
|
-
"
|
|
29
|
+
"@napi-rs/keyring": "^1.3.0",
|
|
31
30
|
"open": "^11.0.0",
|
|
32
31
|
"openai": "^6.39.0",
|
|
33
32
|
"picocolors": "^1.1.1",
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nyxora/core",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.4",
|
|
4
4
|
"private": true,
|
|
5
5
|
"main": "src/gateway/server.ts",
|
|
6
6
|
"dependencies": {
|
|
7
7
|
"@clack/prompts": "^1.4.0",
|
|
8
|
-
"better-sqlite3": "^12.10.0",
|
|
9
8
|
"cors": "^2.8.6",
|
|
10
9
|
"express": "^5.2.1",
|
|
11
10
|
"express-rate-limit": "^7.5.0",
|
|
@@ -284,8 +284,9 @@ Provider: ${config.llm.provider}`;
|
|
|
284
284
|
// Save Private Key to OS Keyring or fallback to .env
|
|
285
285
|
if (privateKey) {
|
|
286
286
|
try {
|
|
287
|
-
const
|
|
288
|
-
|
|
287
|
+
const { Entry } = require('@napi-rs/keyring');
|
|
288
|
+
const entry = new Entry('nyxora', 'wallet');
|
|
289
|
+
await entry.setPassword(privateKey as string);
|
|
289
290
|
console.log(pc.green('Private key saved securely to OS Keyring.'));
|
|
290
291
|
} catch (error) {
|
|
291
292
|
console.warn(pc.yellow('Failed to save to OS Keyring (Module mismatch or headless server). Falling back to local vault.key'));
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import fs from 'fs';
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import crypto from 'crypto';
|
|
4
|
-
import
|
|
4
|
+
import { DatabaseSync } from 'node:sqlite';
|
|
5
5
|
import { loadConfig } from '../config/parser';
|
|
6
6
|
import { getPath } from '../config/paths';
|
|
7
7
|
|
|
@@ -21,7 +21,7 @@ export interface ChatSession {
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
export class Logger {
|
|
24
|
-
private db:
|
|
24
|
+
private db: DatabaseSync;
|
|
25
25
|
|
|
26
26
|
constructor() {
|
|
27
27
|
const config = loadConfig() || {};
|
|
@@ -37,7 +37,7 @@ export class Logger {
|
|
|
37
37
|
fs.mkdirSync(dir, { recursive: true });
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
this.db = new
|
|
40
|
+
this.db = new DatabaseSync(fullPath);
|
|
41
41
|
this.initDb();
|
|
42
42
|
}
|
|
43
43
|
|
|
@@ -86,17 +86,24 @@ export class Logger {
|
|
|
86
86
|
VALUES (@role, @content, @name, @tool_call_id, @tool_calls)
|
|
87
87
|
`);
|
|
88
88
|
|
|
89
|
-
const insertMany =
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
89
|
+
const insertMany = (entries: any[]) => {
|
|
90
|
+
this.db.exec('BEGIN TRANSACTION');
|
|
91
|
+
try {
|
|
92
|
+
for (const entry of entries) {
|
|
93
|
+
insert.run({
|
|
94
|
+
role: entry.role,
|
|
95
|
+
content: entry.content || '',
|
|
96
|
+
name: entry.name || null,
|
|
97
|
+
tool_call_id: entry.tool_call_id || null,
|
|
98
|
+
tool_calls: entry.tool_calls ? JSON.stringify(entry.tool_calls) : null
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
this.db.exec('COMMIT');
|
|
102
|
+
} catch (e) {
|
|
103
|
+
this.db.exec('ROLLBACK');
|
|
104
|
+
throw e;
|
|
98
105
|
}
|
|
99
|
-
}
|
|
106
|
+
};
|
|
100
107
|
|
|
101
108
|
insertMany(oldMemory);
|
|
102
109
|
console.log('[Nyxora Memory] Successfully migrated memory.json to SQLite database (Atomic Storage).');
|
|
@@ -112,7 +119,7 @@ export class Logger {
|
|
|
112
119
|
|
|
113
120
|
public getSessions(): ChatSession[] {
|
|
114
121
|
const rows = this.db.prepare('SELECT id, title, timestamp FROM sessions ORDER BY timestamp DESC').all();
|
|
115
|
-
return rows as ChatSession[];
|
|
122
|
+
return rows as unknown as ChatSession[];
|
|
116
123
|
}
|
|
117
124
|
|
|
118
125
|
public createSession(title: string): string {
|