wormclaude 1.0.17 → 1.0.19

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/dist/api.js CHANGED
@@ -12,6 +12,40 @@ export function loadConfig() {
12
12
  model: process.env.WORMCLAUDE_MODEL || stored.model || 'wormclaude',
13
13
  };
14
14
  }
15
+ // Kullanıcının doğrulama başvuru durumu (GET /v1/verify).
16
+ export async function getVerifyStatus(config) {
17
+ try {
18
+ const r = await fetch(`${config.baseUrl}/verify`, {
19
+ headers: { ...(config.apiKey ? { Authorization: `Bearer ${config.apiKey}` } : {}) },
20
+ signal: AbortSignal.timeout(8000),
21
+ });
22
+ if (!r.ok)
23
+ return null;
24
+ const d = await r.json();
25
+ return { trustLevel: Number(d.trust_level ?? 0), request: d.request ?? null };
26
+ }
27
+ catch {
28
+ return null;
29
+ }
30
+ }
31
+ // Doğrulama başvurusu gönder (POST /v1/verify). Döner: {ok, status?} veya {error}.
32
+ export async function submitVerification(config, payload, requestedLevel = 3) {
33
+ try {
34
+ const r = await fetch(`${config.baseUrl}/verify`, {
35
+ method: 'POST',
36
+ headers: { 'Content-Type': 'application/json', ...(config.apiKey ? { Authorization: `Bearer ${config.apiKey}` } : {}) },
37
+ body: JSON.stringify({ payload, requested_level: requestedLevel }),
38
+ signal: AbortSignal.timeout(10000),
39
+ });
40
+ const d = await r.json().catch(() => ({}));
41
+ if (!r.ok)
42
+ return { ok: false, error: d.detail || `HTTP ${r.status}` };
43
+ return { ok: true, status: d.status };
44
+ }
45
+ catch (e) {
46
+ return { ok: false, error: e?.message || String(e) };
47
+ }
48
+ }
15
49
  // Giriş yapan kullanıcının hesabı (plan + kalan token + güven seviyesi). Hata olursa null.
