@sellable/install 0.1.288 → 0.1.289

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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sellable/install",
3
- "version": "0.1.288",
3
+ "version": "0.1.289",
4
4
  "type": "module",
5
5
  "description": "One-command installer for Sellable MCP in Claude Code and Codex",
6
6
  "bin": {
@@ -159,6 +159,14 @@ Post Engagers slots; shared sender scope is the union of senderRefs on the
159
159
  shared Signal Discovery and Shared Cold Fallback waterfall slots. If the
160
160
  waterfall has one clear production evergreen program for the workspace, this is
161
161
  not ambiguous even when `list_senders` returns additional connected senders.
162
+ If non-archived existing shared evergreen campaigns/tables are already attached
163
+ to additional senders, count those attached sender ids as current shared-lane
164
+ membership and include them in the shared-lane report. Do not collapse the
165
+ shared scope down to the one person named for a Post Engagers lane unless the
166
+ operator explicitly asked to limit shared lanes to that person or remove other
167
+ senders. Archived campaigns, archived tables, and archived waterfall bindings
168
+ are stale inventory for scope/counting unless the operator supplied those exact
169
+ ids and explicitly asked for archived dashboard visibility repair.
162
170
  In non-interactive or `--yolo` mode, when more than two connected senders exist
163
171
  and neither the prompt nor product-visible waterfall evidence identifies exact
164
172
  evergreen sender scope, stop before mutation with
@@ -168,6 +176,8 @@ Engagers lanes for extra senders.
168
176
  Short form: Do not pass `allConnectedSenders:true` unless the prompt explicitly says all/every connected sender.
169
177
  Short form: "all 4 campaigns" means explicit sender scope plus two shared lanes, not all connected senders.
170
178
  Short form: Product-visible managed evergreen/prod waterfall senderRefs are exact sender scope.
179
+ Short form: Non-archived shared campaign attachments count as current shared-lane sender scope.
180
+ Short form: A named Post Engagers sender is not automatically the whole shared-lane scope.
171
181
  Short form: Do not report `no_senders` while waterfall senderRefs can be mapped to list_senders.
172
182
  Short form: In `--yolo`, ambiguous multi-sender scope blocks before mutation.
173
183
  </inputs>
@@ -270,7 +280,8 @@ differ, pass both explicit arrays:
270
280
  - `postEngagerSenderIds`: only senders that should have sender-owned Post
271
281
  Engagers campaigns.
272
282
  - `sharedSenderIds`: senders attached to the shared Signal Discovery and Shared
273
- Cold Fallback campaigns.
283
+ Cold Fallback campaigns. This must be the full intended shared sender set,
284
+ not merely the sender named for a Post Engagers lane.
274
285
 
275
286
  If the operator says a sender is shared-only, do not create a Post Engagers lane
276
287
  for that shared-only sender. Example: if Justin already has a Post Engagers
@@ -387,10 +398,13 @@ before completion.
387
398
  Short form: Workers must preserve parent postEngagerSenderIds even for shared lanes.
388
399
  Short form: Never run a shared-lane worker-local plan with `postEngagerSenderIds:[]` unless the parent `postEngagerSenderIds` is exactly `[]`.
389
400
 
390
- Worker fan-out must use visible or durable execution. Preferred in local Codex
391
- is a visible Codex thread created with the actual Codex app thread tools:
392
- first call `codex_app.list_projects`, select the current repo project, then
393
- call `codex_app.create_thread` with `target:{type:"project", projectId,
401
+ Worker fan-out must use visible or durable execution. In local Codex, the
402
+ default and preferred runtime is `workerDispatch.preferredRuntime:
403
+ "visible-codex-app-thread"`. The parent must attempt a visible Codex app thread
404
+ first with the actual Codex app thread tools: if `codex_app.create_thread` is
405
+ not already visible, use tool discovery for the Codex app thread tools; then
406
+ call `codex_app.list_projects`, select the current repo project, and call
407
+ `codex_app.create_thread` with `target:{type:"project", projectId,
394
408
  environment:{type:"local"}}`. Do not create a worktree target for evergreen
395
409
  UAT or lane execution. The parent must record the returned thread id, pass
396
410
  exactly one lane packet into that thread, and require the worker to write the
@@ -404,9 +418,10 @@ worker exits, and contain the current `planRevision`, `actionId`, `laneKey`,
404
418
  `receiptArtifactPath`, and `durableReceiptWritten:true`. If a receipt predates
405
419
  the current run, uses an old path without `receiptRunId`, or was not freshly
406
420
  written by the current worker, stop with `blocked: stale_receipt_artifact`
407
- before parent verify or completion. A streaming worker or branch worker is
408
- acceptable only when it writes a fresh durable per-lane receipt artifact as it
409
- works.
421
+ before parent verify or completion. A streaming worker or branch worker is a
422
+ fallback only when app thread tools are unavailable; the receipt must include
423
+ `preferredRuntimeAttempt` for `visible-codex-app-thread` and a non-empty
424
+ `fallbackReason`, or backend verify rejects it.
410
425
  When visible Codex app thread tools are unavailable but local Codex CLI is
411
426
  available, the accepted durable streaming-worker command shape is:
412
427
  `codex -a never -s danger-full-access -c model_reasoning_effort=xhigh exec --skip-git-repo-check -m <worker-model> -C <repo> -o <worker-final-file> -`.
@@ -716,7 +731,11 @@ not a parent-thread summary. The receipt must include:
716
731
  `workflowAssetPath:"create-campaign-v2/core/flow.v2.json"`,
717
732
  `workflowAssetLoaded:true`, the real `workerRuntime`, a visible
718
733
  `workerThreadId` or durable `receiptArtifactPath`, `durableReceiptWritten:true`
719
- when using a receipt file, and `notAdHoc:true`.
734
+ when using a receipt file, and `notAdHoc:true`. If `workerRuntime` is
735
+ `streaming-worker-with-durable-receipt` or
736
+ `branch-worker-with-durable-receipt`, also include
737
+ `preferredRuntimeAttempt` proving the parent attempted
738
+ `visible-codex-app-thread` first and a non-empty `fallbackReason`.
720
739
  - `researchSenderReceipt`: `research-sender` prompt load proof,
721
740
  `complete_sender_research` result, sender LinkedIn identity basis, and the
722
741
  notes/proof counts used before the net-new `create_campaign` call. It must
@@ -911,7 +930,7 @@ verification unless the same object also appears inside
911
930
  "workflowPromptLoadedToHasMoreFalse": true,
912
931
  "workflowAssetPath": "create-campaign-v2/core/flow.v2.json",
913
932
  "workflowAssetLoaded": true,
914
- "workerRuntime": "separate-codex-thread",
933
+ "workerRuntime": "visible-codex-app-thread",
915
934
  "workerThreadId": "<visible local Codex thread id>",
916
935
  "receiptArtifactPath": "<receiptArtifactPath from workerDispatch.receiptArtifactHint>",
917
936
  "durableReceiptWritten": true,
@@ -112,14 +112,20 @@ side effects, and stop/rollback condition.
112
112
 
113
113
  Immediately after loading the internal workflow, call
114
114
  `get_refill_target_plan`. The target plan is the canonical first fact receipt:
115
- selected sender-local days, gross scheduled-send target, scheduler-owned
116
- scheduled coverage across active enrolled campaigns, ready buffer, remaining
117
- scheduled gap, remaining ready-or-scheduled gap, `targetShapeRevision`, and
118
- `stateRevision`. If the target plan is complete, report that the selected target
119
- is already filled and no-op without asking for approval. If the ready buffer
120
- covers the target but scheduled coverage is still short, run only a bounded
121
- read-only scheduler settle/reread loop and report
122
- `awaiting_scheduler_after_ready_buffer` if it does not settle.
115
+ eligible senders, selected sender-local days, gross target, actual sent
116
+ coverage, scheduler-owned scheduled coverage across active enrolled campaigns,
117
+ projected coverage (`sent + scheduled`), inferred per-sender send lane/action
118
+ selections, ready buffer, remaining projected gap, paid-InMail credit/threshold
119
+ feasibility, `targetShapeRevision`, and `stateRevision`. When `actionTypes` are
120
+ omitted, trust the target plan's inferred lane rather than asking whether to
121
+ fill connections, DMs, or InMails. If the target plan is complete by projected
122
+ coverage, report that the selected target is already filled and no-op without
123
+ asking for approval. If the ready buffer covers the projected gap but scheduled
124
+ coverage is still short, run only a bounded read-only scheduler settle/reread
125
+ loop and report `awaiting_scheduler_after_ready_buffer` if it does not settle.
126
+ If paid InMail is below threshold, stale, or missing credit facts, report the
127
+ exact campaign/table/column threshold action or connection fallback; `--yolo`
128
+ does not lower paid-InMail thresholds or create campaigns.
123
129
 
124
130
  If the plain route's managed waterfall targets are stale, for example skipped
125
131
  targets show archived/completed shared slots or the returned targets do not cover
@@ -158,10 +164,12 @@ effect. Starting a paused campaign can let the product scheduler schedule/send
158
164
  approved eligible sequence actions, so include that expected side effect in the
159
165
  packet. It does not authorize starting unrelated, archived, completed, draft, or
160
166
  direct campaigns, separate launch/send actions, archive or delete cleanup,
161
- direct scheduler writes, sender reassignment, or campaigns outside those
167
+ direct scheduler writes, sender reassignment, paid-InMail threshold changes,
168
+ connection campaign creation, or campaigns outside those
162
169
  selected for the eligible sender set. Stop and re-plan if the route, sender set,
163
- ids, caps, blockers, action class, or side-effect class drift before mutation.
164
- Scheduled counts increasing toward the approved target are expected progress:
170
+ ids, caps, blockers, paid-InMail feasibility, action class, or side-effect class
171
+ drift before mutation. Sent/scheduled counts increasing toward the approved
172
+ target are expected progress:
165
173
  they change `stateRevision`, not `targetShapeRevision`, and do not require a
166
174
  second approval.
167
175
 
@@ -173,19 +181,20 @@ return concrete continuation options with campaign names, exact ids, which optio
173
181
  is already covered by the current packet, and which option needs a new approval
174
182
  packet.
175
183
 
176
- For `--yolo` fill/schedule requests, completion means scheduler-proven horizon
177
- saturation, not merely prepared/approved/ready rows. Maintain a horizon
178
- saturation ledger per selected sender: selected send days, gross capacity,
179
- future scheduler-owned scheduled cells with non-null `scheduledFor`,
180
- ready-to-schedule buffer, remaining scheduled gap, remaining ready-or-scheduled
181
- gap, `targetShapeRevision`, `stateRevision`, and the next MCP primitive that can
182
- reduce the gap. After every
183
- apply/prep/start result, wait for processing, reread refill state, recompute the
184
- ledger, then keep applying safe bounded actions until the scheduled count fills
185
- the horizon or a concrete blocker/timeout is proven. If ready rows cover the
186
- horizon but the scheduler has not picked them up yet, run a bounded scheduler
187
- settle loop and report `awaiting_scheduler_after_ready_buffer` as not complete
188
- when the timeout is reached.
184
+ For `--yolo` fill/schedule requests, completion means projected horizon
185
+ saturation (`sent + scheduled`), not merely prepared/approved/ready rows.
186
+ Maintain a horizon saturation ledger per selected sender: selected send days,
187
+ gross capacity, actual sent cells, future scheduler-owned scheduled cells with
188
+ non-null `scheduledFor`, projected count, ready-to-schedule buffer, remaining
189
+ projected gap, paid-InMail feasibility, `targetShapeRevision`,
190
+ `stateRevision`, and the next MCP primitive that can reduce the gap. After every
191
+ apply/prep/start result, wait for processing, reread the target plan/refill
192
+ state, recompute the ledger, then keep applying safe bounded actions until
193
+ projected coverage fills the horizon or a concrete blocker/timeout is proven.
194
+ If ready rows cover the projected gap but the scheduler has not picked them up
195
+ yet, run a bounded scheduler settle loop and report
196
+ `awaiting_scheduler_after_ready_buffer` as not complete when the timeout is
197
+ reached.
189
198
 
190
199
  In `--yolo`, the default two-day fill horizon is two send days unless
191
200
  `--until`/`untilDate` is provided. If an until date is provided, compute bounded