open-pharma-plugins 2.2.1__tar.gz → 2.4.1__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 (178) hide show
  1. open_pharma_plugins-2.4.1/NOTICE +1 -0
  2. {open_pharma_plugins-2.2.1/src/open_pharma_plugins.egg-info → open_pharma_plugins-2.4.1}/PKG-INFO +54 -51
  3. open_pharma_plugins-2.4.1/README.md +80 -0
  4. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/pyproject.toml +5 -3
  5. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/__init__.py +1 -1
  6. open_pharma_plugins-2.4.1/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/_campaign_store.py +439 -0
  7. open_pharma_plugins-2.4.1/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/_claim_engine.py +821 -0
  8. open_pharma_plugins-2.4.1/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/_claims.py +62 -0
  9. open_pharma_plugins-2.4.1/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/_inputs.py +1143 -0
  10. open_pharma_plugins-2.4.1/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/_mlr_package.py +1286 -0
  11. open_pharma_plugins-2.4.1/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/_render_validation.py +1970 -0
  12. open_pharma_plugins-2.4.1/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/_renderer.py +1030 -0
  13. open_pharma_plugins-2.4.1/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/_workflow_validation.py +1104 -0
  14. open_pharma_plugins-2.4.1/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/fixtures/brand_kit/product.png +0 -0
  15. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/fixtures/sample_approved_claims.json +26 -13
  16. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/models/brief.py +43 -3
  17. open_pharma_plugins-2.4.1/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/models/claims.py +66 -0
  18. open_pharma_plugins-2.4.1/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/models/copy.py +101 -0
  19. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/models/message.py +11 -2
  20. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/models/validation.py +14 -0
  21. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/policy/rules.json +18 -0
  22. open_pharma_plugins-2.4.1/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/templates/banner.svg.j2 +17 -0
  23. open_pharma_plugins-2.4.1/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/templates/email.html.j2 +61 -0
  24. open_pharma_plugins-2.4.1/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/templates/mlr-review.html.j2 +252 -0
  25. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/tools/create_campaign_brief.py +56 -24
  26. open_pharma_plugins-2.4.1/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/tools/export_mlr_package.py +52 -0
  27. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/tools/generate_audience_journey.py +10 -50
  28. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/tools/generate_channel_copy.py +14 -71
  29. open_pharma_plugins-2.4.1/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/tools/generate_message_architecture.py +180 -0
  30. open_pharma_plugins-2.4.1/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/tools/get_campaign_status.py +664 -0
  31. open_pharma_plugins-2.4.1/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/tools/package_mlr_submission.py +44 -0
  32. open_pharma_plugins-2.4.1/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/tools/preflight_campaign_inputs.py +41 -0
  33. open_pharma_plugins-2.4.1/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/tools/render_banner.py +211 -0
  34. open_pharma_plugins-2.4.1/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/tools/render_email.py +145 -0
  35. open_pharma_plugins-2.4.1/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/tools/render_mlr_review.py +44 -0
  36. open_pharma_plugins-2.4.1/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/tools/render_poster.py +202 -0
  37. open_pharma_plugins-2.4.1/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/tools/retrieve_approved_claims.py +51 -0
  38. open_pharma_plugins-2.4.1/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/tools/retrieve_brand_components.py +43 -0
  39. open_pharma_plugins-2.4.1/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/tools/validate_claims_and_fair_balance.py +429 -0
  40. open_pharma_plugins-2.4.1/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/tools/validate_rendered_assets.py +31 -0
  41. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/territory-alignment/open_pharma_plugins_territory_alignment/__init__.py +1 -1
  42. open_pharma_plugins-2.4.1/src/capabilities/territory-alignment/open_pharma_plugins_territory_alignment/data.py +465 -0
  43. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/territory-alignment/open_pharma_plugins_territory_alignment/fixtures/constraints.csv +0 -2
  44. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/territory-alignment/open_pharma_plugins_territory_alignment/geo.py +11 -7
  45. open_pharma_plugins-2.4.1/src/capabilities/territory-alignment/open_pharma_plugins_territory_alignment/models.py +268 -0
  46. open_pharma_plugins-2.4.1/src/capabilities/territory-alignment/open_pharma_plugins_territory_alignment/reporting.py +768 -0
  47. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/territory-alignment/open_pharma_plugins_territory_alignment/scoring.py +13 -9
  48. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/territory-alignment/open_pharma_plugins_territory_alignment/solver.py +212 -37
  49. open_pharma_plugins-2.4.1/src/capabilities/territory-alignment/open_pharma_plugins_territory_alignment/tools/ta_align.py +210 -0
  50. open_pharma_plugins-2.4.1/src/capabilities/territory-alignment/open_pharma_plugins_territory_alignment/tools/ta_cluster.py +395 -0
  51. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/territory-alignment/open_pharma_plugins_territory_alignment/tools/ta_compare.py +29 -5
  52. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/territory-alignment/open_pharma_plugins_territory_alignment/tools/ta_evaluate.py +14 -7
  53. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/territory-alignment/open_pharma_plugins_territory_alignment/tools/ta_status.py +4 -1
  54. open_pharma_plugins-2.4.1/src/capabilities/territory-alignment/open_pharma_plugins_territory_alignment/tools/ta_visualize.py +143 -0
  55. open_pharma_plugins-2.4.1/src/capabilities/territory-alignment/open_pharma_plugins_territory_alignment/workload.py +30 -0
  56. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/mcp_framework.py +1 -1
  57. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1/src/open_pharma_plugins.egg-info}/PKG-INFO +54 -51
  58. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/open_pharma_plugins.egg-info/SOURCES.txt +14 -0
  59. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/open_pharma_plugins.egg-info/requires.txt +2 -0
  60. open_pharma_plugins-2.4.1/src/shared/filesystem.py +1308 -0
  61. open_pharma_plugins-2.2.1/README.md +0 -80
  62. open_pharma_plugins-2.2.1/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/_campaign_store.py +0 -162
  63. open_pharma_plugins-2.2.1/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/_claim_engine.py +0 -262
  64. open_pharma_plugins-2.2.1/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/_renderer.py +0 -119
  65. open_pharma_plugins-2.2.1/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/fixtures/brand_kit/product.png +0 -1
  66. open_pharma_plugins-2.2.1/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/models/claims.py +0 -15
  67. open_pharma_plugins-2.2.1/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/models/copy.py +0 -47
  68. open_pharma_plugins-2.2.1/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/templates/banner.svg.j2 +0 -26
  69. open_pharma_plugins-2.2.1/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/templates/email.html.j2 +0 -54
  70. open_pharma_plugins-2.2.1/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/tools/generate_message_architecture.py +0 -121
  71. open_pharma_plugins-2.2.1/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/tools/package_mlr_submission.py +0 -230
  72. open_pharma_plugins-2.2.1/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/tools/render_banner.py +0 -99
  73. open_pharma_plugins-2.2.1/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/tools/render_email.py +0 -101
  74. open_pharma_plugins-2.2.1/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/tools/render_poster.py +0 -222
  75. open_pharma_plugins-2.2.1/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/tools/retrieve_approved_claims.py +0 -71
  76. open_pharma_plugins-2.2.1/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/tools/retrieve_brand_components.py +0 -76
  77. open_pharma_plugins-2.2.1/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/tools/validate_claims_and_fair_balance.py +0 -285
  78. open_pharma_plugins-2.2.1/src/capabilities/territory-alignment/open_pharma_plugins_territory_alignment/data.py +0 -300
  79. open_pharma_plugins-2.2.1/src/capabilities/territory-alignment/open_pharma_plugins_territory_alignment/models.py +0 -201
  80. open_pharma_plugins-2.2.1/src/capabilities/territory-alignment/open_pharma_plugins_territory_alignment/tools/ta_align.py +0 -138
  81. open_pharma_plugins-2.2.1/src/capabilities/territory-alignment/open_pharma_plugins_territory_alignment/tools/ta_cluster.py +0 -247
  82. open_pharma_plugins-2.2.1/src/capabilities/territory-alignment/open_pharma_plugins_territory_alignment/tools/ta_visualize.py +0 -504
  83. open_pharma_plugins-2.2.1/src/shared/filesystem.py +0 -138
  84. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/LICENSE +0 -0
  85. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/setup.cfg +0 -0
  86. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/__main__.py +0 -0
  87. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/fixtures/brand_kit/legal.json +0 -0
  88. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/fixtures/brand_kit/logo.svg +0 -0
  89. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/fixtures/brand_kit/palette.json +0 -0
  90. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/fixtures/brand_kit/typography.json +0 -0
  91. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/models/__init__.py +0 -0
  92. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/models/_common.py +0 -0
  93. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/models/journey.py +0 -0
  94. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/models/mlr.py +0 -0
  95. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/campaign-studio/open_pharma_plugins_campaign_studio/tools/__init__.py +0 -0
  96. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/competitive-intelligence/open_pharma_plugins_competitive_intelligence/__init__.py +0 -0
  97. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/competitive-intelligence/open_pharma_plugins_competitive_intelligence/__main__.py +0 -0
  98. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/competitive-intelligence/open_pharma_plugins_competitive_intelligence/_artifacts.py +0 -0
  99. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/competitive-intelligence/open_pharma_plugins_competitive_intelligence/_cache.py +0 -0
  100. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/competitive-intelligence/open_pharma_plugins_competitive_intelligence/_clinical_trials.py +0 -0
  101. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/competitive-intelligence/open_pharma_plugins_competitive_intelligence/_dailymed.py +0 -0
  102. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/competitive-intelligence/open_pharma_plugins_competitive_intelligence/_fda.py +0 -0
  103. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/competitive-intelligence/open_pharma_plugins_competitive_intelligence/_pubmed.py +0 -0
  104. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/competitive-intelligence/open_pharma_plugins_competitive_intelligence/_regulatory.py +0 -0
  105. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/competitive-intelligence/open_pharma_plugins_competitive_intelligence/_runs.py +0 -0
  106. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/competitive-intelligence/open_pharma_plugins_competitive_intelligence/_transport.py +0 -0
  107. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/competitive-intelligence/open_pharma_plugins_competitive_intelligence/_watchlist.py +0 -0
  108. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/competitive-intelligence/open_pharma_plugins_competitive_intelligence/_web_search.py +0 -0
  109. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/competitive-intelligence/open_pharma_plugins_competitive_intelligence/models.py +0 -0
  110. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/competitive-intelligence/open_pharma_plugins_competitive_intelligence/tools/__init__.py +0 -0
  111. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/competitive-intelligence/open_pharma_plugins_competitive_intelligence/tools/ci_extract_events.py +0 -0
  112. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/competitive-intelligence/open_pharma_plugins_competitive_intelligence/tools/ci_landscape.py +0 -0
  113. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/competitive-intelligence/open_pharma_plugins_competitive_intelligence/tools/ci_refresh.py +0 -0
  114. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/competitive-intelligence/open_pharma_plugins_competitive_intelligence/tools/ci_report.py +0 -0
  115. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/competitive-intelligence/open_pharma_plugins_competitive_intelligence/tools/ci_scan_news.py +0 -0
  116. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/competitive-intelligence/open_pharma_plugins_competitive_intelligence/tools/ci_scan_publications.py +0 -0
  117. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/competitive-intelligence/open_pharma_plugins_competitive_intelligence/tools/ci_scan_regulatory.py +0 -0
  118. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/competitive-intelligence/open_pharma_plugins_competitive_intelligence/tools/ci_scan_trials.py +0 -0
  119. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/competitive-intelligence/open_pharma_plugins_competitive_intelligence/tools/ci_status.py +0 -0
  120. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/competitive-intelligence/open_pharma_plugins_competitive_intelligence/tools/ci_timeline.py +0 -0
  121. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/competitive-intelligence/open_pharma_plugins_competitive_intelligence/tools/ci_track.py +0 -0
  122. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/competitive-intelligence/open_pharma_plugins_competitive_intelligence/tools/ci_trial_detail.py +0 -0
  123. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/field-training/open_pharma_plugins_field_training/__init__.py +0 -0
  124. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/field-training/open_pharma_plugins_field_training/__main__.py +0 -0
  125. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/field-training/open_pharma_plugins_field_training/_content_store.py +0 -0
  126. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/field-training/open_pharma_plugins_field_training/_grounding.py +0 -0
  127. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/field-training/open_pharma_plugins_field_training/_html_renderers.py +0 -0
  128. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/field-training/open_pharma_plugins_field_training/fixtures/sample_product_message.pdf +0 -0
  129. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/field-training/open_pharma_plugins_field_training/fixtures/sample_training_deck.pptx +0 -0
  130. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/field-training/open_pharma_plugins_field_training/models.py +0 -0
  131. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/field-training/open_pharma_plugins_field_training/tools/__init__.py +0 -0
  132. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/field-training/open_pharma_plugins_field_training/tools/get_document_page.py +0 -0
  133. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/field-training/open_pharma_plugins_field_training/tools/ingest_document.py +0 -0
  134. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/field-training/open_pharma_plugins_field_training/tools/list_documents.py +0 -0
  135. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/field-training/open_pharma_plugins_field_training/tools/render_output.py +0 -0
  136. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/field-training/open_pharma_plugins_field_training/tools/search_content.py +0 -0
  137. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/hcp-intelligence/open_pharma_plugins_hcp_intelligence/__init__.py +0 -0
  138. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/hcp-intelligence/open_pharma_plugins_hcp_intelligence/__main__.py +0 -0
  139. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/hcp-intelligence/open_pharma_plugins_hcp_intelligence/_crm_store.py +0 -0
  140. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/hcp-intelligence/open_pharma_plugins_hcp_intelligence/batch.py +0 -0
  141. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/hcp-intelligence/open_pharma_plugins_hcp_intelligence/batch_cli.py +0 -0
  142. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/hcp-intelligence/open_pharma_plugins_hcp_intelligence/batch_csv.py +0 -0
  143. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/hcp-intelligence/open_pharma_plugins_hcp_intelligence/fixtures/sample_accounts.csv +0 -0
  144. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/hcp-intelligence/open_pharma_plugins_hcp_intelligence/models.py +0 -0
  145. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/hcp-intelligence/open_pharma_plugins_hcp_intelligence/tools/__init__.py +0 -0
  146. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/hcp-intelligence/open_pharma_plugins_hcp_intelligence/tools/get_account.py +0 -0
  147. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/hcp-intelligence/open_pharma_plugins_hcp_intelligence/tools/list_accounts.py +0 -0
  148. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/hcp-intelligence/open_pharma_plugins_hcp_intelligence/tools/search_clinical_trials.py +0 -0
  149. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/hcp-intelligence/open_pharma_plugins_hcp_intelligence/tools/search_congresses.py +0 -0
  150. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/hcp-intelligence/open_pharma_plugins_hcp_intelligence/tools/search_grants.py +0 -0
  151. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/hcp-intelligence/open_pharma_plugins_hcp_intelligence/tools/search_guidelines.py +0 -0
  152. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/hcp-intelligence/open_pharma_plugins_hcp_intelligence/tools/search_hco_web.py +0 -0
  153. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/hcp-intelligence/open_pharma_plugins_hcp_intelligence/tools/search_hcp_web.py +0 -0
  154. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/hcp-intelligence/open_pharma_plugins_hcp_intelligence/tools/search_orcid.py +0 -0
  155. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/hcp-intelligence/open_pharma_plugins_hcp_intelligence/tools/search_publications.py +0 -0
  156. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/hcp-intelligence/open_pharma_plugins_hcp_intelligence/tools/update_account.py +0 -0
  157. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/next-best-engagement/open_pharma_plugins_next_best_engagement/__init__.py +0 -0
  158. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/next-best-engagement/open_pharma_plugins_next_best_engagement/__main__.py +0 -0
  159. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/next-best-engagement/open_pharma_plugins_next_best_engagement/_optimizer.py +0 -0
  160. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/next-best-engagement/open_pharma_plugins_next_best_engagement/_renderer.py +0 -0
  161. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/next-best-engagement/open_pharma_plugins_next_best_engagement/_scoring.py +0 -0
  162. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/next-best-engagement/open_pharma_plugins_next_best_engagement/_universe.py +0 -0
  163. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/next-best-engagement/open_pharma_plugins_next_best_engagement/fixtures/sample_universe.csv +0 -0
  164. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/next-best-engagement/open_pharma_plugins_next_best_engagement/models.py +0 -0
  165. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/next-best-engagement/open_pharma_plugins_next_best_engagement/tools/__init__.py +0 -0
  166. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/next-best-engagement/open_pharma_plugins_next_best_engagement/tools/load_universe.py +0 -0
  167. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/next-best-engagement/open_pharma_plugins_next_best_engagement/tools/recommend_engagements.py +0 -0
  168. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/next-best-engagement/open_pharma_plugins_next_best_engagement/tools/render_plan.py +0 -0
  169. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/territory-alignment/open_pharma_plugins_territory_alignment/__main__.py +0 -0
  170. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/territory-alignment/open_pharma_plugins_territory_alignment/fixtures/current_alignment.csv +0 -0
  171. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/territory-alignment/open_pharma_plugins_territory_alignment/fixtures/hcps.csv +0 -0
  172. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/territory-alignment/open_pharma_plugins_territory_alignment/fixtures/reps.csv +0 -0
  173. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/capabilities/territory-alignment/open_pharma_plugins_territory_alignment/tools/__init__.py +0 -0
  174. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/open_pharma_plugins.egg-info/dependency_links.txt +0 -0
  175. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/open_pharma_plugins.egg-info/entry_points.txt +0 -0
  176. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/open_pharma_plugins.egg-info/top_level.txt +0 -0
  177. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/shared/__init__.py +0 -0
  178. {open_pharma_plugins-2.2.1 → open_pharma_plugins-2.4.1}/src/shared/env.py +0 -0
