@sellable/install 0.1.326 → 0.1.327

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.
@@ -11,13 +11,25 @@ export const REQUIRED_SELLABLE_MCP_TOOLS = [
11
11
  "start_cli_login",
12
12
  "wait_for_cli_login",
13
13
  "bootstrap_create_campaign",
14
+ "bootstrap_find_leads",
15
+ "get_find_leads_run",
16
+ "update_find_leads_run",
17
+ "wait_for_find_leads_run",
18
+ "cancel_find_leads",
19
+ "reissue_find_leads_watch_link",
20
+ "preflight_find_leads_provider",
14
21
  "get_subskill_prompt",
15
22
  "get_subskill_asset",
16
23
  "search_subskill_prompts",
17
24
  "create_campaign",
18
25
  "import_leads",
26
+ "search_sales_nav",
27
+ "search_prospeo",
28
+ "search_signals",
29
+ "select_promising_posts",
19
30
  "confirm_lead_list",
20
31
  "wait_for_lead_list_ready",
32
+ "export_table_csv",
21
33
  "wait_for_campaign_table_ready",
22
34
  "update_campaign",
23
35
  "update_campaign_brief",
@@ -76,6 +88,14 @@ export const CREATE_CAMPAIGN_SMOKE_CALLS = [
76
88
  limit: 1200,
77
89
  },
78
90
  },
91
+ {
92
+ name: "get_subskill_prompt",
93
+ arguments: {
94
+ subskillName: "find-leads-v2",
95
+ offset: 0,
96
+ limit: 1200,
97
+ },
98
+ },
79
99
  {
80
100
  name: "get_subskill_prompt",
81
101
  arguments: {
@@ -117,6 +137,15 @@ export const CREATE_CAMPAIGN_SMOKE_CALLS = [
117
137
  limit: 1200,
118
138
  },
119
139
  },
140
+ {
141
+ name: "get_subskill_asset",
142
+ arguments: {
143
+ subskillName: "find-leads-v2",
144
+ assetPath: "core/flow.v1.json",
145
+ offset: 0,
146
+ limit: 1200,
147
+ },
148
+ },
120
149
  ];
121
150
 
