@sellable/install 0.1.228 → 0.1.230

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.
@@ -37,7 +37,7 @@ function getInstallVersion() {
37
37
  }
38
38
  }
39
39
 
40
- const CODEX_PLUGIN_VERSION = "0.1.45";
40
+ const CODEX_PLUGIN_VERSION = "0.1.47";
41
41
  const CODEX_PLUGIN_COMPAT_VERSIONS = [
42
42
  "0.1.8",
43
43
  "0.1.9",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sellable/install",
3
- "version": "0.1.228",
3
+ "version": "0.1.230",
4
4
  "type": "module",
5
5
  "description": "One-command installer for Sellable MCP in Claude Code and Codex",
6
6
  "bin": {
@@ -24,10 +24,19 @@ run without user input, or similar, run in **automation mode**:
24
24
  - Reconcile structure and record any template/config polish as `created`,
25
25
  `reused`, `repaired`, `flagged`, or `blocked`.
26
26
  - Choose the automation depth from the invoking prompt:
27
+ - Sparse `--yolo` create/repair invocations default to customer-visible completion:
28
+ when the user says run/create/repair/setup `$sellable:create-evergreen-campaigns`,
29
+ create evergreen campaigns, or similar without saying heartbeat/structure-only,
30
+ set `depth:"customer_visible"`. Customers usually expect usable campaigns,
31
+ not empty shells.
27
32
  - **Structure-only reconcile** is for heartbeat prompts that only say to
28
- ensure slots exist. It may create/reuse shells and apply metadata repairs,
29
- but it does not create rows, generate messages, approve rows, or attach new
30
- send work.
33
+ ensure slots exist. Only choose `depth:"structure_only"` for
34
+ heartbeat/ensure-slots-only automation where the prompt explicitly says it
35
+ does not need source rows, generated messages, approvals, or sequence. It may
36
+ create/reuse shells and apply metadata repairs, but it does not create rows,
37
+ generate messages, approve rows, or attach new send work.
38
+ Short form: only choose `depth:"structure_only"` for
39
+ heartbeat/ensure-slots-only runs.
31
40
  - **Customer-visible completion** is required when the prompt says full
32
41
  campaign, customer-ready, send-review-ready, went through
33
42
  `$sellable:create-campaign`, fill out, approve one, only needs enrich and
@@ -138,6 +147,16 @@ for that shared-only sender. Example: if Justin already has a Post Engagers
138
147
  campaign and Jell/Hulan should only participate in the two shared campaigns,
139
148
  call `setup_evergreen_campaigns` with `postEngagerSenderIds:["<justin id>"]`
140
149
  and `sharedSenderIds:["<justin id>","<jell or hulan id>"]`.
150
+ If the operator says to keep a protected existing Post Engagers campaign unchanged
151
+ and create/repair only the shared lanes, pass `postEngagerSenderIds:[]` and the
152
+ full shared sender set in `sharedSenderIds`. Do not include the protected active
153
+ Post Engagers lane as a reuse packet in that shared-only execution scope: an
154
+ ACTIVE protected lane can correctly produce a backend `launched_campaign`
155
+ blocker and would make the whole yolo plan non-autoExecutable even though the
156
+ operator asked to leave it untouched. Inventory and waterfall proof may mention
157
+ the protected lane, but selectedActionIds and lane workers must cover only the
158
+ shared lane packets.
159
+ Short form: Do not include the protected active Post Engagers lane as a reuse packet when the operator requested only shared lane execution.
141
160
 
142
161
  When senders are ambiguous, ask which sender ids belong in the Post Engagers
143
162
  sender scope and which belong in the shared lane sender scope before planning.
@@ -155,6 +174,12 @@ plan execution, paid InMail spend, or ambiguous target choice. Stop on wrong
155
174
  workspace, cleanup/archive/delete need, stale plan, disconnected sender,
156
175
  duplicate candidate, unsafe side effect, missing source proof, or missing
157
176
  message proof.
177
+ In exec/automation mode, do not call `request_user_input`. If a plan under
178
+ `--yolo` returns `autoExecutable:false` and the run cannot receive interactive
179
+ bounded delegated approval, stop with
180
+ `blocked: bounded_approval_unavailable_in_exec_mode` before any mutation and
181
+ state whether the operator should rerun with a safe autoExecutable plan, narrower
182
+ sender scopes, explicit bindings, or an interactive session.
158
183
 
159
184
  When safe-yolo is blocked only because the plan needs normal setup work, ask
160
185
  for a **bounded delegated approval** over the rendered current plan instead of
@@ -219,6 +244,15 @@ written by the current worker, stop with `blocked: stale_receipt_artifact`
219
244
  before parent verify or completion. A streaming worker or branch worker is
220
245
  acceptable only when it writes a fresh durable per-lane receipt artifact as it
221
246
  works.
247
+ When visible Codex app thread tools are unavailable but local Codex CLI is
248
+ available, the accepted durable streaming-worker command shape is:
249
+ `codex -a never -s danger-full-access exec -C <repo> -o <worker-final-file> -`.
250
+ The approval and sandbox flags must come before the `exec` subcommand for Codex
251
+ CLI builds that expose `-a`/`-s` only at top level. Do not use
252
+ `codex exec --ask-for-approval never ...` or `codex exec -a never ...`; those
253
+ forms fail on current customer CLI installs. Pipe the lane packet prompt on
254
+ stdin, require the worker to write `workerDispatch.receiptArtifactHint`, and
255
+ pass exactly one lane packet per worker.
222
256
  `multi_agent_v1.spawn_agent`, raw `spawn_agent`, or any opaque Task/subagent
223
257
  runtime that cannot expose a visible thread id or durable receipt artifact is
224
258
  not accepted as command-level UAT proof and must not be used for mutating