@sellable/install 0.1.210 → 0.1.211
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
CHANGED
|
@@ -771,7 +771,46 @@ function codexSkillOpenAiYaml(displayName, description) {
|
|
|
771
771
|
`;
|
|
772
772
|
}
|
|
773
773
|
|
|
774
|
-
function
|
|
774
|
+
function createCampaignHostContract(host) {
|
|
775
|
+
if (host === "codex") {
|
|
776
|
+
return `## Installed Host Contract
|
|
777
|
+
|
|
778
|
+
This installed skill is running in Codex. Treat Codex as the current host, use
|
|
779
|
+
\`request_user_input\` for structured questions when it is exposed, use
|
|
780
|
+
\`$sellable:create-campaign\` in user-facing retry instructions, and call
|
|
781
|
+
\`mcp__sellable__bootstrap_create_campaign\` with \`host: "Codex"\` plus the
|
|
782
|
+
current Codex model and reasoning when available.
|
|
783
|
+
|
|
784
|
+
Do not describe this run as Claude Code and do not recommend Claude Code-only
|
|
785
|
+
commands or settings from this Codex skill.`;
|
|
786
|
+
}
|
|
787
|
+
|
|
788
|
+
if (host === "claude") {
|
|
789
|
+
return `## Installed Host Contract
|
|
790
|
+
|
|
791
|
+
This installed command is running in Claude Code. Treat Claude Code as the
|
|
792
|
+
current host, use \`AskUserQuestion\` for structured questions, use
|
|
793
|
+
\`/sellable:create-campaign\` in user-facing retry instructions, and call
|
|
794
|
+
\`mcp__sellable__bootstrap_create_campaign\` with \`host: "Claude Code"\` plus
|
|
795
|
+
the current Claude Code model and reasoning when available.
|
|
796
|
+
|
|
797
|
+
Do not describe this run as Codex and do not recommend Codex-only commands or
|
|
798
|
+
settings from this Claude Code command.`;
|
|
799
|
+
}
|
|
800
|
+
|
|
801
|
+
return "";
|
|
802
|
+
}
|
|
803
|
+
|
|
804
|
+
function addCreateCampaignHostContract(markdown, host) {
|
|
805
|
+
const contract = createCampaignHostContract(host);
|
|
806
|
+
if (!contract) return markdown;
|
|
807
|
+
return String(markdown).replace(
|
|
808
|
+
"\n# Sellable Create Campaign\n",
|
|
809
|
+
`\n# Sellable Create Campaign\n\n${contract}\n`
|
|
810
|
+
);
|
|
811
|
+
}
|
|
812
|
+
|
|
813
|
+
function createCampaignSkillMd({ host = "shared" } = {}) {
|
|
775
814
|
// Single source of truth: ../skill-templates/create-campaign.md, which is
|
|
776
815
|
// copied from the canonical mcp/sellable/skills/create-campaign/SKILL.md at
|
|
777
816
|
// publish time via scripts/sync-skill-templates.mjs (prepublishOnly hook).
|
|
@@ -786,7 +825,10 @@ function createCampaignSkillMd() {
|
|
|
786
825
|
"create-campaign.md"
|
|
787
826
|
);
|
|
788
827
|
if (existsSync(templatePath)) {
|
|
789
|
-
return
|
|
828
|
+
return addCreateCampaignHostContract(
|
|
829
|
+
readFileSync(templatePath, "utf8"),
|
|
830
|
+
host
|
|
831
|
+
);
|
|
790
832
|
}
|
|
791
833
|
} catch {
|
|
792
834
|
// fall through to hardcoded fallback below
|
|
@@ -1827,7 +1869,7 @@ function codexPluginSkills() {
|
|
|
1827
1869
|
dir: "sellable-create-campaign",
|
|
1828
1870
|
displayName: "Sellable Create Campaign",
|
|
1829
1871
|
description: "Create a Sellable campaign with approval gates",
|
|
1830
|
-
skillMd: createCampaignSkillMd(),
|
|
1872
|
+
skillMd: createCampaignSkillMd({ host: "codex" }),
|
|
1831
1873
|
soulMd: createCampaignSoulMd(),
|
|
1832
1874
|
},
|
|
1833
1875
|
{
|
|
@@ -2051,7 +2093,7 @@ function claudeCommands() {
|
|
|
2051
2093
|
filename: join("sellable", "create-campaign.md"),
|
|
2052
2094
|
description: "Create a Sellable campaign through the approval-gated workflow.",
|
|
2053
2095
|
argumentHint: "[campaign goal, company, or offer]",
|
|
2054
|
-
skillMd: createCampaignSkillMd(),
|
|
2096
|
+
skillMd: createCampaignSkillMd({ host: "claude" }),
|
|
2055
2097
|
allowedTools: ["AskUserQuestion", "Task", ...CREATE_CAMPAIGN_ALLOWED_TOOLS],
|
|
2056
2098
|
},
|
|
2057
2099
|
{
|
package/package.json
CHANGED
|
@@ -775,9 +775,10 @@ messages, and wait for final launch approval.
|
|
|
775
775
|
What's your LinkedIn profile URL or handle?
|
|
776
776
|
```
|
|
777
777
|
|
|
778
|
-
|
|
779
|
-
`request_user_input` is unavailable in an interactive session.
|
|
780
|
-
|
|
778
|
+
Codex only: do not silently ask intake or approval questions as plain chat when
|
|
779
|
+
`request_user_input` is unavailable in an interactive Codex session. Claude Code
|
|
780
|
+
uses `AskUserQuestion`; do not apply this Codex setup blocker in Claude Code.
|
|
781
|
+
In Codex, stop and tell the user:
|
|
781
782
|
|
|
782
783
|
```text
|
|
783
784
|
I need Codex’s quick question panel to collect campaign inputs and approvals cleanly.
|
|
@@ -816,17 +817,18 @@ there.
|
|
|
816
817
|
## Bootstrap
|
|
817
818
|
|
|
818
819
|
MCP tool access is required. First call `mcp__sellable__get_auth_status({})`
|
|
819
|
-
directly. If that tool is unavailable, stop and say this is a
|
|
820
|
-
install/reload problem, not a campaign problem. Tell the
|
|
821
|
-
run `curl -fsSL "https://app.sellable.dev/api/v2/cli/install" | sh` so
|
|
822
|
-
packaged MCP server
|
|
823
|
-
|
|
820
|
+
directly. If that tool is unavailable, stop and say this is a Sellable
|
|
821
|
+
install/reload problem for the current host, not a campaign problem. Tell the
|
|
822
|
+
user to run `curl -fsSL "https://app.sellable.dev/api/v2/cli/install" | sh` so
|
|
823
|
+
the packaged MCP server and the current host integration are installed. If they
|
|
824
|
+
want an agent-readable checklist, tell them:
|
|
824
825
|
`Install Sellable CLI and skills using https://app.sellable.dev/agent-install.txt`.
|
|
825
826
|
For CLI verification, tell them to run
|
|
826
827
|
`sellable --verify-only --host all --json --artifact "$HOME/.local/sellable/app-sellable-dev/installer/.last-verify.json"`.
|
|
827
|
-
After that, they must fully quit and reopen
|
|
828
|
-
thread.
|
|
829
|
-
|
|
828
|
+
After that, they must fully quit and reopen the current host app before starting
|
|
829
|
+
a new thread. In Codex, say Codex Desktop. In Claude Code, say Claude Code. Do
|
|
830
|
+
not use `scripts/mcp/sellable-tool-call.mjs`, `npm run`, `node`, or any local
|
|
831
|
+
harness as a fallback for this interactive skill.
|
|
830
832
|
Do not mention prompt loading, local skill files, missing linked versions,
|
|
831
833
|
plugin cache paths, MCP namespaces, or runbooks in customer-facing progress
|
|
832
834
|
updates.
|
|
@@ -938,8 +940,10 @@ updates.
|
|
|
938
940
|
- Do not call `mcp__sellable__get_campaigns`.
|
|
939
941
|
- Do not call `mcp__sellable__get_campaign` to hunt for IDs.
|
|
940
942
|
- Do not call `mcp__sellable__create_campaign({ campaignId: ... })` unless the user supplied that id.
|
|
941
|
-
6. Call `mcp__sellable__bootstrap_create_campaign({ flowVersion: "v2", campaignId?, host
|
|
942
|
-
Pass the current host
|
|
943
|
+
6. Call `mcp__sellable__bootstrap_create_campaign({ flowVersion: "v2", campaignId?, host, model?, reasoningEffort? })`.
|
|
944
|
+
Pass the explicit current host label: `host: "Codex"` from Codex and
|
|
945
|
+
`host: "Claude Code"` from Claude Code. Also pass the current model and
|
|
946
|
+
reasoning when the host exposes them.
|
|
943
947
|
7. If `safeToProceed !== true`, stop and show `blockingErrors` + `nextStep`.
|
|
944
948
|
8. If `modelQuality.status === "warn"` and `modelQuality.metadataStale !== true`,
|
|
945
949
|
show `modelQuality.message` before any setup/research and wait for the user
|