@sellable/install 0.1.146 → 0.1.148

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.
@@ -701,9 +701,10 @@ label it explicitly as not estimated from this run.
701
701
  Before any provider prompt, search, source scout, or signal-discovery call, show
702
702
  one source-plan gate and ask for approval. Write this like a fifth grader could
703
703
  understand it: short sentences, no internal labels, and no GTM shorthand. The
704
- plan must be visible before the question, and this first approval only
705
- authorizes finding the best places to look for buyers. It does not add anyone
706
- to the campaign yet. The gate should say:
704
+ order is strict: first show the plan in chat, then open the approval question.
705
+ Do not open a generic approval first and reuse it after the plan. This first
706
+ approval only authorizes finding the best places to look for buyers. It does
707
+ not add anyone to the campaign yet. The gate should say:
707
708
 
708
709
  - the buyer groups or places we could check
709
710
  - the best place to start
@@ -752,9 +753,11 @@ instead and explain it in plain words once. Do not call \`search_signals\`,
752
753
  \`fetch_post_engagers\`, or provider-scoped subagents until the user approves this
753
754
  source plan or explicitly chooses a different source.
754
755
 
755
- If the user already answered a provider approval such as "Approve Prospeo plan",
756
- that answer satisfies the source-plan gate. Persist the approved provider and
757
- run the scouting/search next; do not ask a second source-plan approval question.
756
+ If the user answers a provider approval such as "Approve Prospeo plan" after
757
+ seeing the source plan, that answer satisfies the source-plan gate. Persist the
758
+ approved provider and run the scouting/search next; do not ask a second
759
+ source-plan approval question. A brief approval, generic "approve plan", or
760
+ provider state from before the visible source plan does not satisfy this gate.
758
761
 
759
762
  For hiring-led campaigns, do not default to Sales Nav just because the target is
760
763
  a role search. Prospeo is the primary lane when the brief asks for companies
@@ -811,14 +814,18 @@ copy.
811
814
  ## Codex Watch Link Handoff
812
815
 
813
816
  When a campaign tool returns \`watchUrl\`, treat it as a user-opened app link, not
814
- as permission to drive the browser. A valid handoff link must be a direct
815
- \`/campaign-builder/{campaignId}?mode=claude|codex\` URL with the auth token and
816
- workspace routing needed for auto-login. \`create_campaign.watchUrl\`,
817
+ as permission to drive the browser. A valid first handoff link must be the exact
818
+ \`create_campaign.watchUrl\` value: a direct
819
+ \`/campaign-builder/{campaignId}?mode=claude|codex\` URL with \`workspaceId\` and
820
+ \`token\` query parameters for auto-login. \`create_campaign.watchUrl\`,
817
821
  \`create_campaign({ campaignId }).watchUrl\`, and \`get_campaign.watchUrl\` are all
818
- acceptable only when they return that direct campaign-builder shape.
822
+ acceptable only when they return that direct campaign-builder shape. Never
823
+ derive, shorten, reconstruct, or print a bare \`/campaign-builder/{campaignId}\`
824
+ URL.
819
825
 
820
826
  Never call browser-opening tools, shell \`open\`, Computer Use, or in-app browser
821
- automation just because a watch link exists. Print the link in this shape:
827
+ automation just because a watch link exists. Print the first watch link exactly
828
+ once, directly before the brief approval question, in this shape:
822
829
 
823
830
  \`\`\`text
824
831
  Campaign shell is ready. We'll keep building the campaign in this chat.
@@ -835,6 +842,9 @@ the link lands on auth, 404, permission, blank, or a visible error state, recove
835
842
  a fresh watch link once with \`create_campaign({ campaignId })\` or \`get_campaign\`
836
843
  and print that link. Do not claim the browser was opened, inspected, or
837
844
  synchronized.
845
+ Do not print another \`Watch link:\` line during source/provider selection or
846
+ normal approval turns unless the user explicitly asks for the link or you are
847
+ recovering a missing/broken URL.
838
848
 
839
849
  After every \`update_campaign({ campaignId, currentStep })\`, use
840
850
  \`get_campaign_navigation_state\` when available as a compact orientation check:
@@ -1011,13 +1021,15 @@ recommendation; you can replace it with your current offer."
1011
1021
  Before the identity gate, use this customer-facing shape:
1012
1022
 
1013
1023
  \`\`\`text
1014
- I’m ready to build the campaign in {workspace}.
1024
+ You're in {workspace}.
1015
1025
 
1016
- First I’ll research the person/company this campaign is for. I’ll use that
1017
- context to recommend a target, offer, proof, and lead source, then you can
1018
- correct anything stale before I build from it.
1026
+ Excited to help you launch your LinkedIn outbound campaign.
1019
1027
 
1020
- Then I’ll turn that into a campaign brief for you to approve before anything is created.
1028
+ We're at setup: first I'll use your LinkedIn profile to understand the company,
1029
+ then I'll draft the campaign brief, help choose where to find buyers, review
1030
+ messages, and wait for final launch approval.
1031
+
1032
+ What's your LinkedIn profile URL or handle?
1021
1033
  \`\`\`
1022
1034
 
1023
1035
  Do not silently ask Codex intake or approval questions as plain chat when
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sellable/install",
3
- "version": "0.1.146",
3
+ "version": "0.1.148",
4
4
  "type": "module",
5
5
  "description": "One-command installer for Sellable MCP in Claude Code and Codex",
6
6
  "bin": {
@@ -132,9 +132,10 @@ label it explicitly as not estimated from this run.
132
132
  Before any provider prompt, search, source scout, or signal-discovery call, show
133
133
  one source-plan gate and ask for approval. Write this like a fifth grader could
134
134
  understand it: short sentences, no internal labels, and no GTM shorthand. The
135
- plan must be visible before the question, and this first approval only
136
- authorizes finding the best places to look for buyers. It does not add anyone
137
- to the campaign yet. The gate should say:
135
+ order is strict: first show the plan in chat, then open the approval question.
136
+ Do not open a generic approval first and reuse it after the plan. This first
137
+ approval only authorizes finding the best places to look for buyers. It does
138
+ not add anyone to the campaign yet. The gate should say:
138
139
 
139
140
  - the buyer groups or places we could check
140
141
  - the best place to start
@@ -183,9 +184,11 @@ instead and explain it in plain words once. Do not call `search_signals`,
183
184
  `fetch_post_engagers`, or provider-scoped subagents until the user approves this
184
185
  source plan or explicitly chooses a different source.
185
186
 
186
- If the user already answered a provider approval such as "Approve Prospeo plan",
187
- that answer satisfies the source-plan gate. Persist the approved provider and
188
- run the scouting/search next; do not ask a second source-plan approval question.
187
+ If the user answers a provider approval such as "Approve Prospeo plan" after
188
+ seeing the source plan, that answer satisfies the source-plan gate. Persist the
189
+ approved provider and run the scouting/search next; do not ask a second
190
+ source-plan approval question. A brief approval, generic "approve plan", or
191
+ provider state from before the visible source plan does not satisfy this gate.
189
192
 
190
193
  For hiring-led campaigns, do not default to Sales Nav just because the target is
191
194
  a role search. Prospeo is the primary lane when the brief asks for companies
@@ -306,14 +309,18 @@ copy.
306
309
  ## Codex Watch Link Handoff
307
310
 
308
311
  When a campaign tool returns `watchUrl`, treat it as a user-opened app link, not
309
- as permission to drive the browser. A valid handoff link must be a direct
310
- `/campaign-builder/{campaignId}?mode=claude|codex` URL with the auth token and
311
- workspace routing needed for auto-login. `create_campaign.watchUrl`,
312
+ as permission to drive the browser. A valid first handoff link must be the exact
313
+ `create_campaign.watchUrl` value: a direct
314
+ `/campaign-builder/{campaignId}?mode=claude|codex` URL with `workspaceId` and
315
+ `token` query parameters for auto-login. `create_campaign.watchUrl`,
312
316
  `create_campaign({ campaignId }).watchUrl`, and `get_campaign.watchUrl` are all
313
- acceptable only when they return that direct campaign-builder shape.
317
+ acceptable only when they return that direct campaign-builder shape. Never
318
+ derive, shorten, reconstruct, or print a bare `/campaign-builder/{campaignId}`
319
+ URL.
314
320
 
315
321
  Never call browser-opening tools, shell `open`, Computer Use, or in-app browser
316
- automation just because a watch link exists. Print the link in this shape:
322
+ automation just because a watch link exists. Print the first watch link exactly
323
+ once, directly before the brief approval question, in this shape:
317
324
 
318
325
  ```text
