@sellable/mcp 0.1.182 → 0.1.183

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.
package/README.md CHANGED
@@ -272,10 +272,11 @@ Parallel execution contract:
272
272
  filter/message prompts before that question. Once the user answers, launch the
273
273
  message-generation scout from the same campaign/table basis. If the user
274
274
  chooses filters, also launch the filter-leads scout, show Filter Rules, save
275
- rubrics, then ask for filter approval. After approval, keep the browser on
276
- Filter Leads while the message recommendation is reviewed. If filters are
277
- skipped, move to Messages/message review. Enrichment/filtering and Generate
278
- Message cells wait for message approval.
275
+ rubrics, then ask for filter approval. After approval, move to Filter Leads
276
+ and show `Filters saved + waiting for message approval` while the message
277
+ recommendation is reviewed. If filters are skipped, move to Messages/message
278
+ review. Enrichment/filtering and Generate Message cells wait for message
279
+ approval.
279
280
  - Claude host: use the installed `source-scout-linkedin-engagement`,
280
281
  `source-scout-sales-nav`, and `source-scout-prospeo-contact` Task/Agent
281
282
  subagents for parallel lead-source scouting only when the current session
@@ -340,9 +340,9 @@ export function getPostFindLeadsScoutRegistry() {
340
340
  reusePolicy: "The first completed Message Draft Builder recommendation remains the default review candidate. Later Lead Fit Builder, Filter Leads, enrichment, or rubric completion may make an enriched rewrite available, but does not automatically retry or replace the initial draft unless campaign/brief/source/list/table/review-sample identity mismatches or the initial output failed.",
341
341
  },
342
342
  usage: {
343
- codex: "After confirm_lead_list copies source rows and the initial campaign-table execution slice exists, ask the filter-choice question immediately. Do not spawn returned post-lead scout names before that question. Once the user answers, spawn Message Draft Builder from the same campaign/table basis. If the user chooses filters, also spawn Lead Fit Builder, move to Filter Rules, save rubrics, ask for filter approval, then keep the browser on Filter Leads while the message recommendation is reviewed. If filters are skipped, move to Messages/message review.",
344
- claude: "After confirm_lead_list copies source rows and the initial campaign-table execution slice exists, ask the filter-choice question immediately. Do not invoke returned post-lead Task/Agent names before that question. Once the user answers, invoke Message Draft Builder from the same campaign/table basis. If the user chooses filters, also invoke Lead Fit Builder, move to Filter Rules, save rubrics, ask for filter approval, then keep the browser on Filter Leads while the message recommendation is reviewed. If filters are skipped, move to Messages/message review.",
345
- parentThreadRule: 'Named agents are optional acceleration, but message drafting is not optional. If post-find-leads-message-scout is available, run it as the background Message Draft Builder after the filter-choice answer. If it is absent, do not customer-surface install status; the main thread must execute the same message branch from CampaignOffer state, selected source state, workflowTableId, and initial campaign-table execution slice rows. Local markdown/json files are not normal-path inputs. The filter-choice question is the first post-import user gate; do not load post-lead registries, filter references, or the full generate-messages prompt before it. Message drafting starts after the filter-choice answer, must load get_subskill_prompt({ subskillName: "generate-messages", offset, limit }) until hasMore=false, must read live campaign table state through scoped MCP/product tools, and must reject mismatched selectedLeadListId/workflowTableId/campaign/workspace input. On the filter path, keep the browser on Filter Rules after save_rubrics so the user can approve the saved criteria; only then move to Filter Leads and wait there for message approval. Enrichment, filtering, Generate Message cells, sender setup, sequence attach, and launch wait for template approval on the Use Template path. On the skip path, move to Messages/message review and wait for message approval before enrichment or Settings. Do not render message review from checklist or shortcut instructions; message review requires a messageDraftRecommendation whose basis proves the full generate-messages prompt ran for the current campaign/table execution slice. Do not automatically rerun Message Draft Builder after filters/enrichment finish; show the initial draft by default and offer an enriched rewrite only with explicit user opt-in.',
343
+ codex: "After confirm_lead_list copies source rows and the initial campaign-table execution slice exists, ask the filter-choice question immediately. Do not spawn returned post-lead scout names before that question. Once the user answers, spawn Message Draft Builder from the same campaign/table basis. If the user chooses filters, also spawn Lead Fit Builder, move to Filter Rules, save rubrics, ask for filter approval, then keep the browser on Filter Leads and show `Filters saved + waiting for message approval` while the message recommendation is reviewed. If filters are skipped, move to Messages/message review.",
344
+ claude: "After confirm_lead_list copies source rows and the initial campaign-table execution slice exists, ask the filter-choice question immediately. Do not invoke returned post-lead Task/Agent names before that question. Once the user answers, invoke Message Draft Builder from the same campaign/table basis. If the user chooses filters, also invoke Lead Fit Builder, move to Filter Rules, save rubrics, ask for filter approval, then keep the browser on Filter Leads and show `Filters saved + waiting for message approval` while the message recommendation is reviewed. If filters are skipped, move to Messages/message review.",
345
+ parentThreadRule: 'Named agents are optional acceleration, but message drafting is not optional. If post-find-leads-message-scout is available, run it as the background Message Draft Builder after the filter-choice answer. If it is absent, do not customer-surface install status; the main thread must execute the same message branch from CampaignOffer state, selected source state, workflowTableId, and initial campaign-table execution slice rows. Local markdown/json files are not normal-path inputs. The filter-choice question is the first post-import user gate; do not load post-lead registries, filter references, or the full generate-messages prompt before it. Message drafting starts after the filter-choice answer, must load get_subskill_prompt({ subskillName: "generate-messages", offset, limit }) until hasMore=false, must read live campaign table state through scoped MCP/product tools, and must reject mismatched selectedLeadListId/workflowTableId/campaign/workspace input. On the filter path, keep the browser on Filter Rules after save_rubrics so the user can approve the saved criteria; only then move to Filter Leads, show `Filters saved + waiting for message approval`, and wait there for message approval. Enrichment, filtering, Generate Message cells, sender setup, sequence attach, and launch wait for template approval on the Use Template path. On the skip path, move to Messages/message review and wait for message approval before enrichment or Settings. Do not render message review from checklist or shortcut instructions; message review requires a messageDraftRecommendation whose basis proves the full generate-messages prompt ran for the current campaign/table execution slice. Do not automatically rerun Message Draft Builder after filters/enrichment finish; show the initial draft by default and offer an enriched rewrite only with explicit user opt-in.',
346
346
  },
