@sellable/install 0.1.200 → 0.1.202

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.
@@ -1147,7 +1147,15 @@ updates.
1147
1147
  copies of this file; packaged Claude Code and Codex runs must use the MCP
1148
1148
  asset loader so they share the same config.
1149
1149
  3. Follow that prompt and workflow config exactly.
1150
- 4. For message generation, use the \`post-find-leads-message-scout\` agent when
1150
+ 4. For filter and message setup, keep the parent thread as a lean orchestrator.
1151
+ The only normal background agent is \`post-find-leads-message-scout\` for
1152
+ Message Drafting. Both post-import choices must launch Message Drafting.
1153
+ When filters are chosen, launch Message Drafting, then keep filters in the
1154
+ parent thread: load \`references/filter-leads.md\`, draft production rubrics,
1155
+ call \`save_rubrics\`, ask filter approval, and then join Message Drafting for
1156
+ template review. When filters are skipped, launch only Message Drafting
1157
+ before treating the campaign as in Messages/message review.
1158
+ 5. For message generation, use the \`post-find-leads-message-scout\` agent when
1151
1159
  available. The worker and parent-thread fallback must load
1152
1160
  \`mcp__sellable__get_subskill_prompt({ subskillName: "generate-messages" })\`,
1153
1161
  then every required message asset named by \`generate-messages\` Mode 0 before
@@ -1163,7 +1171,7 @@ updates.
1163
1171
  local markdown such as \`message-validation.md\`, inspect the database
1164
1172
  directly, or synthesize local validation artifacts from general knowledge.
1165
1173
  The message recommendation handoff is labeled Markdown, not raw JSON.
1166
- 5. Create the campaign shell early with the v1 brief so the user can open the
1174
+ 6. Create the campaign shell early with the v1 brief so the user can open the
1167
1175
  watch link and see useful setup state immediately. Materialize the approved
1168
1176
  source list, copy confirmed rows into the campaign, and internally process the
1169
1177
  first campaign-table execution slice after the source is attached to the
@@ -1178,13 +1186,15 @@ updates.
1178
1186
  After rubrics save, keep Filter Rules visible for approval; after approval,
1179
1187
  move to Filter Leads and show \`Filters saved + waiting for message approval\`
1180
1188
  until the template is approved.
1181
- If filters are skipped, move to Messages/message review. Queue the bounded
1182
- campaign-table execution-slice \`enrichCellId\` cells only after message approval. Move to
1183
- Messages only after at least one review row passes and one generated message
1184
- is ready.
1189
+ If filters are skipped, launch Message Drafting before moving to
1190
+ Messages/message review; updating \`currentStep\` to \`messages\` is not proof
1191
+ that the background worker started. Queue the bounded campaign-table
1192
+ execution-slice \`enrichCellId\` cells only after message approval. Move to the
1193
+ generated-row Messages review only after at least one review row passes and
1194
+ one generated message is ready.
1185
1195
  Do not ask the user to approve the brief before shell creation unless they
1186
1196
  explicitly requested a no-write draft; the shell itself is the review surface.
1187
- 6. The main thread owns watch navigation. Call
1197
+ 7. The main thread owns watch navigation. Call
1188
1198
  \`mcp__sellable__update_campaign({ campaignId, currentStep })\` before major
1189
1199
  visible work so the user can watch progress in the app: \`create-offer\` for
1190
1200
  the brief, \`pick-provider\` or the selected provider step while sourcing,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sellable/install",
3
- "version": "0.1.200",
3
+ "version": "0.1.202",
4
4
  "type": "module",
5
5
  "description": "One-command installer for Sellable MCP in Claude Code and Codex",
6
6
  "bin": {
@@ -90,6 +90,9 @@ execution slice configures filters and messages. After that, the user chooses
90
90
  whether to use filters or skip.
91
91
  When filters are chosen, save rubrics, get filter approval, then wait for
92
92
  message-template approval before enrichment/filtering or Generate Message cells.
93
+ Filter work stays in the parent thread and must inspect visible campaign rows
94
+ with `get_rows_minimal` / `get_rows` before drafting and saving rubrics; use at
95
+ most one direct `enrich_with_prospeo` sample when row evidence is too thin.
93
96
  After filter approval, Filter Leads should show `Filters saved + waiting for
