Skip to content

feat(search): auto-detect Cypher-shaped queries and warn on argument-order mistakes #239

Description

@Wolfvin

Mengapa

Ditemukan saat brainstorming "dream tool" — dua masalah UX terkait, sama-sama soal "tool harus koreksi diam-diam ke arah salah, bukan agent yang harus tahu semua mode manual":

  1. search punya 4 mode (semantic/symbol/regex/graph) yang harus dipilih manual via --mode. Kalau user/agent menulis Cypher query (MATCH (n) WHERE ...) tapi lupa --mode graph, hasilnya semantic search ngasal terhadap string Cypher itu — bukan error, cuma hasil aneh yang membingungkan.
  2. search adalah SATU-SATUNYA umbrella command dengan urutan pattern dulu baru workspace (kebalikan semua command lain) — sudah diperbaiki dokumentasinya sesi lalu, tapi runtime-nya masih bisa salah arah SENYAP: kalau argumen ke-1 kebetulan berupa path direktori valid, itu langsung dianggap pattern literal "." atau semacamnya dan return kosong "ok" tanpa peringatan apapun.

Konteks

Ini BUKAN duplikat dari fix search docstring sesi lalu (yang cuma perbaiki teks --help) — ini soal runtime behavior: tool harus mendeteksi kemungkinan salah pakai dan memberi sinyal, bukan cuma dokumentasi yang benar.

Tujuan

  • Kalau pattern argumen terlihat seperti Cypher (mengandung keyword MATCH/RETURN di posisi awal) tapi --mode bukan graph → auto-route ke --mode graph ATAU minimal beri warning jelas di stderr + field _hint di JSON response.
  • Kalau argumen pertama (pattern) adalah path direktori yang valid di filesystem DAN argumen kedua (workspace) BUKAN path valid → beri warning "argumen tampak terbalik" di stderr + field _hint, jangan diam-diam return hasil kosong.

Constraint

  • JANGAN blok eksekusi — ini heuristik bantu, bukan validasi keras. Kalau heuristik salah deteksi, command tetap jalan seperti biasa, cuma ada hint tambahan.
  • Auto-route Cypher HANYA kalau confidence tinggi (pattern literally starts with MATCH keyword) — jangan over-eager nebak mode untuk regex pattern yang kebetulan mirip.

Definition of Done

  • search "MATCH (n) RETURN n" . tanpa --mode graph → tetap dapat hasil graph query yang benar (auto-routed) ATAU hint jelas kalau tidak mau auto-route
  • search . "some pattern" (argumen terbalik, "." adalah direktori valid) → response punya _hint field yang jelas menjelaskan kemungkinan argumen terbalik
  • Regression test untuk kedua skenario

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions