Terakhir diperbarui: 2026-06-18
- Landing page
apps/webdimigrasikan dari Vue 3 + Vite ke Astro + Tailwind. - Entry point sekarang memakai
src/pages/index.astrodan layout dasarsrc/layouts/BaseLayout.astro. - Section landing tetap dipisah per komponen di
src/components/landing/*.astro, dengan komentar konten lama dipertahankan sebagai panduan implementasi UI berikutnya. - Struktur placeholder ditambahkan untuk
src/assets,src/data,src/lib,src/scripts, dansrc/components/ui, masing-masing dengan README singkat tentang isi folder nantinya. - Tailwind tetap dipakai melalui
src/styles/global.css,postcss.config.js, dantailwind.config.js. - Astro dipin ke
5.7.14karenaastro@latestsaat ini membutuhkan Node>=22.12.0, sementara DevMap masih menargetkan Node.js 18+. - Build web berhasil dengan
astro check && astro build.
fileIndexsekarang menyimpan metadata navigasi Tier 1:purpose,scope,featureRefs,searchTerms, danimportance.- Scope file diklasifikasikan berdasarkan responsibility (
api,ui,database,config,service,cli,test,docs,unknown) tanpa mensyaratkan framework tertentu. - Feature metadata diperkaya dengan
purpose,files,entryPoints,searchTerms, danconfidence. - Snapshot sekarang memiliki
flowsminimal untuk high-confidence features. Flow masih sederhana dan belum memakai call graph. - Analyze dapat menjalankan AI enrichment batched untuk purpose/searchTerms: maksimal 20 file per call, fallback aman jika gagal.
- Context Builder memakai
fileIndex.searchTerms,feature.searchTerms,featureRefs,scope,importance, danpurposesebagai sinyal retrieval. - Snapshot reader memberi default aman untuk snapshot lama agar
asktetap berjalan sambil user bisa regenerate snapshot.
QuestionContextsekarang menyimpanexpandedTermsselainintent,keywords,confidence,relevantFiles, dantopScore.devmap askdapat menjalankan query-expansion Groq ringan sebelum scoring. Respons harus berupa JSON array dan hanya dipakai sebagai retrieval terms.- Expanded terms ikut ranking dengan bobot lebih rendah dari keyword langsung, sehingga direct match tetap mengalahkan inferred match.
- Confidence mengikuti batas eksplisit:
highuntuk skor 70+,mediumuntuk 40+, danlowdi bawah 40. File di bawah skor 25 tetap dikeluarkan. - Low-confidence context tidak dikirim ke model jawaban. Command memberi jawaban lokal yang menjelaskan bahwa tidak ada strong match dan menyarankan langkah investigasi.
- Prompt
asksekarang mengirimEXPANDED_TERMSdan memperingatkan model agar memperlakukan expanded terms sebagai hint retrieval, bukan fakta project. - Dokumentasi publik diperbarui untuk menjelaskan confidence, threshold, query expansion, dan low-confidence behavior.
- Focused tests hijau untuk context builder, ask command, dan AI prompt contract.
- Human-readable
devmap asksekarang hanya menampilkan path pada bagianRelevant Files; alasan scoring tetap tersedia di--json. - Query understanding memisahkan intent umum (
add_feature,change,debug,explain,navigate,general) dari keyword pencarian agar action word sepertiadd,change, atauwheretidak mengganggu ranking. - Retrieval sekarang menyimpan
confidence(high,medium,low) dantopScorepadaQuestionContext. - Minimum relevance threshold mencegah file dengan skor lemah dikirim hanya karena menjadi kandidat terbaik dari hasil yang sama-sama tidak relevan.
- Jika tidak ada file melewati threshold,
relevantFileskosong danaskmemberi jawaban lokal low-confidence tanpa memanggil Groq. - Context keyword extraction mengabaikan connector word English seperti
todaninagar file sepertidoctor.tstidak menang hanya karena partial stop-word match. - Scoring path/export sekarang memprioritaskan exact search term dibanding substring match, sehingga ranking lebih stabil untuk berbagai jenis pertanyaan.
- Prompt
asksekarang meminta jawaban langsung, tidak mengulang pertanyaan, tidak mengulang section/sentence, dan tidak memberi contoh kode panjang kecuali user memintanya eksplisit. - Prompt
askmenerima intent generik dan diarahkan untuk memulai dari file atau fungsi existing yang tersedia di context sebelum menyarankan file baru. - Context file sudah menyiapkan field future-oriented seperti
exports,topFunctions, danpurpose; extraction fungsi lengkap belum masuk scope. - Scoring kembali memakai data project map utama seperti route metadata dan
entry points agar
asktetap navigation helper berbasis snapshot. - Focused tests mencakup keyword extraction, ranking anti stop-word, output terminal ringkas, intent extraction generik, relevance confidence, threshold low-confidence, dan prompt contract.
- Verification lulus untuk
pnpm test:cli,pnpm build:cli, dangit diff --check.
devmap inithuman-mode sekarang menampilkan DevMap welcome brand panel di awal command.- Provider tidak lagi diprompt terpisah karena MVP hanya mendukung Groq.
Output cukup menampilkan
Provider Groq, lalu meminta Groq API key. - Focused verification lulus untuk init dan welcome tests.
- Versi beta pertama ditetapkan sebagai
0.1.0. - Metadata npm sekarang memakai deskripsi dan keyword product yang jelas.
- README package npm menjelaskan instalasi, Groq setup, command, generated files, agent JSON output, supported stacks, privacy, dan known scope beta.
CHANGELOG.mdmencatat fitur, security/privacy behavior, dan known limitations0.1.0.docs/releasing.mdmendefinisikan release gates, tarball inspection, first npm publish, verification setelah publish, tag GitHub, dan rancangan CD.- Launch checklist PRD disinkronkan dengan bukti automated test dan CI.
- Feedback external dan benchmarking dipindahkan menjadi post-launch beta validation, tanpa mengizinkan claim token savings sebelum ada hasil.
- Human-readable
devmap askdan AI interpretation padadevmap analyzesekarang memakai Groq server-sent events. - Delta response direkonstruksi menjadi hasil lengkap untuk token metadata, snapshot persistence, dan cache.
- Output ditampilkan progresif per paragraf agar heading, list, table, wrapping, dan inline Markdown tetap rapi.
- Provider yang belum memiliki method streaming tetap memakai regular completion tanpa mengubah public command behavior.
- Retry rate limit dan model fallback tetap berjalan sebelum stream dibaca.
--jsonsengaja tidak memakai streaming agar stdout tetap satu dokumen JSON.- Automated test mencakup SSE yang terpecah antar-network chunk, command streaming, snapshot persistence, dan JSON non-streaming.
- Automated test saat ini berjumlah 65 dan seluruhnya lulus.
- Seluruh command MVP mendukung
--json. - stdout JSON hanya berisi satu dokumen valid tanpa ANSI, Markdown renderer, bullet, separator, atau progress text.
analyze --jsonmengembalikan snapshot project.ask --jsonmengembalikan answer, relevant files, model, dan token usage.doctor --jsonmengembalikan diagnostics dan issues terstruktur.config model --jsonmengembalikan model state tanpa membocorkan API key.init --jsonberjalan non-interaktif dan membutuhkan environment API key atau existing config.- Generated
DEVMAP.mdsekarang mengarahkan AI agent memakai--json.
- Default
devmap askmemakaillama-3.1-8b-instant. - Standard
devmap analyzetetap memakaiopenai/gpt-oss-20b. devmap analyze --deepmemakaiopenai/gpt-oss-120b.- Fallback model memakai
openai/gpt-oss-20b. - Command
devmap config model <model>dapat menetapkan override global tanpa mengubah provider atau API key. devmap config model automengembalikan routing default per command.
- Pertanyaan navigasi English seperti
wheredanfindsekarang memakai maksimal dua file dengan maksimal 60 baris per file. - Test, spec, dan fixture dikeluarkan dari pertanyaan produk biasa sehingga dummy authentication fixture tidak lagi dianggap sebagai fitur production.
- File test dapat dipilih kembali ketika query English menyebut
test,testing,spec,fixture, ataucoverage. - Scope English untuk CLI, web UI, dan documentation memberi ranking boost tanpa melakukan hard exclusion terhadap package lain.
- Benchmark existing tetap mencapai top-1 accuracy 20/20 dan top-3 recall 20/20.
- Payload
where scannerpada snapshot DevMap turun dari sekitar 20.844 karakter menjadi 4.423 karakter sebelum tokenisasi.
- Groq HTTP 429 sekarang di-retry maksimal tiga kali dengan exponential backoff sebelum menampilkan error actionable.
- Snapshot reader memvalidasi setiap entry
fileIndexsebelum snapshot dipakai oleh Context Builder. - Config yang corrupt atau memiliki schema tidak valid diperlakukan sebagai config missing.
devmap doctormembaca versi langsung dari package metadata.- Marker baru
AGENTS.mdmemakai kapitalisasiDevMap, sambil tetap mengenali marker legacy agar block lama tidak diduplikasi. - Kontrak stats schema v1 didokumentasikan:
totalFilesdanrelevantFilessama-sama menghitung hasil scanner setelah ignore filtering. - Automated test saat ini berjumlah 47 dan seluruhnya lulus.
- Simbol logo terpisah dan border luar dihapus agar welcome screen lebih bersih.
- Terminal lebar memakai wordmark blok berpinggiran seperti identitas awal.
- Label
DEVMAP CLI, capability line, dan separator aqua solid memperjelas identitas produk sebagai developer tool. - Perbedaan render glyph Unicode pada sebagian font terminal dicatat sebagai known issue untuk compatibility pass berikutnya.
- Terminal lebar memakai wordmark penuh dalam area maksimal 76 kolom.
- Terminal sempit memakai judul
DEVMAPringkas agar panel tidak wrap atau terpotong. - Renderer panel dipisahkan agar layout lebar dan sempit dapat diuji langsung.
- Automated test saat ini berjumlah 49 dan seluruhnya lulus.
- Bug, reliability/security fix, fitur MVP, dan perubahan UX sekarang memakai issue GitHub sebelum PR dibuat.
- Implementasi dan verification boleh diselesaikan lokal terlebih dahulu.
- Sebelum commit, push, atau PR, agent berhenti dan memberi title/body issue siap pakai kepada maintainer.
- Setelah nomor issue diberikan, PR harus memakai
Closes #Nagar issue tertutup otomatis ketika merge. - Perubahan dokumentasi/proses kecil, typo, dependency maintenance, dan CI housekeeping tidak wajib memakai issue.
- Manual tarball test pada project eksternal dengan Groq API key sudah berhasil dijalankan oleh maintainer.
- Script
pnpm test:package-e2emembuat tarball CLI dari source terbaru. - Tarball dipasang sebagai dependency pada project Next.js dan Express sementara, bukan dijalankan langsung dari workspace.
- E2E memverifikasi
--version,--help,analyze --fresh,ask,doctor, dan isi snapshot. - Home directory diisolasi agar config Groq pribadi tidak terbaca dan tes tidak memakai quota AI.
- Package smoke test di CI sekarang menjalankan alur distribusi end-to-end ini.
devmap analyzesekarang tetap menyelesaikan static analysis ketika rootpackage.jsontidak dapat diparse.- Framework fallback dari struktur source tetap digunakan sehingga project Express atau Next.js masih dapat dikenali tanpa dependency metadata.
- Snapshot menyimpan warning bahwa dependency-based detection mungkin tidak lengkap.
- Output terminal memberi langkah perbaikan untuk membetulkan
package.jsonlalu menjalankandevmap analyze --fresh. - Automated test mencakup warning terminal, snapshot persistence, framework fallback, dan keberhasilan pembuatan snapshot.
- Jawaban AI dari
devmap askdan architecture interpretation daridevmap analyzesekarang dirender sebagai output terminal yang terstruktur. - Heading memakai accent aqua dan separator.
- Marker Markdown inline seperti bold, italic, strikethrough, link, dan backtick tidak lagi tampil mentah.
- Ordered dan unordered list mempertahankan indentasi yang mudah dipindai.
- Markdown table diubah menjadi record vertikal agar tetap terbaca pada terminal sempit.
- Prose dibungkus berdasarkan
process.stdout.columnsdengan minimum width yang aman. - Fenced code tetap ditampilkan sebagai source block dan static context tidak diproses sebagai Markdown.
- Automated test mencakup heading, inline formatting, list, table, wrapping,
fenced code, serta integrasi
askdan cachedanalyze.
TEST.mddisusun ulang sebagai panduan testing praktis untuk maintainer.- Panduan sekarang membedakan source tanpa build, automated test, build
dist, tarball external,npm exec,npm link, AI live, dan CI/runtime testing. - Alur tarball menjelaskan cara membuat artifact, install pada project lain, mengulang install setelah source berubah, expected result, dan cleanup.
- Source mode dijelaskan sebagai cara tercepat melihat perubahan terbaru tanpa build atau install ulang.
devmap initsekarang membuatAGENTS.mddasar jika file belum ada.- Existing
AGENTS.mdtidak pernah ditimpa. - Append DevMap instruction block hanya dilakukan setelah konfirmasi eksplisit
yatauyes. - Mode non-interaktif selalu skip existing
AGENTS.md. - Block yang sudah ada tidak ditambahkan ulang.
- Symlink
AGENTS.mdditolak untuk mencegah write di luar project. - Automated test pada tahap ini berjumlah 43 dan seluruhnya lulus.
- Alur branch
codex/, commit dengan identitasdevmap-agent, push branch, dan draft pull request sudah diverifikasi.
- Snapshot schema versi 1 sudah ditambahkan.
- Snapshot sekarang memiliki project fingerprint untuk stale detection dan reuse ketika source tidak berubah.
- Snapshot corrupt, missing, dan unsupported schema sudah dibedakan.
- Project metadata sekarang mencakup nama, framework, language, dan package manager.
- Analyzer sekarang mendeteksi routes, API routes, database, dan features.
- Critical files memakai score dan alasan, bukan hanya jumlah import.
- Test fixture dan file test tidak lagi mencemari kesimpulan framework, route, service, database, feature, atau entry point production.
- Context Builder heuristic sudah diimplementasikan secara lokal.
- Ranking memakai path, exported symbols, imports, routes, feature evidence, dan critical file signals.
- Pertanyaan Bahasa Indonesia dan English didukung melalui concept aliases.
- Context dapat diperluas satu tingkat ke imported file dan importer terkait.
- Batas context adalah maksimal 5 file dan 200 baris per file.
- File besar memakai relevant line window.
- Path traversal dan symlink escape di luar project root ditolak.
devmap asksudah memakai Context Builder secara lokal.- Benchmark 20 pertanyaan mencakup auth, database, route session, halaman, layout, payment, dan entry point dalam Bahasa Indonesia dan English.
- Hasil benchmark saat ini: top-1 accuracy 20/20 dan top-3 recall 20/20.
- Alias
nextauthditambahkan setelah eval menemukan satu fallback ranking yang salah. - Context Builder sudah siap digunakan sebagai input AI layer.
- Provider abstraction
AiClientsudah ditambahkan. - Groq chat completion memakai endpoint REST resmi tanpa SDK tambahan.
- Default model
askmenggunakan production modelopenai/gpt-oss-20b. - Fallback model menggunakan
llama-3.3-70b-versatile. - Request 429 di-retry maksimal tiga kali memakai exponential backoff dan
header
retry-after. - Invalid API key, rate limit, provider failure, empty response, dan response yang tidak valid diterjemahkan menjadi error actionable.
- Prompt
askhanya memakai context terpilih dan meminta jawaban dalam bahasa yang sama dengan pertanyaan. devmap askmenampilkan token usage agar benchmarking dapat dilakukan.- Jika AI belum dikonfigurasi atau gagal, selected static context tetap ditampilkan.
- Automated test AI memakai fake provider sehingga tidak menggunakan quota.
- Standard
devmap analyzememakaiopenai/gpt-oss-20bketika config bernilaiauto. devmap analyze --deepmemakaillama-3.3-70b-versatile.- Prompt hanya mengirim compact static snapshot, bukan full raw source.
- Interpretasi arsitektur menyebut entry point, critical file, route, feature, database, service, dan relationship yang didukung snapshot.
- Hasil AI, model, generated time, dan token usage disimpan di snapshot.
- Project yang tidak berubah memakai cached AI interpretation tanpa API call baru.
--freshmemaksa static analysis dan AI interpretation baru.- Jika AI gagal, static analysis dan snapshot tetap berhasil.
- Automated test AI memakai mock provider dan tidak menggunakan quota.
devmap doctorsekarang menampilkan versi DevMap, Node.js, OS/arsitektur, lokasi project, framework, package manager, provider, config, dan snapshot.- Node.js di bawah versi 18 ditandai sebagai unsupported.
- Model
autodi-resolve ke model aktualopenai/gpt-oss-20b. - API key divalidasi melalui endpoint daftar model Groq.
- Availability selected model ikut diperiksa.
- Snapshot dibedakan menjadi valid, missing, corrupt, dan unsupported schema.
- API key dan raw stack trace tidak pernah ditampilkan.
- Automated test saat ini berjumlah 38 dan seluruhnya lulus.
- Package CLI publik sekarang bernama
devmap, sedangkan root private workspace bernamadevmap-workspace. - Allowlist package hanya memasukkan
dist; npm tetap menyertakanpackage.json,README.md, danLICENSE. - Script
prepackselalu membangun CLI sebelum tarball dibuat. - Source, test,
.devmap, fixture.env, dan fixturenode_modulestidak lagi masuk tarball. - Tarball
devmap-0.1.0.tgzberhasil dijalankan melaluinpm execuntukdevmap --versiondandevmap --help. - GitHub Actions memiliki package smoke test setelah seluruh matrix CI lulus.
- GitHub Actions matrix sudah ditambahkan untuk:
- Ubuntu, Windows, dan macOS
- Node.js 18, 20, dan 22
- Workspace diturunkan dari pnpm 11 ke pnpm 10.34.2 agar kompatibel dengan Node.js 18 dan 20.
- Frozen install, test CLI, build CLI, smoke CLI, dan build web dijalankan di CI.
- Windows Node.js 18/20 sempat gagal karena shell wildcard
test/*.test.ts. - Test runner cross-platform
packages/cli/test/run-tests.tssudah dibuat. - Runner sudah diverifikasi langsung pada Windows dengan Node.js 18.20.8 dan 20.20.2; keduanya lulus 20/20 test.
07b62d2 Add cross-platform CI with pnpm 10
745f1ed Fix test discovery on Windows
- Pastikan rerun GitHub Actions hijau pada seluruh 9 kombinasi.
- Lakukan manual verification Groq pada project nyata.
- Uji
init,analyze,ask, dandoctordari tarball pada project nyata. - Tambahkan streaming output untuk jawaban AI jika waktu MVP masih tersedia.
DevMap sekarang sudah disiapkan sebagai monorepo pnpm yang berjalan, dengan fondasi CLI yang sudah fungsional. Posisi proyek masih berada di Phase 1 sesuai roadmap: fokus ke static analysis dulu, belum masuk jawaban AI.
Saat ini CLI sudah bisa:
- Menampilkan welcome screen dengan ASCII wordmark DevMap berwarna aqua ketika
devmapdijalankan tanpa command. - Menampilkan root help
devmap --helpdengan tema aqua/gray. - Menampilkan output command dengan warna tema yang konsisten untuk section, status, key-value, list item, dan catatan.
- Membuat konfigurasi lokal DevMap dengan
devmap init. - Menganalisis project dan menyimpan
.devmap/snapshot.json. - Mendeteksi source file, import, entry point, critical file, dan external service yang dikenal.
- Menjawab pertanyaan secara statis dengan mencari file yang kemungkinan relevan.
- Menjalankan diagnostics setup dengan
devmap doctor. - Menjalankan automated test terhadap fixture Next.js dan Express.
- Menyediakan landing page DevMap berbasis Vue dan Vite.
- Menangani command failure tanpa menampilkan raw stack trace.
- Menjalankan setup wizard
devmap initdengan validasi Groq API key. - Membuat
DEVMAP.mdsebagai panduan reusable untuk developer dan AI agent.
- Root
package.jsondiperbarui supaya cocok dengan workflow monorepo yang ada di dokumentasi. - Script root ditambahkan:
pnpm dev:clipnpm build:clipnpm test:cli
- Root package ditandai sebagai
privatekarena repo ini adalah workspace root. - Metadata project diperbarui memakai deskripsi DevMap dan license MIT.
- Package CLI publik memakai nama
devmapagarnpx devmapbekerja. - Entry binary
devmapditambahkan dan diarahkan ke./dist/index.js. - Welcome screen aqua ditambahkan untuk command
devmaptanpa argumen. Desainnya memakai ASCII wordmark DevMap sebagai brand signal, memakai warna truecolor#2EE6D6, lalu isi di bawahnya tetap ringkas dan command-focused. - Script package CLI ditambahkan:
pnpm --filter devmap devpnpm --filter devmap buildpnpm --filter devmap test
commanderdipasang di versi^12.0.0supaya tetap kompatibel dengan requirement Node.js 18+ yang tertulis di dokumentasi.- Node types ditambahkan ke
tsconfig.jsonsupaya TypeScript mengenaliprocess,console, dan importnode:*. - Root help kustom ditambahkan supaya
devmap --helpmengikuti tema terminal DevMap, bukan output default Commander.
.gitignoreditambahkan dengan isi:node_modules/dist/.devmap/.env.env.**.log
- File
node_modules/.pnpm-workspace-state-v1.jsonyang sebelumnya terlanjur tracked sudah dikeluarkan dari tracking Git tanpa menghapus file lokalnya. - Policy pnpm untuk build script
esbuildditambahkan karena dibutuhkan olehtsx.
- Test runner memakai built-in
node:testmelaluitsx, sehingga tidak perlu menambah framework test baru. - Script test CLI sekarang menjalankan unit/integration test dan TypeScript
type-check:
pnpm --filter devmap testpnpm --filter devmap test:unitpnpm --filter devmap test:types
- Fixture Next.js mencakup:
- App Router
- import lokal dengan suffix
.js - NextAuth
- Prisma
.envdannode_modulesuntuk memastikan ignore rules bekerja
- Fixture Express mencakup:
- server entry point
- route lokal
- Stripe
- Tujuh automated tests sudah tersedia untuk scanner, framework detector, dependency graph, service detector, project map, dan snapshot persistence.
- Landing page DevMap sudah tersedia di
apps/web. - Stack web:
- Vue 3
- Vite
- Vue Router
- Tailwind CSS
- Root workspace menyediakan:
pnpm dev:webpnpm build:webpnpm preview:web
- Production build landing page sudah berhasil.
Entry point utama untuk CLI.
Tanggung jawab:
- Menampilkan welcome screen ketika user menjalankan
devmaptanpa command. - Menampilkan root help bertema ketika user menjalankan
devmap --help,devmap -h, ataudevmap help. - Membuat command utama
devmapmenggunakan Commander. - Mendaftarkan command MVP:
initanalyzeaskdoctor
- Menyediakan
--versiondan bantuan command.
Renderer welcome screen untuk first-run experience.
Tanggung jawab:
- Menampilkan ASCII wordmark DevMap berwarna aqua
#2EE6D6. - Menampilkan tagline
Understand Any Codebase. - Menampilkan status snapshot project.
- Menampilkan quick start:
devmap initdevmap analyze
- Menampilkan daftar popular commands seperti
analyze,explain,ask,docs, danonboard.
Renderer root help bertema.
Tanggung jawab:
- Menampilkan usage, daftar command, options, dan link repo dengan warna tema.
- Menjaga
devmap --helptetap konsisten dengan visual terminal DevMap.
Command setup awal.
Perilaku saat ini:
- Membuat
~/.devmap/config.json. - Mengatur Groq sebagai default provider.
- Meminta API key secara interaktif atau membaca
GROQ_API_KEY. - Memvalidasi API key langsung ke Groq.
- Memakai API key lama jika user menekan Enter saat config sudah tersedia.
- Mendeteksi framework project aktif.
- Membuat folder
.devmap/. - Memastikan
.devmap/masuk ke.gitignoreproject aktif. - Membuat
DEVMAP.mdtanpa menimpa file yang sudah ada.
Validator Groq untuk setup MVP.
Tanggung jawab:
- Memvalidasi API key melalui endpoint model Groq.
- Menerjemahkan invalid key, network failure, dan provider failure menjadi error yang actionable.
Global command error boundary.
Tanggung jawab:
- Menangkap error dari command CLI.
- Menampilkan pesan ringkas tanpa raw stack trace.
- Memberi saran tindakan berikutnya.
- Menerjemahkan error umum seperti
ENOENT,EACCES, danEPERM.
Adapter prompt interaktif berbasis node:readline/promises.
Tanggung jawab:
- Membaca provider dan API key saat
devmap init. - Menutup interface input setelah wizard selesai atau gagal.
Generator DEVMAP.md.
Isi utama file:
- lokasi snapshot dan config DevMap
- workflow
analyze,ask, dandoctor - panduan untuk AI agent agar memakai snapshot sebelum eksplorasi buta
- aturan untuk tidak mengedit
.devmap/ - peringatan agar API key tidak pernah di-commit
File yang sudah ada tidak akan ditimpa.
Command untuk analisis project secara statis.
Perilaku saat ini:
- Melakukan scan pada folder project yang ditargetkan.
- Membuat project map.
- Menampilkan nama project, framework, jumlah file, jumlah line, entry point, critical file, dan external service.
- Menyimpan snapshot ke
.devmap/snapshot.json. - Mendukung flag
--deepdan--freshdi level CLI.
Output --deep saat ini masih sederhana dan statis. Penjelasan AI yang lebih
kaya akan masuk di Phase 2.
Command pertanyaan statis.
Perilaku saat ini:
- Membaca
.devmap/snapshot.json. - Jika snapshot belum ada, command menjalankan quick analyze dulu.
- Mengambil keyword dari pertanyaan user.
- Memberi skor file berdasarkan kecocokan keyword terhadap path file dan exported symbol.
- Menampilkan file paling relevan dan preview singkat.
Command ini belum memanggil AI. Di Phase 2, bagian jawaban statis akan diganti dengan output Groq yang context-aware.
Command diagnostics setup.
Perilaku saat ini:
- Menampilkan versi Node.js.
- Mengecek apakah config DevMap sudah ada.
- Mengecek apakah API key sudah diset.
- Mengecek apakah snapshot project sudah ada.
- Memberi warning jika API key Groq belum tersedia.
Scanner filesystem rekursif.
Tanggung jawab:
- Menelusuri folder project.
- Menerapkan ignore rules.
- Membaca isi file.
- Mengembalikan path, absolute path, extension, ukuran file, jumlah line, dan konten file.
Engine ignore rule untuk proses scanning.
Saat ini mengabaikan path umum yang generated atau tidak aman dikirim ke proses analisis:
.git.devmap.next.turbo.vercelbuildcoveragedistnode_modulesout.env*- file log, source map, lockfile, dan asset binary umum
Detector framework.
Deteksi saat ini:
- Next.js terdeteksi dari dependency
nextatau folderapp/. - Express terdeteksi dari dependency
expressatau file entry server umum. - Jika tidak cocok, hasilnya
unknown.
Builder import graph.
Tanggung jawab:
- Melakukan parsing static untuk
import,export from, danrequire(). - Resolve import relatif lokal.
- Mendukung resolve source TypeScript ketika import memakai suffix
.js. - Menghitung reference antar file.
Detector entry point.
Logika saat ini:
- Memprioritaskan source file saja.
- Mendeteksi pola entry point umum seperti:
page.tsxlayout.tsxmiddleware.tsserver.tsapp.tsindex.tsroute.ts
- Juga memasukkan source file yang meng-import file lain tetapi tidak di-import oleh file lokal lain.
Detector external service.
Logika saat ini:
- Membaca dependency package dan import package yang benar-benar ada di source.
- Mendeteksi service yang dikenal seperti Prisma, Supabase, Stripe, NextAuth, Midtrans, Resend, Cloudinary, Firebase, OpenAI, dan Groq.
- Menghindari false positive dari teks dokumentasi atau dari file detector itu sendiri.
Builder project map.
Tanggung jawab:
- Mengorkestrasi scanner, graph builder, framework detector, entry detector, dan service detector.
- Membuat bentuk data snapshot yang dipakai oleh
analyzedanask. - Menyimpan metadata per file:
- hash
- imports
- exported symbols
- line count
Utility kecil untuk hashing MD5.
Dipakai untuk mengenali perubahan konten file pada snapshot dan behavior cache di masa depan.
Helper persistensi snapshot.
Tanggung jawab:
- Menulis
.devmap/snapshot.json. - Membaca snapshot yang sudah ada.
- Menyediakan path canonical untuk snapshot.
Helper global config.
Tanggung jawab:
- Membaca
~/.devmap/config.json. - Menulis
~/.devmap/config.json. - Menyediakan path canonical untuk config.
Helper Git ignore.
Tanggung jawab:
- Memastikan
.devmap/ada di.gitignoreproject. - Menghindari duplikasi entry
.devmap/.
Helper output terminal.
Tanggung jawab:
- Menjaga output command tetap konsisten.
- Menyediakan token warna tema:
- aqua
#2EE6D6 - gray
- green
- yellow
- red
- aqua
- Menyediakan helper untuk section, step, success message, warning, error, baris key-value, list item, note, dan code block.
Automated test utama untuk fondasi static analysis.
Coverage saat ini:
- scanner mengabaikan generated path dan secret file
- deteksi Next.js dan Express
- resolve import TypeScript dengan suffix
.js - perhitungan reference pada dependency graph
- deteksi external service tanpa false positive
- project map Next.js dan Express
- save/read snapshot
Automated test untuk setup dan error handling.
Coverage saat ini:
- konten generator
DEVMAP.md - perlindungan agar
DEVMAP.mdtidak tertimpa - init melalui environment API key
- penolakan provider di luar Groq
- actionable error saat API key tidak tersedia
- error handler tidak membocorkan stack trace
- translasi error path yang tidak ditemukan
Project kecil yang dipakai sebagai input analyzer saat test.
Fixture yang tersedia:
nextjs-projectexpress-project
Panduan testing lokal dan development untuk maintainer.
Mencakup:
- setup environment
- automated test CLI
- development CLI tanpa build
- testing hasil build
- testing
devmap initdan Groq API key - testing
DEVMAP.md - testing error handler
- testing fixture Next.js dan Express
- testing landing page
- checklist sebelum commit
- testing global install dengan
npm link
Pengecekan berikut sudah berhasil:
pnpm --filter devmap test
pnpm --filter devmap build
pnpm --filter @devmap/web build
node packages\cli\dist\index.js --help
node packages\cli\dist\index.js init
node packages\cli\dist\index.js analyze
node packages\cli\dist\index.js ask "where is the scanner logic"
node packages\cli\dist\index.js doctor- Integrasi AI belum diimplementasikan.
asksaat ini hanya mencari file relevan dan menampilkan preview.analyze --deepsaat ini masih menampilkan breakdown statis sederhana.- Dukungan framework masih level MVP: Next.js, Express, atau unknown.
- Snapshot yang dibuat bersifat lokal dan sengaja di-ignore oleh Git.
devmap doctorbelum memvalidasi API key, network, dan availability model.- Input API key interaktif belum disamarkan saat diketik.
- Test belum mencakup edge case project besar, malformed
package.json, dan circular dependency.
- Samarkan input API key saat wizard interaktif.
- Tingkatkan
devmap doctoruntuk validasi API key, network, dan model. - Tambahkan test untuk malformed project dan circular dependency.
- Tambahkan abstraction AI client dan model routing.
- Tambahkan Context Builder dengan batas 3–5 file.
- Tambahkan prompt template untuk
analyzedanask.
Tanggal: 2026-06-18
DevMap sekarang mengabaikan folder .agent/ dan .agents/ saat scan project.
Folder tersebut dipakai untuk metadata/skill AI agent saat development dan
tidak boleh muncul sebagai fitur produk di snapshot.
Verifikasi:
pnpm --filter devmap exec tsx --test test/analyzers.test.tsTanggal: 2026-06-18
Snapshot fileIndex sekarang menyimpan topFunctions, yaitu daftar ringkas
fungsi atau symbol kode penting beserta line number, tipe symbol, status export,
dan status async. Metadata ini menjadi fondasi untuk jawaban ask, onboarding,
dan flow document tanpa harus membaca raw source terlalu banyak.
Flow minimal juga mulai memakai symbol penting pada label step, sehingga flow lebih informatif daripada sekadar daftar file.
Tahap lanjutannya menambahkan request/API flows dari route yang terdeteksi ke
dependency lokalnya. Contoh: route API dapat menghasilkan flow
route.ts -> auth.ts -> db.ts, yang nanti bisa menjadi bahan awal FLOW.md.
Tahap berikutnya menambahkan primary feature entry point, business flow ringkas,
onboarding.recommendedPath, dan changeImpact file-level. Ini sengaja masih
shallow agar snapshot lebih memahami project tanpa masuk ke symbol graph penuh.
Generated DEVMAP.md sekarang memiliki Agent Navigation Contract yang meminta
agent memakai snapshot-first, menjalankan devmap analyze saat snapshot hilang,
dan meminta user menjalankan devmap init jika DevMap belum terkonfigurasi.
Snapshot juga menyimpan agentInstructions kecil untuk machine reader.
Verifikasi:
pnpm --filter devmap exec tsx --test test/analyzers.test.ts test/context-builder.test.ts