@sellable/install 0.1.145 → 0.1.147

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.
@@ -794,11 +794,15 @@ which posts are being sampled in the watched app. The watch guide should say
794
794
  that we are checking people from these posts to confirm the right people are
795
795
  actually engaging and the source is viable.
796
796
 
797
- Every approval gate must include live campaign access after the readable inline
798
- content. Show a \`Watch link:\` line once the campaign shell exists. In normal
799
- customer runs, do not show local draft filenames or filesystem paths unless the
800
- user asks for debug artifacts. The link is for deeper inspection; never use it
801
- as a substitute for showing the content in chat.
797
+ Only the first brief approval handoff should include live campaign access after
798
+ the readable inline content. Show a short \`Watch link:\` line once, immediately
799
+ after shell creation and before brief approval. Later approval gates should
800
+ describe what the already-open campaign app is showing and rely on
801
+ currentStep/watchNarration; do not print the URL again unless the user asks or a
802
+ recovery path must replace a missing/broken link. In normal customer runs, do
803
+ not show local draft filenames or filesystem paths unless the user asks for
804
+ debug artifacts. The link is for deeper inspection; never use it as a substitute
805
+ for showing the content in chat.
802
806
 
803
807
  Never mention MCP namespaces, prompt chunking, plugin cache paths, missing
804
808
  linked skill versions, runbooks, or local skill files in normal customer-facing
@@ -807,14 +811,18 @@ copy.
807
811
  ## Codex Watch Link Handoff
808
812
 
809
813
  When a campaign tool returns \`watchUrl\`, treat it as a user-opened app link, not
810
- as permission to drive the browser. A valid handoff link must be a direct
811
- \`/campaign-builder/{campaignId}?mode=claude|codex\` URL with the auth token and
812
- workspace routing needed for auto-login. \`create_campaign.watchUrl\`,
814
+ as permission to drive the browser. A valid first handoff link must be the exact
815
+ \`create_campaign.watchUrl\` value: a direct
816
+ \`/campaign-builder/{campaignId}?mode=claude|codex\` URL with \`workspaceId\` and
817
+ \`token\` query parameters for auto-login. \`create_campaign.watchUrl\`,
813
818
  \`create_campaign({ campaignId }).watchUrl\`, and \`get_campaign.watchUrl\` are all
814
- acceptable only when they return that direct campaign-builder shape.
819
+ acceptable only when they return that direct campaign-builder shape. Never
820
+ derive, shorten, reconstruct, or print a bare \`/campaign-builder/{campaignId}\`
821
+ URL.
815
822
 
816
823
  Never call browser-opening tools, shell \`open\`, Computer Use, or in-app browser
817
- automation just because a watch link exists. Print the link in this shape:
824
+ automation just because a watch link exists. Print the first watch link exactly
825
+ once, directly before the brief approval question, in this shape:
818
826
 
819
827
  \`\`\`text
820
828
  Campaign shell is ready. We'll keep building the campaign in this chat.
@@ -831,6 +839,9 @@ the link lands on auth, 404, permission, blank, or a visible error state, recove
831
839
  a fresh watch link once with \`create_campaign({ campaignId })\` or \`get_campaign\`
832
840
  and print that link. Do not claim the browser was opened, inspected, or
833
841
  synchronized.
842
+ Do not print another \`Watch link:\` line during source/provider selection or
843
+ normal approval turns unless the user explicitly asks for the link or you are
844
+ recovering a missing/broken URL.
834
845
 
835
846
  After every \`update_campaign({ campaignId, currentStep })\`, use
836
847
  \`get_campaign_navigation_state\` when available as a compact orientation check:
@@ -1007,13 +1018,15 @@ recommendation; you can replace it with your current offer."
1007
1018
  Before the identity gate, use this customer-facing shape:
1008
1019
 
1009
1020
  \`\`\`text
1010
- I’m ready to build the campaign in {workspace}.
1021
+ You're in {workspace}.
1011
1022
 
1012
- First I’ll research the person/company this campaign is for. I’ll use that
1013
- context to recommend a target, offer, proof, and lead source, then you can
1014
- correct anything stale before I build from it.
1023
+ Excited to help you launch your LinkedIn outbound campaign.
1015
1024
 
1016
- Then I’ll turn that into a campaign brief for you to approve before anything is created.
1025
+ We're at setup: first I'll use your LinkedIn profile to understand the company,
1026
+ then I'll draft the campaign brief, help choose where to find buyers, review
1027
+ messages, and wait for final launch approval.
1028
+
1029
+ What's your LinkedIn profile URL or handle?
1017
1030
  \`\`\`
1018
1031
 
1019
1032
  Do not silently ask Codex intake or approval questions as plain chat when
@@ -1345,10 +1358,12 @@ approval should show who we are targeting, why they should care, the offer/CTA,
1345
1358
  proof, lead source hypothesis, message angle, risks/assumptions, and what
1346
1359
  happens after approval.
1347
1360
 
1348
- Every approval should also give the user a way to inspect the live campaign.
1349
- After the readable inline content, include a \`Watch link:\` line when a
1350
- campaign shell exists. Local artifacts are optional debug/UAT diagnostics only;
1351
- do not surface file paths or local draft filenames in normal customer runs.
1361
+ Only the first brief approval handoff should print the campaign watch URL. After
1362
+ that, every approval should say what the already-open app is showing, but must
1363
+ not include another \`Watch link:\` line unless the user explicitly asks for the
1364
+ link again or a recovery path needs to replace a broken/missing URL. Local
1365
+ artifacts are optional debug/UAT diagnostics only; do not surface file paths or
1366
+ local draft filenames in normal customer runs.
1352
1367
 
1353
1368
  This applies especially to message approvals. Never ask someone to approve a
1354
1369
  message they cannot see. Show the subject, tokenized template, a filled sample
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sellable/install",
3
- "version": "0.1.145",
3
+ "version": "0.1.147",
4
4
  "type": "module",
5
5
  "description": "One-command installer for Sellable MCP in Claude Code and Codex",
6
6
  "bin": {
@@ -287,12 +287,16 @@ Use rendered Markdown for user review surfaces, not fenced code blocks. Keep
287
287
  lines short, use indexed section labels and bullets, and translate internal
288
288
  sourcing terms into plain language.
289
289
 
290
- Every approval gate must include live campaign access after the readable inline
291
- content. Show a short `Watch link:` line once the campaign shell exists. In
292
- normal customer runs, do not show `Open artifact:` lines, raw filesystem paths,
293
- or local draft filenames. Local artifacts are debug/UAT-only unless the user asks
294
- for them. The link is for deeper inspection; never use it as a substitute for
295
- showing the content in chat.
290
+ Only the first brief approval handoff should include live campaign access after
291
+ the readable inline content. Show a short `Watch link:` line once, immediately
292
+ after shell creation and before brief approval. Later approval gates should
293
+ describe what the already-open campaign app is showing and rely on
294
+ currentStep/watchNarration; do not print the URL again unless the user asks or a
295
+ recovery path must replace a missing/broken link. In normal customer runs, do
296
+ not show `Open artifact:` lines, raw filesystem paths, or local draft filenames.
297
+ Local artifacts are debug/UAT-only unless the user asks for them. The link is
298
+ for deeper inspection; never use it as a substitute for showing the content in
299
+ chat.
296
300
 
297
301
  Never mention MCP namespaces, prompt chunking, plugin cache paths, missing
298
302
  linked skill versions, runbooks, npm/package details, repo-local files, VPS or
@@ -302,14 +306,18 @@ copy.
302
306
  ## Codex Watch Link Handoff
303
307
 
304
308
  When a campaign tool returns `watchUrl`, treat it as a user-opened app link, not
305
- as permission to drive the browser. A valid handoff link must be a direct
306
- `/campaign-builder/{campaignId}?mode=claude|codex` URL with the auth token and
307
- workspace routing needed for auto-login. `create_campaign.watchUrl`,
309
+ as permission to drive the browser. A valid first handoff link must be the exact
310
+ `create_campaign.watchUrl` value: a direct
311
+ `/campaign-builder/{campaignId}?mode=claude|codex` URL with `workspaceId` and
312
+ `token` query parameters for auto-login. `create_campaign.watchUrl`,
308
313
  `create_campaign({ campaignId }).watchUrl`, and `get_campaign.watchUrl` are all
309
- acceptable only when they return that direct campaign-builder shape.
314
+ acceptable only when they return that direct campaign-builder shape. Never
315
+ derive, shorten, reconstruct, or print a bare `/campaign-builder/{campaignId}`
316
+ URL.
310
317
 
311
318
  Never call browser-opening tools, shell `open`, Computer Use, or in-app browser
312
- automation just because a watch link exists. Print the link in this shape:
319
+ automation just because a watch link exists. Print the first watch link exactly
320
+ once, directly before the brief approval question, in this shape:
313
321
 
314
322
  ```text