@@ -0,0 +1 @@
1
+ Copyright 2026 Jason Zhang
@@ -1,8 +1,8 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: open-pharma-plugins
3
- Version: 2.2.1
3
+ Version: 2.4.1
4
4
  Summary: Open Pharma Plugins: Agent Skills + MCP tools for pharmaceutical commercial operations — HCP intelligence, territory alignment, competitive intelligence, field training, engagement planning, and campaign creation.
5
- Author: EAI Commercial Team
5
+ Author: Jason Zhang
6
6
  License-Expression: Apache-2.0
7
7
  Project-URL: Homepage, https://github.com/PharmaGenAI/open-pharma-plugins
8
8
  Project-URL: Repository, https://github.com/PharmaGenAI/open-pharma-plugins
@@ -20,6 +20,7 @@ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
20
20
  Requires-Python: <3.14,>=3.10
21
21
  Description-Content-Type: text/markdown
22
22
  License-File: LICENSE
23
+ License-File: NOTICE
23
24
  Requires-Dist: mcp<2,>=1.0.0
24
25
  Requires-Dist: anyio<5,>=4.0
25
26
  Requires-Dist: pydantic<3,>=2.8
@@ -42,6 +43,7 @@ Requires-Dist: pypdfium2<6,>=4; extra == "competitive-intelligence"
42
43
  Requires-Dist: python-docx<2,>=1; extra == "competitive-intelligence"