319
326
  Campaign shell is ready. We'll keep building the campaign in this chat.
@@ -335,6 +342,9 @@ Never print a placeholder watch link such as "Open campaign" or "link will
335
342
  update once the shell is created." If the shell is not created yet, call
336
343
  `create_campaign` first. If `create_campaign` does not return `watchUrl`, stop
337
344
  and surface the missing watch-link error before lead sourcing.
345
+ Do not print another `Watch link:` line during source/provider selection or
346
+ normal approval turns unless the user explicitly asks for the link or you are
347
+ recovering a missing/broken URL.
338
348
 
339
349
  After every `update_campaign({ campaignId, currentStep })`, use
340
350
  `get_campaign_navigation_state` when available as a compact orientation check:
@@ -556,14 +566,15 @@ the run. Treat YOLO as `interactionMode: "autonomous"` plus an intake policy:
556
566
  Before the identity gate, use this customer-facing shape:
557
567
 
558
568
  ```text
559
- I’m ready to build the campaign in {workspace}.
569
+ You're in {workspace}.
560
570
 
561
- First I’ll research the person/company this campaign is for. I’ll use that
562
- context to recommend a target, offer, proof, and lead source, then you can
563
- correct anything stale before I build from it.
571
+ Excited to help you launch your LinkedIn outbound campaign.
564
572
 
565
- Then I’ll turn that into a campaign brief for you to approve before any leads
566
- are sourced.
573
+ We're at setup: first I'll use your LinkedIn profile to understand the company,
574
+ then I'll draft the campaign brief, help choose where to find buyers, review
575
+ messages, and wait for final launch approval.
576
+
577
+ What's your LinkedIn profile URL or handle?
567
578
  ```
