dhisana 0.0.1.dev254__tar.gz → 0.0.1.dev255__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 (121) hide show
  1. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/PKG-INFO +1 -1
  2. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/setup.py +1 -1
  3. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/test_connect.py +48 -0
  4. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana.egg-info/PKG-INFO +1 -1
  5. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/README.md +0 -0
  6. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/pyproject.toml +0 -0
  7. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/setup.cfg +0 -0
  8. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/__init__.py +0 -0
  9. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/cli/__init__.py +0 -0
  10. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/cli/cli.py +0 -0
  11. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/cli/datasets.py +0 -0
  12. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/cli/models.py +0 -0
  13. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/cli/predictions.py +0 -0
  14. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/schemas/__init__.py +0 -0
  15. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/schemas/common.py +0 -0
  16. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/schemas/sales.py +0 -0
  17. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/ui/__init__.py +0 -0
  18. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/ui/components.py +0 -0
  19. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/__init__.py +0 -0
  20. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/add_mapping.py +0 -0
  21. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/agent_tools.py +0 -0
  22. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/apollo_tools.py +0 -0
  23. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/assistant_tool_tag.py +0 -0
  24. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/built_with_api_tools.py +0 -0
  25. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/cache_output_tools.py +0 -0
  26. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/cache_output_tools_local.py +0 -0
  27. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/check_email_validity_tools.py +0 -0
  28. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/check_for_intent_signal.py +0 -0
  29. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/check_linkedin_url_validity.py +0 -0
  30. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/clay_tools.py +0 -0
  31. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/clean_properties.py +0 -0
  32. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/company_utils.py +0 -0
  33. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/compose_salesnav_query.py +0 -0
  34. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/compose_search_query.py +0 -0
  35. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/compose_three_step_workflow.py +0 -0
  36. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/composite_tools.py +0 -0
  37. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/dataframe_tools.py +0 -0
  38. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/domain_parser.py +0 -0
  39. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/email_body_utils.py +0 -0
  40. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/email_parse_helpers.py +0 -0
  41. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/email_provider.py +0 -0
  42. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/enrich_lead_information.py +0 -0
  43. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/extract_email_content_for_llm.py +0 -0
  44. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/fetch_openai_config.py +0 -0
  45. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/field_validators.py +0 -0
  46. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/g2_tools.py +0 -0
  47. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/generate_content.py +0 -0
  48. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/generate_custom_message.py +0 -0
  49. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/generate_email.py +0 -0
  50. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/generate_email_response.py +0 -0
  51. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/generate_flow.py +0 -0
  52. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/generate_leads_salesnav.py +0 -0
  53. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/generate_linkedin_connect_message.py +0 -0
  54. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/generate_linkedin_response_message.py +0 -0
  55. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/generate_structured_output_internal.py +0 -0
  56. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/google_custom_search.py +0 -0
  57. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/google_oauth_tools.py +0 -0
  58. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/google_workspace_tools.py +0 -0
  59. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/hubspot_clearbit.py +0 -0
  60. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/hubspot_crm_tools.py +0 -0
  61. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/instantly_tools.py +0 -0
  62. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/linkedin_crawler.py +0 -0
  63. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/lusha_tools.py +0 -0
  64. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/mailgun_tools.py +0 -0
  65. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/mailreach_tools.py +0 -0
  66. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/microsoft365_tools.py +0 -0
  67. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/openai_assistant_and_file_utils.py +0 -0
  68. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/openai_helpers.py +0 -0
  69. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/openapi_spec_to_tools.py +0 -0
  70. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/openapi_tool/__init__.py +0 -0
  71. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/openapi_tool/api_models.py +0 -0
  72. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/openapi_tool/convert_openai_spec_to_tool.py +0 -0
  73. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/openapi_tool/openapi_tool.py +0 -0
  74. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/parse_linkedin_messages_txt.py +0 -0
  75. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/profile.py +0 -0
  76. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/proxy_curl_tools.py +0 -0
  77. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/proxycurl_search_leads.py +0 -0
  78. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/python_function_to_tools.py +0 -0
  79. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/research_lead.py +0 -0
  80. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/sales_navigator_crawler.py +0 -0
  81. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/salesforce_crm_tools.py +0 -0
  82. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/search_router.py +0 -0
  83. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/search_router_jobs.py +0 -0
  84. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/sendgrid_tools.py +0 -0
  85. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/serarch_router_local_business.py +0 -0
  86. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/serpapi_additional_tools.py +0 -0
  87. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/serpapi_google_jobs.py +0 -0
  88. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/serpapi_google_search.py +0 -0
  89. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/serpapi_local_business_search.py +0 -0
  90. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/serpapi_search_tools.py +0 -0
  91. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/serperdev_google_jobs.py +0 -0
  92. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/serperdev_local_business.py +0 -0
  93. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/serperdev_search.py +0 -0
  94. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/smtp_email_tools.py +0 -0
  95. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/trasform_json.py +0 -0
  96. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/web_download_parse_tools.py +0 -0
  97. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/workflow_code_model.py +0 -0
  98. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/utils/zoominfo_tools.py +0 -0
  99. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/workflow/__init__.py +0 -0
  100. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/workflow/agent.py +0 -0
  101. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/workflow/flow.py +0 -0
  102. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/workflow/task.py +0 -0
  103. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana/workflow/test.py +0 -0
  104. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana.egg-info/SOURCES.txt +0 -0
  105. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana.egg-info/dependency_links.txt +0 -0
  106. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana.egg-info/entry_points.txt +0 -0
  107. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana.egg-info/requires.txt +0 -0
  108. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/src/dhisana.egg-info/top_level.txt +0 -0
  109. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/tests/test_agent_tools.py +0 -0
  110. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/tests/test_apollo_company_search.py +0 -0
  111. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/tests/test_apollo_lead_search.py +0 -0
  112. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/tests/test_connectivity.py +0 -0
  113. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/tests/test_email_body_utils.py +0 -0
  114. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/tests/test_google_document.py +0 -0
  115. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/tests/test_hubspot_call_logs.py +0 -0
  116. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/tests/test_linkedin_serper.py +0 -0
  117. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/tests/test_mailreach.py +0 -0
  118. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/tests/test_mcp_connectivity.py +0 -0
  119. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/tests/test_proxycurl_get_company_search_id.py +0 -0
  120. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/tests/test_proxycurl_job_count.py +0 -0
  121. {dhisana-0.0.1.dev254 → dhisana-0.0.1.dev255}/tests/test_structured_output_with_mcp.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dhisana
