@pcircle/footprint 1.2.0 → 1.2.2
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.
- package/LICENSE +1 -1
- package/README.md +21 -21
- package/SKILL.md +45 -45
- package/dist/src/index.js +8 -8
- package/dist/src/index.js.map +1 -1
- package/dist/src/lib/storage/export.d.ts +2 -2
- package/dist/src/lib/storage/export.d.ts.map +1 -1
- package/dist/src/lib/storage/export.js +39 -39
- package/dist/src/lib/storage/export.js.map +1 -1
- package/dist/src/tools/capture-footprint.js +1 -1
- package/dist/src/tools/capture-footprint.js.map +1 -1
- package/dist/src/tools/delete-footprints.d.ts +2 -2
- package/dist/src/tools/delete-footprints.d.ts.map +1 -1
- package/dist/src/tools/delete-footprints.js +4 -4
- package/dist/src/tools/delete-footprints.js.map +1 -1
- package/dist/src/tools/export-footprints.d.ts +4 -4
- package/dist/src/tools/export-footprints.d.ts.map +1 -1
- package/dist/src/tools/export-footprints.js +6 -6
- package/dist/src/tools/export-footprints.js.map +1 -1
- package/dist/src/tools/get-footprint.js +19 -19
- package/dist/src/tools/get-footprint.js.map +1 -1
- package/dist/src/tools/list-footprints.d.ts +2 -2
- package/dist/src/tools/list-footprints.js +11 -11
- package/dist/src/tools/list-footprints.js.map +1 -1
- package/dist/src/tools/search-footprints.d.ts +2 -2
- package/dist/src/tools/search-footprints.js +11 -11
- package/dist/src/tools/search-footprints.js.map +1 -1
- package/dist/src/tools/suggest-capture.js +1 -1
- package/dist/src/tools/suggest-capture.js.map +1 -1
- package/dist/src/tools/verify-footprint.js +11 -11
- package/dist/src/tools/verify-footprint.js.map +1 -1
- package/dist/src/ui/register.js +2 -2
- package/dist/src/ui/register.js.map +1 -1
- package/dist/tests/error-handling.test.js +2 -2
- package/dist/tests/error-handling.test.js.map +1 -1
- package/dist/tests/fixtures.js +2 -2
- package/dist/tests/fixtures.js.map +1 -1
- package/dist/tests/integration.test.js +12 -12
- package/dist/tests/integration.test.js.map +1 -1
- package/dist/tests/resources.test.js +14 -14
- package/dist/tests/resources.test.js.map +1 -1
- package/dist/tests/tools.test.js +4 -4
- package/dist/tests/tools.test.js.map +1 -1
- package/dist/ui/dashboard.html +49 -49
- package/dist/ui/detail.html +9 -9
- package/dist/ui/export.html +17 -17
- package/dist/ui-tmp/ui/export.html +17 -17
- package/package.json +5 -5
package/LICENSE
CHANGED
|
@@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
|
18
18
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
19
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
20
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
[](https://www.npmjs.com/package/@pcircle/footprint)
|
|
4
4
|
[](LICENSE)
|
|
5
5
|
|
|
6
|
-
Model Context Protocol (MCP) server that automatically captures and encrypts LLM conversations as
|
|
6
|
+
Model Context Protocol (MCP) server that automatically captures and encrypts LLM conversations as timestamped footprints.
|
|
7
7
|
|
|
8
8
|
## Why Footprint?
|
|
9
9
|
|
|
10
|
-
- **Prove IP Ownership** - Timestamped
|
|
10
|
+
- **Prove IP Ownership** - Timestamped footprints of LLM-assisted work
|
|
11
11
|
- **Zero Effort** - Automatic capture via MCP protocol
|
|
12
12
|
- **Privacy First** - End-to-end encrypted, locally stored
|
|
13
13
|
- **Legally Valid** - Git timestamps + SHA-256 checksums
|
|
@@ -23,7 +23,7 @@ npm install -g @pcircle/footprint
|
|
|
23
23
|
1. **Set environment variables:**
|
|
24
24
|
|
|
25
25
|
```bash
|
|
26
|
-
export FOOTPRINT_DB_PATH="./
|
|
26
|
+
export FOOTPRINT_DB_PATH="./footprints.db"
|
|
27
27
|
export FOOTPRINT_PASSWORD="your-secure-password"
|
|
28
28
|
```
|
|
29
29
|
|
|
@@ -36,7 +36,7 @@ export FOOTPRINT_PASSWORD="your-secure-password"
|
|
|
36
36
|
"command": "npx",
|
|
37
37
|
"args": ["footprint"],
|
|
38
38
|
"env": {
|
|
39
|
-
"FOOTPRINT_DB_PATH": "/path/to/
|
|
39
|
+
"FOOTPRINT_DB_PATH": "/path/to/footprints.db",
|
|
40
40
|
"FOOTPRINT_PASSWORD": "your-password"
|
|
41
41
|
}
|
|
42
42
|
}
|
|
@@ -44,14 +44,14 @@ export FOOTPRINT_PASSWORD="your-secure-password"
|
|
|
44
44
|
}
|
|
45
45
|
```
|
|
46
46
|
|
|
47
|
-
3. **Restart Claude Desktop** -
|
|
47
|
+
3. **Restart Claude Desktop** - Footprint collection starts automatically
|
|
48
48
|
|
|
49
49
|
## Features
|
|
50
50
|
|
|
51
51
|
- 🔐 XChaCha20-Poly1305 encryption
|
|
52
52
|
- 🕒 Git commit timestamps
|
|
53
53
|
- 📦 Tamper-proof ZIP exports
|
|
54
|
-
- 🔍 Search and retrieve
|
|
54
|
+
- 🔍 Search and retrieve footprints
|
|
55
55
|
- 🤖 AI-powered capture suggestions
|
|
56
56
|
- ✅ Integrity verification
|
|
57
57
|
- 🏷️ Tag management
|
|
@@ -100,7 +100,7 @@ src/
|
|
|
100
100
|
|
|
101
101
|
#### capture-footprint
|
|
102
102
|
|
|
103
|
-
Captures and encrypts an LLM conversation as
|
|
103
|
+
Captures and encrypts an LLM conversation as a footprint.
|
|
104
104
|
|
|
105
105
|
**Parameters:**
|
|
106
106
|
|
|
@@ -112,7 +112,7 @@ Captures and encrypts an LLM conversation as evidence.
|
|
|
112
112
|
|
|
113
113
|
#### list-footprints
|
|
114
114
|
|
|
115
|
-
Lists all captured
|
|
115
|
+
Lists all captured footprints with pagination support.
|
|
116
116
|
|
|
117
117
|
**Parameters:**
|
|
118
118
|
|
|
@@ -121,26 +121,26 @@ Lists all captured evidence with pagination support.
|
|
|
121
121
|
|
|
122
122
|
#### get-footprint
|
|
123
123
|
|
|
124
|
-
Retrieves and decrypts specific
|
|
124
|
+
Retrieves and decrypts a specific footprint by ID.
|
|
125
125
|
|
|
126
126
|
**Parameters:**
|
|
127
127
|
|
|
128
|
-
- `id` -
|
|
128
|
+
- `id` - Footprint ID
|
|
129
129
|
|
|
130
130
|
#### export-footprints
|
|
131
131
|
|
|
132
|
-
Exports
|
|
132
|
+
Exports footprints to tamper-proof encrypted ZIP archive.
|
|
133
133
|
|
|
134
134
|
**Parameters:**
|
|
135
135
|
|
|
136
|
-
- `
|
|
136
|
+
- `ids` - Array of footprint IDs to export
|
|
137
137
|
- `includeGitInfo` (optional) - Include git metadata
|
|
138
138
|
|
|
139
139
|
### Search & Discovery
|
|
140
140
|
|
|
141
141
|
#### search-footprints
|
|
142
142
|
|
|
143
|
-
Search and filter
|
|
143
|
+
Search and filter footprints by query, tags, or date range.
|
|
144
144
|
|
|
145
145
|
**Parameters:**
|
|
146
146
|
|
|
@@ -153,7 +153,7 @@ Search and filter evidence by query, tags, or date range.
|
|
|
153
153
|
|
|
154
154
|
#### suggest-capture
|
|
155
155
|
|
|
156
|
-
Analyze conversation content and suggest whether to capture it as
|
|
156
|
+
Analyze conversation content and suggest whether to capture it as a footprint.
|
|
157
157
|
|
|
158
158
|
**Parameters:**
|
|
159
159
|
|
|
@@ -171,31 +171,31 @@ Analyze conversation content and suggest whether to capture it as evidence.
|
|
|
171
171
|
|
|
172
172
|
#### verify-footprint
|
|
173
173
|
|
|
174
|
-
Verify the integrity and authenticity of captured
|
|
174
|
+
Verify the integrity and authenticity of a captured footprint.
|
|
175
175
|
|
|
176
176
|
**Parameters:**
|
|
177
177
|
|
|
178
|
-
- `id` -
|
|
178
|
+
- `id` - Footprint ID to verify
|
|
179
179
|
|
|
180
180
|
**Returns:**
|
|
181
181
|
|
|
182
182
|
- `verified` - Overall verification status
|
|
183
183
|
- `checks` - Detailed checks (content integrity, git timestamp, encryption)
|
|
184
|
-
- `legalReadiness` - Whether
|
|
184
|
+
- `legalReadiness` - Whether footprint meets legal standards
|
|
185
185
|
|
|
186
186
|
### Management
|
|
187
187
|
|
|
188
188
|
#### delete-footprints
|
|
189
189
|
|
|
190
|
-
Delete
|
|
190
|
+
Delete footprint records permanently.
|
|
191
191
|
|
|
192
192
|
**Parameters:**
|
|
193
193
|
|
|
194
|
-
- `
|
|
194
|
+
- `ids` - Array of footprint IDs to delete
|
|
195
195
|
|
|
196
196
|
#### rename-tag
|
|
197
197
|
|
|
198
|
-
Rename a tag across all
|
|
198
|
+
Rename a tag across all footprints.
|
|
199
199
|
|
|
200
200
|
**Parameters:**
|
|
201
201
|
|
|
@@ -204,7 +204,7 @@ Rename a tag across all evidence.
|
|
|
204
204
|
|
|
205
205
|
#### remove-tag
|
|
206
206
|
|
|
207
|
-
Remove a tag from all
|
|
207
|
+
Remove a tag from all footprints.
|
|
208
208
|
|
|
209
209
|
**Parameters:**
|
|
210
210
|
|
package/SKILL.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> MCP server for capturing and encrypting AI conversations as verifiable records with Git timestamps.
|
|
4
4
|
|
|
5
|
-
**Package:** `@pcircle/footprint` (v1.
|
|
5
|
+
**Package:** `@pcircle/footprint` (v1.2.1)
|
|
6
6
|
**Protocol:** Model Context Protocol (MCP)
|
|
7
7
|
**License:** MIT
|
|
8
8
|
|
|
@@ -26,7 +26,7 @@ Should I capture this conversation?
|
|
|
26
26
|
│ ├─ Basic troubleshooting
|
|
27
27
|
│ └─ Draft/brainstorming sessions (unless finalized)
|
|
28
28
|
└─ Uncertain content → ASK user
|
|
29
|
-
└─ "Would you like me to save this conversation as
|
|
29
|
+
└─ "Would you like me to save this conversation as a footprint?"
|
|
30
30
|
```
|
|
31
31
|
|
|
32
32
|
## Specific Trigger Patterns
|
|
@@ -53,7 +53,7 @@ Should I capture this conversation?
|
|
|
53
53
|
## Available Tools
|
|
54
54
|
|
|
55
55
|
### 1. `capture-footprint`
|
|
56
|
-
Save a conversation as encrypted
|
|
56
|
+
Save a conversation as encrypted footprint.
|
|
57
57
|
|
|
58
58
|
**Input Parameters:**
|
|
59
59
|
```json
|
|
@@ -68,22 +68,22 @@ Save a conversation as encrypted evidence.
|
|
|
68
68
|
|
|
69
69
|
**Expected Output (text):**
|
|
70
70
|
```
|
|
71
|
-
✅
|
|
72
|
-
-
|
|
71
|
+
✅ Footprint captured successfully
|
|
72
|
+
- Footprint ID: `550e8400-e29b-41d4-a716-446655440000`
|
|
73
73
|
- Conversation ID: `api-auth-decision-2026-01-28`
|
|
74
74
|
- Messages: 15
|
|
75
75
|
- Tags: api,oauth,security,decision,approved
|
|
76
76
|
- Git hash: `a1b2c3d4e5f6789...`
|
|
77
77
|
- Created: 2026-01-28T14:30:45Z
|
|
78
78
|
|
|
79
|
-
Keep this
|
|
79
|
+
Keep this Footprint ID safe for future reference.
|
|
80
80
|
```
|
|
81
81
|
|
|
82
82
|
**Expected Output (structuredContent):**
|
|
83
83
|
```json
|
|
84
84
|
{
|
|
85
|
-
"type": "
|
|
86
|
-
"
|
|
85
|
+
"type": "footprint_created",
|
|
86
|
+
"footprintId": "550e8400-e29b-41d4-a716-446655440000",
|
|
87
87
|
"conversationId": "api-auth-decision-2026-01-28",
|
|
88
88
|
"messageCount": 15,
|
|
89
89
|
"tags": ["api", "oauth", "security", "decision", "approved"],
|
|
@@ -94,7 +94,7 @@ Keep this Evidence ID safe for future reference.
|
|
|
94
94
|
```
|
|
95
95
|
|
|
96
96
|
### 2. `list-footprints`
|
|
97
|
-
List all captured
|
|
97
|
+
List all captured footprints (metadata only).
|
|
98
98
|
|
|
99
99
|
**Input Parameters:**
|
|
100
100
|
```json
|
|
@@ -106,7 +106,7 @@ List all captured evidence (metadata only).
|
|
|
106
106
|
|
|
107
107
|
**Expected Output (text):**
|
|
108
108
|
```
|
|
109
|
-
📋
|
|
109
|
+
📋 Footprint Archive (10 most recent)
|
|
110
110
|
1. api-auth-decision-2026-01-28 | 15 msgs | api,oauth,security
|
|
111
111
|
2. patent-algorithm-2026-01-27 | 32 msgs | ip,patent,algorithm
|
|
112
112
|
3. contract-review-2026-01-26 | 8 msgs | legal,contract
|
|
@@ -116,9 +116,9 @@ List all captured evidence (metadata only).
|
|
|
116
116
|
**Expected Output (structuredContent):**
|
|
117
117
|
```json
|
|
118
118
|
{
|
|
119
|
-
"type": "
|
|
119
|
+
"type": "footprint_list",
|
|
120
120
|
"total": 25,
|
|
121
|
-
"
|
|
121
|
+
"footprints": [
|
|
122
122
|
{
|
|
123
123
|
"id": "550e8400-e29b-41d4-a716-446655440000",
|
|
124
124
|
"conversationId": "api-auth-decision-2026-01-28",
|
|
@@ -131,7 +131,7 @@ List all captured evidence (metadata only).
|
|
|
131
131
|
```
|
|
132
132
|
|
|
133
133
|
### 3. `get-footprint`
|
|
134
|
-
Retrieve and decrypt specific
|
|
134
|
+
Retrieve and decrypt a specific footprint.
|
|
135
135
|
|
|
136
136
|
**Input Parameters:**
|
|
137
137
|
```json
|
|
@@ -142,7 +142,7 @@ Retrieve and decrypt specific evidence.
|
|
|
142
142
|
|
|
143
143
|
**Expected Output (text):**
|
|
144
144
|
```
|
|
145
|
-
📄
|
|
145
|
+
📄 Footprint Retrieved
|
|
146
146
|
- ID: 550e8400-e29b-41d4-a716-446655440000
|
|
147
147
|
- Created: 2026-01-28T14:30:45Z
|
|
148
148
|
- Provider: Claude Sonnet 4.5
|
|
@@ -154,7 +154,7 @@ Assistant: I recommend using PKCE flow...
|
|
|
154
154
|
```
|
|
155
155
|
|
|
156
156
|
### 4. `search-footprints`
|
|
157
|
-
Find
|
|
157
|
+
Find footprints by content or tags.
|
|
158
158
|
|
|
159
159
|
**Input Parameters:**
|
|
160
160
|
```json
|
|
@@ -166,7 +166,7 @@ Find evidence by content or tags.
|
|
|
166
166
|
```
|
|
167
167
|
|
|
168
168
|
### 5. `export-footprints`
|
|
169
|
-
Export
|
|
169
|
+
Export footprints as encrypted archive.
|
|
170
170
|
|
|
171
171
|
**Input Parameters:**
|
|
172
172
|
```json
|
|
@@ -179,8 +179,8 @@ Export evidence as encrypted archive.
|
|
|
179
179
|
**Expected Output (structuredContent):**
|
|
180
180
|
```json
|
|
181
181
|
{
|
|
182
|
-
"type": "
|
|
183
|
-
"filename": "
|
|
182
|
+
"type": "footprint_export",
|
|
183
|
+
"filename": "footprint-550e8400-export.zip",
|
|
184
184
|
"base64Data": "UEsDBBQAAAAIAL...",
|
|
185
185
|
"size": 2048,
|
|
186
186
|
"checksum": "sha256:a1b2c3d4..."
|
|
@@ -188,7 +188,7 @@ Export evidence as encrypted archive.
|
|
|
188
188
|
```
|
|
189
189
|
|
|
190
190
|
### 6. `verify-footprint`
|
|
191
|
-
Verify
|
|
191
|
+
Verify footprint integrity (checksum + Git timestamp).
|
|
192
192
|
|
|
193
193
|
**Input Parameters:**
|
|
194
194
|
```json
|
|
@@ -199,7 +199,7 @@ Verify evidence integrity (checksum + Git timestamp).
|
|
|
199
199
|
|
|
200
200
|
**Expected Output (text):**
|
|
201
201
|
```
|
|
202
|
-
🔐
|
|
202
|
+
🔐 Footprint Verification Report
|
|
203
203
|
- ID: 550e8400-e29b-41d4-a716-446655440000
|
|
204
204
|
- Content Hash: ✅ Valid (SHA-256 matches)
|
|
205
205
|
- Git Timestamp: ✅ Verified (2026-01-28T14:30:45Z)
|
|
@@ -252,29 +252,29 @@ Verify evidence integrity (checksum + Git timestamp).
|
|
|
252
252
|
|
|
253
253
|
### When to Use Each Tool
|
|
254
254
|
- **capture-footprint**: Primary tool for saving conversations
|
|
255
|
-
- **list-footprints**: Browse/overview existing
|
|
256
|
-
- **search-footprints**: Find specific content across
|
|
257
|
-
- **get-footprint**: Retrieve full content of specific
|
|
255
|
+
- **list-footprints**: Browse/overview existing footprints
|
|
256
|
+
- **search-footprints**: Find specific content across footprints
|
|
257
|
+
- **get-footprint**: Retrieve full content of a specific footprint
|
|
258
258
|
- **export-footprints**: Legal/audit export needs
|
|
259
|
-
- **verify-footprint**: Verify
|
|
259
|
+
- **verify-footprint**: Verify footprint integrity and checksums
|
|
260
260
|
|
|
261
261
|
## Token-Efficient Agent Responses
|
|
262
262
|
|
|
263
|
-
**After capturing
|
|
263
|
+
**After capturing a footprint (keep it brief):**
|
|
264
264
|
```
|
|
265
|
-
✅
|
|
265
|
+
✅ Footprint saved as `{conversationId}`
|
|
266
266
|
ID: `{first-8-chars-of-id}`...
|
|
267
267
|
Tags: {tags}
|
|
268
268
|
```
|
|
269
269
|
|
|
270
270
|
**When suggesting capture:**
|
|
271
271
|
```
|
|
272
|
-
💡 This looks like valuable
|
|
272
|
+
💡 This looks like valuable content (contains {trigger}). Save it as a footprint?
|
|
273
273
|
```
|
|
274
274
|
|
|
275
275
|
**When declining to capture:**
|
|
276
276
|
```
|
|
277
|
-
ℹ️ Skipping
|
|
277
|
+
ℹ️ Skipping footprint capture (casual conversation)
|
|
278
278
|
```
|
|
279
279
|
|
|
280
280
|
**For retrieval:**
|
|
@@ -288,10 +288,10 @@ Tags: {tags}
|
|
|
288
288
|
| Error | Likely Cause | Recovery Action |
|
|
289
289
|
|-------|--------------|-----------------|
|
|
290
290
|
| "Password required" | FOOTPRINT_PASSWORD not set | 1. Check env config<br>2. Restart MCP server<br>3. Verify password in env |
|
|
291
|
-
| "
|
|
292
|
-
| "Decryption failed" | Password changed/wrong | 1. Verify current password matches<br>2. Check if
|
|
291
|
+
| "Footprint not found" | Invalid/wrong ID | 1. Use `list-footprints` to find correct ID<br>2. Search by conversationId<br>3. Check if user meant different footprint |
|
|
292
|
+
| "Decryption failed" | Password changed/wrong | 1. Verify current password matches<br>2. Check if footprint pre-dates password change<br>3. Try with backup password if available |
|
|
293
293
|
| "Database error" | DB path/permissions issues | 1. Check FOOTPRINT_DB_PATH exists<br>2. Verify file permissions<br>3. Create directory if missing |
|
|
294
|
-
| "Git repository error" | Git not initialized | 1. Initialize git in
|
|
294
|
+
| "Git repository error" | Git not initialized | 1. Initialize git in footprint directory<br>2. Set git user.name/user.email<br>3. Make initial commit |
|
|
295
295
|
| "Capture timeout" | Large conversation size | 1. Split into smaller chunks<br>2. Reduce messageCount<br>3. Compress content before capture |
|
|
296
296
|
|
|
297
297
|
**Agent Recovery Protocol:**
|
|
@@ -311,7 +311,7 @@ Agent:
|
|
|
311
311
|
1. ✅ Capture immediately (explicit request)
|
|
312
312
|
2. Use conversationId: "api-design-discussion-2026-01-28"
|
|
313
313
|
3. Tags: "api,design,architecture"
|
|
314
|
-
4. Report success with
|
|
314
|
+
4. Report success with Footprint ID
|
|
315
315
|
```
|
|
316
316
|
|
|
317
317
|
### 2. High-Value Content Detection
|
|
@@ -320,27 +320,27 @@ User: "We've decided to patent this algorithm approach."
|
|
|
320
320
|
|
|
321
321
|
Agent:
|
|
322
322
|
1. 🔍 Detect trigger: "patent" + "decided"
|
|
323
|
-
2. 💡 Suggest: "This looks like valuable
|
|
323
|
+
2. 💡 Suggest: "This looks like valuable content (contains patent decision). Save it as a footprint?"
|
|
324
324
|
3. ✅ If user agrees, capture with tags: "patent,algorithm,decision,ip"
|
|
325
325
|
```
|
|
326
326
|
|
|
327
|
-
### 3.
|
|
327
|
+
### 3. Footprint Retrieval
|
|
328
328
|
```
|
|
329
329
|
User: "Find the conversation about OAuth implementation"
|
|
330
330
|
|
|
331
331
|
Agent:
|
|
332
|
-
1. 🔍 Search: list-footprints or search-
|
|
332
|
+
1. 🔍 Search: list-footprints or search-footprints with "OAuth"
|
|
333
333
|
2. 📄 Present matches with conversationId and brief summary
|
|
334
334
|
3. 🎯 If user selects one, get-footprint to show full content
|
|
335
335
|
```
|
|
336
336
|
|
|
337
337
|
### 4. Legal Export
|
|
338
338
|
```
|
|
339
|
-
User: "Export the patent
|
|
339
|
+
User: "Export the patent footprints for filing"
|
|
340
340
|
|
|
341
|
-
Agent:
|
|
342
|
-
1. 🔍 Help identify relevant
|
|
343
|
-
2. 📦 Export each
|
|
341
|
+
Agent:
|
|
342
|
+
1. 🔍 Help identify relevant footprints (search by "patent" tag)
|
|
343
|
+
2. 📦 Export each footprint as encrypted ZIP
|
|
344
344
|
3. ✅ Provide files with verification instructions
|
|
345
345
|
4. 📋 Remind about Git hash verification for legal proof
|
|
346
346
|
```
|
|
@@ -351,11 +351,11 @@ Agent:
|
|
|
351
351
|
- **Encryption**: XChaCha20-Poly1305 (256-bit) with Argon2id key derivation
|
|
352
352
|
- **Git Timestamps**: Cryptographic proof of creation time
|
|
353
353
|
- **SHA-256 Checksums**: Detect any content tampering
|
|
354
|
-
- **
|
|
354
|
+
- **Footprint Chain**: Each capture creates immutable Git commit
|
|
355
355
|
- **Storage**: Local SQLite with encrypted BLOBs (no cloud, no tracking)
|
|
356
356
|
|
|
357
357
|
**For legal proceedings:**
|
|
358
|
-
1. Export
|
|
358
|
+
1. Export footprint with `export-footprints`
|
|
359
359
|
2. Verify Git hash against repository
|
|
360
360
|
3. Check SHA-256 checksum matches
|
|
361
361
|
4. Git log shows creation timestamp
|
|
@@ -389,7 +389,7 @@ npx @pcircle/footprint
|
|
|
389
389
|
"command": "npx",
|
|
390
390
|
"args": ["@pcircle/footprint"],
|
|
391
391
|
"env": {
|
|
392
|
-
"FOOTPRINT_DB_PATH": "/path/to/
|
|
392
|
+
"FOOTPRINT_DB_PATH": "/path/to/footprints.db",
|
|
393
393
|
"FOOTPRINT_PASSWORD": "your-secure-password-here"
|
|
394
394
|
}
|
|
395
395
|
}
|
|
@@ -399,14 +399,14 @@ npx @pcircle/footprint
|
|
|
399
399
|
|
|
400
400
|
**Environment Variables:**
|
|
401
401
|
- `FOOTPRINT_PASSWORD` (required): Encryption passphrase
|
|
402
|
-
- `FOOTPRINT_DB_PATH` (optional): Path to SQLite database (default: `./
|
|
402
|
+
- `FOOTPRINT_DB_PATH` (optional): Path to SQLite database (default: `./footprints.db` in current directory)
|
|
403
403
|
|
|
404
404
|
## Performance Notes
|
|
405
405
|
|
|
406
406
|
- **Capture time**: ~1-3 seconds per conversation
|
|
407
407
|
- **Database size**: ~1KB per message on average
|
|
408
|
-
- **Git overhead**: ~100 bytes per
|
|
409
|
-
- **Search speed**: Sub-second for <1000
|
|
408
|
+
- **Git overhead**: ~100 bytes per footprint commit
|
|
409
|
+
- **Search speed**: Sub-second for <1000 footprint records
|
|
410
410
|
- **Export time**: ~5-15 seconds depending on content size
|
|
411
411
|
|
|
412
412
|
Large conversations (>100 messages) may take longer to encrypt and commit.
|
package/dist/src/index.js
CHANGED
|
@@ -157,18 +157,18 @@ export class FootprintServer {
|
|
|
157
157
|
}, createGetTagStatsHandler(this.db));
|
|
158
158
|
}
|
|
159
159
|
registerResources() {
|
|
160
|
-
this.server.registerResource("
|
|
161
|
-
title: "
|
|
160
|
+
this.server.registerResource("footprint", new ResourceTemplate("footprint://{id}", { list: undefined }), {
|
|
161
|
+
title: "Footprint Content",
|
|
162
162
|
description: "Access encrypted footprint record by ID",
|
|
163
163
|
mimeType: "text/plain",
|
|
164
164
|
}, async (uri, { id }) => {
|
|
165
165
|
try {
|
|
166
|
-
const
|
|
167
|
-
if (!
|
|
168
|
-
throw new Error(`
|
|
166
|
+
const footprint = this.db.findById(id);
|
|
167
|
+
if (!footprint) {
|
|
168
|
+
throw new Error(`Footprint with ID ${id} not found`);
|
|
169
169
|
}
|
|
170
170
|
const key = await this.getDerivedKey();
|
|
171
|
-
const decrypted = decrypt(
|
|
171
|
+
const decrypted = decrypt(footprint.encryptedContent, footprint.nonce, key);
|
|
172
172
|
return {
|
|
173
173
|
contents: [
|
|
174
174
|
{ uri: uri.href, mimeType: "text/plain", text: decrypted },
|
|
@@ -176,7 +176,7 @@ export class FootprintServer {
|
|
|
176
176
|
};
|
|
177
177
|
}
|
|
178
178
|
catch (error) {
|
|
179
|
-
throw new Error(`Failed to access
|
|
179
|
+
throw new Error(`Failed to access footprint resource: ${getErrorMessage(error)}`);
|
|
180
180
|
}
|
|
181
181
|
});
|
|
182
182
|
}
|
|
@@ -195,7 +195,7 @@ export class FootprintServer {
|
|
|
195
195
|
}
|
|
196
196
|
async function main() {
|
|
197
197
|
const config = {
|
|
198
|
-
dbPath: process.env.FOOTPRINT_DB_PATH || "./
|
|
198
|
+
dbPath: process.env.FOOTPRINT_DB_PATH || "./footprints.db",
|
|
199
199
|
password: process.env.FOOTPRINT_PASSWORD || "",
|
|
200
200
|
};
|
|
201
201
|
if (!config.password) {
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { EvidenceDatabase } from './database.js';
|
|
2
2
|
export interface ExportOptions {
|
|
3
|
-
|
|
3
|
+
ids?: string[];
|
|
4
4
|
includeGitInfo?: boolean;
|
|
5
5
|
password?: string;
|
|
6
6
|
}
|
|
@@ -8,7 +8,7 @@ export interface ExportResult {
|
|
|
8
8
|
filename: string;
|
|
9
9
|
zipData: Uint8Array;
|
|
10
10
|
checksum: string;
|
|
11
|
-
|
|
11
|
+
footprintCount: number;
|
|
12
12
|
}
|
|
13
13
|
/**
|
|
14
14
|
* Export evidences to a ZIP archive with encrypted data and metadata.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../../../src/lib/storage/export.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEtD,MAAM,WAAW,aAAa;IAC5B,
|
|
1
|
+
{"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../../../src/lib/storage/export.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEtD,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,UAAU,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;CACxB;AAeD;;;;;;;;;;;GAWG;AACH,wBAAsB,eAAe,CACnC,EAAE,EAAE,gBAAgB,EACpB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC,CAqIvB"}
|