43
44
  Provides-Extra: campaign-studio
44
45
  Requires-Dist: jinja2<4,>=3.1; extra == "campaign-studio"
46
+ Requires-Dist: pypdf<7,>=5; extra == "campaign-studio"
45
47
  Requires-Dist: reportlab<6,>=4; extra == "campaign-studio"
46
48
  Provides-Extra: all
47
49
  Requires-Dist: requests<3,>=2.31; extra == "all"
@@ -51,84 +53,85 @@ Requires-Dist: python-pptx<2,>=1; extra == "all"
51
53
  Requires-Dist: python-docx<2,>=1; extra == "all"
52
54
  Requires-Dist: reportlab<6,>=4; extra == "all"
53
55
  Requires-Dist: jinja2<4,>=3.1; extra == "all"
56
+ Requires-Dist: pypdf<7,>=5; extra == "all"
54
57
  Dynamic: license-file
55
58
 
56
59
  # Open Pharma Plugins
57
60
 
58
- Agent Skills and MCP tools for pharmaceutical commercial operations.
61
+ Agent Skills and MCP servers for pharmaceutical commercial operations.
59
62
 
60
- > **Public beta.** Validate outputs before operational use. Campaign and field-training artifacts are drafts for qualified medical/legal/regulatory review, not automated approval.
63
+ ## Architecture
61
64
 
