@baiworcode/baiworcode 1.0.0-beta.1 โ 1.0.0-beta.2
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/README.md +451 -450
- package/bin/baiwor.js +11 -7
- package/package.json +60 -60
- package/src/auth/resolve.js +35 -0
- package/src/branding.js +26 -26
- package/src/tools/sandbox.js +2 -3
- package/src/tools/todoTool.js +43 -3
- package/src/update.js +1 -1
package/README.md
CHANGED
|
@@ -1,450 +1,451 @@
|
|
|
1
|
-
# ๐ญ bAIwor Code
|
|
2
|
-
|
|
3
|
-
<p align="left">
|
|
4
|
-
<a href="https://
|
|
5
|
-
<a href="https://
|
|
6
|
-
<a href="https://
|
|
7
|
-
<a href="https://
|
|
8
|
-
<a href="
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
>
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
>
|
|
16
|
-
>
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
npm
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
baiworcode "
|
|
101
|
-
baiworcode "
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
|
111
|
-
|
|
|
112
|
-
|
|
|
113
|
-
| Bikin
|
|
114
|
-
|
|
|
115
|
-
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
-
|
|
124
|
-
-
|
|
125
|
-
-
|
|
126
|
-
-
|
|
127
|
-
-
|
|
128
|
-
|
|
129
|
-
-
|
|
130
|
-
-
|
|
131
|
-
-
|
|
132
|
-
-
|
|
133
|
-
-
|
|
134
|
-
-
|
|
135
|
-
-
|
|
136
|
-
-
|
|
137
|
-
|
|
138
|
-
-
|
|
139
|
-
-
|
|
140
|
-
-
|
|
141
|
-
-
|
|
142
|
-
- **
|
|
143
|
-
|
|
144
|
-
-
|
|
145
|
-
-
|
|
146
|
-
-
|
|
147
|
-
-
|
|
148
|
-
-
|
|
149
|
-
|
|
150
|
-
-
|
|
151
|
-
-
|
|
152
|
-
|
|
153
|
-
-
|
|
154
|
-
|
|
155
|
-
- **
|
|
156
|
-
-
|
|
157
|
-
-
|
|
158
|
-
-
|
|
159
|
-
|
|
160
|
-
-
|
|
161
|
-
-
|
|
162
|
-
-
|
|
163
|
-
-
|
|
164
|
-
-
|
|
165
|
-
-
|
|
166
|
-
-
|
|
167
|
-
-
|
|
168
|
-
-
|
|
169
|
-
|
|
170
|
-
- `edit_file`
|
|
171
|
-
- `
|
|
172
|
-
- `
|
|
173
|
-
- `
|
|
174
|
-
- `
|
|
175
|
-
- `
|
|
176
|
-
- `
|
|
177
|
-
-
|
|
178
|
-
-
|
|
179
|
-
- `
|
|
180
|
-
-
|
|
181
|
-
-
|
|
182
|
-
|
|
183
|
-
-
|
|
184
|
-
- **
|
|
185
|
-
-
|
|
186
|
-
-
|
|
187
|
-
-
|
|
188
|
-
-
|
|
189
|
-
|
|
190
|
-
-
|
|
191
|
-
-
|
|
192
|
-
-
|
|
193
|
-
-
|
|
194
|
-
-
|
|
195
|
-
|
|
196
|
-
-
|
|
197
|
-
- **
|
|
198
|
-
- **
|
|
199
|
-
-
|
|
200
|
-
-
|
|
201
|
-
-
|
|
202
|
-
|
|
203
|
-
- **
|
|
204
|
-
- **
|
|
205
|
-
- **
|
|
206
|
-
-
|
|
207
|
-
-
|
|
208
|
-
|
|
209
|
-
-
|
|
210
|
-
- **
|
|
211
|
-
- **
|
|
212
|
-
- **
|
|
213
|
-
-
|
|
214
|
-
-
|
|
215
|
-
|
|
216
|
-
-
|
|
217
|
-
- **
|
|
218
|
-
- **
|
|
219
|
-
-
|
|
220
|
-
-
|
|
221
|
-
|
|
222
|
-
-
|
|
223
|
-
- **
|
|
224
|
-
- **
|
|
225
|
-
-
|
|
226
|
-
-
|
|
227
|
-
-
|
|
228
|
-
|
|
229
|
-
- **
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
- `/
|
|
238
|
-
- `/
|
|
239
|
-
- `/
|
|
240
|
-
- `/
|
|
241
|
-
- `/
|
|
242
|
-
- `/
|
|
243
|
-
- `/
|
|
244
|
-
- `/
|
|
245
|
-
- `/
|
|
246
|
-
- `/
|
|
247
|
-
- `/
|
|
248
|
-
- `/
|
|
249
|
-
- `/
|
|
250
|
-
- `/
|
|
251
|
-
- `/
|
|
252
|
-
- `/
|
|
253
|
-
- `/
|
|
254
|
-
- `/
|
|
255
|
-
- `/
|
|
256
|
-
- `/
|
|
257
|
-
- `/
|
|
258
|
-
- `/
|
|
259
|
-
- `/
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
- `baiworcode
|
|
264
|
-
- `baiworcode
|
|
265
|
-
- `baiworcode
|
|
266
|
-
- `baiworcode
|
|
267
|
-
- `baiworcode
|
|
268
|
-
- `baiworcode
|
|
269
|
-
- `baiworcode
|
|
270
|
-
- `baiworcode
|
|
271
|
-
- `baiworcode
|
|
272
|
-
- `baiworcode
|
|
273
|
-
- `baiworcode
|
|
274
|
-
- `baiworcode
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
baiworcode model
|
|
283
|
-
baiworcode model
|
|
284
|
-
baiworcode model
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
baiworcode model alias
|
|
292
|
-
baiworcode model alias
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
"
|
|
303
|
-
"
|
|
304
|
-
"
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
}
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
>
|
|
312
|
-
>
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
| `
|
|
322
|
-
| `
|
|
323
|
-
| `
|
|
324
|
-
| `
|
|
325
|
-
| `
|
|
326
|
-
| `
|
|
327
|
-
| `
|
|
328
|
-
| `
|
|
329
|
-
| `
|
|
330
|
-
| `
|
|
331
|
-
| `
|
|
332
|
-
| `
|
|
333
|
-
| `
|
|
334
|
-
| `
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
- **
|
|
341
|
-
- **
|
|
342
|
-
- **
|
|
343
|
-
|
|
344
|
-
- `/tinyfish
|
|
345
|
-
- `/tinyfish
|
|
346
|
-
- `/tinyfish
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
- Server dari
|
|
356
|
-
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
"
|
|
363
|
-
"
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
"
|
|
368
|
-
"
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
-
|
|
375
|
-
|
|
376
|
-
- **
|
|
377
|
-
- **
|
|
378
|
-
- **
|
|
379
|
-
|
|
380
|
-
- `/mcp
|
|
381
|
-
- `/mcp
|
|
382
|
-
- `/mcp
|
|
383
|
-
- `/mcp
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
"
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
}
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
|
412
|
-
|
|
|
413
|
-
|
|
|
414
|
-
|
|
|
415
|
-
|
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
>
|
|
431
|
-
>
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
- **
|
|
444
|
-
- **
|
|
445
|
-
- **
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
1
|
+
# ๐ญ bAIwor Code
|
|
2
|
+
|
|
3
|
+
<p align="left">
|
|
4
|
+
<a href="https://www.npmjs.com/package/@baiworcode/baiworcode"><img src="https://img.shields.io/npm/v/@baiworcode/baiworcode?style=flat-square&color=CB3837" alt="npm version" /></a>
|
|
5
|
+
<a href="https://github.com/bAIwor/baiworcode/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/bAIwor/baiworcode/ci.yml?branch=main&style=flat-square&label=CI" alt="CI build" /></a>
|
|
6
|
+
<a href="https://baiwor.my.id"><img src="https://img.shields.io/badge/Website-baiwor.my.id-blue?style=flat-square" alt="Website" /></a>
|
|
7
|
+
<a href="https://agentik.my.id"><img src="https://img.shields.io/badge/Bonus%20Token-agentik.my.id-10B981?style=flat-square" alt="Bonus Token" /></a>
|
|
8
|
+
<a href="https://nodejs.org"><img src="https://img.shields.io/badge/Node.js-%3E%3D18-green?style=flat-square" alt="Node.js" /></a>
|
|
9
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-purple?style=flat-square" alt="License: MIT" /></a>
|
|
10
|
+
</p>
|
|
11
|
+
|
|
12
|
+
> *"Saka Bawor dadi bAIwor โ Jiwa Punakawan, Pikiran AI, Guardian Banyumas"*
|
|
13
|
+
> **Website Resmi:** [https://baiwor.my.id](https://baiwor.my.id) ยท **Bonus Token AI:** [https://agentik.my.id](https://agentik.my.id)
|
|
14
|
+
|
|
15
|
+
> [!NOTE]
|
|
16
|
+
> **Status Proyek: Tahap Beta (Menuju 1.0 Stabil) ๐ง**
|
|
17
|
+
> bAIwor Code saat ini berada dalam tahap **Beta** dan terus disempurnakan secara aktif. Fitur baru, stabilitas, dan optimasi performa terus diperbarui setiap hari. Dokumentasi resmi, update, dan ekosistem bAIwor dapat diakses di [baiwor.my.id](https://baiwor.my.id). Masukan dan laporan kendala dapat disampaikan melalui [GitHub Issues](https://github.com/bAIwor/baiworcode/issues).
|
|
18
|
+
|
|
19
|
+
CLI coding agent pintar berbahasa Indonesia โ ngobrol santai di terminal, dan bAIwor langsung bekerja di berkas proyekmu.
|
|
20
|
+
|
|
21
|
+
```text
|
|
22
|
+
โญโโโโฒโโโโฎ PT. bAIwor Agentic Indonesia
|
|
23
|
+
โโโ โ โโโ โโโโโโโ โโโโโโ โโโโโโ โโโ โโโโโโโ โโโโโโโ โโโโโโโ โโโโโโโโ โโโโโโโ โโโโโโโโ
|
|
24
|
+
( (O) ( o ) (O) ) โโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
25
|
+
โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโ โโ โโโโโโ โโโโโโโโโโโ โโโ โโโ โโโโโโ โโโโโโโโโ
|
|
26
|
+
โ โ โ โ โ โ โ โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโ โโโ โโโ โโโโโโ โโโโโโโโโ
|
|
27
|
+
โโโโโโโโโโโโโโโ โโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
28
|
+
โฐโโโโดโโโโฏ โโโโโโโ โโโ โโโโโโ โโโโโโโโ โโโโโโโ โโโ โโโ โโโโโโโ โโโโโโโ โโโโโโโ โโโโโโโโ
|
|
29
|
+
๐ญ "Saka Bawor dadi bAIwor โ Jiwa Punakawan, Pikiran AI, Guardian Banyumas"
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## ๐ Instalasi Cepat
|
|
35
|
+
|
|
36
|
+
### โก Cara Instan (One-Line Installer โ Sangat Direkomendasikan untuk Pemula)
|
|
37
|
+
|
|
38
|
+
**Windows (PowerShell):**
|
|
39
|
+
```powershell
|
|
40
|
+
irm https://raw.githubusercontent.com/bAIwor/baiworcode/main/install.ps1 | iex
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
**Linux / macOS (Bash):**
|
|
44
|
+
```bash
|
|
45
|
+
curl -fsSL https://raw.githubusercontent.com/bAIwor/baiworcode/main/install.sh | bash
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Installer di atas otomatis mengecek Node.js (minimal v18), memasang bAIwor Code secara global, dan langsung siap dipakai.
|
|
49
|
+
|
|
50
|
+
### Cara 2 โ Install global via npm (tahap beta)
|
|
51
|
+
```bash
|
|
52
|
+
npm install -g @baiworcode/baiworcode@beta
|
|
53
|
+
```
|
|
54
|
+
Setelah itu, perintah `baiworcode` (atau `baiwor`) bisa dipakai di mana saja.
|
|
55
|
+
> Paket npm dirilis dengan dist-tag **beta** selama proyek masih menuju 1.0.0 stabil. Setelah stabil, `npm install -g @baiworcode/baiworcode` (dist-tag **latest**) akan menjadi jalur utama.
|
|
56
|
+
|
|
57
|
+
### Cara 3 โ Coba dulu tanpa install
|
|
58
|
+
```bash
|
|
59
|
+
npx @baiworcode/baiworcode@beta
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Cara 4 โ Dari sumber (untuk kontributor)
|
|
63
|
+
```bash
|
|
64
|
+
git clone https://github.com/bAIwor/baiworcode.git
|
|
65
|
+
cd baiworcode
|
|
66
|
+
npm install
|
|
67
|
+
npm link
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### Prasyarat
|
|
71
|
+
- [Node.js](https://nodejs.org/) versi **18 atau lebih baru**. Node.js 22 LTS direkomendasikan karena Node 18/20 sudah melewati masa dukungan resmi.
|
|
72
|
+
|
|
73
|
+
Cek versi Node kamu:
|
|
74
|
+
```bash
|
|
75
|
+
node --version
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## ๐ Mulai dari Sini (Panduan Pemula)
|
|
81
|
+
|
|
82
|
+
Belum pernah pakai? Ikuti tiga langkah ini.
|
|
83
|
+
|
|
84
|
+
**1. Jalankan bAIwor Code**
|
|
85
|
+
```bash
|
|
86
|
+
baiworcode
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
**2. Pilih model AI-nya (sekali saja)**
|
|
90
|
+
```bash
|
|
91
|
+
/model
|
|
92
|
+
```
|
|
93
|
+
Pilih **Agentik AI** (paling praktis, ada bonus token gratis di [agentik.my.id](https://agentik.my.id)), atau **Google Gemini** kalau mau login pakai akun Google.
|
|
94
|
+
|
|
95
|
+
**3. Langsung ngobrol**
|
|
96
|
+
|
|
97
|
+
Ketik pertanyaan atau instruksi coding seperti sedang chat biasa:
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
baiworcode "jelaskan struktur proyek ini"
|
|
101
|
+
baiworcode "perbaiki error di src/index.js"
|
|
102
|
+
baiworcode "buatkan test untuk fungsi hitungTotal"
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Atau masuk ke mode interaktif lalu ketik langsung tanpa keluar aplikasi.
|
|
106
|
+
|
|
107
|
+
### Contoh hal yang bisa kamu minta
|
|
108
|
+
| Mau apa | Tulis apa |
|
|
109
|
+
|---|---|
|
|
110
|
+
| Paham kode orang lain | `"jelaskan cara kerja fungsi login di file ini"` |
|
|
111
|
+
| Cari sesuatu di proyek | `"cari semua tempat yang memanggil fungsi hitungTotal"` |
|
|
112
|
+
| Perbaiki bug | `"kenapa hasilnya NaN? tolong perbaiki"` |
|
|
113
|
+
| Bikin fitur baru | `"tambahkan validasi email di form pendaftaran"` |
|
|
114
|
+
| Bikin test | `"buatkan test untuk src/utils/format.js"` |
|
|
115
|
+
| Rapikan kode | `"refactor fungsi ini supaya lebih mudah dibaca"` |
|
|
116
|
+
| Jalankan & cek | `"jalankan npm test dan perbaiki yang gagal"` |
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## โก Fitur Utama
|
|
121
|
+
|
|
122
|
+
- **Antarmuka Elegan & Bersih**:
|
|
123
|
+
- Maskot Wajah Topeng Bawor presisi tinggi (19 kolom ร 7 baris, simetris dan anti-menceng).
|
|
124
|
+
- Banner 3D ASCII Shadow Merah-Putih.
|
|
125
|
+
- Kotak informasi terminal dinamis anti-pecah (*visual column aware*).
|
|
126
|
+
- Area input dibingkai dua garis pemisah, dengan baris status yang ikut bergerak saat kamu mengetik โ `~ โ Safe โ โฆ <model> ยท <provider> โ Konteks 92% tersisa`. Label mode izin memakai warna pastel Google (Safe biru, Auto hijau, Plan kuning, YOLO merah).
|
|
127
|
+
- Kedua garis memakai jumlah tanda pisah yang sama dan hanya berbeda empat kolom, memberi kesan undakan. Baris status menyesuaikan diri bila terminal sempit: rincian token, nama provider, dan keterangan akses dikorbankan berurutan agar tidak pernah melewati lebar terminal dan merusak kotak layout.
|
|
128
|
+
- **Timeline Aktivitas**:
|
|
129
|
+
- Setiap tool yang dijalankan dicatat sebagai pohon: nama tool, durasi, dan jumlah baris output.
|
|
130
|
+
- **Nama tool diwarnai per kategori** agar jenis langkah langsung terbaca sekilas โ baca (cyan) untuk `read_file`/`webfetch`, jelajah (biru) untuk `list_directory`/`search_files`/`websearch`, tulis & ubah (hijau) untuk `write_file`/`edit_file`/`patch_file`, jalankan `run_command` (merah), rencana `todo_list` dan pemeriksaan `diagnostics` (oranye tua). Batang pohon ikut mengambil warna tool-nya.
|
|
131
|
+
- Setiap langkah juga menampilkan **nama Punakawan** pelakunya (semAIr, bAIwor, pAItruk, gAIreng) dengan satu warna kuning emas yang seragam โ jadi jelas "siapa" yang bertindak, sementara warna nama tool menunjukkan "aksi apa" yang dilakukan.
|
|
132
|
+
- Pohon digambar **secara langsung**: langkah muncul satu per satu begitu selesai, sementara langkah yang sedang berjalan ditandai penanda berputar (`โ `) amber dan durasi `โฆ` โ jadi progres terlihat mengalir, bukan menunggu semua tool usai.
|
|
133
|
+
- Prompt persetujuan perintah menyembunyikan blok aktivitas dulu agar tampilan tidak rusak, lalu menggambarnya kembali.
|
|
134
|
+
- Tool yang gagal ditandai merah agar mudah dipindai sekilas, dan keluarannya ikut diringkas.
|
|
135
|
+
- Daftar tugas dari `todo_list` dirender sebagai checklist di bawah node-nya, lengkap dengan progres `3/5 selesai`.
|
|
136
|
+
- Saat keluaran dialihkan (`baiworcode "prompt" > hasil.txt`), animasi dilewati dan pohon dicetak sekali tanpa karakter escape.
|
|
137
|
+
- **Anggun Konteks**:
|
|
138
|
+
- Indikator `Konteks 92% tersisa` tampil di banner awal dan sekali lagi setelah setiap jawaban.
|
|
139
|
+
- Riwayat dipangkas otomatis berdasarkan perkiraan **token**, bukan jumlah pesan โ hasil `read_file` yang berukuran besar tidak lagi membuat request ditolak provider.
|
|
140
|
+
- Pesan `tool` tidak pernah dilepas dari pesan `assistant` yang memanggilnya, karena pasangan yang terpotong akan membuat provider menolak request.
|
|
141
|
+
- Peringatan muncul dan menyarankan `/clear` saat konteks tinggal sedikit.
|
|
142
|
+
- **Angkanya adalah estimasi** (sekitar 4 karakter per token), bukan hitungan token dari provider: sebagian endpoint tidak mengirim `usage`, dan model kustom tidak punya angka jendela konteks yang bisa dikutip dengan jujur. Karena itu label selalu ditandai `โ`.
|
|
143
|
+
- **Navigasi Perintah Cerdas (Slash Commands & Subcommands)**:
|
|
144
|
+
- Ketik `/` untuk memunculkan menu dropdown perintah secara real-time.
|
|
145
|
+
- Navigasi cepat dengan tombol panah (`โ` / `โ`).
|
|
146
|
+
- **Auto-complete presisi dengan `Tab`**: Menekan `Tab` langsung melengkapi nama perintah/subperintah ke dalam frame input dan menutup dropdown secara instan, siap dieksekusi via `Enter` atau ditambah argumen kustom.
|
|
147
|
+
- Dukungan subperintah bertingkat untuk `/timeline` (`compact` / `detail`), `/session` (`list`, `resume`, `delete`, `clear`), dan `/skill` (`list`, `info`).
|
|
148
|
+
- Riwayat prompt cerdas: tombol panah `โ` / `โ` saat dropdown tertutup memanggil kembali riwayat perintah sebelumnya.
|
|
149
|
+
- **Aturan Proyek Otomatis (Project Rules Engine)**:
|
|
150
|
+
- Otomatis mendeteksi dan menerapkan panduan koding proyek dari `BAIWORS.md`, `BAIWORS.local.md`, atau berkas aturan di `.baiwor/rules/*.md`.
|
|
151
|
+
- bAIwor otomatis mematuhi standar arsitektur, konvensi penamaan, dan batasan teknologi yang kamu tetapkan untuk proyekmu tanpa perlu diingatkan berulang kali.
|
|
152
|
+
- **Sistem Keahlian & Plugin (.baiwor/skills)**:
|
|
153
|
+
- Kelola instruksi spesifik domain dan modul keahlian di `.baiwor/skills/` untuk memperkaya wawasan bAIwor dalam menangani alur kerja khusus timmu.
|
|
154
|
+
- **Arsitektur Autentikasi & Provider**:
|
|
155
|
+
- **Google Gemini OAuth** via PKCE (loopback + S256) โ login tanpa menyimpan API key di disk.
|
|
156
|
+
- **Agentik AI** sebagai provider bawaan (endpoint OpenAI-compatible + bonus token).
|
|
157
|
+
- Dukungan **Custom OpenAI-compatible endpoints** lengkap dengan fetch otomatis `/models` dan ganti model aktif.
|
|
158
|
+
- Konfigurasi tersimpan otomatis & atomik di `~/.baiwor/config.json` dengan proteksi backup bila file korup.
|
|
159
|
+
- **Mesin Chat Streaming & Agentic Loop**:
|
|
160
|
+
- Panggilan `/chat/completions` streaming (SSE) dengan line-buffering agar aman dari potongan TCP.
|
|
161
|
+
- Percobaan ulang otomatis (retry + backoff) saat jaringan tersendat atau provider mengembalikan error 5xx โ sebelum byte pertama diterima, jadi jawaban tidak pernah terduplikasi.
|
|
162
|
+
- Pesan kegagalan yang ramah dan spesifik: autentikasi, rate limit, server provider, hingga timeout/jaringan (tidak lagi menampilkan `fetch failed` mentah).
|
|
163
|
+
- Dukungan token `reasoning_content` (model reasoning seperti DeepSeek R1) dan pembatalan via `Ctrl+C`.
|
|
164
|
+
- Menekan `Ctrl+C` juga menghentikan perintah terminal yang sedang berjalan, termasuk mematikan seluruh pohon proses di Windows.
|
|
165
|
+
- Riwayat percakapan multi-turn dengan pemangkasan otomatis agar tidak melebihi context window.
|
|
166
|
+
- Berkas berakhiran baris CRLF (khas Windows) dibaca dan disunting tanpa menyisakan `\r` atau mengubah akhir baris seluruh berkas.
|
|
167
|
+
- Loop agentic hingga 100 putaran: model bisa memanggil tool, membaca hasilnya, lalu melanjutkan sendiri.
|
|
168
|
+
- **Selalu berakhir dengan jawaban**: bila batas putaran tercapai โ atau terdeteksi model mengulang rangkaian tool yang sama tiga kali โ bAIwor otomatis meminta satu giliran kesimpulan **tanpa tool**, jadi pekerjaan tidak berhenti tanpa keputusan.
|
|
169
|
+
- **๐ ๏ธ 15 Tool Bawaan** โ bAIwor tidak hanya menjawab, tapi benar-benar mengerjakan:
|
|
170
|
+
- `read_file`, `write_file`, `edit_file`, `patch_file`, `list_directory` โ baca, tulis, dan sunting berkas proyek. Dilengkapi **Visual Diff Review berwarna** di timeline aktivitas dan **Snapshot Rollback instan (`/undo`)** untuk membatalkan seluruh perubahan putaran terakhir secara aman.
|
|
171
|
+
- `edit_file` **tahan banting** โ pencocokannya toleran terhadap perbedaan indentasi, spasi ujung baris, dan CRLF/LF, jadi refactor tidak gagal hanya karena spasi. Ada `replace_all` untuk mengganti semua kemunculan, dan `edits` untuk banyak perubahan sekaligus secara **atomik** (semua berhasil atau tidak ada yang ditulis).
|
|
172
|
+
- `patch_file` โ menerapkan unified diff (format `git diff`); blok konteksnya dicari ulang sehingga patch tetap kena walau nomor baris bergeser.
|
|
173
|
+
- `search_files` โ cari fungsi/teks di seluruh proyek tanpa membuka berkas satu per satu, dengan pengaman anti-ReDoS agar pola berat tidak membuat proses menggantung.
|
|
174
|
+
- `run_command` โ jalankan `npm test`, linter, git, dan perintah terminal lain.
|
|
175
|
+
- `webfetch` & `websearch` โ baca dokumentasi/halaman web dan cari solusi di internet. Didukung **TinyFish Web Intelligence** (rendering JavaScript modern, anti-bot bypass, hasil terstruktur & markdown bersih untuk LLM) dengan fallback mulus ke DuckDuckGo & native fetch.
|
|
176
|
+
- `webautomate` โ mengemudikan browser headless (Web Agent TinyFish / Mako) untuk menyelesaikan misi interaktif, ekstraksi data dinamis, dan pengisian formulir.
|
|
177
|
+
- `diagnostics` โ deteksi & jalankan pemeriksaan mutu proyek (script `lint`/`typecheck`/`check`, atau `tsc`/`eslint`) supaya bAIwor memverifikasi pekerjaannya sebelum menyatakan selesai.
|
|
178
|
+
- **Self-Healing Diagnostics Loop** โ setelah bAIwor selesai mengedit berkas, sistem otomatis menjalankan pemeriksaan diagnostik (lint/typecheck). Jika ada error syntax atau tipe, model langsung diberi konteks error dan diminta memperbaiki secara otomatis (maksimal 2x retry) sebelum memberikan jawaban akhir. Jika auto-repair gagal, pengguna mendapat peringatan jelas dengan rincian error.
|
|
179
|
+
- `todo_list` โ susun rencana tugas untuk pekerjaan besar dan lacak progresnya.
|
|
180
|
+
- `delegate_task` & `ask_user` โ orkestrasi subagent (satu tugas atau **mode paralel hingga 6 tugas, 3 berjalan bersamaan**) dan konfirmasi interaktif.
|
|
181
|
+
- Mode paralel cocok untuk eksplorasi/audit independen: setiap subagent Punakawan punya histori, tool, dan laporan terisolasi; hasilnya disintesis kembali ke agen utama.
|
|
182
|
+
- **๐ Hooks System (Event-Driven Automation)**:
|
|
183
|
+
- Otomatis menjalankan shell command saat event tertentu terjadi: `pre-tool-execute`, `post-tool-execute`, `session-start`, `session-end`.
|
|
184
|
+
- **Pre-hook** bisa memblokir eksekusi tool (misal: validasi command berbahaya sebelum `run_command`).
|
|
185
|
+
- **Post-hook** untuk logging/notifikasi setelah tool selesai (misal: auto-format setelah `edit_file`).
|
|
186
|
+
- Konfigurasi fleksibel di `.baiwor/hooks.json` (per-proyek) atau `~/.baiwor/hooks.json` (global).
|
|
187
|
+
- Kondisi opsional untuk trigger selektif (misal: hanya untuk tool tertentu).
|
|
188
|
+
- Timeout default 30 detik per hook untuk mencegah hang.
|
|
189
|
+
- **๐ Workflows (Multi-Stage Orchestration)**:
|
|
190
|
+
- Skrip JavaScript untuk orkestrasi multi-agent deterministik dengan fase (pipeline/parallel).
|
|
191
|
+
- API sederhana: `agent()`, `parallel()`, `pipeline()`, `phase()` untuk membangun alur kerja kompleks.
|
|
192
|
+
- Workflow disimpan di `.baiwor/workflows/*.js` dan bisa dijalankan ulang kapan saja.
|
|
193
|
+
- Contoh use case: Review kode โ Verifikasi temuan โ Generate laporan, semua berjalan paralel per dimensi.
|
|
194
|
+
- Execution log terstruktur untuk debugging dan audit trail.
|
|
195
|
+
- **๐ฏ Goal/Task Management System**:
|
|
196
|
+
- Structured task tracking dengan dependencies, turn budgets, dan status management.
|
|
197
|
+
- **Goals**: Objective besar dengan optional turn budget untuk kontrol cost.
|
|
198
|
+
- **Tasks**: Unit kerja individual dengan status (pending โ in_progress โ completed/deleted).
|
|
199
|
+
- **Dependencies**: `blocks`/`blockedBy` untuk urutan eksekusi โ task hanya bisa dijalankan jika semua blocker sudah completed.
|
|
200
|
+
- Persistence otomatis ke `.baiwor/goals.json` (project) atau `~/.baiwor/goals.json` (global).
|
|
201
|
+
- API lengkap: `createGoal`, `getGoal`, `updateGoalStatus`, `createTask`, `getTask`, `updateTask`, `addDependency`, `getAvailableTasks`.
|
|
202
|
+
- **๐ Security Scanning Integration**:
|
|
203
|
+
- **Secret Detection**: Scan hardcoded secrets (API keys, passwords, tokens) di berkas kode dengan pattern matching. Mendeteksi AWS keys, GitHub tokens, JWT, private keys, dan generic secrets.
|
|
204
|
+
- **Dependency Audit**: Wrapper untuk `npm audit` dan `pip-audit` untuk mendeteksi vulnerable dependencies dengan severity levels (critical, high, medium, low).
|
|
205
|
+
- **Auto-redaction**: Secret value otomatis di-redact di laporan (tampilkan hanya 4 karakter pertama).
|
|
206
|
+
- **Skip patterns**: Otomatis skip `node_modules`, `.git`, binary files, dan lock files.
|
|
207
|
+
- Laporan human-readable dengan rekomendasi perbaikan.
|
|
208
|
+
- **โฐ Cron/Scheduled Tasks**:
|
|
209
|
+
- Jadwalkan prompt/perintah untuk dijalankan secara berkala (cron expression) atau one-shot.
|
|
210
|
+
- **Cron expression parser**: 5-field format (minute hour day month weekday) dengan support untuk wildcards (`*`), step values (`*/5`), ranges (`9-17`), dan lists (`0,15,30,45`).
|
|
211
|
+
- **Recurring tasks**: Task berulang sesuai cron schedule.
|
|
212
|
+
- **One-shot tasks**: Task sekali jalan pada waktu tertentu (ScheduleWakeup).
|
|
213
|
+
- **Background scheduler**: Berjalan di background dan trigger task saat waktunya tiba.
|
|
214
|
+
- Persistence ke `~/.baiwor/cron-tasks.json`.
|
|
215
|
+
- **๐ค Custom Agent Creator**:
|
|
216
|
+
- Buat custom agents dengan konfigurasi spesifik: system prompt kustom, tool access yang dibatasi, model/temperature/max_tokens override.
|
|
217
|
+
- **Default agents**: Punakawan Squad (pAItruk ๐ญ, gAIreng โ๏ธ, bAIwor ๐จ) sudah predefined.
|
|
218
|
+
- **Custom agents**: Disimpan di `.baiwor/agents/*.json` dan bisa dipanggil via `delegate_task`.
|
|
219
|
+
- **Tool filtering**: Otomatis filter tool definitions berdasarkan `allowedTools` agent.
|
|
220
|
+
- API: `createAgent`, `updateAgent`, `deleteAgent`, `getAgent`, `listAgents`, `filterToolsForAgent`.
|
|
221
|
+
- **๐ฌ Messaging Platforms (Telegram & WhatsApp)**:
|
|
222
|
+
- Akses bAIwor Code dari Telegram Bot atau WhatsApp (Baileys) dengan unified API.
|
|
223
|
+
- **Telegram Bot**: Integrasi dengan `node-telegram-bot-api`, long polling, Markdown formatting, typing indicator.
|
|
224
|
+
- **WhatsApp Baileys**: Integrasi dengan `@whiskeysockets/baileys`, QR code authentication, session persistence, auto-reconnect.
|
|
225
|
+
- **PlatformManager**: Abstraction layer untuk multi-platform dengan event-driven message routing.
|
|
226
|
+
- Commands: `/platform start telegram|whatsapp`, `/platform stop`, `/platform status`.
|
|
227
|
+
- Requirements: `npm install node-telegram-bot-api @whiskeysockets/baileys`
|
|
228
|
+
- **๐ Keamanan Berlapis**:
|
|
229
|
+
- **Sandbox workspace** โ akses berkas dibatasi pada folder proyek; area kredensial seperti `.ssh` dan `~/.baiwor` selalu ditolak.
|
|
230
|
+
- **Approval Gate (Y/n)** โ perintah berisiko seperti `git push`, `npm publish`, atau penghapusan rekursif akan meminta konfirmasi lebih dulu, dengan default **Tidak**.
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
## ๐ Daftar Perintah
|
|
235
|
+
|
|
236
|
+
### Di Dalam Mode Interaktif (`baiworcode` / `baiwor`)
|
|
237
|
+
- `/help` โ Panduan bantuan & daftar perintah
|
|
238
|
+
- `/permission [safe|auto|plan|yolo]` โ Mode izin terpadu (satu konsep, empat level): **safe** (biru: semua perubahan tanya), **auto** (hijau: berkas langsung, perintah berisiko tetap tanya), **plan** (kuning: arsitek read-only), **yolo** (merah: tanpa tanya; kelas deny tetap ditolak). Shift+Tab untuk siklus cepat.
|
|
239
|
+
- `/compact` โ Ringkas konteks percakapan untuk menghemat ruang token
|
|
240
|
+
- `/timeline [compact|detail]` โ Ganti mode tampilan timeline: compact (satu baris cepat) atau detail (pohon lengkap)
|
|
241
|
+
- `/session [list|resume|delete|clear]` โ Kelola sesi percakapan proyek (daftar sesi, lanjutkan, hapus satu, atau hapus semua)
|
|
242
|
+
- `/cd <folder>` โ Pindah folder kerja (workspace) aktif secara langsung di dalam sesi
|
|
243
|
+
- `/workspace [folder]` โ Lihat status ruang kerja aktif atau ganti folder kerja
|
|
244
|
+
- `/sandbox [status|exec|sync|open|screenshot|pause|resume|key]` โ Kelola MicroVM Cloud Sandbox Linux InstaBox
|
|
245
|
+
- `/update [sandbox]` โ Perbarui bAIwor Code ke versi terbaru dari GitHub (opsional: sinkronkan ke InstaBox)
|
|
246
|
+
- `/doctor` โ Inspeksi kesehatan komprehensif sistem, AI provider, dan sandbox cloud
|
|
247
|
+
- `/skill [list|info]` โ Kelola modul keahlian & plugin (`.baiwor/skills` dan bawaan)
|
|
248
|
+
- `/rules` โ Tampilkan aturan koding aktif proyek & global (`BAIWORS.md` / `.baiwor/rules`)
|
|
249
|
+
- `/status` โ Status konfigurasi, provider aktif, **latency**, dan sesi login
|
|
250
|
+
- `/tinyfish [status|search|fetch|key]` โ Kelola integrasi TinyFish Web Intelligence
|
|
251
|
+
- `/mcp [list|refresh]` โ Kelola server & tool Model Context Protocol (MCP) eksternal
|
|
252
|
+
- `/model [target]` โ Ganti model AI & provider. Tanpa argumen membuka menu; dengan argumen switch langsung: `/model <alias>` atau `/model <provider>/<model>`. Kelola alias: `/model alias list|add|remove`
|
|
253
|
+
- `/provider [target]` โ Alias untuk perintah `/model`
|
|
254
|
+
- `/login` โ Login ke provider OAuth (Google Gemini)
|
|
255
|
+
- `/logout` โ Logout dari sesi provider OAuth
|
|
256
|
+
- `/undo` โ Batalkan seluruh perubahan berkas pada putaran (turn) terakhir secara aman tanpa merusak riwayat Git
|
|
257
|
+
- `/clear` โ Bersihkan layar & reset riwayat percakapan
|
|
258
|
+
- `/reset` โ Reset konteks percakapan tanpa membersihkan layar
|
|
259
|
+
- `/exit` โ Keluar dari bAIwor Code (alias: `/q`, `/quit`)
|
|
260
|
+
- `/q` โ Keluar dari bAIwor Code (alias `/exit`)
|
|
261
|
+
|
|
262
|
+
### Perintah Langsung CLI
|
|
263
|
+
- `baiworcode [folder] [prompt...]` โ Buka bAIwor di folder proyek tertentu atau jalankan instruksi coding langsung
|
|
264
|
+
- `baiworcode -C, --cwd <folder>` โ Tentukan folder kerja (workspace) aktif (alias: `-d`, `--dir`)
|
|
265
|
+
- `baiworcode session [list|resume|delete|clear]` โ Kelola riwayat sesi proyek (lihat, lanjutkan, hapus satu, atau hapus semua)
|
|
266
|
+
- `baiworcode skill [action] [target]` โ Kelola modul keahlian & plugin (`.baiwor/skills`)
|
|
267
|
+
- `baiworcode rules` โ Tampilkan aturan koding aktif proyek & global (`BAIWORS.md` / `.baiwor/rules`)
|
|
268
|
+
- `baiworcode doctor` โ Inspeksi kesehatan komprehensif sistem, AI provider, dan sandbox cloud
|
|
269
|
+
- `baiworcode update [sandbox] [--yes]` โ Perbarui bAIwor Code ke versi terbaru dari GitHub (verifikasi origin + konfirmasi; `--yes` untuk skrip)
|
|
270
|
+
- `baiworcode status` โ Status konfigurasi dan sesi login
|
|
271
|
+
- `baiworcode mcp` โ Jalankan bAIwor Code sebagai MCP Server (stdio) untuk berbagai klien MCP eksternal
|
|
272
|
+
- `baiworcode model [target]` โ Tanpa argumen: menu kelola model/provider. Dengan argumen: switch langsung (`baiworcode model step`, `baiworcode model stepfun/step-5-preview`, `baiworcode model alias add ...`)
|
|
273
|
+
- `baiworcode provider [target]` โ Alias untuk perintah `model`
|
|
274
|
+
- `baiworcode login [provider]` โ Login langsung ke provider OAuth
|
|
275
|
+
- `baiworcode logout [provider]` โ Logout langsung dari provider OAuth
|
|
276
|
+
|
|
277
|
+
### โก Model Aliases โ Switch Model Sekali Ketik
|
|
278
|
+
|
|
279
|
+
Selain menu interaktif, model & provider bisa di-switch langsung pakai nama pendek (alias) atau short form `provider/model`:
|
|
280
|
+
|
|
281
|
+
```bash
|
|
282
|
+
baiworcode model step # lewat alias tersimpan
|
|
283
|
+
baiworcode model stepfun/step-5-preview # short form: provider/model
|
|
284
|
+
baiworcode model gemini # alias bawaan (Google Gemini)
|
|
285
|
+
baiworcode model agentik # alias bawaan (Agentik AI)
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
Kelola alias (tersimpan di `~/.baiwor/config.json`, key `modelAliases`):
|
|
289
|
+
|
|
290
|
+
```bash
|
|
291
|
+
baiworcode model alias list # lihat semua alias
|
|
292
|
+
baiworcode model alias add step stepfun/step-5-preview # simpan alias baru
|
|
293
|
+
baiworcode model alias remove step # hapus alias
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
Di dalam mode interaktif, cara pakainya sama โ cukup `/model step`, `/model alias list`, dan seterusnya. Alias bentuk panjang (dengan `baseUrl` + `apiKey` sendiri) bisa disunting langsung di `config.json` untuk endpoint kustom yang butuh kredensial terpisah:
|
|
297
|
+
|
|
298
|
+
```json
|
|
299
|
+
{
|
|
300
|
+
"modelAliases": {
|
|
301
|
+
"theta": {
|
|
302
|
+
"model": "theta-1",
|
|
303
|
+
"provider": "custom",
|
|
304
|
+
"baseUrl": "https://theta.example.com/v1",
|
|
305
|
+
"apiKey": "${THETA_API_KEY}"
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
> Placeholder `${THETA_API_KEY}` (atau `$VAR` / `key_env`) diekspansi **saat request**, bukan saat disimpan. `config.json` tetap menyimpan placeholder sehingga nilai rahasia tidak ikut tersimpan ke disk.
|
|
312
|
+
>
|
|
313
|
+
> Endpoint yang hanya mendukung **OpenAI Responses API** bisa dipaksa lewat `"apiStyle": "responses"` pada entri `customProviders` di `config.json` (atau `"apiStyle": "chat"` untuk memaksa Chat Completions). Tanpa itu, bAIwor mendeteksi dari URL `/responses` atau nama model.
|
|
314
|
+
|
|
315
|
+
---
|
|
316
|
+
|
|
317
|
+
## ๐ ๏ธ Daftar Tool (15 Tools)
|
|
318
|
+
|
|
319
|
+
| Tool | Kegunaan |
|
|
320
|
+
|---|---|
|
|
321
|
+
| `read_file` | Membaca isi berkas beserta nomor baris |
|
|
322
|
+
| `write_file` | Membuat berkas baru atau menimpa berkas yang ada |
|
|
323
|
+
| `edit_file` | Mengganti potongan kode (toleran indentasi/spasi; mendukung `replace_all` & `edits` sekaligus) |
|
|
324
|
+
| `patch_file` | Menerapkan unified diff (`git diff`) ke sebuah berkas |
|
|
325
|
+
| `list_directory` | Melihat daftar berkas & folder (mengabaikan `node_modules`) |
|
|
326
|
+
| `search_files` | Mencari teks/fungsi di seluruh proyek, atau mencari nama berkas |
|
|
327
|
+
| `run_command` | Menjalankan perintah terminal di dalam workspace |
|
|
328
|
+
| `webfetch` | Mengambil & mengekstrak URL bersih (didukung **TinyFish** rendering JS & anti-bot, fallback fetch standar) |
|
|
329
|
+
| `websearch` | Mencari di web terstruktur & berperingkat (didukung **TinyFish Search**, fallback DuckDuckGo) |
|
|
330
|
+
| `webautomate` | Menjalankan otomasi browser headless (**TinyFish Web Agent / Mako**) untuk misi interaktif web |
|
|
331
|
+
| `diagnostics` | Menjalankan pemeriksaan mutu proyek (lint/typecheck/tsc/eslint) |
|
|
332
|
+
| `todo_list` | Menyusun dan memperbarui daftar tugas multi-langkah, ditampilkan sebagai checklist |
|
|
333
|
+
| `delegate_task` | Mendelegasikan satu tugas, atau 2-6 tugas **paralel** (maks 3 sekaligus), ke subagent Punakawan terisolasi |
|
|
334
|
+
| `ask_user` | Mengajukan pertanyaan atau mengonfirmasi pilihan interaktif kepada pengguna |
|
|
335
|
+
| `instabox_exec` | Menjalankan perintah di MicroVM Linux InstaBox (aktif bila API key sandbox dikonfigurasi) |
|
|
336
|
+
|
|
337
|
+
### ๐ Integrasi TinyFish Web Intelligence
|
|
338
|
+
|
|
339
|
+
bAIwor Code kini terintegrasi secara bawaan dengan ekosistem [TinyFish](https://www.tinyfish.ai/):
|
|
340
|
+
- **Search API**: Pencarian web berperingkat tinggi, terstruktur, dan cepat tanpa risiko bot blocking.
|
|
341
|
+
- **Fetch API**: Mengambil konten web dengan rendering JavaScript lengkap, bypass Cloudflare/anti-bot secara otomatis, dan mengembalikan Markdown bersih yang hemat token LLM.
|
|
342
|
+
- **Web Automate (Mako Agent)**: Mengemudikan browser nyata via perintah alami untuk menyelesaikan alur multi-langkah di web.
|
|
343
|
+
- **Perintah REPL `/tinyfish`**:
|
|
344
|
+
- `/tinyfish status` โ Menampilkan status koneksi, API key aktif, dan saldo wallet TinyFish.
|
|
345
|
+
- `/tinyfish search <query>` โ Uji pencarian web langsung dari terminal.
|
|
346
|
+
- `/tinyfish fetch <url>` โ Uji ekstraksi halaman web langsung dari terminal.
|
|
347
|
+
- `/tinyfish key <apiKey>` โ Mengatur atau memperbarui TinyFish API Key.
|
|
348
|
+
|
|
349
|
+
### ๐ Model Context Protocol (MCP)
|
|
350
|
+
|
|
351
|
+
bAIwor Code mendukung standar terbuka **Model Context Protocol (MCP)** secara dua arah:
|
|
352
|
+
|
|
353
|
+
#### 1. Sebagai MCP Client (Konsumsi Tool Eksternal)
|
|
354
|
+
bAIwor Code dapat terhubung ke berbagai server MCP (baik via **remote HTTP** maupun **stdio command**), membaca seluruh tools yang diekspos server tersebut, dan langsung menyediakannya ke dalam loop agentic bAIwor.
|
|
355
|
+
- Server dari konfigurasi **global** (`~/.baiwor/config.json` / `~/.baiwor/mcp.json`) aktif otomatis.
|
|
356
|
+
- Server dari berkas **proyek** (`.mcp.json` / `.baiwor/mcp.json`) **tidak dijalankan otomatis**. Saat masuk sesi interaktif, bAIwor menampilkan perintah/URL yang akan dijalankan dan meminta persetujuan. Persetujuan disimpan per folder + hash berkas; jika isi berkas berubah, persetujuan diminta ulang. Di mode non-TTY, server proyek dilewati.
|
|
357
|
+
- Konfigurasi server MCP tersimpan di `~/.baiwor/config.json` (key `"mcpServers"`) atau berkas lokal proyek `.baiwor/mcp.json`:
|
|
358
|
+
```json
|
|
359
|
+
{
|
|
360
|
+
"mcpServers": {
|
|
361
|
+
"github": {
|
|
362
|
+
"command": "npx",
|
|
363
|
+
"args": ["-y", "@modelcontextprotocol/server-github"],
|
|
364
|
+
"env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "..." }
|
|
365
|
+
},
|
|
366
|
+
"custom_remote": {
|
|
367
|
+
"type": "remote",
|
|
368
|
+
"url": "https://mcp.example.com",
|
|
369
|
+
"headers": { "Authorization": "Bearer ..." }
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
```
|
|
374
|
+
- Integrasi TinyFish MCP otomatis aktif bila `tinyfishApiKey` tersedia di konfigurasi bAIwor.
|
|
375
|
+
- **Penyedia bawaan dengan kuota gratis** โ cukup isi API key, servernya terdaftar & tersambung otomatis (kunci dikirim lewat header `Authorization`, tidak tersimpan di URL):
|
|
376
|
+
- **Tavily** (`tvly-โฆ`) โ [`https://mcp.tavily.com/mcp/`](https://docs.tavily.com/documentation/mcp): `tavily_search`, `tavily_extract`, `tavily_crawl`, `tavily_map`, `tavily_research`. Isi: `/mcp key tavily <tvly-โฆ>` atau env `TAVILY_API_KEY`.
|
|
377
|
+
- **Firecrawl** (`fc-โฆ`) โ [`https://mcp.firecrawl.dev/v2/mcp`](https://docs.firecrawl.dev/mcp-server): `firecrawl_scrape`, `firecrawl_search`, `firecrawl_parse`. Isi: `/mcp key firecrawl <fc-โฆ>` atau env `FIRECRAWL_API_KEY`.
|
|
378
|
+
- **Nilai `${VAR}` pada konfigurasi** (di `url`, `headers`, `env`, maupun `args`) diambil dari environment saat baiworcode berjalan, jadi API key tidak perlu tertulis di berkas. Dukungan cadangan: `${VAR:-nilai_cadangan}`. Bila `VAR` kosong dan tidak ada cadangannya, server tersebut dilewati dengan pesan yang menyebut nama variabelnya.
|
|
379
|
+
- **Perintah REPL `/mcp`**:
|
|
380
|
+
- `/mcp list` โ Tampilkan seluruh server MCP dan daftar tool dinamis yang terhubung.
|
|
381
|
+
- `/mcp add [nama]` โ Wizard tambah server: pilih remote/stdio, isi URL, tempel kunci (input tersembunyi), lalu langsung diuji koneksi. Konfigurasinya ditulis ke `~/.baiwor/config.json`.
|
|
382
|
+
- `/mcp remove <nama>` โ Lepas server dari konfigurasi global sekaligus melepas tool-nya.
|
|
383
|
+
- `/mcp key <tavily|firecrawl|tinyfish> [apiKey]` โ Isi/lihat API key penyedia bawaan lalu sambungkan ulang.
|
|
384
|
+
- `/mcp refresh` โ Muat ulang dan sambungkan kembali seluruh koneksi server MCP.
|
|
385
|
+
|
|
386
|
+
Contoh nyata โ email untuk agen lewat [AgentMail](https://docs.agentmail.to/integrations/mcp): jalankan `/mcp add agentmail`, pilih *URL jarak jauh*, isi `https://mcp.agentmail.to/mcp`, pilih header `x-api-key`, lalu tempel kunci dari console.agentmail.to. Setelah tersambung, tool seperti `create_inbox` dan `send_email` langsung bisa diminta dengan bahasa sehari-hari.
|
|
387
|
+
|
|
388
|
+
#### 2. Sebagai MCP Server (Gunakan bAIwor Code di Klien MCP Eksternal)
|
|
389
|
+
bAIwor Code dapat bertindak sebagai server MCP berstandar stdio JSON-RPC 2.0 untuk mengekspos **15 tools bawaan bAIwor Code** ke berbagai aplikasi klien MCP eksternal:
|
|
390
|
+
```bash
|
|
391
|
+
baiworcode mcp
|
|
392
|
+
```
|
|
393
|
+
Contoh konfigurasi di file konfigurasi MCP klien Anda:
|
|
394
|
+
```json
|
|
395
|
+
{
|
|
396
|
+
"mcpServers": {
|
|
397
|
+
"baiworcode": {
|
|
398
|
+
"command": "baiworcode",
|
|
399
|
+
"args": ["mcp"]
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
```
|
|
404
|
+
|
|
405
|
+
### Contoh Pemakaian Tool Baru
|
|
406
|
+
|
|
407
|
+
Cukup tulis dalam bahasa sehari-hari โ bAIwor memilih tool-nya sendiri:
|
|
408
|
+
|
|
409
|
+
| Mau apa | Tulis apa |
|
|
410
|
+
|---|---|
|
|
411
|
+
| Baca dokumentasi | `"buka https://nodejs.org/api/fs.html lalu ringkas bagian promises"` |
|
|
412
|
+
| Cari solusi galat | `"cari di web kenapa fetch gagal dengan 'ECONNRESET' di Node.js"` |
|
|
413
|
+
| Ganti semua sekaligus | `"ganti semua console.log di src/ menjadi logger.info"` |
|
|
414
|
+
| Terapkan patch/diff | `"terapkan patch berikut ke src/utils.js: <tempel unified diff>"` |
|
|
415
|
+
| Periksa sebelum selesai | `"jalankan diagnostics dan perbaiki semua yang gagal"` |
|
|
416
|
+
| Cek tipe & lint | `"cek lint dan tipe proyek ini, lalu rapikan"` |
|
|
417
|
+
|
|
418
|
+
---
|
|
419
|
+
|
|
420
|
+
## ๐ Keamanan
|
|
421
|
+
|
|
422
|
+
bAIwor Code dapat membaca, menulis, dan menjalankan perintah di komputermu. Karena itu ada beberapa lapis pengaman:
|
|
423
|
+
|
|
424
|
+
1. **Sandbox workspace** โ akses berkas dibatasi pada folder proyek (dan folder temp). Pemeriksaan memakai **realpath**, sehingga symlink/junction yang mengarah ke luar workspace (`~/.ssh`, `~/.baiwor`, folder lain) ditolak. Upaya keluar lewat `cd ..`, `cd ./..`, path `..\\`, `$env:USERPROFILE`, dan UNC path juga ditolak. Pencocokannya sadar konteks: **menyebut** `.ssh` di dalam pesan commit tidak diblokir, tetapi **akses berkasnya** tetap ditolak.
|
|
425
|
+
2. **Approval Gate** โ perintah berisiko (`git push`, `npm publish`, `rm -rf`, `git reset --hard`, `rmdir /s`, `Remove-Item -Recurse`, dan sejenisnya) tidak dijalankan sebelum kamu menyetujuinya. Jawaban default adalah **Tidak**.
|
|
426
|
+
3. **Trust MCP proyek** โ server MCP dari `.mcp.json` proyek harus disetujui dulu; perintah yang akan dijalankan ditampilkan sebelum eksekusi. Environment MCP juga dibatasi (allowlist), tidak lagi mewariskan seluruh token/API key.
|
|
427
|
+
4. **Proteksi web fetch** โ alamat loopback/privat/link-local dan hostname yang resolve ke IP privat ditolak (anti-SSRF), redirect divalidasi per hop, ukuran body dibatasi, dan konten web ditandai sebagai tidak tepercaya. Untuk pengembangan lokal, set `BAIWOR_ALLOW_PRIVATE_FETCH=1`.
|
|
428
|
+
5. **Update terkendali** โ `baiwor update` memverifikasi origin repositori resmi, meminta konfirmasi, memakai `git pull --ff-only`, dan memasang dependensi dengan `--ignore-scripts`. Gunakan `--yes` hanya di skrip yang sudah kamu kontrol.
|
|
429
|
+
|
|
430
|
+
> **Catatan:** pengaman perintah bekerja dengan mengenali pola, jadi sifatnya berlapis โ bukan isolasi tingkat sistem operasi. Untuk pekerjaan yang sangat sensitif, tetap periksa perintah yang diminta bAIwor sebelum menyetujuinya.
|
|
431
|
+
>
|
|
432
|
+
> **Repo tidak tepercaya:** saat agen diminta menjalankan test/lint/diagnostics, script dari `package.json` proyek ikut dieksekusi. Buka hanya proyek yang kamu percaya, atau jalankan dulu di InstaBox/container terpisah.
|
|
433
|
+
|
|
434
|
+
---
|
|
435
|
+
|
|
436
|
+
## ๐ Bonus Kredit & Komunitas
|
|
437
|
+
Pengguna dan instalasi bAIwor Code berkesempatan mendapatkan bonus token/kredit API melalui partner resmi di [agentik.my.id](https://agentik.my.id) dengan kode kupon **"baiworcode"**.
|
|
438
|
+
|
|
439
|
+
---
|
|
440
|
+
|
|
441
|
+
## ๐ Tentang bAIwor & Website Resmi
|
|
442
|
+
|
|
443
|
+
- **Website Resmi**: [https://baiwor.my.id](https://baiwor.my.id)
|
|
444
|
+
- **Ekosistem & Pembaruan**: Kunjungi [baiwor.my.id](https://baiwor.my.id) untuk dokumentasi lengkap, panduan setup, dan informasi rilis terbaru.
|
|
445
|
+
- **Bonus Token AI**: Dapatkan kuota token tambahan melalui [https://agentik.my.id](https://agentik.my.id) (Kupon: `baiworcode`).
|
|
446
|
+
- **Pengembang**: PT. bAIwor Agentic Indonesia.
|
|
447
|
+
|
|
448
|
+
---
|
|
449
|
+
|
|
450
|
+
## ๐ Lisensi
|
|
451
|
+
MIT License ยฉ 2026 [bAIwor](https://baiwor.my.id) โ lihat berkas [LICENSE](LICENSE).
|