projectmem 0.0.1__tar.gz
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.
- projectmem-0.0.1/CHANGELOG.md +5 -0
- projectmem-0.0.1/LICENSE +21 -0
- projectmem-0.0.1/PKG-INFO +212 -0
- projectmem-0.0.1/PROJECTMEM_PLAN.md +588 -0
- projectmem-0.0.1/README.md +187 -0
- projectmem-0.0.1/docs/ai-integration.md +17 -0
- projectmem-0.0.1/docs/getting-started.md +22 -0
- projectmem-0.0.1/pyproject.toml +52 -0
- projectmem-0.0.1/src/projectmem/__init__.py +3 -0
- projectmem-0.0.1/src/projectmem/cli.py +96 -0
- projectmem-0.0.1/src/projectmem/commands/__init__.py +1 -0
- projectmem-0.0.1/src/projectmem/commands/attempt.py +41 -0
- projectmem-0.0.1/src/projectmem/commands/decision.py +13 -0
- projectmem-0.0.1/src/projectmem/commands/fix.py +31 -0
- projectmem-0.0.1/src/projectmem/commands/init.py +10 -0
- projectmem-0.0.1/src/projectmem/commands/log.py +21 -0
- projectmem-0.0.1/src/projectmem/commands/note.py +13 -0
- projectmem-0.0.1/src/projectmem/commands/regenerate.py +10 -0
- projectmem-0.0.1/src/projectmem/commands/search.py +17 -0
- projectmem-0.0.1/src/projectmem/commands/show.py +9 -0
- projectmem-0.0.1/src/projectmem/models.py +66 -0
- projectmem-0.0.1/src/projectmem/search.py +15 -0
- projectmem-0.0.1/src/projectmem/storage.py +136 -0
- projectmem-0.0.1/src/projectmem/summary.py +132 -0
- projectmem-0.0.1/tests/test_init.py +22 -0
- projectmem-0.0.1/tests/test_log.py +46 -0
- projectmem-0.0.1/tests/test_search.py +20 -0
- projectmem-0.0.1/tests/test_summary.py +39 -0
projectmem-0.0.1/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 projectmem contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
Metadata-Version: 2.3
|
|
2
|
+
Name: projectmem
|
|
3
|
+
Version: 0.0.1
|
|
4
|
+
Summary: Project memory for humans and AI tools: capture issues, attempts, fixes, and decisions in readable Markdown and JSONL.
|
|
5
|
+
Project-URL: Homepage, https://github.com/riponcm/projectmem
|
|
6
|
+
Project-URL: Repository, https://github.com/riponcm/projectmem
|
|
7
|
+
Project-URL: Issues, https://github.com/riponcm/projectmem/issues
|
|
8
|
+
Author: Ripon Chandra Malo
|
|
9
|
+
License: MIT
|
|
10
|
+
Classifier: Development Status :: 2 - Pre-Alpha
|
|
11
|
+
Classifier: Environment :: Console
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Topic :: Software Development :: Documentation
|
|
19
|
+
Requires-Python: >=3.10
|
|
20
|
+
Requires-Dist: typer>=0.12
|
|
21
|
+
Provides-Extra: dev
|
|
22
|
+
Requires-Dist: pytest>=8; extra == 'dev'
|
|
23
|
+
Requires-Dist: ruff>=0.4; extra == 'dev'
|
|
24
|
+
Description-Content-Type: text/markdown
|
|
25
|
+
|
|
26
|
+
# projectmem
|
|
27
|
+
|
|
28
|
+
`projectmem` gives your projects a readable memory.
|
|
29
|
+
|
|
30
|
+
It records the development story that usually disappears between commits:
|
|
31
|
+
issues, failed attempts, working fixes, decisions, notes, and the files involved.
|
|
32
|
+
The result is a small `.projectmem/` folder that both humans and AI tools can
|
|
33
|
+
read without a vendor-specific integration.
|
|
34
|
+
|
|
35
|
+
Git shows what changed. `projectmem` helps explain what happened, what was
|
|
36
|
+
tried, what failed, and why the current solution exists.
|
|
37
|
+
|
|
38
|
+
## Why It Exists
|
|
39
|
+
|
|
40
|
+
Project context is expensive to rebuild.
|
|
41
|
+
|
|
42
|
+
When you return to a codebase after days or weeks, you often need to rediscover
|
|
43
|
+
why something was implemented a certain way. AI coding tools have the same
|
|
44
|
+
problem: every new session may scan files, infer history, and repeat analysis
|
|
45
|
+
that was already done before.
|
|
46
|
+
|
|
47
|
+
`projectmem` is designed to reduce that repeated work. Instead of asking a
|
|
48
|
+
person or an AI assistant to reconstruct the full project story from source
|
|
49
|
+
files alone, it keeps a compact, structured memory in Markdown and JSONL.
|
|
50
|
+
|
|
51
|
+
For AI-assisted development, the intended pattern is simple:
|
|
52
|
+
|
|
53
|
+
- read `.projectmem/summary.md` first
|
|
54
|
+
- open detailed issue files only when needed
|
|
55
|
+
- avoid repeating failed approaches that were already recorded
|
|
56
|
+
- spend more context window on the current task instead of rediscovering old
|
|
57
|
+
decisions
|
|
58
|
+
|
|
59
|
+
The exact token savings depend on the project and workflow, but the goal is to
|
|
60
|
+
replace repeated broad scans of tens or hundreds of kilobytes with a concise
|
|
61
|
+
summary targeted to stay under roughly 20 KB. In practical AI workflows, that
|
|
62
|
+
can save a significant percentage of context tokens across repeated sessions,
|
|
63
|
+
especially on long-lived projects.
|
|
64
|
+
|
|
65
|
+
## What It Captures
|
|
66
|
+
|
|
67
|
+
`projectmem` is intentionally narrow. It is a project logbook for development
|
|
68
|
+
knowledge that does not fit cleanly into commits.
|
|
69
|
+
|
|
70
|
+
It captures:
|
|
71
|
+
|
|
72
|
+
- issues you are investigating
|
|
73
|
+
- hypotheses and attempts
|
|
74
|
+
- whether an attempt worked, failed, or partially helped
|
|
75
|
+
- final fixes
|
|
76
|
+
- architectural or implementation decisions
|
|
77
|
+
- notes and gotchas
|
|
78
|
+
- file references that matter to the story
|
|
79
|
+
|
|
80
|
+
It does not replace Git, issue trackers, documentation, code search, or AI
|
|
81
|
+
memory systems. It complements them by preserving the reasoning and failed paths
|
|
82
|
+
around a project.
|
|
83
|
+
|
|
84
|
+
## Installation
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
pip install projectmem
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
This installs two commands:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
projectmem
|
|
94
|
+
pm
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Both commands run the same CLI. `projectmem` is the canonical command; `pm` is a
|
|
98
|
+
short alias for daily use.
|
|
99
|
+
|
|
100
|
+
## Quick Start
|
|
101
|
+
|
|
102
|
+
Initialize memory inside a project:
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
cd path/to/your-project
|
|
106
|
+
projectmem init
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Record the story as you work:
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
pm log "auth tokens expire after 1h instead of 24h"
|
|
113
|
+
pm attempt "bumped JWT_EXPIRY in config.py" --failed
|
|
114
|
+
pm attempt "found hardcoded TTL in middleware" --worked
|
|
115
|
+
pm fix "changed TOKEN_TTL in auth/middleware.py:42"
|
|
116
|
+
pm decision "keep auth middleware stateless so workers can scale horizontally"
|
|
117
|
+
pm note "local test suite requires the test database to be running"
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Read the current project memory:
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
pm show
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
Search previous entries:
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
pm search token
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Regenerate the summary from the raw event log:
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
pm regenerate
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## Project Memory Files
|
|
139
|
+
|
|
140
|
+
`projectmem init` creates:
|
|
141
|
+
|
|
142
|
+
```text
|
|
143
|
+
.projectmem/
|
|
144
|
+
├── summary.md
|
|
145
|
+
├── events.jsonl
|
|
146
|
+
├── issues/
|
|
147
|
+
└── config.toml
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
File roles:
|
|
151
|
+
|
|
152
|
+
- `.projectmem/summary.md` is the compact memory for humans and AI tools.
|
|
153
|
+
- `.projectmem/events.jsonl` is the append-only raw event log.
|
|
154
|
+
- `.projectmem/issues/` contains per-issue Markdown files for deeper context.
|
|
155
|
+
- `.projectmem/config.toml` stores project-specific settings.
|
|
156
|
+
|
|
157
|
+
By default, `projectmem init` adds `.projectmem/events.jsonl` to `.gitignore`.
|
|
158
|
+
The raw log can contain noisy or sensitive working notes. The generated summary,
|
|
159
|
+
issue files, and config are the parts most teams may choose to commit.
|
|
160
|
+
|
|
161
|
+
## Commands
|
|
162
|
+
|
|
163
|
+
| Command | Purpose |
|
|
164
|
+
|---|---|
|
|
165
|
+
| `projectmem init` | Create `.projectmem/` in the current project |
|
|
166
|
+
| `pm log <text>` | Start a new issue |
|
|
167
|
+
| `pm attempt <text> --worked` | Record a successful attempt |
|
|
168
|
+
| `pm attempt <text> --failed` | Record a failed attempt |
|
|
169
|
+
| `pm attempt <text> --partial` | Record a partially useful attempt |
|
|
170
|
+
| `pm fix <text>` | Record the fix for the current issue |
|
|
171
|
+
| `pm decision <text>` | Record a project decision |
|
|
172
|
+
| `pm note <text>` | Record a free-form note |
|
|
173
|
+
| `pm show` | Print `.projectmem/summary.md` |
|
|
174
|
+
| `pm search <query>` | Search recorded events |
|
|
175
|
+
| `pm regenerate` | Rebuild the summary from `events.jsonl` |
|
|
176
|
+
|
|
177
|
+
## AI Workflow
|
|
178
|
+
|
|
179
|
+
Any AI assistant can use `projectmem` without a plugin.
|
|
180
|
+
|
|
181
|
+
At the start of a session, ask the assistant to read:
|
|
182
|
+
|
|
183
|
+
```text
|
|
184
|
+
.projectmem/summary.md
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
That file is designed to provide the current project story: recent issues,
|
|
188
|
+
outcomes, known gotchas, decisions, and key files. If more detail is needed, the
|
|
189
|
+
assistant can open the relevant file under `.projectmem/issues/`.
|
|
190
|
+
|
|
191
|
+
This keeps the memory portable across tools such as Claude Code, Cursor, Codex,
|
|
192
|
+
custom agents, and plain terminal workflows. The storage is ordinary Markdown
|
|
193
|
+
and JSONL.
|
|
194
|
+
|
|
195
|
+
## Design Principles
|
|
196
|
+
|
|
197
|
+
- Local-first: no network calls, no cloud service, no telemetry.
|
|
198
|
+
- Human-readable: Markdown and JSONL only.
|
|
199
|
+
- AI-tool-agnostic: no dependency on one assistant or editor.
|
|
200
|
+
- Append-only raw log: the original event history remains available.
|
|
201
|
+
- Compact derived summary: the main AI-readable file stays small.
|
|
202
|
+
- Small CLI surface: a few commands focused on daily development memory.
|
|
203
|
+
|
|
204
|
+
## Development Status
|
|
205
|
+
|
|
206
|
+
`projectmem` is in early development. Version `0.0.1` is the initial package
|
|
207
|
+
release for testing and name reservation. The first stable public workflow will
|
|
208
|
+
come after real use across several projects.
|
|
209
|
+
|
|
210
|
+
## License
|
|
211
|
+
|
|
212
|
+
MIT
|