3
- Version: 0.0.1.dev254
3
+ Version: 0.0.1.dev255
4
4
  Summary: A Python SDK for Dhisana AI Platform
5
5
  Home-page: https://github.com/dhisana-ai/dhisana-python-sdk
6
6
  Author: Admin
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
2
2
 
3
3
  setup(
4
4
  name='dhisana',
5
- version='0.0.1-dev254',
5
+ version='0.0.1-dev255',
6
6
  description='A Python SDK for Dhisana AI Platform',
7
7
  author='Admin',
8
8
  author_email='contact@dhisana.ai',
@@ -1561,6 +1561,36 @@ async def test_dialpad(client_id: str, client_secret: str) -> Dict[str, Any]:
1561
1561
  return {"success": False, "status_code": 0, "error_message": str(exc)}
1562
1562
 
1563
1563
 
1564
+ async def test_twilio(account_sid: str, auth_token: str) -> Dict[str, Any]:
1565
+ """
1566
+ Validate Twilio credentials via a lightweight authenticated call.
1567
+ Uses HTTP Basic Auth (account_sid:auth_token) to fetch account info.
1568
+ """
1569
+ url = f"https://api.twilio.com/2010-04-01/Accounts/{account_sid}.json"
1570
+
1571
+ try:
1572
+ auth = aiohttp.BasicAuth(account_sid, auth_token)
1573
+ async with aiohttp.ClientSession(timeout=aiohttp.ClientTimeout(total=10), auth=auth) as session:
1574
+ async with session.get(url) as response:
1575
+ status = response.status
1576
+ data = await safe_json(response)
1577
+
1578
+ if status == 200 and isinstance(data, dict) and "sid" in data:
1579
+ return {"success": True, "status_code": status, "error_message": None}
1580
+
1581
+ message = None
1582
+ if isinstance(data, dict):
1583
+ message = data.get("message") or data.get("error")
1584
+ return {
1585
+ "success": False,
1586
+ "status_code": status,
1587
+ "error_message": message or f"Twilio responded with {status}",
1588
+ }
1589
+ except Exception as exc:
1590
+ logger.error(f"Twilio connectivity test failed: {exc}")
1591
+ return {"success": False, "status_code": 0, "error_message": str(exc)}
1592
+
1593
+
1564
1594
  async def test_nooks(api_key: str) -> Dict[str, Any]:
1565
1595
  """
1566
1596
  Validate Nooks.ai API key via a simple authenticated call.
@@ -1880,6 +1910,7 @@ async def test_connectivity(tool_config: List[Dict[str, Any]]) -> Dict[str, Dict
1880
1910
  "aircall": test_aircall, # handled specially to pass appId + apiToken
1881
1911
  "ringover": test_ringover,
1882
1912
  "dialpad": test_dialpad, # handled specially to pass client credentials
1913
+ "twilio": test_twilio, # handled specially to pass account_sid + auth_token
1883
1914
  "nooks": test_nooks,
1884
1915
  "commonRoom": test_commonroom,
1885
1916
  "scarf": test_scarf,
@@ -2097,6 +2128,23 @@ async def test_connectivity(tool_config: List[Dict[str, Any]]) -> Dict[str, Dict
2097
2128
  results[tool_name] = await test_dialpad(client_id, client_secret)
2098
2129
  continue
2099
2130
 
2131
+ # ------------------------------------------------------------------ #
2132
+ # Special-case: Twilio (account_sid + auth_token)
2133
+ # ------------------------------------------------------------------ #
2134
+ if tool_name == "twilio":
2135
+ account_sid = next((c["value"] for c in config_entries if c["name"] in ("accountSid", "account_sid")), None)
2136
+ auth_token = next((c["value"] for c in config_entries if c["name"] in ("authToken", "auth_token")), None)
2137
+ if not account_sid or not auth_token:
2138
+ results[tool_name] = {
2139
+ "success": False,
2140
+ "status_code": 0,
2141
+ "error_message": "Missing accountSid or authToken for Twilio.",
2142
+ }
2143
+ else:
2144
+ logger.info("Testing connectivity for Twilio…")
2145
+ results[tool_name] = await test_twilio(account_sid, auth_token)
2146
+ continue
2147
+
2100
2148
  # ------------------------------------------------------------------ #
2101
2149
  # All other tools – expect an apiKey by default
2102
2150
  # ------------------------------------------------------------------ #
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dhisana
3
- Version: 0.0.1.dev254
3
+ Version: 0.0.1.dev255
4
4
  Summary: A Python SDK for Dhisana AI Platform
5
5
  Home-page: https://github.com/dhisana-ai/dhisana-python-sdk
6
6
  Author: Admin
File without changes
File without changes