315
323
  Campaign shell is ready. We'll keep building the campaign in this chat.
@@ -331,6 +339,9 @@ Never print a placeholder watch link such as "Open campaign" or "link will
331
339
  update once the shell is created." If the shell is not created yet, call
332
340
  `create_campaign` first. If `create_campaign` does not return `watchUrl`, stop
333
341
  and surface the missing watch-link error before lead sourcing.
342
+ Do not print another `Watch link:` line during source/provider selection or
343
+ normal approval turns unless the user explicitly asks for the link or you are
344
+ recovering a missing/broken URL.
334
345
 
335
346
  After every `update_campaign({ campaignId, currentStep })`, use
336
347
  `get_campaign_navigation_state` when available as a compact orientation check:
@@ -552,14 +563,15 @@ the run. Treat YOLO as `interactionMode: "autonomous"` plus an intake policy:
552
563
  Before the identity gate, use this customer-facing shape:
553
564
 
554
565
  ```text
555
- I’m ready to build the campaign in {workspace}.
566
+ You're in {workspace}.
556
567
 
557
- First I’ll research the person/company this campaign is for. I’ll use that
558
- context to recommend a target, offer, proof, and lead source, then you can
559
- correct anything stale before I build from it.
568
+ Excited to help you launch your LinkedIn outbound campaign.
560
569
 
561
- Then I’ll turn that into a campaign brief for you to approve before any leads
562
- are sourced.
570
+ We're at setup: first I'll use your LinkedIn profile to understand the company,
571
+ then I'll draft the campaign brief, help choose where to find buyers, review
572
+ messages, and wait for final launch approval.
573
+
574
+ What's your LinkedIn profile URL or handle?
563
575
  ```