62
- ## Capabilities
65
+ <p align="center"><img src="docs/assets/architecture.svg" width="960" alt="Open Pharma Plugins architecture"></p>
63
66
 
64
- | Capability | Tools | Description |
65
- |---|---:|---|
66
- | [HCP Intelligence](cookbooks/hcp-intelligence/usage.md) | 11 | Build evidence-backed HCP/HCO profiles from public sources |
67
- | [Field Training](cookbooks/field-training/usage.md) | 5 | Turn approved PDF/PPTX paths into grounded learning packages, assessments, role-play kits, and scorecards |
68
- | [Campaign Studio](cookbooks/campaign-studio/usage.md) | 11 | Create, validate, render, and package campaign drafts for MLR review |
69
- | [Next-Best-Engagement](cookbooks/next-best-engagement/usage.md) | 3 | Score HCPs and produce consent-aware engagement plans |
70
- | [Territory Alignment](cookbooks/territory-alignment/usage.md) | 6 | Compare HCP-to-rep assignments and plan visit clusters |
71
- | [Competitive Intelligence](cookbooks/competitive-intelligence/usage.md) | 12 | Collect one evidence run and project reproducible briefings and timelines |
67
+ Each capability installs independently as a Skill plus an MCP server. The Python distribution contains the servers; Skills, cookbooks, and marketplace manifests are installed from this repository.
72
68
 
