natureco-cli 5.33.0 → 5.35.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 +23 -0
- package/package.json +1 -1
- package/src/tools/agentic-runner.js +5 -1
- package/src/tools/workflow.js +7 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,29 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to NatureCo CLI will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [5.35.0] - 2026-07-05 — "WEB ARAMA + TODO + GIT-ZINCIRI DUZELTMELERI (sistematik denetim devam)"
|
|
6
|
+
|
|
7
|
+
Kullanicinin "tum ozellikleri tek tek test et" talebiyle sistematik denetime devam edildi; ayni kok-neden deseni (arac var ama agentic promptta hic tanitilmamis/yanlis dosya adi) 3 yerde daha bulundu.
|
|
8
|
+
|
|
9
|
+
### 🐛 Düzeltme
|
|
10
|
+
- **Web arama "internet erisimim yok" YALANI**: `duckduckgo_search`/`web_search` allowlist'te yoktu; ajan "internet erisimim kisitli" diyip halusinasyon yapiyordu. Ayrica alias eslemesi YANLIS dosyaya (`duckduckgo_search.js` — mevcut degil) gidiyordu, dogrusu `duckduckgo.js`. Artik duckduckgo (key gerektirmez, HER ZAMAN calisir) + web_search (Tavily varsa) tanimli ve dogru dosyaya esleniyor.
|
|
11
|
+
- **Todo sistemi gorunmuyordu**: `todo_write` allowlist'te yoktu; ajan "gorev ekle" istegini yanlislikla memory_tree'ye yaziyordu (kalici hafiza ile aktif is takibini karistiriyordu). Artik todo_write tanimli ve doğru kullaniliyor.
|
|
12
|
+
- **`cd` kabuk builtin'i exec allowlist'inde yoktu**: ajan "cd <proje> && git status" gibi zincir kurdugunda TUM komut politika-disi sayilip reddediliyordu; ajan da bunu yanlislikla "guvenlik politikasi" diye kullaniciya bildirip gercek git durumunu hic gostermiyordu. `cd`/`pushd`/`popd` artik izinli (dizin degistirme, dusuk risk).
|
|
13
|
+
|
|
14
|
+
Doğrulama: 4 senaryo E2E (web arama, todo, git) — hepsi dogru calisti; git ozellikle GERCEK repo durumuyla birebir eslesen doğru cevap verdi. **505 test yeşil**, ESLint temiz.
|
|
15
|
+
|
|
16
|
+
## [5.34.0] - 2026-07-05 — "CRON DÜZELTMESİ (sahte-başarı önlendi + daemon dürüstlüğü)"
|
|
17
|
+
|
|
18
|
+
### 🐛 Düzeltme (kullanıcının "cron gorevleri olusturup uygulayabiliyor mu" sorusu üzerine bulundu)
|
|
19
|
+
- **`cron_create` agentic allowlist'te HİÇ YOKTU** — modele hic tanitilmamisti. Ajan "her gun X yap" gibi istekte zorunlu olarak `bash` ile native OS scheduling'e (Windows: schtasks/Register-ScheduledTask, macOS: crontab) yoneliyordu — tutarsiz (natureco cron list'te gorunmez) ve bazen basarisiz komuttan sonra SAHTE BASARI iddia ediyordu. Artik `cron_create` allowlist'te + sistem promptunda taniml.
|
|
20
|
+
- **Daemon gerekliligi dürüstçe soyleniyor**: cron_create sonrasi olusan gorevin FIILEN tetiklenmesi icin arka plan servisinin (`natureco daemon start/install`) calisiyor olmasi gerekir — bu adim atlanirsa gorev sadece database'e (crons.json) kaydedilir, calismaz. Ajan artik bunu acikca soyluyor, kesin basari iddia etmiyor.
|
|
21
|
+
- Regresyon kilidi: DEFAULT_ALLOWED icinde cron_create + temel arac testleri (2 yeni test).
|
|
22
|
+
|
|
23
|
+
### 🔍 Sistematik denetim (kullanicinin "tüm özellikleri tek tek test et" talebiyle)
|
|
24
|
+
90 arac dosyasi yuklendi (89/90 execute'a sahip, 1 yardimci modul); 11 yerel arac fiilen calistirildi (10/11 basarili, macos_screenshot dogru sekilde "sadece macOS" dedi); 23 CLI komutu calistirildi (22/23 basarili, 1 yanlis alt-komut adi = false positive).
|
|
25
|
+
|
|
26
|
+
Doğrulama: cron_create E2E (crons.json'a doğru yazıldı, schedule doğru, daemon uyarısı görüldü); **500+ test yeşil**, ESLint temiz.
|
|
27
|
+
|
|
5
28
|
## [5.33.0] - 2026-07-04 — "OTURUM-BAŞI BEKLEYEN-İŞ HATIRLATMASI (Theseus deseni)"
|
|
6
29
|
|
|
7
30
|
### ✨ Yeni (Hafıza)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "natureco-cli",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.35.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"
|
|
@@ -21,7 +21,7 @@ const os = require('os');
|
|
|
21
21
|
// icinde approvals politikasini uyguluyor (isSafeCommand → direkt; tehlikeli → red;
|
|
22
22
|
// digerleri → allowlist/full moda gore). Yani keyfi/yikici komut calismaz.
|
|
23
23
|
// Diger ~85 arac (discord, telegram, cron, browser...) bilerek DISARIDA.
|
|
24
|
-
const DEFAULT_ALLOWED = ['write_file', 'read_file', 'edit_file', 'skill_view', 'bash', 'file_search', 'list_dir', 'memory_write', 'memory_tree'];
|
|
24
|
+
const DEFAULT_ALLOWED = ['write_file', 'read_file', 'edit_file', 'skill_view', 'bash', 'file_search', 'list_dir', 'memory_write', 'memory_tree', 'cron_create', 'duckduckgo', 'web_search', 'todo_write'];
|
|
25
25
|
|
|
26
26
|
const TOOL_ALIASES = {
|
|
27
27
|
write_file: 'write_file', create_file: 'write_file', writefile: 'write_file', write: 'write_file', create: 'write_file', save_file: 'write_file', new_file: 'write_file',
|
|
@@ -33,6 +33,9 @@ const TOOL_ALIASES = {
|
|
|
33
33
|
list_dir: 'list_dir', ls: 'list_dir', dir: 'list_dir', list_directory: 'list_dir', filesystem: 'list_dir',
|
|
34
34
|
memory_write: 'memory_write', remember: 'memory_write', save_memory: 'memory_write', memorize: 'memory_write', memory_save: 'memory_write', save_fact: 'memory_write',
|
|
35
35
|
memory_tree: 'memory_tree', tree_memory: 'memory_tree', memory: 'memory_tree', hafiza: 'memory_tree',
|
|
36
|
+
cron_create: 'cron_create', cron: 'cron_create', schedule_task: 'cron_create', create_cron: 'cron_create',
|
|
37
|
+
duckduckgo_search: 'duckduckgo', duckduckgo: 'duckduckgo', web_search: 'web_search', search_web: 'web_search', internet_search: 'duckduckgo',
|
|
38
|
+
todo_write: 'todo_write', todo: 'todo_write', task_write: 'todo_write', todos: 'todo_write',
|
|
36
39
|
};
|
|
37
40
|
|
|
38
41
|
function expandHome(p) {
|
|
@@ -65,6 +68,7 @@ const AGENT_EXEC_ALLOW = new Set([
|
|
|
65
68
|
'find', 'wc', 'which', 'where', 'whereis', 'tree', 'stat', 'file', 'sort', 'uniq', 'diff',
|
|
66
69
|
'mkdir', 'touch', 'cp', 'copy', 'mv', 'move', 'git', 'jq', 'sed', 'awk', 'date', 'env', 'whoami',
|
|
67
70
|
'open', 'start', 'xdg-open', 'explorer', // uygulama/URL/dosya ac (dusuk risk, asistan icin gerekli)
|
|
71
|
+
'cd', 'pushd', 'popd', // dizin degistirme (kabuk builtin, zincirli komutlarda sik kullanilir: "cd X && npm test")
|
|
68
72
|
]);
|
|
69
73
|
const AGENT_EXEC_BLOCK_PATTERNS = [
|
|
70
74
|
/\bnpm\s+publish\b/i, /\byarn\s+publish\b/i, /\bpnpm\s+publish\b/i,
|
package/src/tools/workflow.js
CHANGED
|
@@ -257,12 +257,19 @@ async function workflow(params) {
|
|
|
257
257
|
'- list_dir: dizin icerigini listele. parametre: path',
|
|
258
258
|
'- bash: kabuk komutu calistir (npm, git, node, python, test, ls, grep/findstr, mkdir...). parametre: command. Guvenli komutlar dogrudan calisir; yikici/tehlikeli komutlar guvenlik politikasiyla engellenir. Icerik aramasi icin grep/findstr kullan.',
|
|
259
259
|
'- skill_view: gorevle ilgili bir skill yukle. parametre: name',
|
|
260
|
+
'- cron_create: zamanlanmis/periyodik gorev (cron) olustur. parametreler: name, schedule (cron ifadesi orn. "0 9 * * *" ya da "every day 9am" gibi preset), command, description.',
|
|
261
|
+
'- duckduckgo_search: internetten anlik arama yap (API key gerekmez, HER ZAMAN calisir). parametreler: query, maxResults.',
|
|
262
|
+
'- web_search: internetten arama (Tavily API key ayarliysa daha zengin sonuc; ayarli degilse hata doner — o zaman duckduckgo_search kullan). parametreler: query, maxResults.',
|
|
263
|
+
'- todo_write: gorev/yapilacaklar listesi yonet. parametre: action (list/add/update/start/done/remove/clear), + action\'a gore diger alanlar.',
|
|
260
264
|
'- memory_write: HIZLI tek bilgi kaydet (isim, kisa tercih). parametreler: username ("' + memUser + '"), fact, category. YENI oturumda hatirlanir.',
|
|
261
265
|
'- memory_tree: AGAC-HAFIZA — zengin/kategorize kalici bilgi (proje, karar, teknik not, kisisel detay). action: index|read|search|append; username="' + memUser + '"; append icin: root (1-kisisel|2-teknik|3-kararlar) + branch (dal basligi) + content (yaprak). YENI oturumda hatirlanir.',
|
|
262
266
|
'\nKurallar:',
|
|
263
267
|
'- Kullanici kalici bilgi paylasirsa (isim, tercih, parola, proje, karar, onemli detay) ya da "hatirla / not al / kaydet" derse HEMEN KAYDET (username="' + memUser + '"): kisa tek bilgi → memory_write; zengin/kategorize bilgi → memory_tree(append, dogru root/branch). Trivial/gecici seyleri kaydetme.',
|
|
264
268
|
'- Kullaniciya ozel bir sey sorulunca (gecmis, proje, tercih, karar) once memory_tree(search/read) ile ilgili kok/dali OKU (hedefli, tum hafizayi degil). Tek primary: bilgi tek yerde yasar; digerine sadece "bkz:". Credential/secret ASLA duz metin.',
|
|
265
269
|
'- Bir is YARIM kalirsa ya da kullanici "sonra / yarin / daha sonra yapalim" derse memory_tree(action:append, root:"3-kararlar", branch:"Bekleyen İşler", content:"...") ile kaydet — yeni oturum basinda otomatik hatirlatilir. Bir bekleyen is TAMAMLANINCA memory_tree(action:remove, root:"3-kararlar", query:"<anahtar kelime>") ile kaldir.',
|
|
270
|
+
'- Guncel/internet bilgisi gerektiren bir soru gelirse ONCE duckduckgo_search ile ara ("internet erisimim yok" DEME — bu arac her zaman calisir, API key gerekmez).',
|
|
271
|
+
'- "Gorev listesi / yapilacaklar / todo" istenirse todo_write kullan (memory_tree DEGIL — o kalici bilgi icin, todo_write ise aktif is takibi icin).',
|
|
272
|
+
'- Zamanlanmis/periyodik/tekrarlayan gorev (cron, "her gun/hafta X yap", hatirlatici) istenirse SADECE cron_create arac ini kullan; bash ile crontab/schtasks/Register-ScheduledTask DUZENLEME (tutarsiz olur, "natureco cron list" ile gorunmez). cron_create sonrasi kullaniciya ACIKCA soyle: gorevin fiilen tetiklenmesi icin arka plan servisinin calisiyor olmasi gerekir ("natureco daemon start" ya da "natureco daemon install"); bu adim atlanirsa gorev database\'e kaydedilir ama calismaz. Bunu SOYLEMEDEN "olusturuldu, calisacak" gibi kesin basari iddia etme.',
|
|
266
273
|
'- MEVCUT bir dosyayi degistirmeden ONCE read_file ile oku; sonra edit_file ile hedefli degisiklik yap (tum dosyayi write_file ile ezme).',
|
|
267
274
|
'- Bir seyi nerede oldugunu bilmiyorsan once file_search/list_dir/bash(grep) ile kesfet.',
|
|
268
275
|
'- Kod yazdiktan/degistirdikten sonra gerektiginde bash ile calistir/test et (orn. "node dosya.js", "npm test"); hata cikarsa duzelt.',
|