564
576
 
565
577
  Do not silently ask Codex intake or approval questions as plain chat when
@@ -684,26 +696,27 @@ updates.
684
696
  been written. Your IMMEDIATE next visible message branches on
685
697
  `isReturningUser` from the tool result:
686
698
 
687
- - If `isReturningUser === true`, prepend ONE line acknowledging the
688
- reused workspace, then the locked Step 3 narration verbatim
689
- (substituting `activeWorkspaceName` exactly):
699
+ - If `isReturningUser === true`, use `activeWorkspaceName` when present,
700
+ otherwise `activeWorkspaceId`, as `{workspaceLabel}`:
690
701
 
691
702
  ```text
692
- You're in {activeWorkspaceName} workspace, ready to roll.
693
- ```
703
+ You're in {workspaceLabel}.
694
704
 
695
- What is your LinkedIn profile URL or handle?
705
+ 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.
696
706
 
697
- ````
707
+ What's your LinkedIn profile URL or handle?
708
+ ```
698
709
 
699
- - If `isReturningUser === false`, prepend ONE line confirming the new
700
- workspace, then the locked Step 3 narration verbatim:
710
+ - If `isReturningUser === false`, use `activeWorkspaceName` when present,
711
+ otherwise `activeWorkspaceId`, as `{workspaceLabel}`:
701
712
 
702
- ```text
703
- You're set up your {activeWorkspaceName} workspace is ready.
713
+ ```text
714
+ You're set up in {workspaceLabel}.
715
+
716
+ 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.
704
717
 
705
- What is your LinkedIn profile URL or handle?
706
- ````
718
+ What's your LinkedIn profile URL or handle?
719
+ ```
707
720
 
708
721
  No other lines. No "all set", no "signed in", no other acknowledgement.
709
722