Deep analysis of the full `lore` CLI command surface (34 commands across 6 categories) covering command inventory, data flow, overlap analysis, and optimization proposals. Document structure: - Main consolidated doc: docs/command-surface-analysis.md (1251 lines) - Split sections in docs/command-surface-analysis/ for navigation: 00-overview.md - Summary, inventory, priorities 01-entity-commands.md - issues, mrs, notes, search, count 02-intelligence-commands.md - who, timeline, me, file-history, trace, related, drift 03-pipeline-and-infra.md - sync, ingest, generate-docs, embed, diagnostics 04-data-flow.md - Shared data source map, command network graph 05-overlap-analysis.md - Quantified overlap percentages for every command pair 06-agent-workflows.md - Common agent flows, round-trip costs, token profiles 07-consolidation-proposals.md - 5 proposals to reduce 34 commands to 29 08-robot-optimization-proposals.md - 6 proposals for --include, --batch, --depth 09-appendices.md - Robot output envelope, field presets, exit codes Key findings: - High overlap pairs: who-workload/me (~85%), health/doctor (~90%) - 5 consolidation proposals to reduce command count by 15% - 6 robot-mode optimization proposals targeting agent round-trip reduction - Full DB table mapping and data flow documentation Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
453 lines
12 KiB
Markdown
453 lines
12 KiB
Markdown
# Intelligence Commands
|
|
|
|
Reference for: `who`, `timeline`, `me`, `file-history`, `trace`, `related`, `drift`
|
|
|
|
---
|
|
|
|
## `who` (People Intelligence)
|
|
|
|
Five sub-modes, dispatched by argument shape.
|
|
|
|
| Mode | Trigger | Purpose |
|
|
|---|---|---|
|
|
| **expert** | `who <path>` or `who --path <path>` | Who knows about a code area? |
|
|
| **workload** | `who @username` | What is this person working on? |
|
|
| **reviews** | `who @username --reviews` | Review pattern analysis |
|
|
| **active** | `who --active` | Unresolved discussions needing attention |
|
|
| **overlap** | `who --overlap <path>` | Who else touches these files? |
|
|
|
|
### Shared Flags
|
|
|
|
| Flag | Type | Default | Purpose |
|
|
|---|---|---|---|
|
|
| `-p, --project` | string | — | Scope to project |
|
|
| `-n, --limit` | int | varies | Max results (1-500) |
|
|
| `--fields` | string | — | Preset: `minimal` |
|
|
| `--since` | duration/date | — | Time window |
|
|
| `--include-bots` | flag | — | Include bot users |
|
|
| `--include-closed` | flag | — | Include closed issues/MRs |
|
|
| `--all-history` | flag | — | Query all history |
|
|
|
|
### Expert-Only Flags
|
|
|
|
| Flag | Type | Default | Purpose |
|
|
|---|---|---|---|
|
|
| `--detail` | flag | — | Per-MR breakdown |
|
|
| `--as-of` | date/duration | — | Score at point in time |
|
|
| `--explain-score` | flag | — | Score breakdown |
|
|
|
|
### DB Tables by Mode
|
|
|
|
| Mode | Primary Tables |
|
|
|---|---|
|
|
| expert | `notes` (INDEXED BY idx_notes_diffnote_path_created), `merge_requests`, `mr_reviewers` |
|
|
| workload | `issues`, `merge_requests`, `mr_reviewers` |
|
|
| reviews | `merge_requests`, `discussions`, `notes` |
|
|
| active | `discussions`, `notes`, `issues`, `merge_requests` |
|
|
| overlap | `notes`, `mr_file_changes`, `merge_requests` |
|
|
|
|
### Robot Output (expert)
|
|
|
|
```json
|
|
{
|
|
"ok": true,
|
|
"data": {
|
|
"mode": "expert",
|
|
"input": { "target": "src/auth/", "path": "src/auth/" },
|
|
"resolved_input": { "mode": "expert", "project_id": 1, "project_path": "group/repo" },
|
|
"result": {
|
|
"experts": [
|
|
{
|
|
"username": "jdoe", "score": 42.5,
|
|
"detail": { "mr_ids_author": [99, 101], "mr_ids_reviewer": [88] }
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### Robot Output (workload)
|
|
|
|
```json
|
|
{
|
|
"data": {
|
|
"mode": "workload",
|
|
"result": {
|
|
"assigned_issues": [{ "iid": 42, "title": "Fix auth", "state": "opened" }],
|
|
"authored_mrs": [{ "iid": 99, "title": "Refactor auth", "state": "merged" }],
|
|
"review_mrs": [{ "iid": 88, "title": "Add SSO", "state": "opened" }]
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### Robot Output (reviews)
|
|
|
|
```json
|
|
{
|
|
"data": {
|
|
"mode": "reviews",
|
|
"result": {
|
|
"categories": [
|
|
{
|
|
"category": "approval_rate",
|
|
"reviewers": [{ "name": "jdoe", "count": 15, "percentage": 85.0 }]
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### Robot Output (active)
|
|
|
|
```json
|
|
{
|
|
"data": {
|
|
"mode": "active",
|
|
"result": {
|
|
"discussions": [
|
|
{ "entity_type": "mr", "iid": 99, "title": "Refactor auth", "participants": ["jdoe", "reviewer"] }
|
|
]
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### Robot Output (overlap)
|
|
|
|
```json
|
|
{
|
|
"data": {
|
|
"mode": "overlap",
|
|
"result": {
|
|
"users": [{ "username": "jdoe", "touch_count": 15 }]
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### Minimal Presets
|
|
|
|
| Mode | Fields |
|
|
|---|---|
|
|
| expert | `username`, `score` |
|
|
| workload | `iid`, `title`, `state` |
|
|
| reviews | `name`, `count`, `percentage` |
|
|
| active | `entity_type`, `iid`, `title`, `participants` |
|
|
| overlap | `username`, `touch_count` |
|
|
|
|
---
|
|
|
|
## `timeline`
|
|
|
|
Reconstruct chronological event history for a topic/entity with cross-reference expansion.
|
|
|
|
| Flag | Type | Default | Purpose |
|
|
|---|---|---|---|
|
|
| `<QUERY>` | positional | required | Search text or entity ref (`issue:42`, `mr:99`) |
|
|
| `-p, --project` | string | — | Scope to project |
|
|
| `--since` | duration/date | — | Filter events after |
|
|
| `--depth` | int | 1 | Cross-ref expansion depth (0=none) |
|
|
| `--no-mentions` | flag | — | Skip "mentioned" edges, keep "closes"/"related" |
|
|
| `-n, --limit` | int | 100 | Max events |
|
|
| `--fields` | string | — | Preset: `minimal` |
|
|
| `--max-seeds` | int | 10 | Max seed entities from search |
|
|
| `--max-entities` | int | 50 | Max expanded entities |
|
|
| `--max-evidence` | int | 10 | Max evidence notes |
|
|
|
|
**Pipeline:** SEED -> HYDRATE -> EXPAND -> COLLECT -> RENDER
|
|
|
|
**DB tables:** `issues`, `merge_requests`, `discussions`, `notes`, `entity_references`, `resource_state_events`, `resource_label_events`, `resource_milestone_events`, `documents` (for search seeding)
|
|
|
|
### Robot Output
|
|
|
|
```json
|
|
{
|
|
"ok": true,
|
|
"data": {
|
|
"query": "authentication", "event_count": 25,
|
|
"seed_entities": [{ "type": "issue", "iid": 42, "project": "group/repo" }],
|
|
"expanded_entities": [
|
|
{
|
|
"type": "mr", "iid": 99, "project": "group/repo", "depth": 1,
|
|
"via": {
|
|
"from": { "type": "issue", "iid": 42 },
|
|
"reference_type": "closes"
|
|
}
|
|
}
|
|
],
|
|
"unresolved_references": [
|
|
{
|
|
"source": { "type": "issue", "iid": 42, "project": "group/repo" },
|
|
"target_type": "mr", "target_iid": 200, "reference_type": "mentioned"
|
|
}
|
|
],
|
|
"events": [
|
|
{
|
|
"timestamp": "2026-01-15T10:30:00Z",
|
|
"entity_type": "issue", "entity_iid": 42, "project": "group/repo",
|
|
"event_type": "state_changed", "summary": "Reopened",
|
|
"actor": "jdoe", "is_seed": true,
|
|
"evidence_notes": [{ "author": "jdoe", "snippet": "..." }]
|
|
}
|
|
]
|
|
},
|
|
"meta": {
|
|
"elapsed_ms": 150, "search_mode": "fts",
|
|
"expansion_depth": 1, "include_mentions": true,
|
|
"total_entities": 5, "total_events": 25,
|
|
"evidence_notes_included": 8, "discussion_threads_included": 3,
|
|
"unresolved_references": 1, "showing": 25
|
|
}
|
|
}
|
|
```
|
|
|
|
**Minimal preset:** `timestamp`, `type`, `entity_iid`, `detail`
|
|
|
|
---
|
|
|
|
## `me` (Personal Dashboard)
|
|
|
|
Personal work dashboard with issues, MRs, activity, and since-last-check inbox.
|
|
|
|
| Flag | Type | Default | Purpose |
|
|
|---|---|---|---|
|
|
| `--issues` | flag | — | Open issues section only |
|
|
| `--mrs` | flag | — | MRs section only |
|
|
| `--activity` | flag | — | Activity feed only |
|
|
| `--since` | duration/date | `30d` | Activity window |
|
|
| `-p, --project` | string | — | Scope to one project |
|
|
| `--all` | flag | — | All synced projects |
|
|
| `--user` | string | — | Override configured username |
|
|
| `--fields` | string | — | Preset: `minimal` |
|
|
| `--reset-cursor` | flag | — | Clear since-last-check cursor |
|
|
|
|
**Sections (no flags = all):** Issues, MRs authored, MRs reviewing, Activity, Inbox
|
|
|
|
**DB tables:** `issues`, `merge_requests`, `resource_state_events`, `projects`, `issue_labels`, `mr_labels`
|
|
|
|
### Robot Output
|
|
|
|
```json
|
|
{
|
|
"ok": true,
|
|
"data": {
|
|
"username": "jdoe",
|
|
"summary": {
|
|
"project_count": 3, "open_issue_count": 5,
|
|
"authored_mr_count": 2, "reviewing_mr_count": 1,
|
|
"needs_attention_count": 3
|
|
},
|
|
"since_last_check": {
|
|
"cursor_iso": "2026-02-25T18:00:00Z",
|
|
"total_event_count": 8,
|
|
"groups": [
|
|
{
|
|
"entity_type": "issue", "entity_iid": 42,
|
|
"entity_title": "Fix auth", "project": "group/repo",
|
|
"events": [
|
|
{ "timestamp_iso": "...", "event_type": "comment",
|
|
"actor": "reviewer", "summary": "New comment" }
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"open_issues": [
|
|
{
|
|
"project": "group/repo", "iid": 42, "title": "Fix auth",
|
|
"state": "opened", "attention_state": "needs_attention",
|
|
"status_name": "In progress", "labels": ["auth"],
|
|
"updated_at_iso": "..."
|
|
}
|
|
],
|
|
"open_mrs_authored": [
|
|
{
|
|
"project": "group/repo", "iid": 99, "title": "Refactor auth",
|
|
"state": "opened", "attention_state": "needs_attention",
|
|
"draft": false, "labels": ["backend"], "updated_at_iso": "..."
|
|
}
|
|
],
|
|
"reviewing_mrs": [],
|
|
"activity": [
|
|
{
|
|
"timestamp_iso": "...", "event_type": "state_changed",
|
|
"entity_type": "issue", "entity_iid": 42, "project": "group/repo",
|
|
"actor": "jdoe", "is_own": true, "summary": "Closed"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
```
|
|
|
|
**Minimal presets:** Items: `iid, title, attention_state, updated_at_iso` | Activity: `timestamp_iso, event_type, entity_iid, actor`
|
|
|
|
---
|
|
|
|
## `file-history`
|
|
|
|
Show which MRs touched a file, with linked discussions.
|
|
|
|
| Flag | Type | Default | Purpose |
|
|
|---|---|---|---|
|
|
| `<PATH>` | positional | required | File path to trace |
|
|
| `-p, --project` | string | — | Scope to project |
|
|
| `--discussions` | flag | — | Include DiffNote snippets |
|
|
| `--no-follow-renames` | flag | — | Skip rename chain resolution |
|
|
| `--merged` | flag | — | Only merged MRs |
|
|
| `-n, --limit` | int | 50 | Max MRs |
|
|
|
|
**DB tables:** `mr_file_changes`, `merge_requests`, `notes` (DiffNotes), `projects`
|
|
|
|
### Robot Output
|
|
|
|
```json
|
|
{
|
|
"ok": true,
|
|
"data": {
|
|
"path": "src/auth/middleware.rs",
|
|
"rename_chain": [
|
|
{ "previous_path": "src/auth.rs", "mr_iid": 55, "merged_at": "..." }
|
|
],
|
|
"merge_requests": [
|
|
{
|
|
"iid": 99, "title": "Refactor auth", "state": "merged",
|
|
"author": "jdoe", "merged_at": "...", "change_type": "modified"
|
|
}
|
|
],
|
|
"discussions": [
|
|
{
|
|
"discussion_id": 123, "mr_iid": 99, "author": "reviewer",
|
|
"body_snippet": "...", "path": "src/auth/middleware.rs"
|
|
}
|
|
]
|
|
},
|
|
"meta": { "elapsed_ms": 30, "total_mrs": 5, "renames_followed": true }
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## `trace`
|
|
|
|
File -> MR -> issue -> discussion chain to understand why code was introduced.
|
|
|
|
| Flag | Type | Default | Purpose |
|
|
|---|---|---|---|
|
|
| `<PATH>` | positional | required | File path (future: `:line` suffix) |
|
|
| `-p, --project` | string | — | Scope to project |
|
|
| `--discussions` | flag | — | Include DiffNote snippets |
|
|
| `--no-follow-renames` | flag | — | Skip rename chain |
|
|
| `-n, --limit` | int | 20 | Max chains |
|
|
|
|
**DB tables:** `mr_file_changes`, `merge_requests`, `issues`, `discussions`, `notes`, `entity_references`
|
|
|
|
### Robot Output
|
|
|
|
```json
|
|
{
|
|
"ok": true,
|
|
"data": {
|
|
"path": "src/auth/middleware.rs",
|
|
"resolved_paths": ["src/auth/middleware.rs", "src/auth.rs"],
|
|
"trace_chains": [
|
|
{
|
|
"mr_iid": 99, "mr_title": "Refactor auth", "mr_state": "merged",
|
|
"mr_author": "jdoe", "change_type": "modified",
|
|
"merged_at_iso": "...", "web_url": "...",
|
|
"issues": [42],
|
|
"discussions": [
|
|
{
|
|
"discussion_id": 123, "author_username": "reviewer",
|
|
"body_snippet": "...", "path": "src/auth/middleware.rs"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"meta": { "tier": "api_only", "total_chains": 3, "renames_followed": 1 }
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## `related`
|
|
|
|
Find semantically related entities via vector search.
|
|
|
|
| Flag | Type | Default | Purpose |
|
|
|---|---|---|---|
|
|
| `<QUERY_OR_TYPE>` | positional | required | Entity type (`issues`, `mrs`) or free text |
|
|
| `[IID]` | positional | — | Entity IID (required with entity type) |
|
|
| `-n, --limit` | int | 10 | Max results |
|
|
| `-p, --project` | string | — | Scope to project |
|
|
|
|
**Two modes:**
|
|
- **Entity mode:** `related issues 42` — find entities similar to issue #42
|
|
- **Query mode:** `related "auth flow"` — find entities matching free text
|
|
|
|
**DB tables:** `documents`, `embeddings` (vec0), `projects`
|
|
|
|
**Requires:** Ollama running (for query mode embedding)
|
|
|
|
### Robot Output (entity mode)
|
|
|
|
```json
|
|
{
|
|
"ok": true,
|
|
"data": {
|
|
"query_entity_type": "issue",
|
|
"query_entity_iid": 42,
|
|
"query_entity_title": "Fix SSO authentication",
|
|
"similar_entities": [
|
|
{
|
|
"entity_type": "mr", "entity_iid": 99,
|
|
"entity_title": "Refactor auth module",
|
|
"project_path": "group/repo", "state": "merged",
|
|
"similarity_score": 0.87,
|
|
"shared_labels": ["auth"], "shared_authors": ["jdoe"]
|
|
}
|
|
]
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## `drift`
|
|
|
|
Detect discussion divergence from original intent.
|
|
|
|
| Flag | Type | Default | Purpose |
|
|
|---|---|---|---|
|
|
| `<ENTITY_TYPE>` | positional | required | Currently only `issues` |
|
|
| `<IID>` | positional | required | Entity IID |
|
|
| `--threshold` | f32 | 0.4 | Similarity threshold (0.0-1.0) |
|
|
| `-p, --project` | string | — | Scope to project |
|
|
|
|
**DB tables:** `issues`, `discussions`, `notes`, `embeddings`
|
|
|
|
**Requires:** Ollama running
|
|
|
|
### Robot Output
|
|
|
|
```json
|
|
{
|
|
"ok": true,
|
|
"data": {
|
|
"entity_type": "issue", "entity_iid": 42,
|
|
"total_notes": 15,
|
|
"detected_drift": true,
|
|
"drift_point": {
|
|
"note_index": 8, "similarity": 0.32,
|
|
"author": "someone", "created_at": "..."
|
|
},
|
|
"similarity_curve": [
|
|
{ "note_index": 0, "similarity": 0.95, "author": "jdoe", "created_at": "..." },
|
|
{ "note_index": 1, "similarity": 0.88, "author": "reviewer", "created_at": "..." }
|
|
]
|
|
}
|
|
}
|
|
```
|