@sellable/mcp 0.1.133 → 0.1.135
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.
|
@@ -568,6 +568,12 @@ export interface CreateCampaignResult {
|
|
|
568
568
|
watchUrl: string;
|
|
569
569
|
resumed?: boolean;
|
|
570
570
|
warning?: string;
|
|
571
|
+
approvalGate: {
|
|
572
|
+
kind: "brief-review";
|
|
573
|
+
mustShowBeforeQuestion: string[];
|
|
574
|
+
questionToolBlockedUntilShown: true;
|
|
575
|
+
};
|
|
576
|
+
nextStep: string;
|
|
571
577
|
}
|
|
572
578
|
export declare function createCampaign(input: CreateCampaignInput): Promise<CreateCampaignResult>;
|
|
573
579
|
export interface UpdateCampaignResult {
|
package/dist/tools/campaigns.js
CHANGED
|
@@ -658,6 +658,20 @@ function deriveOfferValue(name, briefContent) {
|
|
|
658
658
|
return heading.slice(0, 120);
|
|
659
659
|
return lines[0].slice(0, 120);
|
|
660
660
|
}
|
|
661
|
+
function buildBriefApprovalGate(watchUrl) {
|
|
662
|
+
return {
|
|
663
|
+
approvalGate: {
|
|
664
|
+
kind: "brief-review",
|
|
665
|
+
mustShowBeforeQuestion: [
|
|
666
|
+
"the full campaignBrief markdown the user is approving",
|
|
667
|
+
`Watch link: ${watchUrl}`,
|
|
668
|
+
],
|
|
669
|
+
questionToolBlockedUntilShown: true,
|
|
670
|
+
},
|
|
671
|
+
nextStep: "Before asking for approval, render the full campaign brief in normal chat text and then print " +
|
|
672
|
+
`Watch link: ${watchUrl}. Do not call AskUserQuestion or request_user_input until the user has seen both the brief content and this watch link.`,
|
|
673
|
+
};
|
|
674
|
+
}
|
|
661
675
|
export async function createCampaign(input) {
|
|
662
676
|
const api = getApi();
|
|
663
677
|
const config = getConfig();
|
|
@@ -675,6 +689,7 @@ export async function createCampaign(input) {
|
|
|
675
689
|
createdAt: existing.createdAt,
|
|
676
690
|
currentStep: existing.currentStep ?? null,
|
|
677
691
|
watchUrl,
|
|
692
|
+
...buildBriefApprovalGate(watchUrl),
|
|
678
693
|
resumed: true,
|
|
679
694
|
warning: hasCreateFields
|
|
680
695
|
? "campaignId provided; resume mode ignores create fields."
|
|
@@ -790,6 +805,7 @@ export async function createCampaign(input) {
|
|
|
790
805
|
createdAt: result.createdAt,
|
|
791
806
|
currentStep: result.currentStep,
|
|
792
807
|
watchUrl,
|
|
808
|
+
...buildBriefApprovalGate(watchUrl),
|
|
793
809
|
};
|
|
794
810
|
}
|
|
795
811
|
export async function updateCampaign(campaignId, input) {
|
package/package.json
CHANGED
|
@@ -427,13 +427,20 @@ brief`, `Revise target`, `Revise offer/proof`, and `Other / custom`.
|
|
|
427
427
|
not visible in this session, use `Approve brief + compare source paths`
|
|
428
428
|
instead. The customer approves the sourcing decision, not the host
|
|
429
429
|
implementation detail.
|
|
430
|
-
Include a `Watch link:` line
|
|
431
|
-
`create_campaign` has returned `watchUrl`.
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
430
|
+
Include a `Watch link:` line in the normal chat text immediately before the
|
|
431
|
+
brief approval question once `create_campaign` has returned `watchUrl`. This
|
|
432
|
+
is a hard gate for `AskUserQuestion` / `request_user_input`: do not ask
|
|
433
|
+
`Approve this brief before I start finding leads?` until the user has already
|
|
434
|
+
seen both (1) the full brief content being approved and (2) the watch link for
|
|
435
|
+
the live campaign shell. A summary like `the brief is visible there` is not a
|
|
436
|
+
valid approval surface. If the question panel would appear without the full
|
|
437
|
+
brief and a preceding `Watch link:` line, stop and render those first.
|
|
438
|
+
The visible brief must come before any optional debug persistence. After the
|
|
439
|
+
brief is synthesized, render the approval-ready brief in chat and
|
|
440
|
+
create/update the campaign shell before any visible `mkdir`, `Write`,
|
|
441
|
+
artifact-copy, or similar local draft setup. In normal customer runs, skip
|
|
442
|
+
local draft setup entirely. File/folder creation is not the user's value
|
|
443
|
+
moment; the live campaign brief is.
|
|
437
444
|
|
|
438
445
|
The approval question can be based on the rendered brief in chat and the live
|
|
439
446
|
campaign brief. Do not wait for file-write chrome before asking for approval.
|
|
@@ -439,10 +439,13 @@
|
|
|
439
439
|
"then I will find good-fit leads"
|
|
440
440
|
],
|
|
441
441
|
"minimumVisibleBriefDetail": "full_readable_brief_before_question",
|
|
442
|
+
"forbiddenSubstituteApprovalSurface": "Do not replace the visible brief with a summary like `the brief is visible there`; the user must see the actual campaign brief content in chat before the approval question.",
|
|
442
443
|
"requiredCampaignLinks": [
|
|
443
444
|
"watchUrl"
|
|
444
445
|
],
|
|
445
446
|
"campaignLinkTiming": "before_approval_question",
|
|
447
|
+
"questionToolGate": "Do not call AskUserQuestion or request_user_input for brief approval until the immediately preceding customer-visible chat text includes `Watch link:` with the create_campaign.watchUrl for this campaign shell.",
|
|
448
|
+
"missingWatchLinkRecovery": "If the brief approval question would appear before the watch link, stop and send the rendered brief checkpoint plus `Watch link: {watchUrl}` first; then ask the approve/revise question.",
|
|
446
449
|
"forbiddenNormalCustomerLinks": [
|
|
447
450
|
"brief.md",
|
|
448
451
|
"local draft path",
|
|
@@ -452,6 +455,12 @@
|
|
|
452
455
|
},
|
|
453
456
|
{
|
|
454
457
|
"action": "ask_continue_or_revise_only_if_needed",
|
|
458
|
+
"requiresPriorVisibleContent": [
|
|
459
|
+
"full readable brief",
|
|
460
|
+
"live campaign shell orientation",
|
|
461
|
+
"Watch link: {watchUrl}"
|
|
462
|
+
],
|
|
463
|
+
"mustNotCallQuestionToolUntil": "The watch link has already been shown in normal chat text after create_campaign returned watchUrl.",
|
|
455
464
|
"autoContinueWhen": {
|
|
456
465
|
"artifactStatus": "confirmed",
|
|
457
466
|
"confidenceIn": [
|
|
@@ -46,6 +46,11 @@ real-time updates from your signed-in session.
|
|
|
46
46
|
|
|
47
47
|
Command-Enter or click that link to watch it in Sellable.
|
|
48
48
|
|
|
49
|
+
Now ask the brief approval question. Do not show the approve/revise question
|
|
50
|
+
panel until the full brief content and this `Watch link:` line have appeared in
|
|
51
|
+
normal chat text. A summary such as "the brief is visible there" is not enough
|
|
52
|
+
for approval.
|
|
53
|
+
|
|
49
54
|
Cool, let's find leads.
|
|
50
55
|
```
|
|
51
56
|
|