@sellable/mcp 0.1.134 → 0.1.136

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.
@@ -85,7 +85,7 @@ export const sequencerToolDefinitions = [
85
85
  },
86
86
  currentStep: {
87
87
  type: "string",
88
- description: "Optional CampaignOffer currentStep to persist with the sequence attach, usually 'send' after the recommended sequence is bound.",
88
+ description: "Optional CampaignOffer currentStep to persist atomically with the sequence attach, usually 'send' after the recommended sequence is bound. The backend writes the matching watch narration; do not follow with a separate step-only update_campaign fixup.",
89
89
  },
90
90
  },
91
91
  required: ["campaignId"],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sellable/mcp",
3
- "version": "0.1.134",
3
+ "version": "0.1.136",
4
4
  "type": "module",
5
5
  "description": "Sellable MCP server for Claude Code and Codex campaign workflows",
6
6
  "main": "dist/index.js",
@@ -431,8 +431,10 @@ brief`, `Revise target`, `Revise offer/proof`, and `Other / custom`.
431
431
  brief approval question once `create_campaign` has returned `watchUrl`. This
432
432
  is a hard gate for `AskUserQuestion` / `request_user_input`: do not ask
433
433
  `Approve this brief before I start finding leads?` until the user has already
434
- seen the watch link for the live campaign shell. If the question panel would
435
- appear without a preceding `Watch link:` line, stop and send the link first.
434
+ seen both (1) the full brief content being approved and (2) the watch link for
435
+ the live campaign shell. A summary like `the brief is visible there` is not a
436
+ valid approval surface. If the question panel would appear without the full
437
+ brief and a preceding `Watch link:` line, stop and render those first.
436
438
  The visible brief must come before any optional debug persistence. After the
437
439
  brief is synthesized, render the approval-ready brief in chat and
438
440
  create/update the campaign shell before any visible `mkdir`, `Write`,
@@ -563,7 +565,11 @@ until the filter choice is resolved and the template is ready for approval.`
563
565
  `get_rows_minimal` proves rows exist, the Message Draft Builder must start
564
566
  from the live campaign brief, source decision, lead sample, and imported
565
567
  campaign table sample. Do not show `Message Draft Builder: In Progress` unless
566
- the worker or parent-thread fallback has actually started. It can prepare
568
+ the worker or parent-thread fallback has actually started and runtime proof is
569
+ stored or returned as `watchNarration.workerDetails.messageDraftBuilder` with
570
+ `runId` or `fallbackId`, `statusSource`, `status`, `startedAt`, `updatedAt`,
571
+ `basisToken`, and the current `selectedLeadListId`/`workflowTableId`/
572
+ review-batch row basis. It can prepare
567
573
  proof inventory, token strategy, and candidate angles while filter-leads
568
574
  tightens keep/exclude rules. Template review cannot start
569
575
  until filter choice is answered and rubrics are saved. If filters are enabled,
@@ -614,6 +620,15 @@ until the filter choice is resolved and the template is ready for approval.`
614
620
  launch both branches together, this is still the two Task/Agent subagents
615
621
  path; otherwise message-generation starts first and filter-leads joins after
616
622
  the filter choice.
623
+ - Runtime proof is part of the branch contract, not optional UI decoration.
624
+ `watchNarration.workerDetails.messageDraftBuilder.status` may be
625
+ `branch-running`, `fallback-active`, `spawn-failed`,
626
+ `fallback-superseded`, `branch-superseded`, `ready`, `blocked`,
627
+ `retry-needed`, or `stale`. Running copy requires `branch-running` with
628
+ `runId` or `fallback-active` with `fallbackId`; ready copy requires compact
629
+ output from the current basis. Spawn failures, stale output, or retry-needed
630
+ states show blocked/retry copy. Late fallback/branch outputs that are
631
+ superseded by a newer basis must not override the current worker status.
617
632
  - Never run a downstream stage until the active `flow.v2.json` step's required
618
633
  campaign state and required normal inputs exist. In normal customer runs, do
619
634
  not create optional debug artifacts just to satisfy a file gate.
@@ -633,13 +648,21 @@ until the filter choice is resolved and the template is ready for approval.`
633
648
  batch`, and a no-launch safety note. Do not leave the guide saying
634
649
  `source approved` or `I'll show the review-batch outcome` once import is
635
650
  starting.
636
- - After the bounded review batch is present, update the watched browser to
637
- `currentStep: "filter-choice"` with `watchNarration.stage: "fit-message"` and
638
- ask the user to Choose filters or skip. If import succeeds but row readback
639
- returns zero rows, do not move to filter choice; keep the user in source/import
640
- recovery and ask whether to retry import, import more from the approved
641
- source, or revise source. Active filtering starts only after rubrics are
642
- saved; do not say filtering the batch before rubrics are saved.
651
+ - After `import_leads` starts a provider/source import and the watched browser
652
+ moves to `confirm-lead-list`, the guide must describe the visible import
653
+ progress, not source approval. Use copy like `Scraping source leads from
654
+ posts` for Signal Discovery or `Importing source leads` for Sales Nav/Prospeo.
655
+ Do not leave `Review the source in Codex` while the Signals/Sales Nav/Prospeo
656
+ import progress page is visible.
657
+ - After the bounded review batch is present, the watched browser must move to
658
+ `currentStep: "filter-choice"` with `watchNarration.stage: "fit-message"` in
659
+ the same visible beat. Use copy like `I recommend adding filters`: say the
660
+ visible sample is in the campaign table, recommend adding filters when the
661
+ imported rows look mixed/noisy, and ask the user to choose filters or skip. If import
662
+ succeeds but row readback returns zero rows, do not move to filter choice; keep
663
+ the user in source/import recovery and ask whether to retry import, import more
664
+ from the approved source, or revise source. Active filtering starts only after
665
+ rubrics are saved; do not say filtering the batch before rubrics are saved.
643
666
  - When the user chooses filters, immediately persist `enableICPFilters: true`
644
667
  and `currentStep: "create-icp-rubric"` so the watched app leaves the filter
645
668
  choice screen and shows that Codex is defining the rules in chat. After Lead
@@ -1311,6 +1334,14 @@ normal live campaign path; those files are optional debug context only. If the
1311
1334
  long prompt plus safety gate cannot safely approve the draft, stop at
1312
1335
  `revise-messaging` with the exact failure.
1313
1336
 
1337
+ Return compact output to the parent: template recommendation, token fill rules,
1338
+ one rendered sample, concerns, status, basis token, output timestamp/hash, and
1339
+ error or retry detail. The basis must include campaign revision/updatedAt, brief
1340
+ hash, `selectedLeadListId`, `workflowTableId`, bounded review-batch row
1341
+ ids/hash, filter choice, and filter/rubric basis when present. Do not write
1342
+ message cells, enrich rows, attach sequence, or imply send readiness from this
1343
+ background branch.
1344
+
1314
1345
  Do NOT proceed to Step 4 (message review gate) unless the user has answered
1315
1346
  filter choice, the watched app is still on Filter Leads while approval is
1316
1347
  pending, and `message-validation.md` contains the safety-gate required