@sellable/install 0.1.22 → 0.1.24

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.22";
18
+ const CODEX_PLUGIN_VERSION = "0.1.24";
19
19
  const CODEX_PLUGIN_COMPAT_VERSIONS = [
20
20
  "0.1.8",
21
21
  "0.1.9",
@@ -31,6 +31,8 @@ const CODEX_PLUGIN_COMPAT_VERSIONS = [
31
31
  "0.1.19",
32
32
  "0.1.20",
33
33
  "0.1.21",
34
+ "0.1.22",
35
+ "0.1.23",
34
36
  ];
35
37
  const INSTALL_PACKAGE_SPEC = `@sellable/install@${CODEX_PLUGIN_VERSION}`;
36
38
 
@@ -865,10 +867,15 @@ The user should be able to compare "here is the template" against "here is what
865
867
  one real prospect would receive" before approving, and understand exactly how
866
868
  the tokens should and should not be filled.
867
869
 
870
+ Every token needs a fallback. If the row does not have clean data for a token,
871
+ the approval view should say whether to use a safe segment-level phrase, omit
872
+ the sentence, or revise the message. Missing data should never produce robotic
873
+ or creepy copy.
874
+
868
875
  Approved token guidance is part of the campaign, not just the review. When a
869
876
  campaign is minted, the approved brief should carry forward the token fill
870
- rules and examples: good fills, good omits, bad fills, and why the bad fills are
871
- blocked.
877
+ rules and examples: good fills, good omits, bad fills, fallback rules, and why
878
+ the bad fills are blocked.
872
879
 
873
880
  For lead-source decisions, confidence comes from concrete counts. Do not say
874
881
  "strong sample", "73% match", or "meaningful concentration" without showing the
@@ -1180,6 +1187,14 @@ function writeAuth(opts) {
1180
1187
  writeJson(sellablePath, config, opts);
1181
1188
  }
1182
1189
 
1190
+ function installSelfShim(opts) {
1191
+ const binPath = join(homedir(), ".local", "bin", "sellable");
1192
+ const shim = `#!/usr/bin/env sh
1193
+ exec npx -y ${INSTALL_PACKAGE_SPEC} "$@"
1194
+ `;
1195
+ writeFile(binPath, shim, opts, 0o755);
1196
+ }
1197
+
1183
1198
  function mcpCommand(opts) {
1184
1199
  if (opts.server === "package") {
1185
1200
  return ["npx", ["-y", opts.mcpPackage]];
@@ -1353,6 +1368,7 @@ async function main() {
1353
1368
  if (!opts.verifyOnly) {
1354
1369
  await promptForMissingAuth(opts);
1355
1370
  writeAuth(opts);
1371
+ installSelfShim(opts);
1356
1372
  if (opts.host === "claude" || opts.host === "all") {
1357
1373
  if (installClaude(opts)) installedHosts.push("Claude Code");
1358
1374
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sellable/install",
3
- "version": "0.1.22",
3
+ "version": "0.1.24",
4
4
  "type": "module",
5
5
  "description": "One-command installer for Sellable MCP in Claude Code and Codex",
6
6
  "bin": {