16
50
  export async function fetchAccount(config) {
17
51
  try {
package/dist/commands.js CHANGED
@@ -13,8 +13,8 @@ import { loadSkills, getSkills, getSkillsDir, installSkill, updateSkill, removeS
13
13
  import { getApprovedCommands, approveCommands, unapproveCommands, clearApproved } from './cmdsec.js';
14
14
  import { isLearnEnabled, setLearnEnabled, getLearnFile, getLearnCount } from './learn.js';
15
15
  import { saveMemoryFact, getMemoryPath, loadMemoryContext } from './memory.js';
16
- import { fetchAccount } from './api.js';
17
- import { programText } from './program.js';
16
+ import { fetchAccount, getVerifyStatus, submitVerification } from './api.js';
17
+ import { programText, tier } from './program.js';
18
18
  export const COMMANDS = [
19
19
  { name: '/help', desc: 'komutları ve ipuçlarını göster' },
20
20
  { name: '/clear', desc: 'sohbeti ve geçmişi temizle' },
@@ -42,6 +42,7 @@ export const COMMANDS = [
42
42
  { name: '/copy', desc: 'son yaniti panoya kopyala (/copy all = tum sohbet)' },
43
43
  { name: '/izinler', desc: 'onayli shell komutlarini yonet (list/add/remove/clear)' },
44
44
  { name: '/program', desc: 'Doğrulanmış Araştırmacı Programı — güven seviyeni göster' },
45
+ { name: '/dogrula', desc: 'Doğrulanmış Araştırmacı başvurusu gönder: /dogrula <profil/şirket/gerekçe>' },
45
46
  { name: '/export', desc: 'sohbeti dosyaya kaydet' },
46
47
  { name: '/resume', desc: 'en son kaydedilen oturumu yükle' },
47
48
  { name: '/quit', desc: 'çıkış' },
@@ -607,6 +608,39 @@ export async function runSlashCommand(input, ctx) {
607
608
  ctx.note(programText(acc ? acc.trustLevel : 0));
608
609
  return true;
609
610
  }
611
+ case '/dogrula': {
612
+ const justification = (arg || '').trim();
613
+ // Argsız → mevcut durum + talimat
614
+ if (!justification) {
615
+ const st = await getVerifyStatus(ctx.config);
616
+ const lvl = st ? st.trustLevel : 0;
617
+ const lines = [];
618
+ lines.push(`Mevcut seviyen: ${lvl} (${tier(lvl).name}).`);
619
+ if (st?.request) {
620
+ const r = st.request;
621
+ const dur = r.status === 'pending' ? 'inceleniyor' : r.status === 'approved' ? 'ONAYLANDI' : 'reddedildi';
622
+ lines.push(`Son başvurun: seviye ${r.requested_level} talebi — ${dur}.` + (r.note ? `\nAdmin notu: ${r.note}` : ''));
623
+ }
624
+ if (lvl < 3) {
625
+ lines.push('');
626
+ lines.push('Doğrulanmış Güvenlik Araştırmacısı (seviye 3) başvurusu için:');
627
+ lines.push(' /dogrula HackerOne/Bugcrowd profilin · şirket/kurum · rolün · yetki bağlamın');
628
+ lines.push('Örnek: /dogrula h1.com/kullaniciadi, AcmeSec pentester, yetkili angajmanlar');
629
+ }
630
+ ctx.note(lines.join('\n'));
631
+ return true;
632
+ }
633
+ if (justification.length < 10) {
634
+ ctx.note('Gerekçe çok kısa. Profil/şirket/yetki bilgini ekle.');
635
+ return true;
636
+ }
637
+ ctx.note('Başvuru gönderiliyor…');
638
+ const res = await submitVerification(ctx.config, justification, 3);
639
+ ctx.note(res.ok
640
+ ? '✓ Başvurun alındı (seviye 3 talebi). Admin incelemesi sonrası seviyen güncellenecek. Durum: /dogrula'
641
+ : `Başvuru gönderilemedi: ${res.error}`);
642
+ return true;
643
+ }
610
644
  case '/export': {
611
645
  fs.mkdirSync(SESSION_DIR, { recursive: true });
612
646
  const file = path.join(SESSION_DIR, `session-${tsStamp()}.json`);
package/dist/program.js CHANGED
@@ -2,10 +2,10 @@
2
2
  // Backend (gateway) min_trust'lı prompt modüllerini/araçları/bütçeyi bu seviyeye göre açar.
3
3
  export const TIERS = [
4
4
  { level: 0, name: 'Normal Kullanıcı', badge: '', desc: 'Temel erişim. Yetkili bağlamda güvenlik+kod yardımı.' },
5
- { level: 1, name: 'Doğrulanmış Kullanıcı', badge: 'Doğrulanmış', desc: 'E-posta/kimlik doğrulandı. Artırılmış bütçe.' },
6
- { level: 2, name: 'Araştırmacı', badge: 'Araştırmacı', desc: 'Güvenlik skill/extension erişimi.' },
7
- { level: 3, name: 'Doğrulanmış Güvenlik Araştırmacısı', badge: 'Güvenlik Arş.', desc: 'Tam saldırgan güvenlik modülü + gelişmiş araçlar + yüksek bütçe.' },
8
- { level: 4, name: 'Kurumsal Müşteri', badge: 'Kurumsal', desc: 'Çok-koltuk, denetim günlüğü, özel extension.' },
5
+ { level: 1, name: 'Doğrulanmış Kullanıcı', badge: 'Doğrulanmış', desc: 'E-posta/kimlik doğrulandı. +50k token.' },
6
+ { level: 2, name: 'Araştırmacı', badge: 'Araştırmacı', desc: 'Güvenlik skill/extension erişimi. +100k token.' },
7
+ { level: 3, name: 'Doğrulanmış Güvenlik Araştırmacısı', badge: 'Güvenlik Arş.', desc: 'Tam saldırgan güvenlik modülü + computer-use araçları + 300k token.' },
8
+ { level: 4, name: 'Kurumsal Müşteri', badge: 'Kurumsal', desc: 'Çok-koltuk, denetim günlüğü, özel extension. +1M token.' },
9
9
  { level: 5, name: 'Dahili Ekip', badge: 'Dahili', desc: 'Sınırsız erişim.' },
10
10
  ];
11
11
  export function tier(level) {
package/dist/theme.js CHANGED
@@ -8,4 +8,4 @@ export const theme = {
8
8
  green: '#4ade80',
9
9
  errorRed: '#ff6b6b',
10
10
  };
11
- export const VERSION = '1.0.17';
11
+ export const VERSION = '1.0.19';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wormclaude",
3
- "version": "1.0.17",
3
+ "version": "1.0.19",
4
4
  "description": "WormClaude CLI - uncensored security+code assistant (ink TUI, Claude-style)",
5
5
  "type": "module",
6
6
  "bin": {