@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.
package/bin/sellable-install.mjs
CHANGED
|
@@ -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
|
|
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
|
@@ -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`.
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
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,
|
|
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
|
-
|
|
145
|
-
|
|
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,
|
|
148
|
-
side effects, forbidden actions, and the stop condition.
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
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,
|
|
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
|
|
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
|
|
200
|
-
|
|
201
|
-
|
|
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
|