@sellable/install 0.1.201 → 0.1.203

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
 
@@ -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
@@ -1176,22 +1184,23 @@ updates.
1176
1184
  call \`mcp__sellable__update_campaign({ campaignId, enableICPFilters: true, currentStep: "create-icp-rubric", watchNarration })\`
1177
1185
  so the watched app moves to Filter Rules while rubrics are drafted/saved.
1178
1186
  After rubrics save, keep Filter Rules visible for approval; after approval,
1179
- move to Filter Leads and show \`Filters saved + waiting for message approval\`
1180
- 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.
1187
+ move to Filter Leads with \`currentStep: "apply-icp-rubric"\` and wait there
1188
+ while Message Drafting finishes or the template is approved.
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,
1191
1201
  \`filter-choice\` after source rows are copied into the campaign table, \`create-icp-rubric\` as soon
1192
1202
  as filters are chosen and while saved filters await approval,
1193
- \`apply-icp-rubric\` after filter approval while message approval is pending,
1194
- and after message approval while bounded enrichment/filter scoring runs, \`validate-sample\` only as a recovery/legacy
1203
+ \`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
1195
1204
  observation state,
1196
1205
  \`auto-execute-messaging\` after at least one row passes and initial campaign-row
1197
1206
  messages are being generated or reviewed, \`awaiting-user-greenlight\` only
@@ -2482,10 +2491,7 @@ function verify(opts) {
2482
2491
  const pluginMcpContent = existsSync(pluginMcpPath)
2483
2492
  ? readFileSync(pluginMcpPath, "utf8")
2484
2493
  : "";
2485
- const hasCodexMcpDriver = hasWatchModeDriverMarker(
2486
- configContent,
2487
- "codex"
2488
- );
2494
+ const hasCodexMcpDriver = hasWatchModeDriverMarker(configContent, "codex");
2489
2495
  const hasCodexPluginDriver = hasWatchModeDriverMarker(
2490
2496
  pluginMcpContent,
2491
2497
  "codex"
@@ -2941,7 +2947,9 @@ async function main() {
2941
2947
  const token = rawArgs[2];
2942
2948
  const authSetFlags = rawArgs.slice(3);
2943
2949
  const dryRun = authSetFlags.includes("--dry-run");
2944
- const unknownAuthSetFlag = authSetFlags.find((arg) => arg !== "--dry-run");
2950
+ const unknownAuthSetFlag = authSetFlags.find(
2951
+ (arg) => arg !== "--dry-run"
2952
+ );
2945
2953
  if (unknownAuthSetFlag) {
2946
2954
  console.error(`Unknown auth set option: ${unknownAuthSetFlag}`);
2947
2955
  process.exit(2);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sellable/install",
3
- "version": "0.1.201",
3
+ "version": "0.1.203",
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
@@ -427,14 +428,16 @@ After confirmed source rows exist in the campaign table, do not load the
427
428
  message registry or any deep filter/message prompt
428
429
  before the filter-choice question. After `confirm_lead_list`, ask add filters
429
430
  vs skip filters immediately. Once the user answers, launch only Message Drafting
430
- from the same campaign/table basis. If the user chooses filters, the parent
431
+ from the same campaign/table basis. This kickoff is required for both answers:
432
+ `Use filters` and `Skip filters`. If the user chooses filters, the parent
431
433
  thread moves to Filter Rules, loads the filter reference, saves rubrics, then
432
434
  asks for filter approval while Message Drafting runs. After approval, move to
433
- Filter Leads and show `Filters saved + waiting for message approval` while the
434
- message recommendation is reviewed. If the user skips filters, move to
435
- Messages/message review. Enrichment/filtering and Generate Message cells wait
436
- for message approval. AI Generated is an explicit opt-out from the template
437
- path.
435
+ Filter Leads with `currentStep: "apply-icp-rubric"` and wait there while Message
436
+ Drafting finishes or the recommendation is reviewed. If the user skips filters, start Message Drafting
437
+ first, then move to Messages/message review after it has started or returned a
438
+ ready recommendation. `update_campaign({ currentStep: "messages" })` is not
439
+ proof of kickoff. Enrichment/filtering and Generate Message cells wait for
440
+ message approval. AI Generated is an explicit opt-out from the template path.
438
441
 
439
442
  The Message Drafting handoff must stay lean. Include only `campaignId`,
440
443
  `workflowTableId`, a concise brief summary, concise source summary/source-use
@@ -915,11 +918,12 @@ updates.
915
918
  3. Follow that prompt and workflow config exactly.
916
919
  4. For filter and message setup, keep the parent thread as a lean orchestrator.
917
920
  The only normal background agent is `post-find-leads-message-scout` for
918
- Message Drafting. When filters are chosen, launch Message Drafting, then keep
919
- filters in the parent thread: load `references/filter-leads.md`, draft
920
- production rubrics, call `save_rubrics`, ask filter approval, and then join
921
- Message Drafting for template review. When filters are skipped, launch only
922
- 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.
923
927
  5. For message generation, keep the parent thread as a lean orchestrator and
924
928
  use the `post-find-leads-message-scout` compatibility agent for Message
925
929
  Drafting whenever the host exposes it
@@ -966,12 +970,14 @@ updates.
966
970
  so the watched app moves to Filter Rules while the parent drafts/saves
967
971
  rubrics and Message Drafting runs.
968
972
  After rubrics save, keep Filter Rules visible for approval; after approval,
969
- move to Filter Leads and show `Filters saved + waiting for message approval`
970
- until the template is approved.
971
- If filters are skipped, move to Messages/message review. Queue the bounded
972
- campaign-table execution-slice `enrichCellId` cells only after message approval. Move to
973
- Messages only after at least one review row passes and one generated message
974
- is ready.
973
+ move to Filter Leads with `currentStep: "apply-icp-rubric"` and wait there
974
+ while Message Drafting finishes or the template is approved.
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.
975
981
  Do not ask the user to approve the brief before shell creation unless they
976
982
  explicitly requested a no-write draft; the shell itself is the review surface.
977
983
  7. The main thread owns watch navigation. Call
@@ -980,8 +986,7 @@ updates.
980
986
  the brief, `pick-provider` or the selected provider step while sourcing,
981
987
  `filter-choice` after source rows are copied into the campaign table, `create-icp-rubric` as soon
982
988
  as filters are chosen and while saved filters await approval,
983
- `apply-icp-rubric` after filter approval while message approval is pending,
984
- and after message approval while bounded enrichment/filter scoring runs, `validate-sample` only as a recovery/legacy
989
+ `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
985
990
  observation state,
986
991
  `auto-execute-messaging` after at least one row passes and initial campaign-row
987
992
  messages are being generated or reviewed, `awaiting-user-greenlight` only