@pcircle/footprint 1.2.2 → 1.3.0

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.
Files changed (96) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +31 -43
  3. package/SKILL.md +45 -45
  4. package/dist/src/cli/constants.d.ts +20 -0
  5. package/dist/src/cli/constants.d.ts.map +1 -0
  6. package/dist/src/cli/constants.js +25 -0
  7. package/dist/src/cli/constants.js.map +1 -0
  8. package/dist/src/cli/index.d.ts +3 -0
  9. package/dist/src/cli/index.d.ts.map +1 -0
  10. package/dist/src/cli/index.js +25 -0
  11. package/dist/src/cli/index.js.map +1 -0
  12. package/dist/src/cli/setup.d.ts +6 -0
  13. package/dist/src/cli/setup.d.ts.map +1 -0
  14. package/dist/src/cli/setup.js +334 -0
  15. package/dist/src/cli/setup.js.map +1 -0
  16. package/dist/src/cli/types.d.ts +38 -0
  17. package/dist/src/cli/types.d.ts.map +1 -0
  18. package/dist/src/cli/types.js +5 -0
  19. package/dist/src/cli/types.js.map +1 -0
  20. package/dist/src/cli/utils/config.d.ts +19 -0
  21. package/dist/src/cli/utils/config.d.ts.map +1 -0
  22. package/dist/src/cli/utils/config.js +86 -0
  23. package/dist/src/cli/utils/config.js.map +1 -0
  24. package/dist/src/cli/utils/detect.d.ts +14 -0
  25. package/dist/src/cli/utils/detect.d.ts.map +1 -0
  26. package/dist/src/cli/utils/detect.js +57 -0
  27. package/dist/src/cli/utils/detect.js.map +1 -0
  28. package/dist/src/cli/utils/env.d.ts +10 -0
  29. package/dist/src/cli/utils/env.d.ts.map +1 -0
  30. package/dist/src/cli/utils/env.js +54 -0
  31. package/dist/src/cli/utils/env.js.map +1 -0
  32. package/dist/src/cli/utils/validation.d.ts +17 -0
  33. package/dist/src/cli/utils/validation.d.ts.map +1 -0
  34. package/dist/src/cli/utils/validation.js +77 -0
  35. package/dist/src/cli/utils/validation.js.map +1 -0
  36. package/dist/src/index.d.ts +1 -0
  37. package/dist/src/index.d.ts.map +1 -1
  38. package/dist/src/index.js +13 -11
  39. package/dist/src/index.js.map +1 -1
  40. package/dist/src/lib/storage/export.d.ts +2 -2
  41. package/dist/src/lib/storage/export.d.ts.map +1 -1
  42. package/dist/src/lib/storage/export.js +39 -39
  43. package/dist/src/lib/storage/export.js.map +1 -1
  44. package/dist/src/tools/capture-footprint.js +1 -1
  45. package/dist/src/tools/capture-footprint.js.map +1 -1
  46. package/dist/src/tools/delete-footprints.d.ts +2 -2
  47. package/dist/src/tools/delete-footprints.d.ts.map +1 -1
  48. package/dist/src/tools/delete-footprints.js +4 -4
  49. package/dist/src/tools/delete-footprints.js.map +1 -1
  50. package/dist/src/tools/export-footprints.d.ts +4 -4
  51. package/dist/src/tools/export-footprints.d.ts.map +1 -1
  52. package/dist/src/tools/export-footprints.js +6 -6
  53. package/dist/src/tools/export-footprints.js.map +1 -1
  54. package/dist/src/tools/get-footprint.js +19 -19
  55. package/dist/src/tools/get-footprint.js.map +1 -1
  56. package/dist/src/tools/list-footprints.d.ts +2 -2
  57. package/dist/src/tools/list-footprints.js +11 -11
  58. package/dist/src/tools/list-footprints.js.map +1 -1
  59. package/dist/src/tools/search-footprints.d.ts +2 -2
  60. package/dist/src/tools/search-footprints.js +11 -11
  61. package/dist/src/tools/search-footprints.js.map +1 -1
  62. package/dist/src/tools/suggest-capture.js +1 -1
  63. package/dist/src/tools/suggest-capture.js.map +1 -1
  64. package/dist/src/tools/verify-footprint.js +11 -11
  65. package/dist/src/tools/verify-footprint.js.map +1 -1
  66. package/dist/src/ui/register.js +2 -2
  67. package/dist/src/ui/register.js.map +1 -1
  68. package/dist/ui/dashboard.html +49 -49
  69. package/dist/ui/detail.html +9 -9
  70. package/dist/ui/export.html +17 -17
  71. package/package.json +13 -6
  72. package/dist/tests/error-handling.test.d.ts +0 -2
  73. package/dist/tests/error-handling.test.d.ts.map +0 -1
  74. package/dist/tests/error-handling.test.js +0 -114
  75. package/dist/tests/error-handling.test.js.map +0 -1
  76. package/dist/tests/fixtures.d.ts +0 -87
  77. package/dist/tests/fixtures.d.ts.map +0 -1
  78. package/dist/tests/fixtures.js +0 -130
  79. package/dist/tests/fixtures.js.map +0 -1
  80. package/dist/tests/integration.test.d.ts +0 -2
  81. package/dist/tests/integration.test.d.ts.map +0 -1
  82. package/dist/tests/integration.test.js +0 -115
  83. package/dist/tests/integration.test.js.map +0 -1
  84. package/dist/tests/resources.test.d.ts +0 -2
  85. package/dist/tests/resources.test.d.ts.map +0 -1
  86. package/dist/tests/resources.test.js +0 -73
  87. package/dist/tests/resources.test.js.map +0 -1
  88. package/dist/tests/setup.d.ts +0 -8
  89. package/dist/tests/setup.d.ts.map +0 -1
  90. package/dist/tests/setup.js +0 -8
  91. package/dist/tests/setup.js.map +0 -1
  92. package/dist/tests/tools.test.d.ts +0 -2
  93. package/dist/tests/tools.test.d.ts.map +0 -1
  94. package/dist/tests/tools.test.js +0 -224
  95. package/dist/tests/tools.test.js.map +0 -1
  96. package/dist/ui-tmp/ui/export.html +0 -409
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,55 +3,43 @@
3
3
  [![npm version](https://img.shields.io/npm/v/@pcircle/footprint)](https://www.npmjs.com/package/@pcircle/footprint)
4
4
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
5
5
 
6
- Model Context Protocol (MCP) server that automatically captures and encrypts LLM conversations as timestamped footprints.
6
+ Model Context Protocol (MCP) server that automatically captures and encrypts LLM conversations as legal evidence.
7
7
 
8
8
  ## Why Footprint?
9
9
 
10
- - **Prove IP Ownership** - Timestamped footprints of LLM-assisted work
10
+ - **Prove IP Ownership** - Timestamped evidence 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
14
14
 
15
- ## Installation
15
+ ## Quick Start
16
+
17
+ **One command to set up everything:**
16
18
 
17
19
  ```bash
18
- npm install -g @pcircle/footprint
20
+ npx @pcircle/footprint setup
19
21
  ```
20
22
 
21
- ## Quick Start
23
+ The interactive wizard will:
22
24
 
23
- 1. **Set environment variables:**
25
+ - Auto-detect your system (OS, shell, Claude Desktop config)
26
+ - ✅ Validate your encryption password strength
27
+ - ✅ Configure Claude Desktop automatically
28
+ - ✅ Set up environment variables in your shell
29
+ - ✅ Create backup of existing config
24
30
 
25
- ```bash
26
- export FOOTPRINT_DB_PATH="./footprints.db"
27
- export FOOTPRINT_PASSWORD="your-secure-password"
28
- ```
31
+ **That's it!** Restart Claude Desktop and your conversations are being captured.
29
32
 
30
- 2. **Configure Claude Desktop** (`~/Library/Application Support/Claude/claude_desktop_config.json`):
31
-
32
- ```json
33
- {
34
- "mcpServers": {
35
- "footprint": {
36
- "command": "npx",
37
- "args": ["footprint"],
38
- "env": {
39
- "FOOTPRINT_DB_PATH": "/path/to/footprints.db",
40
- "FOOTPRINT_PASSWORD": "your-password"
41
- }
42
- }
43
- }
44
- }
45
- ```
33
+ ### Advanced Installation
46
34
 
47
- 3. **Restart Claude Desktop** - Footprint collection starts automatically
35
+ For manual setup or custom configurations, see the [full installation guide](https://github.com/PCIRCLE-AI/footprint-mcp#installation).
48
36
 
49
37
  ## Features
50
38
 
51
39
  - 🔐 XChaCha20-Poly1305 encryption
52
40
  - 🕒 Git commit timestamps
53
41
  - 📦 Tamper-proof ZIP exports
54
- - 🔍 Search and retrieve footprints
42
+ - 🔍 Search and retrieve evidence
55
43
  - 🤖 AI-powered capture suggestions
56
44
  - ✅ Integrity verification
57
45
  - 🏷️ Tag management
@@ -100,7 +88,7 @@ src/
100
88
 
101
89
  #### capture-footprint
102
90
 
103
- Captures and encrypts an LLM conversation as a footprint.
91
+ Captures and encrypts an LLM conversation as evidence.
104
92
 
105
93
  **Parameters:**
106
94
 
@@ -112,7 +100,7 @@ Captures and encrypts an LLM conversation as a footprint.
112
100
 
113
101
  #### list-footprints
114
102
 
115
- Lists all captured footprints with pagination support.
103
+ Lists all captured evidence with pagination support.
116
104
 
117
105
  **Parameters:**
118
106
 
@@ -121,26 +109,26 @@ Lists all captured footprints with pagination support.
121
109
 
122
110
  #### get-footprint
123
111
 
124
- Retrieves and decrypts a specific footprint by ID.
112
+ Retrieves and decrypts specific evidence by ID.
125
113
 
126
114
  **Parameters:**
127
115
 
128
- - `id` - Footprint ID
116
+ - `id` - Evidence ID
129
117
 
130
118
  #### export-footprints
131
119
 
132
- Exports footprints to tamper-proof encrypted ZIP archive.
120
+ Exports evidence to tamper-proof encrypted ZIP archive.
133
121
 
134
122
  **Parameters:**
135
123
 
136
- - `ids` - Array of footprint IDs to export
124
+ - `evidenceIds` - Array of evidence IDs to export
137
125
  - `includeGitInfo` (optional) - Include git metadata
138
126
 
139
127
  ### Search & Discovery
140
128
 
141
129
  #### search-footprints
142
130
 
143
- Search and filter footprints by query, tags, or date range.
131
+ Search and filter evidence by query, tags, or date range.
144
132
 
145
133
  **Parameters:**
146
134
 
@@ -153,7 +141,7 @@ Search and filter footprints by query, tags, or date range.
153
141
 
154
142
  #### suggest-capture
155
143
 
156
- Analyze conversation content and suggest whether to capture it as a footprint.
144
+ Analyze conversation content and suggest whether to capture it as evidence.
157
145
 
158
146
  **Parameters:**
159
147
 
@@ -171,31 +159,31 @@ Analyze conversation content and suggest whether to capture it as a footprint.
171
159
 
172
160
  #### verify-footprint
173
161
 
174
- Verify the integrity and authenticity of a captured footprint.
162
+ Verify the integrity and authenticity of captured evidence.
175
163
 
176
164
  **Parameters:**
177
165
 
178
- - `id` - Footprint ID to verify
166
+ - `id` - Evidence ID to verify
179
167
 
180
168
  **Returns:**
181
169
 
182
170
  - `verified` - Overall verification status
183
171
  - `checks` - Detailed checks (content integrity, git timestamp, encryption)
184
- - `legalReadiness` - Whether footprint meets legal standards
172
+ - `legalReadiness` - Whether evidence meets legal standards
185
173
 
186
174
  ### Management
187
175
 
188
176
  #### delete-footprints
189
177
 
190
- Delete footprint records permanently.
178
+ Delete evidence records permanently.
191
179
 
192
180
  **Parameters:**
193
181
 
194
- - `ids` - Array of footprint IDs to delete
182
+ - `evidenceIds` - Array of evidence IDs to delete
195
183
 
196
184
  #### rename-tag
197
185
 
198
- Rename a tag across all footprints.
186
+ Rename a tag across all evidence.
199
187
 
200
188
  **Parameters:**
201
189
 
@@ -204,7 +192,7 @@ Rename a tag across all footprints.
204
192
 
205
193
  #### remove-tag
206
194
 
207
- Remove a tag from all footprints.
195
+ Remove a tag from all evidence.
208
196
 
209
197
  **Parameters:**
210
198
 
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.2.1)
5
+ **Package:** `@pcircle/footprint` (v1.1.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 a footprint?"
29
+ └─ "Would you like me to save this conversation as evidence?"
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 footprint.
56
+ Save a conversation as encrypted evidence.
57
57
 
58
58
  **Input Parameters:**
59
59
  ```json
@@ -68,22 +68,22 @@ Save a conversation as encrypted footprint.
68
68
 
69
69
  **Expected Output (text):**
70
70
  ```
71
- Footprint captured successfully
72
- - Footprint ID: `550e8400-e29b-41d4-a716-446655440000`
71
+ Evidence captured successfully
72
+ - Evidence 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 Footprint ID safe for future reference.
79
+ Keep this Evidence ID safe for future reference.
80
80
  ```
81
81
 
82
82
  **Expected Output (structuredContent):**
83
83
  ```json
84
84
  {
85
- "type": "footprint_created",
86
- "footprintId": "550e8400-e29b-41d4-a716-446655440000",
85
+ "type": "evidence_created",
86
+ "evidenceId": "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 Footprint ID safe for future reference.
94
94
  ```
95
95
 
96
96
  ### 2. `list-footprints`
97
- List all captured footprints (metadata only).
97
+ List all captured evidence (metadata only).
98
98
 
99
99
  **Input Parameters:**
100
100
  ```json
@@ -106,7 +106,7 @@ List all captured footprints (metadata only).
106
106
 
107
107
  **Expected Output (text):**
108
108
  ```
109
- 📋 Footprint Archive (10 most recent)
109
+ 📋 Evidence 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 footprints (metadata only).
116
116
  **Expected Output (structuredContent):**
117
117
  ```json
118
118
  {
119
- "type": "footprint_list",
119
+ "type": "evidence_list",
120
120
  "total": 25,
121
- "footprints": [
121
+ "evidences": [
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 footprints (metadata only).
131
131
  ```
132
132
 
133
133
  ### 3. `get-footprint`
134
- Retrieve and decrypt a specific footprint.
134
+ Retrieve and decrypt specific evidence.
135
135
 
136
136
  **Input Parameters:**
137
137
  ```json
@@ -142,7 +142,7 @@ Retrieve and decrypt a specific footprint.
142
142
 
143
143
  **Expected Output (text):**
144
144
  ```
145
- 📄 Footprint Retrieved
145
+ 📄 Evidence 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 footprints by content or tags.
157
+ Find evidence by content or tags.
158
158
 
159
159
  **Input Parameters:**
160
160
  ```json
@@ -166,7 +166,7 @@ Find footprints by content or tags.
166
166
  ```
167
167
 
168
168
  ### 5. `export-footprints`
169
- Export footprints as encrypted archive.
169
+ Export evidence as encrypted archive.
170
170
 
171
171
  **Input Parameters:**
172
172
  ```json
@@ -179,8 +179,8 @@ Export footprints as encrypted archive.
179
179
  **Expected Output (structuredContent):**
180
180
  ```json
181
181
  {
182
- "type": "footprint_export",
183
- "filename": "footprint-550e8400-export.zip",
182
+ "type": "evidence_export",
183
+ "filename": "evidence-550e8400-export.zip",
184
184
  "base64Data": "UEsDBBQAAAAIAL...",
185
185
  "size": 2048,
186
186
  "checksum": "sha256:a1b2c3d4..."
@@ -188,7 +188,7 @@ Export footprints as encrypted archive.
188
188
  ```
189
189
 
190
190
  ### 6. `verify-footprint`
191
- Verify footprint integrity (checksum + Git timestamp).
191
+ Verify evidence integrity (checksum + Git timestamp).
192
192
 
193
193
  **Input Parameters:**
194
194
  ```json
@@ -199,7 +199,7 @@ Verify footprint integrity (checksum + Git timestamp).
199
199
 
200
200
  **Expected Output (text):**
201
201
  ```
202
- 🔐 Footprint Verification Report
202
+ 🔐 Evidence 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 footprint 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 footprints
256
- - **search-footprints**: Find specific content across footprints
257
- - **get-footprint**: Retrieve full content of a specific footprint
255
+ - **list-footprints**: Browse/overview existing evidence
256
+ - **search-footprints**: Find specific content across evidence
257
+ - **get-footprint**: Retrieve full content of specific evidence
258
258
  - **export-footprints**: Legal/audit export needs
259
- - **verify-footprint**: Verify footprint integrity and checksums
259
+ - **verify-footprint**: Verify evidence integrity and checksums
260
260
 
261
261
  ## Token-Efficient Agent Responses
262
262
 
263
- **After capturing a footprint (keep it brief):**
263
+ **After capturing evidence (keep it brief):**
264
264
  ```
265
- Footprint saved as `{conversationId}`
265
+ Evidence 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 content (contains {trigger}). Save it as a footprint?
272
+ 💡 This looks like valuable evidence (contains {trigger}). Save it?
273
273
  ```
274
274
 
275
275
  **When declining to capture:**
276
276
  ```
277
- ℹ️ Skipping footprint capture (casual conversation)
277
+ ℹ️ Skipping evidence 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
- | "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 |
291
+ | "Evidence 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 evidence |
292
+ | "Decryption failed" | Password changed/wrong | 1. Verify current password matches<br>2. Check if evidence 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 footprint directory<br>2. Set git user.name/user.email<br>3. Make initial commit |
294
+ | "Git repository error" | Git not initialized | 1. Initialize git in evidence 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 Footprint ID
314
+ 4. Report success with Evidence 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 content (contains patent decision). Save it as a footprint?"
323
+ 2. 💡 Suggest: "This looks like valuable evidence (contains patent decision). Save it?"
324
324
  3. ✅ If user agrees, capture with tags: "patent,algorithm,decision,ip"
325
325
  ```
326
326
 
327
- ### 3. Footprint Retrieval
327
+ ### 3. Evidence Retrieval
328
328
  ```
329
329
  User: "Find the conversation about OAuth implementation"
330
330
 
331
331
  Agent:
332
- 1. 🔍 Search: list-footprints or search-footprints with "OAuth"
332
+ 1. 🔍 Search: list-footprints or search-evidence 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 footprints for filing"
339
+ User: "Export the patent evidence for filing"
340
340
 
341
- Agent:
342
- 1. 🔍 Help identify relevant footprints (search by "patent" tag)
343
- 2. 📦 Export each footprint as encrypted ZIP
341
+ Agent:
342
+ 1. 🔍 Help identify relevant evidence (search by "patent" tag)
343
+ 2. 📦 Export each evidence 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
- - **Footprint Chain**: Each capture creates immutable Git commit
354
+ - **Evidence 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 footprint with `export-footprints`
358
+ 1. Export evidence with `export-evidence`
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/footprints.db",
392
+ "FOOTPRINT_DB_PATH": "/path/to/evidence.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: `./footprints.db` in current directory)
402
+ - `FOOTPRINT_DB_PATH` (optional): Path to SQLite database (default: `./evidence.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 footprint commit
409
- - **Search speed**: Sub-second for <1000 footprint records
408
+ - **Git overhead**: ~100 bytes per evidence commit
409
+ - **Search speed**: Sub-second for <1000 evidence 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.
@@ -0,0 +1,20 @@
1
+ export declare const DEFAULT_DATA_DIR: string;
2
+ export declare const CLAUDE_CONFIG_PATHS: {
3
+ darwin: string;
4
+ linux: string;
5
+ win32: string;
6
+ };
7
+ export declare const SHELL_RC_FILES: {
8
+ bash: string;
9
+ zsh: string;
10
+ fish: string;
11
+ };
12
+ export declare const MIN_PASSWORD_SCORE = 2;
13
+ export declare const MIN_PASSWORD_LENGTH = 12;
14
+ export declare const COLORS: {
15
+ success: string;
16
+ error: string;
17
+ warning: string;
18
+ info: string;
19
+ };
20
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/cli/constants.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,gBAAgB,QAAwC,CAAC;AAEtE,eAAO,MAAM,mBAAmB;;;;CAU/B,CAAC;AAEF,eAAO,MAAM,cAAc;;;;CAI1B,CAAC;AAEF,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAEtC,eAAO,MAAM,MAAM;;;;;CAKlB,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * CLI constants for setup process
3
+ */
4
+ import * as os from "os";
5
+ import * as path from "path";
6
+ export const DEFAULT_DATA_DIR = path.join(os.homedir(), ".footprint");
7
+ export const CLAUDE_CONFIG_PATHS = {
8
+ darwin: path.join(os.homedir(), "Library/Application Support/Claude/claude_desktop_config.json"),
9
+ linux: path.join(os.homedir(), ".config/Claude/claude_desktop_config.json"),
10
+ win32: path.join(os.homedir(), "AppData/Roaming/Claude/claude_desktop_config.json"),
11
+ };
12
+ export const SHELL_RC_FILES = {
13
+ bash: ".bashrc",
14
+ zsh: ".zshrc",
15
+ fish: ".config/fish/config.fish",
16
+ };
17
+ export const MIN_PASSWORD_SCORE = 2; // zxcvbn score (0-4)
18
+ export const MIN_PASSWORD_LENGTH = 12;
19
+ export const COLORS = {
20
+ success: "#00FF00",
21
+ error: "#FF0000",
22
+ warning: "#FFA500",
23
+ info: "#00BFFF",
24
+ };
25
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/cli/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;AAEtE,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,MAAM,EAAE,IAAI,CAAC,IAAI,CACf,EAAE,CAAC,OAAO,EAAE,EACZ,+DAA+D,CAChE;IACD,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,2CAA2C,CAAC;IAC3E,KAAK,EAAE,IAAI,CAAC,IAAI,CACd,EAAE,CAAC,OAAO,EAAE,EACZ,mDAAmD,CACpD;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,IAAI,EAAE,SAAS;IACf,GAAG,EAAE,QAAQ;IACb,IAAI,EAAE,0BAA0B;CACjC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,CAAC,qBAAqB;AAC1D,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAEtC,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,SAAS;IAChB,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,SAAS;CAChB,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,25 @@
1
+ #!/usr/bin/env node
2
+ /* global console, process */
3
+ import { runSetup } from "./setup.js";
4
+ const args = process.argv.slice(2);
5
+ const command = args[0];
6
+ async function main() {
7
+ switch (command) {
8
+ case "setup": {
9
+ await runSetup();
10
+ break;
11
+ }
12
+ default: {
13
+ // No command or unknown command - start MCP server
14
+ // Import and run server
15
+ const { main: startServer } = await import("../index.js");
16
+ await startServer();
17
+ break;
18
+ }
19
+ }
20
+ }
21
+ main().catch((error) => {
22
+ console.error("Error:", error);
23
+ process.exit(1);
24
+ });
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/index.ts"],"names":[],"mappings":";AACA,6BAA6B;AAE7B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAExB,KAAK,UAAU,IAAI;IACjB,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,QAAQ,EAAE,CAAC;YACjB,MAAM;QACR,CAAC;QAED,OAAO,CAAC,CAAC,CAAC;YACR,mDAAmD;YACnD,wBAAwB;YACxB,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;YAC1D,MAAM,WAAW,EAAE,CAAC;YACpB,MAAM;QACR,CAAC;IACH,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Main setup flow with transaction-like rollback on failure
4
+ */
5
+ export declare function runSetup(): Promise<void>;
6
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/cli/setup.ts"],"names":[],"mappings":";AAuXA;;GAEG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAyE9C"}