fusesell 1.2.8__tar.gz → 1.3.0__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.

Potentially problematic release.


This version of fusesell might be problematic. Click here for more details.

Files changed (43) hide show
  1. {fusesell-1.2.8 → fusesell-1.3.0}/CHANGELOG.md +99 -74
  2. {fusesell-1.2.8/fusesell.egg-info → fusesell-1.3.0}/PKG-INFO +1 -1
  3. {fusesell-1.2.8 → fusesell-1.3.0/fusesell.egg-info}/PKG-INFO +1 -1
  4. {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/__init__.py +1 -1
  5. {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/stages/initial_outreach.py +427 -187
  6. {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/utils/data_manager.py +8 -0
  7. {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/utils/event_scheduler.py +43 -15
  8. {fusesell-1.2.8 → fusesell-1.3.0}/pyproject.toml +1 -1
  9. {fusesell-1.2.8 → fusesell-1.3.0}/LICENSE +0 -0
  10. {fusesell-1.2.8 → fusesell-1.3.0}/MANIFEST.in +0 -0
  11. {fusesell-1.2.8 → fusesell-1.3.0}/README.md +0 -0
  12. {fusesell-1.2.8 → fusesell-1.3.0}/fusesell.egg-info/SOURCES.txt +0 -0
  13. {fusesell-1.2.8 → fusesell-1.3.0}/fusesell.egg-info/dependency_links.txt +0 -0
  14. {fusesell-1.2.8 → fusesell-1.3.0}/fusesell.egg-info/entry_points.txt +0 -0
  15. {fusesell-1.2.8 → fusesell-1.3.0}/fusesell.egg-info/requires.txt +0 -0
  16. {fusesell-1.2.8 → fusesell-1.3.0}/fusesell.egg-info/top_level.txt +0 -0
  17. {fusesell-1.2.8 → fusesell-1.3.0}/fusesell.py +0 -0
  18. {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/api.py +0 -0
  19. {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/cli.py +0 -0
  20. {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/config/__init__.py +0 -0
  21. {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/config/prompts.py +0 -0
  22. {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/config/settings.py +0 -0
  23. {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/pipeline.py +0 -0
  24. {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/stages/__init__.py +0 -0
  25. {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/stages/base_stage.py +0 -0
  26. {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/stages/data_acquisition.py +0 -0
  27. {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/stages/data_preparation.py +0 -0
  28. {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/stages/follow_up.py +0 -0
  29. {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/stages/lead_scoring.py +0 -0
  30. {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/tests/conftest.py +0 -0
  31. {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/tests/test_api.py +0 -0
  32. {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/tests/test_cli.py +0 -0
  33. {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/tests/test_data_manager_products.py +0 -0
  34. {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/tests/test_data_manager_sales_process.py +0 -0
  35. {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/tests/test_data_manager_teams.py +0 -0
  36. {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/utils/__init__.py +0 -0
  37. {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/utils/birthday_email_manager.py +0 -0
  38. {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/utils/llm_client.py +0 -0
  39. {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/utils/logger.py +0 -0
  40. {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/utils/timezone_detector.py +0 -0
  41. {fusesell-1.2.8 → fusesell-1.3.0}/fusesell_local/utils/validators.py +0 -0
  42. {fusesell-1.2.8 → fusesell-1.3.0}/requirements.txt +0 -0
  43. {fusesell-1.2.8 → fusesell-1.3.0}/setup.cfg +0 -0
@@ -1,76 +1,101 @@
1
- # Changelog
2
-
3
- All notable changes to FuseSell Local will be documented in this file.
4
-
5
- # [1.2.8] - 2025-10-24
6
-
7
- ### Changed
8
- - Initial outreach resolves the primary sales rep from `gs_team_rep` and injects their identity into prompts, reminders, and draft metadata so outreach reflects real team settings.
9
-
10
- ### Fixed
11
- - Sanitizes generated email bodies to replace or remove `[Your …]` placeholders, ensuring signatures contain actual values even when optional rep fields are missing.
12
- - Reminder scheduling now preserves merged contact emails so follow-up records always carry `customer_email` for downstream automations.
13
-
14
- # [1.2.7] - 2025-10-24
15
-
16
- ### Changed
17
- - RealTimeX sales-process normalization now forwards `recipient_address`, `recipient_name`, and `customer_email` into the FuseSell pipeline so prompt generation and scheduling have complete context.
18
- - Default outreach prompt replacements enrich customer metadata with toolkit-derived contact details and enforce first-name greetings to match server quality.
19
-
20
- ### Fixed
21
- - Initial outreach stage now records generated drafts in the pipeline summary, seeds reminder_task rows with toolkit credentials, and schedules follow-up events when `send_immediately` is false.
22
- - Prompt-based draft generation no longer skips scheduling due to missing email fields and guarantees outputs without unresolved placeholders.
23
-
24
- # [1.2.6] - 2025-10-24
25
-
26
- ### Added
27
- - Automatically seed packaged prompt, scoring, and template JSON files into the writable `fusesell_data/config` directory so fresh installs immediately pick up the default initial outreach draft prompt.
28
- - Draft generation now records the scheduled reminder metadata in stage output while mirroring the server’s `schedule_auto_run` behaviour locally.
29
-
30
- ### Fixed
31
- - Bundled configuration files are used as a fallback when the data directory is missing overrides, preventing empty prompt loads that previously produced low-quality duplicate drafts.
32
-
33
- # [1.2.5] - 2025-10-24
34
-
35
- ### Added
36
- - Local `reminder_task` table and scheduler plumbing so scheduled outreach mirrors the server flow and can be consumed by RealTimeX orchestration.
37
- - Initial outreach and follow-up stages now emit reminder metadata whenever emails are scheduled, including team/customer context.
38
-
39
- ### Changed
40
- - Event scheduler returns reminder IDs alongside scheduled events while preserving immutable default prompts when layering team overrides.
41
-
42
- # [1.2.3] - 2025-10-21
43
-
44
- ### Added
45
- - `LocalDataManager.search_products()` for server-compatible product filtering (status, keyword, limit, sort).
46
- - CLI `product list` flags and `list_products.py` filters wired to the new search helper.
47
- - Regression tests covering keyword search, sorting, and limiting behavior.
48
-
49
- ### Changed
50
- - `get_products_by_org` now delegates to the filtered search path to avoid loading inactive results.
51
- - Product management documentation updated for RealTimeX flows and CLI filter usage.
52
-
53
- # [1.2.2] - 2025-10-21
54
-
55
- ### Added
56
- - LocalDataManager regression tests covering product/team CRUD flows and sales process tracking helpers.
57
-
58
- ### Fixed
59
- - Default team settings seeding now targets the `gs_team_*` columns, preventing initialization failures on fresh databases.
60
-
61
- # [1.2.1] - 2025-10-21
62
-
63
- ### Changed
64
- - Expose `__version__`, `__author__`, and `__description__` at the top-level `fusesell` module for easier runtime inspection.
65
-
66
- ### Fixed
67
- - `import fusesell; fusesell.__version__` now reports the installed version instead of `unknown`.
68
-
69
- ## [1.2.0] - 2025-10-20
70
-
71
- ### Added
72
- - Packaged CLI access via `FuseSellCLI` export to support embedded runtimes and automated tests.
73
- - pytest coverage (`fusesell_local/tests/test_cli.py`) ensuring the CLI dry-run path remains stable.
1
+ # Changelog
2
+
3
+ All notable changes to FuseSell Local will be documented in this file.
4
+
5
+ # [1.3.0] - 2025-10-24
6
+
7
+ ### Added
8
+ - Bundled prompt seeding now copies packaged defaults into fusesell_data/config automatically, guaranteeing the initial outreach stage always finds the shipped templates on first run.
9
+
10
+ ### Changed
11
+ - Updated the default initial-outreach and follow-up prompts to require fully wrapped <html><body> content, enforce first-name greetings, and eliminate placeholder signatures so LLM drafts arrive production-ready.
12
+ - Sanitization logic normalizes generated emails into HTML (including fallback/mock drafts), injects recipient metadata, and reuses the calculated first name across prompt, rewrite, and reminder flows.
13
+ - Reminder scheduling now records Unix timestamps (cron_ts) for every new entry, simplifying downstream polling in RealTimeX orchestration.
14
+
15
+ ### Fixed
16
+ - Draft generation once again prioritises the LLM prompt path; fallback templates only trigger when the prompt fails to load, preventing duplicate plain-text emails.
17
+ - Rewrites, dry-run mocks, and fallback drafts no longer emit duplicate greetings or unresolved [Your ...] placeholders, and they retain HTML formatting for downstream mailers.
18
+
19
+ # [1.2.9] - 2025-10-24
20
+
21
+ ### Changed
22
+ - Primary sales rep metadata from gs_team_rep now flows into draft prompts, reminders, and signatures so outreach reflects the configured sender.
23
+ - Reminder scheduling stores the Unix timestamp (cron_ts) alongside the ISO string for easier downstream filtering.
24
+ - Greeting sanitizer standardises the first paragraph and removes duplicate salutations while keeping HTML formatting intact.
25
+
26
+ ### Fixed
27
+ - Removed [Your ...] placeholder leftovers inside LLM responses and ensured drafts remain valid HTML even when the model mixes plain text and bullet lists.
28
+ - Reminder creation no longer fails when the data acquisition stage supplies the email address, and follow-up reminders inherit the same customer metadata.
29
+
30
+ # [1.2.8] - 2025-10-24
31
+
32
+ ### Changed
33
+ - Initial outreach resolves the primary sales rep from `gs_team_rep` and injects their identity into prompts, reminders, and draft metadata so outreach reflects real team settings.
34
+
35
+ ### Fixed
36
+ - Sanitizes generated email bodies to replace or remove `[Your …]` placeholders, ensuring signatures contain actual values even when optional rep fields are missing.
37
+ - Reminder scheduling now preserves merged contact emails so follow-up records always carry `customer_email` for downstream automations.
38
+
39
+ # [1.2.7] - 2025-10-24
40
+
41
+ ### Changed
42
+ - RealTimeX sales-process normalization now forwards `recipient_address`, `recipient_name`, and `customer_email` into the FuseSell pipeline so prompt generation and scheduling have complete context.
43
+ - Default outreach prompt replacements enrich customer metadata with toolkit-derived contact details and enforce first-name greetings to match server quality.
44
+
45
+ ### Fixed
46
+ - Initial outreach stage now records generated drafts in the pipeline summary, seeds reminder_task rows with toolkit credentials, and schedules follow-up events when `send_immediately` is false.
47
+ - Prompt-based draft generation no longer skips scheduling due to missing email fields and guarantees outputs without unresolved placeholders.
48
+
49
+ # [1.2.6] - 2025-10-24
50
+
51
+ ### Added
52
+ - Automatically seed packaged prompt, scoring, and template JSON files into the writable `ffusesell_data/config` directory so fresh installs immediately pick up the default initial outreach draft prompt.
53
+ - Draft generation now records the scheduled reminder metadata in stage output while mirroring the server’s `schedule_auto_run` behaviour locally.
54
+
55
+ ### Fixed
56
+ - Bundled configuration files are used as a fallback when the data directory is missing overrides, preventing empty prompt loads that previously produced low-quality duplicate drafts.
57
+
58
+ # [1.2.5] - 2025-10-24
59
+
60
+ ### Added
61
+ - Local `reminder_task` table and scheduler plumbing so scheduled outreach mirrors the server flow and can be consumed by RealTimeX orchestration.
62
+ - Initial outreach and follow-up stages now emit reminder metadata whenever emails are scheduled, including team/customer context.
63
+
64
+ ### Changed
65
+ - Event scheduler returns reminder IDs alongside scheduled events while preserving immutable default prompts when layering team overrides.
66
+
67
+ # [1.2.3] - 2025-10-21
68
+
69
+ ### Added
70
+ - `LocalDataManager.search_products()` for server-compatible product filtering (status, keyword, limit, sort).
71
+ - CLI `product list` flags and `list_products.py` filters wired to the new search helper.
72
+ - Regression tests covering keyword search, sorting, and limiting behavior.
73
+
74
+ ### Changed
75
+ - `get_products_by_org` now delegates to the filtered search path to avoid loading inactive results.
76
+ - Product management documentation updated for RealTimeX flows and CLI filter usage.
77
+
78
+ # [1.2.2] - 2025-10-21
79
+
80
+ ### Added
81
+ - LocalDataManager regression tests covering product/team CRUD flows and sales process tracking helpers.
82
+
83
+ ### Fixed
84
+ - Default team settings seeding now targets the `gs_team_*` columns, preventing initialization failures on fresh databases.
85
+
86
+ # [1.2.1] - 2025-10-21
87
+
88
+ ### Changed
89
+ - Expose `__version__`, `__author__`, and `__description__` at the top-level `fusesell` module for easier runtime inspection.
90
+
91
+ ### Fixed
92
+ - `import fusesell; fusesell.__version__` now reports the installed version instead of `unknown`.
93
+
94
+ ## [1.2.0] - 2025-10-20
95
+
96
+ ### Added
97
+ - Packaged CLI access via `FuseSellCLI` export to support embedded runtimes and automated tests.
98
+ - pytest coverage (`fusesell_local/tests/test_cli.py`) ensuring the CLI dry-run path remains stable.
74
99
 
75
100
  ### Changed
76
101
  - Distribution renamed to `fusesell` to align with upcoming PyPI publication; console entry point now resolves to `fusesell_local.cli:main`.
@@ -155,7 +180,7 @@ fusesell-local/
155
180
  stages/ # Pipeline stages (base implementation)
156
181
  utils/ # Utilities (data, LLM, validation, logging)
157
182
  config/ # Configuration management
158
- fusesell_data/ # Local data storage
183
+ ffusesell_data/ # Local data storage
159
184
  config/ # Configuration files
160
185
  drafts/ # Generated email drafts
161
186
  logs/ # Execution logs
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fusesell
3
- Version: 1.2.8
3
+ Version: 1.3.0
4
4
  Summary: Local implementation of FuseSell AI sales automation pipeline
5
5
  Author-email: FuseSell Team <team@fusesell.ai>
6
6
  License-Expression: MIT
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fusesell
3
- Version: 1.2.8
3
+ Version: 1.3.0
4
4
  Summary: Local implementation of FuseSell AI sales automation pipeline
5
5
  Author-email: FuseSell Team <team@fusesell.ai>
6
6
  License-Expression: MIT
@@ -32,6 +32,6 @@ __all__ = [
32
32
  "validate_config",
33
33
  ]
34
34
 
35
- __version__ = "1.2.8"
35
+ __version__ = "1.3.0"
36
36
  __author__ = "FuseSell Team"
37
37
  __description__ = "Local implementation of FuseSell AI sales automation pipeline"