@sellable/mcp 0.1.511 → 0.1.512
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/refill-journal.d.ts +49 -0
- package/dist/refill-journal.js +134 -0
- package/dist/refill-local-state.d.ts +31 -0
- package/dist/refill-local-state.js +96 -0
- package/dist/server.js +8 -0
- package/dist/tools/evergreen-refill-plan.d.ts +49 -0
- package/dist/tools/evergreen-refill-plan.js +196 -0
- package/dist/tools/leads.d.ts +40 -0
- package/dist/tools/leads.js +86 -31
- package/dist/tools/prompts.d.ts +3 -3
- package/dist/tools/prompts.js +2 -0
- package/dist/tools/refill-sends-evergreen.d.ts +28 -0
- package/dist/tools/refill-sends-evergreen.js +47 -0
- package/dist/tools/registry.d.ts +32 -92
- package/dist/tools/registry.js +4 -0
- package/package.json +1 -1
- package/skills/refill-sends-evergreen/SKILL.md +84 -0
- package/skills/refill-sends-evergreen-workflow/SKILL.md +107 -0
- package/skills/refill-sends-evergreen-workflow/core/flow.v1.json +247 -0
package/dist/tools/registry.d.ts
CHANGED
|
@@ -236,7 +236,7 @@ export declare const allTools: ({
|
|
|
236
236
|
properties: {
|
|
237
237
|
subskillName: {
|
|
238
238
|
type: string;
|
|
239
|
-
enum: readonly ["building-gtm-tables", "content", "create-ab-test", "create-campaign", "create-campaign-brief", "create-campaign-v2", "create-campaign-v2-tail", "create-campaign-v2-validation", "create-evergreen-campaigns", "create-post", "create-rubric", "engage", "enrich-prospects", "fill-send-horizon", "find-leads", "foundation", "generate-messages", "interview", "load-voice", "refresh-sender-engagement", "refill-sends", "refill-sends-workflow", "research", "research-prospect", "research-sender", "weekly-campaign-summary", "workflow-sequences"];
|
|
239
|
+
enum: readonly ["building-gtm-tables", "content", "create-ab-test", "create-campaign", "create-campaign-brief", "create-campaign-v2", "create-campaign-v2-tail", "create-campaign-v2-validation", "create-evergreen-campaigns", "create-post", "create-rubric", "engage", "enrich-prospects", "fill-send-horizon", "find-leads", "foundation", "generate-messages", "interview", "load-voice", "refresh-sender-engagement", "refill-sends", "refill-sends-evergreen", "refill-sends-evergreen-workflow", "refill-sends-workflow", "research", "research-prospect", "research-sender", "weekly-campaign-summary", "workflow-sequences"];
|
|
240
240
|
description: string;
|
|
241
241
|
};
|
|
242
242
|
offset: {
|
|
@@ -271,7 +271,7 @@ export declare const allTools: ({
|
|
|
271
271
|
properties: {
|
|
272
272
|
subskillName: {
|
|
273
273
|
type: string;
|
|
274
|
-
enum: readonly ["building-gtm-tables", "content", "create-ab-test", "create-campaign", "create-campaign-brief", "create-campaign-v2", "create-campaign-v2-tail", "create-campaign-v2-validation", "create-evergreen-campaigns", "create-post", "create-rubric", "engage", "enrich-prospects", "fill-send-horizon", "find-leads", "foundation", "generate-messages", "interview", "load-voice", "refresh-sender-engagement", "refill-sends", "refill-sends-workflow", "research", "research-prospect", "research-sender", "weekly-campaign-summary", "workflow-sequences"];
|
|
274
|
+
enum: readonly ["building-gtm-tables", "content", "create-ab-test", "create-campaign", "create-campaign-brief", "create-campaign-v2", "create-campaign-v2-tail", "create-campaign-v2-validation", "create-evergreen-campaigns", "create-post", "create-rubric", "engage", "enrich-prospects", "fill-send-horizon", "find-leads", "foundation", "generate-messages", "interview", "load-voice", "refresh-sender-engagement", "refill-sends", "refill-sends-evergreen", "refill-sends-evergreen-workflow", "refill-sends-workflow", "research", "research-prospect", "research-sender", "weekly-campaign-summary", "workflow-sequences"];
|
|
275
275
|
description: string;
|
|
276
276
|
};
|
|
277
277
|
assetPath: {
|
|
@@ -474,39 +474,6 @@ export declare const allTools: ({
|
|
|
474
474
|
required: string[];
|
|
475
475
|
additionalProperties: boolean;
|
|
476
476
|
};
|
|
477
|
-
} | {
|
|
478
|
-
name: string;
|
|
479
|
-
description: string;
|
|
480
|
-
inputSchema: {
|
|
481
|
-
type: string;
|
|
482
|
-
properties: {
|
|
483
|
-
intent: {
|
|
484
|
-
type: string;
|
|
485
|
-
enum: string[];
|
|
486
|
-
description: string;
|
|
487
|
-
};
|
|
488
|
-
campaignId: {
|
|
489
|
-
type: string;
|
|
490
|
-
description: string;
|
|
491
|
-
};
|
|
492
|
-
tableId: {
|
|
493
|
-
type: string;
|
|
494
|
-
description: string;
|
|
495
|
-
};
|
|
496
|
-
limit: {
|
|
497
|
-
type: string;
|
|
498
|
-
minimum: number;
|
|
499
|
-
maximum: number;
|
|
500
|
-
description: string;
|
|
501
|
-
};
|
|
502
|
-
workspaceId: {
|
|
503
|
-
type: string;
|
|
504
|
-
description: string;
|
|
505
|
-
};
|
|
506
|
-
};
|
|
507
|
-
required: string[];
|
|
508
|
-
additionalProperties: boolean;
|
|
509
|
-
};
|
|
510
477
|
} | {
|
|
511
478
|
name: string;
|
|
512
479
|
description: string;
|
|
@@ -624,45 +591,6 @@ export declare const allTools: ({
|
|
|
624
591
|
inputSchema: {
|
|
625
592
|
type: string;
|
|
626
593
|
properties: {
|
|
627
|
-
capacityRequests: {
|
|
628
|
-
type: string;
|
|
629
|
-
minItems: number;
|
|
630
|
-
items: {
|
|
631
|
-
type: string;
|
|
632
|
-
properties: {
|
|
633
|
-
senderId: {
|
|
634
|
-
type: string;
|
|
635
|
-
description: string;
|
|
636
|
-
};
|
|
637
|
-
actionType: {
|
|
638
|
-
type: string;
|
|
639
|
-
enum: string[];
|
|
640
|
-
description: string;
|
|
641
|
-
};
|
|
642
|
-
cellId: {
|
|
643
|
-
type: string;
|
|
644
|
-
description: string;
|
|
645
|
-
};
|
|
646
|
-
columnId: {
|
|
647
|
-
type: string;
|
|
648
|
-
description: string;
|
|
649
|
-
};
|
|
650
|
-
};
|
|
651
|
-
required: string[];
|
|
652
|
-
additionalProperties: boolean;
|
|
653
|
-
};
|
|
654
|
-
description: string;
|
|
655
|
-
};
|
|
656
|
-
targetDate: {
|
|
657
|
-
type: string;
|
|
658
|
-
pattern: string;
|
|
659
|
-
description: string;
|
|
660
|
-
};
|
|
661
|
-
mode: {
|
|
662
|
-
type: string;
|
|
663
|
-
enum: string[];
|
|
664
|
-
description: string;
|
|
665
|
-
};
|
|
666
594
|
workspaceId: {
|
|
667
595
|
type: string;
|
|
668
596
|
description: string;
|
|
@@ -2381,24 +2309,6 @@ export declare const allTools: ({
|
|
|
2381
2309
|
};
|
|
2382
2310
|
required: string[];
|
|
2383
2311
|
};
|
|
2384
|
-
} | {
|
|
2385
|
-
name: string;
|
|
2386
|
-
description: string;
|
|
2387
|
-
inputSchema: {
|
|
2388
|
-
type: string;
|
|
2389
|
-
properties: {
|
|
2390
|
-
senderId: {
|
|
2391
|
-
type: string;
|
|
2392
|
-
description: string;
|
|
2393
|
-
};
|
|
2394
|
-
workspaceId: {
|
|
2395
|
-
type: string;
|
|
2396
|
-
description: string;
|
|
2397
|
-
};
|
|
2398
|
-
};
|
|
2399
|
-
required: string[];
|
|
2400
|
-
additionalProperties: boolean;
|
|
2401
|
-
};
|
|
2402
2312
|
} | {
|
|
2403
2313
|
name: string;
|
|
2404
2314
|
description: string;
|
|
@@ -3031,6 +2941,7 @@ export declare const allTools: ({
|
|
|
3031
2941
|
previewOnly?: undefined;
|
|
3032
2942
|
companySearchToken?: undefined;
|
|
3033
2943
|
selectedCompanyIds?: undefined;
|
|
2944
|
+
workspaceId?: undefined;
|
|
3034
2945
|
domainFilterId?: undefined;
|
|
3035
2946
|
type?: undefined;
|
|
3036
2947
|
profileUrl?: undefined;
|
|
@@ -3227,6 +3138,7 @@ export declare const allTools: ({
|
|
|
3227
3138
|
previewOnly?: undefined;
|
|
3228
3139
|
companySearchToken?: undefined;
|
|
3229
3140
|
selectedCompanyIds?: undefined;
|
|
3141
|
+
workspaceId?: undefined;
|
|
3230
3142
|
domainFilterId?: undefined;
|
|
3231
3143
|
type?: undefined;
|
|
3232
3144
|
profileUrl?: undefined;
|
|
@@ -3322,6 +3234,7 @@ export declare const allTools: ({
|
|
|
3322
3234
|
previewOnly?: undefined;
|
|
3323
3235
|
companySearchToken?: undefined;
|
|
3324
3236
|
selectedCompanyIds?: undefined;
|
|
3237
|
+
workspaceId?: undefined;
|
|
3325
3238
|
domainFilterId?: undefined;
|
|
3326
3239
|
type?: undefined;
|
|
3327
3240
|
profileUrl?: undefined;
|
|
@@ -3489,6 +3402,7 @@ export declare const allTools: ({
|
|
|
3489
3402
|
previewOnly?: undefined;
|
|
3490
3403
|
companySearchToken?: undefined;
|
|
3491
3404
|
selectedCompanyIds?: undefined;
|
|
3405
|
+
workspaceId?: undefined;
|
|
3492
3406
|
domainFilterId?: undefined;
|
|
3493
3407
|
type?: undefined;
|
|
3494
3408
|
profileUrl?: undefined;
|
|
@@ -3598,6 +3512,7 @@ export declare const allTools: ({
|
|
|
3598
3512
|
previewOnly?: undefined;
|
|
3599
3513
|
companySearchToken?: undefined;
|
|
3600
3514
|
selectedCompanyIds?: undefined;
|
|
3515
|
+
workspaceId?: undefined;
|
|
3601
3516
|
domainFilterId?: undefined;
|
|
3602
3517
|
type?: undefined;
|
|
3603
3518
|
profileUrl?: undefined;
|
|
@@ -3716,6 +3631,7 @@ export declare const allTools: ({
|
|
|
3716
3631
|
previewOnly?: undefined;
|
|
3717
3632
|
companySearchToken?: undefined;
|
|
3718
3633
|
selectedCompanyIds?: undefined;
|
|
3634
|
+
workspaceId?: undefined;
|
|
3719
3635
|
domainFilterId?: undefined;
|
|
3720
3636
|
type?: undefined;
|
|
3721
3637
|
profileUrl?: undefined;
|
|
@@ -3823,6 +3739,7 @@ export declare const allTools: ({
|
|
|
3823
3739
|
previewOnly?: undefined;
|
|
3824
3740
|
companySearchToken?: undefined;
|
|
3825
3741
|
selectedCompanyIds?: undefined;
|
|
3742
|
+
workspaceId?: undefined;
|
|
3826
3743
|
domainFilterId?: undefined;
|
|
3827
3744
|
type?: undefined;
|
|
3828
3745
|
profileUrl?: undefined;
|
|
@@ -3935,6 +3852,7 @@ export declare const allTools: ({
|
|
|
3935
3852
|
previewOnly?: undefined;
|
|
3936
3853
|
companySearchToken?: undefined;
|
|
3937
3854
|
selectedCompanyIds?: undefined;
|
|
3855
|
+
workspaceId?: undefined;
|
|
3938
3856
|
domainFilterId?: undefined;
|
|
3939
3857
|
type?: undefined;
|
|
3940
3858
|
profileUrl?: undefined;
|
|
@@ -4035,6 +3953,7 @@ export declare const allTools: ({
|
|
|
4035
3953
|
previewOnly?: undefined;
|
|
4036
3954
|
companySearchToken?: undefined;
|
|
4037
3955
|
selectedCompanyIds?: undefined;
|
|
3956
|
+
workspaceId?: undefined;
|
|
4038
3957
|
domainFilterId?: undefined;
|
|
4039
3958
|
type?: undefined;
|
|
4040
3959
|
profileUrl?: undefined;
|
|
@@ -4927,6 +4846,7 @@ export declare const allTools: ({
|
|
|
4927
4846
|
exclude?: undefined;
|
|
4928
4847
|
companySearchToken?: undefined;
|
|
4929
4848
|
selectedCompanyIds?: undefined;
|
|
4849
|
+
workspaceId?: undefined;
|
|
4930
4850
|
domainFilterId?: undefined;
|
|
4931
4851
|
type?: undefined;
|
|
4932
4852
|
profileUrl?: undefined;
|
|
@@ -5036,6 +4956,7 @@ export declare const allTools: ({
|
|
|
5036
4956
|
seedDomains?: undefined;
|
|
5037
4957
|
sort?: undefined;
|
|
5038
4958
|
previewOnly?: undefined;
|
|
4959
|
+
workspaceId?: undefined;
|
|
5039
4960
|
domainFilterId?: undefined;
|
|
5040
4961
|
type?: undefined;
|
|
5041
4962
|
profileUrl?: undefined;
|
|
@@ -6022,6 +5943,10 @@ export declare const allTools: ({
|
|
|
6022
5943
|
type: string;
|
|
6023
5944
|
description: string;
|
|
6024
5945
|
};
|
|
5946
|
+
workspaceId: {
|
|
5947
|
+
type: string;
|
|
5948
|
+
description: string;
|
|
5949
|
+
};
|
|
6025
5950
|
searchName: {
|
|
6026
5951
|
type: string;
|
|
6027
5952
|
description: string;
|
|
@@ -6246,6 +6171,7 @@ export declare const allTools: ({
|
|
|
6246
6171
|
previewOnly?: undefined;
|
|
6247
6172
|
companySearchToken?: undefined;
|
|
6248
6173
|
selectedCompanyIds?: undefined;
|
|
6174
|
+
workspaceId?: undefined;
|
|
6249
6175
|
domainFilterId?: undefined;
|
|
6250
6176
|
sourceLeadListId?: undefined;
|
|
6251
6177
|
targetLeadCount?: undefined;
|
|
@@ -6278,6 +6204,10 @@ export declare const allTools: ({
|
|
|
6278
6204
|
type: string;
|
|
6279
6205
|
description: string;
|
|
6280
6206
|
};
|
|
6207
|
+
workspaceId: {
|
|
6208
|
+
type: string;
|
|
6209
|
+
description: string;
|
|
6210
|
+
};
|
|
6281
6211
|
provider: {
|
|
6282
6212
|
type: string;
|
|
6283
6213
|
enum: string[];
|
|
@@ -6421,6 +6351,10 @@ export declare const allTools: ({
|
|
|
6421
6351
|
type: string;
|
|
6422
6352
|
description: string;
|
|
6423
6353
|
};
|
|
6354
|
+
workspaceId: {
|
|
6355
|
+
type: string;
|
|
6356
|
+
description: string;
|
|
6357
|
+
};
|
|
6424
6358
|
tableId: {
|
|
6425
6359
|
type: string;
|
|
6426
6360
|
description: string;
|
|
@@ -6519,6 +6453,10 @@ export declare const allTools: ({
|
|
|
6519
6453
|
type: string;
|
|
6520
6454
|
description: string;
|
|
6521
6455
|
};
|
|
6456
|
+
workspaceId: {
|
|
6457
|
+
type: string;
|
|
6458
|
+
description: string;
|
|
6459
|
+
};
|
|
6522
6460
|
sourceLeadListId: {
|
|
6523
6461
|
type: string;
|
|
6524
6462
|
description: string;
|
|
@@ -6751,6 +6689,7 @@ export declare const allTools: ({
|
|
|
6751
6689
|
previewOnly?: undefined;
|
|
6752
6690
|
companySearchToken?: undefined;
|
|
6753
6691
|
selectedCompanyIds?: undefined;
|
|
6692
|
+
workspaceId?: undefined;
|
|
6754
6693
|
domainFilterId?: undefined;
|
|
6755
6694
|
type?: undefined;
|
|
6756
6695
|
profileUrl?: undefined;
|
|
@@ -6848,6 +6787,7 @@ export declare const allTools: ({
|
|
|
6848
6787
|
previewOnly?: undefined;
|
|
6849
6788
|
companySearchToken?: undefined;
|
|
6850
6789
|
selectedCompanyIds?: undefined;
|
|
6790
|
+
workspaceId?: undefined;
|
|
6851
6791
|
domainFilterId?: undefined;
|
|
6852
6792
|
type?: undefined;
|
|
6853
6793
|
profileUrl?: undefined;
|
package/dist/tools/registry.js
CHANGED
|
@@ -33,6 +33,8 @@ import { onDemandToolDefinitions } from "./one-off.js";
|
|
|
33
33
|
import { processingToolDefinitions } from "./processing.js";
|
|
34
34
|
import { promptToolDefinitions } from "./prompts.js";
|
|
35
35
|
import { readinessToolDefinitions } from "./readiness.js";
|
|
36
|
+
import { evergreenRefillPlanToolDefinitions } from "./evergreen-refill-plan.js";
|
|
37
|
+
import { refillSendsEvergreenToolDefinitions } from "./refill-sends-evergreen.js";
|
|
36
38
|
import { refillTargetPlanToolDefinitions } from "./refill-target-plan.js";
|
|
37
39
|
import { refillSendsToolDefinitions } from "./refill-sends.js";
|
|
38
40
|
import { rowToolDefinitions } from "./rows.js";
|
|
@@ -52,9 +54,11 @@ export const allTools = [
|
|
|
52
54
|
...campaignAbTestToolDefinitions,
|
|
53
55
|
...campaignFillRoutingToolDefinitions,
|
|
54
56
|
...campaignRefillStateToolDefinitions,
|
|
57
|
+
...evergreenRefillPlanToolDefinitions,
|
|
55
58
|
...refillTargetPlanToolDefinitions,
|
|
56
59
|
...schedulerFillCapacityToolDefinitions,
|
|
57
60
|
...refillSendsToolDefinitions,
|
|
61
|
+
...refillSendsEvergreenToolDefinitions,
|
|
58
62
|
...setupEvergreenCampaignsToolDefinitions,
|
|
59
63
|
...campaignHorizonFillToolDefinitions,
|
|
60
64
|
...campaignMessagePreparationToolDefinitions,
|
package/package.json
CHANGED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: refill-sends-evergreen
|
|
3
|
+
description: Plan evergreen waterfall send refill work through the Phase 85 dry-run workflow.
|
|
4
|
+
visibility: public
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- mcp__sellable__refill_sends_evergreen
|
|
7
|
+
- mcp__sellable__get_evergreen_refill_plan
|
|
8
|
+
- mcp__sellable__get_subskill_prompt
|
|
9
|
+
- mcp__sellable__get_subskill_asset
|
|
10
|
+
- mcp__sellable__get_auth_status
|
|
11
|
+
- mcp__sellable__get_active_workspace
|
|
12
|
+
- mcp__sellable__list_workspaces
|
|
13
|
+
- mcp__sellable__get_workspace
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Refill Sends Evergreen
|
|
17
|
+
|
|
18
|
+
Use this public command wrapper for evergreen waterfall refill requests such as
|
|
19
|
+
"refill evergreen", "fill evergreen senders", "load evergreen lanes", or
|
|
20
|
+
"plan evergreen refill".
|
|
21
|
+
|
|
22
|
+
Host command names:
|
|
23
|
+
|
|
24
|
+
- Claude Code: `/sellable:refill-sends-evergreen`
|
|
25
|
+
- Codex: `$sellable:refill-sends-evergreen`
|
|
26
|
+
|
|
27
|
+
Phase 85 is read-only, dry-run, zero mutations. It plans the deterministic
|
|
28
|
+
waterfall-ladder refill packet and writes a local dry-run journal, but it does
|
|
29
|
+
not prepare messages, approve messages, start campaigns, schedule sends, send
|
|
30
|
+
messages, refresh paid InMail credit facts, create campaigns, or change source
|
|
31
|
+
configuration. Execution ships in the follow-up phase.
|
|
32
|
+
|
|
33
|
+
## Entry
|
|
34
|
+
|
|
35
|
+
Resolve the explicit `workspaceId` from the request, automation config, or
|
|
36
|
+
active workspace readback. Scheduled or autonomous usage must carry
|
|
37
|
+
`workspaceId` on every tool call. If the workspace is missing or ambiguous, stop
|
|
38
|
+
with `WORKSPACE_REQUIRED`; do not switch the shared active workspace.
|
|
39
|
+
|
|
40
|
+
Start with the command contract:
|
|
41
|
+
|
|
42
|
+
```text
|
|
43
|
+
refill_sends_evergreen({ workspaceId })
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Then load the internal workflow prompt and flow asset:
|
|
47
|
+
|
|
48
|
+
```text
|
|
49
|
+
get_subskill_prompt({ subskillName: "refill-sends-evergreen-workflow" })
|
|
50
|
+
get_subskill_asset({ subskillName: "refill-sends-evergreen-workflow", assetPath: "core/flow.v1.json" })
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Continue both loads until `hasMore:false`; parse the flow JSON and verify
|
|
54
|
+
`workflow:"refill-sends-evergreen-workflow"` with a `v1` version before the
|
|
55
|
+
planner call.
|
|
56
|
+
|
|
57
|
+
Call the dry-run planner with the explicit workspace id:
|
|
58
|
+
|
|
59
|
+
```text
|
|
60
|
+
get_evergreen_refill_plan({ workspaceId, senderIds?, runState?, journal?, journalNote? })
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Use `senderIds` only when the user scoped the request to exact senders. Use
|
|
64
|
+
`runState` only for an explicit what-if dry run; otherwise let the MCP read
|
|
65
|
+
local lane memory hints. Leave `journal` enabled unless the user specifically
|
|
66
|
+
asked for no local journal.
|
|
67
|
+
|
|
68
|
+
## Report
|
|
69
|
+
|
|
70
|
+
Review the returned packet before giving a recommendation:
|
|
71
|
+
|
|
72
|
+
- `planRevision` starts with `pr1:`.
|
|
73
|
+
- `stateRevision` identifies the current readback.
|
|
74
|
+
- `packet` is the operator-facing facts receipt.
|
|
75
|
+
- `plans[]` contains per-sender lane decisions and itinerary details.
|
|
76
|
+
- `globalActionQueue[]` is a dry-run sequence only in Phase 85.
|
|
77
|
+
- `evergreen.enumeratedRungs` and each action's `evergreenRung` map to the
|
|
78
|
+
locked ladder from the workflow asset.
|
|
79
|
+
- `journalPath` points to the dry-run markdown journal written by the MCP.
|
|
80
|
+
- `sideEffects` must be all false.
|
|
81
|
+
|
|
82
|
+
Report campaign names and sender names first, ids second. Include the chosen
|
|
83
|
+
rung, the itinerary, the plan revision, the journal path, and any blockers or
|
|
84
|
+
warnings. Stop after the report; do not execute the action queue in Phase 85.
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: refill-sends-evergreen-workflow
|
|
3
|
+
description: Internal read-only workflow for evergreen waterfall refill dry-run planning.
|
|
4
|
+
visibility: internal
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- mcp__sellable__refill_sends_evergreen
|
|
7
|
+
- mcp__sellable__get_evergreen_refill_plan
|
|
8
|
+
- mcp__sellable__get_subskill_prompt
|
|
9
|
+
- mcp__sellable__get_subskill_asset
|
|
10
|
+
- mcp__sellable__get_auth_status
|
|
11
|
+
- mcp__sellable__get_active_workspace
|
|
12
|
+
- mcp__sellable__list_workspaces
|
|
13
|
+
- mcp__sellable__get_workspace
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Refill Sends Evergreen Workflow
|
|
17
|
+
|
|
18
|
+
This internal workflow is the Phase 85 plan surface for evergreen waterfall
|
|
19
|
+
refill. It is read-only, dry-run, zero mutations. The workflow has three gates:
|
|
20
|
+
bootstrap, plan, and report.
|
|
21
|
+
|
|
22
|
+
Runtime flow asset: after loading this prompt, load
|
|
23
|
+
`get_subskill_asset({ subskillName: "refill-sends-evergreen-workflow", assetPath: "core/flow.v1.json" })`
|
|
24
|
+
through MCP, continue chunks until `hasMore:false`, parse the JSON, and verify
|
|
25
|
+
`workflow:"refill-sends-evergreen-workflow"` with a `v1` version before any
|
|
26
|
+
planner call. If the asset cannot load or parse, stop with
|
|
27
|
+
`blocked:evergreen_refill_workflow_asset_unavailable`; do not emulate it from
|
|
28
|
+
local files or memory.
|
|
29
|
+
|
|
30
|
+
## G0 Bootstrap Facts
|
|
31
|
+
|
|
32
|
+
Resolve the request-scoped `workspaceId` using read-only auth and workspace
|
|
33
|
+
tools. Scheduled or autonomous runs must not rely on implicit workspace state.
|
|
34
|
+
Call `refill_sends_evergreen({ workspaceId })` first to receive the command
|
|
35
|
+
contract, then call `get_evergreen_refill_plan({ workspaceId })` for the dry-run
|
|
36
|
+
packet.
|
|
37
|
+
|
|
38
|
+
Optional inputs:
|
|
39
|
+
|
|
40
|
+
- `senderIds`: exact sender scope when the user named senders.
|
|
41
|
+
- `runState`: synthetic v1 lane memory for what-if dry runs. Use it only when
|
|
42
|
+
the user intentionally wants a hypothetical cursor, pin, or cooldown state.
|
|
43
|
+
- `journal:false`: skip the local journal only when explicitly requested.
|
|
44
|
+
- `journalNote`: append operator context to the dry-run terminal section.
|
|
45
|
+
|
|
46
|
+
## G1 Evergreen Ladder
|
|
47
|
+
|
|
48
|
+
The planner chooses from this locked rung order:
|
|
49
|
+
|
|
50
|
+
1. `start_campaign`: a paused selected lane has scheduler-ready supply but must
|
|
51
|
+
be live before the scheduler can pick it up.
|
|
52
|
+
2. `approve_messages`: generated rows are ready for a bounded approval step.
|
|
53
|
+
3. `wait_for_active_work`: enrichment, generation, import, or preparation is
|
|
54
|
+
already active, so the next honest action is to wait for that work to finish.
|
|
55
|
+
4. `enrich_more`: exact-set enrichment can close the current ready gap.
|
|
56
|
+
5. `reconcile_source_copy`: same-source rows exist and can be copied without
|
|
57
|
+
changing source family or source fingerprint.
|
|
58
|
+
6. `add_leads_same_source`: the same source path can add bounded new supply.
|
|
59
|
+
7. `paid_lane_fallback`: paid InMail is blocked or below threshold, so the same
|
|
60
|
+
waterfall can fall back to an existing supported lane.
|
|
61
|
+
8. `next_campaign`: the current lane is exhausted, cooling down, pinned away, or
|
|
62
|
+
unsafe, and the next surviving campaign lane should be inspected.
|
|
63
|
+
9. `wait_for_scheduler`: ready or projected supply covers the target, and only
|
|
64
|
+
scheduler pickup remains.
|
|
65
|
+
10. `done`: the sender or lane is complete for the selected target window, or a
|
|
66
|
+
scheduler cap makes additional preparation unnecessary.
|
|
67
|
+
|
|
68
|
+
Forward-only lane rule: a lane can move to a later rung or a later surviving
|
|
69
|
+
campaign, but the dry-run packet must not jump backward to invent work that the
|
|
70
|
+
facts do not support. Pinned-campaign rule: a pinned campaign stays selected
|
|
71
|
+
until the planner proves a blocker, cooldown, exhaustion, or safer next lane.
|
|
72
|
+
Capped-is-complete rule: when scheduler capacity is lower than the requested
|
|
73
|
+
target and ready/projected coverage satisfies that cap, report `done` with the
|
|
74
|
+
cap reason. Honest-itinerary rule: show what was checked, what was skipped, and
|
|
75
|
+
why; never hide uncertainty behind a confident source recommendation.
|
|
76
|
+
|
|
77
|
+
Guardrails inherited from the Phase 83 evergreen workflow: no campaign creation,
|
|
78
|
+
no provider-family switch, no threshold lowering, no scheduler writes, no
|
|
79
|
+
launch/send/archive/delete, no brief/filter/message/sequence/sender mutation,
|
|
80
|
+
no message preparation, no message approval, no paid InMail credit refresh, no
|
|
81
|
+
source mutation, no row queueing, and no campaign status change.
|
|
82
|
+
|
|
83
|
+
## Journal
|
|
84
|
+
|
|
85
|
+
`get_evergreen_refill_plan` writes a local dry-run journal unless
|
|
86
|
+
`journal:false` is passed. Read the returned `journalPath` from the tool result
|
|
87
|
+
and include it in the report. The journal contains bootstrap, plan, and terminal
|
|
88
|
+
sections plus an index line under the run journal directory. If the tool returns
|
|
89
|
+
`journalPath:null` with a `journalWriteFailed` warning, report the warning and
|
|
90
|
+
continue with the dry-run packet; do not retry by writing local files yourself.
|
|
91
|
+
|
|
92
|
+
## Report Contract
|
|
93
|
+
|
|
94
|
+
Completion for Phase 85 means packet reviewed and journal written. Merely
|
|
95
|
+
calling `get_evergreen_refill_plan` is not completion proof.
|
|
96
|
+
|
|
97
|
+
Report these facts:
|
|
98
|
+
|
|
99
|
+
- workspace id and selected sender scope;
|
|
100
|
+
- plan revision and state revision;
|
|
101
|
+
- selected campaign and lane per sender;
|
|
102
|
+
- chosen rung and dry-run action queue;
|
|
103
|
+
- itinerary, skipped lanes, blockers, cooldowns, and warnings;
|
|
104
|
+
- journal path;
|
|
105
|
+
- side effects proof, which must show all false values.
|
|
106
|
+
|
|
107
|
+
Stop after the report. The Phase 85 workflow never executes the action queue.
|