@sellable/install 0.1.202 → 0.1.204

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.
@@ -169,6 +169,13 @@ When reporting branch runtime proof, use this shape under
169
169
 
170
170
  Do not tell the UI to show Message Draft Builder as running unless this proof
171
171
  exists and points at the current non-empty campaign-table execution slice.
172
+ If the host cannot launch a background branch and the parent thread runs this
173
+ same contract inline, report `statusSource: "parent-thread-fallback"` and
174
+ `status: "fallback-active"` while working, then `status: "ready"` when the
175
+ inline recommendation passes. A validated parent-thread fallback is not a
176
+ background worker failure; it must satisfy the same live-context, prompt,
177
+ reference-asset, and validation requirements before the parent shows message
178
+ review.
172
179
 
173
180
  ## Basis Changes And Rewrites
174
181
 
@@ -743,9 +743,15 @@ Before any provider prompt, search, or signal-discovery call, show
743
743
  one source-plan gate and ask for approval. Write this like a fifth grader could
744
744
  understand it: short sentences, no internal labels, and no GTM shorthand. The
745
745
  order is strict: first show the plan in chat, then open the approval question.
746
- Do not open a generic approval first and reuse it after the plan. This first
747
- approval only authorizes finding the best places to look for buyers. It does
748
- not add anyone to the campaign yet. The gate should say:
746
+ There must be exactly one structured source-plan approval question for this
747
+ step. Do not open a generic approval first and reuse it after the plan. Do not
748
+ open a second identical source-plan question after the plan. If a source-plan
749
+ question was accidentally opened before the plan, recover by showing the plan
750
+ and continuing from that already-selected source choice when it exactly matches
751
+ the visible recommendation; otherwise ask the user to choose a different source
752
+ in normal chat instead of opening another identical question. This first
753
+ approval only authorizes finding the best places to look for buyers. It does not
754
+ add anyone to the campaign yet. The gate should say:
749
755
 
750
756
  - the buyer groups or places we could check
751
757
  - the best place to start
@@ -818,6 +824,10 @@ review will inspect, cleanup risk, and fallback. N must be the smallest
818
824
  right-content post set that clears the source target, not the default 3
819
825
  promoted sample posts. For Sales Nav or Prospeo, name the specific approved
820
826
  import path and source lead count.
