@sellable/install 0.1.9 → 0.1.10
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/README.md +4 -0
- package/bin/sellable-install.mjs +43 -12
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -65,4 +65,8 @@ It uses the phrase `quick question panel` for structured intake and approvals.
|
|
|
65
65
|
It also tells the agent not to expose prompt-loading, MCP, plugin-cache, or tool
|
|
66
66
|
names in normal customer-facing progress updates.
|
|
67
67
|
|
|
68
|
+
The installer writes compatibility cache aliases for recent Codex plugin
|
|
69
|
+
versions so stale Desktop skill links resolve to the current wrapper instead of
|
|
70
|
+
showing file/version debugging to the user.
|
|
71
|
+
|
|
68
72
|
If only one host is installed, `--host all` installs the available host and tells you how to add the other one later.
|
package/bin/sellable-install.mjs
CHANGED
|
@@ -15,7 +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.
|
|
18
|
+
const CODEX_PLUGIN_VERSION = "0.1.10";
|
|
19
|
+
const CODEX_PLUGIN_COMPAT_VERSIONS = ["0.1.8", "0.1.9"];
|
|
19
20
|
const INSTALL_PACKAGE_SPEC = `@sellable/install@${CODEX_PLUGIN_VERSION}`;
|
|
20
21
|
|
|
21
22
|
function usage() {
|
|
@@ -452,6 +453,22 @@ ${allowedToolsYaml(CREATE_CAMPAIGN_ALLOWED_TOOLS)}
|
|
|
452
453
|
|
|
453
454
|
Use this as the customer-facing entrypoint for Sellable campaign creation.
|
|
454
455
|
|
|
456
|
+
## Opening Turn Contract
|
|
457
|
+
|
|
458
|
+
On the first visible response after this skill is invoked, do not narrate
|
|
459
|
+
instruction loading, file lookup, plugin cache versions, missing linked files,
|
|
460
|
+
or tool discovery. Start in product language:
|
|
461
|
+
|
|
462
|
+
\`\`\`text
|
|
463
|
+
I’ll build this as an approval-gated Sellable campaign. First I’ll confirm the
|
|
464
|
+
workspace, then I’ll use the quick question panel to collect the setup choices
|
|
465
|
+
before anything is created.
|
|
466
|
+
\`\`\`
|
|
467
|
+
|
|
468
|
+
If a linked/local skill file is stale or missing, silently use the installed
|
|
469
|
+
\`sellable@sellable\` plugin copy. Do not tell the user about the stale link,
|
|
470
|
+
the old version, or the replacement path.
|
|
471
|
+
|
|
455
472
|
## Command Soul
|
|
456
473
|
|
|
457
474
|
You are the Sellable campaign GTM engineer. The user is a founder or operator
|
|
@@ -753,6 +770,12 @@ function installCodexDesktopPlugin(opts) {
|
|
|
753
770
|
const pluginRoot = join(marketplaceRoot, "plugins", "sellable");
|
|
754
771
|
const cacheRoot = join(home, "plugins", "cache", "sellable", "sellable");
|
|
755
772
|
const pluginCache = join(cacheRoot, CODEX_PLUGIN_VERSION);
|
|
773
|
+
const pluginCacheVersions = [
|
|
774
|
+
CODEX_PLUGIN_VERSION,
|
|
775
|
+
...CODEX_PLUGIN_COMPAT_VERSIONS.filter(
|
|
776
|
+
(version) => version !== CODEX_PLUGIN_VERSION
|
|
777
|
+
),
|
|
778
|
+
];
|
|
756
779
|
|
|
757
780
|
const marketplace = {
|
|
758
781
|
name: "sellable",
|
|
@@ -794,17 +817,24 @@ function installCodexDesktopPlugin(opts) {
|
|
|
794
817
|
if (!opts.dryRun) {
|
|
795
818
|
rmSync(cacheRoot, { recursive: true, force: true });
|
|
796
819
|
}
|
|
797
|
-
|
|
798
|
-
join(
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
820
|
+
for (const version of pluginCacheVersions) {
|
|
821
|
+
const cachePath = join(cacheRoot, version);
|
|
822
|
+
writeFile(
|
|
823
|
+
join(cachePath, ".codex-plugin", "plugin.json"),
|
|
824
|
+
`${JSON.stringify(
|
|
825
|
+
{ ...manifest, version: CODEX_PLUGIN_VERSION },
|
|
826
|
+
null,
|
|
827
|
+
2
|
|
828
|
+
)}\n`,
|
|
829
|
+
opts
|
|
830
|
+
);
|
|
831
|
+
writeFile(
|
|
832
|
+
join(cachePath, ".mcp.json"),
|
|
833
|
+
`${JSON.stringify(mcp, null, 2)}\n`,
|
|
834
|
+
opts
|
|
835
|
+
);
|
|
836
|
+
writeCodexPluginSkills(cachePath, opts);
|
|
837
|
+
}
|
|
808
838
|
|
|
809
839
|
if (!opts.dryRun) {
|
|
810
840
|
mkdirSync(home, { recursive: true, mode: 0o700 });
|
|
@@ -853,6 +883,7 @@ enabled = false`
|
|
|
853
883
|
console.log(`- marketplace: ${marketplaceRoot}`);
|
|
854
884
|
console.log(`- plugin: sellable@sellable`);
|
|
855
885
|
console.log(`- cache: ${pluginCache}`);
|
|
886
|
+
console.log(`- compat: ${CODEX_PLUGIN_COMPAT_VERSIONS.join(", ")}`);
|
|
856
887
|
}
|
|
857
888
|
|
|
858
889
|
function writeAuth(opts) {
|