@sellable/mcp 0.1.350 → 0.1.352
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.
|
@@ -6,7 +6,7 @@ async function postSetupEvergreenCampaigns(body) {
|
|
|
6
6
|
export const setupEvergreenCampaignsToolDefinitions = [
|
|
7
7
|
{
|
|
8
8
|
name: "setup_evergreen_campaigns",
|
|
9
|
-
description: "Evergreen campaign setup plan/verify command. Use plan mode first to inspect exact workspace/sender/campaign/table/source state and receive immutable lane packets. `selectedSenderIds` is a legacy shorthand for both scopes; prefer `postEngagerSenderIds` for the Post Engagers sender scope and `sharedSenderIds` for the shared lane sender scope when they differ. The command plans one Post Engagers lane per post-engager sender plus shared Signal Discovery and Shared Cold Fallback lanes for the shared sender set. yolo is only a parent-skill auto-execution hint for safe lane packets; this backend command remains read-only in plan mode and verifies receipts in verify mode. When safe-yolo needs normal setup work, the parent skill may ask for bounded delegated approval: one approval over the current planRevision, selected action ids, caps, allowed side-effect classes, and stop conditions lets lane workers execute without per-substep approval while staying inside that packet. Lane workers must execute creation, source import, create-campaign workflow steps, generate-messages, sequence attachment, and review readiness through existing create-campaign workflow/subskills, then return receipts here for verification. Customer-visible verify receipts must include createCampaignStepReceipt with setupPlanCall, campaignBriefReceipt, sourceDecisionReceipt, filterDecisionReceipt, messageDraftingReceipt, reviewBatchReceipt, sequenceReceipt, and verifyCall. This command does not launch campaigns, does not schedule sends, does not assign scheduler-owned send fields, does not archive/delete cleanup targets, and does not spend paid credits.",
|
|
9
|
+
description: "Evergreen campaign setup plan/verify command. Use plan mode first to inspect exact workspace/sender/campaign/table/source state and receive immutable lane packets. `selectedSenderIds` is a legacy shorthand for both scopes; prefer `postEngagerSenderIds` for the Post Engagers sender scope and `sharedSenderIds` for the shared lane sender scope when they differ. The command plans one Post Engagers lane per post-engager sender plus shared Signal Discovery and Shared Cold Fallback lanes for the shared sender set. yolo is only a parent-skill auto-execution hint for safe lane packets; this backend command remains read-only in plan mode and verifies receipts in verify mode. When safe-yolo needs normal setup work, the parent skill may ask for bounded delegated approval: one approval over the current planRevision, selected action ids, caps, allowed side-effect classes, and stop conditions lets lane workers execute without per-substep approval while staying inside that packet. Lane workers must execute creation, source import, create-campaign workflow steps, generate-messages, sequence attachment, and review readiness through existing create-campaign workflow/subskills, then return receipts here for verification. Customer-visible verify receipts must include createCampaignStepReceipt with setupPlanCall, campaignBriefReceipt, sourceDecisionReceipt, filterDecisionReceipt, messageDraftingReceipt, reviewBatchReceipt, sequenceReceipt, and verifyCall. messageDraftingReceipt must include validationResult:'passed', a passed qualityReview, and at least 3 concrete sampleMessages with row ids, generated message text, pass verdicts, and no issues; Shared Cold Fallback samples with a standalone name followed by 'Hey there' are rejected. This command does not launch campaigns, does not schedule sends, does not assign scheduler-owned send fields, does not archive/delete cleanup targets, and does not spend paid credits.",
|
|
10
10
|
inputSchema: {
|
|
11
11
|
type: "object",
|
|
12
12
|
properties: {
|
package/package.json
CHANGED
|
@@ -135,7 +135,9 @@ not a parent-thread summary. The receipt must include:
|
|
|
135
135
|
|
|
136
136
|
- `setupPlanCall`: the exact `setup_evergreen_campaigns({ mode:"plan", ... })`
|
|
137
137
|
planRevision, selected actionId, lane key, workspace id, sender ids, and
|
|
138
|
-
campaign/table binding or create intent used before work started.
|
|
138
|
+
campaign/table binding or create intent used before work started. For a
|
|
139
|
+
create lane, this receipt must explicitly include `createIntent:true`; for a
|
|
140
|
+
reuse lane, do not report `createIntent:true`.
|
|
139
141
|
- `campaignBriefReceipt`: the CampaignOffer/campaign id, current
|
|
140
142
|
workflowTableId, brief hash or updated-at marker, delivery format, token
|
|
141
143
|
rules, hard avoids, source-use rules, and first-message template state.
|
|
@@ -170,6 +172,12 @@ review-batch row ids/hash, and either `statusSource:"branch"` or
|
|
|
170
172
|
full packaged prompt with `get_subskill_prompt({ subskillName:"generate-messages"`
|
|
171
173
|
until `hasMore:false`, loaded the required message assets, and loaded
|
|
172
174
|
`create-campaign-v2-validation` before returning a `messageDraftRecommendation`.
|
|
175
|
+
The receipt must also include `validationResult:"passed"`, a passed
|
|
176
|
+
quality-review object, and at least 3 concrete reviewed sample messages with
|
|
177
|
+
row ids, generated message text, pass verdicts, and no issues. Shared Cold
|
|
178
|
+
Fallback samples must not open with a standalone name line followed by
|
|
179
|
+
"Hey there" or another generic greeting; that pattern means the lane did not
|
|
180
|
+
finish the create-campaign message workflow to customer quality.
|
|
173
181
|
The generated-message cells are not prompt proof: `currentRevisionGeneratedMessages`,
|
|
174
182
|
Generate Message column counts, `messagesCount`, or rendered row previews prove
|
|
175
183
|
only that table cells exist from the current brief/template, not that the
|
|
@@ -189,9 +197,14 @@ Parent-thread handwritten copy or setting `currentStep` is not proof.
|
|
|
189
197
|
|
|
190
198
|
<objective>
|
|
191
199
|
1. **Inventory first**: `get_campaigns` + `list_tables` + `get_campaign_waterfall` in the active workspace. Treat `list_tables` and the managed waterfall as authoritative for older managed slots; `get_campaigns` is a recent campaign page and may miss canonical evergreen lanes. Match existing campaigns/tables/waterfall slots to the plan by name (case-insensitive, ignore suffixes like "(Copy)") and stored slot identity. `list_tables.campaignStatus` and `list_tables.dashboardBucket` are part of the identity check: a matching `ARCHIVED` table/campaign is not a plain `REUSE`. If it is the canonical prod slot and the invocation explicitly allows dashboard visibility repair, repair it to `PAUSED`; otherwise mark it `flagged`/`blocked` and do not create a duplicate. A matching non-archived campaign/table/waterfall slot = REUSE; record it and move on. Never create a second campaign for a slot that already has one in any of those inventories.
|
|
192
|
-
2. **Create only the missing slots**
|
|
200
|
+
2. **Create only the missing slots** through the full `$sellable:create-campaign`
|
|
201
|
+
workflow path for each lane, using the lane packet as the setup basis:
|
|
193
202
|
- Post Engagers lanes: that sender's ID only. Shared lanes: all the senders' IDs.
|
|
194
|
-
- The brief
|
|
203
|
+
- The brief and message direction are lane-specific. Never reuse the Post
|
|
204
|
+
Engagers opening for Shared Cold Fallback.
|
|
205
|
+
- **Post Engagers** first-message style: short, casual, references the
|
|
206
|
+
sender-authored post they engaged with, closed question, **no internal
|
|
207
|
+
vocabulary, no pitch, no meeting ask** in message one:
|
|
195
208
|
|
|
196
209
|
```
|
|
197
210
|
{{first_name}}
|
|
@@ -201,6 +214,25 @@ Parent-thread handwritten copy or setting `currentStep` is not proof.
|
|
|
201
214
|
Saw you pop up on my post about {{post_topic_line}}
|
|
202
215
|
```
|
|
203
216
|
|
|
217
|
+
- **Shared Signal Discovery** first-message style: short, casual, references
|
|
218
|
+
the real observed signal/theme or public conversation. It may mention the
|
|
219
|
+
engagement source only when the source evidence supports it. Do not say
|
|
220
|
+
"my post" unless the selected source post was actually authored by the
|
|
221
|
+
sending sender.
|
|
222
|
+
- **Shared Cold Fallback** first-message style: cold, direct, and cohesive.
|
|
223
|
+
It must not pretend there was engagement, must not say "saw you pop up",
|
|
224
|
+
and must not use a standalone name line followed by "Hey there" or other
|
|
225
|
+
generic greeting. It should open with a light role/company/problem
|
|
226
|
+
observation and ask one clear problem question. This is a single-message
|
|
227
|
+
cold path unless the approved create-campaign message workflow proves a
|
|
228
|
+
better delivery format.
|
|
229
|
+
- Every customer-visible lane must run Message Drafting from the current
|
|
230
|
+
campaign/table basis after source rows exist. The worker must load the full
|
|
231
|
+
packaged `generate-messages` prompt, every required asset, and
|
|
232
|
+
`create-campaign-v2-validation`; the returned receipt must include at
|
|
233
|
+
least 3 concrete reviewed sample messages, a passed validation result, and
|
|
234
|
+
a passed quality review. Row/message counts alone are not enough.
|
|
235
|
+
|
|
204
236
|
- **The brief must declare the delivery format** so Generate Message writes copy suited to how it actually sends:
|
|
205
237
|
- DM lanes: add a `Delivery format:` line — either `multiline (each paragraph sends as its own DM message)` or `single message`. When multiline, the template's blank-line paragraphs ARE the message boundaries — write each one as a standalone typed message.
|
|
206
238
|
- **InMail lanes can never be multiline**: an InMail is one message and the recipient must reply before anything else can be sent. InMail-bound templates must read as one cohesive message — declare `Delivery format: single message (InMail — no follow-up until reply)` and never structure the copy to depend on multi-message pacing.
|
|
@@ -233,7 +265,11 @@ Parent-thread handwritten copy or setting `currentStep` is not proof.
|
|
|
233
265
|
`workerDetails.messageDraftBuilder` with `statusSource:"branch"` or an
|
|
234
266
|
inline `statusSource:"parent-thread-fallback"` receipt. The generated-message
|
|
235
267
|
cells are not prompt proof; `currentRevisionGeneratedMessages` and row
|
|
236
|
-
previews are only downstream cell evidence.
|
|
268
|
+
previews are only downstream cell evidence. The proof must include
|
|
269
|
+
`validationResult:"passed"`, a passed quality review, and at least 3
|
|
270
|
+
reviewed sample messages. For Shared Cold Fallback, reject samples that
|
|
271
|
+
open with a standalone name followed by "Hey there" or a similarly generic
|
|
272
|
+
greeting.
|
|
237
273
|
- The first review batch exists and at least 3 review rows have generated
|
|
238
274
|
messages from the approved brief. If fewer than 3 usable rows exist, report
|
|
239
275
|
the actual count and why.
|