@sellable/mcp 0.1.335 → 0.1.337
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/dist/index-dev.js +0 -0
- package/dist/index.js +0 -0
- package/dist/server.js +17 -1
- package/dist/tools/campaign-fill-routing.d.ts +39 -0
- package/dist/tools/campaign-fill-routing.js +45 -0
- package/dist/tools/campaign-horizon-fill.js +1 -1
- package/dist/tools/campaign-message-preparation.js +1 -1
- package/dist/tools/campaign-processing.d.ts +54 -0
- package/dist/tools/campaign-processing.js +39 -11
- package/dist/tools/prompts.js +1 -1
- package/dist/tools/refill-campaign-sends.d.ts +92 -0
- package/dist/tools/refill-campaign-sends.js +91 -0
- package/dist/tools/registry.d.ts +153 -0
- package/dist/tools/registry.js +4 -0
- package/package.json +1 -1
- package/skills/create-campaign/SKILL.md +47 -23
- package/skills/create-campaign-v2/core/flow.v2.json +1 -1
- package/skills/create-campaign-v2/references/filter-leads.md +24 -0
- package/skills/create-campaign-v2/references/sample-validation-loop.md +145 -9
- package/skills/create-campaign-v2-tail/SKILL.md +16 -10
- package/skills/fill-send-horizon/SKILL.md +36 -21
- package/skills/refill-sends/SKILL.md +57 -0
|
@@ -1,48 +1,63 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: fill-send-horizon
|
|
3
|
-
description:
|
|
3
|
+
description: Compatibility alias for refill-sends. Plain fill, refill sends, max out sends, load everyone up, and fill horizon sends now route to refill_campaign_sends plan mode first. Legacy fill_campaign_horizon remains evergreen-only lower-level audit/apply.
|
|
4
4
|
visibility: internal
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- mcp__sellable__refill_campaign_sends
|
|
7
|
+
- mcp__sellable__resolve_campaign_fill_route
|
|
8
|
+
- mcp__sellable__fill_campaign_horizon
|
|
5
9
|
---
|
|
6
10
|
|
|
7
11
|
# Fill Send Horizon
|
|
8
12
|
|
|
9
13
|
<role>
|
|
10
|
-
|
|
14
|
+
This is a compatibility alias. For plain operator language, use the new refill
|
|
15
|
+
command first: `refill_campaign_sends({ mode: "plan", intent: "plain" })`.
|
|
16
|
+
The word "horizon" means send window. Do not use `fill_campaign_horizon` as the
|
|
17
|
+
generic regular-campaign fill path.
|
|
11
18
|
</role>
|
|
12
19
|
|
|
13
20
|
<inputs>
|
|
14
|
-
The invoking prompt (often a scheduled automation) names the targets
|
|
21
|
+
The invoking prompt (often a scheduled automation) names the targets or gives a
|
|
22
|
+
plain fill request. Route before acting:
|
|
15
23
|
|
|
16
|
-
-
|
|
17
|
-
-
|
|
18
|
-
-
|
|
24
|
+
- Plain fill/load requests ("fill campaigns", "load everyone up", "fill send horizon") — first call `refill_campaign_sends({ mode: "plan", intent: "plain" })`.
|
|
25
|
+
- If no `--yolo`, report the plan and stop.
|
|
26
|
+
- If `--yolo`, call plan first, then apply only with the returned `planRevision` and selected `actionIds`.
|
|
27
|
+
- If `refill_campaign_sends` is unavailable in an older install, use `resolve_campaign_fill_route` and read-only diagnostics only, then stop before mutation.
|
|
19
28
|
|
|
20
29
|
Optional inputs: `targetPreparedMessages` (default: leave unset for the adaptive default), an explicit "approve" instruction (see safety rules), and a **waterfall priority order** (see below).
|
|
21
30
|
</inputs>
|
|
22
31
|
|
|
23
32
|
<objective>
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
1. `
|
|
27
|
-
2. If
|
|
28
|
-
3. If
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
Route result handling:
|
|
34
|
+
|
|
35
|
+
1. If `refill_campaign_sends` returns regular campaigns, report the ranked plan.
|
|
36
|
+
2. If it returns evergreen campaigns, report the current-source audit and any legacy evergreen send-window subplan.
|
|
37
|
+
3. If it returns blockers, report them and stop.
|
|
38
|
+
4. If `--yolo` is approved, apply only selected immutable actions from the plan.
|
|
39
|
+
|
|
40
|
+
For each active campaign target:
|
|
41
|
+
|
|
42
|
+
1. Confirm workspace, `workflowTableId`, `campaignStatus:"ACTIVE"`, sender IDs, current stats, and scheduled/ready/approved/prepared counts where available. Skip and report PAUSED/DRAFT/ARCHIVED targets separately.
|
|
43
|
+
2. Check `get_campaign_message_preparation_status({ campaignId, tableId })` first. If an active prep job exists for the same target, report it and do not start an overlapping job.
|
|
44
|
+
3. If rows already exist, let `refill_campaign_sends` plan/apply the bounded preparation action. Do not call lower-level preparation manually unless the command is unavailable.
|
|
45
|
+
4. If source is thin and the user asked to add/fill more leads, source fresh Signal Discovery/post engagement leads only into the same `campaignOfferId`/`campaignId` context. Do not create warm-post-engager side campaigns, on-demand campaigns, or unrelated campaigns.
|
|
46
|
+
5. Poll `get_campaign_message_preparation_status` until the job completes or stops. Read `progress.enrichedRows`, `preparedMessages`, `approvedMessages`, `activeCellCount`, active prep blockers, and `stopReason`; never treat `checkedRows` as enriched rows.
|
|
47
|
+
6. After any prep/approval work, re-read campaign/table state. Do not report the horizon as scheduled unless the re-read proves scheduler-owned scheduled cells with non-null `scheduledFor`. If only prepared/approved/ready cells exist, report the exact state as `prepared/approved/ready - awaiting scheduler`, not complete.
|
|
48
|
+
7. Report appended rows, enriched rows, prepared messages, approved messages, ready-to-schedule rows, scheduler-owned scheduled cells, active preparation jobs, and sender-health blockers such as disconnected Sales Nav, deleted LinkedIn accounts, missing sequence state, or exhausted source rows as separate lines.
|
|
36
49
|
</objective>
|
|
37
50
|
|
|
38
51
|
<waterfall>
|
|
39
52
|
## Campaign hierarchy (waterfall order)
|
|
40
53
|
|
|
41
|
-
|
|
54
|
+
Evergreen/horizon fill order is **stored workspace state** returned by
|
|
55
|
+
`resolve_campaign_fill_route`, not something each automation restates. Resolve
|
|
56
|
+
it in this precedence:
|
|
42
57
|
|
|
43
|
-
1. **Stored hierarchy (default)**:
|
|
58
|
+
1. **Stored hierarchy (default)**: the resolver reads the stored managed waterfall and returns slots in priority order with campaign offer IDs included. Fill in that order.
|
|
44
59
|
2. **Per-invocation override**: if the invoking prompt states an explicit order ("fill in this order: Signal Discovery, Post Engagers"), use it for this run only and say in the report that the stored order was overridden. To change the order durably, use `set_campaign_waterfall_order` — but only when the user/automation explicitly asks to change the hierarchy, never as a side effect of a fill run.
|
|
45
|
-
3. **No stored hierarchy
|
|
60
|
+
3. **No stored hierarchy**: resolver returns active targets or ask-create. Do not invent a conventional evergreen waterfall. Ask whether to create normal campaigns or evergreen campaigns only after `ask_create`.
|
|
46
61
|
|
|
47
62
|
Fill mechanics, whatever the source of the order:
|
|
48
63
|
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: refill-sends
|
|
3
|
+
description: Plan and optionally apply bounded campaign send refill work. Plain fill, refill sends, max out sends, load everyone up, and fill send window requests route to refill_campaign_sends plan mode first. Apply requires --yolo, a fresh planRevision, and selected actionIds.
|
|
4
|
+
visibility: internal
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- mcp__sellable__refill_campaign_sends
|
|
7
|
+
- mcp__sellable__resolve_campaign_fill_route
|
|
8
|
+
- mcp__sellable__fill_campaign_horizon
|
|
9
|
+
- mcp__sellable__get_campaign
|
|
10
|
+
- mcp__sellable__get_campaign_message_preparation_status
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Refill Sends
|
|
14
|
+
|
|
15
|
+
Use this skill for plain operator requests such as "fill", "refill sends",
|
|
16
|
+
"max out sends", "load everyone up", or "fill horizon sends".
|
|
17
|
+
|
|
18
|
+
## Default Flow
|
|
19
|
+
|
|
20
|
+
1. Call `refill_campaign_sends({ mode: "plan", intent: "plain" })`.
|
|
21
|
+
2. Report the returned plan and stop when the user did not include `--yolo`.
|
|
22
|
+
3. If the user included `--yolo`, still call plan first. Inspect blockers.
|
|
23
|
+
4. Apply only by calling `refill_campaign_sends({ mode: "apply", yolo: true, planRevision, actionIds })` with action IDs copied from the fresh plan.
|
|
24
|
+
|
|
25
|
+
Do not manually chain lower-level tools unless `refill_campaign_sends` is
|
|
26
|
+
unavailable. In that fallback case, run read-only diagnostics only, then stop
|
|
27
|
+
before mutation.
|
|
28
|
+
|
|
29
|
+
## Public Concepts
|
|
30
|
+
|
|
31
|
+
- Regular campaign: a campaign with a brief, source, sequence, senders, and a
|
|
32
|
+
campaign-backed workflow table.
|
|
33
|
+
- Evergreen campaign: a managed always-on send-window lane.
|
|
34
|
+
- Send window: the dates/capacity the operator wants kept full.
|
|
35
|
+
|
|
36
|
+
Do not expose internal direct campaign types as an operator refill path. If the
|
|
37
|
+
plan reports `unsupported_campaign_type`, report it and stop.
|
|
38
|
+
|
|
39
|
+
## Safety Rules
|
|
40
|
+
|
|
41
|
+
- Default mode is read-only plan.
|
|
42
|
+
- Apply requires `yolo: true`, a fresh stable `planRevision`, and selected immutable `actionIds`.
|
|
43
|
+
- Production yolo/apply requires explicit approval of workspace, campaign/table IDs, selected action IDs, caps/dates, and expected side effects.
|
|
44
|
+
- Never create side campaigns.
|
|
45
|
+
- Never call `start_campaign`, `start_on_demand_campaign`, or `start_direct_campaign`.
|
|
46
|
+
- Never raw-write scheduled fields or sender assignment fields.
|
|
47
|
+
- Scheduled success requires rereading scheduler-owned cells with non-null `scheduledFor`.
|
|
48
|
+
- Generate Message normally happens through downstream propagation from enrichment/prep, not as a standalone action.
|
|
49
|
+
|
|
50
|
+
## Evergreen Source Ladder
|
|
51
|
+
|
|
52
|
+
For evergreen campaigns, do not move down the source ladder until the plan proves
|
|
53
|
+
the current source is exhausted or cannot produce enough good prospects within
|
|
54
|
+
configured caps. Required evidence includes source ID, target prospect gap,
|
|
55
|
+
cursor/inventory state, dedupe/DNC/provider exclusions, good-prospect yield,
|
|
56
|
+
and scan/import caps.
|
|
57
|
+
|