94
97
  message approval` until the template is approved.
95
98
  The default path stays the existing first campaign-table execution slice:
@@ -97,17 +100,19 @@ review the normal `reviewBatchLimit:15`, approve reviewed draft rows, then move
97
100
  to Settings/sequence/final greenlight. Only call
98
101
  `start_campaign_message_preparation` when the user explicitly asks for more
99
102
  prepared messages or a send count. If the user says "prepare/generate X
100
- messages", set `targetPreparedMessages:X`, let the backend derive
101
- `maxRowsToCheck:min(2500,max(300,X*5))`, and keep
102
- `approvalMode:"mark_ready"`. The backend samples up to 100 rows first, then
103
- adapts later batches up to 250 rows while recalculating yield. Poll
103
+ messages", set `targetPreparedMessages:X`, omit `maxRowsToCheck`, and keep
104
+ `approvalMode:"mark_ready"`. The backend calibrates on at least 100 rows,
105
+ estimates the row budget from observed rubric/pass yield, caps
106
+ `maxRowsToCheck` at 2500, then adapts later batches up to 250 rows while
107
+ recalculating yield. Poll
104
108
  `get_campaign_message_preparation_status` for preparation-job status: checked
105
- rows, prepared/approved count, target, row budget remaining, and stop reason. If
106
- the user says "approve X messages", use `approvalMode:"approve"` but still do
107
- not launch. If the user says "schedule X sends", use `approvalMode:"approve"`
108
- to approve exactly the bounded X-message cohort during preparation, then
109
- continue through sender, sequence, and final launch greenlight; the launch path
110
- must verify that bounded cohort and must not broad approve-all.
109
+ rows, passed/prepared/approved count, target, estimated row budget remaining,
110
+ and stop reason. If the user says "approve X messages", use
111
+ `approvalMode:"approve"` but still do not launch. If the user says "schedule X
112
+ sends", use `approvalMode:"approve"` to approve exactly the bounded X-message
113
+ cohort during preparation, then continue through sender, sequence, and final
114
+ launch greenlight; the launch path must verify that bounded cohort and must not
115
+ broad approve-all.
111
116
  Treat `campaignId` as `CampaignOffer.id`. Low level selector/queue tools are
112
117
  diagnostics and recovery only for this lane. If the user asks to stop
113
118
  preparation, the target is wrong, or status shows the wrong campaign/table, call
@@ -422,12 +427,15 @@ After confirmed source rows exist in the campaign table, do not load the
422
427
  message registry or any deep filter/message prompt
423
428
  before the filter-choice question. After `confirm_lead_list`, ask add filters
424
429
  vs skip filters immediately. Once the user answers, launch only Message Drafting
425
- from the same campaign/table basis. If the user chooses filters, the parent
430
+ from the same campaign/table basis. This kickoff is required for both answers:
431
+ `Use filters` and `Skip filters`. If the user chooses filters, the parent
426
432
  thread moves to Filter Rules, loads the filter reference, saves rubrics, then
427
433
  asks for filter approval while Message Drafting runs. After approval, move to
428
434
  Filter Leads and show `Filters saved + waiting for message approval` while the
429
- message recommendation is reviewed. If the user skips filters, move to
430
- Messages/message review. Enrichment/filtering and Generate Message cells wait
435
+ message recommendation is reviewed. If the user skips filters, start Message
436
+ Drafting first, then move to Messages/message review after it has started or
437
+ returned a ready recommendation. `update_campaign({ currentStep: "messages" })`
438
+ is not proof of kickoff. Enrichment/filtering and Generate Message cells wait
431
439
  for message approval. AI Generated is an explicit opt-out from the template
432
440
  path.
433
441
 
@@ -480,14 +488,14 @@ automation just because a watch link exists. If `create_campaign` returns
480
488
  `watchHandoff.markdown`, print that exact value once, directly before the brief
481
489
  approval question. It will use the URL mode to say Codex or Claude Code:
482
490
 
483
- ````markdown
491
+ ```markdown
484
492
  > **WATCH CODEX BUILD THE CAMPAIGN LIVE**
