mfcli 0.2.5__tar.gz → 0.2.7__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. {mfcli-0.2.5 → mfcli-0.2.7}/PKG-INFO +83 -21
  2. {mfcli-0.2.5 → mfcli-0.2.7}/README.md +82 -18
  3. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/.env.example +11 -5
  4. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/agents/controller/agent.py +2 -2
  5. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/agents/controller/config.yaml +1 -1
  6. mfcli-0.2.7/mfcli/cli/main.py +350 -0
  7. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/constants/file_types.py +12 -5
  8. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/crud/project.py +65 -20
  9. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/pipeline/classifier.py +22 -13
  10. mfcli-0.2.7/mfcli/pipeline/extractor.py +37 -0
  11. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/pipeline/pipeline.py +210 -23
  12. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/pipeline/sub_classifier.py +7 -5
  13. mfcli-0.2.7/mfcli/utils/cheatsheet_regenerator.py +498 -0
  14. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/utils/cline_rules.py +2 -2
  15. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/utils/config.py +2 -0
  16. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/utils/configurator.py +74 -25
  17. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/utils/data_cleaner.py +0 -1
  18. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/utils/datasheet_vectorizer.py +4 -5
  19. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/utils/directory_manager.py +4 -7
  20. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/utils/system_check.py +1 -1
  21. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli.egg-info/SOURCES.txt +1 -1
  22. {mfcli-0.2.5 → mfcli-0.2.7}/pyproject.toml +1 -3
  23. mfcli-0.2.5/mfcli/cli/main.py +0 -220
  24. mfcli-0.2.5/mfcli/client/llama_parse.py +0 -38
  25. mfcli-0.2.5/mfcli/pipeline/extractor.py +0 -34
  26. {mfcli-0.2.5 → mfcli-0.2.7}/BUILD.md +0 -0
  27. {mfcli-0.2.5 → mfcli-0.2.7}/CONFIGURATION.md +0 -0
  28. {mfcli-0.2.5 → mfcli-0.2.7}/INSTALL.md +0 -0
  29. {mfcli-0.2.5 → mfcli-0.2.7}/LICENSE +0 -0
  30. {mfcli-0.2.5 → mfcli-0.2.7}/MANIFEST.in +0 -0
  31. {mfcli-0.2.5 → mfcli-0.2.7}/MCP_SETUP.md +0 -0
  32. {mfcli-0.2.5 → mfcli-0.2.7}/install.ps1 +0 -0
  33. {mfcli-0.2.5 → mfcli-0.2.7}/install.sh +0 -0
  34. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/__init__.py +0 -0
  35. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/agents/__init__.py +0 -0
  36. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/agents/controller/__init__.py +0 -0
  37. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/agents/controller/tools.py +0 -0
  38. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/agents/tools/general.py +0 -0
  39. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/alembic/env.py +0 -0
  40. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/alembic/script.py.mako +0 -0
  41. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/alembic/versions/6ccc0c7c397c_added_fields_to_pdf_parts_model.py +0 -0
  42. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/alembic/versions/769019ef4870_added_gemini_file_path_to_pdf_part_model.py +0 -0
  43. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/alembic/versions/7a2e3a779fdc_added_functional_block_and_component_.py +0 -0
  44. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/alembic/versions/7d5adb2a47a7_added_pdf_parts_model.py +0 -0
  45. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/alembic/versions/7fcb7d6a5836_init.py +0 -0
  46. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/alembic/versions/e0f2b5765c72_added_cascade_delete_for_models_that_.py +0 -0
  47. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/alembic/versions/f1234567890a_make_bom_description_nullable.py +0 -0
  48. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/alembic.ini +0 -0
  49. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/cli/__init__.py +0 -0
  50. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/cli/dependencies.py +0 -0
  51. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/client/__init__.py +0 -0
  52. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/client/chroma_db.py +0 -0
  53. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/client/docling.py +0 -0
  54. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/client/gemini.py +0 -0
  55. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/client/vector_db.py +0 -0
  56. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/constants/__init__.py +0 -0
  57. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/constants/base_enum.py +0 -0
  58. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/constants/directory_names.py +0 -0
  59. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/constants/gemini.py +0 -0
  60. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/constants/openai.py +0 -0
  61. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/constants/pipeline_run_status.py +0 -0
  62. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/crud/__init__.py +0 -0
  63. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/crud/file.py +0 -0
  64. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/crud/functional_blocks.py +0 -0
  65. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/crud/netlist.py +0 -0
  66. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/crud/pipeline_run.py +0 -0
  67. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/digikey/__init__.py +0 -0
  68. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/digikey/digikey.py +0 -0
  69. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/main.py +0 -0
  70. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/mcp/__init__.py +0 -0
  71. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/mcp/configs/cline_mcp_settings.json +0 -0
  72. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/mcp/configs/mfcli.mcp.json +0 -0
  73. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/mcp/mcp_instance.py +0 -0
  74. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/mcp/server.py +0 -0
  75. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/mcp/state_manager.py +0 -0
  76. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/mcp/tools/__init__.py +0 -0
  77. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/mcp/tools/query_knowledgebase.py +0 -0
  78. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/models/__init__.py +0 -0
  79. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/models/base.py +0 -0
  80. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/models/bom.py +0 -0
  81. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/models/datasheet.py +0 -0
  82. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/models/debug_setup.py +0 -0
  83. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/models/file.py +0 -0
  84. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/models/file_docket.py +0 -0
  85. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/models/file_metadata.py +0 -0
  86. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/models/functional_blocks.py +0 -0
  87. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/models/llm_response.py +0 -0
  88. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/models/mcu.py +0 -0
  89. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/models/mcu_errata.py +0 -0
  90. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/models/netlist.py +0 -0
  91. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/models/pdf_parts.py +0 -0
  92. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/models/pipeline_run.py +0 -0
  93. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/models/project.py +0 -0
  94. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/models/project_metadata.py +0 -0
  95. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/models/schematic_cheatsheet.py +0 -0
  96. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/pipeline/__init__.py +0 -0
  97. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/pipeline/analysis/__init__.py +0 -0
  98. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/pipeline/analysis/bom_netlist_mapper.py +0 -0
  99. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/pipeline/analysis/generators/__init__.py +0 -0
  100. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/pipeline/analysis/generators/bom/__init__.py +0 -0
  101. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/pipeline/analysis/generators/bom/bom.py +0 -0
  102. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/pipeline/analysis/generators/debug_setup/__init__.py +0 -0
  103. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/pipeline/analysis/generators/debug_setup/debug_setup.py +0 -0
  104. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/pipeline/analysis/generators/debug_setup/instructions.py +0 -0
  105. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/pipeline/analysis/generators/functional_blocks/__init__.py +0 -0
  106. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/pipeline/analysis/generators/functional_blocks/functional_blocks.py +0 -0
  107. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/pipeline/analysis/generators/functional_blocks/instructions.py +0 -0
  108. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/pipeline/analysis/generators/functional_blocks/validator.py +0 -0
  109. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/pipeline/analysis/generators/generator.py +0 -0
  110. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/pipeline/analysis/generators/generator_base.py +0 -0
  111. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/pipeline/analysis/generators/mcu/__init__.py +0 -0
  112. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/pipeline/analysis/generators/mcu/instructions.py +0 -0
  113. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/pipeline/analysis/generators/mcu/mcu.py +0 -0
  114. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/pipeline/analysis/generators/mcu_errata/__init__.py +0 -0
  115. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/pipeline/analysis/generators/mcu_errata/instructions.py +0 -0
  116. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/pipeline/analysis/generators/mcu_errata/mcu_errata.py +0 -0
  117. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/pipeline/analysis/generators/schematic/__init__.py +0 -0
  118. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/pipeline/analysis/generators/schematic/instructions.py +0 -0
  119. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/pipeline/analysis/generators/schematic/schematic.py +0 -0
  120. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/pipeline/analysis/generators/summary/__init__.py +0 -0
  121. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/pipeline/analysis/generators/summary/summary.py +0 -0
  122. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/pipeline/data_enricher.py +0 -0
  123. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/pipeline/extractors/__init__.py +0 -0
  124. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/pipeline/extractors/pdf.py +0 -0
  125. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/pipeline/parser.py +0 -0
  126. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/pipeline/parsers/__init__.py +0 -0
  127. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/pipeline/parsers/netlist/__init__.py +0 -0
  128. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/pipeline/parsers/netlist/edif.py +0 -0
  129. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/pipeline/parsers/netlist/kicad_legacy_net.py +0 -0
  130. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/pipeline/parsers/netlist/kicad_spice.py +0 -0
  131. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/pipeline/parsers/netlist/pads.py +0 -0
  132. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/pipeline/parsers/netlist/protel.py +0 -0
  133. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/pipeline/parsers/netlist/protel_detector.py +0 -0
  134. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/pipeline/parsers/schematic/__init__.py +0 -0
  135. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/pipeline/parsers/schematic/kicad_sch_detector.py +0 -0
  136. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/pipeline/preprocessors/__init__.py +0 -0
  137. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/pipeline/preprocessors/user_guide.py +0 -0
  138. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/pipeline/run_context.py +0 -0
  139. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/pipeline/schema_mapper.py +0 -0
  140. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/utils/__init__.py +0 -0
  141. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/utils/file_upload.py +0 -0
  142. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/utils/files.py +0 -0
  143. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/utils/http_requests.py +0 -0
  144. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/utils/kb_lister.py +0 -0
  145. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/utils/kb_remover.py +0 -0
  146. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/utils/logger.py +0 -0
  147. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/utils/mcp_configurator.py +0 -0
  148. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/utils/migrations.py +0 -0
  149. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/utils/orm.py +0 -0
  150. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/utils/pdf_splitter.py +0 -0
  151. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/utils/pre_uninstall.py +0 -0
  152. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/utils/query_service.py +0 -0
  153. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/utils/ssl_installer.py +0 -0
  154. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/utils/tools.py +0 -0
  155. {mfcli-0.2.5 → mfcli-0.2.7}/mfcli/utils/vectorizer.py +0 -0
  156. {mfcli-0.2.5 → mfcli-0.2.7}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mfcli
