@sellable/mcp 0.1.359 → 0.1.361

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.359",
3
+ "version": "0.1.361",
4
4
  "type": "module",
5
5
  "description": "Sellable MCP server for Claude Code and Codex campaign workflows",
6
6
  "main": "dist/index.js",
@@ -73,6 +73,16 @@ Plan shape:
73
73
  creating duplicates.
74
74
  - If a user supplies canonical ids, reuse/verify them instead of creating duplicates.
75
75
 
76
+ The command-backed unbound plan is authoritative. If
77
+ `setup_evergreen_campaigns({ mode:"plan", ... })` returns a lane packet with
78
+ `intent:"create"`, execute that create packet exactly. Do not convert it into an
79
+ explicit binding because `list_tables`, `get_campaigns`, a waterfall, or old
80
+ inventory shows an `ARCHIVED` campaign/table with a matching name. Archived
81
+ campaigns are not reusable evergreen targets. Only pass an archived
82
+ campaign/table as an explicit binding when the user supplied those exact ids and
83
+ explicitly allowed dashboard visibility repair; otherwise ignore archived
84
+ matches for execution and let the create packet proceed.
85
+
76
86
  Use `selectedSenderIds` only as a legacy shorthand when the same senders should
77
87
  get sender-owned Post Engagers lanes and attach to shared lanes. When the scopes
78
88
  differ, pass both explicit arrays:
@@ -173,9 +183,10 @@ not a parent-thread summary. The receipt must include:
173
183
  workflowTableId, brief hash or updated-at marker, delivery format, token
174
184
  rules, hard avoids, source-use rules, and first-message template state.
175
185
  - `sourceDecisionReceipt`: selected source/list id, provider, cursor/inventory
176
- state, import/copy caps, dedupe/DNC/provider exclusions, row ids or row-count
177
- evidence, and the reason no colder source was used before the current source
178
- was proven exhausted or insufficient.
186
+ state, import/copy caps, explicit `dedupeDncProviderExclusions:true` or an
187
+ equivalent exclusions object, row ids or row-count evidence (`rowCount`,
188
+ `readyRowCount`, or `rowEvidence`), and the reason no colder source was used
189
+ before the current source was proven exhausted or insufficient.
179
190
  - `filterDecisionReceipt`: saved/applied filter ids or explicit skip-filter
180
191
  decision with current campaign/table basis.
181
192
  - `messageDraftingReceipt`: the Message Drafting proof described below,
@@ -196,6 +207,15 @@ not a parent-thread summary. The receipt must include:
196
207
  planRevision, selectedActionIds, receipts })` call/result used before the
197
208
  parent reports completion.
198
209
 
210
+ Verification always uses the original execution planRevision and original
211
+ selectedActionIds from the plan packets that were dispatched before mutation.
212
+ The parent must preserve the original selectedActionIds exactly.
213
+ Do not replace them with a later reuse planRevision/actionIds after the
214
+ campaigns exist. After workers complete, attach or patch `verifyCall` on each
215
+ lane receipt with that original execution planRevision, original
216
+ selectedActionIds, same sender scopes, and the verify result. Only after verify
217
+ succeeds should the parent perform the idempotency rerun.
218
+
199
219
  If any required field is missing, report
200
220
  `blocked: missing_create_campaign_step_receipt` for that lane and do not call it
201
221
  complete.
@@ -276,12 +296,11 @@ create-campaign Message Drafting branch ran. If this receipt is missing, report
276
296
  The parent then calls
277
297
  `setup_evergreen_campaigns({ mode:"verify", postEngagerSenderIds,
278
298
  sharedSenderIds, planRevision, selectedActionIds, receipts })` using the same
279
- sender scopes as the plan call, and reports only verified completion. A verify
280
- call without the same sender scopes can recompute an empty or different plan and
281
- is invalid proof. After verify succeeds, rerun
299
+ sender scopes as the plan call and the original execution planRevision/actionIds,
300
+ and reports only verified completion. A verify call without the same sender scopes can recompute an empty or different plan and is invalid proof. A verify call that uses a later reuse planRevision instead of the original execution planRevision is also invalid proof. Only after verify succeeds, rerun
282
301
  `setup_evergreen_campaigns({ mode:"plan", postEngagerSenderIds,
283
302
  sharedSenderIds, yolo:true })` without explicit campaign/table bindings. That
284
- idempotency plan must return `intent:"reuse"` for every completed lane and no
303
+ idempotency rerun must return `intent:"reuse"` for every completed lane and no
285
304
  duplicate-lane blockers before you call the command finished. If verify blocks,
286
305
  report the blocker and repair only the missing postconditions from the same
287
306
  current plan.