@sellable/mcp 0.1.355 → 0.1.357

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sellable/mcp",
3
- "version": "0.1.355",
3
+ "version": "0.1.357",
4
4
  "type": "module",
5
5
  "description": "Sellable MCP server for Claude Code and Codex campaign workflows",
6
6
  "main": "dist/index.js",
@@ -57,6 +57,11 @@ For full/customer-visible setup, the first operational command is always
57
57
  for operator understanding, but do not create/reuse/repair campaign shells,
58
58
  source rows, messages, sequence, approvals, or cleanup before the command-backed
59
59
  plan returns lane packets.
60
+ If `setup_evergreen_campaigns` is unavailable, returns 404, throws an API
61
+ error, or does not return a current `planRevision` with lane packets, stop
62
+ immediately with `blocked: setup_evergreen_campaigns_unavailable`. Do not fall
63
+ back to ad hoc create-campaign calls, inventory-only guesses, or direct shell
64
+ creation when the command-backed plan is missing.
60
65
 
61
66
  Plan shape:
62
67
 
@@ -136,6 +141,14 @@ worker and run the lane workers in parallel. If the host cannot run parallel
136
141
  workers, report `blocked: missing_parallel_lane_worker_runtime` instead of
137
142
  silently doing all lane creation sequentially in the parent thread.
138
143
  Short form: the parent thread is the planner, dispatcher, verifier, and receipt collector.
144
+ Before the first mutating lane action, complete an execution-runtime preflight:
145
+ name the callable worker surface/tool that will run lane packets (for example
146
+ Task/subagent, branch worker, separate Codex thread, or an equivalent explicit
147
+ worker runtime). If you cannot name a real callable worker runtime, stop with
148
+ `blocked: missing_parallel_lane_worker_runtime` before calling
149
+ `create_campaign`, `update_campaign`, `import_leads`, `confirm_lead_list`, or
150
+ any source/message/sequence mutation. Creating campaign shells first and then
151
+ discovering the worker runtime is missing is a failed run.
139
152
 
140
153
  For any lane with `intent:"create"`, the worker must satisfy the normal
141
154
  net-new create-campaign preflight before shell creation: load
@@ -181,6 +194,17 @@ If any required field is missing, report
181
194
  `blocked: missing_create_campaign_step_receipt` for that lane and do not call it
182
195
  complete.
183
196
 
197
+ One lane may produce exactly one CampaignOffer/campaign id and one current
198
+ workflow table id. For `intent:"create"`, the first successful
199
+ `create_campaign` result establishes the lane's only allowed campaign/table
200
+ target. Every later source/import/confirm/message/filter/sequence/readback call
201
+ must use that same campaign id and current workflow table id. If any tool
202
+ returns or creates a different CampaignOffer, workflow table, "Campaign from
203
+ Source" campaign, or shell for the same lane, stop immediately with
204
+ `blocked: duplicate_campaign_offer_created`, include both ids in the receipt,
205
+ and do not report completion. Do not hide the earlier shell by reporting only
206
+ the later imported campaign.
207
+
184
208
  Each customer-visible lane receipt must also include message proof from
185
209
  `watchNarration.workerDetails.messageDraftBuilder` or the worker's equivalent
186
210
  branch handoff record. Valid evergreen message proof names the current campaign
@@ -211,9 +235,17 @@ create-campaign Message Drafting branch ran. If this receipt is missing, report
211
235
  `blocked: missing_message_drafting_receipt` and do not call the lane complete.
212
236
 
213
237
  The parent then calls
214
- `setup_evergreen_campaigns({ mode:"verify", planRevision, selectedActionIds,
215
- receipts })` and report only verified completion. If verify blocks, report the
216
- blocker and repair only the missing postconditions from the same current plan.
238
+ `setup_evergreen_campaigns({ mode:"verify", postEngagerSenderIds,
239
+ sharedSenderIds, planRevision, selectedActionIds, receipts })` using the same
240
+ sender scopes as the plan call, and reports only verified completion. A verify
241
+ call without the same sender scopes can recompute an empty or different plan and
242
+ is invalid proof. After verify succeeds, rerun
243
+ `setup_evergreen_campaigns({ mode:"plan", postEngagerSenderIds,
244
+ sharedSenderIds, yolo:true })` without explicit campaign/table bindings. That
245
+ idempotency plan must return `intent:"reuse"` for every completed lane and no
246
+ duplicate-lane blockers before you call the command finished. If verify blocks,
247
+ report the blocker and repair only the missing postconditions from the same
248
+ current plan.
217
249
 
218
250
  Message proof for every customer-visible lane must come from the current
219
251
  campaign/table basis and include at least 3 generated review rows from the