@sellable/install 0.1.12 → 0.1.14

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,8 +15,15 @@ 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.12";
19
- const CODEX_PLUGIN_COMPAT_VERSIONS = ["0.1.8", "0.1.9", "0.1.10", "0.1.11"];
18
+ const CODEX_PLUGIN_VERSION = "0.1.14";
19
+ const CODEX_PLUGIN_COMPAT_VERSIONS = [
20
+ "0.1.8",
21
+ "0.1.9",
22
+ "0.1.10",
23
+ "0.1.11",
24
+ "0.1.12",
25
+ "0.1.13",
26
+ ];
20
27
  const INSTALL_PACKAGE_SPEC = `@sellable/install@${CODEX_PLUGIN_VERSION}`;
21
28
 
22
29
  function usage() {
@@ -460,9 +467,9 @@ instruction loading, file lookup, plugin cache versions, missing linked files,
460
467
  or tool discovery. Start in product language:
461
468
 
462
469
  \`\`\`text
463
- I’ll build this as an approval-gated Sellable campaign. First I’ll confirm who
464
- we’re launching for, then I’ll use the quick question panel to collect the
465
- campaign choices before anything is created.
470
+ I’ll build this as an approval-gated Sellable campaign. First I’ll ask who you
471
+ are, use your LinkedIn or company site to understand the company, then confirm
472
+ the sender before anything is created.
466
473
  \`\`\`
467
474
 
468
475
  If a linked/local skill file is stale or missing, silently use the installed
@@ -536,54 +543,89 @@ sender name in the invocation, do one lightweight lookup first:
536
543
  Then summarize what you found in one or two lines and ask the user to confirm
537
544
  the campaign subject and sender before continuing.
538
545
 
539
- If the user did not provide the launch identity, make the first quick question
540
- panel an identity gate. The point of this gate is not "pick a sender"; it is to
541
- learn who the user is / what company we are launching for, and who we should
542
- send from. Before that gate, call \`mcp__sellable__list_senders\` once if it is
543
- available, only so you can offer connected senders as shortcuts.
546
+ If the user did not provide the launch identity, quietly call
547
+ \`mcp__sellable__list_senders\` once if available. This is a shortcut to deduce
548
+ who the user might be from their Sellable API token and connected LinkedIn
549
+ accounts. Do not present it as a sender picker yet. If there is one strong
550
+ likely sender, use \`mcp__sellable__enrich_sender\` to infer their current or
551
+ most recent company, then ask a structured confirmation question:
552
+
553
+ \`\`\`text
554
+ I’m ready to build this in {workspace}. I found {matched sender} connected here.
555
+
556
+ Is that you, and is this campaign for {company}?
557
+ \`\`\`
544
558
 
545
- The customer-facing shape should be:
559
+ The options must be:
560
+
561
+ 1. \`Yes, that's me and this is for {company}\`
562
+ 2. \`That's me, but this is for a different company\`
563
+ 3. \`No, I'll paste my LinkedIn URL so you can look me up\`
564
+ 4. \`No, I'll paste the company website instead\`
565
+ 5. \`Other / custom\`
566
+
567
+ If the user chooses option 2, ask for the company website/domain and call
568
+ \`mcp__sellable__fetch_company\` when possible, otherwise one web lookup. If the
569
+ user chooses option 3, ask for their LinkedIn URL, call
570
+ \`mcp__sellable__fetch_linkedin_profile\`, infer their current or most recent
571
+ company, then confirm company and sender again. If the user chooses option 4,
572
+ ask for the company website/domain, call \`mcp__sellable__fetch_company\` when
573
+ possible, otherwise one web lookup, then ask who the LinkedIn messages should
574
+ send from.
575
+
576
+ If there is no strong sender match, make the first quick question panel ask for
577
+ the user's LinkedIn URL or company website. The point of this gate is not "pick
578
+ a sender"; it is to learn who the user is, infer the current or most recent
579
+ company, and then confirm who we are sending from. The customer-facing shape
580
+ should be:
546
581
 
547
582
  \`\`\`text
548
- I found these connected senders in {workspace}: {sender names}.
583
+ I’m ready to build this in {workspace}.
549
584
 
550
- First I need to know who this campaign is for and who we’re sending from. If
551
- one of these connected senders is you, pick them; otherwise paste your LinkedIn
552
- URL or company website.
585
+ First, what’s your LinkedIn URL? If you’d rather start from the company, paste
586
+ the company website instead.
553
587
  \`\`\`
554
588
 
555
- The identity gate should ask:
589
+ The LinkedIn/company identity gate should ask:
590
+
591
+ 1. \`What’s your LinkedIn URL?\` Options: \`I’ll paste my LinkedIn profile\`,
592
+ \`I’ll paste the company website instead\`, \`Other / custom\`.
556
593
 
557
- 1. \`Who is this campaign for?\` Options: connected sender names if available,
558
- \`I’ll paste a LinkedIn profile\`, \`I’ll paste a company website/domain\`,
559
- \`Other / custom\`.
560
- 2. \`Who should the LinkedIn messages send from?\` Options: \`same person/company\`,
561
- connected sender names if available, \`I’ll paste a different sender profile\`,
562
- \`Other / custom\`.
594
+ After that answer, do the lightweight lookup. For a LinkedIn profile, call
595
+ \`mcp__sellable__fetch_linkedin_profile\` and infer the user's current or most
596
+ recent company from the profile. For a company website, call
597
+ \`mcp__sellable__fetch_company\` when possible, otherwise one web lookup.
563
598
 
564
- After that answer, do the lightweight lookup. For a connected sender, call
565
- \`mcp__sellable__enrich_sender\` and identify their current or most recent
566
- company. For a LinkedIn profile, call
567
- \`mcp__sellable__fetch_linkedin_profile\` and infer the current or most recent
568
- company from the profile. Then ask:
599
+ If \`mcp__sellable__list_senders\` did not already run, call it once after the
600
+ lookup to see whether the fetched user appears to match a connected sender. If
601
+ there is a likely match, ask:
569
602
 
570
603
  \`\`\`text
571
- Cool — I have this as {campaign subject/company}, sending from {sender}. Is that right?
604
+ Cool — are you {matched sender}, and is this campaign for {company}?
572
605
  \`\`\`
573
606
 
574
- After the user confirms the subject and sender, run one lightweight company lookup
575
- (\`mcp__sellable__fetch_company\` when possible, otherwise one web lookup), then
576
- ask the campaign setup questions. The setup questions should use the confirmed
577
- company context so they do not feel generic.
607
+ If there is no likely sender match, ask:
608
+
609
+ \`\`\`text
610
+ Cool — I have this campaign as {company}. Who should the LinkedIn messages send from?
611
+ \`\`\`
612
+
613
+ Sender options should include connected sender names if available, \`same as
614
+ me\`, \`I’ll paste a different sender profile\`, and \`Other / custom\`.
615
+
616
+ After the user confirms the subject and sender, run one lightweight company
617
+ lookup if it has not already run, then ask the campaign setup questions. The
618
+ setup questions should use the confirmed company context so they do not feel
619
+ generic.
578
620
 
579
621
  Before the identity gate, use this customer-facing shape:
580
622
 
581
623
  \`\`\`text
582
624
  I’m ready to build the campaign in {workspace}.
583
625
 
584
- First I need to confirm who this campaign is for and who we’re sending from. If
585
- you already have a connected sender, I can use that to infer the company;
586
- otherwise paste a LinkedIn profile or company website and I’ll look it up.
626
+ First I’ll check whether your Sellable token already tells me who you are. If
627
+ not, I’ll ask for your LinkedIn URL or company website, look it up, then confirm
628
+ the company and sender before we pick the target, offer, proof, and lead source.
587
629
 
588
630
  Then I’ll turn that into a campaign brief for you to approve before anything is created.
589
631
  \`\`\`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sellable/install",
3
- "version": "0.1.12",
3
+ "version": "0.1.14",
4
4
  "type": "module",
5
5
  "description": "One-command installer for Sellable MCP in Claude Code and Codex",
6
6
  "bin": {