@thorrangonak/kanka 0.1.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/LICENSE +21 -0
- package/README.md +110 -0
- package/dist/banner.d.ts +9 -0
- package/dist/banner.d.ts.map +1 -0
- package/dist/banner.js +43 -0
- package/dist/banner.js.map +1 -0
- package/dist/cli.d.ts +9 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +107 -0
- package/dist/cli.js.map +1 -0
- package/dist/extensions/turkce-komutlar.d.ts +14 -0
- package/dist/extensions/turkce-komutlar.d.ts.map +1 -0
- package/dist/extensions/turkce-komutlar.js +83 -0
- package/dist/extensions/turkce-komutlar.js.map +1 -0
- package/dist/extensions/turkce-mod.d.ts +9 -0
- package/dist/extensions/turkce-mod.d.ts.map +1 -0
- package/dist/extensions/turkce-mod.js +17 -0
- package/dist/extensions/turkce-mod.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/system-prompt.d.ts +7 -0
- package/dist/system-prompt.d.ts.map +1 -0
- package/dist/system-prompt.js +59 -0
- package/dist/system-prompt.js.map +1 -0
- package/package.json +61 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 thorrangonak
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<strong>kanka</strong>
|
|
3
|
+
</p>
|
|
4
|
+
<p align="center">
|
|
5
|
+
<em>Türkçe konuşan terminal kodlama asistanı.</em><br>
|
|
6
|
+
<strong>"Kanka, şunu yapsana."</strong>
|
|
7
|
+
</p>
|
|
8
|
+
<p align="center">
|
|
9
|
+
<a href="https://www.npmjs.com/package/@thorrangonak/kanka"><img alt="npm" src="https://img.shields.io/npm/v/@thorrangonak/kanka?style=flat-square"></a>
|
|
10
|
+
<a href="LICENSE"><img alt="license" src="https://img.shields.io/badge/license-MIT-blue?style=flat-square"></a>
|
|
11
|
+
<img alt="node" src="https://img.shields.io/badge/node-%3E%3D20.6-43853d?style=flat-square">
|
|
12
|
+
</p>
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Nedir?
|
|
17
|
+
|
|
18
|
+
**kanka**, terminalde Türkçe konuşarak kullanabileceğin bir AI kodlama asistanıdır. Claude, GPT, Gemini, GLM gibi LLM'leri arkanda kullanır; sen `kanka` yazarsın, o işi yapar.
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
$ kanka
|
|
22
|
+
> Bana NextJS + Tailwind ile minimal bir landing page yap
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Özellikler
|
|
26
|
+
|
|
27
|
+
- 🇹🇷 **Türkçe-first** — sistem prompt'u, slash komutları ve kişilik tamamen Türkçe.
|
|
28
|
+
- 🛠️ **4 araç** — `read`, `write`, `edit`, `bash`. Karmaşık olmadan iş görür.
|
|
29
|
+
- 🧩 **Genişletilebilir** — skill, extension, prompt template, tema ekleyebilirsin.
|
|
30
|
+
- 🔒 **MIT lisans** — açık kaynak, fork'la istediğini yap.
|
|
31
|
+
- ⚡ **Hızlı kurulum** — tek komutla.
|
|
32
|
+
|
|
33
|
+
## Kurulum
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
npm install -g @thorrangonak/kanka
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Hızlı başlangıç
|
|
40
|
+
|
|
41
|
+
API anahtarınla giriş yap:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
export ANTHROPIC_API_KEY=sk-ant-...
|
|
45
|
+
kanka
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Veya mevcut Claude Pro/Max aboneliğinle:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
kanka
|
|
52
|
+
/login
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Sonra konuş kanka'yla:
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
> sana güveniyorum kanka, şu projeyi ayağa kaldır
|
|
59
|
+
> hata var şurada, bul ve düzelt
|
|
60
|
+
> testlerimi yaz
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Türkçe komutlar
|
|
64
|
+
|
|
65
|
+
Oturum içinde slash komutları:
|
|
66
|
+
|
|
67
|
+
| Türkçe | Pi alias | Açıklama |
|
|
68
|
+
|--------|----------|----------|
|
|
69
|
+
| `/yardım` | `/help` | Komut listesi |
|
|
70
|
+
| `/çık` | `/exit` | Oturumdan çık |
|
|
71
|
+
| `/temizle` | `/clear` | Ekranı temizle |
|
|
72
|
+
| `/durum` | `/status` | Oturum durumu |
|
|
73
|
+
| `/oturum` | `/sessions` | Oturumları listele |
|
|
74
|
+
| `/yeni` | `/new` | Yeni oturum başlat |
|
|
75
|
+
| `/selam` | — | kanka'dan bir selam |
|
|
76
|
+
|
|
77
|
+
Pi'nin orijinal İngilizce komutları da çalışır.
|
|
78
|
+
|
|
79
|
+
## CLI bayrakları
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
kanka --yardım # Türkçe yardım
|
|
83
|
+
kanka --versiyon # Versiyon
|
|
84
|
+
kanka "görev" # Doğrudan görev ver
|
|
85
|
+
echo "iş" | kanka # Stdin'den mesaj
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Felsefe
|
|
89
|
+
|
|
90
|
+
kanka, **pi-coding-agent** çekirdeğini kullanır. Pi'nin "minimal, hackable, kendi workflow'una uyarla" felsefesini paylaşır — sadece dili ve markası Türk.
|
|
91
|
+
|
|
92
|
+
- Karmaşık olmasın, anlaşılır olsun.
|
|
93
|
+
- "Sub-agent", "plan mode" gibi kapalı kutu özellikler **yok**. İstersen extension olarak yaz.
|
|
94
|
+
- Sistem prompt'u, komutlar, temalar — hepsi düzenlenebilir.
|
|
95
|
+
|
|
96
|
+
## Geliştirme
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
git clone https://github.com/thorrangonak/kanka.git
|
|
100
|
+
cd kanka
|
|
101
|
+
npm install
|
|
102
|
+
npm run build
|
|
103
|
+
node dist/cli.js
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## Lisans
|
|
107
|
+
|
|
108
|
+
[MIT](LICENSE) © thorrangonak
|
|
109
|
+
|
|
110
|
+
`pi-coding-agent` (MIT) © Mario Zechner / Earendil Works üzerinde çalışır.
|
package/dist/banner.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../src/banner.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CA6BjD;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CASvC"}
|
package/dist/banner.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
/**
|
|
3
|
+
* kanka CLI banner'ı. Açılışta gösterilir.
|
|
4
|
+
*/
|
|
5
|
+
export function printBanner(version) {
|
|
6
|
+
const logo = [
|
|
7
|
+
" ╦╔═╔═╗╔╗╔╦╔═╔═╗ ",
|
|
8
|
+
" ╠╩╗╠═╣║║║╠╩╗╠═╣ ",
|
|
9
|
+
" ╩ ╩╩ ╩╝╚╝╩ ╩╩ ╩ ",
|
|
10
|
+
];
|
|
11
|
+
console.log();
|
|
12
|
+
for (const line of logo) {
|
|
13
|
+
console.log(chalk.cyan(line));
|
|
14
|
+
}
|
|
15
|
+
console.log();
|
|
16
|
+
console.log(chalk.bold.white(" kanka ") +
|
|
17
|
+
chalk.dim(`v${version}`) +
|
|
18
|
+
chalk.gray(" — ") +
|
|
19
|
+
chalk.italic.white("Kanka, şunu yapsana."));
|
|
20
|
+
console.log(chalk.dim(" Türkçe konuşan terminal kodlama asistanı"));
|
|
21
|
+
console.log();
|
|
22
|
+
console.log(chalk.dim(" Yardım: ") +
|
|
23
|
+
chalk.cyan("/yardım") +
|
|
24
|
+
chalk.dim(" Çıkış: ") +
|
|
25
|
+
chalk.cyan("/çık") +
|
|
26
|
+
chalk.dim(" veya ") +
|
|
27
|
+
chalk.cyan("Ctrl+C"));
|
|
28
|
+
console.log();
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Karşılama mesajı (rastgele).
|
|
32
|
+
*/
|
|
33
|
+
export function welcomeMessage() {
|
|
34
|
+
const messages = [
|
|
35
|
+
"Selam kanka! Ne yapalım?",
|
|
36
|
+
"Hazırım kanka, söyle bakalım.",
|
|
37
|
+
"Buradayım kanka. Ne lazım?",
|
|
38
|
+
"Eee kanka, anlat bakalım.",
|
|
39
|
+
"Selam! Hangi projeyi yapıyoruz kanka?",
|
|
40
|
+
];
|
|
41
|
+
return messages[Math.floor(Math.random() * messages.length)];
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=banner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"banner.js","sourceRoot":"","sources":["../src/banner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,MAAM,IAAI,GAAG;QACX,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;KACrB,CAAC;IAEF,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;QAC1B,KAAK,CAAC,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;QACnB,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAC7C,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;QACrB,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;QAClB,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CACvB,CAAC;IACF,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,MAAM,QAAQ,GAAG;QACf,0BAA0B;QAC1B,+BAA+B;QAC/B,4BAA4B;QAC5B,2BAA2B;QAC3B,uCAAuC;KACxC,CAAC;IACF,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAE,CAAC;AAChE,CAAC"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;GAKG"}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* kanka — Türkçe konuşan terminal kodlama asistanı.
|
|
4
|
+
*
|
|
5
|
+
* Pi'nin coding-agent çekirdeğini kullanır, üzerine Türkçe kişilik,
|
|
6
|
+
* Türkçe komutlar ve kanka markasını ekler.
|
|
7
|
+
*/
|
|
8
|
+
import { main } from "@earendil-works/pi-coding-agent";
|
|
9
|
+
import { printBanner } from "./banner.js";
|
|
10
|
+
import turkceKomutlarExtension from "./extensions/turkce-komutlar.js";
|
|
11
|
+
import turkceModExtension from "./extensions/turkce-mod.js";
|
|
12
|
+
// package.json'dan versiyonu oku (build sırasında dist'e kopyalanacak)
|
|
13
|
+
const VERSION = "0.1.0";
|
|
14
|
+
/**
|
|
15
|
+
* Komut satırı argümanlarında yardım/versiyon istenmiş mi?
|
|
16
|
+
* Hem Türkçe (--yardım, --versiyon) hem İngilizce (--help, --version) bayrakları yakalar.
|
|
17
|
+
* Böylece pi'nin kendi help/version çıktısı asla görünmez; kullanıcı her zaman kanka brand'i görür.
|
|
18
|
+
*/
|
|
19
|
+
function isYardimVeyaVersiyon(args) {
|
|
20
|
+
for (const arg of args) {
|
|
21
|
+
if (arg === "--yardım" ||
|
|
22
|
+
arg === "--yardim" ||
|
|
23
|
+
arg === "-y" ||
|
|
24
|
+
arg === "--help" ||
|
|
25
|
+
arg === "-h") {
|
|
26
|
+
return "yardim";
|
|
27
|
+
}
|
|
28
|
+
if (arg === "--versiyon" ||
|
|
29
|
+
arg === "--version" ||
|
|
30
|
+
arg === "-v") {
|
|
31
|
+
return "versiyon";
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Türkçe yardım metnini basar.
|
|
38
|
+
*/
|
|
39
|
+
function yardimGoster() {
|
|
40
|
+
console.log(`
|
|
41
|
+
kanka — Türkçe konuşan terminal kodlama asistanı
|
|
42
|
+
|
|
43
|
+
KULLANIM
|
|
44
|
+
kanka [seçenekler] [komut]
|
|
45
|
+
|
|
46
|
+
SEÇENEKLER
|
|
47
|
+
--yardım, -y Bu yardım metnini göster
|
|
48
|
+
--versiyon, -v Versiyon numarasını göster
|
|
49
|
+
|
|
50
|
+
ÖRNEK
|
|
51
|
+
kanka İnteraktif moda başla
|
|
52
|
+
kanka "Bana bir Express app yaz" Doğrudan görev ver
|
|
53
|
+
echo "ne var ne yok" | kanka Stdin üzerinden mesaj gönder
|
|
54
|
+
|
|
55
|
+
OTURUM İÇİ KOMUTLAR (Türkçe)
|
|
56
|
+
/yardım Komut listesi
|
|
57
|
+
/çık Oturumdan çık
|
|
58
|
+
/temizle Ekranı temizle
|
|
59
|
+
/durum Oturum durumu
|
|
60
|
+
/oturum Oturumları listele
|
|
61
|
+
/yeni Yeni oturum başlat
|
|
62
|
+
/selam kanka'dan bir selam
|
|
63
|
+
|
|
64
|
+
OTURUM İÇİ KOMUTLAR (Pi orijinal — hepsi çalışır)
|
|
65
|
+
/help /exit /clear /status /sessions /new /model ...
|
|
66
|
+
|
|
67
|
+
DAHA FAZLASI
|
|
68
|
+
https://github.com/thorrangonak/kanka
|
|
69
|
+
`);
|
|
70
|
+
}
|
|
71
|
+
async function calistir() {
|
|
72
|
+
const args = process.argv.slice(2);
|
|
73
|
+
// Türkçe meta-bayraklar (pi'ye geçirmeden önce yakala)
|
|
74
|
+
const meta = isYardimVeyaVersiyon(args);
|
|
75
|
+
if (meta === "yardim") {
|
|
76
|
+
printBanner(VERSION);
|
|
77
|
+
yardimGoster();
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
if (meta === "versiyon") {
|
|
81
|
+
console.log(`kanka v${VERSION}`);
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
// İnteraktif modda mıyız? (TTY varsa banner basabiliriz)
|
|
85
|
+
const interaktif = process.stdin.isTTY && process.stdout.isTTY && args.length === 0;
|
|
86
|
+
if (interaktif) {
|
|
87
|
+
printBanner(VERSION);
|
|
88
|
+
}
|
|
89
|
+
// Pi'nin main fonksiyonunu kendi extension'larımızla çağır.
|
|
90
|
+
// extensionFactories listesi pi'nin extension yükleyicisine ek olarak çalışır.
|
|
91
|
+
try {
|
|
92
|
+
await main(args, {
|
|
93
|
+
extensionFactories: [turkceModExtension, turkceKomutlarExtension],
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
catch (e) {
|
|
97
|
+
const mesaj = e instanceof Error ? e.message : String(e);
|
|
98
|
+
console.error(`\nHata kanka: ${mesaj}\n`);
|
|
99
|
+
process.exit(1);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
calistir().catch((e) => {
|
|
103
|
+
const mesaj = e instanceof Error ? e.message : String(e);
|
|
104
|
+
console.error(`\nBeklenmeyen hata kanka: ${mesaj}\n`);
|
|
105
|
+
process.exit(1);
|
|
106
|
+
});
|
|
107
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,iCAAiC,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,uBAAuB,MAAM,iCAAiC,CAAC;AACtE,OAAO,kBAAkB,MAAM,4BAA4B,CAAC;AAE5D,uEAAuE;AACvE,MAAM,OAAO,GAAG,OAAO,CAAC;AAExB;;;;GAIG;AACH,SAAS,oBAAoB,CAAC,IAAc;IAC3C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,IACC,GAAG,KAAK,UAAU;YAClB,GAAG,KAAK,UAAU;YAClB,GAAG,KAAK,IAAI;YACZ,GAAG,KAAK,QAAQ;YAChB,GAAG,KAAK,IAAI,EACX,CAAC;YACF,OAAO,QAAQ,CAAC;QACjB,CAAC;QACD,IACC,GAAG,KAAK,YAAY;YACpB,GAAG,KAAK,WAAW;YACnB,GAAG,KAAK,IAAI,EACX,CAAC;YACF,OAAO,UAAU,CAAC;QACnB,CAAC;IACF,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED;;GAEG;AACH,SAAS,YAAY;IACpB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BZ,CAAC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,QAAQ;IACtB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEnC,uDAAuD;IACvD,MAAM,IAAI,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACvB,WAAW,CAAC,OAAO,CAAC,CAAC;QACrB,YAAY,EAAE,CAAC;QACf,OAAO;IACR,CAAC;IACD,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC;QACjC,OAAO;IACR,CAAC;IAED,yDAAyD;IACzD,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC;IACpF,IAAI,UAAU,EAAE,CAAC;QAChB,WAAW,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC;IAED,4DAA4D;IAC5D,+EAA+E;IAC/E,IAAI,CAAC;QACJ,MAAM,IAAI,CAAC,IAAI,EAAE;YAChB,kBAAkB,EAAE,CAAC,kBAAkB,EAAE,uBAAuB,CAAC;SACjE,CAAC,CAAC;IACJ,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QACrB,MAAM,KAAK,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACzD,OAAO,CAAC,KAAK,CAAC,iBAAiB,KAAK,IAAI,CAAC,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;AACF,CAAC;AAED,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE;IAC/B,MAAM,KAAK,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACzD,OAAO,CAAC,KAAK,CAAC,6BAA6B,KAAK,IAAI,CAAC,CAAC;IACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Türkçe Komutlar Extension
|
|
3
|
+
*
|
|
4
|
+
* kanka için Türkçe slash komutları:
|
|
5
|
+
* /yardım → Komut listesi (Türkçe)
|
|
6
|
+
* /çık → Oturumdan çık
|
|
7
|
+
* /selam → Karşılama mesajı (paskalya yumurtası)
|
|
8
|
+
*
|
|
9
|
+
* Not: Pi'nin orijinal komutları (/help, /exit, /clear, /status, /sessions, /new) da
|
|
10
|
+
* her zaman çalışmaya devam eder.
|
|
11
|
+
*/
|
|
12
|
+
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
13
|
+
export default function turkceKomutlarExtension(pi: ExtensionAPI): void;
|
|
14
|
+
//# sourceMappingURL=turkce-komutlar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"turkce-komutlar.d.ts","sourceRoot":"","sources":["../../src/extensions/turkce-komutlar.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAkBpE,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAAC,EAAE,EAAE,YAAY,QAqE/D"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Türkçe Komutlar Extension
|
|
3
|
+
*
|
|
4
|
+
* kanka için Türkçe slash komutları:
|
|
5
|
+
* /yardım → Komut listesi (Türkçe)
|
|
6
|
+
* /çık → Oturumdan çık
|
|
7
|
+
* /selam → Karşılama mesajı (paskalya yumurtası)
|
|
8
|
+
*
|
|
9
|
+
* Not: Pi'nin orijinal komutları (/help, /exit, /clear, /status, /sessions, /new) da
|
|
10
|
+
* her zaman çalışmaya devam eder.
|
|
11
|
+
*/
|
|
12
|
+
const YARDIM_LISTESI = [
|
|
13
|
+
{ turkce: "/yardım", orijinal: "/help", aciklama: "Komut listesini göster" },
|
|
14
|
+
{ turkce: "/çık", orijinal: "/exit", aciklama: "kanka'dan çık" },
|
|
15
|
+
{ turkce: "/temizle", orijinal: "/clear", aciklama: "Ekranı temizle" },
|
|
16
|
+
{ turkce: "/durum", orijinal: "/status", aciklama: "Oturum durumunu göster" },
|
|
17
|
+
{ turkce: "/oturum", orijinal: "/sessions", aciklama: "Oturumları listele" },
|
|
18
|
+
{ turkce: "/yeni", orijinal: "/new", aciklama: "Yeni oturum başlat" },
|
|
19
|
+
{ turkce: "/model", orijinal: "/model", aciklama: "Aktif modeli değiştir" },
|
|
20
|
+
];
|
|
21
|
+
export default function turkceKomutlarExtension(pi) {
|
|
22
|
+
// /yardım — kanka'nın özel yardım menüsü
|
|
23
|
+
pi.registerCommand("yardım", {
|
|
24
|
+
description: "Komut listesini Türkçe göster",
|
|
25
|
+
handler: async (_args, ctx) => {
|
|
26
|
+
const satirlar = [
|
|
27
|
+
"",
|
|
28
|
+
"kanka — Türkçe komut listesi",
|
|
29
|
+
"─────────────────────────────",
|
|
30
|
+
...YARDIM_LISTESI.map((k) => ` ${k.turkce.padEnd(12)} (${k.orijinal.padEnd(10)}) — ${k.aciklama}`),
|
|
31
|
+
"",
|
|
32
|
+
"Pi'nin orijinal İngilizce komutları da çalışır.",
|
|
33
|
+
"Bir şey yazmak için Enter'a bas, çıkmak için Ctrl+C.",
|
|
34
|
+
"",
|
|
35
|
+
];
|
|
36
|
+
ctx.ui.notify(satirlar.join("\n"), "info");
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
// ASCII fallback
|
|
40
|
+
pi.registerCommand("yardim", {
|
|
41
|
+
description: "Komut listesini Türkçe göster (ASCII)",
|
|
42
|
+
handler: async (_args, ctx) => {
|
|
43
|
+
const satirlar = [
|
|
44
|
+
"",
|
|
45
|
+
"kanka — Türkçe komut listesi",
|
|
46
|
+
"─────────────────────────────",
|
|
47
|
+
...YARDIM_LISTESI.map((k) => ` ${k.turkce.padEnd(12)} (${k.orijinal.padEnd(10)}) — ${k.aciklama}`),
|
|
48
|
+
"",
|
|
49
|
+
];
|
|
50
|
+
ctx.ui.notify(satirlar.join("\n"), "info");
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
// /çık — graceful shutdown
|
|
54
|
+
pi.registerCommand("çık", {
|
|
55
|
+
description: "kanka'dan çık",
|
|
56
|
+
handler: async (_args, ctx) => {
|
|
57
|
+
ctx.ui.notify("Görüşmek üzere kanka! 👋", "info");
|
|
58
|
+
ctx.shutdown();
|
|
59
|
+
},
|
|
60
|
+
});
|
|
61
|
+
pi.registerCommand("cik", {
|
|
62
|
+
description: "kanka'dan çık (ASCII)",
|
|
63
|
+
handler: async (_args, ctx) => {
|
|
64
|
+
ctx.ui.notify("Görüşmek üzere kanka! 👋", "info");
|
|
65
|
+
ctx.shutdown();
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
// /selam — paskalya yumurtası
|
|
69
|
+
pi.registerCommand("selam", {
|
|
70
|
+
description: "kanka'dan bir selam al",
|
|
71
|
+
handler: async (_args, ctx) => {
|
|
72
|
+
const mesajlar = [
|
|
73
|
+
"Selamün aleyküm kanka.",
|
|
74
|
+
"Naber kanka, hazırım.",
|
|
75
|
+
"Eyvallah kanka, dinliyorum.",
|
|
76
|
+
"Selam selam, ne yapalım?",
|
|
77
|
+
];
|
|
78
|
+
const secilen = mesajlar[Math.floor(Math.random() * mesajlar.length)];
|
|
79
|
+
ctx.ui.notify(secilen, "info");
|
|
80
|
+
},
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=turkce-komutlar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"turkce-komutlar.js","sourceRoot":"","sources":["../../src/extensions/turkce-komutlar.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Türkçe Mod Extension
|
|
3
|
+
*
|
|
4
|
+
* kanka'nın varsayılan davranışı: sistem prompt'una Türkçe asistan
|
|
5
|
+
* kişiliği enjekte eder. Tüm kullanıcı etkileşimi Türkçe olur.
|
|
6
|
+
*/
|
|
7
|
+
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
8
|
+
export default function turkceModExtension(pi: ExtensionAPI): void;
|
|
9
|
+
//# sourceMappingURL=turkce-mod.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"turkce-mod.d.ts","sourceRoot":"","sources":["../../src/extensions/turkce-mod.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAGpE,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,EAAE,EAAE,YAAY,QAQ1D"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Türkçe Mod Extension
|
|
3
|
+
*
|
|
4
|
+
* kanka'nın varsayılan davranışı: sistem prompt'una Türkçe asistan
|
|
5
|
+
* kişiliği enjekte eder. Tüm kullanıcı etkileşimi Türkçe olur.
|
|
6
|
+
*/
|
|
7
|
+
import { KANKA_SYSTEM_PROMPT } from "../system-prompt.js";
|
|
8
|
+
export default function turkceModExtension(pi) {
|
|
9
|
+
pi.on("before_agent_start", async (event) => {
|
|
10
|
+
// Mevcut sistem prompt'unun sonuna kanka'nın Türkçe kişiliğini ekle.
|
|
11
|
+
// Temel tool talimatları korunur, üstüne Türkçe katman gelir.
|
|
12
|
+
return {
|
|
13
|
+
systemPrompt: `${event.systemPrompt}\n\n---\n\n${KANKA_SYSTEM_PROMPT}`,
|
|
14
|
+
};
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=turkce-mod.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"turkce-mod.js","sourceRoot":"","sources":["../../src/extensions/turkce-mod.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,EAAgB;IAC1D,EAAE,CAAC,EAAE,CAAC,oBAAoB,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;QAC3C,qEAAqE;QACrE,8DAA8D;QAC9D,OAAO;YACN,YAAY,EAAE,GAAG,KAAK,CAAC,YAAY,cAAc,mBAAmB,EAAE;SACtE,CAAC;IACH,CAAC,CAAC,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* kanka SDK — programatik kullanım için.
|
|
3
|
+
*
|
|
4
|
+
* Pi'nin SDK'sını yeniden export eder, üzerine kanka'nın Türkçe
|
|
5
|
+
* extension'larını ekler.
|
|
6
|
+
*/
|
|
7
|
+
export { KANKA_SYSTEM_PROMPT } from "./system-prompt.js";
|
|
8
|
+
export { printBanner, welcomeMessage } from "./banner.js";
|
|
9
|
+
export { default as turkceModExtension } from "./extensions/turkce-mod.js";
|
|
10
|
+
export { default as turkceKomutlarExtension } from "./extensions/turkce-komutlar.js";
|
|
11
|
+
export { createAgentSession, createAgentSessionRuntime, SessionManager, AuthStorage, ModelRegistry, } from "@earendil-works/pi-coding-agent";
|
|
12
|
+
export type { AgentSession, AgentSessionEvent, ExtensionAPI, ExtensionContext, ExtensionFactory, } from "@earendil-works/pi-coding-agent";
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAGrF,OAAO,EACN,kBAAkB,EAClB,yBAAyB,EACzB,cAAc,EACd,WAAW,EACX,aAAa,GACb,MAAM,iCAAiC,CAAC;AAEzC,YAAY,EACX,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,GAChB,MAAM,iCAAiC,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* kanka SDK — programatik kullanım için.
|
|
3
|
+
*
|
|
4
|
+
* Pi'nin SDK'sını yeniden export eder, üzerine kanka'nın Türkçe
|
|
5
|
+
* extension'larını ekler.
|
|
6
|
+
*/
|
|
7
|
+
export { KANKA_SYSTEM_PROMPT } from "./system-prompt.js";
|
|
8
|
+
export { printBanner, welcomeMessage } from "./banner.js";
|
|
9
|
+
export { default as turkceModExtension } from "./extensions/turkce-mod.js";
|
|
10
|
+
export { default as turkceKomutlarExtension } from "./extensions/turkce-komutlar.js";
|
|
11
|
+
// Pi'nin temel SDK'sını da yeniden export et (kullanıcı kendi entegrasyonu için).
|
|
12
|
+
export { createAgentSession, createAgentSessionRuntime, SessionManager, AuthStorage, ModelRegistry, } from "@earendil-works/pi-coding-agent";
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAErF,kFAAkF;AAClF,OAAO,EACN,kBAAkB,EAClB,yBAAyB,EACzB,cAAc,EACd,WAAW,EACX,aAAa,GACb,MAAM,iCAAiC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* kanka — Türkçe sistem prompt'u.
|
|
3
|
+
*
|
|
4
|
+
* Tüm agent davranışını Türkçe konuşma + yerel geliştirici kültürüne göre ayarlar.
|
|
5
|
+
*/
|
|
6
|
+
export declare const KANKA_SYSTEM_PROMPT = "Sen \"kanka\" ad\u0131nda bir terminal kodlama asistan\u0131s\u0131n.\n\n## Ki\u015Fili\u011Fin\n- Kullan\u0131c\u0131yla **T\u00FCrk\u00E7e** konu\u015Fursun, samimi ama profesyonel.\n- Teknik terimleri \u0130ngilizce b\u0131rakabilirsin (commit, refactor, hook, prop, state, build).\n- \"Kanka\", \"abi\", \"tamam\" gibi g\u00FCndelik ifadelere do\u011Fal yakla\u015F\u0131rs\u0131n ama abartmazs\u0131n.\n- K\u0131sa ve net cevap verirsin. Gereksiz laf kalabal\u0131\u011F\u0131 yapmazs\u0131n.\n- Emin de\u011Filsen sorars\u0131n, uydurma yapmazs\u0131n.\n\n## \u00C7al\u0131\u015Fma Tarz\u0131n\n- Her zaman **TypeScript** tercih edersin (JavaScript yerine).\n- `any` yerine `unknown` kullan\u0131rs\u0131n.\n- Erken return (early return) pattern'i uygulars\u0131n.\n- Fonksiyonlar tek sorumluluk ilkesine uymal\u0131 (~40 sat\u0131r max).\n- Magic number/string kullanmazs\u0131n, sabit tan\u0131mlars\u0131n.\n- Hata y\u00F6netiminde `try/catch` bloklar\u0131nda `catch (e: unknown)` yazars\u0131n.\n- Callback yerine `async/await` kullan\u0131rs\u0131n.\n\n## \u0130simlendirme\n- De\u011Fi\u015Fken/fonksiyon: `camelCase`\n- S\u0131n\u0131f/Interface/Type: `PascalCase`\n- Sabitler: `UPPER_SNAKE_CASE`\n- Dosyalar: `kebab-case.ts`\n- Boolean: `is`, `has`, `can`, `should` \u00F6neki\n\n## Ara\u00E7lar\u0131n\n- `read` \u2014 Dosya oku\n- `write` \u2014 Dosya olu\u015Ftur / yeniden yaz\n- `edit` \u2014 Hassas d\u00FCzenleme (tam metin e\u015Fle\u015Fmesi)\n- `bash` \u2014 Komut \u00E7al\u0131\u015Ft\u0131r (ls, grep, find, git vb.)\n\n## Komutlar\u0131 kullan\u0131rken\n- `bash` ile `cat`/`sed` yerine `read` arac\u0131n\u0131 kullan.\n- Birden fazla ba\u011F\u0131ms\u0131z de\u011Fi\u015Fiklik varsa tek `edit` \u00E7a\u011Fr\u0131s\u0131nda `edits[]` dizisiyle yap.\n- Ba\u011F\u0131ms\u0131z tool \u00E7a\u011Fr\u0131lar\u0131n\u0131 paralel yap.\n- Dosya yollar\u0131n\u0131 net g\u00F6ster.\n\n## G\u00FCvenlik\n- API key, secret, token koda yazma. `.env` kullan.\n- `rm -rf`, `git push --force`, `DROP TABLE` gibi tehlikeli komutlardan \u00F6nce kullan\u0131c\u0131ya sor.\n- Input validation her zaman yap.\n\n## Git\n- Commit mesajlar\u0131: Conventional Commits (`feat:`, `fix:`, `docs:`, `refactor:`, `test:`, `chore:`)\n- main'e direkt commit etme, feature branch a\u00E7.\n\n## Cevap format\u0131\n- K\u0131sa ve eylem odakl\u0131.\n- Kod bloklar\u0131 i\u00E7in dil belirt (```ts, ```bash).\n- Uzun a\u00E7\u0131klama gerekirse ba\u015Fl\u0131klar (##) ve listeler kullan.\n- Sonunda \"ne yapay\u0131m \u015Fimdi?\" gibi sorular sorma; do\u011Frudan i\u015F yap.\n\nHadi ba\u015Flayal\u0131m. Kullan\u0131c\u0131n\u0131n ilk mesaj\u0131n\u0131 bekle.";
|
|
7
|
+
//# sourceMappingURL=system-prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system-prompt.d.ts","sourceRoot":"","sources":["../src/system-prompt.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,mBAAmB,2nFAoDkB,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* kanka — Türkçe sistem prompt'u.
|
|
3
|
+
*
|
|
4
|
+
* Tüm agent davranışını Türkçe konuşma + yerel geliştirici kültürüne göre ayarlar.
|
|
5
|
+
*/
|
|
6
|
+
export const KANKA_SYSTEM_PROMPT = `Sen "kanka" adında bir terminal kodlama asistanısın.
|
|
7
|
+
|
|
8
|
+
## Kişiliğin
|
|
9
|
+
- Kullanıcıyla **Türkçe** konuşursun, samimi ama profesyonel.
|
|
10
|
+
- Teknik terimleri İngilizce bırakabilirsin (commit, refactor, hook, prop, state, build).
|
|
11
|
+
- "Kanka", "abi", "tamam" gibi gündelik ifadelere doğal yaklaşırsın ama abartmazsın.
|
|
12
|
+
- Kısa ve net cevap verirsin. Gereksiz laf kalabalığı yapmazsın.
|
|
13
|
+
- Emin değilsen sorarsın, uydurma yapmazsın.
|
|
14
|
+
|
|
15
|
+
## Çalışma Tarzın
|
|
16
|
+
- Her zaman **TypeScript** tercih edersin (JavaScript yerine).
|
|
17
|
+
- \`any\` yerine \`unknown\` kullanırsın.
|
|
18
|
+
- Erken return (early return) pattern'i uygularsın.
|
|
19
|
+
- Fonksiyonlar tek sorumluluk ilkesine uymalı (~40 satır max).
|
|
20
|
+
- Magic number/string kullanmazsın, sabit tanımlarsın.
|
|
21
|
+
- Hata yönetiminde \`try/catch\` bloklarında \`catch (e: unknown)\` yazarsın.
|
|
22
|
+
- Callback yerine \`async/await\` kullanırsın.
|
|
23
|
+
|
|
24
|
+
## İsimlendirme
|
|
25
|
+
- Değişken/fonksiyon: \`camelCase\`
|
|
26
|
+
- Sınıf/Interface/Type: \`PascalCase\`
|
|
27
|
+
- Sabitler: \`UPPER_SNAKE_CASE\`
|
|
28
|
+
- Dosyalar: \`kebab-case.ts\`
|
|
29
|
+
- Boolean: \`is\`, \`has\`, \`can\`, \`should\` öneki
|
|
30
|
+
|
|
31
|
+
## Araçların
|
|
32
|
+
- \`read\` — Dosya oku
|
|
33
|
+
- \`write\` — Dosya oluştur / yeniden yaz
|
|
34
|
+
- \`edit\` — Hassas düzenleme (tam metin eşleşmesi)
|
|
35
|
+
- \`bash\` — Komut çalıştır (ls, grep, find, git vb.)
|
|
36
|
+
|
|
37
|
+
## Komutları kullanırken
|
|
38
|
+
- \`bash\` ile \`cat\`/\`sed\` yerine \`read\` aracını kullan.
|
|
39
|
+
- Birden fazla bağımsız değişiklik varsa tek \`edit\` çağrısında \`edits[]\` dizisiyle yap.
|
|
40
|
+
- Bağımsız tool çağrılarını paralel yap.
|
|
41
|
+
- Dosya yollarını net göster.
|
|
42
|
+
|
|
43
|
+
## Güvenlik
|
|
44
|
+
- API key, secret, token koda yazma. \`.env\` kullan.
|
|
45
|
+
- \`rm -rf\`, \`git push --force\`, \`DROP TABLE\` gibi tehlikeli komutlardan önce kullanıcıya sor.
|
|
46
|
+
- Input validation her zaman yap.
|
|
47
|
+
|
|
48
|
+
## Git
|
|
49
|
+
- Commit mesajları: Conventional Commits (\`feat:\`, \`fix:\`, \`docs:\`, \`refactor:\`, \`test:\`, \`chore:\`)
|
|
50
|
+
- main'e direkt commit etme, feature branch aç.
|
|
51
|
+
|
|
52
|
+
## Cevap formatı
|
|
53
|
+
- Kısa ve eylem odaklı.
|
|
54
|
+
- Kod blokları için dil belirt (\`\`\`ts, \`\`\`bash).
|
|
55
|
+
- Uzun açıklama gerekirse başlıklar (##) ve listeler kullan.
|
|
56
|
+
- Sonunda "ne yapayım şimdi?" gibi sorular sorma; doğrudan iş yap.
|
|
57
|
+
|
|
58
|
+
Hadi başlayalım. Kullanıcının ilk mesajını bekle.`;
|
|
59
|
+
//# sourceMappingURL=system-prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../src/system-prompt.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kDAoDe,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@thorrangonak/kanka",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "kanka — Türkçe konuşan terminal kodlama asistanı. 'Kanka, şunu yapsana.'",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"kanka": "dist/cli.js"
|
|
8
|
+
},
|
|
9
|
+
"main": "./dist/index.js",
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"exports": {
|
|
12
|
+
".": {
|
|
13
|
+
"types": "./dist/index.d.ts",
|
|
14
|
+
"import": "./dist/index.js"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
"dist",
|
|
19
|
+
"README.md",
|
|
20
|
+
"LICENSE"
|
|
21
|
+
],
|
|
22
|
+
"scripts": {
|
|
23
|
+
"build": "tsc && shx chmod +x dist/cli.js",
|
|
24
|
+
"dev": "tsc --watch",
|
|
25
|
+
"start": "node dist/cli.js",
|
|
26
|
+
"clean": "shx rm -rf dist",
|
|
27
|
+
"prepublishOnly": "npm run clean && npm run build"
|
|
28
|
+
},
|
|
29
|
+
"dependencies": {
|
|
30
|
+
"@earendil-works/pi-coding-agent": "^0.74.1",
|
|
31
|
+
"chalk": "^5.5.0"
|
|
32
|
+
},
|
|
33
|
+
"devDependencies": {
|
|
34
|
+
"@types/node": "^24.3.0",
|
|
35
|
+
"shx": "^0.4.0",
|
|
36
|
+
"typescript": "^5.7.3"
|
|
37
|
+
},
|
|
38
|
+
"keywords": [
|
|
39
|
+
"kanka",
|
|
40
|
+
"coding-agent",
|
|
41
|
+
"ai",
|
|
42
|
+
"llm",
|
|
43
|
+
"cli",
|
|
44
|
+
"turkish",
|
|
45
|
+
"türkçe",
|
|
46
|
+
"kodlama-asistanı"
|
|
47
|
+
],
|
|
48
|
+
"author": "thorrangonak",
|
|
49
|
+
"license": "MIT",
|
|
50
|
+
"repository": {
|
|
51
|
+
"type": "git",
|
|
52
|
+
"url": "git+https://github.com/thorrangonak/kanka.git"
|
|
53
|
+
},
|
|
54
|
+
"homepage": "https://github.com/thorrangonak/kanka",
|
|
55
|
+
"bugs": {
|
|
56
|
+
"url": "https://github.com/thorrangonak/kanka/issues"
|
|
57
|
+
},
|
|
58
|
+
"engines": {
|
|
59
|
+
"node": ">=20.6.0"
|
|
60
|
+
}
|
|
61
|
+
}
|