@sellable/mcp 0.1.360 → 0.1.362
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
|
@@ -183,9 +183,10 @@ not a parent-thread summary. The receipt must include:
|
|
|
183
183
|
workflowTableId, brief hash or updated-at marker, delivery format, token
|
|
184
184
|
rules, hard avoids, source-use rules, and first-message template state.
|
|
185
185
|
- `sourceDecisionReceipt`: selected source/list id, provider, cursor/inventory
|
|
186
|
-
state, import/copy caps,
|
|
187
|
-
|
|
188
|
-
|
|
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.
|
|
189
190
|
- `filterDecisionReceipt`: saved/applied filter ids or explicit skip-filter
|
|
190
191
|
decision with current campaign/table basis.
|
|
191
192
|
- `messageDraftingReceipt`: the Message Drafting proof described below,
|
|
@@ -206,6 +207,92 @@ not a parent-thread summary. The receipt must include:
|
|
|
206
207
|
planRevision, selectedActionIds, receipts })` call/result used before the
|
|
207
208
|
parent reports completion.
|
|
208
209
|
|
|
210
|
+
Use these canonical receipt leaf names exactly. Do not substitute looser aliases
|
|
211
|
+
like `generateMessagesPromptLoad`, `requiredAssetLoads`,
|
|
212
|
+
`validationPromptLoad`, `reviewBatchBasisHash`, `reviewRowIds`,
|
|
213
|
+
`sequenceActionTypes`, or `pass:true` unless you also include the canonical
|
|
214
|
+
fields below:
|
|
215
|
+
|
|
216
|
+
```json
|
|
217
|
+
{
|
|
218
|
+
"status": "succeeded",
|
|
219
|
+
"planRevision": "<original planRevision>",
|
|
220
|
+
"laneKey": "<lane key>",
|
|
221
|
+
"laneType": "<lane type>",
|
|
222
|
+
"workspaceId": "<workspace id>",
|
|
223
|
+
"senderIds": ["<sender id>"],
|
|
224
|
+
"campaignId": "<campaign id>",
|
|
225
|
+
"tableId": "<workflow table id>",
|
|
226
|
+
"createCampaignStepReceipt": {
|
|
227
|
+
"campaignBriefReceipt": {
|
|
228
|
+
"campaignId": "<campaign id>",
|
|
229
|
+
"workflowTableId": "<workflow table id>",
|
|
230
|
+
"briefHash": "<brief/currentApprovedBriefHash>",
|
|
231
|
+
"deliveryFormat": "single message",
|
|
232
|
+
"tokenRules": true,
|
|
233
|
+
"hardAvoids": true,
|
|
234
|
+
"sourceUseRules": true,
|
|
235
|
+
"firstMessageTemplate": "<template or template state>"
|
|
236
|
+
},
|
|
237
|
+
"sourceDecisionReceipt": {
|
|
238
|
+
"sourceId": "<source id>",
|
|
239
|
+
"sourceListId": "<source/list id>",
|
|
240
|
+
"cursorOrInventoryState": "<cursor/inventory/import state>",
|
|
241
|
+
"dedupeDncProviderExclusions": true,
|
|
242
|
+
"sourceLadderReason": "<why the current source is valid before colder sources>"
|
|
243
|
+
},
|
|
244
|
+
"filterDecisionReceipt": {
|
|
245
|
+
"status": "skipped",
|
|
246
|
+
"workflowTableId": "<workflow table id>"
|
|
247
|
+
},
|
|
248
|
+
"messageDraftingReceipt": {
|
|
249
|
+
"promptLoadedToHasMoreFalse": true,
|
|
250
|
+
"requiredAssetsLoaded": true,
|
|
251
|
+
"validationLoaded": true,
|
|
252
|
+
"campaignId": "<campaign id>",
|
|
253
|
+
"workflowTableId": "<workflow table id>",
|
|
254
|
+
"selectedLeadListId": "<source/list id>",
|
|
255
|
+
"reviewBatchRowHash": "<review row ids hash>",
|
|
256
|
+
"messageDraftRecommendation": {"basis": "generate-messages"},
|
|
257
|
+
"sampleMessages[].verdict": "pass",
|
|
258
|
+
"sampleMessages": [
|
|
259
|
+
{"rowId": "<row id>", "generatedMessageText": "<message>", "verdict": "pass"}
|
|
260
|
+
]
|
|
261
|
+
},
|
|
262
|
+
"reviewBatchReceipt": {
|
|
263
|
+
"rowIdsHash": "<review row ids hash>",
|
|
264
|
+
"generatedCount": 3
|
|
265
|
+
},
|
|
266
|
+
"sequenceReceipt": {
|
|
267
|
+
"workflowTableId": "<workflow table id>",
|
|
268
|
+
"hasSequence": true,
|
|
269
|
+
"sequenceReceipt.actionTypes": ["send_invite"],
|
|
270
|
+
"sequenceReceipt.nonPaid": true,
|
|
271
|
+
"actionTypes": ["send_invite"],
|
|
272
|
+
"nonPaid": true
|
|
273
|
+
},
|
|
274
|
+
"finalPausedSendProof": {
|
|
275
|
+
"currentStep": "send",
|
|
276
|
+
"campaignStatus": "PAUSED"
|
|
277
|
+
},
|
|
278
|
+
"verifyCall": {
|
|
279
|
+
"mode": "verify",
|
|
280
|
+
"planRevision": "<original planRevision>",
|
|
281
|
+
"selectedActionIds": ["<all original selected action ids>"]
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
Verification always uses the original execution planRevision and original
|
|
288
|
+
selectedActionIds from the plan packets that were dispatched before mutation.
|
|
289
|
+
The parent must preserve the original selectedActionIds exactly.
|
|
290
|
+
Do not replace them with a later reuse planRevision/actionIds after the
|
|
291
|
+
campaigns exist. After workers complete, attach or patch `verifyCall` on each
|
|
292
|
+
lane receipt with that original execution planRevision, original
|
|
293
|
+
selectedActionIds, same sender scopes, and the verify result. Only after verify
|
|
294
|
+
succeeds should the parent perform the idempotency rerun.
|
|
295
|
+
|
|
209
296
|
If any required field is missing, report
|
|
210
297
|
`blocked: missing_create_campaign_step_receipt` for that lane and do not call it
|
|
211
298
|
complete.
|
|
@@ -286,12 +373,11 @@ create-campaign Message Drafting branch ran. If this receipt is missing, report
|
|
|
286
373
|
The parent then calls
|
|
287
374
|
`setup_evergreen_campaigns({ mode:"verify", postEngagerSenderIds,
|
|
288
375
|
sharedSenderIds, planRevision, selectedActionIds, receipts })` using the same
|
|
289
|
-
sender scopes as the plan call
|
|
290
|
-
call without the same sender scopes can recompute an empty or different plan and
|
|
291
|
-
is invalid proof. After verify succeeds, rerun
|
|
376
|
+
sender scopes as the plan call and the original execution planRevision/actionIds,
|
|
377
|
+
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
|
|
292
378
|
`setup_evergreen_campaigns({ mode:"plan", postEngagerSenderIds,
|
|
293
379
|
sharedSenderIds, yolo:true })` without explicit campaign/table bindings. That
|
|
294
|
-
idempotency
|
|
380
|
+
idempotency rerun must return `intent:"reuse"` for every completed lane and no
|
|
295
381
|
duplicate-lane blockers before you call the command finished. If verify blocks,
|
|
296
382
|
report the blocker and repair only the missing postconditions from the same
|
|
297
383
|
current plan.
|