@sellable/install 0.1.200 → 0.1.202
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
CHANGED
|
@@ -1147,7 +1147,15 @@ updates.
|
|
|
1147
1147
|
copies of this file; packaged Claude Code and Codex runs must use the MCP
|
|
1148
1148
|
asset loader so they share the same config.
|
|
1149
1149
|
3. Follow that prompt and workflow config exactly.
|
|
1150
|
-
4. For message
|
|
1150
|
+
4. For filter and message setup, keep the parent thread as a lean orchestrator.
|
|
1151
|
+
The only normal background agent is \`post-find-leads-message-scout\` for
|
|
1152
|
+
Message Drafting. Both post-import choices must launch Message Drafting.
|
|
1153
|
+
When filters are chosen, launch Message Drafting, then keep filters in the
|
|
1154
|
+
parent thread: load \`references/filter-leads.md\`, draft production rubrics,
|
|
1155
|
+
call \`save_rubrics\`, ask filter approval, and then join Message Drafting for
|
|
1156
|
+
template review. When filters are skipped, launch only Message Drafting
|
|
1157
|
+
before treating the campaign as in Messages/message review.
|
|
1158
|
+
5. For message generation, use the \`post-find-leads-message-scout\` agent when
|
|
1151
1159
|
available. The worker and parent-thread fallback must load
|
|
1152
1160
|
\`mcp__sellable__get_subskill_prompt({ subskillName: "generate-messages" })\`,
|
|
1153
1161
|
then every required message asset named by \`generate-messages\` Mode 0 before
|
|
@@ -1163,7 +1171,7 @@ updates.
|
|
|
1163
1171
|
local markdown such as \`message-validation.md\`, inspect the database
|
|
1164
1172
|
directly, or synthesize local validation artifacts from general knowledge.
|
|
1165
1173
|
The message recommendation handoff is labeled Markdown, not raw JSON.
|
|
1166
|
-
|
|
1174
|
+
6. Create the campaign shell early with the v1 brief so the user can open the
|
|
1167
1175
|
watch link and see useful setup state immediately. Materialize the approved
|
|
1168
1176
|
source list, copy confirmed rows into the campaign, and internally process the
|
|
1169
1177
|
first campaign-table execution slice after the source is attached to the
|
|
@@ -1178,13 +1186,15 @@ updates.
|
|
|
1178
1186
|
After rubrics save, keep Filter Rules visible for approval; after approval,
|
|
1179
1187
|
move to Filter Leads and show \`Filters saved + waiting for message approval\`
|
|
1180
1188
|
until the template is approved.
|
|
1181
|
-
If filters are skipped,
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1189
|
+
If filters are skipped, launch Message Drafting before moving to
|
|
1190
|
+
Messages/message review; updating \`currentStep\` to \`messages\` is not proof
|
|
1191
|
+
that the background worker started. Queue the bounded campaign-table
|
|
1192
|
+
execution-slice \`enrichCellId\` cells only after message approval. Move to the
|
|
1193
|
+
generated-row Messages review only after at least one review row passes and
|
|
1194
|
+
one generated message is ready.
|
|
1185
1195
|
Do not ask the user to approve the brief before shell creation unless they
|
|
1186
1196
|
explicitly requested a no-write draft; the shell itself is the review surface.
|
|
1187
|
-
|
|
1197
|
+
7. The main thread owns watch navigation. Call
|
|
1188
1198
|
\`mcp__sellable__update_campaign({ campaignId, currentStep })\` before major
|
|
1189
1199
|
visible work so the user can watch progress in the app: \`create-offer\` for
|
|
1190
1200
|
the brief, \`pick-provider\` or the selected provider step while sourcing,
|
package/package.json
CHANGED
|
@@ -90,6 +90,9 @@ execution slice configures filters and messages. After that, the user chooses
|
|
|
90
90
|
whether to use filters or skip.
|
|
91
91
|
When filters are chosen, save rubrics, get filter approval, then wait for
|
|
92
92
|
message-template approval before enrichment/filtering or Generate Message cells.
|
|
93
|
+
Filter work stays in the parent thread and must inspect visible campaign rows
|
|
94
|
+
with `get_rows_minimal` / `get_rows` before drafting and saving rubrics; use at
|
|
95
|
+
most one direct `enrich_with_prospeo` sample when row evidence is too thin.
|
|
93
96
|
After filter approval, Filter Leads should show `Filters saved + waiting for
|
|
94
97
|
message approval` until the template is approved.
|
|
95
98
|
The default path stays the existing first campaign-table execution slice:
|
|
@@ -97,17 +100,19 @@ review the normal `reviewBatchLimit:15`, approve reviewed draft rows, then move
|
|
|
97
100
|
to Settings/sequence/final greenlight. Only call
|
|
98
101
|
`start_campaign_message_preparation` when the user explicitly asks for more
|
|
99
102
|
prepared messages or a send count. If the user says "prepare/generate X
|
|
100
|
-
messages", set `targetPreparedMessages:X`,
|
|
101
|
-
`
|
|
102
|
-
|
|
103
|
-
adapts later batches up to 250 rows while
|
|
103
|
+
messages", set `targetPreparedMessages:X`, omit `maxRowsToCheck`, and keep
|
|
104
|
+
`approvalMode:"mark_ready"`. The backend calibrates on at least 100 rows,
|
|
105
|
+
estimates the row budget from observed rubric/pass yield, caps
|
|
106
|
+
`maxRowsToCheck` at 2500, then adapts later batches up to 250 rows while
|
|
107
|
+
recalculating yield. Poll
|
|
104
108
|
`get_campaign_message_preparation_status` for preparation-job status: checked
|
|
105
|
-
rows, prepared/approved count, target, row budget remaining,
|
|
106
|
-
the user says "approve X messages", use
|
|
107
|
-
not launch. If the user says "schedule X
|
|
108
|
-
to approve exactly the bounded X-message
|
|
109
|
-
continue through sender, sequence, and final
|
|
110
|
-
must verify that bounded cohort and must not
|
|
109
|
+
rows, passed/prepared/approved count, target, estimated row budget remaining,
|
|
110
|
+
and stop reason. If the user says "approve X messages", use
|
|
111
|
+
`approvalMode:"approve"` but still do not launch. If the user says "schedule X
|
|
112
|
+
sends", use `approvalMode:"approve"` to approve exactly the bounded X-message
|
|
113
|
+
cohort during preparation, then continue through sender, sequence, and final
|
|
114
|
+
launch greenlight; the launch path must verify that bounded cohort and must not
|
|
115
|
+
broad approve-all.
|
|
111
116
|
Treat `campaignId` as `CampaignOffer.id`. Low level selector/queue tools are
|
|
112
117
|
diagnostics and recovery only for this lane. If the user asks to stop
|
|
113
118
|
preparation, the target is wrong, or status shows the wrong campaign/table, call
|
|
@@ -422,12 +427,15 @@ After confirmed source rows exist in the campaign table, do not load the
|
|
|
422
427
|
message registry or any deep filter/message prompt
|
|
423
428
|
before the filter-choice question. After `confirm_lead_list`, ask add filters
|
|
424
429
|
vs skip filters immediately. Once the user answers, launch only Message Drafting
|
|
425
|
-
from the same campaign/table basis.
|
|
430
|
+
from the same campaign/table basis. This kickoff is required for both answers:
|
|
431
|
+
`Use filters` and `Skip filters`. If the user chooses filters, the parent
|
|
426
432
|
thread moves to Filter Rules, loads the filter reference, saves rubrics, then
|
|
427
433
|
asks for filter approval while Message Drafting runs. After approval, move to
|
|
428
434
|
Filter Leads and show `Filters saved + waiting for message approval` while the
|
|
429
|
-
message recommendation is reviewed. If the user skips filters,
|
|
430
|
-
Messages/message review
|
|
435
|
+
message recommendation is reviewed. If the user skips filters, start Message
|
|
436
|
+
Drafting first, then move to Messages/message review after it has started or
|
|
437
|
+
returned a ready recommendation. `update_campaign({ currentStep: "messages" })`
|
|
438
|
+
is not proof of kickoff. Enrichment/filtering and Generate Message cells wait
|
|
431
439
|
for message approval. AI Generated is an explicit opt-out from the template
|
|
432
440
|
path.
|
|
433
441
|
|
|
@@ -480,14 +488,14 @@ automation just because a watch link exists. If `create_campaign` returns
|
|
|
480
488
|
`watchHandoff.markdown`, print that exact value once, directly before the brief
|
|
481
489
|
approval question. It will use the URL mode to say Codex or Claude Code:
|
|
482
490
|
|
|
483
|
-
|
|
491
|
+
```markdown
|
|
484
492
|
> **WATCH CODEX BUILD THE CAMPAIGN LIVE**
|
|
485
493
|
>
|
|
486
494
|
> [Open live campaign builder]({watchUrl})
|
|
487
495
|
>
|
|
488
496
|
> Keep this chat open. I'll ask approval questions here before making decisions
|
|
489
497
|
> that need your judgment.
|
|
490
|
-
|
|
498
|
+
```
|
|
491
499
|
|
|
492
500
|
The rendered callout is intentional: rendered chat clients highlight the
|
|
493
501
|
headline, link, and note without treating it as a code block, and plain terminals
|
|
@@ -910,11 +918,12 @@ updates.
|
|
|
910
918
|
3. Follow that prompt and workflow config exactly.
|
|
911
919
|
4. For filter and message setup, keep the parent thread as a lean orchestrator.
|
|
912
920
|
The only normal background agent is `post-find-leads-message-scout` for
|
|
913
|
-
Message Drafting.
|
|
914
|
-
filters
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
Message Drafting
|
|
921
|
+
Message Drafting. Both post-import choices must launch Message Drafting.
|
|
922
|
+
When filters are chosen, launch Message Drafting, then keep filters in the
|
|
923
|
+
parent thread: load `references/filter-leads.md`, draft production rubrics,
|
|
924
|
+
call `save_rubrics`, ask filter approval, and then join Message Drafting for
|
|
925
|
+
template review. When filters are skipped, launch only Message Drafting
|
|
926
|
+
before treating the campaign as in Messages/message review.
|
|
918
927
|
5. For message generation, keep the parent thread as a lean orchestrator and
|
|
919
928
|
use the `post-find-leads-message-scout` compatibility agent for Message
|
|
920
929
|
Drafting whenever the host exposes it
|
|
@@ -963,13 +972,15 @@ updates.
|
|
|
963
972
|
After rubrics save, keep Filter Rules visible for approval; after approval,
|
|
964
973
|
move to Filter Leads and show `Filters saved + waiting for message approval`
|
|
965
974
|
until the template is approved.
|
|
966
|
-
If filters are skipped,
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
975
|
+
If filters are skipped, launch Message Drafting before moving to
|
|
976
|
+
Messages/message review; updating `currentStep` to `messages` is not proof
|
|
977
|
+
that the background worker started. Queue the bounded campaign-table
|
|
978
|
+
execution-slice `enrichCellId` cells only after message approval. Move to the
|
|
979
|
+
generated-row Messages review only after at least one review row passes and
|
|
980
|
+
one generated message is ready.
|
|
970
981
|
Do not ask the user to approve the brief before shell creation unless they
|
|
971
982
|
explicitly requested a no-write draft; the shell itself is the review surface.
|
|
972
|
-
|
|
983
|
+
7. The main thread owns watch navigation. Call
|
|
973
984
|
`mcp__sellable__update_campaign({ campaignId, currentStep })` before major
|
|
974
985
|
visible work so the user can watch progress in the app: `create-offer` for
|
|
975
986
|
the brief, `pick-provider` or the selected provider step while sourcing,
|
|
@@ -984,9 +995,9 @@ updates.
|
|
|
984
995
|
job has reported compact checked/prepared/stop status, `settings` for sender
|
|
985
996
|
selection, `sequence` after sender attach, and `send` once the recommended
|
|
986
997
|
sequence is attached. Do not advance the step backward.
|
|
987
|
-
|
|
998
|
+
8. Keep `selectedLeadListId` as the source list and `workflowTableId` as the
|
|
988
999
|
campaign table. Do not use disk files as the post-mint source of truth.
|
|
989
|
-
|
|
1000
|
+
9. Do not ask the user to run another command.
|
|
990
1001
|
|
|
991
1002
|
## Fallback
|
|
992
1003
|
|