@sellable/install 0.1.306 → 0.1.308

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.
@@ -1122,6 +1122,7 @@ const REFILL_SENDS_ALLOWED_TOOLS = [
1122
1122
  "mcp__sellable__get_subskill_asset",
1123
1123
  "mcp__sellable__search_subskill_prompts",
1124
1124
  "mcp__sellable__get_scheduler_fill_capacity",
1125
+ "mcp__sellable__run_scheduler_sweep",
1125
1126
  "mcp__sellable__refresh_paid_inmail_credits",
1126
1127
  "mcp__sellable__list_senders",
1127
1128
  "mcp__sellable__get_sender_routing",
@@ -2088,7 +2089,7 @@ Desktop, then start a new thread.
2088
2089
  2. Resolve the target workspace id from the user request, automation config, or install-time workspace mapping. Pass \`workspaceId\` on every scheduled or \`--yolo\` refill tool call. Missing \`workspaceId\` in scheduled or \`--yolo\` mode is a blocker; return \`WORKSPACE_REQUIRED\` instead of running against shared config state. Do not solve automation workspace uncertainty by changing the shared active workspace.
2089
2090
  3. Normalize invocation arguments with \`mcp__sellable__refill_sends({ yolo, executionMode, requireWorkspace, workspaceId, senders, senderIds, senderNames, targetDate, untilDate })\` when the host exposes typed MCP tools. Type shape: \`refill_sends({ yolo?: boolean, executionMode?: "manual" | "scheduled" | "yolo", requireWorkspace?: boolean, workspaceId?: string, senders?: string[], senderIds?: string[], senderNames?: string[], horizonSendDays?: number, untilDate?: "YYYY-MM-DD", targetDate?: "YYYY-MM-DD" })\`.
2090
2091
  4. Clover scheduled automation example: \`mcp__sellable__refill_sends({ yolo:false, executionMode:"scheduled", requireWorkspace:true, workspaceId:"cmlq1v8ms0000jx04ang4hi7e" })\`, then \`mcp__sellable__get_refill_target_plan({ intent:"plain", approvalMode:"mark_ready", workspaceId:"cmlq1v8ms0000jx04ang4hi7e" })\`.
2091
- 5. Call \`mcp__sellable__get_refill_target_plan({ workspaceId, senders, senderIds, senderNames, targetDate, untilDate })\` before any mutation. Render \`target.eligibleSenderLedger\`, \`target.senderRefillPlans[]\`, and \`target.globalActionQueue\` as the structured packet. Preserve the labels \`Need to prepare\`, \`Goal\`, \`Already sent\`, \`Scheduled\`, \`Ready and waiting to be scheduled\`, and \`Still need\`. In \`--yolo\`, \`mcp__sellable__refill_sends\` maintains a run-local \`refreshedPaidInmailSenderIds\` set, refreshes stale/missing paid InMail facts for each selected paid-InMail sender at most once, reruns \`get_refill_target_plan\`, and returns \`autoPaidInmailRefresh\` plus the post-refresh \`targetPlan\` before choosing the next prep/source-copy/bounded-approval/read-only wait action. Refill ladder: approve generated rows only through the explicit bounded approval gate, process existing same-campaign unenriched/unprepared rows before source work, then same-source copy, then provider-aligned source-more. New source/provider switches change reply-rate baseline and are manual alternates, not \`--yolo\` side effects. Do not present paid-credit refresh as the next operator action after \`refill_sends\` returns that post-refresh plan. 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.
2092
+ 5. Call \`mcp__sellable__get_refill_target_plan({ workspaceId, senders, senderIds, senderNames, targetDate, untilDate })\` before any mutation. Render \`target.eligibleSenderLedger\`, \`target.senderRefillPlans[]\`, and \`target.globalActionQueue\` as the structured packet. Preserve the labels \`Need to prepare\`, \`Goal\`, \`Already sent\`, \`Scheduled\`, \`Ready and waiting to be scheduled\`, and \`Still need\`. In \`--yolo\`, \`mcp__sellable__refill_sends\` maintains a run-local \`refreshedPaidInmailSenderIds\` set, refreshes stale/missing paid InMail facts for each selected paid-InMail sender at most once, reruns \`get_refill_target_plan\`, and returns \`autoPaidInmailRefresh\` plus the post-refresh \`targetPlan\` before choosing the next prep/source-copy/bounded-approval/read-only wait action. Refill ladder: approve generated rows only through the explicit bounded approval gate, process existing same-campaign unenriched/unprepared rows before source work, then same-source copy, then provider-aligned source-more. New source/provider switches change reply-rate baseline and are manual alternates, not \`--yolo\` side effects. Do not present paid-credit refresh as the next operator action after \`refill_sends\` returns that post-refresh plan. 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. When ready rows cover the target but scheduled rows do not, \`mcp__sellable__run_scheduler_sweep({ workspaceId, action:"run" })\` may request immediate placement within existing gates and returns a receipt, but it never sends or bypasses limits. 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.
2092
2093
  6. Load the canonical prompt and deterministic flow asset via
2093
2094
  \`mcp__sellable__get_subskill_prompt({ subskillName: "refill-sends" })\`,
2094
2095
  then load \`mcp__sellable__get_subskill_prompt({ subskillName: "refill-sends-workflow" })\`,
@@ -33,6 +33,7 @@ export const REQUIRED_SELLABLE_MCP_TOOLS = [
33
33
  "get_refill_target_plan",
34
34
  "get_scheduler_fill_capacity",
35
35
  "refresh_paid_inmail_credits",
36
+ "run_scheduler_sweep",
36
37
  "refill_sends",
37
38
  "setup_evergreen_campaigns",
38
39
  "start_campaign_message_preparation",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sellable/install",
3
- "version": "0.1.306",
3
+ "version": "0.1.308",
4
4
  "type": "module",
5
5
  "description": "One-command installer for Sellable MCP in Claude Code, Codex, and Hermes",
6
6
  "bin": {
@@ -128,6 +128,17 @@ Reinvoke with that handle. The approximately five minute scheduler budget is at
128
128
  the run level, not one tool call. A window-closed or loaded-awaiting scheduler
129
129
  report must include remaining-ready count, exact expected pickup time, and the
130
130
  resume handle; never treat bare "awaiting scheduler" copy as a final answer.
131
+ Scheduler-run receipt interpretation still applies to terminal progress:
132
+ `cellsConsidered is allocation-attempt count`, not total ready supply, while
133
+ `readyCellsFound` is ready inventory found before prefilters. Inspect
134
+ `campaignScopeSummary` before assuming the selected refill campaign/table was
135
+ included; if absent, do not infer that target was ready-but-blocked. Interpret
136
+ `prefiltered`, `skipped`, and `deferred` separately. For ready closed-InMail
137
+ cells with stale paid-credit reasons, route to
138
+ `refresh_paid_inmail_credits_then_rerun` once, then rerun/status.
139
+ `wait_for_capacity_or_window` means report loaded/capped/waiting and do not
140
+ source or prep more rows; `no_ready_cells_continue_refill_prep` means return to
141
+ the refill/prep ladder. Do not treat `cellsScheduled:0` alone as failure.
131
142
 
132
143
  After the first prep batch, read the conversion-verdict journal line. It is
133
144
  rendered from packet facts: `supplyCensus`, `censusReason`, and
@@ -6,6 +6,7 @@ allowed-tools:
6
6
  - mcp__sellable__refill_sends
7
7
  - mcp__sellable__get_refill_target_plan
8
8
  - mcp__sellable__get_scheduler_fill_capacity
9
+ - mcp__sellable__run_scheduler_sweep
9
10
  - mcp__sellable__refresh_paid_inmail_credits
10
11
  - mcp__sellable__get_subskill_asset
11
12
  - mcp__sellable__get_auth_status
@@ -114,10 +115,11 @@ or install-time workspace mapping. Pass `workspaceId` on every scheduled or
114
115
  `--yolo` refill tool call, including setup/read calls such as
115
116
  `refill_sends`, `get_refill_target_plan`, `list_senders`,
116
117
  `get_sender_routing`, `resolve_campaign_fill_route`,
117
- `get_campaign_refill_state`, `get_scheduler_fill_capacity`, and any later
118
- refill mutation covered by the packet. Missing `workspaceId` in scheduled or
119
- `--yolo` mode is a blocker; stop with `WORKSPACE_REQUIRED` instead of running
120
- against an implicit or guessed workspace.
118
+ `get_campaign_refill_state`, `get_scheduler_fill_capacity`,
119
+ `run_scheduler_sweep`, and any later refill mutation covered by the packet.
120
+ Missing `workspaceId` in scheduled or `--yolo` mode is a blocker; stop with
121
+ `WORKSPACE_REQUIRED` instead of running against an implicit or guessed
122
+ workspace.
121
123
 
122
124
  Do not solve scheduled or `--yolo` workspace uncertainty by changing the shared
123
125
  active workspace. Manual interactive workspace switching remains a separate
@@ -269,6 +271,23 @@ need raw proof, call the read-only `get_scheduler_fill_capacity` query for the
269
271
  same sender/action/date; it tells the MCP how many cells the product scheduler
270
272
  will try to place and does not import, approve, schedule, refresh credits, or
271
273
  mutate.
274
+ When the refill loop has ready rows and needs scheduler pickup now, use
275
+ `run_scheduler_sweep` with the same explicit `workspaceId`; it can place cells
276
+ within existing scheduler gates and returns the receipt, but it never sends or
277
+ bypasses limits.
278
+ Scheduler-run receipt interpretation: `cellsConsidered is allocation-attempt
279
+ count`, not total ready supply, while `readyCellsFound` is ready inventory found
280
+ before prefilters. Inspect `campaignScopeSummary` before assuming the selected
281
+ refill campaign/table was included; if absent, do not infer that target was
282
+ ready-but-blocked. Interpret `prefiltered` as ready cells removed before
283
+ allocation, `skipped` as considered cells blocked by scheduler gates, and
284
+ `deferred` as considered cells waiting on windows/capacity/cooldown. For ready
285
+ closed-InMail cells with stale paid-credit prefilter/defer reasons, refresh
286
+ paid-InMail credits once through existing tools, then rerun `run_scheduler_sweep`
287
+ or read `action:"status"`; `refresh_paid_inmail_credits_then_rerun` is that
288
+ path. `wait_for_capacity_or_window` means report loaded/capped/waiting and do
289
+ not source or prep more rows; `no_ready_cells_continue_refill_prep` means return
290
+ to the refill/prep ladder. Do not treat `cellsScheduled:0` alone as failure.
272
291
  If the target plan is complete by projected coverage, report that the selected
273
292
  target is already filled and no-op without asking for approval. If the ready
274
293
  buffer covers the projected gap, paid InMail credit facts are fresh for every