@sellable/mcp 0.1.639 → 0.1.640
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.d.ts +8 -0
- package/dist/tools/refill-sends.js +22 -3
- package/package.json +1 -1
- package/skills/refill-sends/SKILL.md +8 -1
- package/skills/refill-sends-workflow/SKILL.md +11 -6
- package/skills/refill-sends-workflow/core/flow.v1.json +1 -0
- package/skills/research/config.json +9 -0
|
@@ -1510,6 +1510,7 @@ export declare function executeRefillSendsCommand(input?: RefillSendsCommandInpu
|
|
|
1510
1510
|
executionMode: "yolo";
|
|
1511
1511
|
requireWorkspace: boolean;
|
|
1512
1512
|
workspaceId: string;
|
|
1513
|
+
intent: RefillSendsIntent;
|
|
1513
1514
|
senderIds: string[];
|
|
1514
1515
|
};
|
|
1515
1516
|
stopCondition: string;
|
|
@@ -1627,6 +1628,7 @@ export declare function executeRefillSendsCommand(input?: RefillSendsCommandInpu
|
|
|
1627
1628
|
executionMode: "yolo";
|
|
1628
1629
|
requireWorkspace: boolean;
|
|
1629
1630
|
workspaceId: string;
|
|
1631
|
+
intent: RefillSendsIntent;
|
|
1630
1632
|
senderIds: string[];
|
|
1631
1633
|
};
|
|
1632
1634
|
stopCondition: string;
|
|
@@ -1775,6 +1777,7 @@ export declare function executeRefillSendsCommand(input?: RefillSendsCommandInpu
|
|
|
1775
1777
|
executionMode: "yolo";
|
|
1776
1778
|
requireWorkspace: boolean;
|
|
1777
1779
|
workspaceId: string;
|
|
1780
|
+
intent: RefillSendsIntent;
|
|
1778
1781
|
senderIds: string[];
|
|
1779
1782
|
};
|
|
1780
1783
|
stopCondition: string;
|
|
@@ -1927,6 +1930,7 @@ export declare function executeRefillSendsCommand(input?: RefillSendsCommandInpu
|
|
|
1927
1930
|
executionMode: "yolo";
|
|
1928
1931
|
requireWorkspace: boolean;
|
|
1929
1932
|
workspaceId: string;
|
|
1933
|
+
intent: RefillSendsIntent;
|
|
1930
1934
|
senderIds: string[];
|
|
1931
1935
|
};
|
|
1932
1936
|
stopCondition: string;
|
|
@@ -2079,6 +2083,7 @@ export declare function executeRefillSendsCommand(input?: RefillSendsCommandInpu
|
|
|
2079
2083
|
executionMode: "yolo";
|
|
2080
2084
|
requireWorkspace: boolean;
|
|
2081
2085
|
workspaceId: string;
|
|
2086
|
+
intent: RefillSendsIntent;
|
|
2082
2087
|
senderIds: string[];
|
|
2083
2088
|
};
|
|
2084
2089
|
stopCondition: string;
|
|
@@ -2229,6 +2234,7 @@ export declare function executeRefillSendsCommand(input?: RefillSendsCommandInpu
|
|
|
2229
2234
|
executionMode: "yolo";
|
|
2230
2235
|
requireWorkspace: boolean;
|
|
2231
2236
|
workspaceId: string;
|
|
2237
|
+
intent: RefillSendsIntent;
|
|
2232
2238
|
senderIds: string[];
|
|
2233
2239
|
};
|
|
2234
2240
|
stopCondition: string;
|
|
@@ -2382,6 +2388,7 @@ export declare function executeRefillSendsCommand(input?: RefillSendsCommandInpu
|
|
|
2382
2388
|
executionMode: "yolo";
|
|
2383
2389
|
requireWorkspace: boolean;
|
|
2384
2390
|
workspaceId: string;
|
|
2391
|
+
intent: RefillSendsIntent;
|
|
2385
2392
|
senderIds: string[];
|
|
2386
2393
|
};
|
|
2387
2394
|
stopCondition: string;
|
|
@@ -2537,6 +2544,7 @@ export declare function executeRefillSendsCommand(input?: RefillSendsCommandInpu
|
|
|
2537
2544
|
executionMode: "yolo";
|
|
2538
2545
|
requireWorkspace: boolean;
|
|
2539
2546
|
workspaceId: string;
|
|
2547
|
+
intent: RefillSendsIntent;
|
|
2540
2548
|
senderIds: string[];
|
|
2541
2549
|
};
|
|
2542
2550
|
stopCondition: string;
|
|
@@ -7,6 +7,18 @@ import { listSenders } from "./senders.js";
|
|
|
7
7
|
import { createWorkspaceContext, normalizeExplicitWorkspaceId, } from "./workspace-context.js";
|
|
8
8
|
const REFILL_SEND_ACTION_TYPES = ["send_invite", "send_inmail_closed"];
|
|
9
9
|
const REFILL_SEND_ACTION_TYPE_SET = new Set(REFILL_SEND_ACTION_TYPES);
|
|
10
|
+
const REFILL_SEND_INTENT_SET = new Set([
|
|
11
|
+
"plain",
|
|
12
|
+
"active",
|
|
13
|
+
"evergreen",
|
|
14
|
+
"auto",
|
|
15
|
+
]);
|
|
16
|
+
function targetConfigIntent(targetConfig) {
|
|
17
|
+
const intent = targetConfig?.laneScope.intent;
|
|
18
|
+
return typeof intent === "string" && REFILL_SEND_INTENT_SET.has(intent)
|
|
19
|
+
? intent
|
|
20
|
+
: undefined;
|
|
21
|
+
}
|
|
10
22
|
const DEFAULT_SCHEDULER_FORWARD_HOURS = 48;
|
|
11
23
|
const MCP_PAID_INMAIL_CREDITS_MAX_STALENESS_SECONDS = 4 * 60 * 60;
|
|
12
24
|
const YOLO_MAX_ACTIONS_PER_INVOCATION = 64;
|
|
@@ -252,7 +264,9 @@ function buildRefillSendsCommand(input) {
|
|
|
252
264
|
const horizonSendDays = targetDate || untilDate
|
|
253
265
|
? null
|
|
254
266
|
: normalizeHorizonSendDays(input.horizonSendDays);
|
|
255
|
-
const intent =
|
|
267
|
+
const intent = targetConfigIntent(input.targetConfig) ??
|
|
268
|
+
input.intent ??
|
|
269
|
+
(yolo ? "auto" : "plain");
|
|
256
270
|
const approvalMode = input.approvalMode ?? (yolo ? "approve" : "mark_ready");
|
|
257
271
|
const actionTypes = input.actionTypes;
|
|
258
272
|
const senderScope = hasSenderSelectors
|
|
@@ -442,7 +456,9 @@ function targetPlanInputFor(input = {}) {
|
|
|
442
456
|
: normalizeHorizonSendDays(input.horizonSendDays);
|
|
443
457
|
const approvalMode = input.approvalMode ?? (input.yolo === true ? "approve" : "mark_ready");
|
|
444
458
|
return {
|
|
445
|
-
intent:
|
|
459
|
+
intent: targetConfigIntent(input.targetConfig) ??
|
|
460
|
+
input.intent ??
|
|
461
|
+
(input.yolo === true ? "auto" : "plain"),
|
|
446
462
|
...(input.campaignId ? { campaignId: input.campaignId } : {}),
|
|
447
463
|
...(input.tableId ? { tableId: input.tableId } : {}),
|
|
448
464
|
...(senderIds.length > 0 ? { senderIds } : {}),
|
|
@@ -1600,7 +1616,7 @@ export async function executeRefillSendsCommand(input = {}) {
|
|
|
1600
1616
|
}
|
|
1601
1617
|
const result = await refillSendsV2Command({
|
|
1602
1618
|
workspaceId,
|
|
1603
|
-
intent: "auto",
|
|
1619
|
+
intent: targetConfigIntent(exactTargetConfig) ?? scopedInput.intent ?? "auto",
|
|
1604
1620
|
senderIds: exactTargetConfig?.senderScope.senderIds ??
|
|
1605
1621
|
normalizeStrings(scopedInput.senderIds),
|
|
1606
1622
|
actionTypes: exactTargetConfig
|
|
@@ -1658,6 +1674,9 @@ export async function executeRefillSendsCommand(input = {}) {
|
|
|
1658
1674
|
executionMode: "yolo",
|
|
1659
1675
|
requireWorkspace: true,
|
|
1660
1676
|
workspaceId,
|
|
1677
|
+
intent: targetConfigIntent(continuationTargetConfig) ??
|
|
1678
|
+
scopedInput.intent ??
|
|
1679
|
+
"auto",
|
|
1661
1680
|
senderIds: normalizeStrings(scopedInput.senderIds),
|
|
1662
1681
|
...(scopedInput.actionTypes
|
|
1663
1682
|
? { actionTypes: scopedInput.actionTypes }
|
package/package.json
CHANGED
|
@@ -112,6 +112,13 @@ workspace terminal with no continuation instead of opening another identical
|
|
|
112
112
|
fence. Do not ask the user to type `continue` and do not start a second run while
|
|
113
113
|
a fence is active.
|
|
114
114
|
|
|
115
|
+
Route intent must stay identical from the rendered packet through execution.
|
|
116
|
+
Workspace-wide `--yolo` defaults to `intent:"auto"`, so use `intent:"auto"`
|
|
117
|
+
for its opening `get_refill_target_plan`, packet rereads, and `refill_sends`
|
|
118
|
+
call. Never render a `plain` planner packet and then execute an `auto` yolo
|
|
119
|
+
coordinator. If the operator explicitly supplies another supported intent,
|
|
120
|
+
preserve that exact intent on every planner, coordinator, and continuation call.
|
|
121
|
+
|
|
115
122
|
`targetConfig` and the server-issued `runHandle` are separate values and must
|
|
116
123
|
survive each continuation unchanged except for a server-issued takeover fence.
|
|
117
124
|
Only a literal `messageTemplateRevision` with `source:"user_approved"`, the
|
|
@@ -238,7 +245,7 @@ Examples:
|
|
|
238
245
|
|
|
239
246
|
```text
|
|
240
247
|
refill_sends({ yolo:true, executionMode:"yolo", requireWorkspace:true, workspaceId:"cmlq1v8ms0000jx04ang4hi7e" })
|
|
241
|
-
get_refill_target_plan({ intent:"
|
|
248
|
+
get_refill_target_plan({ intent:"auto", approvalMode:"approve", workspaceId:"cmlq1v8ms0000jx04ang4hi7e" })
|
|
242
249
|
list_senders({ workspaceId:"cmlq1v8ms0000jx04ang4hi7e" })
|
|
243
250
|
```
|
|
244
251
|
|
|
@@ -359,11 +359,15 @@ allocation-attempt count`, not total ready supply, while `readyCellsFound`
|
|
|
359
359
|
post-refresh packet. If paid InMail is below threshold after the fresh credit read, report
|
|
360
360
|
the exact campaign/table/column threshold action or same-campaign
|
|
361
361
|
connection fallback; `--yolo` does not lower paid-InMail thresholds or create campaigns.
|
|
362
|
-
2. Call `resolve_campaign_fill_route`.
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
362
|
+
2. Call `resolve_campaign_fill_route`. For generic workspace-wide `--yolo`,
|
|
363
|
+
use `intent:"auto"` from the opening `get_refill_target_plan` through the
|
|
364
|
+
rendered packet, `refill_sends`, and every continuation. Never render a
|
|
365
|
+
`plain` packet and then execute an `auto` coordinator. Use `intent:"plain"`
|
|
366
|
+
for generic non-yolo fill/load language, `intent:"active"` only when the user
|
|
367
|
+
explicitly narrowed to active regular campaigns or when the plain route has
|
|
368
|
+
stale managed waterfall evidence, and `intent:"evergreen"` only when the
|
|
369
|
+
user explicitly asked for evergreen or horizon work. If the operator
|
|
370
|
+
explicitly supplies a supported intent, preserve it on every call. The resolver must refetch current
|
|
367
371
|
dashboard-active campaigns as well as managed waterfall state. If the plain
|
|
368
372
|
route returns managed waterfall targets but skipped targets include
|
|
369
373
|
archived/completed waterfall slots, or if the returned targets do not cover a
|
|
@@ -758,7 +762,8 @@ Short form: exactly two choices: `Accept` and `Decline`.
|
|
|
758
762
|
`--yolo` mode is explicit auto-accept. If Christian includes `--yolo` in the
|
|
759
763
|
same refill request, do not ask the `Accept` / `Decline` question. Instead:
|
|
760
764
|
|
|
761
|
-
1.
|
|
765
|
+
1. use the wrapper-resolved route intent for the opening planner and render the
|
|
766
|
+
same final approval packet from that exact intent;
|
|
762
767
|
2. reread `get_campaign_refill_state` and, when the packet includes paid-InMail
|
|
763
768
|
credit refreshes, verify the current `get_refill_target_plan` action
|
|
764
769
|
candidates still name the same sender ids, campaign ids, table ids, and
|
|
@@ -129,6 +129,7 @@
|
|
|
129
129
|
],
|
|
130
130
|
"executionRules": [
|
|
131
131
|
"Execute only target.globalActionQueue[0].",
|
|
132
|
+
"Keep route intent identical across the opening planner, rendered packet, refill_sends execution, and continuations. Workspace-wide --yolo defaults to auto; never render plain and execute auto.",
|
|
132
133
|
"Execute one action, then perform a full authoritative reread before selecting any next action.",
|
|
133
134
|
"When a bounded --yolo call returns status in_progress, immediately invoke its exact continuation.arguments. active_exact_run requires targetConfig plus runId/fence; next_exact_target requires the unchanged workspace envelope plus the next preflighted targetConfig and no stale fence. Never ask the user to continue or start a second run while a fence is active.",
|
|
134
135
|
"A campaign/table/actionKey change is allowed only when the fresh planner selects that campaign inside the original sender lane chain and the side-effect class stays inside the approved refill envelope."
|