mcp-souschef 2.5.3__py3-none-any.whl → 3.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.
@@ -1,31 +1,44 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcp-souschef
3
- Version: 2.5.3
3
+ Version: 3.0.0
4
4
  Summary: AI-powered MCP server for Chef to Ansible conversion
5
5
  License: MIT
6
6
  License-File: LICENSE
7
+ Keywords: chef,ansible,migration,infrastructure,automation,mcp,ai,conversion
7
8
  Author: SousChef Contributors
8
- Requires-Python: >=3.14,<4.0
9
+ Requires-Python: >=3.13,<4.0
10
+ Classifier: Development Status :: 4 - Beta
11
+ Classifier: Intended Audience :: Developers
12
+ Classifier: Intended Audience :: System Administrators
9
13
  Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Operating System :: OS Independent
10
15
  Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.13
11
17
  Classifier: Programming Language :: Python :: 3.14
18
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
19
+ Classifier: Topic :: System :: Systems Administration
20
+ Classifier: Topic :: Utilities
12
21
  Provides-Extra: ui
13
22
  Requires-Dist: anthropic (>=0.75.0)
14
23
  Requires-Dist: click (>=8.1.0)
15
24
  Requires-Dist: mcp (>=1.25.0)
25
+ Requires-Dist: openai (>=1.0.0)
16
26
  Requires-Dist: pandas (>=2.0.0) ; extra == "ui"
17
27
  Requires-Dist: plotly (>=5.0.0)
18
28
  Requires-Dist: python-dotenv (>=1.2.1)
19
29
  Requires-Dist: pyyaml (>=6.0.0)
20
30
  Requires-Dist: streamlit (>=1.28.0)
21
31
  Requires-Dist: zod (>=0.8.0)
32
+ Project-URL: Documentation, https://kpeacocke.github.io/souschef/
33
+ Project-URL: Homepage, https://github.com/kpeacocke/souschef
34
+ Project-URL: Repository, https://github.com/kpeacocke/souschef
22
35
  Description-Content-Type: text/markdown
23
36
 
24
37
  # Chef to Ansible migration - SousChef MCP
25
38
 
26
39
  An AI-powered MCP (Model Context Protocol) server that provides comprehensive Chef-to-Ansible migration capabilities for enterprise infrastructure transformation.
27
40
 
