dhisana 0.0.1.dev306__tar.gz → 0.0.1.dev307__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 (127) hide show
  1. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/PKG-INFO +1 -1
  2. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/setup.py +1 -1
  3. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/generate_sms_whatsapp.py +10 -3
  4. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana.egg-info/PKG-INFO +1 -1
  5. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/README.md +0 -0
  6. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/pyproject.toml +0 -0
  7. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/setup.cfg +0 -0
  8. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/__init__.py +0 -0
  9. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/cli/__init__.py +0 -0
  10. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/cli/cli.py +0 -0
  11. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/cli/datasets.py +0 -0
  12. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/cli/models.py +0 -0
  13. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/cli/predictions.py +0 -0
  14. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/schemas/__init__.py +0 -0
  15. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/schemas/common.py +0 -0
  16. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/schemas/sales.py +0 -0
  17. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/ui/__init__.py +0 -0
  18. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/ui/components.py +0 -0
  19. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/__init__.py +0 -0
  20. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/add_mapping.py +0 -0
  21. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/agent_tools.py +0 -0
  22. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/apollo_tools.py +0 -0
  23. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/assistant_tool_tag.py +0 -0
  24. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/built_with_api_tools.py +0 -0
  25. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/cache_output_tools.py +0 -0
  26. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/cache_output_tools_local.py +0 -0
  27. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/check_email_validity_tools.py +0 -0
  28. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/check_for_intent_signal.py +0 -0
  29. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/check_linkedin_url_validity.py +0 -0
  30. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/clay_tools.py +0 -0
  31. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/clean_properties.py +0 -0
  32. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/company_utils.py +0 -0
  33. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/compose_salesnav_query.py +0 -0
  34. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/compose_search_query.py +0 -0
  35. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/compose_three_step_workflow.py +0 -0
  36. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/composite_tools.py +0 -0
  37. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/dataframe_tools.py +0 -0
  38. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/domain_parser.py +0 -0
  39. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/email_body_utils.py +0 -0
  40. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/email_parse_helpers.py +0 -0
  41. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/email_provider.py +0 -0
  42. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/enrich_lead_information.py +0 -0
  43. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/extract_email_content_for_llm.py +0 -0
  44. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/fetch_openai_config.py +0 -0
  45. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/field_validators.py +0 -0
  46. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/g2_tools.py +0 -0
  47. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/generate_content.py +0 -0
  48. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/generate_custom_message.py +0 -0
  49. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/generate_email.py +0 -0
  50. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/generate_email_response.py +0 -0
  51. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/generate_flow.py +0 -0
  52. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/generate_leads_salesnav.py +0 -0
  53. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/generate_linkedin_connect_message.py +0 -0
  54. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/generate_linkedin_response_message.py +0 -0
  55. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/generate_structured_output_internal.py +0 -0
  56. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/google_custom_search.py +0 -0
  57. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/google_oauth_tools.py +0 -0
  58. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/google_workspace_tools.py +0 -0
  59. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/hubspot_clearbit.py +0 -0
  60. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/hubspot_crm_tools.py +0 -0
  61. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/instantly_tools.py +0 -0
  62. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/linkedin_crawler.py +0 -0
  63. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/lusha_tools.py +0 -0
  64. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/mailgun_tools.py +0 -0
  65. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/mailreach_tools.py +0 -0
  66. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/microsoft365_tools.py +0 -0
  67. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/openai_assistant_and_file_utils.py +0 -0
  68. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/openai_helpers.py +0 -0
  69. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/openapi_spec_to_tools.py +0 -0
  70. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/openapi_tool/__init__.py +0 -0
  71. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/openapi_tool/api_models.py +0 -0
  72. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/openapi_tool/convert_openai_spec_to_tool.py +0 -0
  73. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/openapi_tool/openapi_tool.py +0 -0
  74. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/parse_linkedin_messages_txt.py +0 -0
  75. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/profile.py +0 -0
  76. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/proxy_curl_tools.py +0 -0
  77. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/proxycurl_search_leads.py +0 -0
  78. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/python_function_to_tools.py +0 -0
  79. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/research_lead.py +0 -0
  80. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/sales_navigator_crawler.py +0 -0
  81. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/salesforce_crm_tools.py +0 -0
  82. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/search_router.py +0 -0
  83. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/search_router_jobs.py +0 -0
  84. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/sendgrid_tools.py +0 -0
  85. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/serarch_router_local_business.py +0 -0
  86. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/serpapi_additional_tools.py +0 -0
  87. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/serpapi_google_jobs.py +0 -0
  88. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/serpapi_google_search.py +0 -0
  89. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/serpapi_local_business_search.py +0 -0
  90. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/serpapi_search_tools.py +0 -0
  91. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/serperdev_google_jobs.py +0 -0
  92. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/serperdev_local_business.py +0 -0
  93. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/serperdev_search.py +0 -0
  94. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/smtp_email_tools.py +0 -0
  95. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/test_connect.py +0 -0
  96. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/trasform_json.py +0 -0
  97. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/web_download_parse_tools.py +0 -0
  98. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/workflow_code_model.py +0 -0
  99. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/utils/zoominfo_tools.py +0 -0
  100. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/workflow/__init__.py +0 -0
  101. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/workflow/agent.py +0 -0
  102. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/workflow/flow.py +0 -0
  103. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/workflow/task.py +0 -0
  104. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana/workflow/test.py +0 -0
  105. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana.egg-info/SOURCES.txt +0 -0
  106. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana.egg-info/dependency_links.txt +0 -0
  107. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana.egg-info/entry_points.txt +0 -0
  108. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana.egg-info/requires.txt +0 -0
  109. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/src/dhisana.egg-info/top_level.txt +0 -0
  110. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/tests/test_agent_tools.py +0 -0
  111. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/tests/test_apollo_company_search.py +0 -0
  112. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/tests/test_apollo_lead_search.py +0 -0
  113. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/tests/test_connectivity.py +0 -0
  114. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/tests/test_email_body_utils.py +0 -0
  115. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/tests/test_generate_email.py +0 -0
  116. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/tests/test_generate_sms_whatsapp.py +0 -0
  117. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/tests/test_google_document.py +0 -0
  118. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/tests/test_hubspot_call_logs.py +0 -0
  119. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/tests/test_linkedin_serper.py +0 -0
  120. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/tests/test_mailreach.py +0 -0
  121. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/tests/test_mcp_connectivity.py +0 -0
  122. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/tests/test_normalize_graph_datetime.py +0 -0
  123. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/tests/test_proxycurl_get_company_search_id.py +0 -0
  124. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/tests/test_proxycurl_job_count.py +0 -0
  125. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/tests/test_reply_thread_fallback.py +0 -0
  126. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/tests/test_send_email_recipients.py +0 -0
  127. {dhisana-0.0.1.dev306 → dhisana-0.0.1.dev307}/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.dev306
