### Background We need a node that decides whether to run semantic search, keyword search, or both. ### Tasks - [ ] Create `PlannerNode` (in `github-conversations-research-agent`): * Input: `shared[:current_query]` (string). * Output: `shared[:next_search] = {tool:, query:, qualifiers: {repo?, author?}}`. - [ ] Simple rule set: * If regex `/\b(repo|author|label|is|created|updated):/i` matches → `tool: :keyword` * Else → `tool: :semantic` - [ ] Wire flow: `AskClarifyingNode → PlannerNode → RetrieverNode` (rename old DeepResearch exec portion). - [ ] Leave RetrieverNode temporarily hard-coded to semantic to keep compile green; log a TODO for next iteration. - [ ] **Inline docs:** explain the heuristic and future extension. - [ ] **README:** none yet (tool choice internal). ### Acceptance Criteria * In dry-run (`--verbose`) mode the planner logs `tool: keyword` when user query contains `repo:`; otherwise `semantic`.