repr-cli 0.2.15__py3-none-any.whl → 0.2.17__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- repr/__init__.py +1 -1
- repr/api.py +363 -62
- repr/auth.py +47 -38
- repr/change_synthesis.py +478 -0
- repr/cli.py +4103 -267
- repr/config.py +119 -11
- repr/configure.py +889 -0
- repr/cron.py +419 -0
- repr/dashboard/__init__.py +9 -0
- repr/dashboard/build.py +126 -0
- repr/dashboard/dist/assets/index-BYFVbEev.css +1 -0
- repr/dashboard/dist/assets/index-BrrhyJFO.css +1 -0
- repr/dashboard/dist/assets/index-CcEg74ts.js +270 -0
- repr/dashboard/dist/assets/index-Cerc-iA_.js +377 -0
- repr/dashboard/dist/assets/index-CjVcBW2L.css +1 -0
- repr/dashboard/dist/assets/index-Dfl3mR5E.js +377 -0
- repr/dashboard/dist/favicon.svg +4 -0
- repr/dashboard/dist/index.html +14 -0
- repr/dashboard/manager.py +234 -0
- repr/dashboard/server.py +1298 -0
- repr/db.py +980 -0
- repr/hooks.py +3 -2
- repr/loaders/__init__.py +22 -0
- repr/loaders/base.py +156 -0
- repr/loaders/claude_code.py +287 -0
- repr/loaders/clawdbot.py +313 -0
- repr/loaders/gemini_antigravity.py +381 -0
- repr/mcp_server.py +1196 -0
- repr/models.py +503 -0
- repr/openai_analysis.py +25 -0
- repr/session_extractor.py +481 -0
- repr/storage.py +360 -0
- repr/story_synthesis.py +1296 -0
- repr/templates.py +68 -4
- repr/timeline.py +710 -0
- repr/tools.py +17 -8
- {repr_cli-0.2.15.dist-info → repr_cli-0.2.17.dist-info}/METADATA +50 -10
- repr_cli-0.2.17.dist-info/RECORD +52 -0
- {repr_cli-0.2.15.dist-info → repr_cli-0.2.17.dist-info}/WHEEL +1 -1
- {repr_cli-0.2.15.dist-info → repr_cli-0.2.17.dist-info}/entry_points.txt +1 -0
- repr_cli-0.2.15.dist-info/RECORD +0 -26
- {repr_cli-0.2.15.dist-info → repr_cli-0.2.17.dist-info}/licenses/LICENSE +0 -0
- {repr_cli-0.2.15.dist-info → repr_cli-0.2.17.dist-info}/top_level.txt +0 -0
repr/templates.py
CHANGED
|
@@ -16,12 +16,27 @@ class StoryOutput(BaseModel):
|
|
|
16
16
|
"""Structured output for a generated story."""
|
|
17
17
|
summary: str = Field(description="One-line technical summary of the work (max 120 chars, no fluff)")
|
|
18
18
|
content: str = Field(description="Full technical description in markdown")
|
|
19
|
+
# Technologies used in this work
|
|
20
|
+
technologies: list[str] | None = Field(default=None, description="Languages, frameworks, libraries, tools used (e.g., TypeScript, React, PostgreSQL, Docker)")
|
|
19
21
|
# Categories - all inferred by LLM, nullable for backwards compatibility with older stories
|
|
20
22
|
category: str | None = Field(default=None, description="Work type: feature, bugfix, refactor, perf, infra, docs, test, chore")
|
|
21
23
|
scope: str | None = Field(default=None, description="Impact scope: user-facing, internal, platform, ops")
|
|
22
24
|
stack: str | None = Field(default=None, description="Stack layer: frontend, backend, database, infra, mobile, fullstack")
|
|
23
25
|
initiative: str | None = Field(default=None, description="Initiative type: greenfield, migration, integration, scaling, incident-response, tech-debt")
|
|
24
26
|
complexity: str | None = Field(default=None, description="Complexity: quick-win, project, epic, architecture")
|
|
27
|
+
|
|
28
|
+
# Context for AI agents - captures the WHY/HOW/DECISIONS
|
|
29
|
+
problem: str | None = Field(default=None, description="What problem was being solved?")
|
|
30
|
+
approach: str | None = Field(default=None, description="What pattern/approach was used?")
|
|
31
|
+
decisions: list[str] | None = Field(default=None, description="Key decisions made (format: 'Chose X over Y because Z')")
|
|
32
|
+
tradeoffs: str | None = Field(default=None, description="What was gained/lost?")
|
|
33
|
+
outcome: str | None = Field(default=None, description="Metrics, before/after, observable impact")
|
|
34
|
+
lessons: list[str] | None = Field(default=None, description="Gotchas, learnings, things to remember")
|
|
35
|
+
|
|
36
|
+
# Source tracking for timeline entries
|
|
37
|
+
source_type: str | None = Field(default=None, description="'commit', 'session', or 'merged'")
|
|
38
|
+
session_id: str | None = Field(default=None, description="Linked session ID if from AI session")
|
|
39
|
+
commit_sha: str | None = Field(default=None, description="Linked commit SHA if from git")
|
|
25
40
|
|
|
26
41
|
|
|
27
42
|
# Template definitions
|
|
@@ -36,6 +51,9 @@ Output JSON with:
|
|
|
36
51
|
Good: "Added JWT refresh token rotation with Redis session store"
|
|
37
52
|
Bad: "Enhanced authentication system with improved security"
|
|
38
53
|
- content: Markdown with technical details. What was built, how, what tech.
|
|
54
|
+
- technologies: Array of languages, frameworks, libraries, tools used.
|
|
55
|
+
Examples: ["TypeScript", "React", "PostgreSQL", "Docker", "Redis", "GraphQL"]
|
|
56
|
+
Be specific: "React" not "JavaScript framework", "FastAPI" not "Python web framework"
|
|
39
57
|
|
|
40
58
|
Rules:
|
|
41
59
|
- Name specific technologies, libraries, patterns
|
|
@@ -48,7 +66,7 @@ Rules:
|
|
|
48
66
|
Commits:
|
|
49
67
|
{commits_summary}
|
|
50
68
|
|
|
51
|
-
Output JSON with summary and
|
|
69
|
+
Output JSON with summary, content, and technologies.""",
|
|
52
70
|
},
|
|
53
71
|
|
|
54
72
|
"changelog": {
|
|
@@ -59,6 +77,7 @@ Output JSON with summary and content.""",
|
|
|
59
77
|
Output JSON with:
|
|
60
78
|
- summary: One line describing the main change (max 120 chars)
|
|
61
79
|
- content: Markdown changelog with categories (Added/Changed/Fixed/Removed)
|
|
80
|
+
- technologies: Array of languages, frameworks, libraries, tools involved in these changes
|
|
62
81
|
|
|
63
82
|
Rules:
|
|
64
83
|
- List actual changes, not benefits
|
|
@@ -69,7 +88,7 @@ Rules:
|
|
|
69
88
|
Commits:
|
|
70
89
|
{commits_summary}
|
|
71
90
|
|
|
72
|
-
Output JSON with summary and
|
|
91
|
+
Output JSON with summary, content, and technologies.""",
|
|
73
92
|
},
|
|
74
93
|
|
|
75
94
|
"narrative": {
|
|
@@ -80,6 +99,7 @@ Output JSON with summary and content.""",
|
|
|
80
99
|
Output JSON with:
|
|
81
100
|
- summary: One-line description of what was built (max 120 chars)
|
|
82
101
|
- content: Markdown narrative explaining the technical work
|
|
102
|
+
- technologies: Array of specific languages, frameworks, libraries, tools used
|
|
83
103
|
|
|
84
104
|
Focus on:
|
|
85
105
|
- What problem was solved
|
|
@@ -92,7 +112,7 @@ No marketing language. Write like you're explaining to another engineer.""",
|
|
|
92
112
|
Commits:
|
|
93
113
|
{commits_summary}
|
|
94
114
|
|
|
95
|
-
Output JSON with summary and
|
|
115
|
+
Output JSON with summary, content, and technologies.""",
|
|
96
116
|
},
|
|
97
117
|
|
|
98
118
|
"interview": {
|
|
@@ -103,6 +123,7 @@ Output JSON with summary and content.""",
|
|
|
103
123
|
Output JSON with:
|
|
104
124
|
- summary: One-line technical summary (max 120 chars)
|
|
105
125
|
- content: Markdown with situation/task/action/result format
|
|
126
|
+
- technologies: Array of specific languages, frameworks, libraries, tools used
|
|
106
127
|
|
|
107
128
|
Focus on:
|
|
108
129
|
- Specific technical decisions made
|
|
@@ -115,7 +136,50 @@ No resume language. Be specific about what you actually did.""",
|
|
|
115
136
|
Commits:
|
|
116
137
|
{commits_summary}
|
|
117
138
|
|
|
118
|
-
Output JSON with summary and
|
|
139
|
+
Output JSON with summary, content, and technologies.""",
|
|
140
|
+
},
|
|
141
|
+
|
|
142
|
+
"context": {
|
|
143
|
+
"name": "Context",
|
|
144
|
+
"description": "Rich context for AI agents - captures WHY, HOW, and DECISIONS",
|
|
145
|
+
"system_prompt": """Extract developer context from commits and sessions.
|
|
146
|
+
|
|
147
|
+
Your output will be consumed by AI coding assistants that need to understand this developer's patterns, decisions, and reasoning.
|
|
148
|
+
|
|
149
|
+
For each piece of work, capture:
|
|
150
|
+
|
|
151
|
+
1. WHAT: One-line summary of what was built/changed
|
|
152
|
+
2. WHY (problem): What problem was this solving? What was broken/slow/missing?
|
|
153
|
+
3. HOW (approach): What strategy/pattern was used? What does the code do?
|
|
154
|
+
4. TECHNOLOGIES: What specific languages, frameworks, libraries, tools were used?
|
|
155
|
+
5. DECISIONS: Were there alternatives? Why this approach? Format each as "Chose X over Y because Z"
|
|
156
|
+
6. TRADEOFFS: What did you give up? What did you gain?
|
|
157
|
+
7. OUTCOME: Any metrics, before/after, or observable impact?
|
|
158
|
+
8. LESSONS: What gotchas were discovered? What would you tell future-you?
|
|
159
|
+
|
|
160
|
+
Write for an AI that will answer questions like:
|
|
161
|
+
- "How does this developer usually handle X?"
|
|
162
|
+
- "What patterns do they use for Y?"
|
|
163
|
+
- "Why did they choose Z over alternatives?"
|
|
164
|
+
|
|
165
|
+
Output valid JSON with all fields from the schema.""",
|
|
166
|
+
"user_prompt_template": """Repository: {repo_name}
|
|
167
|
+
|
|
168
|
+
Commits:
|
|
169
|
+
{commits_summary}
|
|
170
|
+
|
|
171
|
+
Extract structured context with:
|
|
172
|
+
- summary: One-line technical summary (max 120 chars)
|
|
173
|
+
- content: Full markdown description
|
|
174
|
+
- technologies: Array of languages, frameworks, libraries, tools (e.g., ["TypeScript", "React", "PostgreSQL"])
|
|
175
|
+
- problem: What problem was being solved?
|
|
176
|
+
- approach: What pattern/strategy was used?
|
|
177
|
+
- decisions: List of key decisions (format: "Chose X over Y because Z")
|
|
178
|
+
- tradeoffs: What was gained/lost?
|
|
179
|
+
- outcome: Results, metrics if available
|
|
180
|
+
- lessons: Gotchas and learnings
|
|
181
|
+
|
|
182
|
+
Output valid JSON only.""",
|
|
119
183
|
},
|
|
120
184
|
}
|
|
121
185
|
|