@sellable/install 0.1.25 → 0.1.26
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/bin/sellable-install.mjs +49 -37
- package/package.json +1 -1
package/bin/sellable-install.mjs
CHANGED
|
@@ -15,7 +15,7 @@ import { createInterface } from "node:readline/promises";
|
|
|
15
15
|
const DEFAULT_API_URL = "https://app.sellable.dev";
|
|
16
16
|
const DEFAULT_SERVER_PACKAGE =
|
|
17
17
|
process.env.SELLABLE_MCP_PACKAGE || "@sellable/mcp";
|
|
18
|
-
const CODEX_PLUGIN_VERSION = "0.1.
|
|
18
|
+
const CODEX_PLUGIN_VERSION = "0.1.26";
|
|
19
19
|
const CODEX_PLUGIN_COMPAT_VERSIONS = [
|
|
20
20
|
"0.1.8",
|
|
21
21
|
"0.1.9",
|
|
@@ -34,6 +34,7 @@ const CODEX_PLUGIN_COMPAT_VERSIONS = [
|
|
|
34
34
|
"0.1.22",
|
|
35
35
|
"0.1.23",
|
|
36
36
|
"0.1.24",
|
|
37
|
+
"0.1.25",
|
|
37
38
|
];
|
|
38
39
|
const INSTALL_PACKAGE_SPEC = `@sellable/install@${CODEX_PLUGIN_VERSION}`;
|
|
39
40
|
|
|
@@ -541,6 +542,11 @@ Use the host-native structured question gate for intake and approval:
|
|
|
541
542
|
installer enables this in Default mode with
|
|
542
543
|
\`[features].default_mode_request_user_input = true\`.
|
|
543
544
|
|
|
545
|
+
Use the structured question gate only for multiple-choice decisions or approval
|
|
546
|
+
gates. Never use it to collect open text input like LinkedIn URLs, company
|
|
547
|
+
domains, notes, pasted context, campaign ideas, or feedback. For open text, ask
|
|
548
|
+
in normal chat and wait for the user to paste the value.
|
|
549
|
+
|
|
544
550
|
Customer-facing language must call this "a couple setup choices" during normal
|
|
545
551
|
campaign progress. Use "quick question panel" only when explaining a missing
|
|
546
552
|
Codex/Claude setup capability. Do not tell customers about \`request_user_input\`,
|
|
@@ -577,9 +583,10 @@ the campaign subject and sender before continuing.
|
|
|
577
583
|
If the user did not provide the launch identity, quietly call
|
|
578
584
|
\`mcp__sellable__list_senders\` once if available. This is a shortcut to deduce
|
|
579
585
|
who the user might be from their Sellable API token and connected LinkedIn
|
|
580
|
-
accounts. Do not
|
|
581
|
-
|
|
582
|
-
|
|
586
|
+
accounts. Do not ask the user to pick an input type before checking connected
|
|
587
|
+
senders. If there is any likely connected sender, use
|
|
588
|
+
\`mcp__sellable__enrich_sender\` on the best match to infer their current or most
|
|
589
|
+
recent company, then ask a structured confirmation question:
|
|
583
590
|
|
|
584
591
|
\`\`\`text
|
|
585
592
|
I’m ready to build this in {workspace}. I found {matched sender} connected here.
|
|
@@ -587,26 +594,30 @@ I’m ready to build this in {workspace}. I found {matched sender} connected her
|
|
|
587
594
|
Is that you, and is this campaign for {company}?
|
|
588
595
|
\`\`\`
|
|
589
596
|
|
|
590
|
-
The options must be:
|
|
597
|
+
The structured options must be no more than three choices:
|
|
598
|
+
|
|
599
|
+
1. \`Yes — use {matched sender} for {company}\`
|
|
600
|
+
2. \`No — I'll paste a LinkedIn profile\`
|
|
601
|
+
3. \`Use a company domain instead\`
|
|
591
602
|
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
4. \`No, I'll paste the company website instead\`
|
|
596
|
-
5. \`Other / custom\`
|
|
603
|
+
If there are multiple likely connected senders, mention the best one in the
|
|
604
|
+
question and use option 2 for either a different connected sender or a pasted
|
|
605
|
+
LinkedIn profile.
|
|
597
606
|
|
|
598
|
-
|
|
599
|
-
\`
|
|
600
|
-
user chooses option
|
|
607
|
+
Use the structured question tool only for the choice. Do not use
|
|
608
|
+
\`request_user_input\`/\`AskUserQuestion\` to collect a LinkedIn URL, company
|
|
609
|
+
domain, or freeform text. If the user chooses option 2, ask in normal chat:
|
|
610
|
+
\`Paste the LinkedIn URL I should use, and I’ll look it up.\` Then call
|
|
601
611
|
\`mcp__sellable__fetch_linkedin_profile\`, infer their current or most recent
|
|
602
|
-
company,
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
send from.
|
|
612
|
+
company, and confirm company and sender again. If the user chooses option 3, ask
|
|
613
|
+
in normal chat: \`Paste the company domain, and I’ll do a quick lookup before we
|
|
614
|
+
keep going.\` Then call \`mcp__sellable__fetch_company\` when possible, otherwise
|
|
615
|
+
one web lookup, and ask who the LinkedIn messages should send from.
|
|
606
616
|
|
|
607
617
|
If \`mcp__sellable__list_senders\` returns zero connected senders, avoid the
|
|
608
|
-
sender-confirmation branch entirely.
|
|
609
|
-
|
|
618
|
+
sender-confirmation branch entirely. Do not ask the user to choose an input type
|
|
619
|
+
with the structured question tool. Ask in normal chat for the user's LinkedIn
|
|
620
|
+
URL or the company they want to send on behalf of so you can research context:
|
|
610
621
|
|
|
611
622
|
\`\`\`text
|
|
612
623
|
I’m ready to build this in {workspace}.
|
|
@@ -616,11 +627,11 @@ behalf of. I’ll use that to understand the company before we pick the target,
|
|
|
616
627
|
offer, proof, and lead source.
|
|
617
628
|
\`\`\`
|
|
618
629
|
|
|
619
|
-
If there is no strong sender match,
|
|
620
|
-
|
|
621
|
-
sender"; it is to learn who the user is, infer the
|
|
622
|
-
company, and then confirm who we are sending from. The
|
|
623
|
-
should be:
|
|
630
|
+
If there is no strong sender match, do not show a structured choice that says
|
|
631
|
+
"LinkedIn profile" vs "Company website". The point of this gate is not "pick a
|
|
632
|
+
sender" or "pick an input type"; it is to learn who the user is, infer the
|
|
633
|
+
current or most recent company, and then confirm who we are sending from. The
|
|
634
|
+
customer-facing shape should be:
|
|
624
635
|
|
|
625
636
|
\`\`\`text
|
|
626
637
|
I’m ready to build this in {workspace}.
|
|
@@ -629,12 +640,7 @@ First, what’s your LinkedIn URL? If you’d rather start from the company, pas
|
|
|
629
640
|
the company website instead.
|
|
630
641
|
\`\`\`
|
|
631
642
|
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
1. \`What’s your LinkedIn URL?\` Options: \`I’ll paste my LinkedIn profile\`,
|
|
635
|
-
\`I’ll paste the company website instead\`, \`Other / custom\`.
|
|
636
|
-
|
|
637
|
-
After that answer, do the lightweight lookup. For a LinkedIn profile, call
|
|
643
|
+
After the user pastes a URL/domain, do the lightweight lookup. For a LinkedIn profile, call
|
|
638
644
|
\`mcp__sellable__fetch_linkedin_profile\` and infer the user's current or most
|
|
639
645
|
recent company from the profile. For a company website, call
|
|
640
646
|
\`mcp__sellable__fetch_company\` when possible, otherwise one web lookup.
|
|
@@ -904,10 +910,10 @@ brief before anything is created.
|
|
|
904
910
|
Good identity setup:
|
|
905
911
|
|
|
906
912
|
\`\`\`text
|
|
907
|
-
I’ll check whether you already have a connected
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
913
|
+
I’ll check whether you already have a connected sender here. If I find one, I’ll
|
|
914
|
+
ask whether that’s you and whether this campaign is for that company. If not,
|
|
915
|
+
just paste your LinkedIn URL or company domain and I’ll look it up before we
|
|
916
|
+
keep going.
|
|
911
917
|
\`\`\`
|
|
912
918
|
|
|
913
919
|
Bad:
|
|
@@ -919,9 +925,15 @@ First I’ll check whether your Sellable token already tells me who you are.
|
|
|
919
925
|
Better:
|
|
920
926
|
|
|
921
927
|
\`\`\`text
|
|
922
|
-
I
|
|
923
|
-
|
|
924
|
-
|
|
928
|
+
I found Christian Reyes connected here. Is that you, and is this campaign for
|
|
929
|
+
Sellable? If not, choose LinkedIn profile or company domain and I’ll ask you to
|
|
930
|
+
paste it in chat.
|
|
931
|
+
\`\`\`
|
|
932
|
+
|
|
933
|
+
Bad:
|
|
934
|
+
|
|
935
|
+
\`\`\`text
|
|
936
|
+
What should I use to confirm who this campaign is for?
|
|
925
937
|
\`\`\`
|
|
926
938
|
|
|
927
939
|
Bad:
|