@sellable/install 0.1.253 → 0.1.255
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
|
@@ -353,9 +353,20 @@ the expected receipt paths, and record a per-worker exit code plus final-file
|
|
|
353
353
|
paths and stderr/log paths before returning. If workers exit with empty logs and
|
|
354
354
|
no final files because the subprocess detached or was reaped, stop with
|
|
355
355
|
`blocked: worker_subprocess_detached_without_output` before parent verify.
|
|
356
|
+
When launching multiple local Codex CLI workers from one shell, start each
|
|
357
|
+
background job in the same shell that will call `wait`. Do not capture worker
|
|
358
|
+
PIDs through command substitution, a subshell, a pipeline, or a helper function
|
|
359
|
+
invoked as `worker_pid=$(launch_worker ...)`; those patterns make the captured
|
|
360
|
+
PID non-waitable by the parent shell. Use the same-shell PID array pattern:
|
|
361
|
+
`pids=(); codex ... > "$log_file" 2>&1 & pids+=("$!")`, then
|
|
362
|
+
`for pid in "${pids[@]}"; do wait "$pid" || rc=1; done`. If `wait` reports
|
|
363
|
+
`pid is not a child of this shell`, stop with
|
|
364
|
+
`blocked: worker_subprocess_detached_without_output`.
|
|
356
365
|
Short form: run the wrapper with `/bin/bash -lc`.
|
|
357
366
|
Short form: Do not rely on zsh-specific behavior.
|
|
358
367
|
Short form: Do not use `status` as a shell variable; use `exit_code` or `rc`.
|
|
368
|
+
Short form: Do not capture worker PIDs through command substitution or a subshell.
|
|
369
|
+
Short form: Use same-shell `pids+=("$!")` before waiting on every PID.
|
|
359
370
|
Short form: Receipt polling uses `find <receipt-dir> -maxdepth 1 -name 'evg_*.json' -print`.
|
|
360
371
|
Short form: Do not use naked `*.json` globs under zsh; no `no matches found` diagnostics.
|
|
361
372
|
Short form: Do not embed `<<'WORKER_PROMPT'` heredocs inside a quoted `/bin/bash -lc` command string.
|
|
@@ -932,17 +943,34 @@ current plan.
|
|
|
932
943
|
Before calling verify, the parent should build compact receipt objects from the
|
|
933
944
|
durable receipt files and pass those compact objects to MCP. The compact receipt
|
|
934
945
|
must preserve every verifier-owned field named above, including top-level ids,
|
|
935
|
-
`createCampaignStepReceipt`, canonical
|
|
936
|
-
proof, and at least three concrete sample
|
|
946
|
+
`createCampaignStepReceipt`, `researchSenderReceipt`, canonical
|
|
947
|
+
filter/message/review/sequence/final proof, and at least three concrete sample
|
|
948
|
+
messages. It should omit large raw
|
|
937
949
|
search outputs, long post lists, full row arrays, raw provider responses, and
|
|
938
950
|
debug-only narration fields. Do not pass multi-hundred-kilobyte raw receipt
|
|
939
951
|
objects when a compact canonical receipt has the same proof; large raw verify
|
|
940
952
|
payloads can stall local MCP bridges and make UAT ambiguous.
|
|
953
|
+
Use a small Node JSON compactor for non-trivial compaction. Do not build complex
|
|
954
|
+
inline `jq` filters inside nested quoted shell strings; quote failures are a
|
|
955
|
+
UAT blocker and waste the verification run. The Node compactor must preserve
|
|
956
|
+
every canonical verifier object under `createCampaignStepReceipt`, including
|
|
957
|
+
`setupPlanCall`, `createCampaignWorkflowReceipt`, `researchSenderReceipt`,
|
|
958
|
+
`campaignBriefReceipt`, `sourceDecisionReceipt`, `filterDecisionReceipt`,
|
|
959
|
+
`messageDraftingReceipt`, `reviewBatchReceipt`, `sequenceReceipt`,
|
|
960
|
+
`finalPausedSendProof`, and `verifyCall`.
|
|
961
|
+
When compacting, normalize `finalPausedSendProof.currentStep` and
|
|
962
|
+
`finalPausedSendProof.campaignStatus` from nested pause/navigation readbacks if
|
|
963
|
+
the worker receipt stored those values under `pauseCampaignResult`,
|
|
964
|
+
`navigationReadback`, or `navigationProof`; do not pass an empty
|
|
965
|
+
`finalPausedSendProof` object to verify.
|
|
941
966
|
Do not print or `jq .` full receipt JSON into the terminal. For local checks,
|
|
942
967
|
print only compact summaries such as file, actionId, laneKey, campaignId,
|
|
943
968
|
filter status, sample count, approved count, and final status.
|
|
944
969
|
Short form: Parent verify uses compact canonical receipt objects, not raw giant receipts.
|
|
945
970
|
Short form: Do not dump full receipt JSON with `jq .`.
|
|
971
|
+
Short form: Do not use complex inline `jq` for receipt compaction; use Node.
|
|
972
|
+
Short form: Compact receipts must preserve `researchSenderReceipt`.
|
|
973
|
+
Short form: Compact receipts must preserve direct `finalPausedSendProof.currentStep` and `campaignStatus`.
|
|
946
974
|
Short form: Never change planRevision/actionId/laneKey while compacting receipts.
|
|
947
975
|
|
|
948
976
|
Message proof for every customer-visible lane must come from the current
|
|
@@ -951,15 +979,23 @@ packaged `generate-messages` path before completion is reported.
|
|
|
951
979
|
Parent-thread handwritten copy or setting `currentStep` is not proof.
|
|
952
980
|
|
|
953
981
|
The parent must run its own sample-quality gate before final reporting, even
|
|
954
|
-
when worker receipts say `verdict:"passed"`. For
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
982
|
+
when worker receipts say `verdict:"passed"`. For Post Engagers lanes, reject
|
|
983
|
+
any sample that adds a relevance question, CTA, product line, or extra paragraph
|
|
984
|
+
after `Thank you for the support on my post about ...`; blocked phrases include
|
|
985
|
+
`curious`, `open to`, `trying to`, `worth seeing`, `want to see`, and any
|
|
986
|
+
Sellable/product explanation. For each shared lane, normalize the reviewed
|
|
987
|
+
sample messages by removing leading greeting/name lines, first names, and
|
|
988
|
+
whitespace-only differences; reject shared-lane samples when the message body is
|
|
989
|
+
identical after removing first names or when all samples share the same paragraph
|
|
990
|
+
skeleton. Also reject final shared-lane samples with `Hey <name>,` letter
|
|
991
|
+
punctuation, weak relevance hedges, internal workflow vocabulary, self-intros,
|
|
992
|
+
or any non-empty `issues`. Shared lanes must also reject mechanical
|
|
993
|
+
product-process wording such as `sequence-prospects`, `dashboard overhead`,
|
|
994
|
+
`campaign map`, `campaign idea into prospects`, `prospects, filters, messages`,
|
|
995
|
+
`send-ready copy`, or `reviewed prospect lists`. If the parent finds repeated
|
|
996
|
+
shared-lane sample copy, report `blocked: repeated_shared_lane_sample_copy`,
|
|
997
|
+
revise the campaign brief/template through the packaged workflow, rerun Generate
|
|
998
|
+
Message, and verify current-revision sample messages before final completion.
|
|
963
999
|
</command_backed_workflow>
|
|
964
1000
|
|
|
965
1001
|
<objective>
|
|
@@ -998,8 +1034,9 @@ and verify current-revision sample messages before final completion.
|
|
|
998
1034
|
Short form: Shared lanes must reject internal workflow vocabulary.
|
|
999
1035
|
Short form: revise or rerun the packaged create-campaign/generate-messages path.
|
|
1000
1036
|
- **Post Engagers** first-message style: short, casual, references the
|
|
1001
|
-
sender-authored post they engaged with,
|
|
1002
|
-
vocabulary, no pitch, no meeting ask
|
|
1037
|
+
sender-authored post they engaged with, and stops after the thank-you
|
|
1038
|
+
line. Use **no internal vocabulary, no pitch, no meeting ask, no product
|
|
1039
|
+
line, and no relevance question** in message one:
|
|
1003
1040
|
|
|
1004
1041
|
```
|
|
1005
1042
|
{{first_name}}
|
|
@@ -1009,6 +1046,10 @@ and verify current-revision sample messages before final completion.
|
|
|
1009
1046
|
Thank you for the support on my post about {{post_topic_line}}
|
|
1010
1047
|
```
|
|
1011
1048
|
|
|
1049
|
+
Do not add any paragraph after the thank-you line. In particular, do not
|
|
1050
|
+
append `curious, are you trying...`, `open to...`, `worth seeing...`, or
|
|
1051
|
+
Sellable/product copy to a Post Engagers first message.
|
|
1052
|
+
|
|
1012
1053
|
- **Shared Signal Discovery** first-message style: short, casual, references
|
|
1013
1054
|
the real observed signal/theme or public conversation. It may mention the
|
|
1014
1055
|
engagement source only when the source evidence supports it. Do not say
|
|
@@ -1032,7 +1073,10 @@ and verify current-revision sample messages before final completion.
|
|
|
1032
1073
|
relevant" in Shared Signal Discovery samples. Translate source/tool terms
|
|
1033
1074
|
into prospect-facing business language; do not put internal workflow
|
|
1034
1075
|
vocabulary such as "Codex-style workflow", "MCP", "agent workflows", or
|
|
1035
|
-
"Claude-style agent workflows" in customer-facing message one.
|
|
1076
|
+
"Claude-style agent workflows" in customer-facing message one. Also avoid
|
|
1077
|
+
generic product-process nouns such as "dashboard", "workflow", "source",
|
|
1078
|
+
"send-ready copy", "reviewed prospect lists", and "sequence" unless the
|
|
1079
|
+
recipient's own product/category makes that exact word buyer-native.
|
|
1036
1080
|
Short form: Shared Signal Discovery uses no self-intro such as "I'm building Sellable".
|
|
1037
1081
|
Short form: Shared Signal Discovery uses no self-intro such as "We're building Sellable".
|
|
1038
1082
|
Short form: Shared Signal Discovery uses no "I've put together".
|
|
@@ -1057,6 +1101,11 @@ and verify current-revision sample messages before final completion.
|
|
|
1057
1101
|
as "Sellable is a GTM system" across samples; every reviewed cold sample
|
|
1058
1102
|
should be specific enough to the role, company, or problem that the three
|
|
1059
1103
|
sample messages do not share the same body skeleton.
|
|
1104
|
+
Do not use mechanical Sellable process language such as "campaign idea into
|
|
1105
|
+
prospects, filters, messages, and sequence setup", "sequence-prospects",
|
|
1106
|
+
"dashboard overhead", "campaign map", "send-ready copy", or "reviewed
|
|
1107
|
+
prospect lists" in final cold samples. Say the buyer problem and one plain
|
|
1108
|
+
outcome instead.
|
|
1060
1109
|
Before Message Drafting runs, the campaign brief must already forbid
|
|
1061
1110
|
self-intros, generic product summaries, opt-out shrugs, product-stack
|
|
1062
1111
|
dumps, and repeated template structure. Do not let the first generation
|