Add investigation type and duplicate detection (CF-166 Phase 1)

Enhancements:

1. Investigation Task Type
   - Added 'investigation' to task type enum
   - Migration 013: Updated PostgreSQL constraint
   - Updated TypeScript schemas (task_add, task_list, task_update)
   - Enables tracking research/debugging workflows

2. Duplicate Detection
   - Enhanced task_add to check for similar tasks before creating
   - Uses pgvector semantic search (>70% similarity threshold)
   - Warns about potential duplicates with similarity scores
   - Suggests linking command for related tasks
   - Gracefully handles when embeddings unavailable

Example Output:
```
Created: CF-123
  Title: Fix API rate limiting
  Type: task
  Priority: P2
  Project: CF

⚠️  Similar tasks found:
  - CF-120: Add rate limit monitoring (85% match, in_progress)
  - CF-115: Implement API throttling (72% match, open)

Consider linking with: task link <from> <to> relates_to
```

Benefits:
- Prevents accidental duplicate tasks
- Surfaces related work automatically
- Reduces manual task linking
- Investigation type for research workflows

Files Changed:
- migrations/013_investigation_type.sql (new)
- src/tools/crud.ts (duplicate detection logic)
- src/tools/index.ts (investigation type in enums)

Remaining CF-166 Features (Phase 2):
- Session-aware task context
- Automatic linking within session
- Investigation workflow helper
- Task creation reminders

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
Christian Gick
2026-01-17 08:38:18 +02:00
parent 04395e8403
commit f7f9cfe3d8
3 changed files with 43 additions and 6 deletions

View File

@@ -0,0 +1,13 @@
-- Migration 013: Add investigation task type
-- Adds 'investigation' to task type enum for tracking research/debugging sessions
-- Drop existing constraint
ALTER TABLE tasks DROP CONSTRAINT IF EXISTS tasks_type_check;
-- Add new constraint with investigation type
ALTER TABLE tasks ADD CONSTRAINT tasks_type_check
CHECK (type IN ('task', 'bug', 'feature', 'debt', 'investigation'));
-- Record migration
INSERT INTO schema_migrations (version) VALUES ('013_investigation_type')
ON CONFLICT (version) DO NOTHING;