@sellable/install 0.1.292 → 0.1.294
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
|
@@ -1974,7 +1974,15 @@ ${allowedToolsYaml(REFILL_SENDS_ALLOWED_TOOLS)}
|
|
|
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
1976
|
selectors. It also supports \`--until YYYY-MM-DD\` to fill through a specific
|
|
1977
|
-
sender-local date instead of the default
|
|
1977
|
+
sender-local date instead of the default scheduler-forward 48-hour target window.
|
|
1978
|
+
|
|
1979
|
+
Goal-mode continuation: a skill cannot create or invoke \`/goal\` by itself. If
|
|
1980
|
+
this command is already running inside an active Codex goal, keep that goal open
|
|
1981
|
+
until every selected sender lane is filled by projected coverage
|
|
1982
|
+
(\`sent + scheduled\`) for the scheduler-forward target window, Christian
|
|
1983
|
+
explicitly stops/statuses the run, or a concrete non-scheduler blocker appears.
|
|
1984
|
+
Do not call the goal complete or blocked only because the current state is
|
|
1985
|
+
\`awaiting_scheduler_after_ready_buffer\`; treat it as loaded, awaiting scheduler.
|
|
1978
1986
|
|
|
1979
1987
|
## Bootstrap
|
|
1980
1988
|
|
|
@@ -1991,7 +1999,7 @@ Desktop, then start a new thread.
|
|
|
1991
1999
|
|
|
1992
2000
|
1. Call \`mcp__sellable__get_auth_status({})\`.
|
|
1993
2001
|
2. Normalize invocation arguments with \`mcp__sellable__refill_sends({ yolo, senders, senderIds, senderNames, untilDate })\` when the host exposes typed MCP tools.
|
|
1994
|
-
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, run
|
|
2002
|
+
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.
|
|
1995
2003
|
4. Load the canonical prompt via
|
|
1996
2004
|
\`mcp__sellable__get_subskill_prompt({ subskillName: "refill-sends" })\`,
|
|
1997
2005
|
then load \`mcp__sellable__get_subskill_prompt({ subskillName: "refill-sends-workflow" })\`.
|
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
|
|
@@ -70,7 +70,7 @@ Accepted invocation flags in the same user request:
|
|
|
70
70
|
- `--sender <name-or-id>`: scope to a specific sender; repeat for multiple
|
|
71
71
|
senders.
|
|
72
72
|
- `--until <YYYY-MM-DD>`: fill through that sender-local date, inclusive,
|
|
73
|
-
instead of the default
|
|
73
|
+
instead of the default scheduler-forward 48-hour target window.
|
|
74
74
|
- `senderIds: <id>, <id>` or `senderNames: <name>, <name>`: explicit selector
|
|
75
75
|
alternatives when the host preserves natural-language arguments better than
|
|
76
76
|
shell-style flags.
|
|
@@ -97,6 +97,14 @@ senders" as sender-scoped requests. The target set is senders enrolled in active
|
|
|
97
97
|
campaign-backed sequence campaigns, not the first active campaign returned by a
|
|
98
98
|
resolver.
|
|
99
99
|
|
|
100
|
+
Goal-mode continuation: a skill cannot create or invoke `/goal` by itself. When
|
|
101
|
+
this command is already running inside an active Codex goal, keep that goal open
|
|
102
|
+
until every selected sender lane is filled by projected coverage
|
|
103
|
+
(`sent + scheduled`) for the scheduler-forward target window, Christian
|
|
104
|
+
explicitly stops/statuses the run, or a concrete non-scheduler blocker appears.
|
|
105
|
+
Do not call the goal complete or blocked only because the current state is
|
|
106
|
+
`awaiting_scheduler_after_ready_buffer`; treat it as loaded, awaiting scheduler.
|
|
107
|
+
|
|
100
108
|
Load the internal workflow prompt before taking any operational step:
|
|
101
109
|
|
|
102
110
|
```text
|
|
@@ -117,21 +125,34 @@ eligible senders, selected sender-local days, gross target, actual sent
|
|
|
117
125
|
coverage, scheduler-owned scheduled coverage across active enrolled campaigns,
|
|
118
126
|
projected coverage (`sent + scheduled`), inferred per-sender send lane/action
|
|
119
127
|
selections, ready buffer, remaining projected gap, paid-InMail credit/threshold
|
|
120
|
-
feasibility, `targetShapeRevision`, and `stateRevision`.
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
128
|
+
feasibility, `targetShapeRevision`, and `stateRevision`. Refill target lanes
|
|
129
|
+
are only connection invites (`send_invite`) or paid InMails
|
|
130
|
+
(`send_inmail_closed`), chosen per sender from the most recent current
|
|
131
|
+
dashboard-active campaign-backed send evidence. DMs (`send_dm`) and
|
|
132
|
+
open-profile InMails (`send_inmail_open`) may exist in sequences, but they are
|
|
133
|
+
not refill horizon target capacity and must not be counted as refill sent,
|
|
134
|
+
scheduled, or ready coverage. When `actionTypes` are omitted, trust the target
|
|
135
|
+
plan's inferred connection-or-paid-InMail lane rather than asking which of those
|
|
136
|
+
two lanes to fill. If a stale target plan selects `send_dm` or
|
|
137
|
+
`send_inmail_open`, stop and re-plan with the current planner before mutation.
|
|
138
|
+
Short form: trust the target plan's inferred lane only when it is a
|
|
139
|
+
connection-invite or paid-InMail refill lane.
|
|
140
|
+
If the target plan is complete by projected coverage, report that the selected
|
|
141
|
+
target is already filled and no-op without asking for approval. If the ready
|
|
142
|
+
buffer covers the projected gap but scheduled coverage is still short, keep the
|
|
143
|
+
run open in a persistent read-only scheduler wait loop. Poll
|
|
144
|
+
`get_refill_target_plan` every 60-120 seconds, or on the host's next continuation
|
|
145
|
+
interval, until projected coverage fills the target, a concrete non-scheduler
|
|
146
|
+
blocker appears, or Christian explicitly asks to stop or only receive a status
|
|
147
|
+
report. Treat `awaiting_scheduler_after_ready_buffer` as an in-progress wait
|
|
148
|
+
state, not a close-out condition.
|
|
127
149
|
If paid InMail credit facts are stale or missing and the target plan returns a
|
|
128
150
|
`refresh_paid_inmail_credits` action candidate, include the exact sender id,
|
|
129
151
|
campaign/table/column proof, expected sender-credit-cache writes, and rerun plan
|
|
130
152
|
step in the bounded packet. After `refresh_paid_inmail_credits`, rerun
|
|
131
153
|
`get_refill_target_plan` before any prep/import/approval/start action. If paid
|
|
132
154
|
InMail is below threshold after a fresh credit read, report the exact
|
|
133
|
-
campaign/table/column threshold action or connection fallback; `--yolo` does not
|
|
134
|
-
lower paid-InMail thresholds or create campaigns.
|
|
155
|
+
campaign/table/column threshold action or connection fallback; `--yolo` does not lower paid-InMail thresholds or create campaigns.
|
|
135
156
|
|
|
136
157
|
If the plain route's managed waterfall targets are stale, for example skipped
|
|
137
158
|
targets show archived/completed shared slots or the returned targets do not cover
|
|
@@ -147,13 +168,15 @@ host-native structured question gate, not plain chat:
|
|
|
147
168
|
- Claude Code: use `AskUserQuestion`.
|
|
148
169
|
|
|
149
170
|
The approval question must present the final refill step with exactly two
|
|
150
|
-
choices: `Accept` and `Decline`.
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
171
|
+
choices: `Accept` and `Decline`. Render the full operator output packet in
|
|
172
|
+
normal chat immediately before opening the structured approval question so it
|
|
173
|
+
can be displayed as Markdown. The chat packet must include workspace, sender
|
|
174
|
+
scope, a campaign-by-campaign table with campaign name, sender names, action,
|
|
175
|
+
target count/cap, source/list, and blocker/skip reason, then exact ids,
|
|
176
|
+
expected side effects, forbidden actions, and the stop condition. The structured
|
|
177
|
+
question body must be compact and refer back to the posted packet instead of
|
|
178
|
+
duplicating it. Treat `Accept` as permission for only the rendered target, caps,
|
|
179
|
+
mode, and side effects. Treat `Decline` as a hard stop with no mutation.
|
|
157
180
|
|
|
158
181
|
If Christian includes `--yolo` in the same refill request, treat that flag as
|
|
159
182
|
auto-accept for the rendered bounded refill packet after the required fresh state
|
|
@@ -188,30 +211,33 @@ return concrete continuation options with campaign names, exact ids, which optio
|
|
|
188
211
|
is already covered by the current packet, and which option needs a new approval
|
|
189
212
|
packet.
|
|
190
213
|
|
|
191
|
-
For `--yolo` fill/schedule requests, completion means projected
|
|
192
|
-
|
|
193
|
-
Maintain a
|
|
194
|
-
gross capacity, actual sent cells, future
|
|
195
|
-
non-null `scheduledFor`, projected count,
|
|
196
|
-
projected gap, paid-InMail feasibility,
|
|
197
|
-
`stateRevision`, and the next MCP primitive that can
|
|
198
|
-
apply/prep/start result, wait for processing, reread
|
|
199
|
-
state, recompute the ledger, then keep applying safe
|
|
200
|
-
projected coverage fills the
|
|
214
|
+
For `--yolo` fill/schedule requests, completion means projected saturation
|
|
215
|
+
(`sent + scheduled`) for the scheduler-forward target window, not merely
|
|
216
|
+
prepared/approved/ready rows. Maintain a target-window saturation ledger per
|
|
217
|
+
selected sender: selected send days, gross capacity, actual sent cells, future
|
|
218
|
+
scheduler-owned scheduled cells with non-null `scheduledFor`, projected count,
|
|
219
|
+
ready-to-schedule buffer, remaining projected gap, paid-InMail feasibility,
|
|
220
|
+
`targetShapeRevision`, `stateRevision`, and the next MCP primitive that can
|
|
221
|
+
reduce the gap. After every apply/prep/start result, wait for processing, reread
|
|
222
|
+
the target plan/refill state, recompute the ledger, then keep applying safe
|
|
223
|
+
bounded actions until projected coverage fills the target window or a concrete
|
|
224
|
+
non-scheduler blocker is proven.
|
|
201
225
|
If ready rows cover the projected gap but the scheduler has not picked them up
|
|
202
|
-
yet,
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
`--
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
226
|
+
yet, report loaded, awaiting scheduler and run the persistent read-only
|
|
227
|
+
scheduler wait loop. Do not finish the refill goal, mark it complete, or mark it
|
|
228
|
+
blocked only because it is still `awaiting_scheduler_after_ready_buffer`; keep
|
|
229
|
+
waiting unless Christian stops the run or the host cannot continue.
|
|
230
|
+
|
|
231
|
+
In `--yolo`, the default fill target is the scheduler-forward 48-hour window
|
|
232
|
+
unless `--until`/`untilDate` or an explicit compatibility `horizonSendDays` is
|
|
233
|
+
provided. If an until date is provided, compute bounded gaps through that
|
|
234
|
+
sender-local date inclusive, skipping no-send days and never extending beyond
|
|
235
|
+
that date without a new packet. For each target sender, compute the bounded gap
|
|
236
|
+
from that sender's healthy daily capacity, existing future scheduler-owned
|
|
237
|
+
scheduled sends, and rows already ready to schedule across active campaigns
|
|
238
|
+
enrolled with that sender. Then pick the best same-sender campaign to fill the
|
|
239
|
+
gap: prefer recent/future scheduler-owned sends for that sender, then strongest
|
|
240
|
+
recent result evidence, then source health. Do not stop
|
|
215
241
|
after filling only one sender when the request was sender-scoped. If a
|
|
216
242
|
same-source copy hits the campaign-table row cap, split the current source into
|
|
217
243
|
a bounded LinkedIn profile source list, confirm only that smaller list into the
|