@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.
@@ -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.25";
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 present it as a sender picker yet. If there is one strong
581
- likely sender, use \`mcp__sellable__enrich_sender\` to infer their current or
582
- most recent company, then ask a structured confirmation question:
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
- 1. \`Yes, that's me and this is for {company}\`
593
- 2. \`That's me, but this is for a different company\`
594
- 3. \`No, I'll paste my LinkedIn URL so you can look me up\`
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
- If the user chooses option 2, ask for the company website/domain and call
599
- \`mcp__sellable__fetch_company\` when possible, otherwise one web lookup. If the
600
- user chooses option 3, ask for their LinkedIn URL, call
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, then confirm company and sender again. If the user chooses option 4,
603
- ask for the company website/domain, call \`mcp__sellable__fetch_company\` when
604
- possible, otherwise one web lookup, then ask who the LinkedIn messages should
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. Ask for the user's LinkedIn URL or the
609
- company they want to send on behalf of so you can research context:
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, make the first setup choice ask for the
620
- user's LinkedIn URL or company website. The point of this gate is not "pick a
621
- sender"; it is to learn who the user is, infer the current or most recent
622
- company, and then confirm who we are sending from. The customer-facing shape
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
- The LinkedIn/company identity gate should ask:
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 LinkedIn account here. If I cant
908
- confirm it, Ill ask for your LinkedIn URL or company website and use that to
909
- understand the company before we choose the target, offer, proof, and lead
910
- source.
913
+ I’ll check whether you already have a connected sender here. If I find one, Ill
914
+ ask whether thats 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’ll first check whether you already have a connected sender here. If not, I’ll
923
- ask for your LinkedIn URL or company website and use that to understand the
924
- campaign before we choose the audience and offer.
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:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sellable/install",
3
- "version": "0.1.25",
3
+ "version": "0.1.26",
4
4
  "type": "module",
5
5
  "description": "One-command installer for Sellable MCP in Claude Code and Codex",
6
6
  "bin": {