@sellable/mcp 0.1.345 → 0.1.346
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
|
@@ -63,6 +63,15 @@ currentStep: "sequence" })` to attach the sender via the v3 senders route and
|
|
|
63
63
|
and Paid InMail Campaign is only an explicit paid-InMail opt-in because it
|
|
64
64
|
can spend InMail credits. If that response does not persist `currentStep:
|
|
65
65
|
"send"`, call `update_campaign({ campaignId, currentStep: "send" })`.
|
|
66
|
+
Then reread `get_campaign({ campaignId })` and `list_tables()` and verify the
|
|
67
|
+
current `workflowTableId` has `hasSequence:true`. A campaign-level
|
|
68
|
+
`SEQUENCE_EXISTS` response is not enough when `confirm_lead_list` or another
|
|
69
|
+
copy step has moved the campaign to a new current campaign table while an old
|
|
70
|
+
stale shell table still owns the sequence columns. In that stale-shell case,
|
|
71
|
+
either repair only the current workflowTableId with `attach_sequence` using
|
|
72
|
+
the same non-paid product template the recommended selector would have chosen,
|
|
73
|
+
or stop and report the stale-shell sequence blocker if replacement was not
|
|
74
|
+
explicitly approved. Never choose a paid-InMail template for this repair.
|
|
66
75
|
9. Surface the `handoff.orientation` string from `auto-execute.yaml` and
|
|
67
76
|
summarize the visible Settings/Sequence/Send state without repeating the
|
|
68
77
|
watch URL.
|
|
@@ -141,7 +150,11 @@ order, atomically:
|
|
|
141
150
|
2. **Validate sender + sequence state.** If no sender is attached, refuse start
|
|
142
151
|
and return the Settings link. If no sequence is attached but a sender is
|
|
143
152
|
attached, call `attach_recommended_sequence({ campaignId, currentStep:
|
|
144
|
-
"send" })` before approving messages
|
|
153
|
+
"send" })` before approving messages, then rerun the precondition check against
|
|
154
|
+
the current workflowTableId rather than an older shell table. If
|
|
155
|
+
`SEQUENCE_EXISTS` only proves an old shell while the current table lacks
|
|
156
|
+
`hasSequence:true`, stop or perform the explicitly approved stale-shell
|
|
157
|
+
current-table repair before any launch.
|
|
145
158
|
3. **Approve generated messages** through the bounded or broad path:
|
|
146
159
|
- If the user asked for an exact send count, such as "schedule 250 sends",
|
|
147
160
|
verify the preparation job approved only the bounded prepared cohort for
|
|
@@ -68,6 +68,7 @@ Step 16 — awaiting-user-greenlight
|
|
|
68
68
|
ask the user which connected sender to attach; in explicit UAT safe mode only, use the safe mock sender
|
|
69
69
|
update_campaign(senderIds=[selectedSenderId], currentStep=sequence)
|
|
70
70
|
attach_recommended_sequence({ campaignId, currentStep: "send" }) # tier-aware: premium/SN -> If Open Profile->INMAIL_OPEN, else INVITE->accepted->DM
|
|
71
|
+
reread get_campaign + list_tables; verify hasSequence:true on the current workflowTableId, not an older shell table
|
|
71
72
|
if the attach response did not move the UI: update_campaign(currentStep=send)
|
|
72
73
|
surface campaign setup orientation + final launch choices without repeating the watch URL
|
|
73
74
|
STOP. DO NOT call start_campaign. DO NOT move to running without explicit launch greenlight.
|
|
@@ -81,7 +82,13 @@ hand-author a `version: 2` template with nodes, branches, and
|
|
|
81
82
|
entryNodeId — that's error-prone mid-long-context (galley-off UAT
|
|
82
83
|
`20260420T195732Z` failed because Claude hit "Invalid node type" and
|
|
83
84
|
tried to debug via forbidden Bash/Glob calls). Use `attach_sequence`
|
|
84
|
-
only when the caller explicitly needs a custom non-recommended cadence
|
|
85
|
+
only when the caller explicitly needs a custom non-recommended cadence, or when
|
|
86
|
+
you have just reread the campaign after `confirm_lead_list` and proved the
|
|
87
|
+
current campaign table has no sequence while an older stale shell table is
|
|
88
|
+
causing campaign-level `SEQUENCE_EXISTS`. In that stale-shell repair case, use
|
|
89
|
+
`attach_sequence` on the current workflowTableId with the same non-paid product
|
|
90
|
+
template the backend would select; never choose a paid-InMail template and never
|
|
91
|
+
repair a table other than the current workflowTableId.
|
|
85
92
|
|
|
86
93
|
Hard gates — if you find yourself about to violate any of these, stop
|
|
87
94
|
first:
|
|
@@ -532,6 +539,14 @@ Shape:
|
|
|
532
539
|
opt-in because it can spend InMail credits. If the tool response
|
|
533
540
|
does not persist `currentStep: "send"`, call
|
|
534
541
|
`update_campaign({ campaignId, currentStep: "send" })`.
|
|
542
|
+
Then reread `get_campaign({ campaignId })` and `list_tables()` and verify the
|
|
543
|
+
returned current workflowTableId has `hasSequence:true`. If
|
|
544
|
+
`attach_recommended_sequence` returned `SEQUENCE_EXISTS` but the current table
|
|
545
|
+
still has `hasSequence:false`, do not continue to launch handoff from that
|
|
546
|
+
stale shell proof. Repair only the current workflowTableId with
|
|
547
|
+
`attach_sequence` using the same non-paid product template the recommended
|
|
548
|
+
selector would have chosen, or stop and report the stale-shell sequence
|
|
549
|
+
blocker if replacement was not explicitly approved.
|
|
535
550
|
9. Surface the `handoff.orientation` string from `auto-execute.yaml` without
|
|
536
551
|
repeating the watch URL.
|
|
537
552
|
10. Ask the final launch greenlight with the structured question function:
|
|
@@ -183,22 +183,51 @@ Parent-thread handwritten copy or setting `currentStep` is not proof.
|
|
|
183
183
|
- The first review batch exists and at least 3 review rows have generated
|
|
184
184
|
messages from the approved brief. If fewer than 3 usable rows exist, report
|
|
185
185
|
the actual count and why.
|
|
186
|
+
If a bounded preparation job requested more than the minimum but already
|
|
187
|
+
met the minimum generated-message floor, do not stall on a single bad review row once a fresh status/readiness check shows no queued, processing, or active cells; record the shortfall, name the failed/empty-row reason when
|
|
188
|
+
available, and continue with route-proof review rather than expanding source
|
|
189
|
+
or waiting forever.
|
|
186
190
|
- At least one generated row is approved as a route-proof gate. If zero rows
|
|
187
191
|
are approved and the prompt explicitly asked for full/customer-ready
|
|
188
192
|
completion, approve exactly one quality-valid generated row. If one or more
|
|
189
193
|
rows are already approved, do not add more approvals during evergreen
|
|
190
194
|
completion. Never broad approve all rows.
|
|
191
|
-
- The recommended non-paid sequence is attached
|
|
192
|
-
on Send. Use
|
|
193
|
-
|
|
194
|
-
|
|
195
|
+
- The recommended non-paid sequence is attached to the current campaign
|
|
196
|
+
table, and the watched campaign is on Send. Use
|
|
197
|
+
`attach_recommended_sequence({ campaignId, currentStep:"send" })` when a
|
|
198
|
+
safe attach is needed. After `confirm_lead_list` or any source-list copy,
|
|
199
|
+
immediately reread `get_campaign({ campaignId })`; the returned
|
|
200
|
+
`workflowTableId` is the current campaign table. Cross-check that exact
|
|
201
|
+
current workflowTableId with `list_tables` and require `hasSequence:true`
|
|
202
|
+
before reporting completion. If a stale shell table has sequence columns but
|
|
203
|
+
the current campaign table does not, `SEQUENCE_EXISTS` is not enough:
|
|
204
|
+
record the stale shell table id, then repair the current workflowTableId
|
|
205
|
+
with `attach_sequence` using the same non-paid product template
|
|
206
|
+
`attach_recommended_sequence` would have selected. Never use a paid-InMail
|
|
207
|
+
template and never attach/replace sequence outside the current table unless
|
|
208
|
+
the current lane packet explicitly allowed sequence repair.
|
|
195
209
|
- No scheduled, queued outbound, sent outbound, campaign launch, or paid
|
|
196
210
|
InMail spend is created by this skill.
|
|
197
211
|
4. **Verify each slot** after create/reuse/repair:
|
|
198
212
|
- `get_campaign` shows the campaign exists, remains unlaunched, and has the expected workflow table.
|
|
199
213
|
- Builder truth must match dashboard truth. `currentStep:"running"` is valid only when the linked table has `campaignStatus:"ACTIVE"`. For a `PAUSED` or `ARCHIVED` campaign/table, repair or flag stale `currentStep:"running"` back to launch review (`send` / review-ready) before reporting the slot done. Never call `start_campaign` just to make a stale `running` step true.
|
|
200
|
-
- Send/action lanes such as Post Engagers have a sequence attached
|
|
201
|
-
|
|
214
|
+
- Send/action lanes such as Post Engagers have a sequence attached on the
|
|
215
|
+
exact current campaign table. Use `list_tables({ hasSequence: true })` as a
|
|
216
|
+
quick cross-check, but do not treat that filter as the only proof. If the
|
|
217
|
+
canonical current campaign table is missing from the sequence-filtered
|
|
218
|
+
table list and `attach_recommended_sequence({ campaignId })` returns
|
|
219
|
+
`SEQUENCE_EXISTS`, inspect whether a stale shell table owns the sequence.
|
|
220
|
+
For a customer-visible completion run, stale shell proof is not completion:
|
|
221
|
+
rerun the current-table repair above or report `blocked: stale_shell_sequence`.
|
|
222
|
+
- Only use `attach_recommended_sequence({ campaignId })` for a send-lane
|
|
223
|
+
sequence repair/precheck when the target is a canonical prod slot and the
|
|
224
|
+
invoking prompt allows sequence repair. Call it at most once without
|
|
225
|
+
`confirmed`; a successful response is `repaired`. Treat `SEQUENCE_EXISTS` as
|
|
226
|
+
non-mutating proof only when the current table also has `hasSequence:true`.
|
|
227
|
+
Never call `attach_recommended_sequence` or `attach_sequence` with
|
|
228
|
+
`confirmed:true` in evergreen automation unless the user explicitly asks to
|
|
229
|
+
replace an existing sequence or the approved lane packet allows current
|
|
230
|
+
table stale-shell repair.
|
|
202
231
|
- Do not report `source-only/no sequence expected` for any named evergreen
|
|
203
232
|
campaign that appears in Campaigns, has a CampaignOffer ID, or is backed by
|
|
204
233
|
a campaign dashboard table. Shared Signal Discovery and Shared Cold
|