@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.
@@ -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 two send-day horizon.
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 only the read-only scheduler settle/re-read loop.
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sellable/install",
3
- "version": "0.1.292",
3
+ "version": "0.1.294",
4
4
  "type": "module",
5
5
  "description": "One-command installer for Sellable MCP in Claude Code and Codex",
6
6
  "bin": {
@@ -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 a
142
- two-send-day horizon: subtract future scheduler-owned scheduled sends and
143
- ready-to-schedule rows from healthy sender daily capacity, then prepare only
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 two send-day horizon.
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`. When `actionTypes` are
121
- omitted, trust the target plan's inferred lane rather than asking whether to
122
- fill connections, DMs, or InMails. If the target plan is complete by projected
123
- coverage, report that the selected target is already filled and no-op without
124
- asking for approval. If the ready buffer covers the projected gap but scheduled
125
- coverage is still short, run only a bounded read-only scheduler settle/reread
126
- loop and report `awaiting_scheduler_after_ready_buffer` if it does not settle.
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`. The question body must include the operator
151
- output packet: workspace, sender scope, a campaign-by-campaign table with
152
- campaign name, sender names, action, target count/cap, source/list, and
153
- blocker/skip reason, then exact ids, expected side effects, forbidden actions,
154
- and the stop condition. Treat `Accept` as permission for only the rendered
155
- target, caps, mode, and side effects. Treat `Decline` as a hard stop with no
156
- mutation.
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 horizon
192
- saturation (`sent + scheduled`), not merely prepared/approved/ready rows.
193
- Maintain a horizon saturation ledger per selected sender: selected send days,
194
- gross capacity, actual sent cells, future scheduler-owned scheduled cells with
195
- non-null `scheduledFor`, projected count, ready-to-schedule buffer, remaining
196
- projected gap, paid-InMail feasibility, `targetShapeRevision`,
197
- `stateRevision`, and the next MCP primitive that can reduce the gap. After every
198
- apply/prep/start result, wait for processing, reread the target plan/refill
199
- state, recompute the ledger, then keep applying safe bounded actions until
200
- projected coverage fills the horizon or a concrete blocker/timeout is proven.
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, run a bounded scheduler settle loop and report
203
- `awaiting_scheduler_after_ready_buffer` as not complete when the timeout is
204
- reached.
205
-
206
- In `--yolo`, the default two-day fill horizon is two send days unless
207
- `--until`/`untilDate` is provided. If an until date is provided, compute bounded
208
- gaps through that sender-local date inclusive, skipping no-send days and never
209
- extending beyond that date without a new packet. For each target sender, compute
210
- the bounded gap from that sender's healthy daily capacity, existing future
211
- scheduler-owned scheduled sends, and rows already ready to schedule across
212
- active campaigns enrolled with that sender. Then pick the best same-sender
213
- campaign to fill the gap: prefer recent/future scheduler-owned sends for that
214
- sender, then strongest recent result evidence, then source health. Do not stop
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