485
493
  >
486
494
  > [Open live campaign builder]({watchUrl})
487
495
  >
488
496
  > Keep this chat open. I'll ask approval questions here before making decisions
489
497
  > that need your judgment.
490
- ````
498
+ ```
491
499
 
492
500
  The rendered callout is intentional: rendered chat clients highlight the
493
501
  headline, link, and note without treating it as a code block, and plain terminals
@@ -910,11 +918,12 @@ updates.
910
918
  3. Follow that prompt and workflow config exactly.
911
919
  4. For filter and message setup, keep the parent thread as a lean orchestrator.
912
920
  The only normal background agent is `post-find-leads-message-scout` for
913
- Message Drafting. When filters are chosen, launch Message Drafting, then keep
914
- filters in the parent thread: load `references/filter-leads.md`, draft
915
- production rubrics, call `save_rubrics`, ask filter approval, and then join
916
- Message Drafting for template review. When filters are skipped, launch only
917
- Message Drafting.
921
+ Message Drafting. Both post-import choices must launch Message Drafting.
922
+ When filters are chosen, launch Message Drafting, then keep filters in the
923
+ parent thread: load `references/filter-leads.md`, draft production rubrics,
924
+ call `save_rubrics`, ask filter approval, and then join Message Drafting for
925
+ template review. When filters are skipped, launch only Message Drafting
926
+ before treating the campaign as in Messages/message review.
918
927
  5. For message generation, keep the parent thread as a lean orchestrator and
919
928
  use the `post-find-leads-message-scout` compatibility agent for Message
920
929
  Drafting whenever the host exposes it
@@ -963,13 +972,15 @@ updates.
963
972
  After rubrics save, keep Filter Rules visible for approval; after approval,
964
973
  move to Filter Leads and show `Filters saved + waiting for message approval`
965
974
  until the template is approved.
966
- If filters are skipped, move to Messages/message review. Queue the bounded
967
- campaign-table execution-slice `enrichCellId` cells only after message approval. Move to
968
- Messages only after at least one review row passes and one generated message
969
- is ready.
975
+ If filters are skipped, launch Message Drafting before moving to
976
+ Messages/message review; updating `currentStep` to `messages` is not proof
977
+ that the background worker started. Queue the bounded campaign-table
978
+ execution-slice `enrichCellId` cells only after message approval. Move to the
979
+ generated-row Messages review only after at least one review row passes and
980
+ one generated message is ready.
970
981
  Do not ask the user to approve the brief before shell creation unless they
971
982
  explicitly requested a no-write draft; the shell itself is the review surface.
972
- 6. The main thread owns watch navigation. Call
983
+ 7. The main thread owns watch navigation. Call
973
984
  `mcp__sellable__update_campaign({ campaignId, currentStep })` before major
974
985
  visible work so the user can watch progress in the app: `create-offer` for
975
986
  the brief, `pick-provider` or the selected provider step while sourcing,
@@ -984,9 +995,9 @@ updates.
984
995
  job has reported compact checked/prepared/stop status, `settings` for sender
985
996
  selection, `sequence` after sender attach, and `send` once the recommended
986
997
  sequence is attached. Do not advance the step backward.
987
- 7. Keep `selectedLeadListId` as the source list and `workflowTableId` as the
998
+ 8. Keep `selectedLeadListId` as the source list and `workflowTableId` as the
988
999
  campaign table. Do not use disk files as the post-mint source of truth.
989
- 8. Do not ask the user to run another command.
1000
+ 9. Do not ask the user to run another command.
990
1001
 
991
1002
  ## Fallback
992
1003