@sellable/install 0.1.293 → 0.1.295
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/bin/sellable-install.mjs
CHANGED
|
@@ -1973,15 +1973,17 @@ ${allowedToolsYaml(REFILL_SENDS_ALLOWED_TOOLS)}
|
|
|
1973
1973
|
|
|
1974
1974
|
Use this as the customer-facing entrypoint for the Sellable \`refill-sends\`
|
|
1975
1975
|
workflow. It supports \`--yolo\` and optional repeated \`--sender <name-or-id>\`
|
|
1976
|
-
selectors. It also supports \`--
|
|
1977
|
-
sender-local date
|
|
1976
|
+
selectors. It also supports \`--target-date YYYY-MM-DD\` to fill one exact
|
|
1977
|
+
sender-local date and \`--until YYYY-MM-DD\` to fill through a specific
|
|
1978
|
+
sender-local date instead of the default scheduler-forward 48-hour target window.
|
|
1978
1979
|
|
|
1979
1980
|
Goal-mode continuation: a skill cannot create or invoke \`/goal\` by itself. If
|
|
1980
1981
|
this command is already running inside an active Codex goal, keep that goal open
|
|
1981
|
-
until every selected sender lane is
|
|
1982
|
-
(\`sent + scheduled\`)
|
|
1983
|
-
concrete non-scheduler blocker appears.
|
|
1984
|
-
only because the current state is
|
|
1982
|
+
until every selected sender lane is filled by projected coverage
|
|
1983
|
+
(\`sent + scheduled\`) for the scheduler-forward target window, Christian
|
|
1984
|
+
explicitly stops/statuses the run, or a concrete non-scheduler blocker appears.
|
|
1985
|
+
Do not call the goal complete or blocked only because the current state is
|
|
1986
|
+
\`awaiting_scheduler_after_ready_buffer\`; treat it as loaded, awaiting scheduler.
|
|
1985
1987
|
|
|
1986
1988
|
## Bootstrap
|
|
1987
1989
|
|
|
@@ -1997,8 +1999,8 @@ Desktop, then start a new thread.
|
|
|
1997
1999
|
## Execute Workflow
|
|
1998
2000
|
|
|
1999
2001
|
1. Call \`mcp__sellable__get_auth_status({})\`.
|
|
2000
|
-
2. Normalize invocation arguments with \`mcp__sellable__refill_sends({ yolo, senders, senderIds, senderNames, untilDate })\` when the host exposes typed MCP tools.
|
|
2001
|
-
3. Call \`mcp__sellable__get_refill_target_plan({ senders, senderIds, senderNames, untilDate })\` before any mutation. If the returned target is already complete, stop with the no-op receipt. If ready rows cover the target but scheduled rows do not, keep the run open in the read-only scheduler wait/re-read loop until projected coverage fills, a concrete non-scheduler blocker appears, or Christian explicitly stops/statuses the run.
|
|
2002
|
+
2. Normalize invocation arguments with \`mcp__sellable__refill_sends({ yolo, senders, senderIds, senderNames, targetDate, untilDate })\` when the host exposes typed MCP tools.
|
|
2003
|
+
3. Call \`mcp__sellable__get_refill_target_plan({ senders, senderIds, senderNames, targetDate, untilDate })\` before any mutation. For exact-date proof, \`mcp__sellable__get_scheduler_fill_capacity\` is read-only and tells how many cells the scheduler will try to place for a sender/action/date. If the returned target is already complete, stop with the no-op receipt. If ready rows cover the target but scheduled rows do not, keep the run open in the read-only scheduler wait/re-read loop until projected coverage fills, a concrete non-scheduler blocker appears, or Christian explicitly stops/statuses the run.
|
|
2002
2004
|
4. Load the canonical prompt via
|
|
2003
2005
|
\`mcp__sellable__get_subskill_prompt({ subskillName: "refill-sends" })\`,
|
|
2004
2006
|
then load \`mcp__sellable__get_subskill_prompt({ subskillName: "refill-sends-workflow" })\`.
|
package/lib/runtime-verify.mjs
CHANGED
|
@@ -31,6 +31,7 @@ export const REQUIRED_SELLABLE_MCP_TOOLS = [
|
|
|
31
31
|
"resolve_campaign_fill_route",
|
|
32
32
|
"get_campaign_refill_state",
|
|
33
33
|
"get_refill_target_plan",
|
|
34
|
+
"get_scheduler_fill_capacity",
|
|
34
35
|
"refill_sends",
|
|
35
36
|
"setup_evergreen_campaigns",
|
|
36
37
|
"start_campaign_message_preparation",
|
package/package.json
CHANGED
|
@@ -138,10 +138,10 @@ explicit user selection; it is never the default response to plain fill. When
|
|
|
138
138
|
choosing among active targets, use refill-state scheduled-count evidence to
|
|
139
139
|
continue the campaign that most recently had scheduler-owned sends for the
|
|
140
140
|
relevant sender set; do not treat every active campaign as a refill candidate.
|
|
141
|
-
In `--yolo` fill/refill mode, default to one best recent-send campaign and
|
|
142
|
-
|
|
143
|
-
ready-to-schedule rows from healthy sender daily capacity,
|
|
144
|
-
that bounded gap.
|
|
141
|
+
In `--yolo` fill/refill mode, default to one best recent-send campaign and the
|
|
142
|
+
scheduler-forward 48-hour target window: subtract future scheduler-owned
|
|
143
|
+
scheduled sends and ready-to-schedule rows from healthy sender daily capacity,
|
|
144
|
+
then prepare only that bounded gap.
|
|
145
145
|
When more leads are needed, the refill workflow must recommend same-campaign
|
|
146
146
|
source-ladder replenishment first; do not create warm-post-engager side
|
|
147
147
|
campaigns, on-demand campaigns, or unrelated campaigns. If same-source copy hits
|
|
@@ -5,6 +5,7 @@ visibility: public
|
|
|
5
5
|
allowed-tools:
|
|
6
6
|
- mcp__sellable__refill_sends
|
|
7
7
|
- mcp__sellable__get_refill_target_plan
|
|
8
|
+
- mcp__sellable__get_scheduler_fill_capacity
|
|
8
9
|
- mcp__sellable__refresh_paid_inmail_credits
|
|
9
10
|
- mcp__sellable__get_auth_status
|
|
10
11
|
- mcp__sellable__start_cli_login
|
|
@@ -70,17 +71,22 @@ Accepted invocation flags in the same user request:
|
|
|
70
71
|
- `--sender <name-or-id>`: scope to a specific sender; repeat for multiple
|
|
71
72
|
senders.
|
|
72
73
|
- `--until <YYYY-MM-DD>`: fill through that sender-local date, inclusive,
|
|
73
|
-
instead of the default
|
|
74
|
+
instead of the default scheduler-forward 48-hour target window.
|
|
75
|
+
- `--target-date <YYYY-MM-DD>`: fill only that sender-local date. This means
|
|
76
|
+
prepare rows for scheduler-fillable slots on that date, not every remaining
|
|
77
|
+
daily-limit slot and not an inclusive through-date.
|
|
74
78
|
- `senderIds: <id>, <id>` or `senderNames: <name>, <name>`: explicit selector
|
|
75
79
|
alternatives when the host preserves natural-language arguments better than
|
|
76
80
|
shell-style flags.
|
|
77
81
|
- `untilDate: YYYY-MM-DD`: explicit date selector alternative when the host
|
|
78
82
|
preserves natural-language arguments better than shell-style flags.
|
|
83
|
+
- `targetDate: YYYY-MM-DD`: exact-date selector alternative when the host
|
|
84
|
+
preserves natural-language arguments better than shell-style flags.
|
|
79
85
|
|
|
80
86
|
When the host can call typed MCP tools, start with:
|
|
81
87
|
|
|
82
88
|
```text
|
|
83
|
-
refill_sends({ yolo?: boolean, senders?: string[], senderIds?: string[], senderNames?: string[], horizonSendDays?: number, untilDate?: "YYYY-MM-DD" })
|
|
89
|
+
refill_sends({ yolo?: boolean, senders?: string[], senderIds?: string[], senderNames?: string[], horizonSendDays?: number, untilDate?: "YYYY-MM-DD", targetDate?: "YYYY-MM-DD" })
|
|
84
90
|
```
|
|
85
91
|
|
|
86
92
|
That command helper only normalizes arguments and returns the execution
|
|
@@ -99,10 +105,11 @@ resolver.
|
|
|
99
105
|
|
|
100
106
|
Goal-mode continuation: a skill cannot create or invoke `/goal` by itself. When
|
|
101
107
|
this command is already running inside an active Codex goal, keep that goal open
|
|
102
|
-
until every selected sender lane is
|
|
103
|
-
(`sent + scheduled`)
|
|
104
|
-
|
|
105
|
-
because the current state is
|
|
108
|
+
until every selected sender lane is filled by projected coverage
|
|
109
|
+
(`sent + scheduled`) for the scheduler-forward target window, Christian
|
|
110
|
+
explicitly stops/statuses the run, or a concrete non-scheduler blocker appears.
|
|
111
|
+
Do not call the goal complete or blocked only because the current state is
|
|
112
|
+
`awaiting_scheduler_after_ready_buffer`; treat it as loaded, awaiting scheduler.
|
|
106
113
|
|
|
107
114
|
Load the internal workflow prompt before taking any operational step:
|
|
108
115
|
|
|
@@ -136,6 +143,11 @@ two lanes to fill. If a stale target plan selects `send_dm` or
|
|
|
136
143
|
`send_inmail_open`, stop and re-plan with the current planner before mutation.
|
|
137
144
|
Short form: trust the target plan's inferred lane only when it is a
|
|
138
145
|
connection-invite or paid-InMail refill lane.
|
|
146
|
+
For exact-date requests, pass `targetDate` to `get_refill_target_plan`. If you
|
|
147
|
+
need raw proof, call the read-only `get_scheduler_fill_capacity` query for the
|
|
148
|
+
same sender/action/date; it tells the MCP how many cells the product scheduler
|
|
149
|
+
will try to place and does not import, approve, schedule, refresh credits, or
|
|
150
|
+
mutate.
|
|
139
151
|
If the target plan is complete by projected coverage, report that the selected
|
|
140
152
|
target is already filled and no-op without asking for approval. If the ready
|
|
141
153
|
buffer covers the projected gap but scheduled coverage is still short, keep the
|
|
@@ -210,32 +222,35 @@ return concrete continuation options with campaign names, exact ids, which optio
|
|
|
210
222
|
is already covered by the current packet, and which option needs a new approval
|
|
211
223
|
packet.
|
|
212
224
|
|
|
213
|
-
For `--yolo` fill/schedule requests, completion means projected
|
|
214
|
-
|
|
215
|
-
Maintain a
|
|
216
|
-
gross capacity, actual sent cells, future
|
|
217
|
-
non-null `scheduledFor`, projected count,
|
|
218
|
-
projected gap, paid-InMail feasibility,
|
|
219
|
-
`stateRevision`, and the next MCP primitive that can
|
|
220
|
-
apply/prep/start result, wait for processing, reread
|
|
221
|
-
state, recompute the ledger, then keep applying safe
|
|
222
|
-
projected coverage fills the
|
|
223
|
-
proven.
|
|
225
|
+
For `--yolo` fill/schedule requests, completion means projected saturation
|
|
226
|
+
(`sent + scheduled`) for the scheduler-forward target window, not merely
|
|
227
|
+
prepared/approved/ready rows. Maintain a target-window saturation ledger per
|
|
228
|
+
selected sender: selected send days, gross capacity, actual sent cells, future
|
|
229
|
+
scheduler-owned scheduled cells with non-null `scheduledFor`, projected count,
|
|
230
|
+
ready-to-schedule buffer, remaining projected gap, paid-InMail feasibility,
|
|
231
|
+
`targetShapeRevision`, `stateRevision`, and the next MCP primitive that can
|
|
232
|
+
reduce the gap. After every apply/prep/start result, wait for processing, reread
|
|
233
|
+
the target plan/refill state, recompute the ledger, then keep applying safe
|
|
234
|
+
bounded actions until projected coverage fills the target window or a concrete
|
|
235
|
+
non-scheduler blocker is proven.
|
|
224
236
|
If ready rows cover the projected gap but the scheduler has not picked them up
|
|
225
|
-
yet, run the persistent read-only
|
|
226
|
-
goal, mark it complete, or mark it
|
|
227
|
-
|
|
228
|
-
run or the host cannot continue.
|
|
229
|
-
|
|
230
|
-
In `--yolo`, the default
|
|
231
|
-
`--until`/`untilDate
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
237
|
+
yet, report loaded, awaiting scheduler and run the persistent read-only
|
|
238
|
+
scheduler wait loop. Do not finish the refill goal, mark it complete, or mark it
|
|
239
|
+
blocked only because it is still `awaiting_scheduler_after_ready_buffer`; keep
|
|
240
|
+
waiting unless Christian stops the run or the host cannot continue.
|
|
241
|
+
|
|
242
|
+
In `--yolo`, the default fill target is the scheduler-forward 48-hour window
|
|
243
|
+
unless `--target-date`/`targetDate`, `--until`/`untilDate`, or an explicit
|
|
244
|
+
compatibility `horizonSendDays` is provided. If a target date is provided,
|
|
245
|
+
compute bounded gaps for only that sender-local date using scheduler-fillable
|
|
246
|
+
slots. If an until date is provided, compute bounded gaps through that
|
|
247
|
+
sender-local date inclusive, skipping no-send days and never extending beyond
|
|
248
|
+
that date without a new packet. For each target sender, compute the bounded gap
|
|
249
|
+
from that sender's healthy daily capacity, existing future scheduler-owned
|
|
250
|
+
scheduled sends, and rows already ready to schedule across active campaigns
|
|
251
|
+
enrolled with that sender. Then pick the best same-sender campaign to fill the
|
|
252
|
+
gap: prefer recent/future scheduler-owned sends for that sender, then strongest
|
|
253
|
+
recent result evidence, then source health. Do not stop
|
|
239
254
|
after filling only one sender when the request was sender-scoped. If a
|
|
240
255
|
same-source copy hits the campaign-table row cap, split the current source into
|
|
241
256
|
a bounded LinkedIn profile source list, confirm only that smaller list into the
|