347
347
  };
348
348
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sellable/mcp",
3
- "version": "0.1.182",
3
+ "version": "0.1.183",
4
4
  "type": "module",
5
5
  "description": "Sellable MCP server for Claude Code and Codex campaign workflows",
6
6
  "main": "dist/index.js",
@@ -76,6 +76,8 @@ execution slice configures filters and messages. After that, the user chooses
76
76
  whether to use filters or skip.
77
77
  When filters are chosen, save rubrics, get filter approval, then wait for
78
78
  message-template approval before enrichment/filtering or Generate Message cells.
79
+ After filter approval, Filter Leads should show `Filters saved + waiting for
80
+ message approval` until the template is approved.
79
81
  Use Template is the default message path; AI Generated is only an explicit
80
82
  opt-out.
81
83
 
@@ -273,10 +275,11 @@ before the filter-choice question. After `confirm_lead_list`, ask add filters
273
275
  vs skip filters immediately. Once the user answers, launch the message scout
274
276
  from the same campaign/table basis. If the user chooses filters, also launch the
275
277
  filter-leads scout, move to Filter Rules, save rubrics, then ask for filter
276
- approval. After approval, keep the browser on Filter Leads while the message
277
- recommendation is reviewed. If the user skips filters, move to Messages/message
278
- review. Enrichment/filtering and Generate Message cells wait for message
279
- approval. AI Generated is an explicit opt-out from the template path. If the
278
+ approval. After approval, move to Filter Leads and show `Filters saved + waiting
279
+ for message approval` while the message recommendation is reviewed. If the user
280
+ skips filters, move to Messages/message review. Enrichment/filtering and
281
+ Generate Message cells wait for message approval. AI Generated is an explicit
282
+ opt-out from the template path. If the
280
283
  post-lead agents are absent, the main thread still orchestrates the same
281
284
  branches from compact MCP context.
282
285
 
@@ -750,7 +753,8 @@ updates.
750
753
  call `mcp__sellable__update_campaign({ campaignId, enableICPFilters: true, currentStep: "create-icp-rubric", watchNarration })`
751
754
  so the watched app moves to Filter Rules while rubrics are drafted/saved.
752
755
  After rubrics save, keep Filter Rules visible for approval; after approval,
753
- move to Filter Leads and wait there for the background message recommendation.
756
+ move to Filter Leads and show `Filters saved + waiting for message approval`
757
+ until the template is approved.
754
758
  If filters are skipped, move to Messages/message review. Queue the bounded
755
759
  campaign-table execution-slice `enrichCellId` cells only after message approval. Move to
756
760
  Messages only after at least one review row passes and one generated message
@@ -763,8 +767,8 @@ updates.
763
767
  the brief, `pick-provider` or the selected provider step while sourcing,
764
768
  `filter-choice` after source rows are copied into the campaign table, `create-icp-rubric` as soon
765
769
  as filters are chosen and while saved filters await approval,
