@sellable/mcp 0.1.729 → 0.1.730
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/dist/tools/refill-sends.js +32 -0
- package/package.json +1 -1
|
@@ -1458,6 +1458,18 @@ async function selectWorkspaceExactTarget(input, workspacePlanOverride, options
|
|
|
1458
1458
|
selectedActionFamily === "continue_prospeo_source" ||
|
|
1459
1459
|
selectedActionFamily === "broaden_provider_search" ||
|
|
1460
1460
|
selectedActionFamily === "refresh_sender_post_engagers";
|
|
1461
|
+
// fix(112af-c): a prepare_messages edge suffers the same pooled-cascade
|
|
1462
|
+
// masking as sources/sweeps/waits — its exact scope can read scheduler-loaded
|
|
1463
|
+
// or complete via the shared ready buffer while the lane still holds genuine
|
|
1464
|
+
// never-run supply (sellable.dev 7-29: cmrcd4x4a send_invite prepare skipped
|
|
1465
|
+
// while 69 enrich + 1 generate never-run rows sat behind it). Unlike those
|
|
1466
|
+
// families a prepare is not unconditionally bindable — a genuinely-complete
|
|
1467
|
+
// prepare must stay deferred to avoid a re-prepare loop. So bind ONLY when the
|
|
1468
|
+
// LANE-SCOPED actionable census (per-sender existingRowFrontier stageCounts,
|
|
1469
|
+
// never the pooled coverage) proves a real frontier; an empty census keeps the
|
|
1470
|
+
// settled skip, and the bounded job consumes the frontier so the census drains.
|
|
1471
|
+
const isMaskedPrepareTarget = selectedActionFamily === "prepare_messages" &&
|
|
1472
|
+
exactPlanHasLaneScopedActionableFrontier(exactTargetPlan);
|
|
1461
1473
|
// fix(111f, OWNER DIRECTIVE — dispatch-first): a settled preflight read
|
|
1462
1474
|
// may only skip a target when its exact plan exposes NO unresolved
|
|
1463
1475
|
// coordinator action — any bindable head (source supply, sweeps,
|
|
@@ -1470,6 +1482,7 @@ async function selectWorkspaceExactTarget(input, workspacePlanOverride, options
|
|
|
1470
1482
|
const bypassSettledSkips = isSchedulerSweepTarget ||
|
|
1471
1483
|
isBackgroundWaitTarget ||
|
|
1472
1484
|
isSourceSupplyTarget ||
|
|
1485
|
+
isMaskedPrepareTarget ||
|
|
1473
1486
|
yoloPlanHasUnresolvedCoordinatorAction(exactTargetPlan);
|
|
1474
1487
|
if (!bypassSettledSkips && yoloPlanIsComplete(exactTargetPlan)) {
|
|
1475
1488
|
completedExactTargetCount += 1;
|
|
@@ -1786,6 +1799,25 @@ function classifyWorkspaceUnavailableTerminal(plan, contextNote) {
|
|
|
1786
1799
|
}
|
|
1787
1800
|
return { code: "workspace_exact_target_unavailable", note: contextNote };
|
|
1788
1801
|
}
|
|
1802
|
+
// fix(112af-c): a prepare_messages edge on a cascade can read scheduler-loaded
|
|
1803
|
+
// or complete at the pooled campaign scope (the shared ready buffer routed to
|
|
1804
|
+
// Open/paid InMail or the connection fallback covers the aggregate gap) while a
|
|
1805
|
+
// specific lane still holds genuine never-run supply the pooled coverage masks
|
|
1806
|
+
// (sellable.dev 7-29: cmrcd4x4a send_invite prepare skipped as "complete or
|
|
1807
|
+
// scheduler-loaded" while 69 enrich + 1 generate never-run rows sat behind it).
|
|
1808
|
+
// The lane-scoped signal is the per-sender existingRowFrontier stageCounts summed
|
|
1809
|
+
// by workspaceActionableSupplyCensus — NEVER the pooled readyBuffer/coverage. When
|
|
1810
|
+
// that census is non-empty the prepare edge is a masked-gap prepare and must bind
|
|
1811
|
+
// so the bounded job consumes the frontier; when the census is empty the edge is
|
|
1812
|
+
// genuinely settled and stays deferred (no re-prepare loop).
|
|
1813
|
+
function exactPlanHasLaneScopedActionableFrontier(plan) {
|
|
1814
|
+
const census = workspaceActionableSupplyCensus(plan);
|
|
1815
|
+
return (census.approvalFrontier > 0 ||
|
|
1816
|
+
census.generateFrontier > 0 ||
|
|
1817
|
+
census.enrichFrontier > 0 ||
|
|
1818
|
+
census.rubricFrontier > 0 ||
|
|
1819
|
+
census.frontierHasMoreRows);
|
|
1820
|
+
}
|
|
1789
1821
|
function yoloPlanIsComplete(plan) {
|
|
1790
1822
|
const coverage = yoloCoverage(plan);
|
|
1791
1823
|
return (coverage.status === "complete" ||
|