# Indonesian (Bahasa, incl. colloquial Jakarta register) phantom-detection
# configuration. Added after a live hallucination narrated in Indonesian
# escaped every detector (#463): character-set language detection cannot
# distinguish Indonesian (pure ASCII Latin) from English, but the intent
# scan checks every loaded language's phrases at once, so these fire
# regardless of detection. Phrases are multi-word to keep cross-language
# collision risk low. All lower-case; matched against lowercased text.
#
# Expanded 2026-07-21 (#667): added full regex coverage, completion claims,
# and reasoning-leak phrases to match en.toml's structure.
intent_phrases = [
# Colloquial Jakarta register (gue/aku)
"sekarang gue ",
"sekarang aku ",
"sekarang saya ",
"biar gue ",
"biar aku ",
"biar saya ",
"gue akan ",
"aku akan ",
"saya akan ",
"akan gue ",
"akan aku ",
"akan saya ",
"gue load ",
"gue jalankan ",
"gue jalanin ",
"gue push ",
"gue commit ",
"gue cek ",
"gue baca ",
"gue lihat ",
"gue periksa ",
"gue update ",
"gue fix ",
"gue bikin ",
"gue buat ",
"gue hapus ",
"gue ganti ",
"gue tambah ",
"gue kurang ",
"gue ubah ",
"mari kita jalankan",
"mari kita cek",
"mari kita lihat",
"mari kita periksa",
"mari kita update",
"mari kita fix",
"mari kita buat",
"mari kita baca",
"coba gue ",
"coba aku ",
"coba saya ",
# Formal register (saya/kita)
"saya akan cek",
"saya akan periksa",
"saya akan lihat",
"saya akan baca",
"saya akan update",
"saya akan fix",
"saya akan buat",
"saya akan bikin",
"saya akan hapus",
"saya akan ganti",
"saya akan tambah",
"saya akan ubah",
"saya akan jalankan",
"saya akan push",
"saya akan commit",
"saya perlu cek",
"saya perlu periksa",
"saya perlu lihat",
"saya perlu baca",
"saya perlu update",
"saya perlu fix",
"saya perlu buat",
"saya perlu jalankan",
"saya harus cek",
"saya harus periksa",
"saya harus update",
"saya harus fix",
"saya harus buat",
"saya harus jalankan",
# "let me" equivalents
"biar saya cek",
"biar saya periksa",
"biar saya lihat",
"biar saya baca",
"biar saya update",
"biar saya fix",
"biar saya buat",
"biar saya jalankan",
"biar saya push",
"biar saya commit",
# "now" equivalents
"sekarang cek ",
"sekarang periksa ",
"sekarang lihat ",
"sekarang baca ",
"sekarang update ",
"sekarang fix ",
"sekarang buat ",
"sekarang jalankan ",
"sekarang push ",
"sekarang commit ",
"sekarang menambah",
"sekarang mengubah",
"sekarang menghapus",
"sekarang membuat",
"sekarang memperbaiki",
"sekarang memperbarui",
# Parity with en.toml (#2225): the same stems English lists as
# verbs, carried through the Indonesian families that announce them.
# The stem after a modal or a pronoun is the natural form here, so one
# list feeds every family rather than a separate conjugation each.
"saya akan tinjau",
"saya akan validasi",
"saya akan verifikasi",
"saya akan tulis",
"saya akan edit",
"saya akan perbarui",
"saya akan perbaiki",
"saya akan load",
"saya akan muat",
"saya akan simpan",
"saya akan pasang",
"saya akan instal",
"saya akan unduh",
"saya akan unggah",
"saya akan sinkron",
"saya akan daftar",
"saya akan aktifkan",
"saya akan nonaktifkan",
"saya akan selidiki",
"saya akan jelajahi",
"saya akan cari",
"saya akan temukan",
"saya akan kumpulkan",
"saya akan ambil",
"saya akan kueri",
"saya akan pindai",
"saya akan lacak",
"saya akan ikuti",
"saya akan bangun",
"saya akan kompilasi",
"saya akan deploy",
"saya akan terapkan",
"saya akan konfigurasi",
"saya akan bersihkan",
"saya akan refaktor",
"saya akan atur ulang",
"saya akan rapikan",
"saya akan mulai ulang",
"saya akan uji",
"saya akan gabung",
"saya akan dokumentasikan",
"saya akan petakan",
"saya akan rencanakan",
"saya akan sambungkan",
"saya akan kembalikan",
"saya akan sesuaikan",
"saya akan pindahkan",
"saya akan ganti nama",
"saya akan migrasi",
"gue mau cek",
"gue mau periksa",
"gue mau tinjau",
"gue mau validasi",
"gue mau verifikasi",
"gue mau lihat",
"gue mau baca",
"gue mau tulis",
"gue mau edit",
"gue mau update",
"gue mau perbarui",
"gue mau fix",
"gue mau perbaiki",
"gue mau buat",
"gue mau bikin",
"gue mau hapus",
"gue mau ganti",
"gue mau tambah",
"gue mau ubah",
"gue mau jalankan",
"gue mau load",
"gue mau muat",
"gue mau simpan",
"gue mau pasang",
"gue mau instal",
"gue mau unduh",
"gue mau unggah",
"gue mau sinkron",
"gue mau daftar",
"gue mau aktifkan",
"gue mau nonaktifkan",
"gue mau selidiki",
"gue mau jelajahi",
"gue mau cari",
"gue mau temukan",
"gue mau kumpulkan",
"gue mau ambil",
"gue mau kueri",
"gue mau pindai",
"gue mau lacak",
"gue mau ikuti",
"gue mau bangun",
"gue mau kompilasi",
"gue mau deploy",
"gue mau terapkan",
"gue mau konfigurasi",
"gue mau bersihkan",
"gue mau refaktor",
"gue mau atur ulang",
"gue mau rapikan",
"gue mau mulai ulang",
"gue mau uji",
"gue mau gabung",
"gue mau dokumentasikan",
"gue mau petakan",
"gue mau rencanakan",
"gue mau sambungkan",
"gue mau kembalikan",
"gue mau sesuaikan",
"gue mau pindahkan",
"gue mau ganti nama",
"gue mau migrasi",
"gue mau commit",
"gue mau push",
"aku mau cek",
"aku mau periksa",
"aku mau tinjau",
"aku mau validasi",
"aku mau verifikasi",
"aku mau lihat",
"aku mau baca",
"aku mau tulis",
"aku mau edit",
"aku mau update",
"aku mau perbarui",
"aku mau fix",
"aku mau perbaiki",
"aku mau buat",
"aku mau bikin",
"aku mau hapus",
"aku mau ganti",
"aku mau tambah",
"aku mau ubah",
"aku mau jalankan",
"aku mau load",
"aku mau muat",
"aku mau simpan",
"aku mau pasang",
"aku mau instal",
"aku mau unduh",
"aku mau unggah",
"aku mau sinkron",
"aku mau daftar",
"aku mau aktifkan",
"aku mau nonaktifkan",
"aku mau selidiki",
"aku mau jelajahi",
"aku mau cari",
"aku mau temukan",
"aku mau kumpulkan",
"aku mau ambil",
"aku mau kueri",
"aku mau pindai",
"aku mau lacak",
"saya mau cek",
"saya mau periksa",
"saya mau tinjau",
"saya mau validasi",
"saya mau verifikasi",
"saya mau lihat",
"saya mau baca",
"saya mau tulis",
"saya mau edit",
"saya mau update",
"saya mau perbarui",
"saya mau fix",
"saya mau perbaiki",
"saya mau buat",
"saya mau bikin",
"saya mau hapus",
"saya mau ganti",
"saya mau tambah",
"saya mau ubah",
"saya mau jalankan",
"saya mau load",
"saya mau muat",
"saya mau simpan",
"saya mau pasang",
"saya mau instal",
"saya mau unduh",
"saya mau unggah",
"saya mau sinkron",
"saya mau daftar",
"saya mau aktifkan",
"saya mau nonaktifkan",
"saya mau selidiki",
"saya mau jelajahi",
"saya mau cari",
"saya mau temukan",
"saya mau kumpulkan",
"saya mau ambil",
"saya mau kueri",
"saya mau pindai",
"saya mau lacak",
"biar saya tinjau",
"biar saya validasi",
"biar saya verifikasi",
"biar saya tulis",
"biar saya edit",
"biar saya perbarui",
"biar saya perbaiki",
"biar saya bikin",
"biar saya hapus",
"biar saya ganti",
"biar saya tambah",
"biar saya ubah",
"biar saya load",
"biar saya muat",
"biar saya simpan",
"biar saya pasang",
"biar saya instal",
"biar saya unduh",
"biar saya unggah",
"biar saya sinkron",
"biar saya daftar",
"biar saya aktifkan",
"biar saya nonaktifkan",
"biar saya selidiki",
"biar saya jelajahi",
"biar saya cari",
"biar saya temukan",
"biar saya kumpulkan",
"biar saya ambil",
"biar saya kueri",
"biar saya pindai",
"biar saya lacak",
"biar saya ikuti",
"biar saya bangun",
"biar saya kompilasi",
"biar saya deploy",
"biar saya terapkan",
"biar saya konfigurasi",
"biar saya bersihkan",
"biar saya refaktor",
"biar saya atur ulang",
"biar saya rapikan",
"biar saya mulai ulang",
"biar saya uji",
"biar saya gabung",
"biar saya dokumentasikan",
"biar saya petakan",
"biar saya rencanakan",
"biar saya sambungkan",
"biar saya kembalikan",
"biar saya sesuaikan",
"biar saya pindahkan",
"biar saya ganti nama",
"biar saya migrasi",
"mari kita tinjau",
"mari kita validasi",
"mari kita verifikasi",
"mari kita tulis",
"mari kita edit",
"mari kita perbarui",
"mari kita perbaiki",
"mari kita bikin",
"mari kita hapus",
"mari kita ganti",
"mari kita tambah",
"mari kita ubah",
"mari kita load",
"mari kita muat",
"mari kita simpan",
"mari kita pasang",
"mari kita instal",
"mari kita unduh",
"mari kita unggah",
"mari kita sinkron",
"mari kita daftar",
"mari kita aktifkan",
"mari kita nonaktifkan",
"mari kita selidiki",
"mari kita jelajahi",
"mari kita cari",
"mari kita temukan",
"mari kita kumpulkan",
"mari kita ambil",
"mari kita kueri",
"mari kita pindai",
"mari kita lacak",
"mari kita ikuti",
"mari kita bangun",
"mari kita kompilasi",
"mari kita deploy",
"mari kita terapkan",
"mari kita konfigurasi",
"mari kita bersihkan",
"mari kita refaktor",
"mari kita atur ulang",
"mari kita rapikan",
"mari kita mulai ulang",
"mari kita uji",
"mari kita gabung",
"mari kita dokumentasikan",
"mari kita petakan",
"mari kita rencanakan",
"mari kita sambungkan",
"mari kita kembalikan",
"mari kita sesuaikan",
"mari kita pindahkan",
"mari kita ganti nama",
"mari kita migrasi",
"mari kita commit",
"mari kita push",
"saya perlu tinjau",
"saya perlu validasi",
"saya perlu verifikasi",
"saya perlu tulis",
"saya perlu edit",
"saya perlu perbarui",
"saya perlu perbaiki",
"saya perlu bikin",
"saya perlu hapus",
"saya perlu ganti",
"saya perlu tambah",
"saya perlu ubah",
"saya perlu load",
"saya perlu muat",
"saya perlu simpan",
"saya perlu pasang",
"saya perlu instal",
"saya perlu unduh",
"saya perlu unggah",
"saya perlu sinkron",
"saya perlu daftar",
"saya perlu aktifkan",
"saya perlu nonaktifkan",
"saya perlu selidiki",
"saya perlu jelajahi",
"saya perlu cari",
"saya perlu temukan",
"saya perlu kumpulkan",
"saya perlu ambil",
"saya perlu kueri",
"saya perlu pindai",
"saya perlu lacak",
"saya harus tinjau",
"saya harus validasi",
"saya harus verifikasi",
"saya harus lihat",
"saya harus baca",
"saya harus tulis",
"saya harus edit",
"saya harus perbarui",
"saya harus perbaiki",
"saya harus bikin",
"saya harus hapus",
"saya harus ganti",
"saya harus tambah",
"saya harus ubah",
"saya harus load",
"saya harus muat",
"saya harus simpan",
"saya harus pasang",
"saya harus instal",
"saya harus unduh",
"saya harus unggah",
"saya harus sinkron",
"saya harus daftar",
"saya harus aktifkan",
"saya harus nonaktifkan",
"saya harus selidiki",
"saya harus jelajahi",
"saya harus cari",
"saya harus temukan",
"saya harus kumpulkan",
"saya harus ambil",
"saya harus kueri",
"saya harus pindai",
"saya harus lacak",
"coba saya cek",
"coba saya periksa",
"coba saya tinjau",
"coba saya validasi",
"coba saya verifikasi",
"coba saya lihat",
"coba saya baca",
"coba saya tulis",
"coba saya edit",
"coba saya update",
"coba saya perbarui",
"coba saya fix",
"coba saya perbaiki",
"coba saya buat",
"coba saya bikin",
"coba saya hapus",
"coba saya ganti",
"coba saya tambah",
"coba saya ubah",
"coba saya jalankan",
"coba saya load",
"coba saya muat",
"coba saya simpan",
"coba saya pasang",
"coba saya instal",
"coba saya unduh",
"coba saya unggah",
"coba saya sinkron",
"coba saya daftar",
"coba saya aktifkan",
"coba saya nonaktifkan",
"coba saya selidiki",
"coba saya jelajahi",
"coba saya cari",
"coba saya temukan",
"coba saya kumpulkan",
"coba saya ambil",
"coba saya kueri",
"coba saya pindai",
"coba saya lacak",
"sekarang cek",
"sekarang periksa",
"sekarang tinjau",
"sekarang validasi",
"sekarang verifikasi",
"sekarang lihat",
"sekarang baca",
"sekarang tulis",
"sekarang edit",
"sekarang update",
"sekarang perbarui",
"sekarang fix",
"sekarang perbaiki",
"sekarang buat",
"sekarang bikin",
"sekarang hapus",
"sekarang ganti",
"sekarang tambah",
"sekarang ubah",
"sekarang jalankan",
"sekarang load",
"sekarang muat",
"sekarang simpan",
"sekarang pasang",
"sekarang instal",
"sekarang unduh",
"sekarang unggah",
"sekarang sinkron",
"sekarang daftar",
"sekarang aktifkan",
"sekarang nonaktifkan",
"sekarang selidiki",
"sekarang jelajahi",
"sekarang cari",
"sekarang temukan",
"sekarang kumpulkan",
"sekarang ambil",
"sekarang kueri",
"sekarang pindai",
"sekarang lacak",
]
action_verbs = [
# Local playback / launching an artifact (see en.toml).
"memutar",
"diputar",
"membuka file",
"menjalankan file",
"dimuat",
"dijalankan",
"diperbarui",
"diperbaiki",
"dibuat",
"dihapus",
"diganti",
"ditambah",
"diubah",
"dikirim",
"di-commit",
"di-push",
"di-deploy",
"di-merge",
"di-install",
"diunduh",
"diunggah",
"disimpan",
"diselesaikan",
# Issue-tracker and review actions (see en.toml for the case that
# exposed the gap).
"ditutup",
"dibuka",
"dikomentari",
"ditugaskan",
"dilabeli",
# Self-update and lifecycle. A fabricated "Evolved from X to Y" with zero
# tool calls told the user their binary had replaced itself when it had
# not, leaving them to report bugs against a version they were not running.
"di-upgrade",
"di-restart",
"dibangun ulang",
"diinstal ulang",
# Claimed INVESTIGATION, not side effects. A zero-tool turn opening
# "Verified just now, real output:" produced a fabricated file dump with
# invented line numbers. Fabricated evidence is worse than a fabricated
# action: a fake push dies to one git log, a fake dump gets built on.
# Deliberately excludes read/checked/found/ran — all legitimate in
# ordinary conversation about context the model already has.
"diverifikasi",
"diaudit",
"diperiksa",
]
completion_claims = [
"sudah diperbarui",
"sudah diperbaiki",
"sudah dibuat",
"sudah dihapus",
"sudah diganti",
"sudah ditambah",
"sudah diubah",
"sudah dikirim",
"sudah di-commit",
"sudah di-push",
"sudah di-deploy",
"sudah selesai",
"sudah selesai semua",
"semua sudah diperbarui",
"semua sudah diperbaiki",
"file sudah diperbarui",
"kode sudah diperbaiki",
"perubahan sudah diterapkan",
"saya sudah memperbarui",
"saya sudah memperbaiki",
"saya sudah membuat",
"saya sudah menghapus",
"saya sudah commit",
"saya sudah push",
"pekerjaan sudah selesai dan tercatat",
"sudah dikirim dan tercatat",
# Parity with en.toml (#2225): the same claim families English lists,
# phrased the way an Indonesian developer writes them.
"berikut yang berubah",
"ini yang saya ubah",
"ini perubahannya",
"ini yang saya lakukan",
"saya sudah memperbarui file",
"saya sudah memperbarui kode",
"file sudah diubah",
"kode sudah diubah",
"bug sudah diperbaiki",
"error sudah diperbaiki",
"file sudah dibuat",
"file sudah ditulis",
"semua file sudah diperbarui",
"perubahan sudah masuk",
"file sekarang berisi",
"file sudah tersimpan",
"perubahan tersimpan",
"commit sudah dibuat",
"versi sudah dinaikkan",
"pekerjaan sudah dikirim",
"sudah saya perbarui",
"sudah saya perbaiki",
"sudah saya buat",
"sudah saya tulis",
"sudah saya simpan",
"sudah saya ubah",
"sudah saya hapus",
"sudah saya jalankan",
"sudah saya uji",
"sudah saya commit",
"sudah saya push",
"sudah saya deploy",
"sudah saya pasang",
"sudah saya konfigurasi",
"sudah beres",
"sudah kelar",
"semua sudah beres",
"sudah selesai dikerjakan",
]
# Regex patterns — Indonesian uses Latin script, so patterns mirror en.toml
# structure but with Indonesian intent phrases.
line_start_re = "(?im)^[\\s\\-*•>]*(?:(?:ok|oke|baik|siap|okeh)\\s*,?\\s+)?(?:sekarang\\s+)?(?:biar\\s+(?:gue|aku|saya)|gue|aku|saya\\s+akan|saya\\s+perlu|saya\\s+harus|mari\\s+kita|coba\\s+(?:gue|aku|saya))\\s+\\w"
work_announcement_re = "(?i)^[\\s\\-*•>]*(?:(?:(?:dan\\s+)?lalu|(?:dan\\s+)?kemudian|setelah\\s+itu|terus|dan)[,]?\\s+)?(?:(?:ok|oke|baik|siap|okeh)[,.!:]?\\s+)?(?:sekarang\\s+|biar\\s+(?:gue|aku|saya)\\s+)?(?:sedang\\s+)?(?:menjalankan|mengecek|memeriksa|membaca|membuat|memperbarui|memperbaiki|menghapus|mengganti|menambah|mengubah|mengirim|meng-commit|meng-push|meng-deploy|meng-install|mengunduh|mengunggah|menyimpan|menyelesaikan|menganalisis|menginvestigasi|mengumpulkan|mengambil|mengunduh)\\b[^.!?:\\n]{0,60}?(?:\\s+(?:sekarang|saat\\s+ini)(?:[.!…,:]+|\\s*(?:\\n|$))|\\.{3}|…|:\\s*(?:\\n|$))"
# Gerund-led plan announcement carrying NO imminence marker — "Setting up the
# plan, then mapping every call site before touching anything." Two reasons
# the patterns above cannot see it (#1261): the verb is a PREPARATION verb
# (mapping, planning, drafting, listing) that work_announcement_re never
# enumerated, and the clause is sequenced with then / before instead of ending
# in now / … / :, which that pattern requires and gerund_re expects at the
# front. Scanned by the zero-tool gate only: once a tool has run, the same
# shape can be a legitimate recap ("Updating the config fixed it, then the
# build passed").
plan_announcement_re = "(?im)^[\\s\\-*•>]*(?:(?:ok|oke|baik)[,.!:]?\\s+)?(?:saya\\s+|sedang\\s+|pertama\\s+|sekarang\\s+)?(?:menyiapkan|menyusun|memetakan|merencanakan|mempersiapkan|meninjau|mendaftar|mendokumentasikan|membuat|memperbarui|memeriksa|membaca|menjalankan|menganalisis|menyelidiki)\\b[^.!?\\n]{0,120}?\\b(?:lalu|kemudian|sebelum|setelah\\s+itu)\\b"
gerund_re = "(?im)(?:^|[.!?]\\s+)\\s*(?:sekarang\\s+)?(?:sedang\\s+)?(?:menjalankan|mengecek|memeriksa|membaca|membuat|memperbarui|memperbaiki|menghapus|mengganti|menambah|mengubah|mengirim|meng-commit|meng-push|meng-deploy|meng-install|mengunduh|mengunggah|menyimpan|menyelesaikan|menganalisis|menginvestigasi|mengumpulkan|mengambil)\\b"
trailing_colon_re = "(?im)(?:^|\\n)\\s*(?:biar\\s+(?:gue|aku|saya)|saya\\s+akan|sekarang\\s+(?:biar\\s+(?:gue|aku|saya)\\s+)?|mari\\s+kita)\\s+\\w[^:\\n]{0,80}:\\s*$"
now_imperative_re = "(?m)^[\\s\\-*]*(?:sekarang\\s+(?:biar\\s+(?:gue|aku|saya)\\s+)?|biar\\s+(?:gue|aku|saya)\\s+)\\w"
numbered_steps_re = "(?m)^\\s*\\d+\\.\\s+(?:perbarui|perbaiki|buat|hapus|ganti|tambah|ubah|cek|periksa|baca|jalankan|push|commit|deploy|install)"
past_tense_standalone_re = "(?m)^[\\s\\-*]*(?:sudah\\s+)?(?:diperbarui|diperbaiki|dibuat|dihapus|diganti|ditambah|diubah|dikirim|di-commit|di-push|di-deploy|di-merge|di-install|diunduh|diunggah|disimpan|diselesaikan)[.!]"
path_re = "(?:^|[\\s`(])(?:\\./)?[a-zA-Z_][\\w\\-]*/[\\w\\-/]*\\.\\w{1,6}(?:[\\s`),:;]|$)"
ext_re = "(?:^|[\\s`(])[\\w\\-]+\\.(?:rs|py|ts|tsx|js|jsx|go|sh|toml|yaml|yml|json|md)(?:[\\s`),:;]|$)"
backtick_code_re = "`[a-zA-Z_]\\w+`"
# Halusinasi pembuatan gambar (#747)
media_delivery_phrases = [
"ini dia",
"sudah jadi",
"sudah saya buat",
"saya generate",
"berhasil generate",
"sudah di-generate",
"sudah digenerate",
"hasilnya ini",
"sudah dibuat",
"sudah diedit",
"gambar sudah",
"sudah dikirim",
]
media_context_words = [
"gambar",
"foto",
"citra",
"render",
"latar",
"latar belakang",
"kecerahan",
"eksposur",
"kontras",
"logo",
]
# Framings that present a named command as ALREADY RUN. The command is
# language-neutral; the claim around it is not. See #789.
executed_framings = [
"menjalankan",
"sudah dijalankan",
"saya jalankan",
"diperiksa dengan",
"outputnya",
"hasilnya",
"dikonfirmasi dengan",
]
# Claims that a FILE or DOCUMENT was sent (#825). Paired with
# `file_context_words`: a claim of a delivered file in a turn that never
# invoked a document-sending tool is fabricating. Document sending is a
# newer capability than image generation, so the media checks (#747) did
# not cover it.
file_delivery_phrases = [
"file terkirim",
"sudah kirim file",
"saya kirim file",
"file dilampirkan",
"saya lampirkan",
"sudah dilampirkan",
"mengunggah file",
"dokumen terkirim",
"saya kirim dokumen",
"laporan terkirim",
"laporan sudah dikirim",
"filenya di atas",
"lihat lampiran",
"baru keluar dari oven",
"ini videonya",
"ini audionya",
"ada di atas",
"sudah di atas",
"putar saja",
"baru saja saya kirim",
"sudah saya kirim",
]
# Words marking the claimed deliverable as a file rather than a message.
file_context_words = [
"file",
"dokumen",
"laporan",
".md",
"lampiran",
"pdf",
"csv",
".mp4",
".mp3",
".wav",
".png",
".jpg",
"video",
"audio",
"gambar",
"mp4",
"mp3",
"wav",
"mov",
"png",
"jpg",
]
# Generic first-person intent: the verb is captured, not enumerated, so a
# verb missing from intent_phrases (e.g. "let me execute") is still caught.
generic_intent_re = "(?i)\\b(?:saya\\s+akan|aku\\s+akan|mari\\s+kita|biar\\s+saya)\\s+([a-z]{2,})"
# Verbs that follow that construction without promising any work.
intent_verb_exclusions = [
"tahu",
"jelaskan",
"menjelaskan",
"katakan",
"pikir",
"tunjukkan",
"bagikan",
"sebutkan",
]
# Context that turns a BARE tool name into a claim of tool usage (#1262).
# Multi-word names (`load_brain_file`) are unmistakable on their own, but
# `plan`, `bash`, `grep` and `ls` are ordinary words, so naming one proves
# nothing by itself. It proves something when the name is the OBJECT of an
# action the model attributes to itself: "Setting up the plan" in a turn that
# called no tool is a tool use that never happened. A marker must sit
# immediately before the name, optionally across one determiner, so an
# instruction addressed to the user ("run it in bash") stays untouched.
tool_use_markers = [
"menggunakan",
"gunakan",
"pakai",
"memakai",
"menjalankan",
"jalankan",
"memanggil",
"panggil",
"membuat",
"buat",
"menyiapkan",
"siapkan",
"menyusun",
"memperbarui",
"perbarui",
"membaca",
"baca",
"menulis",
"tulis",
"memeriksa",
"periksa",
"membuka",
"buka",
"memulai",
"mulai",
"lewat",
"via",
]
# Nouns that mark the preceding word as a tool by name ("the plan tool").
tool_nouns = [
"alat",
"tool",
"perkakas",
]
# Determiners allowed between a marker and the tool name, so "setting up THE
# plan" reads the same as "setting up plan". At most one, and only these:
# anything else between the two words means the name is not the marker's
# object. Empty for languages without articles.
tool_name_determiners = [
]
# participle_object_re DELIBERATELY ABSENT (#1694).
# Indonesian has zero copula in the present tense, so "Membacanya mudah" is a
# STATEMENT with no copula word and no closed-class head to reject — the tail
# rule that separates announcement from statement in en/pt/es has nothing to
# bite on. The construction itself is easy (membaca + -nya); the split is not.
# Every LangConfig field is #[serde(default)] and every consumer guards
# is_empty(), so an absent arm is inert rather than broken.