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 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.48.0",
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"
@@ -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(' Yerleşik skill\'ler paketle birlikte gelir; kişisel skill\'ler ~/.natureco/skills altında yaşar.\n'));
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 } };