3
- Version: 0.2.5
3
+ Version: 0.2.7
4
4
  Summary: AI-powered CLI for analyzing hardware engineering documents
5
5
  Author: Multifactor AI
6
6
  License: MIT
@@ -32,8 +32,6 @@ Requires-Dist: botocore
32
32
  Requires-Dist: pydantic==2.11.9
33
33
  Requires-Dist: protobuf
34
34
  Requires-Dist: sqlmodel
35
- Requires-Dist: llama-parse
36
- Requires-Dist: llama-index-core
37
35
  Requires-Dist: requests
38
36
  Requires-Dist: openai
39
37
  Requires-Dist: langchain
@@ -75,6 +73,7 @@ An AI-powered engineering document processing pipeline that intelligently analyz
75
73
 
76
74
  ## 📋 Table of Contents
77
75
 
76
+ - [Quick Start](#quick-start)
78
77
  - [Architecture](#architecture)
79
78
  - [Prerequisites](#prerequisites)
80
79
  - [Installation](#installation)
@@ -89,6 +88,23 @@ An AI-powered engineering document processing pipeline that intelligently analyz
89
88
  - [Development](#development)
90
89
  - [Troubleshooting](#troubleshooting)
91
90
 
91
+ ## 🚀 Quick Start
92
+
93
+ **New to mfcli?** Check out our **[Quick Start Guide](QUICKSTART.md)** for step-by-step instructions to get up and running in minutes!
94
+
95
+ The Quick Start Guide covers:
96
+ - ✅ Installing Cline for VS Code
97
+ - ✅ Installing mfcli with pipx (recommended)
98
+ - ✅ Setting up API keys
99
+ - ✅ Creating your first project
100
+ - ✅ Processing your hardware documents
101
+ - ✅ Querying your knowledge base with AI
102
+ - ✅ Currently unsupported features and workarounds
103
+
104
+ **[👉 Go to Quick Start Guide →](QUICKSTART.md)**
105
+
106
+ ---
107
+
92
108
  ## 🏗️ Architecture
93
109
 
94
110
  The system uses a streamlined architecture with a single controller agent that orchestrates a sequential processing pipeline:
@@ -96,7 +112,7 @@ The system uses a streamlined architecture with a single controller agent that o
96
112
  ```
97
113
  Controller Agent
98
114
  ├── Tools:
99
- │ ├── run_pipeline (Sequential pipeline execution)
115
+ │ ├── run (Sequential pipeline execution)
100
116
  │ └── query_knowledgebase (RAG-based document queries)
101
117
 
102
118
  └── Pipeline Stages:
@@ -360,18 +376,18 @@ mfcli init
360
376
  ```
361
377
 
362
378
  You'll be prompted to enter a project name (3-45 characters, alphanumeric with underscores/hyphens allowed). If your directory is a git repository, the repository name will be suggested as the default - simply press Enter to accept it or type a different name. This creates a `multifactor/` folder at the git root (or current directory) containing:
363
- - `context/` - **Place your hardware design files here for processing**
379
+ - `design/` - **Place your hardware design files here for processing**
364
380
  - `config.json` - Project configuration with your project name
365
381
  - `file_docket.json` - File tracking and metadata
366
382
  - `generated_files/`, `hw_cheat_sheets/`, `data_sheets/`, etc. - Output folders
367
383
 
368
- **3. Place your files in the context folder:**
384
+ **3. Place your files in the design folder:**
369
385
 
370
386
  ```bash
371
- # Copy or move your hardware design files to the context folder
387
+ # Copy or move your hardware design files to the design folder
372
388
  # Example for git repo at C:\git\my-project\:
373
- copy *.pdf C:\git\my-project\multifactor\context\
374
- copy *.csv C:\git\my-project\multifactor\context\
389
+ copy *.pdf C:\git\my-project\multifactor\design\
390
+ copy *.csv C:\git\my-project\multifactor\design\
375
391
  ```
376
392
 
377
393
  **4. Run the pipeline:**
@@ -381,7 +397,7 @@ mfcli run
381
397
  ```
382
398
 
383
399
  This will:
384
- - Process all supported files in the `multifactor/context/` directory
400
+ - Process all supported files in the `multifactor/design/` directory
385
401
  - Skip files that have already been processed (matching MD5 checksum)
386
402
  - Prompt for confirmation if a file has been modified (different MD5)
387
403
  - Generate BOM CSV files (if schematics are found)
@@ -416,9 +432,56 @@ This ensures efficient processing by only analyzing new or changed files, while
416
432
  The `mfcli` tool provides the following commands:
417
433
 
418
434
  - **`mfcli init`** - Initialize a new project in the current directory
419
- - **`mfcli run_pipeline`** - Run the analysis pipeline on the current directory
435
+ - **`mfcli run`** - Run the analysis pipeline on the current directory
420
436
  - **`mfcli web [--port PORT]`** - Start the web UI (default port: 9999)
421
- - **`mfcli addfile FILE [--purpose PURPOSE]`** - Add a file to ChromaDB knowledge base
437
+ - **`mfcli add FILE [--purpose PURPOSE]`** - Add a file to ChromaDB knowledge base
438
+ - **`mfcli ls`** - List all files that have been vectorized into the knowledge base
439
+ - **`mfcli rm FILENAME [--yes]`** - Remove files from the knowledge base by filename
440
+ - **`mfcli configure [--check]`** - Interactive setup wizard to configure API keys and settings
441
+ - **`mfcli log-level LEVEL`** - Set the logging level (DEBUG, INFO, WARNING, ERROR, CRITICAL)
442
+ - **`mfcli setup-mcp`** - Auto-configure MCP server for Cline and Claude Code
443
+ - **`mfcli doctor`** - Run system health checks and diagnose issues
444
+ - **`mfcli clean [--accept] [--all]`** - Clean all mfcli app data
445
+ - **`mfcli pre-uninstall`** - Check for running processes before uninstallation
446
+
447
+ #### Configure Logging Level
448
+
449
+ Set the logging verbosity level for mfcli operations:
450
+
451
+ ```bash
452
+ # Set to DEBUG for detailed troubleshooting
453
+ mfcli log-level DEBUG
454
+
455
+ # Set to INFO for normal operation (default)
456
+ mfcli log-level INFO
457
+
458
+ # Set to WARNING to only see warnings and errors
459
+ mfcli log-level WARNING
460
+
461
+ # Set to ERROR to only see errors
462
+ mfcli log-level ERROR
463
+
464
+ # Set to CRITICAL for only critical errors
465
+ mfcli log-level CRITICAL
466
+ ```
467
+
468
+ The log level setting is stored in your configuration file (`~/Multifactor/.env`) and will take effect on the next mfcli command. This is particularly useful when:
469
+ - **DEBUG**: Troubleshooting issues or understanding detailed pipeline operations
470
+ - **INFO**: Normal day-to-day operation with informative messages
471
+ - **WARNING**: Production use where you only want to see potential issues
472
+ - **ERROR**: When you only care about actual errors
473
+
474
+ **Example:**
475
+ ```bash
476
+ # Enable detailed logging for troubleshooting
477
+ mfcli log-level DEBUG
478
+
479
+ # Run the pipeline with verbose output
480
+ mfcli run
481
+
482
+ # Return to normal logging
483
+ mfcli log-level INFO
484
+ ```
422
485
 
423
486
  #### Start Web UI
424
487
 
@@ -519,7 +582,7 @@ To use the MCP server with Cline (or other MCP-compatible clients), add the foll
519
582
  ```bash
520
583
  cd /path/to/hardware/files
521
584
  mfcli init
522
- mfcli run_pipeline
585
+ mfcli run
523
586
  ```
524
587
 
525
588
  3. **Add the MCP configuration** to your Cline/Claude settings file (see Configuration above)
@@ -543,7 +606,7 @@ To use the MCP server with Cline (or other MCP-compatible clients), add the foll
543
606
  - **Solution**: Run the pipeline at least once to create the vector database:
544
607
  ```bash
545
608
  mfcli init
546
- mfcli run_pipeline
609
+ mfcli run
547
610
  ```
548
611
 
549
612
  **Error**: `MCP server timeout`
@@ -666,12 +729,11 @@ Created within a **"multifactor"** folder at the **git repository root** if you'
666
729
  └── multifactor/ # Parent folder for all project files and outputs
667
730
  ├── config.json # Project configuration (project name, etc.)
668
731
  ├── file_docket.json # File tracking and processing metadata
669
- ├── context/ # Place your hardware design files here for processing
732
+ ├── design/ # Place your hardware design files here for processing
670
733
  ├── generated_files/ # BOM CSV files generated from schematics
671
734
  ├── hw_cheat_sheets/ # JSON cheat sheets (MCU, errata, debug, functional blocks)
672
735
  ├── data_sheets/ # Downloaded component datasheets (from BOM processing)
673
736
  ├── pdf_parts/ # Extracted PDF parts for analysis
674
- ├── agent_instructions/ # (Reserved for future use)
675
737
  ├── fw_tasks/ # (Reserved for future use)
676
738
  └── requirements/ # (Reserved for future use)
677
739
  ```
@@ -682,7 +744,7 @@ If you're in a git repository at `C:\git\my-hardware-project\` and run `mfcli in
682
744
 
683
745
  - `C:\git\my-hardware-project\multifactor\config.json` - Project configuration
684
746
  - `C:\git\my-hardware-project\multifactor\file_docket.json` - File tracking
685
- - `C:\git\my-hardware-project\multifactor\context\` - Place source files here
747
+ - `C:\git\my-hardware-project\multifactor\design\` - Place source files here
686
748
  - `C:\git\my-hardware-project\multifactor\generated_files\` - Generated BOM files
687
749
  - `C:\git\my-hardware-project\multifactor\hw_cheat_sheets\` - Cheat sheets
688
750
  - `C:\git\my-hardware-project\multifactor\data_sheets\` - Downloaded datasheets
@@ -694,7 +756,7 @@ If you're NOT in a git repository and run `mfcli init` from `C:\Projects\hardwar
694
756
 
695
757
  - `C:\Projects\hardware\board_v1\multifactor\config.json` - Project configuration
696
758
  - `C:\Projects\hardware\board_v1\multifactor\file_docket.json` - File tracking
697
- - `C:\Projects\hardware\board_v1\multifactor\context\` - Place source files here
759
+ - `C:\Projects\hardware\board_v1\multifactor\design\` - Place source files here
698
760
  - `C:\Projects\hardware\board_v1\multifactor\generated_files\` - Generated BOM files
699
761
  - `C:\Projects\hardware\board_v1\multifactor\hw_cheat_sheets\` - Cheat sheets
700
762
  - `C:\Projects\hardware\board_v1\multifactor\data_sheets\` - Downloaded datasheets
@@ -805,7 +867,7 @@ First, navigate to your hardware files directory and initialize:
805
867
  ```bash
806
868
  cd /path/to/hardware/files
807
869
  mfcli init
808
- mfcli run_pipeline
870
+ mfcli run
809
871
  ```
810
872
 
811
873
  ### Starting the Web UI
@@ -902,10 +964,10 @@ pytest app/tests/
902
964
  #### 4. Pipeline Processing Failures
903
965
 
904
966
  **Error**: `Could not find metadata file. Please initialize this repo with "mfcli init"`
905
- - **Solution**: You need to run `mfcli init` in your hardware files directory before running `mfcli run_pipeline`
967
+ - **Solution**: You need to run `mfcli init` in your hardware files directory before running `mfcli run`
906
968
 
907
969
  **Error**: `File not found`
908
- - **Solution**: Make sure you're running `mfcli run_pipeline` from within your hardware files directory (where you ran `mfcli init`)
970
+ - **Solution**: Make sure you're running `mfcli run` from within your hardware files directory (where you ran `mfcli init`)
909
971
 
910
972
  **Error**: `File extension is not supported`
911
973
  - **Solution**: Check that your files are in supported formats (PDF, EDIF, CSV, .net, .cir, .asc)
@@ -17,6 +17,7 @@ An AI-powered engineering document processing pipeline that intelligently analyz
17
17
 
18
18
  ## 📋 Table of Contents
19
19
 
20
+ - [Quick Start](#quick-start)
20
21
  - [Architecture](#architecture)
21
22
  - [Prerequisites](#prerequisites)
22
23
  - [Installation](#installation)
@@ -31,6 +32,23 @@ An AI-powered engineering document processing pipeline that intelligently analyz
31
32
  - [Development](#development)
32
33
  - [Troubleshooting](#troubleshooting)
33
34
 
35
+ ## 🚀 Quick Start
36
+
37
+ **New to mfcli?** Check out our **[Quick Start Guide](QUICKSTART.md)** for step-by-step instructions to get up and running in minutes!
38
+
39
+ The Quick Start Guide covers:
40
+ - ✅ Installing Cline for VS Code
41
+ - ✅ Installing mfcli with pipx (recommended)
42
+ - ✅ Setting up API keys
43
+ - ✅ Creating your first project
44
+ - ✅ Processing your hardware documents
45
+ - ✅ Querying your knowledge base with AI
46
+ - ✅ Currently unsupported features and workarounds
47
+
48
+ **[👉 Go to Quick Start Guide →](QUICKSTART.md)**
49
+
50
+ ---
51
+
34
52
  ## 🏗️ Architecture
35
53
 
36
54
  The system uses a streamlined architecture with a single controller agent that orchestrates a sequential processing pipeline:
@@ -38,7 +56,7 @@ The system uses a streamlined architecture with a single controller agent that o
38
56
  ```
39
57
  Controller Agent
40
58
  ├── Tools:
41
- │ ├── run_pipeline (Sequential pipeline execution)
59
+ │ ├── run (Sequential pipeline execution)
42
60
  │ └── query_knowledgebase (RAG-based document queries)
43
61
 
44
62
  └── Pipeline Stages:
@@ -302,18 +320,18 @@ mfcli init
302
320
  ```
303
321
 
304
322
  You'll be prompted to enter a project name (3-45 characters, alphanumeric with underscores/hyphens allowed). If your directory is a git repository, the repository name will be suggested as the default - simply press Enter to accept it or type a different name. This creates a `multifactor/` folder at the git root (or current directory) containing:
305
- - `context/` - **Place your hardware design files here for processing**
323
+ - `design/` - **Place your hardware design files here for processing**
306
324
  - `config.json` - Project configuration with your project name
307
325
  - `file_docket.json` - File tracking and metadata
308
326
  - `generated_files/`, `hw_cheat_sheets/`, `data_sheets/`, etc. - Output folders
309
327
 
310
- **3. Place your files in the context folder:**
328
+ **3. Place your files in the design folder:**
311
329
 
312
330
  ```bash
313
- # Copy or move your hardware design files to the context folder
331
+ # Copy or move your hardware design files to the design folder
314
332
  # Example for git repo at C:\git\my-project\:
315
- copy *.pdf C:\git\my-project\multifactor\context\
316
- copy *.csv C:\git\my-project\multifactor\context\
333
+ copy *.pdf C:\git\my-project\multifactor\design\
334
+ copy *.csv C:\git\my-project\multifactor\design\
317
335
  ```
318
336
 
319
337
  **4. Run the pipeline:**
@@ -323,7 +341,7 @@ mfcli run
323
341
  ```
324
342
 
325
343
  This will:
326
- - Process all supported files in the `multifactor/context/` directory
344
+ - Process all supported files in the `multifactor/design/` directory
327
345
  - Skip files that have already been processed (matching MD5 checksum)
328
346
  - Prompt for confirmation if a file has been modified (different MD5)
329
347
  - Generate BOM CSV files (if schematics are found)
@@ -358,9 +376,56 @@ This ensures efficient processing by only analyzing new or changed files, while
358
376
  The `mfcli` tool provides the following commands:
359
377
 
360
378
  - **`mfcli init`** - Initialize a new project in the current directory
361
- - **`mfcli run_pipeline`** - Run the analysis pipeline on the current directory
379
+ - **`mfcli run`** - Run the analysis pipeline on the current directory
362
380
  - **`mfcli web [--port PORT]`** - Start the web UI (default port: 9999)
363
- - **`mfcli addfile FILE [--purpose PURPOSE]`** - Add a file to ChromaDB knowledge base
381
+ - **`mfcli add FILE [--purpose PURPOSE]`** - Add a file to ChromaDB knowledge base
382
+ - **`mfcli ls`** - List all files that have been vectorized into the knowledge base
383
+ - **`mfcli rm FILENAME [--yes]`** - Remove files from the knowledge base by filename
384
+ - **`mfcli configure [--check]`** - Interactive setup wizard to configure API keys and settings
385
+ - **`mfcli log-level LEVEL`** - Set the logging level (DEBUG, INFO, WARNING, ERROR, CRITICAL)
386
+ - **`mfcli setup-mcp`** - Auto-configure MCP server for Cline and Claude Code
387
+ - **`mfcli doctor`** - Run system health checks and diagnose issues
388
+ - **`mfcli clean [--accept] [--all]`** - Clean all mfcli app data
389
+ - **`mfcli pre-uninstall`** - Check for running processes before uninstallation
390
+
391
+ #### Configure Logging Level
392
+
393
+ Set the logging verbosity level for mfcli operations:
394
+
395
+ ```bash
396
+ # Set to DEBUG for detailed troubleshooting
397
+ mfcli log-level DEBUG
398
+
399
+ # Set to INFO for normal operation (default)
400
+ mfcli log-level INFO
401
+
402
+ # Set to WARNING to only see warnings and errors
403
+ mfcli log-level WARNING
404
+
405
+ # Set to ERROR to only see errors
406
+ mfcli log-level ERROR
407
+
408
+ # Set to CRITICAL for only critical errors
409
+ mfcli log-level CRITICAL
410
+ ```
411
+
412
+ The log level setting is stored in your configuration file (`~/Multifactor/.env`) and will take effect on the next mfcli command. This is particularly useful when:
413
+ - **DEBUG**: Troubleshooting issues or understanding detailed pipeline operations
414
+ - **INFO**: Normal day-to-day operation with informative messages
415
+ - **WARNING**: Production use where you only want to see potential issues
416
+ - **ERROR**: When you only care about actual errors
417
+
418
+ **Example:**
419
+ ```bash
420
+ # Enable detailed logging for troubleshooting
421
+ mfcli log-level DEBUG
422
+
423
+ # Run the pipeline with verbose output
424
+ mfcli run
425
+
426
+ # Return to normal logging
427
+ mfcli log-level INFO
428
+ ```
364
429
 
365
430
  #### Start Web UI
366
431
 
@@ -461,7 +526,7 @@ To use the MCP server with Cline (or other MCP-compatible clients), add the foll
461
526
  ```bash
462
527
  cd /path/to/hardware/files
463
528
  mfcli init
464
- mfcli run_pipeline
529
+ mfcli run
465
530
  ```
466
531
 
467
532
  3. **Add the MCP configuration** to your Cline/Claude settings file (see Configuration above)
@@ -485,7 +550,7 @@ To use the MCP server with Cline (or other MCP-compatible clients), add the foll
485
550
  - **Solution**: Run the pipeline at least once to create the vector database:
486
551
  ```bash
487
552
  mfcli init
488
- mfcli run_pipeline
553
+ mfcli run
489
554
  ```
490
555
 
491
556
  **Error**: `MCP server timeout`
@@ -608,12 +673,11 @@ Created within a **"multifactor"** folder at the **git repository root** if you'
608
673
  └── multifactor/ # Parent folder for all project files and outputs
609
674
  ├── config.json # Project configuration (project name, etc.)
610
675
  ├── file_docket.json # File tracking and processing metadata
611
- ├── context/ # Place your hardware design files here for processing
676
+ ├── design/ # Place your hardware design files here for processing
612
677
  ├── generated_files/ # BOM CSV files generated from schematics
613
678
  ├── hw_cheat_sheets/ # JSON cheat sheets (MCU, errata, debug, functional blocks)
614
679
  ├── data_sheets/ # Downloaded component datasheets (from BOM processing)
615
680
  ├── pdf_parts/ # Extracted PDF parts for analysis
616
- ├── agent_instructions/ # (Reserved for future use)
617
681
  ├── fw_tasks/ # (Reserved for future use)
618
682
  └── requirements/ # (Reserved for future use)
619
683
  ```
@@ -624,7 +688,7 @@ If you're in a git repository at `C:\git\my-hardware-project\` and run `mfcli in
624
688
 
625
689
  - `C:\git\my-hardware-project\multifactor\config.json` - Project configuration
626
690
  - `C:\git\my-hardware-project\multifactor\file_docket.json` - File tracking
627
- - `C:\git\my-hardware-project\multifactor\context\` - Place source files here
691
+ - `C:\git\my-hardware-project\multifactor\design\` - Place source files here
628
692
  - `C:\git\my-hardware-project\multifactor\generated_files\` - Generated BOM files
629
693
  - `C:\git\my-hardware-project\multifactor\hw_cheat_sheets\` - Cheat sheets
630
694
  - `C:\git\my-hardware-project\multifactor\data_sheets\` - Downloaded datasheets
@@ -636,7 +700,7 @@ If you're NOT in a git repository and run `mfcli init` from `C:\Projects\hardwar
636
700
 
637
701
  - `C:\Projects\hardware\board_v1\multifactor\config.json` - Project configuration
638
702
  - `C:\Projects\hardware\board_v1\multifactor\file_docket.json` - File tracking
639
- - `C:\Projects\hardware\board_v1\multifactor\context\` - Place source files here
703
+ - `C:\Projects\hardware\board_v1\multifactor\design\` - Place source files here
640
704
  - `C:\Projects\hardware\board_v1\multifactor\generated_files\` - Generated BOM files
641
705
  - `C:\Projects\hardware\board_v1\multifactor\hw_cheat_sheets\` - Cheat sheets
642
706
  - `C:\Projects\hardware\board_v1\multifactor\data_sheets\` - Downloaded datasheets
@@ -747,7 +811,7 @@ First, navigate to your hardware files directory and initialize:
747
811
  ```bash
748
812
  cd /path/to/hardware/files
749
813
  mfcli init
750
- mfcli run_pipeline
814
+ mfcli run
751
815
  ```
752
816
 
753
817
  ### Starting the Web UI
@@ -844,10 +908,10 @@ pytest app/tests/
844
908
  #### 4. Pipeline Processing Failures
845
909
 
846
910
  **Error**: `Could not find metadata file. Please initialize this repo with "mfcli init"`
847
- - **Solution**: You need to run `mfcli init` in your hardware files directory before running `mfcli run_pipeline`
911
+ - **Solution**: You need to run `mfcli init` in your hardware files directory before running `mfcli run`
848
912
 
849
913
  **Error**: `File not found`
850
- - **Solution**: Make sure you're running `mfcli run_pipeline` from within your hardware files directory (where you ran `mfcli init`)
914
+ - **Solution**: Make sure you're running `mfcli run` from within your hardware files directory (where you ran `mfcli init`)
851
915
 
852
916
  **Error**: `File extension is not supported`
853
917
  - **Solution**: Check that your files are in supported formats (PDF, EDIF, CSV, .net, .cir, .asc)
@@ -24,17 +24,23 @@ google_api_key=your_google_api_key_here
24
24
  # Note: Requires billing enabled on your OpenAI account
25
25
  openai_api_key=your_openai_api_key_here
26
26
 
27
- # LlamaParse API Key
28
- # Used for advanced PDF parsing and text extraction
29
- # Get your key from: https://cloud.llamaindex.ai/
30
- llama_cloud_api_key=your_llamaparse_api_key_here
31
-
32
27
  # DigiKey API Credentials
33
28
  # Used for automatic datasheet downloads from DigiKey
34
29
  # Get your credentials from: https://developer.digikey.com/
35
30
  digikey_client_id=your_digikey_client_id_here
36
31
  digikey_client_secret=your_digikey_client_secret_here
37
32
 
33
+ # ============================================================
34
+ # LOGGING CONFIGURATION
35
+ # ============================================================
36
+
37
+ # Log level for mfcli operations
38
+ # Available levels: DEBUG, INFO, WARNING, ERROR, CRITICAL
39
+ # Default: INFO
40
+ # Use DEBUG for detailed troubleshooting, INFO for normal operation
41
+ # Change with: mfcli log-level <LEVEL>
42
+ log_level=INFO
43
+
38
44
  # ============================================================
39
45
  # VECTOR DATABASE CONFIGURATION
40
46
  # ============================================================
@@ -4,7 +4,7 @@ from google.adk.agents import Agent
4
4
 
5
5
  from mfcli.agents.controller.tools import query_knowledgebase, list_projects
6
6
  from mfcli.agents.tools.general import load_agent_config
7
- from mfcli.pipeline.pipeline import run_pipeline
7
+ from mfcli.pipeline.pipeline import run
8
8
 
9
9
  config_path = Path(__file__).parent / "config.yaml"
10
10
  config = load_agent_config(config_path)
@@ -14,6 +14,6 @@ root_agent = Agent(
14
14
  model=config.model,
15
15
  description=config.description,
16
16
  instruction=config.instructions,
17
- tools=[run_pipeline, query_knowledgebase, list_projects],
17
+ tools=[run, query_knowledgebase, list_projects],
18
18
  output_key="pipeline_run_output"
19
19
  )
@@ -9,7 +9,7 @@ instructions: |
9
9
  - The user asks you to analyze documents in a directory
10
10
  - If the user does not specify the name of the project to analyze, run the list_projects tool and ask the user to choose it from the returned list first
11
11
  - Display the list of projects neatly as a bulleted list
12
- - Once the user has chosen a project, you MUST then run the run_pipeline tool to start the pipeline
12
+ - Once the user has chosen a project, you MUST then run the run tool to start the pipeline
13
13
  - Respond to the user with the output from the pipeline
14
14
  - You will receive a summary from the completed pipeline about the number of files which were successfully processed, the number that failed and the total
15
15
  - You will also receive a list of errors, if any