@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.
- package/bin/sellable-install.mjs +28 -16
- package/package.json +1 -1
- package/skill-templates/create-campaign.md +42 -30
package/bin/sellable-install.mjs
CHANGED
|
@@ -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
|
-
|
|
705
|
-
|
|
706
|
-
|
|
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
|
|
756
|
-
that answer satisfies the source-plan gate. Persist the
|
|
757
|
-
run the scouting/search next; do not ask a second
|
|
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
|
|
815
|
-
|
|
816
|
-
|
|
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
|
|
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
|
-
|
|
1024
|
+
You're in {workspace}.
|
|
1015
1025
|
|
|
1016
|
-
|
|
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
|
-
|
|
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
|
@@ -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
|
-
|
|
136
|
-
|
|
137
|
-
|
|
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
|
|
187
|
-
that answer satisfies the source-plan gate. Persist the
|
|
188
|
-
run the scouting/search next; do not ask a second
|
|
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
|
|
310
|
-
|
|
311
|
-
|
|
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
|
|
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
|
-
|
|
569
|
+
You're in {workspace}.
|
|
560
570
|
|
|
561
|
-
|
|
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
|
-
|
|
566
|
-
|
|
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`,
|
|
692
|
-
|
|
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
|
|
697
|
-
```
|
|
706
|
+
You're in {workspaceLabel}.
|
|
698
707
|
|
|
699
|
-
|
|
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`,
|
|
704
|
-
|
|
713
|
+
- If `isReturningUser === false`, use `activeWorkspaceName` when present,
|
|
714
|
+
otherwise `activeWorkspaceId`, as `{workspaceLabel}`:
|
|
705
715
|
|
|
706
|
-
|
|
707
|
-
|
|
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
|
-
|
|
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
|
|