827
+ If you render a selected-post table for LinkedIn engagement, show public
828
+ activity beside estimated likely prospects, not a second people-to-check count.
829
+ Calculate row-level likely prospects from the sampled fit rate when available or
830
+ the stated starting estimate.
821
831
  Do not call \`import_leads\` or \`confirm_lead_list\` until this second approval is
822
832
  granted.
823
833
 
@@ -1184,8 +1194,8 @@ updates.
1184
1194
  call \`mcp__sellable__update_campaign({ campaignId, enableICPFilters: true, currentStep: "create-icp-rubric", watchNarration })\`
1185
1195
  so the watched app moves to Filter Rules while rubrics are drafted/saved.
1186
1196
  After rubrics save, keep Filter Rules visible for approval; after approval,
1187
- move to Filter Leads and show \`Filters saved + waiting for message approval\`
1188
- until the template is approved.
1197
+ move to Filter Leads with \`currentStep: "apply-icp-rubric"\` and wait there
1198
+ while Message Drafting finishes or the template is approved.
1189
1199
  If filters are skipped, launch Message Drafting before moving to
1190
1200
  Messages/message review; updating \`currentStep\` to \`messages\` is not proof
1191
1201
  that the background worker started. Queue the bounded campaign-table
@@ -1200,8 +1210,7 @@ updates.
1200
1210
  the brief, \`pick-provider\` or the selected provider step while sourcing,
1201
1211
  \`filter-choice\` after source rows are copied into the campaign table, \`create-icp-rubric\` as soon
1202
1212
  as filters are chosen and while saved filters await approval,
1203
- \`apply-icp-rubric\` after filter approval while message approval is pending,
1204
- and after message approval while bounded enrichment/filter scoring runs, \`validate-sample\` only as a recovery/legacy
1213
+ \`apply-icp-rubric\` after filter approval while message approval is pending and while bounded enrichment/filter scoring runs after approval, \`validate-sample\` only as a recovery/legacy
1205
1214
  observation state,
1206
1215
  \`auto-execute-messaging\` after at least one row passes and initial campaign-row
1207
1216
  messages are being generated or reviewed, \`awaiting-user-greenlight\` only
@@ -2492,10 +2501,7 @@ function verify(opts) {
2492
2501
  const pluginMcpContent = existsSync(pluginMcpPath)
2493
2502
  ? readFileSync(pluginMcpPath, "utf8")
2494
2503
  : "";
2495
- const hasCodexMcpDriver = hasWatchModeDriverMarker(
2496
- configContent,
2497
- "codex"
2498
- );
2504
+ const hasCodexMcpDriver = hasWatchModeDriverMarker(configContent, "codex");
2499
2505
  const hasCodexPluginDriver = hasWatchModeDriverMarker(
2500
2506
  pluginMcpContent,
2501
2507
  "codex"
@@ -2951,7 +2957,9 @@ async function main() {
2951
2957
  const token = rawArgs[2];
2952
2958
  const authSetFlags = rawArgs.slice(3);
2953
2959
  const dryRun = authSetFlags.includes("--dry-run");
2954
- const unknownAuthSetFlag = authSetFlags.find((arg) => arg !== "--dry-run");
2960
+ const unknownAuthSetFlag = authSetFlags.find(
2961
+ (arg) => arg !== "--dry-run"
2962
+ );
2955
2963
  if (unknownAuthSetFlag) {
2956
2964
  console.error(`Unknown auth set option: ${unknownAuthSetFlag}`);
2957
2965
  process.exit(2);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sellable/install",
3
- "version": "0.1.202",
3
+ "version": "0.1.204",
4
4
  "type": "module",
5
5
  "description": "One-command installer for Sellable MCP in Claude Code and Codex",
6
6
  "bin": {
@@ -93,8 +93,9 @@ message-template approval before enrichment/filtering or Generate Message cells.
93
93
  Filter work stays in the parent thread and must inspect visible campaign rows
94
94
  with `get_rows_minimal` / `get_rows` before drafting and saving rubrics; use at
95
95
  most one direct `enrich_with_prospeo` sample when row evidence is too thin.
96
- After filter approval, Filter Leads should show `Filters saved + waiting for
97
- message approval` until the template is approved.
96
+ After filter approval, the browser should move to Filter Leads with
97
+ `currentStep: "apply-icp-rubric"` and show template waiting/approval copy until
98
+ the template is approved.
98
99
  The default path stays the existing first campaign-table execution slice:
99
100
  review the normal `reviewBatchLimit:15`, approve reviewed draft rows, then move
100
101
  to Settings/sequence/final greenlight. Only call
@@ -207,9 +208,15 @@ Before any provider prompt, search, or signal-discovery call, show
207
208
  one source-plan gate and ask for approval. Write this like a fifth grader could
208
209
  understand it: short sentences, no internal labels, and no GTM shorthand. The
209
210
  order is strict: first show the plan in chat, then open the approval question.
210
- Do not open a generic approval first and reuse it after the plan. This first
211
- approval only authorizes finding the best places to look for buyers. It does
212
- not add anyone to the campaign yet. The gate should say:
211
+ There must be exactly one structured source-plan approval question for this
212
+ step. Do not open a generic approval first and reuse it after the plan. Do not
213
+ open a second identical source-plan question after the plan. If a source-plan
214
+ question was accidentally opened before the plan, recover by showing the plan
215
+ and continuing from that already-selected source choice when it exactly matches
216
+ the visible recommendation; otherwise ask the user to choose a different source
217
+ in normal chat instead of opening another identical question. This first
218
+ approval only authorizes finding the best places to look for buyers. It does not
219
+ add anyone to the campaign yet. The gate should say:
213
220
 
214
221
  - the buyer groups or places we could check
215
222
  - the best place to start
@@ -399,8 +406,11 @@ summary should be a compact `## Source Recommendation` block with:
399
406
  - first review: after the source list exists, add confirmed source rows to the
400
407
  campaign and review the first 15 leads before scaling
401
408
  - a selected-post table with post author/topic, why it fits, public activity,
402
- and people we can check
403
- - total public activity and likely prospect pool
409
+ and estimated likely prospects. Calculate each row's estimated likely
410
+ prospects from the sampled fit rate when available, otherwise from the stated
411
+ starting estimate; never duplicate public activity or people-to-check counts in
412
+ this column.
413
+ - total public activity, people to check, and likely prospect pool
404
414
  - next step: build the source list, add it to the campaign, and review the
405
415
  first 15 leads before scaling