73
- ## Architecture
69
+ ## Install
74
70
 
75
- <p align="center"><img src="docs/assets/architecture.svg" width="960" alt="Architecture diagram"></p>
71
+ The guided installer supports Claude Code, Codex, and GitHub Copilot CLI. It requires `uv`/`uvx` and uses independent, immutable capability tags.
76
72
 
77
- Each source plugin bundles a Skill with one MCP server. The Python wheel contains the six MCP servers and their runtime fixtures; Skills, cookbooks, and marketplace manifests are installed from the repository rather than the wheel.
73
+ Download and inspect the installer before running it:
78
74
 
79
- ## Quick start
75
+ ```bash
76
+ curl -fsSLO https://raw.githubusercontent.com/PharmaGenAI/open-pharma-plugins/main/install.sh
77
+ less install.sh
78
+ bash install.sh
79
+ ```
80
80
 
81
- Python 3.10–3.13 is supported. Install one or more MCP servers from the published distribution:
81
+ Update capabilities already installed in a harness:
82
82
 
83
83
  ```bash
84
- python -m pip install "open-pharma-plugins[territory-alignment,competitive-intelligence]"
85
- open-pharma-plugins-territory-alignment --version
84
+ bash install.sh update
86
85
  ```
87
86
 
88
- For the complete Skill + MCP plugin, download and inspect the guided installer before running it:
87
+ To install MCP servers without the companion Skills, use one or more extras from the Python distribution:
89
88
 