568
579
 
569
580
  Do not silently ask Codex intake or approval questions as plain chat when
@@ -688,26 +699,27 @@ updates.
688
699
  been written. Your IMMEDIATE next visible message branches on
689
700
  `isReturningUser` from the tool result:
690
701
 
691
- - If `isReturningUser === true`, prepend ONE line acknowledging the
692
- reused workspace, then the locked Step 3 narration verbatim
693
- (substituting `activeWorkspaceName` exactly):
702
+ - If `isReturningUser === true`, use `activeWorkspaceName` when present,
703
+ otherwise `activeWorkspaceId`, as `{workspaceLabel}`:
694
704
 
695
705
  ```text
696
- You're in {activeWorkspaceName} workspace, ready to roll.
697
- ```
706
+ You're in {workspaceLabel}.
698
707
 
699
- What is your LinkedIn profile URL or handle?
708
+ Excited to help you launch your LinkedIn outbound campaign. We're at setup: first I'll use your LinkedIn profile to understand the company, then I'll draft the campaign brief, help choose where to find buyers, review messages, and wait for final launch approval.
700
709
 
701
- ````
710
+ What's your LinkedIn profile URL or handle?
711
+ ```
702
712
 
703
- - If `isReturningUser === false`, prepend ONE line confirming the new
704
- workspace, then the locked Step 3 narration verbatim:
713
+ - If `isReturningUser === false`, use `activeWorkspaceName` when present,
714
+ otherwise `activeWorkspaceId`, as `{workspaceLabel}`:
705
715
 
706
- ```text
707
- You're set up your {activeWorkspaceName} workspace is ready.
716
+ ```text
717
+ You're set up in {workspaceLabel}.
718
+
719
+ Excited to help you launch your LinkedIn outbound campaign. We're at setup: first I'll use your LinkedIn profile to understand the company, then I'll draft the campaign brief, help choose where to find buyers, review messages, and wait for final launch approval.
708
720
 
709
- What is your LinkedIn profile URL or handle?
710
- ````
721
+ What's your LinkedIn profile URL or handle?
722
+ ```
711
723
 
712
724
  No other lines. No "all set", no "signed in", no other acknowledgement.
713
725