@sellable/install 0.1.291 → 0.1.293

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.
@@ -1976,6 +1976,13 @@ 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
1977
  sender-local date instead of the default two send-day horizon.
1978
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 horizon-filled by projected coverage
1982
+ (\`sent + scheduled\`), Christian explicitly stops/statuses the run, or a
1983
+ concrete non-scheduler blocker appears. Do not call the goal complete or blocked
1984
+ only because the current state is \`awaiting_scheduler_after_ready_buffer\`.
1985
+
1979
1986
  ## Bootstrap
1980
1987
 
1981
1988
  MCP prompt and command access are required. Do not inspect repo files, run shell
@@ -1991,7 +1998,7 @@ Desktop, then start a new thread.
1991
1998
 
1992
1999
  1. Call \`mcp__sellable__get_auth_status({})\`.
1993
2000
  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.
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.
1995
2002
  4. Load the canonical prompt via
1996
2003
  \`mcp__sellable__get_subskill_prompt({ subskillName: "refill-sends" })\`,
1997
2004
  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.291",
3
+ "version": "0.1.293",
4
4
  "type": "module",
5
5
  "description": "One-command installer for Sellable MCP in Claude Code and Codex",
6
6
  "bin": {
@@ -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__refresh_paid_inmail_credits
8
9
  - mcp__sellable__get_auth_status
9
10
  - mcp__sellable__start_cli_login
10
11
  - mcp__sellable__wait_for_cli_login
@@ -96,6 +97,13 @@ senders" as sender-scoped requests. The target set is senders enrolled in active
96
97
  campaign-backed sequence campaigns, not the first active campaign returned by a
97
98
  resolver.
98
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 horizon-filled by projected coverage
103
+ (`sent + scheduled`), Christian explicitly stops/statuses the run, or a concrete
104
+ non-scheduler blocker appears. Do not call the goal complete or blocked only
105
+ because the current state is `awaiting_scheduler_after_ready_buffer`.
106
+
99
107
  Load the internal workflow prompt before taking any operational step:
100
108
 
101
109
  ```text
@@ -116,16 +124,34 @@ eligible senders, selected sender-local days, gross target, actual sent
116
124
  coverage, scheduler-owned scheduled coverage across active enrolled campaigns,
117
125
  projected coverage (`sent + scheduled`), inferred per-sender send lane/action
118
126
  selections, ready buffer, remaining projected gap, paid-InMail credit/threshold
119
- feasibility, `targetShapeRevision`, and `stateRevision`. When `actionTypes` are
120
- omitted, trust the target plan's inferred lane rather than asking whether to
121
- fill connections, DMs, or InMails. If the target plan is complete by projected
122
- coverage, report that the selected target is already filled and no-op without
123
- asking for approval. If the ready buffer covers the projected gap but scheduled
124
- coverage is still short, run only a bounded read-only scheduler settle/reread
125
- loop and report `awaiting_scheduler_after_ready_buffer` if it does not settle.
126
- If paid InMail is below threshold, stale, or missing credit facts, report the
127
- exact campaign/table/column threshold action or connection fallback; `--yolo`
128
- does not lower paid-InMail thresholds or create campaigns.
127
+ feasibility, `targetShapeRevision`, and `stateRevision`. Refill target lanes
128
+ are only connection invites (`send_invite`) or paid InMails
129
+ (`send_inmail_closed`), chosen per sender from the most recent current
130
+ dashboard-active campaign-backed send evidence. DMs (`send_dm`) and
131
+ open-profile InMails (`send_inmail_open`) may exist in sequences, but they are
132
+ not refill horizon target capacity and must not be counted as refill sent,
133
+ scheduled, or ready coverage. When `actionTypes` are omitted, trust the target
134
+ plan's inferred connection-or-paid-InMail lane rather than asking which of those
135
+ two lanes to fill. If a stale target plan selects `send_dm` or
136
+ `send_inmail_open`, stop and re-plan with the current planner before mutation.
137
+ Short form: trust the target plan's inferred lane only when it is a
138
+ connection-invite or paid-InMail refill lane.
139
+ If the target plan is complete by projected coverage, report that the selected
140
+ target is already filled and no-op without asking for approval. If the ready
141
+ buffer covers the projected gap but scheduled coverage is still short, keep the
142
+ run open in a persistent read-only scheduler wait loop. Poll
143
+ `get_refill_target_plan` every 60-120 seconds, or on the host's next continuation
144
+ interval, until projected coverage fills the target, a concrete non-scheduler
145
+ blocker appears, or Christian explicitly asks to stop or only receive a status
146
+ report. Treat `awaiting_scheduler_after_ready_buffer` as an in-progress wait
147
+ state, not a close-out condition.
148
+ If paid InMail credit facts are stale or missing and the target plan returns a
149
+ `refresh_paid_inmail_credits` action candidate, include the exact sender id,
150
+ campaign/table/column proof, expected sender-credit-cache writes, and rerun plan
151
+ step in the bounded packet. After `refresh_paid_inmail_credits`, rerun
152
+ `get_refill_target_plan` before any prep/import/approval/start action. If paid
153
+ InMail is below threshold after a fresh credit read, report the exact
154
+ campaign/table/column threshold action or connection fallback; `--yolo` does not lower paid-InMail thresholds or create campaigns.
129
155
 
130
156
  If the plain route's managed waterfall targets are stale, for example skipped
131
157
  targets show archived/completed shared slots or the returned targets do not cover
@@ -135,23 +161,21 @@ campaigns are start-eligible refill candidates; read refill state before decidin
135
161
  whether to prep, approve, start, or skip. Do not treat them as archived inventory.
136
162
 
137
163
  For interactive Codex or Claude Code sessions, that approval must use the
138
- host-native structured question gate, but the full approval packet must render
139
- in normal chat first:
164
+ host-native structured question gate, not plain chat:
140
165
 
141
166
  - Codex: use `request_user_input`.
142
167
  - Claude Code: use `AskUserQuestion`.
143
168
 
144
- Render the operator output packet in normal chat immediately before opening the
145
- structured question. Use Markdown so the packet is readable: workspace, sender
169
+ The approval question must present the final refill step with exactly two
170
+ choices: `Accept` and `Decline`. Render the full operator output packet in
171
+ normal chat immediately before opening the structured approval question so it
172
+ can be displayed as Markdown. The chat packet must include workspace, sender
146
173
  scope, a campaign-by-campaign table with campaign name, sender names, action,
147
- target count/cap, source/list, and blocker/skip reason, then exact ids, expected
148
- side effects, forbidden actions, and the stop condition. Then open the
149
- structured approval question with exactly two choices: `Accept` and `Decline`.
150
- Keep that question compact, for example "Approve the refill packet rendered
151
- above?" Do not paste the full packet into the structured question panel. Treat
152
- `Accept` as permission for only the exact packet rendered immediately above,
153
- including target, caps, mode, and side effects. Treat `Decline` as a hard stop
154
- with no mutation.
174
+ target count/cap, source/list, and blocker/skip reason, then exact ids,
175
+ expected side effects, forbidden actions, and the stop condition. The structured
176
+ question body must be compact and refer back to the posted packet instead of
177
+ duplicating it. Treat `Accept` as permission for only the rendered target, caps,
178
+ mode, and side effects. Treat `Decline` as a hard stop with no mutation.
155
179
 
156
180
  If Christian includes `--yolo` in the same refill request, treat that flag as
157
181
  auto-accept for the rendered bounded refill packet after the required fresh state
@@ -169,7 +193,8 @@ approved eligible sequence actions, so include that expected side effect in the
169
193
  packet. It does not authorize starting unrelated, archived, completed, draft, or
170
194
  direct campaigns, separate launch/send actions, archive or delete cleanup,
171
195
  direct scheduler writes, sender reassignment, paid-InMail threshold changes,
172
- connection campaign creation, or campaigns outside those
196
+ connection campaign creation, paid-InMail credit refreshes outside the exact
197
+ rendered sender packet, or campaigns outside those
173
198
  selected for the eligible sender set. Stop and re-plan if the route, sender set,
174
199
  ids, caps, blockers, paid-InMail feasibility, action class, or side-effect class
175
200
  drift before mutation. Sent/scheduled counts increasing toward the approved
@@ -194,11 +219,13 @@ projected gap, paid-InMail feasibility, `targetShapeRevision`,
194
219
  `stateRevision`, and the next MCP primitive that can reduce the gap. After every
195
220
  apply/prep/start result, wait for processing, reread the target plan/refill
196
221
  state, recompute the ledger, then keep applying safe bounded actions until
197
- projected coverage fills the horizon or a concrete blocker/timeout is proven.
222
+ projected coverage fills the horizon or a concrete non-scheduler blocker is
223
+ proven.
198
224
  If ready rows cover the projected gap but the scheduler has not picked them up
199
- yet, run a bounded scheduler settle loop and report
200
- `awaiting_scheduler_after_ready_buffer` as not complete when the timeout is
201
- reached.
225
+ yet, run the persistent read-only scheduler wait loop. Do not finish the refill
226
+ goal, mark it complete, or mark it blocked only because it is still
227
+ `awaiting_scheduler_after_ready_buffer`; keep waiting unless Christian stops the
228
+ run or the host cannot continue.
202
229
 
203
230
  In `--yolo`, the default two-day fill horizon is two send days unless
204
231
  `--until`/`untilDate` is provided. If an until date is provided, compute bounded