90
89
  ```bash
91
- curl -fsSLO https://raw.githubusercontent.com/PharmaGenAI/open-pharma-plugins/main/install.sh
92
- less install.sh
93
- bash install.sh
90
+ python -m pip install "open-pharma-plugins[territory-alignment,competitive-intelligence]"
94
91
  ```
95
92
 
96
- The installer requires `uv`/`uvx`; it never installs a package manager on your behalf. See [Installation](docs/en/installation.md) for tag-pinned and source-checkout options.
93
+ See [Installation](docs/en/installation.md) for tagged releases, local checkouts, rollback, and manual setup.
97
94
 
98
- ## Configuration and local data
95
+ ## Capabilities
99
96
 
100
- Copy `.env.example` to `~/.open-pharma-plugins/config` and set only the providers you use. Process environment variables take precedence. Mutable data defaults to private capability directories under `~/.open-pharma-plugins`; files are written with mode `0600` and directories with `0700` where POSIX permissions are available.
97
+ | Capability | Tools | Use case |
98
+ |---|---:|---|
99
+ | [HCP Intelligence](cookbooks/hcp-intelligence/usage.md) | 11 | Build evidence-backed HCP/HCO profiles from public sources |
100
+ | [Field Training](cookbooks/field-training/usage.md) | 5 | Create grounded learning packages, assessments, role-play kits, and scorecards from approved documents |
101
+ | [Campaign Studio](cookbooks/campaign-studio/usage.md) | 16 | Draft campaigns, validate claims, render assets, and prepare MLR review packages |
102
+ | [Next-Best-Engagement](cookbooks/next-best-engagement/usage.md) | 3 | Score HCPs and produce consent-aware engagement plans |
103
+ | [Territory Alignment](cookbooks/territory-alignment/usage.md) | 6 | Compare HCP-to-rep assignments and plan visit clusters |
104
+ | [Competitive Intelligence](cookbooks/competitive-intelligence/usage.md) | 12 | Collect evidence and produce reproducible briefings and timelines |
105
+
106
+ ## Try it
107
+
108
+ After installing a capability, reference your files and ask naturally. The Skill selects the relevant MCP tools.
109
+
110
+ ```text
111
+ @speakers.csv Build evidence-backed profiles for these HCPs.
112
+ @training.pdf Create a learning package and assessment from this approved document.
113
+ @brief.md Draft a campaign and prepare it for MLR review.
114
+ @alignment.csv Compare assignments and identify workload imbalances.
115
+ ```
101
116
 
102
- Common settings include:
117
+ ## Requirements and configuration
103
118
 
104
- | Variable | Used by |
105
- |---|---|
106
- | `SERPER_API_KEY` / `TAVILY_API_KEY` / `EXA_API_KEY` | Web search |
107
- | `OPENROUTER_API_KEY` / `OPENROUTER_BASE_URL` | Optional HCP batch profile synthesis |
108
- | `NCBI_API_KEY` | PubMed |
109
- | `OPENFDA_API_KEY` | openFDA |
110
- | `OPEN_PHARMA_*_DIR` | Capability-specific mutable-data locations |
119
+ - Python 3.10–3.13
120
+ - `uv`/`uvx` for the guided plugin installer
121
+ - Provider credentials only for the capabilities and external services you use
111
122
 
