@sellable/mcp 0.1.150 → 0.1.152
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/README.md +4 -3
- package/agents/post-find-leads-filter-scout.md +5 -4
- package/agents/post-find-leads-message-scout.md +17 -16
- package/agents/source-scout-linkedin-engagement.md +6 -5
- package/agents/source-scout-prospeo-contact.md +4 -4
- package/agents/source-scout-sales-nav.md +4 -4
- package/dist/index-dev.js +0 -0
- package/dist/index.js +0 -0
- package/dist/tools/cells.js +1 -1
- package/dist/tools/leads.d.ts +36 -3
- package/dist/tools/leads.js +83 -71
- package/dist/tools/prompts.d.ts +1 -0
- package/dist/tools/prompts.js +10 -9
- package/dist/tools/registry.d.ts +17 -0
- package/dist/tools/rubrics.js +23 -20
- package/package.json +1 -1
- package/skills/create-campaign/SKILL.md +64 -61
- package/skills/create-campaign-v2/SKILL.md +50 -55
- package/skills/create-campaign-v2/SOUL.md +16 -13
- package/skills/create-campaign-v2/core/auto-execute.README.md +16 -17
- package/skills/create-campaign-v2/core/auto-execute.yaml +8 -7
- package/skills/create-campaign-v2/core/flow.v2.json +84 -156
- package/skills/create-campaign-v2/core/policy.md +13 -12
- package/skills/create-campaign-v2/references/approval-gate-framing.md +11 -11
- package/skills/create-campaign-v2/references/filter-leads.md +5 -4
- package/skills/create-campaign-v2/references/lead-validation-preview.md +2 -2
- package/skills/create-campaign-v2/references/sample-validation-loop.md +32 -27
- package/skills/create-campaign-v2/references/step-13-import-leads.md +29 -28
- package/skills/create-campaign-v2/references/watch-guide-narration.md +27 -28
- package/skills/create-campaign-v2-tail/SKILL.md +44 -44
- package/skills/create-rubric/SKILL.md +5 -5
- package/skills/find-leads/SKILL.md +2 -2
- package/skills/generate-messages/SKILL.md +2 -1
- package/skills/providers/prospeo.md +3 -3
- package/skills/providers/sales-nav.md +7 -7
- package/skills/providers/signal-discovery.md +11 -11
- package/skills/create-campaign-v2/references/message-review-safety-gate.md +0 -162
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": "v2.1-compact",
|
|
3
3
|
"workflow": "create-campaign-v2",
|
|
4
|
-
"principle": "CampaignOffer state and
|
|
5
|
-
"normalCustomerPath": "Use campaign state, MCP
|
|
4
|
+
"principle": "CampaignOffer state and watch link are canonical. Create the watched shell, approve source, materialize and confirm the source list, process the first 15 review rows, save rubrics for approval, approve the message template, then run the bounded filter/message cascade before Settings, sequence, and explicit start.",
|
|
5
|
+
"normalCustomerPath": "Use campaign state, MCP responses, and concise watchNarration. Do not create, read, link, or surface local draft files.",
|
|
6
6
|
"legacyCompatibility": {
|
|
7
7
|
"validationSubskill": "create-campaign-v2-validation",
|
|
8
8
|
"tailSubskill": "create-campaign-v2-tail",
|
|
@@ -63,12 +63,8 @@
|
|
|
63
63
|
"references/lead-validation-preview.md",
|
|
64
64
|
"references/step-13-import-leads.md"
|
|
65
65
|
],
|
|
66
|
-
"filter": [
|
|
67
|
-
|
|
68
|
-
],
|
|
69
|
-
"message": [
|
|
70
|
-
"references/message-review-safety-gate.md"
|
|
71
|
-
],
|
|
66
|
+
"filter": ["references/filter-leads.md"],
|
|
67
|
+
"message": [],
|
|
72
68
|
"tail": [
|
|
73
69
|
"references/sample-validation-loop.md",
|
|
74
70
|
"references/step-15-re-cascade.md",
|
|
@@ -78,7 +74,7 @@
|
|
|
78
74
|
"safetyBoundaries": [
|
|
79
75
|
"Do not call list_senders before Settings after message approval.",
|
|
80
76
|
"Do not import leads until the source decision is approved.",
|
|
81
|
-
"Do not queue cells until
|
|
77
|
+
"Do not queue cells until confirmed source rows exist in the campaign and the message/filter gates are satisfied.",
|
|
82
78
|
"Do not call start_campaign until the user explicitly confirms launch.",
|
|
83
79
|
"Do not use local files as durable state in normal customer runs."
|
|
84
80
|
],
|
|
@@ -176,10 +172,7 @@
|
|
|
176
172
|
"currentStep": "create-offer",
|
|
177
173
|
"watchNarration.stage": "brief"
|
|
178
174
|
},
|
|
179
|
-
"capture": [
|
|
180
|
-
"campaignId",
|
|
181
|
-
"watchUrl"
|
|
182
|
-
],
|
|
175
|
+
"capture": ["campaignId", "watchUrl"],
|
|
183
176
|
"canonicalStateWrites": [
|
|
184
177
|
"campaignId",
|
|
185
178
|
"watchUrl",
|
|
@@ -220,11 +213,7 @@
|
|
|
220
213
|
"queue_cells",
|
|
221
214
|
"start_campaign"
|
|
222
215
|
],
|
|
223
|
-
"waitFor": [
|
|
224
|
-
"campaign_shell_created",
|
|
225
|
-
"brief_ready",
|
|
226
|
-
"confirm_with_user"
|
|
227
|
-
],
|
|
216
|
+
"waitFor": ["campaign_shell_created", "brief_ready", "confirm_with_user"],
|
|
228
217
|
"transitions": {
|
|
229
218
|
"campaign_shell_created": "brief-review",
|
|
230
219
|
"brief_ready": "brief-review",
|
|
@@ -242,11 +231,7 @@
|
|
|
242
231
|
{
|
|
243
232
|
"action": "ask_brief_choice",
|
|
244
233
|
"uses": "request_user_input",
|
|
245
|
-
"choices": [
|
|
246
|
-
"Approve brief",
|
|
247
|
-
"Revise brief",
|
|
248
|
-
"Pause here"
|
|
249
|
-
]
|
|
234
|
+
"choices": ["Approve brief", "Revise brief", "Pause here"]
|
|
250
235
|
}
|
|
251
236
|
],
|
|
252
237
|
"requiredCampaignState": [
|
|
@@ -268,11 +253,7 @@
|
|
|
268
253
|
"queue_cells",
|
|
269
254
|
"start_campaign"
|
|
270
255
|
],
|
|
271
|
-
"waitFor": [
|
|
272
|
-
"user_brief_confirmed",
|
|
273
|
-
"revise_brief",
|
|
274
|
-
"auto_continue"
|
|
275
|
-
],
|
|
256
|
+
"waitFor": ["user_brief_confirmed", "revise_brief", "auto_continue"],
|
|
276
257
|
"transitions": {
|
|
277
258
|
"user_brief_confirmed": "find-leads",
|
|
278
259
|
"revise_brief": "brief-interview",
|
|
@@ -302,7 +283,7 @@
|
|
|
302
283
|
"fallback lane if the first lane is weak",
|
|
303
284
|
"what approval authorizes"
|
|
304
285
|
],
|
|
305
|
-
"approvalAuthorizes": "source scouting/search only; no
|
|
286
|
+
"approvalAuthorizes": "source scouting/search only; no import/send"
|
|
306
287
|
},
|
|
307
288
|
"defaultWhenSourceUnspecified": [
|
|
308
289
|
"signal-discovery",
|
|
@@ -343,6 +324,8 @@
|
|
|
343
324
|
{
|
|
344
325
|
"action": "show_pre_scout_source_recommendation",
|
|
345
326
|
"uses": "request_user_input",
|
|
327
|
+
"oneShot": true,
|
|
328
|
+
"skipIf": "approved or leadSourceProvider",
|
|
346
329
|
"requiredBeforeTools": [
|
|
347
330
|
"get_provider_prompt",
|
|
348
331
|
"search_signals",
|
|
@@ -408,11 +391,7 @@
|
|
|
408
391
|
"stopOnFirstViableUnlessComparisonRequested": true
|
|
409
392
|
}
|
|
410
393
|
],
|
|
411
|
-
"requiredCampaignState": [
|
|
412
|
-
"campaignId",
|
|
413
|
-
"campaignBrief",
|
|
414
|
-
"currentStep"
|
|
415
|
-
],
|
|
394
|
+
"requiredCampaignState": ["campaignId", "campaignBrief", "currentStep"],
|
|
416
395
|
"allowedTools": [
|
|
417
396
|
"get_source_scout_registry",
|
|
418
397
|
"get_provider_prompt",
|
|
@@ -440,11 +419,7 @@
|
|
|
440
419
|
"queue_cells",
|
|
441
420
|
"start_campaign"
|
|
442
421
|
],
|
|
443
|
-
"waitFor": [
|
|
444
|
-
"lead_review_ready",
|
|
445
|
-
"revise_brief",
|
|
446
|
-
"confirm_with_user"
|
|
447
|
-
],
|
|
422
|
+
"waitFor": ["lead_review_ready", "revise_brief", "confirm_with_user"],
|
|
448
423
|
"transitions": {
|
|
449
424
|
"lead_review_ready": "lead-review",
|
|
450
425
|
"revise_brief": "brief-interview",
|
|
@@ -460,9 +435,9 @@
|
|
|
460
435
|
"requiredInlineFields": [
|
|
461
436
|
"primary source and exact filters/recipe",
|
|
462
437
|
"specific source action awaiting approval",
|
|
463
|
-
"for Signal Discovery: Source Recommendation
|
|
438
|
+
"for Signal Discovery: compact Source Recommendation with target, raw-engager math, selected-post table, review checkpoint, estimated fit, and fallback",
|
|
464
439
|
"for Signal Discovery: selected post count and target engager/source-candidate volume",
|
|
465
|
-
"
|
|
440
|
+
"15-row review/process sample size",
|
|
466
441
|
"runner-up and why it lost",
|
|
467
442
|
"raw volume",
|
|
468
443
|
"sampled people",
|
|
@@ -477,14 +452,14 @@
|
|
|
477
452
|
"uses": "request_user_input",
|
|
478
453
|
"choices": [
|
|
479
454
|
"Approve scraping N Signal Discovery posts",
|
|
480
|
-
"Run the approved source import
|
|
455
|
+
"Run the approved source import",
|
|
481
456
|
"Revise source",
|
|
482
457
|
"Pause here"
|
|
483
458
|
],
|
|
484
459
|
"approvalChoiceLabelsByProvider": {
|
|
485
460
|
"signal-discovery": "Approve scraping {selectedPostCount} Signal Discovery posts?",
|
|
486
|
-
"sales-nav": "Import the approved Sales Nav
|
|
487
|
-
"prospeo": "Import the approved Prospeo
|
|
461
|
+
"sales-nav": "Import the approved Sales Nav source list",
|
|
462
|
+
"prospeo": "Import the approved Prospeo source list"
|
|
488
463
|
},
|
|
489
464
|
"postApprovalContract": {
|
|
490
465
|
"singleUseApproval": true,
|
|
@@ -493,8 +468,8 @@
|
|
|
493
468
|
"show_source_decision_card",
|
|
494
469
|
"ask_source_review_choice"
|
|
495
470
|
],
|
|
496
|
-
"requiredNextActionAfterApproval": "
|
|
497
|
-
"signalDiscoveryNextTool": "import_leads({
|
|
471
|
+
"requiredNextActionAfterApproval": "ack once; call import_leads immediately",
|
|
472
|
+
"signalDiscoveryNextTool": "import_leads({ provider: \"signal-discovery\", targetEngagerCount, maxPostsToScrape, confirmed: true })"
|
|
498
473
|
}
|
|
499
474
|
}
|
|
500
475
|
],
|
|
@@ -532,7 +507,7 @@
|
|
|
532
507
|
},
|
|
533
508
|
{
|
|
534
509
|
"id": "auto-execute-leads",
|
|
535
|
-
"label": "
|
|
510
|
+
"label": "Materialize confirmed source list",
|
|
536
511
|
"currentStepValue": "auto-execute-leads",
|
|
537
512
|
"reference": "references/step-13-import-leads.md",
|
|
538
513
|
"onEnter": [
|
|
@@ -548,10 +523,11 @@
|
|
|
548
523
|
"requiredFields": [
|
|
549
524
|
"campaignOfferId",
|
|
550
525
|
"selected source/list",
|
|
551
|
-
"
|
|
526
|
+
"sourceListTarget or targetEngagerCount"
|
|
552
527
|
],
|
|
553
528
|
"requiredValues": {
|
|
554
|
-
"
|
|
529
|
+
"salesNavProspeoDefaultSourceListTarget": 1000,
|
|
530
|
+
"signalDiscoveryDefaultEngagerTarget": 1500
|
|
555
531
|
},
|
|
556
532
|
"modeAddHandshake": {
|
|
557
533
|
"firstCallReturns": "needsModeSelection when adding to an existing campaign-attached list",
|
|
@@ -569,10 +545,10 @@
|
|
|
569
545
|
"selectedLeadListId",
|
|
570
546
|
"reviewBatchLimit"
|
|
571
547
|
],
|
|
572
|
-
"
|
|
573
|
-
"
|
|
574
|
-
|
|
575
|
-
]
|
|
548
|
+
"requiredValues": {
|
|
549
|
+
"reviewBatchLimit": 15
|
|
550
|
+
},
|
|
551
|
+
"capture": ["workflowTableId", "reviewBatchRowIds"]
|
|
576
552
|
},
|
|
577
553
|
{
|
|
578
554
|
"tool": "wait_for_campaign_table_ready"
|
|
@@ -583,9 +559,7 @@
|
|
|
583
559
|
"tableId": "{workflowTableId}",
|
|
584
560
|
"limit": 15
|
|
585
561
|
},
|
|
586
|
-
"capture": [
|
|
587
|
-
"reviewBatchRowHash"
|
|
588
|
-
]
|
|
562
|
+
"capture": ["reviewBatchRowHash"]
|
|
589
563
|
},
|
|
590
564
|
{
|
|
591
565
|
"action": "summarize_review_batch_and_advance_to_filter_choice",
|
|
@@ -620,9 +594,9 @@
|
|
|
620
594
|
"bulk_enrich_with_prospeo",
|
|
621
595
|
"save_rubrics"
|
|
622
596
|
],
|
|
623
|
-
"waitFor": "
|
|
597
|
+
"waitFor": "source_list_confirmed_and_review_sample_ready",
|
|
624
598
|
"transitions": {
|
|
625
|
-
"
|
|
599
|
+
"source_list_confirmed_and_review_sample_ready": "filter-choice",
|
|
626
600
|
"escalation_triggered": "escalation"
|
|
627
601
|
}
|
|
628
602
|
},
|
|
@@ -641,11 +615,7 @@
|
|
|
641
615
|
{
|
|
642
616
|
"action": "ask_filter_choice",
|
|
643
617
|
"uses": "request_user_input",
|
|
644
|
-
"choices": [
|
|
645
|
-
"Use filters",
|
|
646
|
-
"Skip filters",
|
|
647
|
-
"Revise source"
|
|
648
|
-
]
|
|
618
|
+
"choices": ["Use filters", "Skip filters", "Revise source"]
|
|
649
619
|
}
|
|
650
620
|
],
|
|
651
621
|
"hardRules": [
|
|
@@ -681,11 +651,7 @@
|
|
|
681
651
|
"start_campaign",
|
|
682
652
|
"generate_messages"
|
|
683
653
|
],
|
|
684
|
-
"waitFor": [
|
|
685
|
-
"filters_enabled",
|
|
686
|
-
"filters_skipped",
|
|
687
|
-
"revise_leads"
|
|
688
|
-
],
|
|
654
|
+
"waitFor": ["filters_enabled", "filters_skipped", "revise_leads"],
|
|
689
655
|
"transitions": {
|
|
690
656
|
"filters_enabled": "post-lead-workstreams",
|
|
691
657
|
"filters_skipped": "message-generation",
|
|
@@ -751,16 +717,19 @@
|
|
|
751
717
|
"action": "save_filter_rubrics_to_campaign",
|
|
752
718
|
"tool": "save_rubrics",
|
|
753
719
|
"when": "filters_enabled and rubrics are production-shaped",
|
|
754
|
-
"requiredFields": [
|
|
755
|
-
"campaignOfferId",
|
|
756
|
-
"leadScoringRubrics"
|
|
757
|
-
],
|
|
720
|
+
"requiredFields": ["campaignOfferId", "leadScoringRubrics"],
|
|
758
721
|
"writesCampaignState": "leadScoringRubrics",
|
|
759
722
|
"requiredSideEffects": {
|
|
760
723
|
"enableICPFilters": true,
|
|
761
|
-
"currentStep": "
|
|
762
|
-
"watchNarration.headline": "Filter rules saved"
|
|
724
|
+
"currentStep": "create-icp-rubric",
|
|
725
|
+
"watchNarration.headline": "Filter rules saved for review"
|
|
763
726
|
}
|
|
727
|
+
},
|
|
728
|
+
{
|
|
729
|
+
"action": "ask_filter_rubric_review_choice",
|
|
730
|
+
"uses": "request_user_input",
|
|
731
|
+
"choices": ["Approve filters", "Revise filters", "Pause"],
|
|
732
|
+
"purpose": "let the user read saved rubrics before Filter Leads or enrichment"
|
|
764
733
|
}
|
|
765
734
|
],
|
|
766
735
|
"requiredCampaignState": [
|
|
@@ -794,13 +763,14 @@
|
|
|
794
763
|
"generate_messages"
|
|
795
764
|
],
|
|
796
765
|
"waitFor": [
|
|
797
|
-
"
|
|
766
|
+
"filter_rubrics_approved",
|
|
798
767
|
"revise_leads",
|
|
799
768
|
"revise_rubric",
|
|
800
769
|
"revise_messaging"
|
|
801
770
|
],
|
|
802
771
|
"hardRules": [
|
|
803
|
-
"
|
|
772
|
+
"after_save_rubrics_currentStep_must_stay_create-icp-rubric_until_filter_approval",
|
|
773
|
+
"filter_approval_required_before_apply-icp-rubric_or_queue_cells",
|
|
804
774
|
"do_not_move_browser_to_messages_until_filter_leads_step_is_current_or_filters_are_explicitly_skipped",
|
|
805
775
|
"no_post_lead_worker_or_deep_prompt_before_filter_choice",
|
|
806
776
|
"lead_fit_builder_starts_only_after_filters_enabled",
|
|
@@ -808,7 +778,7 @@
|
|
|
808
778
|
"msg_draft_no_cells"
|
|
809
779
|
],
|
|
810
780
|
"transitions": {
|
|
811
|
-
"
|
|
781
|
+
"filter_rubrics_approved": "message-generation",
|
|
812
782
|
"revise_leads": "find-leads",
|
|
813
783
|
"revise_rubric": "filter-rubric",
|
|
814
784
|
"revise_messaging": "message-generation",
|
|
@@ -828,22 +798,21 @@
|
|
|
828
798
|
},
|
|
829
799
|
{
|
|
830
800
|
"tool": "save_rubrics",
|
|
831
|
-
"requiredFields": [
|
|
832
|
-
"campaignOfferId",
|
|
833
|
-
"leadScoringRubrics"
|
|
834
|
-
],
|
|
801
|
+
"requiredFields": ["campaignOfferId", "leadScoringRubrics"],
|
|
835
802
|
"writesCampaignState": "leadScoringRubrics",
|
|
836
803
|
"requiredSideEffects": {
|
|
837
804
|
"enableICPFilters": true,
|
|
838
|
-
"currentStep": "
|
|
839
|
-
"watchNarration.headline": "Filter rules saved"
|
|
805
|
+
"currentStep": "create-icp-rubric",
|
|
806
|
+
"watchNarration.headline": "Filter rules saved for review"
|
|
840
807
|
}
|
|
808
|
+
},
|
|
809
|
+
{
|
|
810
|
+
"action": "ask_filter_rubric_review_choice",
|
|
811
|
+
"uses": "request_user_input",
|
|
812
|
+
"choices": ["Approve filters", "Revise filters", "Pause"]
|
|
841
813
|
}
|
|
842
814
|
],
|
|
843
|
-
"requiredCampaignState": [
|
|
844
|
-
"campaignId",
|
|
845
|
-
"workflowTableId"
|
|
846
|
-
],
|
|
815
|
+
"requiredCampaignState": ["campaignId", "workflowTableId"],
|
|
847
816
|
"allowedTools": [
|
|
848
817
|
"get_subskill_asset",
|
|
849
818
|
"save_rubrics",
|
|
@@ -861,13 +830,13 @@
|
|
|
861
830
|
"check_rubric"
|
|
862
831
|
],
|
|
863
832
|
"waitFor": [
|
|
864
|
-
"
|
|
833
|
+
"filter_rubrics_approved",
|
|
865
834
|
"revise_leads",
|
|
866
835
|
"confirm_with_user",
|
|
867
836
|
"auto_continue"
|
|
868
837
|
],
|
|
869
838
|
"transitions": {
|
|
870
|
-
"
|
|
839
|
+
"filter_rubrics_approved": "message-generation",
|
|
871
840
|
"revise_leads": "find-leads",
|
|
872
841
|
"confirm_with_user": "message-generation",
|
|
873
842
|
"auto_continue": "message-generation"
|
|
@@ -881,7 +850,7 @@
|
|
|
881
850
|
"action": "set_message_review_visible_step_by_filter_choice",
|
|
882
851
|
"tool": "update_campaign",
|
|
883
852
|
"branchRules": [
|
|
884
|
-
"yes: currentStep=apply-icp-rubric; wait on Filter Leads",
|
|
853
|
+
"yes after filter approval: currentStep=apply-icp-rubric; wait on Filter Leads",
|
|
885
854
|
"no: currentStep=messages; message review"
|
|
886
855
|
],
|
|
887
856
|
"watchNarration.stage": "fit-message"
|
|
@@ -890,8 +859,8 @@
|
|
|
890
859
|
"action": "run_or_reconcile_message_draft_builder",
|
|
891
860
|
"target": "post-find-leads-message-scout",
|
|
892
861
|
"toolCallRequiredBeforeDraft": [
|
|
893
|
-
"
|
|
894
|
-
"
|
|
862
|
+
"run background post-find-leads-message-scout when available",
|
|
863
|
+
"get_subskill_prompt({ subskillName: \"generate-messages\", offset, limit }) until hasMore=false"
|
|
895
864
|
],
|
|
896
865
|
"stateSource": "campaignBrief, source, selectedLeadListId, workflowTableId, review-batch row ids/hash",
|
|
897
866
|
"outputState": "messageDraftRecommendation"
|
|
@@ -905,7 +874,6 @@
|
|
|
905
874
|
],
|
|
906
875
|
"allowedTools": [
|
|
907
876
|
"get_subskill_prompt",
|
|
908
|
-
"get_subskill_asset",
|
|
909
877
|
"get_campaign",
|
|
910
878
|
"get_rows_minimal",
|
|
911
879
|
"update_campaign",
|
|
@@ -913,9 +881,9 @@
|
|
|
913
881
|
"request_user_input"
|
|
914
882
|
],
|
|
915
883
|
"toolRules": [
|
|
916
|
-
"
|
|
917
|
-
"
|
|
918
|
-
"
|
|
884
|
+
"Run post-find-leads-message-scout when available; otherwise parent fallback must load get_subskill_prompt({ subskillName: \"generate-messages\" }) from live state.",
|
|
885
|
+
"brief.md, lead-review.md, and lead-sample.json are optional debug context only.",
|
|
886
|
+
"messageDraftRecommendation returns templateRecommendation, tokenFillRules, renderedSample, concerns, status, basisToken, outputAt, outputHash, and error/retry detail.",
|
|
919
887
|
"If campaign/source/table/review-batch basis does not match, classify the output stale or blocked."
|
|
920
888
|
],
|
|
921
889
|
"doNotAllow": [
|
|
@@ -979,10 +947,7 @@
|
|
|
979
947
|
{
|
|
980
948
|
"action": "ask_message_review_choice",
|
|
981
949
|
"uses": "request_user_input",
|
|
982
|
-
"choices": [
|
|
983
|
-
"approve-message",
|
|
984
|
-
"revise-messaging"
|
|
985
|
-
]
|
|
950
|
+
"choices": ["approve-message", "revise-messaging"]
|
|
986
951
|
},
|
|
987
952
|
{
|
|
988
953
|
"action": "sync_approved_message_set_to_campaign_brief",
|
|
@@ -1005,12 +970,9 @@
|
|
|
1005
970
|
"allowedTools": [
|
|
1006
971
|
"AskUserQuestion",
|
|
1007
972
|
"request_user_input",
|
|
1008
|
-
"get_subskill_asset",
|
|
1009
973
|
"update_campaign_brief",
|
|
1010
974
|
"update_campaign",
|
|
1011
|
-
"get_rows_minimal"
|
|
1012
|
-
"queue_cells",
|
|
1013
|
-
"wait_for_rubric_results"
|
|
975
|
+
"get_rows_minimal"
|
|
1014
976
|
],
|
|
1015
977
|
"doNotAllow": [
|
|
1016
978
|
"create_campaign",
|
|
@@ -1020,10 +982,7 @@
|
|
|
1020
982
|
"confirm_lead_list",
|
|
1021
983
|
"start_campaign"
|
|
1022
984
|
],
|
|
1023
|
-
"waitFor": [
|
|
1024
|
-
"message_approved",
|
|
1025
|
-
"revise_messaging"
|
|
1026
|
-
],
|
|
985
|
+
"waitFor": ["message_approved", "revise_messaging"],
|
|
1027
986
|
"transitions": {
|
|
1028
987
|
"message_approved": "validate-sample",
|
|
1029
988
|
"revise_messaging": "message-generation"
|
|
@@ -1031,10 +990,10 @@
|
|
|
1031
990
|
},
|
|
1032
991
|
{
|
|
1033
992
|
"id": "validate-sample",
|
|
1034
|
-
"label": "Validate
|
|
993
|
+
"label": "Validate first review/process sample",
|
|
1035
994
|
"currentStepValue": "apply-icp-rubric",
|
|
1036
995
|
"reference": "references/sample-validation-loop.md",
|
|
1037
|
-
"visibleStepRule": "
|
|
996
|
+
"visibleStepRule": "Filter Leads is reached only after saved-filter approval. On approve-message, save the template, refresh apply-icp-rubric narration, then queue bounded Enrich Prospect cells.",
|
|
1038
997
|
"onEnter": [
|
|
1039
998
|
{
|
|
1040
999
|
"tool": "update_campaign",
|
|
@@ -1047,13 +1006,13 @@
|
|
|
1047
1006
|
},
|
|
1048
1007
|
{
|
|
1049
1008
|
"tool": "queue_cells",
|
|
1050
|
-
"purpose": "queue ICP/enrichment cells for the
|
|
1009
|
+
"purpose": "queue ICP/enrichment cells for the first 15 review/process rows only",
|
|
1051
1010
|
"requiredFields": [
|
|
1052
1011
|
"workflowTableId",
|
|
1053
1012
|
"reviewBatchRowIds",
|
|
1054
1013
|
"cellTypes"
|
|
1055
1014
|
],
|
|
1056
|
-
"targetCountSource": "reviewBatchRowIds.length"
|
|
1015
|
+
"targetCountSource": "reviewBatchRowIds.length (default 15)"
|
|
1057
1016
|
},
|
|
1058
1017
|
{
|
|
1059
1018
|
"tool": "wait_for_campaign_table_ready",
|
|
@@ -1089,7 +1048,8 @@
|
|
|
1089
1048
|
"requiredCampaignState": [
|
|
1090
1049
|
"campaignId",
|
|
1091
1050
|
"workflowTableId",
|
|
1092
|
-
"approvedMessageTemplate"
|
|
1051
|
+
"approvedMessageTemplate",
|
|
1052
|
+
"filterRubricsApproved when enableICPFilters=true"
|
|
1093
1053
|
],
|
|
1094
1054
|
"allowedTools": [
|
|
1095
1055
|
"get_subskill_asset",
|
|
@@ -1115,10 +1075,7 @@
|
|
|
1115
1075
|
"timeout_never_repeats_without_customer_handoff",
|
|
1116
1076
|
"timeout_or_underfloor_sample_never_advances_to_settings"
|
|
1117
1077
|
],
|
|
1118
|
-
"waitFor": [
|
|
1119
|
-
"sample_validated",
|
|
1120
|
-
"sample_revision_required"
|
|
1121
|
-
],
|
|
1078
|
+
"waitFor": ["sample_validated", "sample_revision_required"],
|
|
1122
1079
|
"transitions": {
|
|
1123
1080
|
"sample_validated": "auto-execute-messaging",
|
|
1124
1081
|
"sample_revision_required": "lead-review",
|
|
@@ -1233,10 +1190,7 @@
|
|
|
1233
1190
|
"opus_reserved_for_highest_value_subset",
|
|
1234
1191
|
"proposed_token_never_persisted_in_rewrite"
|
|
1235
1192
|
],
|
|
1236
|
-
"waitFor": [
|
|
1237
|
-
"generated_messages_approved",
|
|
1238
|
-
"sample_revision_required"
|
|
1239
|
-
],
|
|
1193
|
+
"waitFor": ["generated_messages_approved", "sample_revision_required"],
|
|
1240
1194
|
"transitions": {
|
|
1241
1195
|
"generated_messages_approved": "awaiting-user-greenlight",
|
|
1242
1196
|
"revise_filters": "filter-rubric",
|
|
@@ -1291,9 +1245,7 @@
|
|
|
1291
1245
|
"tool": "update_campaign",
|
|
1292
1246
|
"when": "user selected an available connected sender",
|
|
1293
1247
|
"requiredValues": {
|
|
1294
|
-
"senderIds": [
|
|
1295
|
-
"{selectedSenderId}"
|
|
1296
|
-
],
|
|
1248
|
+
"senderIds": ["{selectedSenderId}"],
|
|
1297
1249
|
"currentStep": "sequence",
|
|
1298
1250
|
"watchNarration.stage": "review-ready"
|
|
1299
1251
|
},
|
|
@@ -1313,11 +1265,7 @@
|
|
|
1313
1265
|
"action": "ask_final_launch_greenlight",
|
|
1314
1266
|
"uses": "request_user_input",
|
|
1315
1267
|
"singleChoice": true,
|
|
1316
|
-
"choices": [
|
|
1317
|
-
"Start campaign",
|
|
1318
|
-
"Review campaign first",
|
|
1319
|
-
"Pause here"
|
|
1320
|
-
],
|
|
1268
|
+
"choices": ["Start campaign", "Review campaign first", "Pause here"],
|
|
1321
1269
|
"onUserStart": "claude-greenlight"
|
|
1322
1270
|
}
|
|
1323
1271
|
],
|
|
@@ -1330,10 +1278,7 @@
|
|
|
1330
1278
|
"AskUserQuestion",
|
|
1331
1279
|
"request_user_input"
|
|
1332
1280
|
],
|
|
1333
|
-
"doNotAllow": [
|
|
1334
|
-
"start_campaign",
|
|
1335
|
-
"import_leads"
|
|
1336
|
-
],
|
|
1281
|
+
"doNotAllow": ["start_campaign", "import_leads"],
|
|
1337
1282
|
"autoStart": false,
|
|
1338
1283
|
"watchRequired": true,
|
|
1339
1284
|
"waitFor": [
|
|
@@ -1373,9 +1318,7 @@
|
|
|
1373
1318
|
},
|
|
1374
1319
|
{
|
|
1375
1320
|
"tool": "start_campaign",
|
|
1376
|
-
"requiredFields": [
|
|
1377
|
-
"campaignId"
|
|
1378
|
-
],
|
|
1321
|
+
"requiredFields": ["campaignId"],
|
|
1379
1322
|
"persistsCurrentStep": "running",
|
|
1380
1323
|
"watchNarrationRule": "After start_campaign succeeds, the running state must say the final greenlight was accepted, the campaign is now live/running, and the user can watch progress from the campaign."
|
|
1381
1324
|
}
|
|
@@ -1405,28 +1348,16 @@
|
|
|
1405
1348
|
"action": "surface_campaign_live_confirmation"
|
|
1406
1349
|
}
|
|
1407
1350
|
],
|
|
1408
|
-
"allowedTools": [
|
|
1409
|
-
|
|
1410
|
-
"AskUserQuestion",
|
|
1411
|
-
"request_user_input"
|
|
1412
|
-
],
|
|
1413
|
-
"doNotAllow": [
|
|
1414
|
-
"start_campaign"
|
|
1415
|
-
],
|
|
1351
|
+
"allowedTools": ["get_campaign", "AskUserQuestion", "request_user_input"],
|
|
1352
|
+
"doNotAllow": ["start_campaign"],
|
|
1416
1353
|
"terminal": true
|
|
1417
1354
|
},
|
|
1418
1355
|
{
|
|
1419
1356
|
"id": "escalation",
|
|
1420
1357
|
"label": "Escalation",
|
|
1421
1358
|
"reference": "references/escalation-ladder.md",
|
|
1422
|
-
"allowedTools": [
|
|
1423
|
-
|
|
1424
|
-
"request_user_input"
|
|
1425
|
-
],
|
|
1426
|
-
"doNotAllow": [
|
|
1427
|
-
"start_campaign",
|
|
1428
|
-
"import_leads"
|
|
1429
|
-
],
|
|
1359
|
+
"allowedTools": ["AskUserQuestion", "request_user_input"],
|
|
1360
|
+
"doNotAllow": ["start_campaign", "import_leads"],
|
|
1430
1361
|
"transitions": {
|
|
1431
1362
|
"revise_brief": "brief-interview",
|
|
1432
1363
|
"revise_leads": "find-leads",
|
|
@@ -1438,10 +1369,7 @@
|
|
|
1438
1369
|
{
|
|
1439
1370
|
"id": "abort",
|
|
1440
1371
|
"label": "Abort",
|
|
1441
|
-
"allowedTools": [
|
|
1442
|
-
"AskUserQuestion",
|
|
1443
|
-
"request_user_input"
|
|
1444
|
-
],
|
|
1372
|
+
"allowedTools": ["AskUserQuestion", "request_user_input"],
|
|
1445
1373
|
"terminal": true
|
|
1446
1374
|
}
|
|
1447
1375
|
]
|
|
@@ -36,10 +36,11 @@ mutation gates:
|
|
|
36
36
|
plan or explicitly chooses a source.
|
|
37
37
|
- Do not call `import_leads` or `confirm_lead_list` until the concrete source
|
|
38
38
|
action is approved.
|
|
39
|
-
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
39
|
+
- Copy the confirmed source list into the campaign, but process only the first
|
|
40
|
+
review/process sample before message approval.
|
|
41
|
+
- Do not call `queue_cells` for enrichment/filtering until filters are approved
|
|
42
|
+
when enabled and the default Use Template path has an approved message
|
|
43
|
+
template/token rule set.
|
|
43
44
|
- Do not attach a sequence or call `start_campaign` until the user explicitly
|
|
44
45
|
chooses to launch.
|
|
45
46
|
|
|
@@ -50,13 +51,13 @@ Customer roleplay critique is advisory only. It cannot approve a campaign.
|
|
|
50
51
|
Do not run a downstream stage until the matching live state exists:
|
|
51
52
|
|
|
52
53
|
- campaign shell exists before a watch link is shown as active
|
|
53
|
-
- selected source/list state exists before
|
|
54
|
-
- `workflowTableId` and non-empty
|
|
54
|
+
- selected source/list state exists before copying source rows into the campaign
|
|
55
|
+
- `workflowTableId` and non-empty review/process sample rows exist before filter
|
|
55
56
|
and message branches run
|
|
56
|
-
- `leadScoringRubrics` are saved
|
|
57
|
+
- `leadScoringRubrics` are saved and approved before Filter Leads when filters
|
|
57
58
|
are enabled
|
|
58
|
-
- approved message template/token rules are written to campaign brief before
|
|
59
|
-
queueing
|
|
59
|
+
- approved message template/token rules are written to the campaign brief before
|
|
60
|
+
queueing enrichment, ICP scoring, or Generate Message cells
|
|
60
61
|
|
|
61
62
|
## 5) Revision Routing
|
|
62
63
|
|
|
@@ -70,9 +71,9 @@ Revision choices route back to the exact upstream stage:
|
|
|
70
71
|
|
|
71
72
|
## 6) Post-Message Tail
|
|
72
73
|
|
|
73
|
-
After message approval, queue only the
|
|
74
|
-
the watched app through enrichment, ICP filtering, and approved-template
|
|
75
|
-
|
|
74
|
+
After message approval, queue only the first review/process sample cells needed to move
|
|
75
|
+
the watched app through enrichment, ICP filtering, and approved-template message
|
|
76
|
+
generation. Keep the tail observable through watch narration.
|
|
76
77
|
|
|
77
78
|
The tail stops at `awaiting-user-greenlight`. Never call `start_campaign`
|
|
78
79
|
inside the autonomous tail.
|
|
@@ -14,9 +14,10 @@ packet.
|
|
|
14
14
|
## Purpose
|
|
15
15
|
|
|
16
16
|
The approval gate used to be the place where the user authorized
|
|
17
|
-
spend/send-adjacent mutation. It is now compatibility-only. New runs
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
spend/send-adjacent mutation. It is now compatibility-only. New runs copy the
|
|
18
|
+
confirmed source list into the campaign after source approval, use the first
|
|
19
|
+
review/process sample for post-import review, save rubrics and the approved
|
|
20
|
+
message template, and only then queue the cascade.
|
|
20
21
|
|
|
21
22
|
If `campaign-shell.json` exists, a draft `CampaignOffer` row already exists but
|
|
22
23
|
must remain non-sendable. If no shell exists, no campaign row exists until the
|
|
@@ -33,14 +34,13 @@ Before showing the commit gate, the draft directory must contain all of:
|
|
|
33
34
|
- `message-validation.md`
|
|
34
35
|
- `approval-packet.md`
|
|
35
36
|
|
|
36
|
-
The current run must also have retrieved message-generation rules
|
|
37
|
-
`message-validation.md`, `approval-packet.md`, or the commit gate is
|
|
38
|
-
`create-campaign-v2`, use the
|
|
39
|
-
`
|
|
40
|
-
`
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
commit gate; route back to message generation.
|
|
37
|
+
The current run must also have retrieved the full message-generation rules
|
|
38
|
+
before `message-validation.md`, `approval-packet.md`, or the commit gate is
|
|
39
|
+
written. In `create-campaign-v2`, use the embedded
|
|
40
|
+
`post-find-leads-message-scout` prompt or load the full long-form
|
|
41
|
+
`generate-messages` subskill. If the message template was written directly from
|
|
42
|
+
memory, checklist instructions, or planning artifacts, do not show the commit
|
|
43
|
+
gate; route back to message generation.
|
|
44
44
|
|
|
45
45
|
`rubric.json` is optional but strongly preferred — when missing, derive it from
|
|
46
46
|
`lead-filter.md` in the atomic mint step.
|