@sellable/install 0.1.279 → 0.1.281
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/package.json
CHANGED
|
@@ -938,32 +938,48 @@ verify and do not repair by summarizing product readback in the parent.
|
|
|
938
938
|
Message Drafting runtime rule: the preferred proof source is the normal
|
|
939
939
|
create-campaign branch handoff (`watchNarration.workerDetails.messageDraftBuilder`
|
|
940
940
|
or equivalent) with `statusSource:"branch"`. If that internal branch handoff is
|
|
941
|
-
not callable or not exposed in the packaged MCP runtime, do **not**
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
941
|
+
not callable or not exposed in the packaged MCP runtime, do **not** substitute
|
|
942
|
+
plain row generation. The lane worker must inline the same
|
|
943
|
+
`post-find-leads-message-scout` contract in the worker thread before any
|
|
944
|
+
`start_campaign_message_preparation` call:
|
|
945
|
+
|
|
946
|
+
1. Run the `post-find-leads-message-scout` branch, or inline its packaged
|
|
947
|
+
contract when branch launch is unavailable, from the current campaign/table,
|
|
948
|
+
selected lead list, saved filters, review batch row ids/hash, brief hash,
|
|
949
|
+
`mode:"create-campaign-v2"`, and lane type.
|
|
950
|
+
2. Load `get_subskill_prompt({ subskillName:"generate-messages" })` until
|
|
951
|
+
`hasMore:false`, all required message assets, and
|
|
952
|
+
`create-campaign-v2-validation`.
|
|
953
|
+
3. Produce a concrete `messageDraftRecommendation` before row generation. It
|
|
954
|
+
must include the selected message approach/template recommendation,
|
|
955
|
+
token/fill rules, source-use rules, hard avoids, at least one rendered good
|
|
956
|
+
sample, current campaign/table/source basis, and validation status. Shared
|
|
957
|
+
lanes still use `firstMessageTemplateState:"not preset; generate-messages
|
|
958
|
+
branch selected the final message approach"`; do not set
|
|
959
|
+
`firstMessageTemplate` for shared lanes.
|
|
960
|
+
4. Persist the recommendation into the campaign brief/message generation basis
|
|
961
|
+
with the packaged create-campaign tools before generating rows. If the
|
|
962
|
+
generated copy fails review, update the campaign brief/message template with
|
|
963
|
+
`update_campaign_brief` or `revise_message_template_and_rerun`, then rerun
|
|
964
|
+
Generate Message and review current-revision generated output.
|
|
965
|
+
5. Only after the scout recommendation and persisted basis exist, call
|
|
966
|
+
`start_campaign_message_preparation({ campaignId, tableId,
|
|
949
967
|
targetPreparedMessages, maxRowsToCheck, approvalMode:"mark_ready",
|
|
950
968
|
autoContinue:true })` inside the same lane worker, with bounded caps from the
|
|
951
|
-
lane packet.
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
969
|
+
lane packet. `start_campaign_message_preparation` is row execution proof
|
|
970
|
+
only; it is not Message Drafting proof and cannot satisfy this step by
|
|
971
|
+
itself. Never call `start_campaign_message_preparation` with
|
|
972
|
+
`approvalMode:"approve"` for evergreen setup.
|
|
973
|
+
Generate/readiness and approval are separate safety steps: first mark rows
|
|
974
|
+
ready, then inspect generated copy, then approve exactly one semantic
|
|
975
|
+
Approved cell through `select_campaign_cells` and `update_cell`.
|
|
957
976
|
Approval shorthand: approve exactly one semantic Approved cell.
|
|
958
977
|
In this message-drafting path, `update_cell` is allowed only for the semantic
|
|
959
978
|
Approved checkbox. Do not use `update_cell` or any row/cell write to edit
|
|
960
979
|
generated message text, sample copy, or final message bodies in automation.
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
`sampleMessages` must come from generated current-revision cells after the
|
|
965
|
-
brief/template rerun, not from hand-edited message cell overrides. If a lane
|
|
966
|
-
used a generated-message body override, report
|
|
980
|
+
Receipt `sampleMessages` must come from generated current-revision cells
|
|
981
|
+
after the brief/template rerun, not from hand-edited message cell overrides.
|
|
982
|
+
If a lane used a generated-message body override, report
|
|
967
983
|
`blocked: generated_message_cell_override` instead of success.
|
|
968
984
|
Do not repair by overwriting bad generated message cells and then calling the
|
|
969
985
|
overwritten cells `sampleMessages`.
|
|
@@ -974,9 +990,9 @@ path itself in the worker thread:
|
|
|
974
990
|
Short form: `update_cell` is allowed only for the semantic Approved checkbox.
|
|
975
991
|
Short form: Do not use `update_cell` to edit generated message text.
|
|
976
992
|
Short form: Bad copy requires brief/template revision plus Generate Message rerun.
|
|
977
|
-
|
|
993
|
+
6. Poll `get_campaign_message_preparation_status` until no queued/active cells
|
|
978
994
|
remain or a bounded stop reason is returned.
|
|
979
|
-
|
|
995
|
+
7. Use `get_campaign_messages_preview` or `select_campaign_cells` to inspect
|
|
980
996
|
generated rows, quality-review at least 3 samples, approve exactly one
|
|
981
997
|
quality-valid route-proof row when none is already approved, and prove no
|
|
982
998
|
broad approve-all happened.
|
|
@@ -986,16 +1002,21 @@ path itself in the worker thread:
|
|
|
986
1002
|
approvedGeneratedMessageCount exactly 1. Do not report completion with 2+
|
|
987
1003
|
approved rows.
|
|
988
1004
|
Approval shorthand: Do not report completion with 2+ approved rows.
|
|
989
|
-
|
|
1005
|
+
8. Continue to `attach_recommended_sequence({ campaignId, currentStep:"send" })`
|
|
990
1006
|
and, if the campaign is still `DRAFT`, `pause_campaign({ campaignId })`.
|
|
991
1007
|
Reread the campaign/table before claiming completion.
|
|
992
1008
|
|
|
993
1009
|
That packaged worker path must return `messageDraftingReceipt.statusSource:
|
|
994
1010
|
"packaged-generate-messages-worker"`. It is accepted only when the receipt
|
|
995
|
-
includes
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
1011
|
+
includes branch-equivalent `post-find-leads-message-scout` proof, the
|
|
1012
|
+
`messageDraftRecommendation`, proof the recommendation was persisted into the
|
|
1013
|
+
brief/message basis before row generation, the prompt/assets/validation proof,
|
|
1014
|
+
current campaign/table/source basis, generated review rows, sample messages,
|
|
1015
|
+
quality review, route-proof approval evidence, sequence proof, and final
|
|
1016
|
+
paused-send proof required of the branch handoff. `statusSource:
|
|
1017
|
+
"parent-thread-fallback"` is still invalid. If neither branch handoff nor
|
|
1018
|
+
inline scout proof can run, stop with `blocked:
|
|
1019
|
+
missing_message_drafting_branch`; do not shortcut through row prep.
|
|
999
1020
|
The only accepted statusSource values are exactly `branch` and
|
|
1000
1021
|
`packaged-generate-messages-worker`; descriptive aliases such as
|
|
1001
1022
|
`package-readback-local-thread` are rejected.
|
|
@@ -1232,7 +1253,7 @@ Message, and verify current-revision sample messages before final completion.
|
|
|
1232
1253
|
Short form: Do not pass the warm template into Shared Signal Discovery or Shared Cold Fallback.
|
|
1233
1254
|
Short form: Shared lanes must reject generic product-summary samples.
|
|
1234
1255
|
Short form: Shared lanes must reject three nearly identical samples.
|
|
1235
|
-
Short form: Shared lanes must reject intent-assumptive hedges
|
|
1256
|
+
Short form: Shared lanes must reject unsupported intent-assumptive hedges; Shared Signal Discovery may use Dotwork-style topic bridges like "saw you might be interested in [topic], so hope this is relevant", "saw you in a few conversations about [topic], so hope this is relevant", or "hope this is relevant if [topic] is part of the plan" when the source evidence supports the topic and the line does not claim engagement or expose source mechanics.
|
|
1236
1257
|
Short form: Shared lanes must reject internal workflow vocabulary.
|
|
1237
1258
|
Short form: revise or rerun the packaged create-campaign/generate-messages path.
|
|
1238
1259
|
- **Post Engagers** first-message style: short, casual, references the
|
|
@@ -1298,7 +1319,7 @@ Message, and verify current-revision sample messages before final completion.
|
|
|
1298
1319
|
Short form: Shared Signal Discovery uses no self-intro such as "I'm building Sellable".
|
|
1299
1320
|
Short form: Shared Signal Discovery uses no self-intro such as "We're building Sellable".
|
|
1300
1321
|
Short form: Shared Signal Discovery uses no "I've put together".
|
|
1301
|
-
Short form: topic-level bridges, including "saw you in a few conversations about/around [topic], so hope this is relevant" and "hope this is relevant if [topic] is part of the plan", are allowed for Shared Signal Discovery when evidence-backed and not engagement-claiming; "might be interested"
|
|
1322
|
+
Short form: topic-level bridges, including "saw you might be interested in [topic], so hope this is relevant", "saw you in a few conversations about/around [topic], so hope this is relevant", and "hope this is relevant if [topic] is part of the plan", are allowed for Shared Signal Discovery when evidence-backed and not engagement-claiming; do not use bare "might be interested" as a generic intent claim.
|
|
1302
1323
|
Short form: no internal workflow vocabulary such as "Codex-style workflow", "MCP", "agent workflows", "Claude Code", or "Claude-style agent workflows".
|
|
1303
1324
|
- **Shared Cold Fallback** first-message style: cold, direct, and cohesive.
|
|
1304
1325
|
It must not pretend there was engagement, must not say "saw you pop up",
|
|
@@ -1365,16 +1386,25 @@ Message, and verify current-revision sample messages before final completion.
|
|
|
1365
1386
|
Short form: missing or skipped filter proof is `blocked: missing_filter_setup`.
|
|
1366
1387
|
Short form: run Message Drafting only after saved filters are applied.
|
|
1367
1388
|
- Every customer-visible lane must run Message Drafting from the current
|
|
1368
|
-
campaign/table basis after source rows exist
|
|
1369
|
-
|
|
1370
|
-
`
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1389
|
+
campaign/table basis after source rows exist and saved filters are
|
|
1390
|
+
applied. The worker must use the normal
|
|
1391
|
+
`post-find-leads-message-scout` branch handoff or inline that same scout
|
|
1392
|
+
contract when branch launch is unavailable. Plain
|
|
1393
|
+
`start_campaign_message_preparation` is row execution proof only; it is
|
|
1394
|
+
not a fallback substitute for Message Drafting. The worker must load the
|
|
1395
|
+
full packaged `generate-messages` prompt, every required asset, and
|
|
1396
|
+
`create-campaign-v2-validation`; before row generation, the receipt must
|
|
1397
|
+
show branch-equivalent scout proof, a concrete
|
|
1398
|
+
`messageDraftRecommendation`, and proof that recommendation was persisted
|
|
1399
|
+
into the campaign brief/message generation basis. Only then may the
|
|
1400
|
+
worker call `start_campaign_message_preparation` and poll
|
|
1401
|
+
`get_campaign_message_preparation_status` from the lane worker. The
|
|
1402
|
+
returned receipt must include `statusSource:"branch"` or
|
|
1403
|
+
`statusSource:"packaged-generate-messages-worker"`, at least 3 concrete
|
|
1404
|
+
reviewed sample messages, a passed validation result, and a passed quality
|
|
1405
|
+
review. Row/message counts alone are not enough. If the branch handoff and
|
|
1406
|
+
inline scout contract are both unavailable, report
|
|
1407
|
+
`blocked: missing_message_drafting_branch`.
|
|
1378
1408
|
|
|
1379
1409
|
- **The brief must declare the delivery format** so Generate Message writes copy suited to how it actually sends:
|
|
1380
1410
|
- DM lanes: add a `Delivery format:` line — either `multiline (each paragraph sends as its own DM message)` or `single message`. When multiline, the template's blank-line paragraphs ARE the message boundaries — write each one as a standalone typed message.
|
|
@@ -1412,12 +1442,15 @@ Message, and verify current-revision sample messages before final completion.
|
|
|
1412
1442
|
`hasMore:false`, required message assets were loaded, and
|
|
1413
1443
|
`create-campaign-v2-validation` ran through
|
|
1414
1444
|
`workerDetails.messageDraftBuilder` with `statusSource:"branch"` or
|
|
1415
|
-
through the lane worker's
|
|
1416
|
-
`statusSource:"packaged-generate-messages-worker"
|
|
1417
|
-
|
|
1445
|
+
through the lane worker's inline `post-find-leads-message-scout` contract
|
|
1446
|
+
with `statusSource:"packaged-generate-messages-worker"`. For the packaged
|
|
1447
|
+
worker path, proof must include branch-equivalent scout proof, a concrete
|
|
1448
|
+
`messageDraftRecommendation`, template/basis persistence proof before row
|
|
1449
|
+
generation, `start_campaign_message_preparation`, and
|
|
1418
1450
|
`get_campaign_message_preparation_status`. The generated-message cells are
|
|
1419
1451
|
not prompt proof; `currentRevisionGeneratedMessages` and row previews are
|
|
1420
|
-
only downstream cell evidence.
|
|
1452
|
+
only downstream cell evidence. Row prep alone is not prompt proof. The
|
|
1453
|
+
proof must include
|
|
1421
1454
|
`validationResult:"passed"`, a passed quality review, and at least 3
|
|
1422
1455
|
reviewed sample messages. For Shared Cold Fallback, reject samples that
|
|
1423
1456
|
open with a standalone name followed by "Hey there" or a similarly generic
|
|
@@ -157,6 +157,19 @@ return concrete continuation options with campaign names, exact ids, which optio
|
|
|
157
157
|
is already covered by the current packet, and which option needs a new approval
|
|
158
158
|
packet.
|
|
159
159
|
|
|
160
|
+
For `--yolo` fill/schedule requests, completion means scheduler-proven horizon
|
|
161
|
+
saturation, not merely prepared/approved/ready rows. Maintain a horizon
|
|
162
|
+
saturation ledger per selected sender: selected send days, gross capacity,
|
|
163
|
+
future scheduler-owned scheduled cells with non-null `scheduledFor`,
|
|
164
|
+
ready-to-schedule buffer, remaining scheduled gap, remaining ready-or-scheduled
|
|
165
|
+
gap, and the next MCP primitive that can reduce the gap. After every
|
|
166
|
+
apply/prep/start result, wait for processing, reread refill state, recompute the
|
|
167
|
+
ledger, then keep applying safe bounded actions until the scheduled count fills
|
|
168
|
+
the horizon or a concrete blocker/timeout is proven. If ready rows cover the
|
|
169
|
+
horizon but the scheduler has not picked them up yet, run a bounded scheduler
|
|
170
|
+
settle loop and report `awaiting_scheduler_after_ready_buffer` as not complete
|
|
171
|
+
when the timeout is reached.
|
|
172
|
+
|
|
160
173
|
In `--yolo`, the default two-day fill horizon is two send days unless
|
|
161
174
|
`--until`/`untilDate` is provided. If an until date is provided, compute bounded
|
|
162
175
|
gaps through that sender-local date inclusive, skipping no-send days and never
|