natureco-cli 5.48.0 → 5.49.0
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 +9 -0
- package/bin/natureco.js +2 -0
- package/package.json +1 -1
- package/src/commands/skills.js +1 -1
- package/src/utils/builtin-links.js +59 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to NatureCo CLI will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [5.49.0] - 2026-07-10 — "Yerleşik skill/araçlar artık ~/.natureco altında görünür"
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
- **`~/.natureco/skills-builtin` ve `~/.natureco/tools` bağlantıları** (`src/utils/builtin-links.js`): Yerleşik skill'ler ve araç kaynakları npm paketinin içinde yaşar ve oradan çalışır; ama kullanıcılar `~/.natureco`'ya bakıp "yok" sanıyordu. CLI artık her açılışta dizin bağlantısı kurar (Windows: junction — yönetici gerektirmez; macOS/Linux: symlink). Kopya yok: paket güncellenince içerik otomatik günceldir. Kırık/yanlış hedefli bağlantı onarılır; bağlantı olmayan GERÇEK klasöre asla dokunulmaz (kullanıcı verisi korunur). 5 yeni test.
|
|
9
|
+
- `natureco skills list` başlığı üç konumu da gösterir: yerleşikler (`skills-builtin`), kişiseller (`skills`), araçlar (`tools`).
|
|
10
|
+
|
|
11
|
+
### Notes
|
|
12
|
+
- Skill keşfi bu bağlantıları taramaz — çift sayım olmaz; işlevsel yol değişmedi, bu salt görünürlük/gezilebilirlik.
|
|
13
|
+
|
|
5
14
|
## [5.48.0] - 2026-07-10 — "Güncelleme bildirimi + skill/araç görünürlüğü"
|
|
6
15
|
|
|
7
16
|
### Context
|
package/bin/natureco.js
CHANGED
|
@@ -8,6 +8,8 @@ require('../src/utils/process-errors').install();
|
|
|
8
8
|
// Yeni sürüm bildirimi (önbellekten senkron basar; ağı arka planda, engellemeden tazeler).
|
|
9
9
|
// Eski sürümde kalan kullanıcılar yeni skill/araçlardan haberdar olsun diye eklendi.
|
|
10
10
|
try { require('../src/utils/update-check').maybeNotify(packageJson.version); } catch { /* asla komutu bozma */ }
|
|
11
|
+
// Yerleşik skill/araçları ~/.natureco altında görünür yap (junction/symlink; kopya yok)
|
|
12
|
+
try { require('../src/utils/builtin-links').ensureBuiltinLinks(); } catch { /* asla komutu bozma */ }
|
|
11
13
|
const login = require('../src/commands/login');
|
|
12
14
|
const logout = require('../src/commands/logout');
|
|
13
15
|
const bots = require('../src/commands/bots');
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "natureco-cli",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.49.0",
|
|
4
4
|
"description": "OpenClaw'dan daha güvenli, daha hızlı, daha ucuz AI agent CLI. Multi-agent, self-evolving skills, audit log, maliyet optimizasyonu ve NatureCo platform-native.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"natureco": "bin/natureco.js"
|
package/src/commands/skills.js
CHANGED
|
@@ -207,7 +207,7 @@ async function listSkills() {
|
|
|
207
207
|
|
|
208
208
|
console.log(chalk.gray('\n ' + '─'.repeat(48)));
|
|
209
209
|
console.log(chalk.cyan.bold('\n Yüklü Skill\'ler') + chalk.gray(` — toplam ${allSkills.length} (${builtinCount} yerleşik${userCount ? `, ${userCount} kişisel` : ''})`));
|
|
210
|
-
console.log(chalk.gray('
|
|
210
|
+
console.log(chalk.gray(' Yerleşikler: ~/.natureco/skills-builtin · Kişiseller: ~/.natureco/skills · Araçlar: ~/.natureco/tools\n'));
|
|
211
211
|
|
|
212
212
|
if (allSkills.length === 0) {
|
|
213
213
|
// Yerleşikler pakette gelir; bu duruma normalde ancak paket bozulursa düşülür
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* builtin-links — yerleşik skill ve araçları ~/.natureco altında GÖRÜNÜR yapar.
|
|
3
|
+
*
|
|
4
|
+
* Saha raporu (v5.48 sonrası): "~/.natureco içinde skill/araç yok". Yerleşikler
|
|
5
|
+
* npm paketinin içinde yaşar (node_modules/natureco-cli/...) ve işlevsel olarak
|
|
6
|
+
* çalışırlar; ama kullanıcı "sistem dosyalarında" göremiyor. Kopyalamak yerine
|
|
7
|
+
* dizin bağlantısı kurulur (Windows: junction — yönetici GEREKTİRMEZ; unix: symlink):
|
|
8
|
+
*
|
|
9
|
+
* ~/.natureco/skills-builtin → <paket>/skills (yerleşik skill'ler)
|
|
10
|
+
* ~/.natureco/tools → <paket>/src/tools (araç kaynakları)
|
|
11
|
+
*
|
|
12
|
+
* Kazanımlar: gezinilebilir + paket güncellenince otomatik güncel + sıfır kopya.
|
|
13
|
+
* Skill keşfi bu bağlantıları TARAMAZ (çift sayım olmaz) — bu salt görünürlük.
|
|
14
|
+
* Kullanıcının kendi skill'leri ~/.natureco/skills'te yaşamaya devam eder.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
const fs = require('fs');
|
|
18
|
+
const path = require('path');
|
|
19
|
+
const os = require('os');
|
|
20
|
+
|
|
21
|
+
const LINKS = [
|
|
22
|
+
{ name: 'skills-builtin', target: path.join(__dirname, '..', '..', 'skills') },
|
|
23
|
+
{ name: 'tools', target: path.join(__dirname, '..', 'tools') },
|
|
24
|
+
];
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Bağlantıları kurar/onarır. Hızlıdır (birkaç lstat) — her CLI açılışında çağrılır.
|
|
28
|
+
* @param {string} [baseDir] test için ~/.natureco yerine kullanılacak dizin
|
|
29
|
+
*/
|
|
30
|
+
function ensureBuiltinLinks(baseDir) {
|
|
31
|
+
const base = baseDir || path.join(os.homedir(), '.natureco');
|
|
32
|
+
for (const { name, target } of LINKS) {
|
|
33
|
+
try {
|
|
34
|
+
if (!fs.existsSync(target)) continue; // paket bozuksa sessiz geç
|
|
35
|
+
const linkPath = path.join(base, name);
|
|
36
|
+
|
|
37
|
+
let st = null;
|
|
38
|
+
try { st = fs.lstatSync(linkPath); } catch { /* yok — kurulacak */ }
|
|
39
|
+
|
|
40
|
+
if (st) {
|
|
41
|
+
if (st.isSymbolicLink()) {
|
|
42
|
+
// Mevcut bağlantı doğru hedefe mi işaret ediyor? (npm prefix değişmiş olabilir)
|
|
43
|
+
let ok = false;
|
|
44
|
+
try { ok = fs.realpathSync(linkPath) === fs.realpathSync(target); } catch { /* kırık link */ }
|
|
45
|
+
if (ok) continue;
|
|
46
|
+
fs.unlinkSync(linkPath); // yanlış/kırık — yeniden kur
|
|
47
|
+
} else {
|
|
48
|
+
// Gerçek dosya/klasör (bağlantı değil): kullanıcı verisi olabilir — DOKUNMA
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
fs.mkdirSync(base, { recursive: true });
|
|
54
|
+
fs.symlinkSync(target, linkPath, process.platform === 'win32' ? 'junction' : 'dir');
|
|
55
|
+
} catch { /* bağlantı kurulamazsa komutu bozma — görünürlük kritik işlev değil */ }
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
module.exports = { ensureBuiltinLinks, _internal: { LINKS } };
|