3
+ Version: 0.0.1.dev307
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-dev306',
5
+ version='0.0.1-dev307',
6
6
  description='A Python SDK for Dhisana AI Platform',
7
7
  author='Admin',
8
8
  author_email='contact@dhisana.ai',
@@ -101,7 +101,9 @@ async def generate_sms_whatsapp_copy(
101
101
  usable_chars = char_limit - len(opt_out_suffix)
102
102
  channel_label = "WhatsApp" if channel_type == ChannelType.WHATSAPP else "SMS"
103
103
 
104
- prompt = f"""You are an AI sales copywriter. Write exactly one personalized {channel_label} message on behalf of the sender to the lead described below.
104
+ prompt = f"""You are an AI sales copywriter. Your task is to write exactly one personalized outbound business {channel_label} text message on behalf of the sender to the lead described below.
105
+
106
+ This is a legitimate B2B sales outreach message. The sender has opted in to sending these messages through our platform.
105
107
 
106
108
  ## Channel Rules — {channel_label}
107
109
 
@@ -111,8 +113,9 @@ async def generate_sms_whatsapp_copy(
111
113
  4. Be concise and conversational. Lead with value, not a greeting. Avoid filler.
112
114
  5. Do NOT include any opt-out / STOP language — the system appends it automatically.
113
115
  6. Do NOT include phone numbers, email addresses, or links unless the writing instructions explicitly request a specific provided URL.
114
- 7. Ground every claim in the provided context. Never fabricate information.
116
+ 7. Ground every claim in the provided context. When information is missing, omit it — never guess or fabricate.
115
117
  8. Do not use em dashes.
118
+ 9. The "body" field must contain ONLY the message text. Never append JSON, metadata, or structured data to the body.
116
119
 
117
120
  ## Lead
118
121
 
@@ -187,8 +190,12 @@ Return JSON with a single field: "body" (string, plain text, max {usable_chars}
187
190
  )
188
191
 
189
192
  if status != "SUCCESS":
193
+ # Include the refusal/error detail if the model returned text
194
+ detail = ""
195
+ if isinstance(response, str) and response:
196
+ detail = f" Model response: {response[:200]}"
190
197
  raise Exception(
191
- f"Error: Could not generate {channel_label} message."
198
+ f"Error: Could not generate {channel_label} message.{detail}"
192
199
  )
193
200
 
194
201
  body = (response.body or "").strip()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dhisana
3
- Version: 0.0.1.dev306
3
+ Version: 0.0.1.dev307
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