406
416
  - fallback: switch to active LinkedIn profiles if the first sample is too noisy
@@ -431,13 +441,12 @@ from the same campaign/table basis. This kickoff is required for both answers:
431
441
  `Use filters` and `Skip filters`. If the user chooses filters, the parent
432
442
  thread moves to Filter Rules, loads the filter reference, saves rubrics, then
433
443
  asks for filter approval while Message Drafting runs. After approval, move to
434
- Filter Leads and show `Filters saved + waiting for message approval` while the
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
439
- for message approval. AI Generated is an explicit opt-out from the template
440
- path.
444
+ Filter Leads with `currentStep: "apply-icp-rubric"` and wait there while Message
445
+ Drafting finishes or the recommendation is reviewed. If the user skips filters, start Message Drafting
446
+ first, then move to Messages/message review after it has started or returned a
447
+ ready recommendation. `update_campaign({ currentStep: "messages" })` is not
448
+ proof of kickoff. Enrichment/filtering and Generate Message cells wait for
449
+ message approval. AI Generated is an explicit opt-out from the template path.
441
450
 
442
451
  The Message Drafting handoff must stay lean. Include only `campaignId`,
443
452
  `workflowTableId`, a concise brief summary, concise source summary/source-use
@@ -933,17 +942,14 @@ updates.
933
942
  through `mcp__sellable__get_subskill_asset`, and before returning
934
943
  `mcp__sellable__get_subskill_prompt({ subskillName: "create-campaign-v2-validation" })`
935
944
  as the final internal validation gate.
936
- In Codex, YOLO/autonomous mode counts as campaign-scoped permission to use
937
- this single Message Drafting background agent. If the user has not enabled
938
- YOLO and has not explicitly asked for background agents, subagents, parallel
939
- agents, delegation, or a message/bg agent in this campaign, ask once for
940
- permission before loading the long message prompt in the parent. If
941
- permission is granted but the named custom agent is not
945
+ In Codex, the filter-choice answer is the campaign-scoped go-ahead to use
946
+ this single Message Drafting background agent in step-wise and YOLO modes.
947
+ Do not ask a separate question to start it. If the named custom agent is not
942
948
  available, spawn a generic background agent with `model: "gpt-5.5"` and
943
- `reasoning_effort: "xhigh"` using the same lean campaign/table basis. Do not
944
- silently fall back to parent-thread message drafting; parent fallback is
945
- allowed only when the user explicitly says to continue without a background
946
- agent.
949
+ `reasoning_effort: "xhigh"` using the same lean campaign/table basis. If no
950
+ background-agent tool is callable, start the same full message branch inline
951
+ before filter drafting or skip-filter message review and record it as
952
+ `statusSource: "parent-thread-fallback"`.
947
953
  Do not use any alternate, examples-only, or local-artifact message prompt. Message review and
948
954
  message QA require Message Drafting output:
949
955
  do not draft from a checklist, local markdown artifact, or parent-thread
@@ -970,8 +976,8 @@ updates.
970
976
  so the watched app moves to Filter Rules while the parent drafts/saves
971
977
  rubrics and Message Drafting runs.
972
978
  After rubrics save, keep Filter Rules visible for approval; after approval,
973
- move to Filter Leads and show `Filters saved + waiting for message approval`
974
- until the template is approved.
979
+ move to Filter Leads with `currentStep: "apply-icp-rubric"` and wait there
980
+ while Message Drafting finishes or the template is approved.
975
981
  If filters are skipped, launch Message Drafting before moving to
976
982
  Messages/message review; updating `currentStep` to `messages` is not proof
977
983
  that the background worker started. Queue the bounded campaign-table
@@ -986,8 +992,7 @@ updates.
986
992
  the brief, `pick-provider` or the selected provider step while sourcing,
987
993
  `filter-choice` after source rows are copied into the campaign table, `create-icp-rubric` as soon
988
994
  as filters are chosen and while saved filters await approval,
989
- `apply-icp-rubric` after filter approval while message approval is pending,
990
- and after message approval while bounded enrichment/filter scoring runs, `validate-sample` only as a recovery/legacy
995
+ `apply-icp-rubric` after filter approval while message approval is pending and while bounded enrichment/filter scoring runs after approval, `validate-sample` only as a recovery/legacy
991
996
  observation state,
992
997
  `auto-execute-messaging` after at least one row passes and initial campaign-row
993
998
  messages are being generated or reviewed, `awaiting-user-greenlight` only