from collections import defaultdict
def sub(p):
parts=p.split("/")
if parts[0]=="harness" and len(parts)>2 and parts[1]=="extensions": return "harness/extensions/"+parts[2]
return "/".join(parts[:-1]) or "."
tot=defaultdict(lambda:[0,0])
for n,p in rows: t=tot[sub(p)]; t[0]+=n; t[1]+=1
for k,v in sorted(tot.items(),key=lambda x:-x[1][0])[:12]: print(v,k)
import re
for f in ["daemon/session.gleam","daemon/conversation.gleam"]:
src=(root/f).read_text()
fns=re.findall(r'^(pub )?fn (\w+)',src,re.M)
types=re.findall(r'^(pub )?(?:opaque )?type (\w+)',src,re.M)
print(f,len(fns),"fns",sum(1 for a,_ in fns if a),"pub; types",[t for _,t in types])
imports=re.findall(r'^import ([\w/]+)',src,re.M); print(len(imports),"imports")
print(sorted(p for _,p in rows if p.startswith("daemon/session")))[34801, 79] daemon
[10748, 33] harness
[3360, 8] harness/extensions/discord
[3101, 10] harness/extensions/python
[2915, 11] openai_api
[2653, 8] harness/runtime
[2583, 7] harness/extensions/antigravity
[2052, 5] harness/extensions/webhooks
[1958, 6] harness/extensions/claude
[1892, 4] harness/extensions/lcm
[1812, 5] harness/extensions/artifacts
[1357, 11] harness/extensions/paperclips
daemon/session.gleam 141 fns 37 pub; types ['Session', 'Cursor', 'Page', 'Capture', 'Summary', 'StatusRead', 'InputCancellation', 'Interruption', 'Report', 'ModelSelection', 'SubmissionError', 'Message', 'State', 'ClosureEvent', 'Unobserved']
52 imports
daemon/conversation.gleam 96 fns 62 pub; types ['Info', 'RunCompletion', 'Preview', 'CapturedInfo', 'Creation', 'CreationRecord', 'ChildCreation', 'Stage', 'Snapshot', 'SourceStats', 'FoldStep', 'FitSchedule', 'LoadedRow', 'Direction', 'Range', 'TranscriptOwnership', 'Continuation', 'SourcePage', 'ToolAssociation', 'PinnedPrompt']
31 imports
['daemon/session.gleam', 'daemon/session/creation.gleam', 'daemon/session_activity.gleam', 'daemon/session_collection.gleam', 'daemon/session_configuration.gleam', 'daemon/session_configure.gleam', 'daemon/session_deletion.gleam', 'daemon/session_diagnostics.gleam', 'daemon/session_extensions.gleam', 'daemon/session_history.gleam', 'daemon/session_last_call.gleam', 'daemon/session_namespace.gleam', 'daemon/session_preferences.gleam', 'daemon/session_prompt.gleam', 'daemon/session_provider.gleam', 'daemon/session_run.gleam', 'daemon/session_state.gleam', 'daemon/session_submission.gleam', 'daemon/session_workspace.gleam']