-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconfig.example.yaml
More file actions
180 lines (170 loc) · 7.19 KB
/
config.example.yaml
File metadata and controls
180 lines (170 loc) · 7.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
# repo-recall config — full template with every key, every default.
#
# This file ships in the repo as a reference. The runtime loader lands
# in #145; until then, repo-recall reads its knobs from REPO_RECALL_*
# environment variables only. The keys below are the planned schema.
#
# Override precedence (once loader lands):
# 1. REPO_RECALL_* env vars (final override, per host)
# 2. ./repo-recall.yaml in the process cwd (per workspace)
# 3. ~/.config/repo-recall/config.yaml (XDG, per user)
# 4. these defaults, baked into the binary
#
# Values shown here are Kai's defaults. Swap paths to your own setup.
server:
port: 7777 # REPO_RECALL_PORT
host: 127.0.0.1 # REPO_RECALL_HOST. Loopback only on shared boxes.
static_dir: null # REPO_RECALL_STATIC. null => use embedded assets.
mcp_origins: [] # REPO_RECALL_MCP_ORIGINS. Extra CORS origins for /mcp.
paths:
cwd: /Users/kai/projects/coilysiren # REPO_RECALL_CWD. null => process cwd.
cache_dir: null # REPO_RECALL_CACHE_DIR. null => $TMPDIR/repo-recall-<port>.
index_dir: null # REPO_RECALL_INDEX_DIR. null => same dir as cache.
sessions_dir: null # REPO_RECALL_SESSIONS_DIR. Comma-delimited list of dirs; missing ones are dropped with a WARN. null => ~/.claude/projects.
dispatch_root: null # REPO_RECALL_DISPATCH_ROOT. null => ~/.repo-recall/dispatch.
structural_asks_root: null # REPO_RECALL_STRUCTURAL_ASKS_ROOT.
agents_drift_root: null # REPO_RECALL_AGENTS_DRIFT_ROOT.
discovery:
scan_depth: 4 # REPO_RECALL_DEPTH. How many levels below cwd to walk.
commits_per_repo: 500 # REPO_RECALL_COMMITS_PER_REPO. `git log --all` cap.
refresh:
interval_secs: 150 # REPO_RECALL_REFRESH_INTERVAL_SECS. 0 disables periodic refresh.
# Per-source cadence overrides, keyed by ingest source name. Each entry
# is a nested block carrying an optional interval_secs; a null or absent
# interval_secs falls back to refresh.interval_secs above. An entire
# absent per_source block keeps every source on the global cadence.
# The fan-out scheduler ticks at the smallest resolved interval and runs
# each source when its own watermark says its interval has elapsed, so
# e.g. `github_remote: 30` polls CI every 30s while `git_log: 300` rescans
# commits every 5 minutes. A resolved interval of 0 disables that source.
per_source:
git_log:
interval_secs: null
github_remote:
interval_secs: null
sessions:
interval_secs: null
docs:
interval_secs: null
cli_guard:
interval_secs: null
# Labeled-issue GraphQL ingest (Source 6 of #155). The sole sanctioned
# GraphQL call site — runs hourly to stay well inside GitHub's GraphQL
# secondary budget while still picking up dispatch-label churn quickly.
github_remote_labeled:
interval_secs: 3600
ingest:
github:
remote_target_limit: 25 # REPO_RECALL_REMOTE_TARGET_LIMIT. PRs/issues/CI fan-out cap.
per_page: 100 # gh API page size (max 100).
concurrency: 8 # in-flight gh subprocesses.
git:
worktree_snapshot_cap: 50 # per-repo uncommitted-file sample size.
churn_window_days: 30 # 30d cutoff for activity score + hotspots.
sessions:
summary_truncate_chars: 200 # privacy: how much session summary to retain.
docs:
file_stale_after_days: 180 # README/AGENTS/etc. "untouched" threshold.
cli_guard:
audit_dir: null # REPO_RECALL_AUDIT_DIR. null => ~/.coily/audit.
window_days: 30 # how far back to retain audit rows.
signals:
stale_ask_days: 7 # REPO_RECALL_STALE_ASK_DAYS. open structural-ask older than this.
blocked_window_days: 7 # autonomous-block recency window.
deploy_stale_days: 7 # deploy considered stale after this many days.
dashboard:
cards_per_row:
mobile: 1 # <768px
desktop: 2 # 768-1440px
ultrawide: 3 # >=1920px
sort:
primary: most_recent_commit_ts_desc
tiebreaker: name_asc
action_required_floats_to_top: true
# Repo-card row schema. Lands with the UI refloat at #144.
# "show-if" suppression logic is encoded in code, not here. This file
# controls enable/disable, row caps, and time windows only.
card:
short:
rows:
# Repo name + path + click-through to detail page.
- id: heading
enabled: true
# Action-required alerts: failing CI, dirty tree, in-progress git op, detached HEAD.
- id: banner
enabled: true
cap_rows: 5
# Informational status pills: ahead/behind, stash count, deploy state, open PRs/issues.
- id: health
enabled: true
# Recent commits with author + timestamp, capped at the window below.
- id: activity
enabled: true
cap_rows: 5
cap_window_days: 30
# Open PRs and issues assigned to you / awaiting your review.
- id: work
enabled: true
cap_rows: 5
# Open `structural-ask` / `autonomous-block` issues. Oldest first so the stalest float up.
- id: asks
enabled: true
cap_rows: 3
sort: oldest_first
# Recent Claude Code sessions that touched this repo (from JSONL transcripts).
- id: sessions
enabled: true
cap_rows: 5
cap_window_days: 90
# AFK dispatch queue: open `repo-dispatch` tracking issues fanned out to autonomous agents.
- id: dispatch
enabled: true
cap_rows: 3
# Hottest files in the recent window (top N by edits).
- id: churn
enabled: true
cap_rows: 5
cap_window_days: 30
# Hottest directories (file-churn rolled up by leading path components).
# `depth` = how many path components define a directory bucket; e.g.
# depth=2 buckets `src/ingest/git/log.rs` under `src/ingest`. Files
# shallower than `depth` keep their actual depth.
- id: hot_dirs
enabled: true
cap_rows: 5
cap_window_days: 30
depth: 2
# "View all" link to the verbose card if any row was capped.
- id: overflow_link
enabled: true
verbose:
show_absent_with_reason: true # "no sessions in last 90d" instead of suppressing
rows:
# Same row semantics as `short.rows` above; only caps and windows differ.
- id: activity
cap_rows: 100
cap_window_days: 90
- id: work
cap_rows: 50
- id: asks
cap_rows: 50
- id: sessions
cap_rows: 100
cap_window_days: 90
- id: dispatch
cap_rows: 50
- id: churn
cap_rows: 50
cap_window_days: 90
- id: hot_dirs
cap_rows: 50
cap_window_days: 90
depth: 2
mcp:
default_commit_limit: 50 # recall_repo_detail default.
default_search_limit: 20 # recall_search default.
token_cost:
cache_read_per_m: 0.30 # used for session-cost estimates ($/1M tokens).
privacy:
author_email: null # REPO_RECALL_AUTHOR. null => `git config user.email`.
sanitize_terms_file: null # REPO_RECALL_SANITIZE_TERMS. Path to extra redaction terms.