122
151
  function collectStderrLines(stream) {
@@ -343,7 +372,7 @@ async function verifyCreateCampaignSmoke({
343
372
  ok: false,
344
373
  missingTools,
345
374
  calls,
346
- error: `Missing smoke tool(s): ${missingTools.join(", ")}`,
375
+ error: `Missing or stale Sellable MCP tool(s): ${missingTools.join(", ")}. Reinstall @sellable/install and @sellable/mcp, restart or reload the host, then retry Find Leads.`,
347
376
  startedAt,
348
377
  completedAt: new Date().toISOString(),
349
378
  };
@@ -662,7 +691,7 @@ async function verifySellableMcpRuntimeOnce({
662
691
  ),
663
692
  calls: [],
664
693
  error:
665
- "Skipping create-campaign smoke because required MCP tools are missing.",
694
+ "Sellable MCP is missing required tools. Reinstall @sellable/install and @sellable/mcp, restart or reload the host, then retry Find Leads.",
666
695
  startedAt: new Date().toISOString(),
667
696
  completedAt: new Date().toISOString(),
668
697
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sellable/install",
3
- "version": "0.1.326",
3
+ "version": "0.1.327",
4
4
  "type": "module",
5
5
  "description": "One-command installer for Sellable MCP in Claude Code, Codex, and Hermes",
6
6
  "bin": {
@@ -15,8 +15,7 @@
15
15
  "lib",
16
16
  "agents",
17
17
  "skill-templates",
18
- "README.md",
19
- "HERMES-SLACK-PROFILE-SCOPING.md"
18
+ "README.md"
20
19
  ],
21
20
  "dependencies": {
22
21
  "@modelcontextprotocol/sdk": "^1.25.2",
@@ -721,7 +721,7 @@ Treat host capabilities as concrete functions, not prose conventions:
721
721
  import and before dispatching Message Drafting only.
722
722
  - `launch_message_drafting`: Claude Code uses `Task` with `subagent_type`
723
723
  `post-find-leads-message-scout` when listed; Codex uses the returned
724
- compatibility agent or a generic `gpt-5.6-sol` / `high` Message Drafting agent.
724
+ compatibility agent or a generic `gpt-5.5` / `xhigh` Message Drafting agent.
725
725
 
726
726
  If a required interactive question function or MCP loader is missing, stop and
727
727
  explain the Sellable install/reload problem. Source work uses product-native MCP
@@ -1082,8 +1082,8 @@ updates.
1082
1082
  In Codex, the filter-choice answer is the campaign-scoped go-ahead to use
1083
1083
  this single Message Drafting background agent in step-wise and YOLO modes.
1084
1084
  Do not ask a separate question to start it. If the named custom agent is not
1085
- available, spawn a generic background agent with `model: "gpt-5.6-sol"` and
1086
- `reasoning_effort: "high"` using the same lean campaign/table basis. If no
1085
+ available, spawn a generic background agent with `model: "gpt-5.5"` and
1086
+ `reasoning_effort: "xhigh"` using the same lean campaign/table basis. If no
1087
1087
  background-agent tool is callable, start the same full message branch inline
1088
1088
  before filter drafting or skip-filter message review and record it as
1089
1089
  `statusSource: "parent-thread-fallback"`.
@@ -437,7 +437,7 @@ fallback only when app thread tools are unavailable; the receipt must include
437
437
  `fallbackReason`, or backend verify rejects it.
438
438
  When visible Codex app thread tools are unavailable but local Codex CLI is
439
439
  available, the accepted durable streaming-worker command shape is:
440
- `codex -a never -s danger-full-access -c model_reasoning_effort=high exec --skip-git-repo-check -m <worker-model> -C <repo> -o <worker-final-file> -`.
440
+ `codex -a never -s danger-full-access -c model_reasoning_effort=xhigh exec --skip-git-repo-check -m <worker-model> -C <repo> -o <worker-final-file> -`.
441
441
  The approval, sandbox, and reasoning-effort config flags must come before the
442
442
  `exec` subcommand for Codex CLI builds that expose `-a`/`-s`/`-c` only at top
443
443
  level. `--skip-git-repo-check` belongs after `exec` because current customer and VPS Codex CLI builds expose it
@@ -447,26 +447,26 @@ forms fail on current customer CLI installs. Pipe the lane packet prompt on
447
447
  stdin, require the worker to write `workerDispatch.receiptArtifactHint`, and
448
448
  pass exactly one lane packet per worker.
449
449
  When launching durable Codex CLI workers from an automation parent, pass an
450
- explicit supported worker model and explicit `high` reasoning effort instead
450
+ explicit supported worker model and explicit `xhigh` reasoning effort instead
451
451
  of relying on the Codex CLI defaults. Use the parent runtime model when known,
452
452
  for example:
453
- `codex -a never -s danger-full-access -c model_reasoning_effort=high exec --skip-git-repo-check -m <worker-model> -C <repo> -o <worker-final-file> -`.
453
+ `codex -a never -s danger-full-access -c model_reasoning_effort=xhigh exec --skip-git-repo-check -m <worker-model> -C <repo> -o <worker-final-file> -`.
454
454
  In Codex CLI, the parent runtime model is visible in the run header as
455
455
  `model: <model-name>`. Copy that exact model string into child worker launches
456
- first. If the parent header says `model: gpt-5.6-sol`, launch workers with
457
- `-m gpt-5.6-sol` plus `-c model_reasoning_effort=high`; do not invent or probe
456
+ first. If the parent header says `model: gpt-5.5`, launch workers with
457
+ `-m gpt-5.5` plus `-c model_reasoning_effort=xhigh`; do not invent or probe
458
458
  nearby aliases such as `gpt-5.3-codex`, `gpt-5.2`, `gpt-5-codex`,
459
459
  `codex-latest`, or `codex-mini-latest` before trying the exact parent model. A
460
- one-line probe must include the same `-c model_reasoning_effort=high` override
460
+ one-line probe must include the same `-c model_reasoning_effort=xhigh` override
461
461
  and count as supported only when it exits 0 and returns the requested output; a
462
462
  session header followed by a `not supported` error is rejected, not accepted.
463
463
  Do not rely on the Codex CLI default model or default reasoning effort; some
464
- customer and VPS installs default to unavailable model aliases or to reasoning
465
- below `high`. `-m gpt-5.6-sol` alone is not enough. If a child worker reports GPT 5.6-Sol
466
- with reasoning below `high`, treat that as a launcher bug, relaunch with the explicit
467
- `high` config before mutation, and do not ask the user to continue through the
464
+ customer and VPS installs default to unavailable model aliases or to `high`
465
+ reasoning. `-m gpt-5.5` alone is not enough. If a child worker reports GPT 5.5
466
+ with `high` reasoning, treat that as a launcher bug, relaunch with the explicit
467
+ `xhigh` config before mutation, and do not ask the user to continue through the
468
468
  model-quality warning. If the parent cannot identify a supported worker model
469
- and launch it with `high` reasoning, stop with
469
+ and launch it with `xhigh` reasoning, stop with
470
470
  `blocked: worker_model_unavailable` before mutation.
471
471
  When wrapping multiple local Codex CLI workers in a shell launcher, run the
472
472
  wrapper with `/bin/bash -lc` or another explicitly chosen portable shell. Do not
@@ -479,7 +479,7 @@ Do not embed `<<'WORKER_PROMPT'` heredocs inside a single quoted or double
479
479
  quoted `/bin/bash -lc '...'` command string; nested quoting is brittle and can
480
480
  truncate the first worker before mutation. For multi-worker launchers, write one
481
481
  plain prompt file per lane under the current run directory, then start each
482
- worker with `codex -a never -s danger-full-access -c model_reasoning_effort=high exec --skip-git-repo-check -m "$WORKER_MODEL" -C "$REPO" -o
482
+ worker with `codex -a never -s danger-full-access -c model_reasoning_effort=xhigh exec --skip-git-repo-check -m "$WORKER_MODEL" -C "$REPO" -o
483
483
  "$worker_final_file" - < "$worker_prompt_file"`. Keep launcher shell variables
484
484
  double-quoted and keep the prompt heredoc only in a standalone script/prompt-file
485
485
  write step, not inside an already quoted shell argument. If the first launcher
@@ -585,7 +585,7 @@ launchers, write the same prompt body to `<worker-prompt-file>` and launch the
585
585
  worker with stdin redirected from that file:
586
586
 
587
587
  ```
588
- codex -a never -s danger-full-access -c model_reasoning_effort=high exec --skip-git-repo-check -m <worker-model> -C <repo> -o <worker-final-file> - <<'WORKER_PROMPT'
588
+ codex -a never -s danger-full-access -c model_reasoning_effort=xhigh exec --skip-git-repo-check -m <worker-model> -C <repo> -o <worker-final-file> - <<'WORKER_PROMPT'
589
589
  Use $sellable:create-campaign as the governing campaign workflow for this one lane worker.
590
590
  Use the evergreen plan/packet below only for lane scope, source metadata,
591
591
  postconditions, side-effect caps, and durable receipt proof.
@@ -632,10 +632,10 @@ Do not launch, start, schedule, send, or use paid InMail.
632
632
  For filter proof, durable receipt status must be `filterDecisionReceipt.status:"applied"` only; never `completed`, `confirmed`, `done`, or aliases.
633
633
  For generated messages, `update_cell` is allowed only for the semantic Approved checkbox. Never use `update_cell` for generated message text/body/sample copy. Bad copy requires `revise_message_template_and_rerun` or brief/template revision plus Generate Message rerun. Any generated-message cell override is `blocked: generated_message_cell_override`.
634
634
  If `bootstrap_create_campaign.modelQuality.status === "warn"` because the child
635
- worker reports GPT 5.6-Sol with reasoning below `high`, that is a parent launcher
635
+ worker reports GPT 5.5 with `high` reasoning, that is a parent launcher
636
636
  configuration bug, not an operator approval path inside the worker. Stop before
637
637
  mutation, tell the parent to relaunch this lane with
638
- `-c model_reasoning_effort=high`, and do not mark the worker goal complete.
638
+ `-c model_reasoning_effort=xhigh`, and do not mark the worker goal complete.
639
639
  Complete only this lane. Do not end with narration only. Before your final
640
640
  response, run a local file-existence and JSON self-check for
641
641
  <receiptArtifactPath>. If the lane succeeded, write the canonical success
@@ -656,7 +656,7 @@ receipt, or an accepted Post Engagers no-source blocked/no-op receipt.
656
656
  WORKER_PROMPT
657
657
 
658
658
  # Multi-worker launcher equivalent:
659
- codex -a never -s danger-full-access -c model_reasoning_effort=high exec --skip-git-repo-check -m <worker-model> -C <repo> -o <worker-final-file> - < <worker-prompt-file>
659
+ codex -a never -s danger-full-access -c model_reasoning_effort=xhigh exec --skip-git-repo-check -m <worker-model> -C <repo> -o <worker-final-file> - < <worker-prompt-file>
660
660
  ```
661
661
 
662
662
  If any placeholder cannot be filled from the current plan, matching
@@ -0,0 +1,57 @@
1
+ ---
2
+ name: find-leads
3
+ description: Find or source prospects, build and watch a live Sellable lead list, and export the finished list without creating a campaign.
4
+ visibility: public
5
+ allowed-tools:
6
+ - mcp__sellable__get_auth_status
7
+ - mcp__sellable__start_cli_login
8
+ - mcp__sellable__wait_for_cli_login
9
+ - mcp__sellable__get_active_workspace
10
+ - mcp__sellable__list_workspaces
11
+ - mcp__sellable__set_active_workspace
12
+ - mcp__sellable__get_subskill_prompt
13
+ - mcp__sellable__get_subskill_asset
14
+ - mcp__sellable__search_subskill_prompts
15
+ - mcp__sellable__get_provider_prompt
16
+ - mcp__sellable__bootstrap_find_leads
17
+ - mcp__sellable__get_find_leads_run
18
+ - mcp__sellable__update_find_leads_run
19
+ - mcp__sellable__wait_for_find_leads_run
20
+ - mcp__sellable__cancel_find_leads
21
+ - mcp__sellable__reissue_find_leads_watch_link
22
+ - mcp__sellable__preflight_find_leads_provider
23
+ - mcp__sellable__lookup_sales_nav_filter
24
+ - mcp__sellable__search_sales_nav
25
+ - mcp__sellable__search_prospeo
26
+ - mcp__sellable__search_signals
27
+ - mcp__sellable__select_promising_posts
28
+ - mcp__sellable__import_leads
29
+ - mcp__sellable__wait_for_lead_list_ready
30
+ - mcp__sellable__get_rows_minimal
31
+ - mcp__sellable__export_table_csv
32
+ ---
33
+
34
+ # Sellable Find Leads
35
+
36
+ Use this public command when the user asks to find or source prospects, build a lead list,
37
+ watch the list fill in real time, review leads, or export the list.
38
+ It works without an existing campaign.
39
+
40
+ ## Load the canonical workflow
41
+
42
+ 1. Call `mcp__sellable__get_auth_status({})` and complete login/workspace setup
43
+ if required.
44
+ 2. Load `mcp__sellable__get_subskill_prompt({ subskillName: "find-leads-v2" })`.
45
+ Continue chunks until `hasMore` is false.
46
+ 3. Load `mcp__sellable__get_subskill_asset({ subskillName: "find-leads-v2",
47
+ assetPath: "core/flow.v1.json" })`.
48
+ 4. Execute that prompt and flow as the operational source of truth.
49
+
50
+ Do not emulate the workflow from memory or local files. If prompt or asset
51
+ loading fails, use `search_subskill_prompts({ query: "find-leads-v2",
52
+ includePublic: true, includeInternal: true })`, retry once, then give the
53
+ workflow's reinstall/reload guidance.
54
+
55
+ Keep approval questions in the current chat. A source-plan approval allows only
56
+ the bounded provider search. A later import approval is required before rows
57
+ are materialized. Export uses the source list directly.
@@ -1,9 +1,9 @@
1
1
  ---
2
2
  name: refill-sends-v2
3
3
  description: Execute refill sends v2 through the fenced evergreen refill loop, with dry-run and resume support.
4
- visibility: internal
4
+ visibility: public
5
5
  allowed-tools:
6
- - mcp__sellable__refill_sends
6
+ - mcp__sellable__refill_sends_v2
7
7
  - mcp__sellable__get_refill_plan_v2
8
8
  - mcp__sellable__get_subskill_prompt
9
9
  - mcp__sellable__get_subskill_asset
@@ -24,7 +24,7 @@ Host command names:
24
24
  - Claude Code: `/sellable:refill-sends-v2`
25
25
  - Codex: `$sellable:refill-sends-v2`
26
26
 
27
- `refill_sends` is the execution surface. In real-run mode it starts or
27
+ `refill_sends_v2` is the execution surface. In real-run mode it starts or
28
28
  resumes a fenced refill run, reads a fresh packet, executes only the packet's
29
29
  named bounded work, verifies the result, and returns either a terminal report, a
30
30
  blocked report, or an in-progress resume handle. In dry-run mode it stays
@@ -40,19 +40,19 @@ with `WORKSPACE_REQUIRED`; do not switch the shared active workspace.
40
40
  For a real refill run:
41
41
 
42
42
  ```text
43
- refill_sends({ workspaceId, intent:"auto", senderIds?, approvalMode? })
43
+ refill_sends_v2({ workspaceId, intent:"auto", senderIds?, approvalMode? })
44
44
  ```
45
45
 
46
46
  For read-only inspection:
47
47
 
48
48
  ```text
49
- refill_sends({ workspaceId, dryRun:true, intent:"auto", senderIds? })
49
+ refill_sends_v2({ workspaceId, dryRun:true, intent:"auto", senderIds? })
50
50
  ```
51
51
 
52
52
  To resume an in-progress run, pass the handle back exactly:
53
53
 
54
54
  ```text
55
- refill_sends({ workspaceId, runId, fence })
55
+ refill_sends_v2({ workspaceId, runId, fence })
56
56
  ```
57
57
 
58
58
  If a stale handle loses the lease, the tool reports the holder status and the