28
- [![PyPI version](https://img.shields.io/pypi/v/mcp-souschef.svg)](https://pypi.org/project/mcp-souschef/)
41
+ [![GitHub release](https://img.shields.io/github/v/release/kpeacocke/souschef)](https://github.com/kpeacocke/souschef/releases)
29
42
  [![Python Version](https://img.shields.io/badge/python-3.14%2B-blue.svg)](https://www.python.org/downloads/)
30
43
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
31
44
  [![Test Coverage](https://img.shields.io/badge/coverage-91%25-brightgreen.svg)](htmlcov/index.html)
@@ -37,17 +50,17 @@ An AI-powered MCP (Model Context Protocol) server that provides comprehensive Ch
37
50
 
38
51
  ## Overview - Chef to Ansible features
39
52
 
40
- SousChef is a complete enterprise-grade migration platform with **27 primary MCP tools** organised across **9 major capability areas** to facilitate Chef-to-Ansible AWX/AAP migrations. From cookbook analysis to deployment pattern conversion, including Chef Habitat to containerised deployments and CI/CD pipeline generation, SousChef provides everything needed for a successful infrastructure automation migration.
53
+ SousChef is a complete enterprise-grade migration platform with **32 primary MCP tools** organised across **10 major capability areas** to facilitate Chef-to-Ansible AWX/AAP migrations. From cookbook analysis to deployment pattern conversion, including Chef Habitat to containerised deployments and CI/CD pipeline generation, SousChef provides everything needed for a successful infrastructure automation migration.
41
54
 
42
55
  ### About Tool Counts
43
56
 
44
- **Why 27 tools in the documentation but more in the server?**
57
+ **Why 32 tools in the documentation but more in the server?**
45
58
 
46
- The MCP server provides **37 total tools** (35 public + 2 internal). This documentation focuses on the **27 primary user-facing tools** that cover the main migration capabilities. The remaining 10 tools are low-level filesystem operations and helper utilities used internally by the main tools.
59
+ The MCP server provides **37 total tools** (35 public + 2 internal). This documentation focuses on the **32 primary user-facing tools** that cover the main migration capabilities. The remaining 3 tools are low-level filesystem operations and helper utilities used internally by the main tools.
47
60
 
48
61
  As a user, you'll primarily interact with the 27 documented tools. Your AI assistant may use the additional tools automatically when needed, but you don't need to know about them for successful migrations.
49
62
 
50
- > 💡 **For developers:** See `souschef/server.py` for the complete list of all 37 registered tools.
63
+ > **For developers:** See `souschef/server.py` for the complete list of all 37 registered tools.
51
64
 
52
65
  ## Model Agnostic - Works with Any AI Model
53
66
 
@@ -95,7 +108,7 @@ Complete cookbook introspection and analysis tools:
95
108
  - **list_directory** - Navigate and explore cookbook directory structures
96
109
  - **read_file** - Read cookbook files with error handling
97
110
  - **read_cookbook_metadata** - Parse metadata.rb files for dependencies and cookbook information
98
- - **parse_recipe** - Analyze Chef recipes and extract resources, actions, and properties
111
+ - **parse_recipe** - Analyse Chef recipes and extract resources, actions, and properties
99
112
  - **parse_attributes** - Parse attribute files with **advanced precedence resolution** (6 levels: default, force_default, normal, override, force_override, automatic)
100
113
  - **list_cookbook_structure** - Display complete cookbook directory hierarchy
101
114
 
@@ -116,7 +129,7 @@ Convert Chef search patterns to dynamic Ansible inventory:
116
129
 
117
130
  - **convert_chef_search_to_inventory** - Transform Chef search queries to Ansible inventory groups
118
131
  - **generate_dynamic_inventory_script** - Create dynamic inventory scripts from Chef server queries
119
- - **analyze_chef_search_patterns** - Discover and analyze search usage in cookbooks
132
+ - **analyse_chef_search_patterns** - Discover and analyse search usage in cookbooks
120
133
 
121
134
  ### 4. InSpec Integration & Validation
122
135
  Complete InSpec-to-Ansible testing pipeline:
@@ -130,14 +143,14 @@ Chef data bags to Ansible vars/vault conversion:
130
143
 
131
144
  - **convert_chef_databag_to_vars** - Transform data bags to Ansible variable files
132
145
  - **generate_ansible_vault_from_databags** - Convert encrypted data bags to Ansible Vault
133
- - **analyze_chef_databag_usage** - Analyze data bag usage patterns in cookbooks
146
+ - **analyse_chef_databag_usage** - Analyse data bag usage patterns in cookbooks
134
147
 
135
148
  ### 6. Environment & Configuration Management
136
149
  Chef environments to Ansible inventory groups:
137
150
 
138
151
  - **convert_chef_environment_to_inventory_group** - Transform Chef environments to inventory
139
152
  - **generate_inventory_from_chef_environments** - Generate complete inventory from environments
140
- - **analyze_chef_environment_usage** - Analyze environment usage in cookbooks
153
+ - **analyse_chef_environment_usage** - Analyse environment usage in cookbooks
141
154
 
142
155
  ### 7. AWX/Ansible Automation Platform Integration
143
156
  Enterprise AWX/AAP configuration generation:
@@ -263,10 +276,10 @@ Output formats:
263
276
  - **json**: Structured JSON for programmatic processing
264
277
  - **summary**: Quick overview with counts only
265
278
 
266
- - **analyze_chef_application_patterns** - Identify application deployment patterns
279
+ - **analyse_chef_application_patterns** - Identify application deployment patterns
267
280
  - **assess_chef_migration_complexity** - Comprehensive migration complexity assessment
268
281
  - **generate_migration_plan** - Create detailed migration execution plans
269
- - **analyze_cookbook_dependencies** - Analyze dependencies and migration order
282
+ - **analyse_cookbook_dependencies** - Analyse dependencies and migration order
270
283
  - **generate_migration_report** - Generate executive and technical migration reports
271
284
 
272
285
  ## Migration Workflow
@@ -276,8 +289,8 @@ Output formats:
276
289
  # Assess migration complexity
277
290
  assess_chef_migration_complexity /path/to/cookbooks
278
291
 
279
- # Analyze cookbook dependencies
280
- analyze_cookbook_dependencies /path/to/cookbook
292
+ # Analyse cookbook dependencies
293
+ analyse_cookbook_dependencies /path/to/cookbook
281
294
 
282
295
  # Generate migration plan
283
296
  generate_migration_plan '{\"cookbooks\": [\"/path/to/cookbook1\", \"/path/to/cookbook2\"]}'
@@ -369,6 +382,79 @@ souschef ui
369
382
  souschef ui --port 8080
370
383
  ```
371
384
 
385
+ **Run in Docker:**
386
+ ```bash
387
+ # Build the image
388
+ docker build -t souschef-ui .
389
+
390
+ # Run the container
391
+ docker run -p 9999:9999 souschef-ui
392
+
393
+ # Or use docker-compose
394
+ docker-compose up
395
+ ```
396
+
397
+ **Docker Environment Configuration:**
398
+
399
+ SousChef supports AI configuration via environment variables in Docker containers. Create a `.env` file in your project root:
400
+
401
+ ```bash
402
+ # Copy the example environment file
403
+ cp .env.example .env
404
+
405
+ # Edit with your AI provider settings
406
+ nano .env
407
+ ```
408
+
409
+ **Example .env file:**
410
+ ```dotenv
411
+ # AI Configuration
412
+ SOUSCHEF_AI_PROVIDER=Anthropic (Claude)
413
+ SOUSCHEF_AI_MODEL=claude-3-5-sonnet-20241022
414
+ SOUSCHEF_AI_API_KEY=your-api-key-here
415
+ SOUSCHEF_AI_BASE_URL=
416
+ SOUSCHEF_AI_PROJECT_ID=
417
+ SOUSCHEF_AI_TEMPERATURE=0.7
418
+ SOUSCHEF_AI_MAX_TOKENS=4000
419
+
420
+ # Streamlit Configuration (optional)
421
+ STREAMLIT_SERVER_PORT=9999
422
+ STREAMLIT_SERVER_HEADLESS=true
423
+ ```
424
+
425
+ **Supported AI Providers:**
426
+ - `Anthropic (Claude)` - Anthropic Claude models
427
+ - `OpenAI (GPT)` - OpenAI GPT models
428
+ - `IBM Watsonx` - IBM Watsonx AI models
429
+ - `Red Hat Lightspeed` - Red Hat Lightspeed models
430
+
431
+ **Environment Variables:**
432
+ - `SOUSCHEF_AI_PROVIDER` - AI provider name (required)
433
+ - `SOUSCHEF_AI_MODEL` - Model name (required)
434
+ - `SOUSCHEF_AI_API_KEY` - API key for authentication (required)
435
+ - `SOUSCHEF_AI_BASE_URL` - Custom API base URL (optional)
436
+ - `SOUSCHEF_AI_PROJECT_ID` - Project ID for Watsonx (optional)
437
+ - `SOUSCHEF_AI_TEMPERATURE` - Model temperature 0.0-2.0 (optional, default: 0.7)
438
+ - `SOUSCHEF_AI_MAX_TOKENS` - Maximum tokens to generate (optional, default: 4000)
439
+
440
+ **Docker Compose (recommended for development):**
441
+ ```yaml
442
+ version: '3.8'
443
+ services:
444
+ souschef-ui:
445
+ build: .
446
+ ports:
447
+ - "9999:9999"
448
+ env_file:
449
+ - .env
450
+ environment:
451
+ - PYTHONPATH=/app
452
+ - STREAMLIT_SERVER_ADDRESS=0.0.0.0
453
+ - STREAMLIT_SERVER_PORT=9999
454
+ - STREAMLIT_SERVER_HEADLESS=true
455
+ restart: unless-stopped
456
+ ```
457
+
372
458
  **Features:**
373
459
  - Clean, professional design matching documentation standards
374
460
  - Real-time cookbook analysis with progress indicators
@@ -592,7 +678,7 @@ Each MCP tool includes comprehensive documentation:
592
678
  - **[Testing Strategy Guide](docs/testing-strategy.md)** - Validation and testing approaches
593
679
  - **[Best Practices](docs/best-practices.md)** - Recommended patterns and approaches
594
680
 
595
- ## 🤝 Contributing
681
+ ## Contributing
596
682
 
597
683
  We welcome contributions! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for:
598
684
  - Development setup and workflow
@@ -600,13 +686,13 @@ We welcome contributions! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for:
600
686
  - Pull request process
601
687
  - Issue reporting guidelines
602
688
 
603
- ## 📄 License
689
+ ## License
604
690
 
605
691
  This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
606
692
 
607
693
  ## Roadmap
608
694
 
609
- ### Completed
695
+ ### Completed
610
696
  - Complete Chef cookbook parsing (recipes, attributes, metadata, templates)
611
697
  - InSpec profile parsing and conversion to Testinfra/Ansible tests
612
698
  - Chef resource to Ansible task conversion with module mapping
@@ -636,8 +722,13 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
636
722
  - **Interactive dependency mapping and visualization** with Plotly graphs and NetworkX analysis
637
723
  - **Real-time progress tracking** for all analysis operations with Streamlit progress bars
638
724
  - **Static graph visualization** with matplotlib for reports and documentation
725
+ - **Automated ERB to Jinja2 template conversion** - Converts Chef ERB templates to Ansible Jinja2 templates during cookbook conversion
726
+ - Converts ERB syntax to Jinja2: `<%= var %>` → `{{ var }}`, `<% if %>` → `{% if %}`
727
+ - Extracts template variables for validation and documentation
728
+ - Includes converted templates in downloadable playbook archives
729
+ - UI displays converted templates with variable lists and preview
639
730
 
640
- ### Planned 📅
731
+ ### Planned
641
732
  - 📅 Enhanced graph layout algorithms for large dependency networks (force-directed, hierarchical)
642
733
  - 📅 Export functionality for graphs (PNG, SVG, PDF formats)
643
734
  - 📅 UI configuration options and themes
@@ -649,7 +740,7 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
649
740
  - 📅 Migration templates and presets
650
741
  - 📅 Terraform provider for infrastructure state management
651
742
 
652
- ## 🙋‍♀️ Support & Community
743
+ ## Support & Community
653
744
 
654
745
  - **Issues**: [GitHub Issues](https://github.com/kpeacocke/souschef/issues)
655
746
  - **Discussions**: [GitHub Discussions](https://github.com/kpeacocke/souschef/discussions)
@@ -657,7 +748,7 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
657
748
 
658
749
  ---
659
750
 
660
- **SousChef** - *Transforming infrastructure automation, one recipe at a time.*
751
+ **SousChef** - *Transforming infrastructure automation, one recipe at a time.*
661
752
  desc 'Ensure package nginx is properly configured'
662
753
  impact 1.0
663
754
 
@@ -1361,12 +1452,28 @@ The project includes several VS Code tasks:
1361
1452
 
1362
1453
  ## Contributing
1363
1454
 
1364
- Contributions are welcome! Please ensure:
1365
- 1. All tests pass
1366
- 2. Code coverage maintained at 90%+
1367
- 3. Code passes ruff linting
1368
- 4. All functions have type hints and docstrings
1369
- 5. Follow the development standards in `.github/copilot-instructions.md`
1455
+ Thank you for your interest in contributing to SousChef!
1456
+
1457
+ **Before you start**, please read the [**Architecture Guide**](docs/ARCHITECTURE.md) to understand where different code belongs and why. This is essential for understanding how to structure your contributions.
1458
+
1459
+ For complete contributing guidelines, see [CONTRIBUTING.md](CONTRIBUTING.md), which includes:
1460
+ - Development setup instructions
1461
+ - Code standards and quality tools
1462
+ - Testing requirements and patterns
1463
+ - Commit conventions and PR process
1464
+ - Release procedures
1465
+
1466
+ **Quick Checklist for Contributions:**
1467
+ 1. Read [**docs/ARCHITECTURE.md**](docs/ARCHITECTURE.md) to understand module structure
1468
+ 2. Ensure all tests pass: `poetry run pytest`
1469
+ 3. Code passes linting: `poetry run ruff check .`
1470
+ 4. Code is formatted: `poetry run ruff format .`
1471
+ 5. Type hints are complete: `poetry run mypy souschef`
1472
+ 6. Coverage maintained at 90%+
1473
+ 7. All functions have docstrings
1474
+ 8. Follow [conventional commits](CONTRIBUTING.md#commit-message-format)
1475
+
1476
+ Questions? Check [ARCHITECTURE.md](docs/ARCHITECTURE.md) for module responsibilities or [CONTRIBUTING.md](CONTRIBUTING.md) for the full developer guide.
1370
1477
 
1371
1478
  ## License
1372
1479
 
@@ -1374,5 +1481,5 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
1374
1481
 
1375
1482
  ---
1376
1483
 
1377
- **SousChef** - *Ansible automation, one recipe at a time.*
1484
+ **SousChef** - *Ansible automation, one recipe at a time.*
1378
1485
 
@@ -0,0 +1,46 @@
1
+ souschef/__init__.py,sha256=Wh2DPfy1eWvoA8u1fNr_bY5TPEJvHZMVJ76TtxpmPxM,1521
2
+ souschef/assessment.py,sha256=YOv-EgZHmiBV9IiCxNOi4fYwGl8_0ntoU2kKMgERUTc,93256
3
+ souschef/ci/__init__.py,sha256=GHaqDk4auB2kI7_fQtF2FRg5nP-iX6wJchj_uTlXcYg,411
4
+ souschef/ci/common.py,sha256=kDqIC9cTUN398NgM29cn8HmMjckxvEQ5ENclOZRS8fw,4746
5
+ souschef/ci/github_actions.py,sha256=EVnnOPTLCeUmTfR-acpLp-c_dxapMfrrDWaK4SSBkdM,7818
6
+ souschef/ci/gitlab_ci.py,sha256=4FcK8edci3ixuiUtYb6EFaAfsqjz0OBmW-lyPLH3YzY,6708
7
+ souschef/ci/jenkins_pipeline.py,sha256=XEuZrVKVmOlQOKucgGcd3vhAFh5qT05ILNnjKjkqTPU,7362
8
+ souschef/cli.py,sha256=yB6xo8YqDEWwTgD0RHGHcWFfOrK6fIKM7CRxDcGYgQg,37291
9
+ souschef/converters/__init__.py,sha256=kkPm758XiFDdUYvdVPAVjssFvf15LasJcob1EY1EMIs,681
10
+ souschef/converters/cookbook_specific.py,sha256=ZvE9-bZtyXuf2E3HW4E9_GWzAqtm7e4YHj9qm1Xu_XI,3767
11
+ souschef/converters/cookbook_specific.py.backup,sha256=9XycZz6oNNTEtLINo0hHNR3df-pbZIkLprhLniE2ENI,3468
12
+ souschef/converters/habitat.py,sha256=4eVGAcX0576zLXW9yqYvuaRxOK2g6BOIJo_ws-PonHU,22516
13
+ souschef/converters/playbook.py,sha256=Ll6gAmUNr30LYGRY3p2eT28knvoKl1LuMI-WxaZZ8PY,91909
14
+ souschef/converters/resource.py,sha256=NYMcp1-obg_ad_XPuYDuUH_0j65agRbAeWzXPfbSi5c,13570
15
+ souschef/converters/template.py,sha256=swX7LpWrKZgFtg6MaR7rltShBkPDbQAb65d1NF_nILo,5447
16
+ souschef/core/__init__.py,sha256=80a0G6wQGfh-Z7U1gsFaeC97bM4sp_3YGil-lN02Pl0,1894
17
+ souschef/core/constants.py,sha256=AyIpc9cJjQEDc1yOcoKc_2-cJB4PekSpPKEK2S9jDl8,5122
18
+ souschef/core/errors.py,sha256=zj_LHDRxUvHmcs-nZjOWu4B_MhY5WVq2okyZOxyycCI,8605
19
+ souschef/core/metrics.py,sha256=k56opuVmRorrBwErbxLgXu_GkfGZXA_rEfhcsHs1JHI,9850
20
+ souschef/core/path_utils.py,sha256=2hG6joupZR_08MMpHHbv2KKOFu-8tMafuQMqV0_1Nqw,1790
21
+ souschef/core/ruby_utils.py,sha256=vUeFZBdjbFFFJlwo4fIboR23rXmbcYL2Tztt4RYhps0,1043
22
+ souschef/core/validation.py,sha256=DXfkm1p5prSAJ-Oruk5JekNiDFI49Dql1bGEzKymYXs,19158
23
+ souschef/deployment.py,sha256=ZCrVK5Ik4TbVfoJ3dS1-6FNUzxfIE6kni5Fnj3rIbCk,61908
24
+ souschef/filesystem/__init__.py,sha256=2H7Pdeedz0MfmgpRlmii_vx61qr0jtxFndT0APPm6Qs,142
25
+ souschef/filesystem/operations.py,sha256=OMMozBfV_o70b47KioiZ2i6HViiUQPE5mVBeKcKFepo,1654
26
+ souschef/parsers/__init__.py,sha256=gF-vPslzs9iLxsaDzFnWDPpYFDAIwyAifjUwzYurPLg,1104
27
+ souschef/parsers/attributes.py,sha256=JmgFaYjlT0i2__hCk6hSqZRjq4xJaTdGsBDgHEu3ItY,18239
28
+ souschef/parsers/habitat.py,sha256=CtVgLfmpo7SLp-ADyR-DXRYaRUur3bwJjlnpLyocMhc,10483
29
+ souschef/parsers/inspec.py,sha256=zhlIDZmE6A9qws5gnrLxhGGBfHOebNTLWpZZI-XXTkU,34209
30
+ souschef/parsers/metadata.py,sha256=laSxlsebsgTzRDM_B8eIXddeApbR4ATm-W4GAGucZpc,6324
31
+ souschef/parsers/recipe.py,sha256=guhEttS_AyT2kckbde3_-kAyGoR4JyFMNZFAP5V1XIM,7090
32
+ souschef/parsers/resource.py,sha256=EHxmojbQ7Hx5GsL5-x9mFBYk3FhGTpx-qw1uUVKQkRo,5348
33
+ souschef/parsers/template.py,sha256=iOHMoQH7KkPzigTyyoxav8rb2ENYmfxgcvKGqvoYkgU,10532
34
+ souschef/profiling.py,sha256=a6Pn57CZR3UPR1YIY8gfbuTPRuPkFrfIFBmctOcaZgY,17315
35
+ souschef/server.py,sha256=JJyGSAHzbMxL2PMJVdlLlmNjXESjo6MUmjniNXGdSnc,111463
36
+ souschef/ui/__init__.py,sha256=U3W6X4ww7CxQVuetcocObWn5iY6lUFiNX7WoDBJeD34,195
37
+ souschef/ui/app.py,sha256=DlUeYP7eqw76JqIGGHCb13kP1qzq0Rj4X1pEN1_eW-Y,101409
38
+ souschef/ui/health_check.py,sha256=mEzec8L6XPRekOBAXngqQz5dnzal-a4p3D70mkPriiA,903
39
+ souschef/ui/pages/ai_settings.py,sha256=tIwgWBqxCEqFykmrLRPiVQjl-m-I1Mbq0RoB1YA5faM,17774
40
+ souschef/ui/pages/cookbook_analysis.py,sha256=92LRrRMi_YbjOLN-zhNH4ZYnO0HK_OMA--CPSYn2I1E,123424
41
+ souschef/ui/pages/validation_reports.py,sha256=R3xHTJb_y2b0tI8N0qPF1oS4f9ZVb539_82dj5nmmxA,7593
42
+ mcp_souschef-3.0.0.dist-info/METADATA,sha256=B96FJM5QKIJCGLMaXqSrR5NLue-3Y9x8nnigYvcuYHw,54133
43
+ mcp_souschef-3.0.0.dist-info/WHEEL,sha256=3ny-bZhpXrU6vSQ1UPG34FoxZBp3lVcvK0LkgUz6VLk,88
44
+ mcp_souschef-3.0.0.dist-info/entry_points.txt,sha256=NVSk61tLG4W0xEkWGOMXAVCIUyodyZCY_j3Z_0m6rkQ,80
45
+ mcp_souschef-3.0.0.dist-info/licenses/LICENSE,sha256=t31dYSuvYYNw6trj-coWSsLK-Tg_Iyl8ObcolQcrUKM,1078
46
+ mcp_souschef-3.0.0.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 2.2.1
2
+ Generator: poetry-core 2.3.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
souschef/__init__.py CHANGED
@@ -1,17 +1,57 @@
1
1
  """SousChef: AI-powered Chef to Ansible converter."""
2
2
 
3
- from souschef.assessment import (
4
- analyze_cookbook_dependencies,
3
+ from pathlib import Path
4
+
5
+ import tomllib
6
+
7
+
8
+ # Read version from pyproject.toml
9
+ def _get_version() -> str:
10
+ """Get version from pyproject.toml."""
11
+ pyproject_path = Path(__file__).parent.parent / "pyproject.toml"
12
+ try:
13
+ with pyproject_path.open("rb") as f:
14
+ data = tomllib.load(f)
15
+ version = data.get("tool", {}).get("poetry", {}).get("version")
16
+ return str(version) if version else "unknown"
17
+ except OSError:
18
+ return "unknown"
19
+
20
+
21
+ __version__ = _get_version()
22
+
23
+ from souschef.assessment import ( # noqa: E402
24
+ analyse_cookbook_dependencies,
5
25
  assess_chef_migration_complexity,
6
26
  generate_migration_plan,
7
27
  generate_migration_report,
8
28
  validate_conversion,
9
29
  )
30
+ from souschef.deployment import ( # noqa: E402
31
+ analyse_chef_application_patterns,
32
+ )
33
+
34
+ # Import server functions only if MCP is available
35
+ try:
36
+ from souschef.server import (
37
+ analyse_chef_search_patterns,
38
+ )
39
+
40
+ _server_available = True
41
+ except ImportError:
42
+ _server_available = False
43
+
44
+ # Define a placeholder function for when MCP is not available
45
+ def analyse_chef_search_patterns(*args, **kwargs):
46
+ raise NotImplementedError("MCP server not available")
47
+
10
48
 
11
49
  __all__ = [
12
- "analyze_cookbook_dependencies",
50
+ "analyse_cookbook_dependencies",
13
51
  "assess_chef_migration_complexity",
14
52
  "generate_migration_plan",
15
53
  "generate_migration_report",
16
54
  "validate_conversion",
55
+ "analyse_chef_application_patterns",
56
+ "analyse_chef_search_patterns",
17
57
  ]