@sellable/install 0.1.10 → 0.1.12
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 +72 -12
- package/package.json +1 -1
package/bin/sellable-install.mjs
CHANGED
|
@@ -15,8 +15,8 @@ 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.
|
|
19
|
-
const CODEX_PLUGIN_COMPAT_VERSIONS = ["0.1.8", "0.1.9"];
|
|
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"];
|
|
20
20
|
const INSTALL_PACKAGE_SPEC = `@sellable/install@${CODEX_PLUGIN_VERSION}`;
|
|
21
21
|
|
|
22
22
|
function usage() {
|
|
@@ -460,9 +460,9 @@ instruction loading, file lookup, plugin cache versions, missing linked files,
|
|
|
460
460
|
or tool discovery. Start in product language:
|
|
461
461
|
|
|
462
462
|
\`\`\`text
|
|
463
|
-
I’ll build this as an approval-gated Sellable campaign. First I’ll confirm
|
|
464
|
-
|
|
465
|
-
before anything is created.
|
|
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.
|
|
466
466
|
\`\`\`
|
|
467
467
|
|
|
468
468
|
If a linked/local skill file is stale or missing, silently use the installed
|
|
@@ -515,16 +515,75 @@ Customer-facing language must call this the "quick question panel." Do not tell
|
|
|
515
515
|
customers about \`request_user_input\`, Default mode, plugin caches, prompt
|
|
516
516
|
loading, or skill file versions.
|
|
517
517
|
|
|
518
|
-
|
|
518
|
+
## Identity-First Campaign Setup
|
|
519
|
+
|
|
520
|
+
Do not treat the active Sellable workspace as the campaign subject. The
|
|
521
|
+
workspace only tells you where the campaign will be saved. Before buyer, CTA,
|
|
522
|
+
proof, or source questions, identify two things:
|
|
523
|
+
|
|
524
|
+
1. who/what company this campaign is for, and
|
|
525
|
+
2. who the LinkedIn messages should send from.
|
|
526
|
+
|
|
527
|
+
If the user supplied a LinkedIn profile, website, domain, company name, or
|
|
528
|
+
sender name in the invocation, do one lightweight lookup first:
|
|
529
|
+
|
|
530
|
+
- LinkedIn profile: call \`mcp__sellable__fetch_linkedin_profile\`.
|
|
531
|
+
- Website/domain/company: call \`mcp__sellable__fetch_company\` when possible,
|
|
532
|
+
otherwise one web lookup.
|
|
533
|
+
- Workspace sender id or known sender: call \`mcp__sellable__get_sender\` or
|
|
534
|
+
\`mcp__sellable__enrich_sender\`.
|
|
535
|
+
|
|
536
|
+
Then summarize what you found in one or two lines and ask the user to confirm
|
|
537
|
+
the campaign subject and sender before continuing.
|
|
538
|
+
|
|
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.
|
|
544
|
+
|
|
545
|
+
The customer-facing shape should be:
|
|
546
|
+
|
|
547
|
+
\`\`\`text
|
|
548
|
+
I found these connected senders in {workspace}: {sender names}.
|
|
549
|
+
|
|
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.
|
|
553
|
+
\`\`\`
|
|
554
|
+
|
|
555
|
+
The identity gate should ask:
|
|
556
|
+
|
|
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\`.
|
|
563
|
+
|
|
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:
|
|
569
|
+
|
|
570
|
+
\`\`\`text
|
|
571
|
+
Cool — I have this as {campaign subject/company}, sending from {sender}. Is that right?
|
|
572
|
+
\`\`\`
|
|
573
|
+
|
|
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.
|
|
578
|
+
|
|
579
|
+
Before the identity gate, use this customer-facing shape:
|
|
519
580
|
|
|
520
581
|
\`\`\`text
|
|
521
582
|
I’m ready to build the campaign in {workspace}.
|
|
522
583
|
|
|
523
|
-
First I
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
3. what proof or offer we should use
|
|
527
|
-
4. where we should source leads
|
|
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.
|
|
528
587
|
|
|
529
588
|
Then I’ll turn that into a campaign brief for you to approve before anything is created.
|
|
530
589
|
\`\`\`
|
|
@@ -549,7 +608,8 @@ Done. Please fully quit and reopen Codex, then run:
|
|
|
549
608
|
|
|
550
609
|
$sellable:create-campaign
|
|
551
610
|
|
|
552
|
-
After that, I’ll
|
|
611
|
+
After that, I’ll confirm who we’re launching for, then ask the setup questions
|
|
612
|
+
and start the campaign brief.
|
|
553
613
|
\`\`\`
|
|
554
614
|
|
|
555
615
|
If they decline, tell them:
|