766
- `apply-icp-rubric` after filter approval and message approval while bounded
767
- enrichment/filter scoring runs, `validate-sample` only as a recovery/legacy
770
+ `apply-icp-rubric` after filter approval while message approval is pending,
771
+ and after message approval while bounded enrichment/filter scoring runs, `validate-sample` only as a recovery/legacy
768
772
  observation state,
769
773
  `auto-execute-messaging` after at least one row passes and initial campaign-row
770
774
  messages are being generated or reviewed, `awaiting-user-greenlight` only
@@ -321,13 +321,12 @@ are optional only.
321
321
 
322
322
  When the user chooses filters, immediately call
323
323
  `update_campaign({ campaignId, enableICPFilters: true, currentStep: "create-icp-rubric", watchNarration })`
324
- before rubric thinking or branch work. The watched app should move to Filter
325
- Rules quickly. After `save_rubrics`, keep the app on Filter Rules so the user
326
- can read and approve the saved criteria. Only after that approval should
327
- `update_campaign` move to `apply-icp-rubric` / Filter Leads, where the run waits
328
- for the message template approval before enrichment, filtering, or Generate
329
- Message cells are queued. Tell the user the Message Draft Builder is preparing
330
- the template in the background.
324
+ before rubric thinking or branch work. After `save_rubrics`, keep Filter Rules
325
+ visible so the user can approve saved criteria. Only after approval should
326
+ `update_campaign` move to `apply-icp-rubric` / Filter Leads and show
327
+ `Filters saved + waiting for message approval` until the template is approved. Do not
328
+ queue enrichment/filtering/Generate Message cells until message approval. Tell
329
+ the user the Message Draft Builder is preparing the template in the background.
331
330
 
332
331
  Lead Fit Builder persists production rubrics with `save_rubrics` when filters
333
332
  are enabled. It must not require `brief.md`, `lead-review.md`, or
@@ -306,11 +306,12 @@ immediately. Once the user answers, start `post-find-leads-message-scout` /
306
306
  message generation from the same campaign/table basis. If the user chooses
307
307
  filters, also start `post-find-leads-filter-scout`, move the browser to Filter
308
308
  Rules, save rubrics, then ask for filter approval. After approval, keep the
309
- browser on Filter Leads while the message recommendation is reviewed. If the user
310
- skips filters, move the browser to Messages/message review. The join gate is
311
- saved-filter approval or a resolved skip-filter choice, plus a message
312
- recommendation grounded in the same campaign/table basis. Enrichment, filtering,
313
- and Generate Message cells wait for template approval on the Use Template path.
309
+ browser on Filter Leads and show `Filters saved + waiting for message approval`
310
+ while the message recommendation is reviewed. If the user skips filters, move
311
+ the browser to Messages/message review. The join gate is saved-filter approval or
312
+ a resolved skip-filter choice, plus a message recommendation grounded in the same
313
+ campaign/table basis. Enrichment, filtering, and Generate Message cells wait for
314
+ template approval on the Use Template path.
314
315
 
315
316
  Only promise parallel post-lead work when parallel work actually started. If the
316
317
  host cannot or should not launch background branches, say the real sequence:
@@ -217,8 +217,9 @@ When the user chooses filters, immediately persist `enableICPFilters: true` and
217
217
  move to `create-icp-rubric` so the watched app shows Filter Rules while Codex
218
218
  defines the rules in chat. After `save_rubrics`, keep the app on Filter Rules so
219
219
  the user can read and approve the saved criteria. Only that approval moves the
220
- app to `apply-icp-rubric` / Filter Leads, where it waits for message approval
221
- before enrichment/filtering is queued.
220
+ app to `apply-icp-rubric` / Filter Leads and shows `Filters saved + waiting for
221
+ message approval` until the template is approved. Do not queue
222
+ enrichment/filtering/Generate Message cells until message approval.
222
223
 
223
224
  Fit + message:
224
225
 
@@ -236,15 +237,16 @@ Fit + message:
236
237
  }
237
238
  ```
238
239
 
239
- Review ready:
240
+ Filters saved + waiting for message approval:
240
241
 
241
242
  ```json
242
243
  {
243
- "stage": "review-ready",
244
- "headline": "Review the message template",
245
- "visibleState": "The browser remains on Filter Leads while the message template is reviewed in chat.",
246
- "agentIntent": "Codex is waiting for the approved template before row processing starts.",
247
- "nextAction": "Approve or revise the template"
244
+ "stage": "fit-message",
245
+ "headline": "Filters saved + waiting for message approval",
246
+ "visibleState": "The browser is showing Filter Leads with saved fit rules.",
247
+ "agentIntent": "Codex is waiting for the message template approval before enrichment, filtering, or Generate Message cells run.",
248
+ "nextAction": "Approve or revise the message template",
249
+ "safety": "Saved filters are ready; row processing stays gated until the message template is approved."
248
250
  }
249
251
  ```
250
252