footprinter-cli 1.0.0rc1__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 (138) hide show
  1. footprinter/__init__.py +8 -0
  2. footprinter/access.py +431 -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/bundled/samples/hidden-client-file-sample.txt +2 -0
  19. footprinter/bundled/samples/opaque-project-file-sample.txt +2 -0
  20. footprinter/bundled/samples/visible-file-sample.txt +2 -0
  21. footprinter/cli/__init__.py +135 -0
  22. footprinter/cli/__main__.py +6 -0
  23. footprinter/cli/_common.py +327 -0
  24. footprinter/cli/_policy_helpers.py +646 -0
  25. footprinter/cli/_prompt.py +220 -0
  26. footprinter/cli/_sample_seed.py +204 -0
  27. footprinter/cli/api_cmd.py +32 -0
  28. footprinter/cli/connect.py +591 -0
  29. footprinter/cli/data.py +879 -0
  30. footprinter/cli/delete.py +128 -0
  31. footprinter/cli/ingest.py +543 -0
  32. footprinter/cli/mcp_cmd.py +750 -0
  33. footprinter/cli/mcp_setup.py +306 -0
  34. footprinter/cli/search.py +393 -0
  35. footprinter/cli/search_cmd.py +69 -0
  36. footprinter/cli/setup.py +2001 -0
  37. footprinter/cli/status.py +747 -0
  38. footprinter/cli/status_cmd.py +104 -0
  39. footprinter/cli/upsert.py +794 -0
  40. footprinter/cli/vectorize_cmd.py +215 -0
  41. footprinter/cli/view.py +322 -0
  42. footprinter/connectors/__init__.py +171 -0
  43. footprinter/connectors/config_utils.py +141 -0
  44. footprinter/db/__init__.py +37 -0
  45. footprinter/db/browser.py +198 -0
  46. footprinter/db/chats.py +602 -0
  47. footprinter/db/clients.py +307 -0
  48. footprinter/db/emails.py +279 -0
  49. footprinter/db/files.py +724 -0
  50. footprinter/db/folders.py +659 -0
  51. footprinter/db/messages.py +192 -0
  52. footprinter/db/policies.py +151 -0
  53. footprinter/db/projects.py +673 -0
  54. footprinter/db/search.py +573 -0
  55. footprinter/db/sql_utils.py +168 -0
  56. footprinter/db/status.py +320 -0
  57. footprinter/db/uploads.py +70 -0
  58. footprinter/ingest/__init__.py +0 -0
  59. footprinter/ingest/adapters/__init__.py +33 -0
  60. footprinter/ingest/adapters/browser.py +54 -0
  61. footprinter/ingest/adapters/chat.py +57 -0
  62. footprinter/ingest/adapters/ingest.py +146 -0
  63. footprinter/ingest/adapters/local_files.py +68 -0
  64. footprinter/ingest/adapters/local_folders.py +52 -0
  65. footprinter/ingest/adapters/protocol.py +174 -0
  66. footprinter/ingest/browser_indexer.py +216 -0
  67. footprinter/ingest/chat_dedup.py +156 -0
  68. footprinter/ingest/chat_indexer.py +487 -0
  69. footprinter/ingest/chat_parsers/__init__.py +8 -0
  70. footprinter/ingest/chat_parsers/chatgpt_parser.py +229 -0
  71. footprinter/ingest/chat_parsers/claude_parser.py +161 -0
  72. footprinter/ingest/cli.py +827 -0
  73. footprinter/ingest/content_extractors.py +117 -0
  74. footprinter/ingest/database.py +36 -0
  75. footprinter/ingest/db/__init__.py +1 -0
  76. footprinter/ingest/db/connector_schema.py +47 -0
  77. footprinter/ingest/db/migration.py +315 -0
  78. footprinter/ingest/db/schema.py +1043 -0
  79. footprinter/ingest/db/security.py +6 -0
  80. footprinter/ingest/file_indexer.py +223 -0
  81. footprinter/ingest/file_scanner.py +277 -0
  82. footprinter/ingest/folder_indexer.py +226 -0
  83. footprinter/ingest/full_content_extractor.py +321 -0
  84. footprinter/ingest/orchestrator.py +112 -0
  85. footprinter/ingest/pipe_runner.py +200 -0
  86. footprinter/ingest/processing.py +165 -0
  87. footprinter/ingest/registry.py +186 -0
  88. footprinter/ingest/run_record.py +91 -0
  89. footprinter/ingest/status.py +346 -0
  90. footprinter/mcp/__init__.py +0 -0
  91. footprinter/mcp/__main__.py +5 -0
  92. footprinter/mcp/db.py +67 -0
  93. footprinter/mcp/errors.py +105 -0
  94. footprinter/mcp/extraction.py +226 -0
  95. footprinter/mcp/server.py +39 -0
  96. footprinter/mcp/tools/__init__.py +0 -0
  97. footprinter/mcp/tools/navigation.py +70 -0
  98. footprinter/mcp/tools/read.py +75 -0
  99. footprinter/mcp/tools/search.py +158 -0
  100. footprinter/mcp/tools/semantic.py +79 -0
  101. footprinter/mcp/tools/status.py +19 -0
  102. footprinter/paths.py +117 -0
  103. footprinter/permissions.py +1152 -0
  104. footprinter/semantic/__init__.py +13 -0
  105. footprinter/semantic/chunking.py +52 -0
  106. footprinter/semantic/embeddings.py +23 -0
  107. footprinter/semantic/hybrid_search.py +273 -0
  108. footprinter/semantic/vector_store.py +471 -0
  109. footprinter/services/__init__.py +49 -0
  110. footprinter/services/access_service.py +342 -0
  111. footprinter/services/chat_service.py +85 -0
  112. footprinter/services/client_service.py +267 -0
  113. footprinter/services/content_service.py +181 -0
  114. footprinter/services/email_service.py +89 -0
  115. footprinter/services/file_service.py +83 -0
  116. footprinter/services/folder_service.py +122 -0
  117. footprinter/services/includes.py +19 -0
  118. footprinter/services/ingest_service.py +231 -0
  119. footprinter/services/project_service.py +262 -0
  120. footprinter/services/roles.py +25 -0
  121. footprinter/services/search_service.py +177 -0
  122. footprinter/services/semantic_service.py +360 -0
  123. footprinter/services/status_service.py +18 -0
  124. footprinter/services/visit_service.py +65 -0
  125. footprinter/source_registry.py +194 -0
  126. footprinter/utils/__init__.py +7 -0
  127. footprinter/utils/hash_utils.py +59 -0
  128. footprinter/utils/logging_config.py +68 -0
  129. footprinter/utils/mime.py +30 -0
  130. footprinter/utils/text.py +6 -0
  131. footprinter/utils/time.py +11 -0
  132. footprinter/visibility.py +1264 -0
  133. footprinter_cli-1.0.0rc1.dist-info/LICENSE +21 -0
  134. footprinter_cli-1.0.0rc1.dist-info/METADATA +223 -0
  135. footprinter_cli-1.0.0rc1.dist-info/RECORD +138 -0
  136. footprinter_cli-1.0.0rc1.dist-info/WHEEL +5 -0
  137. footprinter_cli-1.0.0rc1.dist-info/entry_points.txt +2 -0
  138. footprinter_cli-1.0.0rc1.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,223 @@