112
- API keys are not persisted in competitive-intelligence cache metadata, evidence URLs, runs, or reports. Source queries are still sent to the selected external provider, so do not place secrets or unnecessary personal data in search terms. Reports and timelines can reuse one immutable run instead of repeating provider calls.
123
+ Run the installer's **Configure** and **Verify** actions to set credentials and check dependencies. Shared configuration lives in `~/.open-pharma-plugins/config`.
113
124
 
114
- HCP batch extraction/synthesis defaults to `high` reasoning effort, a 120-second request timeout,
115
- and zero SDK retries. An installed HCP plugin accepts user-supplied input/output paths through the
116
- tag-pinned `open-pharma-plugins-hcp-batch` console and produces canonical account JSON,
117
- `batch_summary.csv`, and `batch_manifest.json`. See the
118
- [HCP batch guide](docs/en/hcp_batch.md) for dry-run, confirmation, provider, CSV, and resume rules.
125
+ See [Configuration](docs/en/configuration.md) and [Data security](docs/en/data_security.md) for settings, local data, provider calls, and compliance boundaries.
119
126
 
120
127
  ## Documentation
121
128
 
122
- - [Installation](docs/en/installation.md)
123
- - [Configuration](docs/en/configuration.md)
124
- - [HCP batch processing and CSV review](docs/en/hcp_batch.md)
125
- - [Data security and compliance boundaries](docs/en/data_security.md)
126
- - [Local development](docs/en/local_development.md)
127
- - [Testing](docs/en/testing.md)
128
- - [Adding a capability](docs/en/how_to_add_new_capability.md)
129
- - [Releasing](docs/en/releasing.md)
130
- - [Manual harness setup](docs/en/manual_harnesses.md)
131
- - [Chinese documentation](docs/zh/) · [Japanese documentation](docs/jp/)
129
+ - [Installation](docs/en/installation.md) · [Configuration](docs/en/configuration.md)
130
+ - [Local development](docs/en/local_development.md) · [Testing](docs/en/testing.md)
131
+ - [Contributing](CONTRIBUTING.md) · [Adding a capability](docs/en/how_to_add_new_capability.md)
132
+ - [Security policy](SECURITY.md) · [Release guide](docs/en/releasing.md)
133
+ - [中文文档](docs/zh/) · [日本語ドキュメント](docs/jp/)
134
+ - [Project website](https://pharmagenai.github.io/)
132
135
 
133
136
  ## License
134
137
 
@@ -0,0 +1,80 @@
1
+ # Open Pharma Plugins
2
+
3
+ Agent Skills and MCP servers for pharmaceutical commercial operations.
4
+
5
+ ## Architecture
6
+
7
+ <p align="center"><img src="docs/assets/architecture.svg" width="960" alt="Open Pharma Plugins architecture"></p>
8
+
9
+ Each capability installs independently as a Skill plus an MCP server. The Python distribution contains the servers; Skills, cookbooks, and marketplace manifests are installed from this repository.
10
+
11
+ ## Install
12
+
13
+ The guided installer supports Claude Code, Codex, and GitHub Copilot CLI. It requires `uv`/`uvx` and uses independent, immutable capability tags.
14
+
15
+ Download and inspect the installer before running it:
16
+
17
+ ```bash
18
+ curl -fsSLO https://raw.githubusercontent.com/PharmaGenAI/open-pharma-plugins/main/install.sh
19
+ less install.sh
20
+ bash install.sh
21
+ ```
22
+
23
+ Update capabilities already installed in a harness:
24
+
25
+ ```bash
26
+ bash install.sh update
27
+ ```
28
+
29
+ To install MCP servers without the companion Skills, use one or more extras from the Python distribution:
30
+
31
+ ```bash
32
+ python -m pip install "open-pharma-plugins[territory-alignment,competitive-intelligence]"
33
+ ```
34
+
35
+ See [Installation](docs/en/installation.md) for tagged releases, local checkouts, rollback, and manual setup.
36
+
37
+ ## Capabilities
38
+
39
+ | Capability | Tools | Use case |
40
+ |---|---:|---|
41
+ | [HCP Intelligence](cookbooks/hcp-intelligence/usage.md) | 11 | Build evidence-backed HCP/HCO profiles from public sources |
42
+ | [Field Training](cookbooks/field-training/usage.md) | 5 | Create grounded learning packages, assessments, role-play kits, and scorecards from approved documents |
43
+ | [Campaign Studio](cookbooks/campaign-studio/usage.md) | 16 | Draft campaigns, validate claims, render assets, and prepare MLR review packages |
44
+ | [Next-Best-Engagement](cookbooks/next-best-engagement/usage.md) | 3 | Score HCPs and produce consent-aware engagement plans |
45
+ | [Territory Alignment](cookbooks/territory-alignment/usage.md) | 6 | Compare HCP-to-rep assignments and plan visit clusters |
46
+ | [Competitive Intelligence](cookbooks/competitive-intelligence/usage.md) | 12 | Collect evidence and produce reproducible briefings and timelines |
47
+
48
+ ## Try it
49
+
50
+ After installing a capability, reference your files and ask naturally. The Skill selects the relevant MCP tools.
51
+
52
+ ```text
53
+ @speakers.csv Build evidence-backed profiles for these HCPs.
54
+ @training.pdf Create a learning package and assessment from this approved document.
55
+ @brief.md Draft a campaign and prepare it for MLR review.
56
+ @alignment.csv Compare assignments and identify workload imbalances.
57
+ ```
58
+
59
+ ## Requirements and configuration
60
+
61
+ - Python 3.10–3.13
62
+ - `uv`/`uvx` for the guided plugin installer
63
+ - Provider credentials only for the capabilities and external services you use
64
+
65
+ Run the installer's **Configure** and **Verify** actions to set credentials and check dependencies. Shared configuration lives in `~/.open-pharma-plugins/config`.
66
+
67
+ See [Configuration](docs/en/configuration.md) and [Data security](docs/en/data_security.md) for settings, local data, provider calls, and compliance boundaries.
68
+
69
+ ## Documentation
70
+
71
+ - [Installation](docs/en/installation.md) · [Configuration](docs/en/configuration.md)
72
+ - [Local development](docs/en/local_development.md) · [Testing](docs/en/testing.md)
73
+ - [Contributing](CONTRIBUTING.md) · [Adding a capability](docs/en/how_to_add_new_capability.md)
74
+ - [Security policy](SECURITY.md) · [Release guide](docs/en/releasing.md)
75
+ - [中文文档](docs/zh/) · [日本語ドキュメント](docs/jp/)
76
+ - [Project website](https://pharmagenai.github.io/)
77
+
78
+ ## License
79
+
80
+ Apache-2.0. See [LICENSE](LICENSE).
@@ -9,8 +9,8 @@ description = "Open Pharma Plugins: Agent Skills + MCP tools for pharmaceutical
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10,<3.14"
11
11
  license = "Apache-2.0"
12
- license-files = ["LICENSE"]
13
- authors = [{ name = "EAI Commercial Team" }]
12
+ license-files = ["LICENSE", "NOTICE"]
13
+ authors = [{ name = "Jason Zhang" }]
14
14
  keywords = ["mcp", "pharma", "commercial", "agent-skills", "hcp"]
15
15
  classifiers = [
16
16
  "Development Status :: 4 - Beta",
@@ -42,7 +42,7 @@ field-training-fixtures = ["pypdfium2>=4,<6", "python-pptx>=1,<2", "reportlab>=4
42
42
  next-best-engagement = []
43
43
  territory-alignment = []
44
44
  competitive-intelligence = ["pypdfium2>=4,<6", "python-docx>=1,<2"]
45
- campaign-studio = ["jinja2>=3.1,<4", "reportlab>=4,<6"]
45
+ campaign-studio = ["jinja2>=3.1,<4", "pypdf>=5,<7", "reportlab>=4,<6"]
46
46
  all = [
47
47
  "requests>=2.31,<3",
48
48
  "openai>=1,<4",
@@ -51,12 +51,14 @@ all = [
51
51
  "python-docx>=1,<2",
52
52
  "reportlab>=4,<6",
53
53
  "jinja2>=3.1,<4",
54
+ "pypdf>=5,<7",
54
55
  ]
55
56
 
56
57
  [dependency-groups]
57
58
  dev = [
58
59
  "build>=1,<2",
59
60
  "cyclonedx-bom>=7.3,<8",
61
+ "markdown-it-py>=4,<5",
60
62
  "packaging>=24",
61
63
  "pip-audit>=2.9,<3",
62
64
  "pytest>=8,<10",
@@ -1,6 +1,6 @@
1
1
  from mcp_framework import build_registry
2
2
 
3
- __version__ = "1.0.1"
3
+ __version__ = "1.1.0"
4
4
 
5
5
  SPECS, get_handler, list_tools = build_registry(__name__, ["tools"])
6
6