natureco-cli 5.48.0 → 5.49.1
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 +14 -0
- package/bin/natureco.js +2 -0
- package/package.json +1 -1
- package/src/commands/skills.js +1 -1
- package/src/tools/workflow.js +15 -1
- package/src/utils/builtin-links.js +59 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to NatureCo CLI will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [5.49.1] - 2026-07-10 — "FIX: ajan kendi skill/araç envanterini yanlış anlatıyordu"
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
- **"Kaç skill'in var?" sorusuna ajan 9 diyordu (gerçek: 319).** Ajan kendi kurulumunu bilmediğinden dosya sistemini keşfe çıkıyor ve `~/.natureco/skills`'i (yalnız KULLANICI skill'leri) sayıp yanlış cevap veriyordu; yerleşiklerin paket içinde yaşadığından habersizdi. Sistem mesajına öz-bilgi eklendi: gerçek skill/araç sayıları + yerleşiklerin konumu + "~/.natureco/skills yerleşikleri içermez" notu. E2E doğrulandı: "kaç skillin var?" → "319 skill ve 90 araç" + doğru konum.
|
|
9
|
+
|
|
10
|
+
## [5.49.0] - 2026-07-10 — "Yerleşik skill/araçlar artık ~/.natureco altında görünür"
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- **`~/.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.
|
|
14
|
+
- `natureco skills list` başlığı üç konumu da gösterir: yerleşikler (`skills-builtin`), kişiseller (`skills`), araçlar (`tools`).
|
|
15
|
+
|
|
16
|
+
### Notes
|
|
17
|
+
- 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.
|
|
18
|
+
|
|
5
19
|
## [5.48.0] - 2026-07-10 — "Güncelleme bildirimi + skill/araç görünürlüğü"
|
|
6
20
|
|
|
7
21
|
### 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.1",
|
|
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
|
package/src/tools/workflow.js
CHANGED
|
@@ -250,10 +250,24 @@ async function workflow(params) {
|
|
|
250
250
|
'\nTum arac listesi (isimle cagir; parametre yanlissa <tool_results> duzeltir): ' + allNames.join(', '),
|
|
251
251
|
].join('\n');
|
|
252
252
|
}
|
|
253
|
+
// Oz-bilgi: ajan "kac skill'in/aracin var, nerede kayitli" sorularinda dosya
|
|
254
|
+
// sistemini kesfe cikip YANLIS sayiyordu (~/.natureco/skills yalniz kullanici
|
|
255
|
+
// skill'leridir; yerlesikler paketin icindedir). Gercek sayilari ve konumlari
|
|
256
|
+
// sistem mesajina gomuyoruz ki ajan kendi kurulumunu dogru anlatsin.
|
|
257
|
+
let selfInfo = '';
|
|
258
|
+
try {
|
|
259
|
+
const skillCount = require('../utils/skill-index')._discoverSkills().length;
|
|
260
|
+
const pkgRoot = path.join(__dirname, '..', '..');
|
|
261
|
+
selfInfo = '\n\nKendi kurulumun (kullanici sorarsa BU bilgiyi kullan, dosya sayarak tahmin etme):'
|
|
262
|
+
+ '\n- Toplam skill: ' + skillCount + ' (yerlesikler paketle gelir: ' + path.join(pkgRoot, 'skills') + ' — ~/.natureco/skills-builtin baglantisi da ayni yere acilir)'
|
|
263
|
+
+ '\n- Toplam arac: ' + tools.length + ' (kaynaklari: ' + path.join(pkgRoot, 'src', 'tools') + ' — ~/.natureco/tools baglantisi)'
|
|
264
|
+
+ '\n- ~/.natureco/skills SADECE kullanicinin kendi ekledigi skill\'lerdir; yerlesikleri ICERMEZ.';
|
|
265
|
+
} catch { /* sayilamazsa satiri atla */ }
|
|
266
|
+
|
|
253
267
|
const sysMsg = [
|
|
254
268
|
'Sen NatureCo adli, arac kullanabilen bir yapay zeka ajanisin. Kullanicinin istegini SADECE anlatarak degil, ARACLARI cagirarak fiilen gerceklestir.',
|
|
255
269
|
memCtx ? '\nKullanici bilgisi:\n' + memCtx : '',
|
|
256
|
-
'\n\nOrtam:\n- Isletim sistemi: ' + process.platform + '\n- Kullanici home: ' + os.homedir() + '\n- Masaustu: ' + desktop + '\n- Calisma dizini: ' + process.cwd(),
|
|
270
|
+
'\n\nOrtam:\n- Isletim sistemi: ' + process.platform + '\n- Kullanici home: ' + os.homedir() + '\n- Masaustu: ' + desktop + '\n- Calisma dizini: ' + process.cwd() + selfInfo,
|
|
257
271
|
'\n\nArac cagirmak icin TAM olarak su formati kullan:\n<minimax:tool_call>\n<invoke name="ARAC_ADI">\n<parameter name="PARAM">DEGER</parameter>\n</invoke>\n</minimax:tool_call>',
|
|
258
272
|
'\n\nKullanabilecegin araclar:',
|
|
259
273
|
'- write_file: dosya olustur/uzerine yaz. parametreler: path (TAM yol), content (dosyanin TAM icerigi). Kod/oyun/site isteniyorsa TUM icerigi content icine yaz, kisaltma.',
|
|
@@ -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 } };
|