1
+ Metadata-Version: 2.2
2
+ Name: footprinter-cli
3
+ Version: 1.0.0rc1
4
+ Summary: Index your files, emails, browser history, and chats locally. Give AI agents controlled access via MCP.
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
+ Keywords: indexer,mcp,metadata,model-context-protocol,file-indexing,sqlite
11
+ Classifier: Development Status :: 5 - Production/Stable
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.11
16
+ Classifier: Programming Language :: Python :: 3.12
17
+ Classifier: Topic :: System :: Archiving
18
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
19
+ Classifier: Operating System :: MacOS :: MacOS X
20
+ Requires-Python: >=3.11
21
+ Description-Content-Type: text/markdown
22
+ License-File: LICENSE
23
+ Requires-Dist: pyyaml<7.0,>=6.0.1
24
+ Requires-Dist: rich<14.0,>=13.7.0
25
+ Requires-Dist: mcp<2.0,>=1.0.0
26
+ Requires-Dist: fastapi<1.0,>=0.115.0
27
+ Requires-Dist: uvicorn<1.0,>=0.30.0
28
+ Requires-Dist: cryptography<46.0,>=42.0.0
29
+ Provides-Extra: semantic
30
+ Requires-Dist: chromadb<1.0,>=0.4.22; extra == "semantic"
31
+ Requires-Dist: onnxruntime<2.0,>=1.16.0; extra == "semantic"
32
+ Provides-Extra: parse
33
+ Requires-Dist: pypdf<6.0,>=3.0.0; extra == "parse"
34
+ Requires-Dist: python-docx<2.0,>=1.1.0; extra == "parse"
35
+ Requires-Dist: openpyxl<4.0,>=3.1.0; extra == "parse"
36
+ Requires-Dist: python-pptx<2.0,>=0.6.21; extra == "parse"
37
+ Provides-Extra: full
38
+ Requires-Dist: footprinter-cli[semantic]; extra == "full"
39
+ Requires-Dist: footprinter-cli[parse]; extra == "full"
40
+ Provides-Extra: dev
41
+ Requires-Dist: pytest<9.0,>=8.0.0; extra == "dev"
42
+ Requires-Dist: pytest-cov<6.0,>=4.1.0; extra == "dev"
43
+ Requires-Dist: ruff<1.0,>=0.1.0; extra == "dev"
44
+ Requires-Dist: httpx<1.0,>=0.27.0; extra == "dev"
45
+
46
+ # Footprinter
47
+
48
+ [![Tests](https://github.com/swellcitygroup/footprinter/actions/workflows/test.yml/badge.svg)](https://github.com/swellcitygroup/footprinter/actions/workflows/test.yml)
49
+
50
+ **Index your files, conversations, browser history, and more through connector plugins. Search across everything. Give AI assistants structured context via [MCP](https://modelcontextprotocol.io/).**
51
+
52
+ Every conversation with an AI assistant starts from zero. It doesn't know what files you've been editing, what you were researching yesterday, or what conversations you had last week. You either paste context in manually or the AI operates blind.
53
+
54
+ Footprinter fixes that. It scans your work into a local SQLite database, links related items across sources, and exposes the result through MCP — so Claude Desktop, or any MCP-compatible assistant, can search your files, find related conversations, and understand the shape of your work. No copy-pasting. No cloud. Everything stays on your machine.
55
+
56
+ ## Install
57
+
58
+ ```bash
59
+ pip install footprinter-cli
60
+ ```
61
+
62
+ The base install includes the indexing pipeline, CLI, MCP server, HTTP API, and token encryption. Optional extras add more capabilities:
63
+
64
+ ```bash
65
+ pip install footprinter-cli[full] # All optional extras (semantic + parse)
66
+ pip install footprinter-cli[semantic] # Semantic search (ChromaDB + ONNX embeddings)
67
+ pip install footprinter-cli[parse] # PDF, Word, Excel, PowerPoint content extraction
68
+ ```
69
+
70
+ ## Quick Start
71
+
72
+ ```bash
73
+ fp setup # Configure sources (interactive wizard)
74
+ fp ingest # Index your files
75
+ fp status # See what's indexed
76
+ fp search "meeting notes" # Find things
77
+ ```
78
+
79
+ **macOS note:** Browser history indexing requires Full Disk Access for your terminal app (System Settings > Privacy & Security > Full Disk Access).
80
+
81
+ ## Connect to Claude Desktop
82
+
83
+ Footprinter includes an MCP server that gives Claude Desktop (or any MCP client) structured access to your indexed data:
84
+
85
+ ```bash
86
+ fp setup mcp # Configure MCP for Claude Desktop
87
+ ```
88
+
89
+ Once configured, Claude can search your files, browse projects, and find related conversations — through natural language.
90
+
91
+ ## What It Indexes
92
+
93
+ | Source | What's captured |
94
+ |--------|----------------|
95
+ | **Local files** | Path, type, size, timestamps, content hash |
96
+ | **Browser history** | Safari and Chrome — URLs, titles, visit times |
97
+ | **Chat exports** | Claude and ChatGPT conversation exports |
98
+ | **Documents** | PDF, Word, Excel, PowerPoint content (with `[parse]` extra) |
99
+ | **Semantic embeddings** | Conceptual similarity across all sources (with `[semantic]` extra) |
100
+
101
+ Additional sources are available through [connector plugins](#connectors).
102
+
103
+ ## CLI Commands
104
+
105
+ All commands use the `fp` entry point.
106
+
107
+ | Command | Purpose |
108
+ |---------|---------|
109
+ | `fp setup` | Configure sources and integrations |
110
+ | `fp ingest` | Run the indexing pipeline |
111
+ | `fp status` | System health and data counts |
112
+ | `fp search` | Search across all indexed sources |
113
+ | `fp connect` | Manage optional integrations |
114
+ | `fp mcp` | MCP server and access policies |
115
+ | `fp api` | Start the HTTP API server |
116
+ | `fp view` | Browse indexed data (files, folders, projects, clients, chats, emails, visits) |
117
+ | `fp upsert` | Create or update records and assign relationships |
118
+ | `fp data` | Export data, generate templates, or import metadata corrections |
119
+ | `fp delete` | Soft-delete a record |
120
+ | `fp vectorize` | Manage per-record vectorization control |
121
+
122
+ Run `fp <command> --help` for full usage.
123
+
124
+ ## Connectors
125
+
126
+ Connector plugins add external data sources like email, cloud storage, and third-party services. They install alongside Footprinter and register automatically:
127
+
128
+ ```bash
129
+ pip install footprinter-<name>
130
+ ```
131
+
132
+ First-party and community connectors are in development — check the repository for updates.
133
+
134
+ Use `fp connect list` to see available connectors and their status.
135
+
136
+ ## Architecture
137
+
138
+ Single-process CLI with optional MCP server. SQLite database. No containers, no cloud, no accounts.
139
+
140
+ 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.
141
+
142
+ ## Optional Extras
143
+
144
+ | Extra | What it adds |
145
+ |-------|-------------|
146
+ | `[semantic]` | Semantic search via ChromaDB + ONNX embeddings |
147
+ | `[parse]` | PDF, Word, Excel, PowerPoint content extraction |
148
+ | `[full]` | All optional extras (semantic + parse) |
149
+
150
+ > **Privacy note:** The `[semantic]` extra installs ChromaDB, which bundles PostHog analytics.
151
+ > ChromaDB collects anonymous usage telemetry by default. Set `ANONYMIZED_TELEMETRY=False`
152
+ > in your environment to disable it. See
153
+ > [ChromaDB telemetry docs](https://docs.trychroma.com/docs/overview/telemetry) for details.
154
+
155
+ ## Requirements
156
+
157
+ - Python 3.11+
158
+ - macOS or Linux
159
+ - Full Disk Access on macOS (for browser history)
160
+
161
+ ## Documentation
162
+
163
+ - [Interfaces](reference/interfaces.md) — CLI commands, MCP tools, Python API
164
+ - [Data Model](reference/data-model.md) — database schema
165
+ - [Pipeline](reference/pipeline.md) — indexing stages and configuration
166
+ - [Access Control](reference/mcp-access-control.md) — MCP security model
167
+
168
+ ## Contributing
169
+
170
+ 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.
171
+
172
+ Connector plugins use an internal API that isn't stable yet — we're not accepting connector contributions at this time.
173
+
174
+ ### Development setup
175
+
176
+ ```bash
177
+ git clone https://github.com/swellcitygroup/footprinter.git
178
+ cd footprinter
179
+ python3 -m venv venv
180
+ ./venv/bin/pip install -e ".[dev]"
181
+ ```
182
+
183
+ ### Running tests
184
+
185
+ ```bash
186
+ pytest tests/ -v --tb=short
187
+ ```
188
+
189
+ ### Code style
190
+
191
+ - PEP 8
192
+ - Type hints on function signatures
193
+ - `logging` over `print()` in library code
194
+
195
+ ### Workflow
196
+
197
+ 1. Fork the repository
198
+ 2. Create a feature branch from `main`
199
+ 3. Write tests (TDD preferred — tests before implementation)
200
+ 4. Run the test suite
201
+ 5. Submit a PR targeting `main`
202
+
203
+ Never commit API keys, tokens, or credentials. Report security vulnerabilities privately — see [SECURITY.md](SECURITY.md).
204
+
205
+ ### Pull request expectations
206
+
207
+ - Tests must pass
208
+ - No breaking changes to existing CLI commands
209
+ - Fill out the PR template
210
+ - One logical change per PR
211
+
212
+ All PRs are reviewed by the maintainer. Expect reviews within one week. CI must pass before review begins.
213
+
214
+ No Contributor License Agreement required. By submitting a PR, you agree your contribution is licensed under the project's [MIT License](LICENSE).
215
+
216
+ ## Community
217
+
218
+ - [Code of Conduct](CODE_OF_CONDUCT.md)
219
+ - [Security Policy](SECURITY.md)
220
+
221
+ ## License
222
+
223
+ MIT — see [LICENSE](LICENSE).
@@ -0,0 +1,138 @@
1
+ footprinter/__init__.py,sha256=wGowzzIzhYZ9bEjxM3epPzv0s-1w8UjDLL41Ni4oCM4,240
2
+ footprinter/access.py,sha256=Y2xfikQ_cQrTXjH65FkYA66K3s7gTHyVna1xlV9M_wI,15414
3
+ footprinter/paths.py,sha256=RbM1hmKbTe-79lETzZiToSRapPS__Dx3l-h14RafbQU,3520
4
+ footprinter/permissions.py,sha256=vvV2lMVf2umDF2I76SBVJh1YAnN4IVjoBxfOaP0NsGs,40839
5
+ footprinter/source_registry.py,sha256=RonpQd0o3YrZ7uvXuE729PUYu4aGIlxTnxPBBDZR2JY,7278
6
+ footprinter/visibility.py,sha256=cZ2JV8TQ4cRzDUVC1oj1fqGEstOm4vWjc19LnRb-JjY,45889
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/bundled/samples/hidden-client-file-sample.txt,sha256=Ul9B4IDeVXwl5784bb0yanvjltfGlHR_SKFkINWH_o0,123
23
+ footprinter/bundled/samples/opaque-project-file-sample.txt,sha256=ZQ-9upZueOGL3Nil1kZ1tsm6vFopSGaILSMzY7hDQS0,103
24
+ footprinter/bundled/samples/visible-file-sample.txt,sha256=NxZtF6wyCNmENYUK_bsHBuagbGg93iuG1JENjOUoW6U,106
25
+ footprinter/cli/__init__.py,sha256=_f_bfWLNB3C4tt1W9jNk6DLtAFX1UOy66zjpwxKqaXI,4278
26
+ footprinter/cli/__main__.py,sha256=Vcvh_yukjkaFppDoWi94QP1fRZjQl4tcI7SjDMu8y6U,127
27
+ footprinter/cli/_common.py,sha256=1DZlfCUdTBGXbQrzt7mH91gylbiu3K6TzVL4_Z3JDpc,9968
28
+ footprinter/cli/_policy_helpers.py,sha256=d2rV1ZjxY-3rho7VgYYDRx1S_EUlKcj2Uj8kwK74ro8,23673
29
+ footprinter/cli/_prompt.py,sha256=k0wiuqXFT1MKU1T4dL-x7gFoUzoJKG82VcbNxOCRxuA,7135
30
+ footprinter/cli/_sample_seed.py,sha256=Ie4S9JtZN0GFGQyJvozxhnNpn0xU_VlE95WXeCMmqmg,6670
31
+ footprinter/cli/api_cmd.py,sha256=-pV0P2tvums4HgpTyPzkPgjzAld1XfbW3PPf_MFoCx4,1150
32
+ footprinter/cli/connect.py,sha256=y-1T95BxVDSfTxwoULVpW04Jqocih6qBIoABHPxptTk,21248
33
+ footprinter/cli/data.py,sha256=2MtaSZ8iP20A78HszHNU327EaNFGJyUNr2Ci8-73xjQ,29274
34
+ footprinter/cli/delete.py,sha256=B0xiszPIfd0kfDCy0ZE-AFrax6FVw3QXp-ySNzqqOQ8,3974
35
+ footprinter/cli/ingest.py,sha256=c1WqZIbpfZiI-SQ4_MdsxVwfXmpUxg5hoBqwKC6QNMs,18888
36
+ footprinter/cli/mcp_cmd.py,sha256=NA2P5W6s9l4Ad8DpNtdHH_XpK9Uyy6ECJoaQI2Jdow0,27840
37
+ footprinter/cli/mcp_setup.py,sha256=t0G2TaWQ_zh-Q78qXwaKkDeqpn1HG7P8HkC8wE6ZhoI,10081
38
+ footprinter/cli/search.py,sha256=BA05Wkf_UHgcXm_MVm8iVKMkMrgmrZr_iDQcRgSITXw,12744
39
+ footprinter/cli/search_cmd.py,sha256=gVT2zK3Y6XAaQkJO6z6z1-kok6GEvUAvWwFQHPeRCrc,2548
40
+ footprinter/cli/setup.py,sha256=au2okJWmuiDqlGAgbZMxbqRQOyHec5WiB9IOUPOQO9w,71874
41
+ footprinter/cli/status.py,sha256=uxfjpFcviMjyIitpfa8Lq6VHnqjjCErj_i4YtagRkQs,25706
42
+ footprinter/cli/status_cmd.py,sha256=raklPhpf7Gz9d7CktK686RCooVxyKcFZXvw8BSTb79w,3167
43
+ footprinter/cli/upsert.py,sha256=646KHHUB6YGQ3wXReaS36ZqtNJarQqMiO1Ukm5UUl74,28943
44
+ footprinter/cli/vectorize_cmd.py,sha256=PGVZY28I9U1NugMW2cNHsiKI_Id4oeYGXcXJWEqI4jo,7420
45
+ footprinter/cli/view.py,sha256=yH45-JJ2LSBSDuhpZr9dtpJBfu_SHsJe41m4UJL7RFQ,11080
46
+ footprinter/connectors/__init__.py,sha256=ZrPNG1biT13uVj9Y5chH-HYQ8pwOpOWmfl90rkShEHc,6480
47
+ footprinter/connectors/config_utils.py,sha256=OBU8zxTv147fk6vngtOt561vx9M3Lj1Nqj4E1HrY8YY,4144
48
+ footprinter/db/__init__.py,sha256=OjvklF7KNSczyGWmwNIHTyAXWd8JiyLV4B5WBjotWQw,594
49
+ footprinter/db/browser.py,sha256=Pj9Ia4O1x6I_-2Bflbj3kYOB5-K8qlclEJk80wcIsQ4,6376
50
+ footprinter/db/chats.py,sha256=eRS47EZDBPU3H2-C8XDnHTrLYQiTMBy859stQGFgzDA,19522
51
+ footprinter/db/clients.py,sha256=YVXnXXjLO8kaZrgqx9fxz7NcPcQHMpBNTXCE59GZIik,10092
52
+ footprinter/db/emails.py,sha256=chsGw3GwEQYbK0LqHKthci_RUk6QHU1MfsWOnB0Mnh0,10134
53
+ footprinter/db/files.py,sha256=UD1As4HJG5k2QBTUynkck_CzJhY-MI-CUrRQg365rUA,23239
54
+ footprinter/db/folders.py,sha256=Frd40j0Gd7cewbtj2SBin5DgpUZ7sWjw-wI9lZADdW8,21076
55
+ footprinter/db/messages.py,sha256=WbGf6q24Y9cOhsJ3jsYnJmiw8CVNLF3dxsbEJ6rj7ck,5538
56
+ footprinter/db/policies.py,sha256=aLxuY6vlXvCdI6S0saU2A9D5eWzfqqXOLrf_NrSCLs0,6119
57
+ footprinter/db/projects.py,sha256=u5dzPesvToj3qFnAzHNn8V_Uq-A-X5zrn7QoJpuc03E,22045
58
+ footprinter/db/search.py,sha256=tMMGzRowwxk3oFabOVX7wAHbFVMkQK2ptqVNuGfKYFc,17717
59
+ footprinter/db/sql_utils.py,sha256=tEvCjyzEeGqZowHcyUEgXNdctG23Sm_bTA5NkKMnr0U,5934
60
+ footprinter/db/status.py,sha256=rfiQ98meJ6z6FYr09EwMEmAEdSLBotCiA_OGMpRMWqw,11592
61
+ footprinter/db/uploads.py,sha256=N2qpN9_vqLXtzeif5z9cWQydHhdFyjZNyJpoyjWemNU,2239
62
+ footprinter/ingest/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
63
+ footprinter/ingest/browser_indexer.py,sha256=cWZjxIv2IHT4cYdAN-yM4644M6Hd3HX_KcFJQntXKcY,7658
64
+ footprinter/ingest/chat_dedup.py,sha256=ua8GbbtvNj6NbUO8Ca4mMWgYH1teHiPsi6tF5b9lJmA,5401
65
+ footprinter/ingest/chat_indexer.py,sha256=ha3AiuLZUMtn_eFrkMHrhMtXL96TgSTwYK4LLKey9TQ,18866
66
+ footprinter/ingest/cli.py,sha256=djGE_-s2J3Ii1n6paQpMSkzL2beYt6oVGw51So6ap_E,31190
67
+ footprinter/ingest/content_extractors.py,sha256=grOA5vy3tQ0cSg2oCfqKY1fq0QQbf9-KX5lqmjiD9HQ,3981
68
+ footprinter/ingest/database.py,sha256=ZbyGM9dTlYdhxdG7EiZWrS_rVVMqojdES6JctOTnB2U,1123
69
+ footprinter/ingest/file_indexer.py,sha256=_HBMLDC4QS6H388ApOu_m4y6IVR4tfNTHDoJ7S3ixks,8875
70
+ footprinter/ingest/file_scanner.py,sha256=54Ok5t3kZ2kTjHtPlfwValSw9kTBcJ0Nuarcia_OvQU,11331
71
+ footprinter/ingest/folder_indexer.py,sha256=wuZk0a9zWdi221rBmk8BZClthLReNwqHy6fElMabqXc,6645
72
+ footprinter/ingest/full_content_extractor.py,sha256=b6tUPsJcu0UAhrRz5Cc8dN47yCi2SBLOYu-Ng1_kOAQ,10689
73
+ footprinter/ingest/orchestrator.py,sha256=wyare8kB0At7qG6W2gTi6yfvXKTeOcyXynR6pw8Ky4A,4988
74
+ footprinter/ingest/pipe_runner.py,sha256=6R46ulSmCxdNyrAnNfDwW-iAynM26s9hnimO_r5_rbI,7224
75
+ footprinter/ingest/processing.py,sha256=oOJikyDu7g-zw1DPMVTFIop1gzZrFtPTQ1c4MjZAtbQ,5804
76
+ footprinter/ingest/registry.py,sha256=LSp_KfOm5ag1RaUo-CqCuMlc2A_-G0WHnc3EWVdMByU,6217
77
+ footprinter/ingest/run_record.py,sha256=HFnKcqmlYGK-08V9bdFgqSO2ETrUo9Xcc5mriVK5Ipc,2981
78
+ footprinter/ingest/status.py,sha256=FhRHJ8x0YiffLjFajH4qbt1vSSuAYYx8LWcfkYZibBI,11721
79
+ footprinter/ingest/adapters/__init__.py,sha256=ZkDVP3PL0g6hZRHewy_SKDMaz20FS-xAFohMdENq55I,929
80
+ footprinter/ingest/adapters/browser.py,sha256=HqOu3hyYq6OGOTZ-5R9_zR7c8FXN-izLXBZ_P7JW69E,1752
81
+ footprinter/ingest/adapters/chat.py,sha256=c90EuglJXTeLN0ZEUxz36277Buz0_3qB-lf9ATcASZs,1857
82
+ footprinter/ingest/adapters/ingest.py,sha256=zth93yN9Nwmg716fMQUEx3uCZVeDMelyFfa0f7nZ624,5535
83
+ footprinter/ingest/adapters/local_files.py,sha256=gct0p5-t7KmIQ7RHh9eFYtXx0wd95Do2JxFqOWe2isI,2450
84
+ footprinter/ingest/adapters/local_folders.py,sha256=Dw_5l1y60nTDpuSLQXA4PYK_7ADGqFEXX0Dl4HF7zeU,1651
85
+ footprinter/ingest/adapters/protocol.py,sha256=mdFdWt8eCOhoLttMrHPleLUBS4pk-yi1TCs54sc3cAE,5367
86
+ footprinter/ingest/chat_parsers/__init__.py,sha256=F6DKaHGSKHGOMihawTRTi5EKdGUB_31077D45-eAM8Q,186
87
+ footprinter/ingest/chat_parsers/chatgpt_parser.py,sha256=mFE9T9tKzfv2_ZE9iM2Njghd7XQJHOJ0Pys6n5DkPI0,7645
88
+ footprinter/ingest/chat_parsers/claude_parser.py,sha256=VasNGgATsgEjudD4H_IsY7cA-aOb19p_fLjrNAp_JcY,5071
89
+ footprinter/ingest/db/__init__.py,sha256=66aPBN0sYxrrIXi164zF_C2Q5-9EP4E6Eqq7CQJr4LM,28
90
+ footprinter/ingest/db/connector_schema.py,sha256=UjTwf5Z48pyWsom-Z2ubVIcgHQunt6cykShFbEFxRKo,1626
91
+ footprinter/ingest/db/migration.py,sha256=0ucq0Yt0on0YB9U2zHr7eVwWlE4bkkkuqZoFKa7Adm4,12978
92
+ footprinter/ingest/db/schema.py,sha256=d8ItnCBFgLGpjm_YOXxso8p6huBWmL7kn7m0RuSncco,42087
93
+ footprinter/ingest/db/security.py,sha256=9DZvVRIwGoewG5kK9pTsZcCWBo08_lPsULN3_1dz3zw,253
94
+ footprinter/mcp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
95
+ footprinter/mcp/__main__.py,sha256=YGCRs_vnxWklav5V4XC-l3yhSN6mLdNaUBUJW3PV5ws,99
96
+ footprinter/mcp/db.py,sha256=ZW_1f5Gm9pii9vgkovYc3sGfnbN664JKvAPX6ObfN7o,2220
97
+ footprinter/mcp/errors.py,sha256=5ySYAGH9PK_kkxi6kkImCn-SMk79ahOCZEwbYNwpBDU,4159
98
+ footprinter/mcp/extraction.py,sha256=f2AFuaODWQHXqEdR8QT7wpp_QWLn4TY1UazNMMNWo6Q,6315
99
+ footprinter/mcp/server.py,sha256=oxjgvaglmkdGue9PZO1TckHR-aO_j0gkOqZ6xfCNjDM,1112
100
+ footprinter/mcp/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
101
+ footprinter/mcp/tools/navigation.py,sha256=o-ckdHByRHHzbuzuliNIHUbVinNXpuo0q4m4B8sA6c4,2469
102
+ footprinter/mcp/tools/read.py,sha256=s-XXw206biHyn29BuG36Wi-uwoHd8wakNkt25X2ZYjQ,2453
103
+ footprinter/mcp/tools/search.py,sha256=_QCXGDWWL7AkYb97YQ1iOvqsDnUUbenNrLHVMRawXgY,6390
104
+ footprinter/mcp/tools/semantic.py,sha256=E-64By5ynuM5alqGnctQTKmC7QWCH7ZYYQb3_91uY-M,3662
105
+ footprinter/mcp/tools/status.py,sha256=1NPLluSeSRd7iPQQN8ryCXvDVTKdGbXyTiA6r_MzYCE,638
106
+ footprinter/semantic/__init__.py,sha256=vaTAy_CTGZ-D-6bkEYNN92JiqXa1ivXfZ5UG7iS0l1w,262
107
+ footprinter/semantic/chunking.py,sha256=oS-PF-e8jGUN-rrbYcAMTHC0kHwAV5KrIO1plp1C104,1573
108
+ footprinter/semantic/embeddings.py,sha256=Gt7pAHHe2GI0TAv3-x23q_bm21uAXvjX36gDJzS-LuI,680
109
+ footprinter/semantic/hybrid_search.py,sha256=gIq3kxZQCPTbiKAn0GQb6mfbkOQkvZQ12oRkWz3SK4c,8593
110
+ footprinter/semantic/vector_store.py,sha256=ju-kfdlU0jDK_cskCywluAA_Kwq0ZG7QLK4VAUx8bZQ,16641
111
+ footprinter/services/__init__.py,sha256=5Hs5sYadJnMa_LOFi84xrl57P_f6goPY1kt13G-vwkw,1268
112
+ footprinter/services/access_service.py,sha256=NM8mih8b3OIeASNUkz_4rCcovvkWGoRjqTaNOW_X2W8,11681
113
+ footprinter/services/chat_service.py,sha256=k9XxeXlcZd3p1NEQuSyztxnA_EbZagKt74OJG0FA304,2318
114
+ footprinter/services/client_service.py,sha256=KXfkdQZakSab-y3GhemkRoesIab6ittptlg-LwbfY_Y,8723
115
+ footprinter/services/content_service.py,sha256=pr6eldms_AYnT26PsljlYb9RQDDtEqSFxwZMZEQ6ZlI,6054
116
+ footprinter/services/email_service.py,sha256=4LiA0-Eh4C8uecO4DHYeCOOpb34auLVFiERTHQWjdrY,2467
117
+ footprinter/services/file_service.py,sha256=Od22jNDwrMUIYEZv-81fWd9UtAtVXrkN4bt_4X52fek,2285
118
+ footprinter/services/folder_service.py,sha256=kHGsKnIItRRJz96oj5ZwjbInldWxnqlAVNC7XnxLJqc,3461
119
+ footprinter/services/includes.py,sha256=SDpyUD18JXT4gSJQ7oAP7L9mdpi1rhkZrlMQ2oDMCmA,579
120
+ footprinter/services/ingest_service.py,sha256=VEx5xskwngMQxj3RpsR9YJudTkFlVFPC21KxemSB2QI,8128
121
+ footprinter/services/project_service.py,sha256=TsT8nzCBAkW4zIkj-v4giBrz2BGwI2lFaw_6nTbsNaw,8490
122
+ footprinter/services/roles.py,sha256=X0WTZYFKzOkARvlgetf7wn2W2U3zS1JCmh91Ngw6nUA,664
123
+ footprinter/services/search_service.py,sha256=QLz5SxzxCw6KtGEnII92t4llKoU1Dfy9gxowgi7ocHM,5317
124
+ footprinter/services/semantic_service.py,sha256=lLZbguaskCSv5lsdRjYFUkU--uePaxSgZILcwVH-aRI,11781
125
+ footprinter/services/status_service.py,sha256=zTH2PDz_ZcgVeU1yvz0nvE9p0YEXWRCBD-V2APAW4GI,638
126
+ footprinter/services/visit_service.py,sha256=hwuQEEbXFEaWwqTT1aYd-9TWORiXPupfcDNJrRTNywI,1901
127
+ footprinter/utils/__init__.py,sha256=E92Pc3d16cmW6xivkl4GL85hn0FHcd7jvIukKckED2A,265
128
+ footprinter/utils/hash_utils.py,sha256=8YSysYvCper4ZmUsBx-XY_ocXXOvj8l68y_FA5_8Y58,1672
129
+ footprinter/utils/logging_config.py,sha256=SzNMR2Bw2Xanq7Bk9MYkKgnPGm6liictuRSV4_S0J_4,2207
130
+ footprinter/utils/mime.py,sha256=0g_Y-UsGP8ztd_QPNKGgX9vPpNw_AeyYVWqo5CcvZR4,1139
131
+ footprinter/utils/text.py,sha256=tB4mZlkgtBdTK4DWZt9oQYaJZDMnruY2AGk9CpauQwM,162
132
+ footprinter/utils/time.py,sha256=Zt3G1JPo4YbJkS-NJHtvIzbJIrR6pZnhp82GLp9KCW8,364
133
+ footprinter_cli-1.0.0rc1.dist-info/LICENSE,sha256=lMMqZvJAlyoKTBgemMDEjEbFajTerZ0l8NPo8slKyew,1072
134
+ footprinter_cli-1.0.0rc1.dist-info/METADATA,sha256=CFiGghiYcvsgcFSp5lAQ8gaKtbURbAxZyenPjfEqMQU,8811
135
+ footprinter_cli-1.0.0rc1.dist-info/WHEEL,sha256=EaM1zKIUYa7rQnxGiOCGhzJABRwy4WO57rWMR3_tj4I,91
136
+ footprinter_cli-1.0.0rc1.dist-info/entry_points.txt,sha256=wEDzRTUXmtSozj_SbzGj-YQJfqygFRELPctJCEaLZGo,44
137
+ footprinter_cli-1.0.0rc1.dist-info/top_level.txt,sha256=Tlwy9rQZF-p1eIjO2PdYWQnlni6kyzhH1_G78v_OrMs,12
138
+ footprinter_cli-1.0.0rc1.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