footprinter-cli 1.0.0__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.
Files changed (134) hide show
  1. footprinter/__init__.py +8 -0
  2. footprinter/access.py +444 -0
  3. footprinter/api/__init__.py +1 -0
  4. footprinter/api/db.py +61 -0
  5. footprinter/api/entities.py +250 -0
  6. footprinter/api/search.py +47 -0
  7. footprinter/api/semantic.py +33 -0
  8. footprinter/api/server.py +66 -0
  9. footprinter/api/status.py +15 -0
  10. footprinter/bundled/__init__.py +0 -0
  11. footprinter/bundled/config.example.yaml +161 -0
  12. footprinter/bundled/patterns/context_patterns.yaml +18 -0
  13. footprinter/bundled/patterns/extensions.yaml +283 -0
  14. footprinter/bundled/patterns/filename_patterns.yaml +61 -0
  15. footprinter/bundled/patterns/mime_mappings.yaml +68 -0
  16. footprinter/bundled/patterns/salesforce_rules.yaml +84 -0
  17. footprinter/bundled/patterns/security_patterns.yaml +27 -0
  18. footprinter/cli/__init__.py +128 -0
  19. footprinter/cli/__main__.py +6 -0
  20. footprinter/cli/_common.py +332 -0
  21. footprinter/cli/_policy_helpers.py +646 -0
  22. footprinter/cli/_prompt.py +220 -0
  23. footprinter/cli/api_cmd.py +32 -0
  24. footprinter/cli/connect.py +591 -0
  25. footprinter/cli/data.py +879 -0
  26. footprinter/cli/delete.py +128 -0
  27. footprinter/cli/ingest.py +579 -0
  28. footprinter/cli/mcp_cmd.py +750 -0
  29. footprinter/cli/mcp_setup.py +306 -0
  30. footprinter/cli/search.py +393 -0
  31. footprinter/cli/search_cmd.py +69 -0
  32. footprinter/cli/setup.py +1836 -0
  33. footprinter/cli/status.py +729 -0
  34. footprinter/cli/status_cmd.py +104 -0
  35. footprinter/cli/upsert.py +794 -0
  36. footprinter/cli/vectorize_cmd.py +215 -0
  37. footprinter/cli/view.py +322 -0
  38. footprinter/connectors/__init__.py +171 -0
  39. footprinter/connectors/config_utils.py +141 -0
  40. footprinter/db/__init__.py +37 -0
  41. footprinter/db/browser.py +198 -0
  42. footprinter/db/chats.py +610 -0
  43. footprinter/db/clients.py +307 -0
  44. footprinter/db/emails.py +279 -0
  45. footprinter/db/files.py +741 -0
  46. footprinter/db/folders.py +659 -0
  47. footprinter/db/messages.py +192 -0
  48. footprinter/db/policies.py +151 -0
  49. footprinter/db/projects.py +673 -0
  50. footprinter/db/search.py +573 -0
  51. footprinter/db/sql_utils.py +168 -0
  52. footprinter/db/status.py +320 -0
  53. footprinter/db/uploads.py +70 -0
  54. footprinter/ingest/__init__.py +0 -0
  55. footprinter/ingest/adapters/__init__.py +33 -0
  56. footprinter/ingest/adapters/browser.py +54 -0
  57. footprinter/ingest/adapters/chat.py +57 -0
  58. footprinter/ingest/adapters/ingest.py +146 -0
  59. footprinter/ingest/adapters/local_files.py +68 -0
  60. footprinter/ingest/adapters/local_folders.py +52 -0
  61. footprinter/ingest/adapters/protocol.py +174 -0
  62. footprinter/ingest/browser_indexer.py +216 -0
  63. footprinter/ingest/chat_dedup.py +156 -0
  64. footprinter/ingest/chat_indexer.py +515 -0
  65. footprinter/ingest/chat_parsers/__init__.py +8 -0
  66. footprinter/ingest/chat_parsers/chatgpt_parser.py +229 -0
  67. footprinter/ingest/chat_parsers/claude_parser.py +161 -0
  68. footprinter/ingest/cli.py +827 -0
  69. footprinter/ingest/content_extractors.py +117 -0
  70. footprinter/ingest/database.py +36 -0
  71. footprinter/ingest/db/__init__.py +1 -0
  72. footprinter/ingest/db/connector_schema.py +47 -0
  73. footprinter/ingest/db/migration.py +328 -0
  74. footprinter/ingest/db/schema.py +1043 -0
  75. footprinter/ingest/db/security.py +6 -0
  76. footprinter/ingest/file_indexer.py +261 -0
  77. footprinter/ingest/file_scanner.py +277 -0
  78. footprinter/ingest/folder_indexer.py +226 -0
  79. footprinter/ingest/full_content_extractor.py +321 -0
  80. footprinter/ingest/orchestrator.py +125 -0
  81. footprinter/ingest/pipe_runner.py +217 -0
  82. footprinter/ingest/processing.py +165 -0
  83. footprinter/ingest/registry.py +201 -0
  84. footprinter/ingest/run_record.py +91 -0
  85. footprinter/ingest/status.py +346 -0
  86. footprinter/mcp/__init__.py +0 -0
  87. footprinter/mcp/__main__.py +5 -0
  88. footprinter/mcp/db.py +57 -0
  89. footprinter/mcp/errors.py +102 -0
  90. footprinter/mcp/extraction.py +226 -0
  91. footprinter/mcp/server.py +39 -0
  92. footprinter/mcp/tools/__init__.py +0 -0
  93. footprinter/mcp/tools/navigation.py +70 -0
  94. footprinter/mcp/tools/read.py +75 -0
  95. footprinter/mcp/tools/search.py +158 -0
  96. footprinter/mcp/tools/semantic.py +79 -0
  97. footprinter/mcp/tools/status.py +15 -0
  98. footprinter/paths.py +91 -0
  99. footprinter/permissions.py +1160 -0
  100. footprinter/semantic/__init__.py +13 -0
  101. footprinter/semantic/chunking.py +52 -0
  102. footprinter/semantic/embeddings.py +23 -0
  103. footprinter/semantic/hybrid_search.py +273 -0
  104. footprinter/semantic/vector_store.py +471 -0
  105. footprinter/services/__init__.py +49 -0
  106. footprinter/services/access_service.py +342 -0
  107. footprinter/services/chat_service.py +85 -0
  108. footprinter/services/client_service.py +267 -0
  109. footprinter/services/content_service.py +181 -0
  110. footprinter/services/email_service.py +89 -0
  111. footprinter/services/file_service.py +83 -0
  112. footprinter/services/folder_service.py +122 -0
  113. footprinter/services/includes.py +19 -0
  114. footprinter/services/ingest_service.py +231 -0
  115. footprinter/services/project_service.py +262 -0
  116. footprinter/services/roles.py +25 -0
  117. footprinter/services/search_service.py +177 -0
  118. footprinter/services/semantic_service.py +360 -0
  119. footprinter/services/status_service.py +18 -0
  120. footprinter/services/visit_service.py +65 -0
  121. footprinter/source_registry.py +194 -0
  122. footprinter/utils/__init__.py +7 -0
  123. footprinter/utils/hash_utils.py +59 -0
  124. footprinter/utils/logging_config.py +68 -0
  125. footprinter/utils/mime.py +30 -0
  126. footprinter/utils/text.py +6 -0
  127. footprinter/utils/time.py +11 -0
  128. footprinter/visibility.py +1272 -0
  129. footprinter_cli-1.0.0.dist-info/LICENSE +21 -0
  130. footprinter_cli-1.0.0.dist-info/METADATA +229 -0
  131. footprinter_cli-1.0.0.dist-info/RECORD +134 -0
  132. footprinter_cli-1.0.0.dist-info/WHEEL +5 -0
  133. footprinter_cli-1.0.0.dist-info/entry_points.txt +2 -0
  134. footprinter_cli-1.0.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 SwellCity Group
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,229 @@
1
+ Metadata-Version: 2.2
2
+ Name: footprinter-cli
3
+ Version: 1.0.0
4
+ Summary: A local context layer for your files, browser history, chats, and email — searchable, user-owned, MCP-served.
5
+ Author: SwellCity Group
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/swellcitygroup/footprinter
8
+ Project-URL: Repository, https://github.com/swellcitygroup/footprinter
9
+ Project-URL: Issues, https://github.com/swellcitygroup/footprinter/issues
10
+ Project-URL: Documentation, https://github.com/swellcitygroup/footprinter/blob/main/README.md
11
+ Project-URL: Changelog, https://github.com/swellcitygroup/footprinter/blob/main/CHANGELOG.md
12
+ Keywords: indexer,mcp,metadata,model-context-protocol,file-indexing,sqlite,context-engineering,personal-information-management
13
+ Classifier: Development Status :: 5 - Production/Stable
14
+ Classifier: Environment :: Console
15
+ Classifier: Intended Audience :: Developers
16
+ Classifier: Intended Audience :: End Users/Desktop
17
+ Classifier: Intended Audience :: Science/Research
18
+ Classifier: License :: OSI Approved :: MIT License
19
+ Classifier: Operating System :: MacOS
20
+ Classifier: Operating System :: POSIX :: Linux
21
+ Classifier: Programming Language :: Python :: 3.11
22
+ Classifier: Programming Language :: Python :: 3.12
23
+ Classifier: Topic :: Database
24
+ Classifier: Topic :: Text Processing :: Indexing
25
+ Classifier: Topic :: Scientific/Engineering :: Information Analysis
26
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
27
+ Requires-Python: >=3.11
28
+ Description-Content-Type: text/markdown
29
+ License-File: LICENSE
30
+ Requires-Dist: pyyaml<7.0,>=6.0.1
31
+ Requires-Dist: rich<14.0,>=13.7.0
32
+ Requires-Dist: mcp<2.0,>=1.0.0
33
+ Requires-Dist: fastapi<1.0,>=0.115.0
34
+ Requires-Dist: uvicorn<1.0,>=0.30.0
35
+ Requires-Dist: cryptography<46.0,>=42.0.0
36
+ Provides-Extra: semantic
37
+ Requires-Dist: chromadb<2.0,>=1.4; extra == "semantic"
38
+ Requires-Dist: onnxruntime<2.0,>=1.16.0; extra == "semantic"
39
+ Provides-Extra: parse
40
+ Requires-Dist: pypdf<6.0,>=3.0.0; extra == "parse"
41
+ Requires-Dist: python-docx<2.0,>=1.1.0; extra == "parse"
42
+ Requires-Dist: openpyxl<4.0,>=3.1.0; extra == "parse"
43
+ Requires-Dist: python-pptx<2.0,>=0.6.21; extra == "parse"
44
+ Provides-Extra: full
45
+ Requires-Dist: footprinter-cli[semantic]; extra == "full"
46
+ Requires-Dist: footprinter-cli[parse]; extra == "full"
47
+ Provides-Extra: dev
48
+ Requires-Dist: pytest<9.0,>=8.0.0; extra == "dev"
49
+ Requires-Dist: pytest-cov<6.0,>=4.1.0; extra == "dev"
50
+ Requires-Dist: ruff<1.0,>=0.1.0; extra == "dev"
51
+ Requires-Dist: httpx<1.0,>=0.27.0; extra == "dev"
52
+
53
+ # Footprinter
54
+
55
+ [![Tests](https://github.com/swellcitygroup/footprinter/actions/workflows/test.yml/badge.svg)](https://github.com/swellcitygroup/footprinter/actions/workflows/test.yml)
56
+
57
+ **A local context layer for your files, browser history, chats, and email — searchable, user-owned, and served to AI agents through [MCP](https://modelcontextprotocol.io/).**
58
+
59
+ Your work lives across a filesystem, a browser, an inbox, a chat history, and whatever other tools you reach for. Footprinter indexes those sources into a single local store, organizes them into the projects and groupings *you* define, and serves the result to AI agents through a governed access layer. You control what the agent can see. Everything stays on your machine.
60
+
61
+ ## Install
62
+
63
+ ```bash
64
+ pip install footprinter-cli
65
+ ```
66
+
67
+ The base install includes the indexing pipeline, CLI, MCP server, HTTP API, and token encryption. Optional extras add more capabilities:
68
+
69
+ ```bash
70
+ pip install footprinter-cli[full] # All optional extras (semantic + parse)
71
+ pip install footprinter-cli[semantic] # Semantic search (ChromaDB + ONNX embeddings)
72
+ pip install footprinter-cli[parse] # PDF, Word, Excel, PowerPoint content extraction
73
+ ```
74
+
75
+ ## Quick Start
76
+
77
+ ```bash
78
+ fp setup # Configure sources (interactive wizard)
79
+ fp ingest # Index your files
80
+ fp status # See what's indexed
81
+ fp search "meeting notes" # Find things
82
+ ```
83
+
84
+ **macOS note:** Browser history indexing requires Full Disk Access for your terminal app (System Settings > Privacy & Security > Full Disk Access).
85
+
86
+ ## Connect to Claude Desktop
87
+
88
+ Footprinter includes an MCP server that gives Claude Desktop (or any MCP client) structured access to your indexed data:
89
+
90
+ ```bash
91
+ fp setup mcp # Configure MCP for Claude Desktop
92
+ ```
93
+
94
+ Once configured, Claude can search your files, browse projects, and find related conversations — through natural language.
95
+
96
+ ## What It Indexes
97
+
98
+ | Source | What's captured |
99
+ |--------|----------------|
100
+ | **Local files** | Path, type, size, timestamps, content hash |
101
+ | **Browser history** | Safari and Chrome — URLs, titles, visit times |
102
+ | **Chat exports** | Claude and ChatGPT conversation exports |
103
+ | **Email** | Subject, sender, recipients, body, timestamps — ingested via [connector plugins](#connectors) |
104
+ | **Documents** | PDF, Word, Excel, PowerPoint content (with `[parse]` extra) |
105
+ | **Semantic embeddings** | Conceptual similarity across all sources (with `[semantic]` extra) |
106
+
107
+ Additional sources are available through [connector plugins](#connectors).
108
+
109
+ ## CLI Commands
110
+
111
+ All commands use the `fp` entry point.
112
+
113
+ | Command | Purpose |
114
+ |---------|---------|
115
+ | `fp setup` | Configure sources and integrations |
116
+ | `fp ingest` | Run the indexing pipeline |
117
+ | `fp status` | System health and data counts |
118
+ | `fp search` | Search across all indexed sources |
119
+ | `fp connect` | Manage optional integrations |
120
+ | `fp mcp` | MCP server and access policies |
121
+ | `fp api` | Start the HTTP API server |
122
+ | `fp view` | Browse indexed data (files, folders, projects, clients, chats, emails, visits) |
123
+ | `fp upsert` | Create or update records and assign relationships |
124
+ | `fp data` | Export data, generate templates, or import metadata corrections |
125
+ | `fp delete` | Soft-delete a record |
126
+ | `fp vectorize` | Manage per-record vectorization control |
127
+
128
+ Run `fp <command> --help` for full usage.
129
+
130
+ ## Connectors
131
+
132
+ Connector plugins add external data sources like email, cloud storage, and third-party services. They install alongside Footprinter and register automatically:
133
+
134
+ ```bash
135
+ pip install footprinter-<name>
136
+ ```
137
+
138
+ First-party and community connectors are in development — check the repository for updates.
139
+
140
+ Use `fp connect list` to see available connectors and their status.
141
+
142
+ ## Architecture
143
+
144
+ Single-process CLI with optional MCP server. SQLite database. No containers, no cloud, no accounts.
145
+
146
+ Sources are scanned into SQLite with bidirectional links connecting local files to remote backups via content hash matching. Embeddings are generated at ingest time for semantic search. The MCP server exposes indexed data with two-layer access control (visibility + permissions) — you decide what agents can see.
147
+
148
+ ## Optional Extras
149
+
150
+ | Extra | What it adds |
151
+ |-------|-------------|
152
+ | `[semantic]` | Semantic search via ChromaDB + ONNX embeddings |
153
+ | `[parse]` | PDF, Word, Excel, PowerPoint content extraction |
154
+ | `[full]` | All optional extras (semantic + parse) |
155
+
156
+ > **Privacy note:** The `[semantic]` extra installs ChromaDB, which bundles PostHog analytics.
157
+ > ChromaDB collects anonymous usage telemetry by default. Set `ANONYMIZED_TELEMETRY=False`
158
+ > in your environment to disable it. See
159
+ > [ChromaDB telemetry docs](https://docs.trychroma.com/docs/overview/telemetry) for details.
160
+
161
+ ## Requirements
162
+
163
+ - Python 3.11+
164
+ - macOS or Linux
165
+ - Full Disk Access on macOS (for browser history)
166
+
167
+ ## Documentation
168
+
169
+ - [Interfaces](https://github.com/swellcitygroup/footprinter/blob/main/reference/interfaces.md) — CLI commands, MCP tools, Python API
170
+ - [Data Model](https://github.com/swellcitygroup/footprinter/blob/main/reference/data-model.md) — database schema
171
+ - [Pipeline](https://github.com/swellcitygroup/footprinter/blob/main/reference/pipeline.md) — indexing stages and configuration
172
+ - [Access Control](https://github.com/swellcitygroup/footprinter/blob/main/reference/mcp-access-control.md) — MCP security model
173
+
174
+ ## Contributing
175
+
176
+ Bug fixes, documentation, and tests welcome. For new features or architectural changes, [open an issue](https://github.com/swellcitygroup/footprinter/issues) first to discuss the approach.
177
+
178
+ Connector plugins use an internal API that isn't stable yet — we're not accepting connector contributions at this time.
179
+
180
+ ### Development setup
181
+
182
+ ```bash
183
+ git clone https://github.com/swellcitygroup/footprinter.git
184
+ cd footprinter
185
+ python3 -m venv venv
186
+ ./venv/bin/pip install -e ".[dev]"
187
+ ```
188
+
189
+ ### Running tests
190
+
191
+ ```bash
192
+ pytest tests/ -v --tb=short
193
+ ```
194
+
195
+ ### Code style
196
+
197
+ - PEP 8
198
+ - Type hints on function signatures
199
+ - `logging` over `print()` in library code
200
+
201
+ ### Workflow
202
+
203
+ 1. Fork the repository
204
+ 2. Create a feature branch from `main`
205
+ 3. Write tests (TDD preferred — tests before implementation)
206
+ 4. Run the test suite
207
+ 5. Submit a PR targeting `main`
208
+
209
+ Never commit API keys, tokens, or credentials. Report security vulnerabilities privately — see [SECURITY.md](https://github.com/swellcitygroup/footprinter/blob/main/SECURITY.md).
210
+
211
+ ### Pull request expectations
212
+
213
+ - Tests must pass
214
+ - No breaking changes to existing CLI commands
215
+ - Fill out the PR template
216
+ - One logical change per PR
217
+
218
+ All PRs are reviewed by the maintainer. Expect reviews within one week. CI must pass before review begins.
219
+
220
+ No Contributor License Agreement required. By submitting a PR, you agree your contribution is licensed under the project's [MIT License](https://github.com/swellcitygroup/footprinter/blob/main/LICENSE).
221
+
222
+ ## Community
223
+
224
+ - [Code of Conduct](https://github.com/swellcitygroup/footprinter/blob/main/CODE_OF_CONDUCT.md)
225
+ - [Security Policy](https://github.com/swellcitygroup/footprinter/blob/main/SECURITY.md)
226
+
227
+ ## License
228
+
229
+ MIT — see [LICENSE](https://github.com/swellcitygroup/footprinter/blob/main/LICENSE).
@@ -0,0 +1,134 @@
1
+ footprinter/__init__.py,sha256=wGowzzIzhYZ9bEjxM3epPzv0s-1w8UjDLL41Ni4oCM4,240
2
+ footprinter/access.py,sha256=xGbWQNCk9BI6x5v3yWF91VaCsNFvEPL5AWLTL-tvBxI,16292
3
+ footprinter/paths.py,sha256=xuOcXgLYIEzD7G5JMgkXfLQEW7ni9GTz20tXD4tYpfU,2773
4
+ footprinter/permissions.py,sha256=g4NCxfExOoNWA6_9e3__iHb8BSyegqxF1K2nor7I5dg,41277
5
+ footprinter/source_registry.py,sha256=RonpQd0o3YrZ7uvXuE729PUYu4aGIlxTnxPBBDZR2JY,7278
6
+ footprinter/visibility.py,sha256=oLTvO4BswbYJiUHRZ1rSKT6j8VYXpWXrSrqH0AlxmEk,46327
7
+ footprinter/api/__init__.py,sha256=7ul2E7SjUbRRr2GX3Np5sIN3A8D7R4G2uwvWs-aNWHo,74
8
+ footprinter/api/db.py,sha256=_zLrYVL3J9hu1kr7GPVseqgr6rs6FuYrE1PPxM6KeSA,1879
9
+ footprinter/api/entities.py,sha256=b6PdtqpdFqBb3-2onD5nV1e9F_82HKTXYpzuhG76x6o,6909
10
+ footprinter/api/search.py,sha256=JHQN5yE46VIifXJz7a-lN-kvEjH5J8sX44UkP3sEsa4,1318
11
+ footprinter/api/semantic.py,sha256=NVuikhZBlCrrHgAcElnQkxmNe2fR1MxyWDFiUtn0sH0,1032
12
+ footprinter/api/server.py,sha256=wSQoXmiRAsTFVsu5-9-2mYE18Qe3QdVbxOW4J9j6OqI,2013
13
+ footprinter/api/status.py,sha256=wsXlWp64BU3fm-NeJPxuTu8DqXX2q6TGntHd0bPLLNQ,431
14
+ footprinter/bundled/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
+ footprinter/bundled/config.example.yaml,sha256=FoZfJRfbXOOXj0IkAxfyDKllwgfLu7FJ7-QXbuTkqRk,6972
16
+ footprinter/bundled/patterns/context_patterns.yaml,sha256=qqSY8dVk0tg3vYmHZKEj4voA38wbnI2CEeI0D_ySyM0,480
17
+ footprinter/bundled/patterns/extensions.yaml,sha256=56W9dpNez5xBAKhOot572Q2tMJ6jXuxnNEL3E4oAhj4,3603
18
+ footprinter/bundled/patterns/filename_patterns.yaml,sha256=h8mQedcYdXDI5Y2l8lICzvmWlGnUe2dI_5I9rKevWtg,1013
19
+ footprinter/bundled/patterns/mime_mappings.yaml,sha256=8ITW0mxwcAVUaSHJNIj9gHWReec3ksVdZ5VBWoaxTSM,1231
20
+ footprinter/bundled/patterns/salesforce_rules.yaml,sha256=d5U9J5avGHa-79qBhU4Zm-DgAoecP4eQ-SaHERbOMsA,1789
21
+ footprinter/bundled/patterns/security_patterns.yaml,sha256=SjhNiFwSECqZdtq5ISAjvtDf-YDLSeKiB3OymQlLwYI,1394
22
+ footprinter/cli/__init__.py,sha256=5C7P7fXdunWIKNd0uNENYvtFCLcb3KiLpXZIxVMVAqA,4063
23
+ footprinter/cli/__main__.py,sha256=Vcvh_yukjkaFppDoWi94QP1fRZjQl4tcI7SjDMu8y6U,127
24
+ footprinter/cli/_common.py,sha256=T3AXhxIsh64kCusFo2PHZVH6GSyr_rN3ZSmW9xM3e0k,10231
25
+ footprinter/cli/_policy_helpers.py,sha256=d2rV1ZjxY-3rho7VgYYDRx1S_EUlKcj2Uj8kwK74ro8,23673
26
+ footprinter/cli/_prompt.py,sha256=k0wiuqXFT1MKU1T4dL-x7gFoUzoJKG82VcbNxOCRxuA,7135
27
+ footprinter/cli/api_cmd.py,sha256=-pV0P2tvums4HgpTyPzkPgjzAld1XfbW3PPf_MFoCx4,1150
28
+ footprinter/cli/connect.py,sha256=y-1T95BxVDSfTxwoULVpW04Jqocih6qBIoABHPxptTk,21248
29
+ footprinter/cli/data.py,sha256=2MtaSZ8iP20A78HszHNU327EaNFGJyUNr2Ci8-73xjQ,29274
30
+ footprinter/cli/delete.py,sha256=B0xiszPIfd0kfDCy0ZE-AFrax6FVw3QXp-ySNzqqOQ8,3974
31
+ footprinter/cli/ingest.py,sha256=eBv58MAQnqIDp2tQkOJ62rnLL-QcMnb4BV6hBBLras0,20226
32
+ footprinter/cli/mcp_cmd.py,sha256=NA2P5W6s9l4Ad8DpNtdHH_XpK9Uyy6ECJoaQI2Jdow0,27840
33
+ footprinter/cli/mcp_setup.py,sha256=t0G2TaWQ_zh-Q78qXwaKkDeqpn1HG7P8HkC8wE6ZhoI,10081
34
+ footprinter/cli/search.py,sha256=BA05Wkf_UHgcXm_MVm8iVKMkMrgmrZr_iDQcRgSITXw,12744
35
+ footprinter/cli/search_cmd.py,sha256=gVT2zK3Y6XAaQkJO6z6z1-kok6GEvUAvWwFQHPeRCrc,2548
36
+ footprinter/cli/setup.py,sha256=y0ICSaAKl_RnwDQu30a5SSll1o0rU4B6Y3QinjCk9e0,66464
37
+ footprinter/cli/status.py,sha256=Bns5ig7XgAe9ZrBBLHFMzxl7zv9iM73Yi-mRE-b21AA,25007
38
+ footprinter/cli/status_cmd.py,sha256=raklPhpf7Gz9d7CktK686RCooVxyKcFZXvw8BSTb79w,3167
39
+ footprinter/cli/upsert.py,sha256=646KHHUB6YGQ3wXReaS36ZqtNJarQqMiO1Ukm5UUl74,28943
40
+ footprinter/cli/vectorize_cmd.py,sha256=PGVZY28I9U1NugMW2cNHsiKI_Id4oeYGXcXJWEqI4jo,7420
41
+ footprinter/cli/view.py,sha256=yH45-JJ2LSBSDuhpZr9dtpJBfu_SHsJe41m4UJL7RFQ,11080
42
+ footprinter/connectors/__init__.py,sha256=ZrPNG1biT13uVj9Y5chH-HYQ8pwOpOWmfl90rkShEHc,6480
43
+ footprinter/connectors/config_utils.py,sha256=OBU8zxTv147fk6vngtOt561vx9M3Lj1Nqj4E1HrY8YY,4144
44
+ footprinter/db/__init__.py,sha256=OjvklF7KNSczyGWmwNIHTyAXWd8JiyLV4B5WBjotWQw,594
45
+ footprinter/db/browser.py,sha256=Pj9Ia4O1x6I_-2Bflbj3kYOB5-K8qlclEJk80wcIsQ4,6376
46
+ footprinter/db/chats.py,sha256=LcZsMSwVB5PSq3tWAtsJO8Q-di13e6LUI-VlrmePeGA,19956
47
+ footprinter/db/clients.py,sha256=YVXnXXjLO8kaZrgqx9fxz7NcPcQHMpBNTXCE59GZIik,10092
48
+ footprinter/db/emails.py,sha256=chsGw3GwEQYbK0LqHKthci_RUk6QHU1MfsWOnB0Mnh0,10134
49
+ footprinter/db/files.py,sha256=sdTurqUUp_-TuI8FA21TLeHMF4ggyq1yoJkk185l-hc,24296
50
+ footprinter/db/folders.py,sha256=Frd40j0Gd7cewbtj2SBin5DgpUZ7sWjw-wI9lZADdW8,21076
51
+ footprinter/db/messages.py,sha256=WbGf6q24Y9cOhsJ3jsYnJmiw8CVNLF3dxsbEJ6rj7ck,5538
52
+ footprinter/db/policies.py,sha256=aLxuY6vlXvCdI6S0saU2A9D5eWzfqqXOLrf_NrSCLs0,6119
53
+ footprinter/db/projects.py,sha256=u5dzPesvToj3qFnAzHNn8V_Uq-A-X5zrn7QoJpuc03E,22045
54
+ footprinter/db/search.py,sha256=tMMGzRowwxk3oFabOVX7wAHbFVMkQK2ptqVNuGfKYFc,17717
55
+ footprinter/db/sql_utils.py,sha256=tEvCjyzEeGqZowHcyUEgXNdctG23Sm_bTA5NkKMnr0U,5934
56
+ footprinter/db/status.py,sha256=oi8sgZ-lzw7PDICqNQ4QJMEqaGswy8QUUeIZcKqoC0Y,11632
57
+ footprinter/db/uploads.py,sha256=N2qpN9_vqLXtzeif5z9cWQydHhdFyjZNyJpoyjWemNU,2239
58
+ footprinter/ingest/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
59
+ footprinter/ingest/browser_indexer.py,sha256=cWZjxIv2IHT4cYdAN-yM4644M6Hd3HX_KcFJQntXKcY,7658
60
+ footprinter/ingest/chat_dedup.py,sha256=ua8GbbtvNj6NbUO8Ca4mMWgYH1teHiPsi6tF5b9lJmA,5401
61
+ footprinter/ingest/chat_indexer.py,sha256=1ghTtsgKSmSuN69Bj0uZcSNKGjV_Ma3n3y5Cmu4gtu0,20105
62
+ footprinter/ingest/cli.py,sha256=djGE_-s2J3Ii1n6paQpMSkzL2beYt6oVGw51So6ap_E,31190
63
+ footprinter/ingest/content_extractors.py,sha256=grOA5vy3tQ0cSg2oCfqKY1fq0QQbf9-KX5lqmjiD9HQ,3981
64
+ footprinter/ingest/database.py,sha256=ZbyGM9dTlYdhxdG7EiZWrS_rVVMqojdES6JctOTnB2U,1123
65
+ footprinter/ingest/file_indexer.py,sha256=6tkn2w22n74_X7TFz17CGqPHuYzpZ-_0I2I9THEl7n8,10416
66
+ footprinter/ingest/file_scanner.py,sha256=54Ok5t3kZ2kTjHtPlfwValSw9kTBcJ0Nuarcia_OvQU,11331
67
+ footprinter/ingest/folder_indexer.py,sha256=wuZk0a9zWdi221rBmk8BZClthLReNwqHy6fElMabqXc,6645
68
+ footprinter/ingest/full_content_extractor.py,sha256=b6tUPsJcu0UAhrRz5Cc8dN47yCi2SBLOYu-Ng1_kOAQ,10689
69
+ footprinter/ingest/orchestrator.py,sha256=xcYd0tewXdKtwloFvxQSUIDwu_mTuVo1ewyYCXlf3Qw,6077
70
+ footprinter/ingest/pipe_runner.py,sha256=N1B0ArsJ0M2nC_RD5n-WEfI8HWL0bVtgM5c3kkAAkV8,7965
71
+ footprinter/ingest/processing.py,sha256=oOJikyDu7g-zw1DPMVTFIop1gzZrFtPTQ1c4MjZAtbQ,5804
72
+ footprinter/ingest/registry.py,sha256=0q-rmnDZq-nHpYKlvtsZKgpIgm8LLVHRjNtqfrnm3Dg,6729
73
+ footprinter/ingest/run_record.py,sha256=HFnKcqmlYGK-08V9bdFgqSO2ETrUo9Xcc5mriVK5Ipc,2981
74
+ footprinter/ingest/status.py,sha256=FhRHJ8x0YiffLjFajH4qbt1vSSuAYYx8LWcfkYZibBI,11721
75
+ footprinter/ingest/adapters/__init__.py,sha256=ZkDVP3PL0g6hZRHewy_SKDMaz20FS-xAFohMdENq55I,929
76
+ footprinter/ingest/adapters/browser.py,sha256=HqOu3hyYq6OGOTZ-5R9_zR7c8FXN-izLXBZ_P7JW69E,1752
77
+ footprinter/ingest/adapters/chat.py,sha256=c90EuglJXTeLN0ZEUxz36277Buz0_3qB-lf9ATcASZs,1857
78
+ footprinter/ingest/adapters/ingest.py,sha256=zth93yN9Nwmg716fMQUEx3uCZVeDMelyFfa0f7nZ624,5535
79
+ footprinter/ingest/adapters/local_files.py,sha256=gct0p5-t7KmIQ7RHh9eFYtXx0wd95Do2JxFqOWe2isI,2450
80
+ footprinter/ingest/adapters/local_folders.py,sha256=Dw_5l1y60nTDpuSLQXA4PYK_7ADGqFEXX0Dl4HF7zeU,1651
81
+ footprinter/ingest/adapters/protocol.py,sha256=mdFdWt8eCOhoLttMrHPleLUBS4pk-yi1TCs54sc3cAE,5367
82
+ footprinter/ingest/chat_parsers/__init__.py,sha256=F6DKaHGSKHGOMihawTRTi5EKdGUB_31077D45-eAM8Q,186
83
+ footprinter/ingest/chat_parsers/chatgpt_parser.py,sha256=mFE9T9tKzfv2_ZE9iM2Njghd7XQJHOJ0Pys6n5DkPI0,7645
84
+ footprinter/ingest/chat_parsers/claude_parser.py,sha256=VasNGgATsgEjudD4H_IsY7cA-aOb19p_fLjrNAp_JcY,5071
85
+ footprinter/ingest/db/__init__.py,sha256=66aPBN0sYxrrIXi164zF_C2Q5-9EP4E6Eqq7CQJr4LM,28
86
+ footprinter/ingest/db/connector_schema.py,sha256=UjTwf5Z48pyWsom-Z2ubVIcgHQunt6cykShFbEFxRKo,1626
87
+ footprinter/ingest/db/migration.py,sha256=2e8O59VlAgVILclmb_QylMpdUezZgd5dK1qensboqm8,13549
88
+ footprinter/ingest/db/schema.py,sha256=d8ItnCBFgLGpjm_YOXxso8p6huBWmL7kn7m0RuSncco,42087
89
+ footprinter/ingest/db/security.py,sha256=9DZvVRIwGoewG5kK9pTsZcCWBo08_lPsULN3_1dz3zw,253
90
+ footprinter/mcp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
91
+ footprinter/mcp/__main__.py,sha256=YGCRs_vnxWklav5V4XC-l3yhSN6mLdNaUBUJW3PV5ws,99
92
+ footprinter/mcp/db.py,sha256=aatTIEkh-sC8ZISPxGfQchzwXKAz7uuU2oCjV3-wp3k,1795
93
+ footprinter/mcp/errors.py,sha256=aFx63ROTJMo1XfeEB44pfTxmu5Qe043xMh0fLdhrnX4,4084
94
+ footprinter/mcp/extraction.py,sha256=f2AFuaODWQHXqEdR8QT7wpp_QWLn4TY1UazNMMNWo6Q,6315
95
+ footprinter/mcp/server.py,sha256=oxjgvaglmkdGue9PZO1TckHR-aO_j0gkOqZ6xfCNjDM,1112
96
+ footprinter/mcp/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
97
+ footprinter/mcp/tools/navigation.py,sha256=o-ckdHByRHHzbuzuliNIHUbVinNXpuo0q4m4B8sA6c4,2469
98
+ footprinter/mcp/tools/read.py,sha256=s-XXw206biHyn29BuG36Wi-uwoHd8wakNkt25X2ZYjQ,2453
99
+ footprinter/mcp/tools/search.py,sha256=_QCXGDWWL7AkYb97YQ1iOvqsDnUUbenNrLHVMRawXgY,6390
100
+ footprinter/mcp/tools/semantic.py,sha256=E-64By5ynuM5alqGnctQTKmC7QWCH7ZYYQb3_91uY-M,3662
101
+ footprinter/mcp/tools/status.py,sha256=O8dTj0i2-rfdwE3E7L3SUouuDkQADfnAyPAjywjYs4I,506
102
+ footprinter/semantic/__init__.py,sha256=vaTAy_CTGZ-D-6bkEYNN92JiqXa1ivXfZ5UG7iS0l1w,262
103
+ footprinter/semantic/chunking.py,sha256=oS-PF-e8jGUN-rrbYcAMTHC0kHwAV5KrIO1plp1C104,1573
104
+ footprinter/semantic/embeddings.py,sha256=Gt7pAHHe2GI0TAv3-x23q_bm21uAXvjX36gDJzS-LuI,680
105
+ footprinter/semantic/hybrid_search.py,sha256=gIq3kxZQCPTbiKAn0GQb6mfbkOQkvZQ12oRkWz3SK4c,8593
106
+ footprinter/semantic/vector_store.py,sha256=ju-kfdlU0jDK_cskCywluAA_Kwq0ZG7QLK4VAUx8bZQ,16641
107
+ footprinter/services/__init__.py,sha256=5Hs5sYadJnMa_LOFi84xrl57P_f6goPY1kt13G-vwkw,1268
108
+ footprinter/services/access_service.py,sha256=NM8mih8b3OIeASNUkz_4rCcovvkWGoRjqTaNOW_X2W8,11681
109
+ footprinter/services/chat_service.py,sha256=k9XxeXlcZd3p1NEQuSyztxnA_EbZagKt74OJG0FA304,2318
110
+ footprinter/services/client_service.py,sha256=KXfkdQZakSab-y3GhemkRoesIab6ittptlg-LwbfY_Y,8723
111
+ footprinter/services/content_service.py,sha256=pr6eldms_AYnT26PsljlYb9RQDDtEqSFxwZMZEQ6ZlI,6054
112
+ footprinter/services/email_service.py,sha256=4LiA0-Eh4C8uecO4DHYeCOOpb34auLVFiERTHQWjdrY,2467
113
+ footprinter/services/file_service.py,sha256=Od22jNDwrMUIYEZv-81fWd9UtAtVXrkN4bt_4X52fek,2285
114
+ footprinter/services/folder_service.py,sha256=kHGsKnIItRRJz96oj5ZwjbInldWxnqlAVNC7XnxLJqc,3461
115
+ footprinter/services/includes.py,sha256=SDpyUD18JXT4gSJQ7oAP7L9mdpi1rhkZrlMQ2oDMCmA,579
116
+ footprinter/services/ingest_service.py,sha256=VEx5xskwngMQxj3RpsR9YJudTkFlVFPC21KxemSB2QI,8128
117
+ footprinter/services/project_service.py,sha256=TsT8nzCBAkW4zIkj-v4giBrz2BGwI2lFaw_6nTbsNaw,8490
118
+ footprinter/services/roles.py,sha256=X0WTZYFKzOkARvlgetf7wn2W2U3zS1JCmh91Ngw6nUA,664
119
+ footprinter/services/search_service.py,sha256=QLz5SxzxCw6KtGEnII92t4llKoU1Dfy9gxowgi7ocHM,5317
120
+ footprinter/services/semantic_service.py,sha256=lLZbguaskCSv5lsdRjYFUkU--uePaxSgZILcwVH-aRI,11781
121
+ footprinter/services/status_service.py,sha256=zTH2PDz_ZcgVeU1yvz0nvE9p0YEXWRCBD-V2APAW4GI,638
122
+ footprinter/services/visit_service.py,sha256=hwuQEEbXFEaWwqTT1aYd-9TWORiXPupfcDNJrRTNywI,1901
123
+ footprinter/utils/__init__.py,sha256=E92Pc3d16cmW6xivkl4GL85hn0FHcd7jvIukKckED2A,265
124
+ footprinter/utils/hash_utils.py,sha256=8YSysYvCper4ZmUsBx-XY_ocXXOvj8l68y_FA5_8Y58,1672
125
+ footprinter/utils/logging_config.py,sha256=SzNMR2Bw2Xanq7Bk9MYkKgnPGm6liictuRSV4_S0J_4,2207
126
+ footprinter/utils/mime.py,sha256=0g_Y-UsGP8ztd_QPNKGgX9vPpNw_AeyYVWqo5CcvZR4,1139
127
+ footprinter/utils/text.py,sha256=tB4mZlkgtBdTK4DWZt9oQYaJZDMnruY2AGk9CpauQwM,162
128
+ footprinter/utils/time.py,sha256=Zt3G1JPo4YbJkS-NJHtvIzbJIrR6pZnhp82GLp9KCW8,364
129
+ footprinter_cli-1.0.0.dist-info/LICENSE,sha256=lMMqZvJAlyoKTBgemMDEjEbFajTerZ0l8NPo8slKyew,1072
130
+ footprinter_cli-1.0.0.dist-info/METADATA,sha256=D59RWwQNN64g47nDHD7rIOf40jEaz0aGrHwEUCfbmyw,9649
131
+ footprinter_cli-1.0.0.dist-info/WHEEL,sha256=EaM1zKIUYa7rQnxGiOCGhzJABRwy4WO57rWMR3_tj4I,91
132
+ footprinter_cli-1.0.0.dist-info/entry_points.txt,sha256=wEDzRTUXmtSozj_SbzGj-YQJfqygFRELPctJCEaLZGo,44
133
+ footprinter_cli-1.0.0.dist-info/top_level.txt,sha256=Tlwy9rQZF-p1eIjO2PdYWQnlni6kyzhH1_G78v_OrMs,12
134
+ footprinter_cli-1.0.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (75.9.1)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ fp = footprinter.cli:main
@@ -0,0 +1 @@
1
+ footprinter