@sellable/install 0.1.192 → 0.1.194

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.
@@ -47,6 +47,15 @@ sample rows as the drafting sample. Reject the task as `blocked` if the
47
47
  campaign id, workspace, `selectedLeadListId`, `workflowTableId`, or non-empty
48
48
  campaign-table execution slice does not match the branch input.
49
49
 
50
+ Do not block just because filters were chosen and `leadScoringRubrics` are not
51
+ yet visible in the campaign read. On the filters path, the parent thread is
52
+ saving and approving rubrics in parallel while this branch drafts from the
53
+ initial imported execution slice. Missing saved rubrics, a `filter-rules`
54
+ current step, or pending Filter Leads work means filter setup is still parent
55
+ owned; it is not a Message Drafting blocker. If campaign/list/table identity and
56
+ the non-empty execution slice match, continue drafting and return `status:
57
+ ready` with `basisStatus: usable_initial`.
58
+
50
59
  Never inspect or reconstruct state from local artifacts in normal runs:
51
60
 
52
61
  - do not require, read, hunt for, or mention `brief.md`
@@ -176,6 +185,11 @@ recommendation usable and report `status: ready` with `basisStatus:
176
185
  offer the user a choice to keep the initial draft or rewrite with enriched/filter
177
186
  data, but the rewrite must be explicit user opt-in.
178
187
 
188
+ If the parent chose filters but the branch read happens before `save_rubrics`
189
+ commits, do not wait, retry, or return `blocked`. The parent already waits for
190
+ both saved-filter approval and a message recommendation before message review,
191
+ so this branch should finish the reusable template from the initial sample.
192
+
179
193
  Retry or regenerate without asking only when the initial recommendation is
180
194
  missing, failed, structurally invalid, unsafe, or mismatched on campaign id,
181
195
  selected source, `selectedLeadListId`, `workflowTableId`, or execution-slice
@@ -586,6 +586,8 @@ const CREATE_CAMPAIGN_ALLOWED_TOOLS = [
586
586
  "mcp__sellable__get_source_scout_registry",
587
587
  "mcp__sellable__get_post_find_leads_scout_registry",
588
588
  "mcp__sellable__get_active_workspace",
589
+ "mcp__sellable__list_workspaces",
590
+ "mcp__sellable__set_active_workspace",
589
591
  "mcp__sellable__list_senders",
590
592
  "mcp__sellable__get_sender",
591
593
  "mcp__sellable__complete_sender_research",
@@ -628,6 +630,8 @@ const CREATE_CAMPAIGN_ALLOWED_TOOLS = [
628
630
  "mcp__sellable__get_rows",
629
631
  "mcp__sellable__get_rows_minimal",
630
632
  "mcp__sellable__get_table_rows",
633
+ "mcp__sellable__list_dnc_entries",
634
+ "mcp__sellable__load_csv_dnc_entries",
631
635
  "mcp__sellable__load_csv_linkedin_leads",
632
636
  "mcp__sellable__load_csv_domains",
633
637
  "mcp__sellable__get_campaign_messages_preview",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sellable/install",
3
- "version": "0.1.192",
3
+ "version": "0.1.194",
4
4
  "type": "module",
5
5
  "description": "One-command installer for Sellable MCP in Claude Code and Codex",
6
6
  "bin": {
@@ -14,6 +14,8 @@ allowed-tools:
14
14
  - mcp__sellable__get_source_scout_registry
15
15
  - mcp__sellable__get_post_find_leads_scout_registry
16
16
  - mcp__sellable__get_active_workspace
17
+ - mcp__sellable__list_workspaces
18
+ - mcp__sellable__set_active_workspace
17
19
  - mcp__sellable__list_senders
18
20
  - mcp__sellable__get_sender
19
21
  - mcp__sellable__complete_sender_research
@@ -56,6 +58,8 @@ allowed-tools:
56
58
  - mcp__sellable__get_rows
57
59
  - mcp__sellable__get_rows_minimal
58
60
  - mcp__sellable__get_table_rows
61
+ - mcp__sellable__list_dnc_entries
62
+ - mcp__sellable__load_csv_dnc_entries
59
63
  - mcp__sellable__load_csv_linkedin_leads
60
64
  - mcp__sellable__load_csv_domains
61
65
  - mcp__sellable__get_campaign_messages_preview
@@ -86,6 +90,23 @@ message approval` until the template is approved.
86
90
  Use Template is the default message path; AI Generated is only an explicit
87
91
  opt-out.
88
92
 
93
+ ## DNC And Blocklist Handling
94
+
95
+ If the user says blocklist, DNC, do-not-contact, suppression list, or "do not
96
+ import/message these", use `load_csv_dnc_entries` before sourcing or importing.
97
+ This writes to Sellable's workspace-level DNC list after previewing the exact
98
+ active workspace name and ID and getting confirmation. Do not route this to
99
+ provider search exclusions, source-list workarounds, Prospeo domain filters, or
100
+ `save_domain_filters`. `load_csv_domains` and `save_domain_filters`
101
+ are for known-account targeting only, not DNC. Campaign creation already
102
+ includes a `DNC Check` column that checks domain and LinkedIn profile before
103
+ message generation.
104
+
105
+ If the user asks to show/check the current DNC list, count, list names, or first
106
+ page before importing, call `list_dnc_entries`. Confirm the active workspace
107
+ name and ID in the response before any write. This is Sellable's workspace DNC
108
+ list used by DNC Check.
109
+
89
110
  ## Opening Turn Contract
90
111
 
91
112
  On the first visible response after this skill is invoked, do not narrate