@sellable/install 0.1.230 → 0.1.232

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.47";
40
+ const CODEX_PLUGIN_VERSION = "0.1.49";
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.230",
3
+ "version": "0.1.232",
4
4
  "type": "module",
5
5
  "description": "One-command installer for Sellable MCP in Claude Code and Codex",
6
6
  "bin": {
@@ -106,12 +106,19 @@ Short form: nested filesystem prompt fallback is a failed UAT.
106
106
  Package-backed tool surface: use `mcp__sellable` only for workspace selection,
107
107
  campaign/table/source/message mutations, and product-visible readbacks. Do not
108
108
  use `mcp__sellable_admin`, admin workspace setters, direct DB tools, Prisma, or
109
- SQL as part of command execution proof. Before any worker mutation, record
109
+ SQL as part of command execution proof. Do not use built-in web search,
110
+ browser search, `web.run`, or any external browsing/search tool for sender or
111
+ company research in this command; use Sellable MCP research tools such as
112
+ `get_sender`, `fetch_linkedin_profile`, `fetch_linkedin_posts`,
113
+ `fetch_company`, `fetch_company_posts`, and `complete_sender_research`. If those
114
+ MCP tools do not provide enough proof, write a blocked receipt with the missing
115
+ proof instead of browsing externally. Before any worker mutation, record
110
116
  normal-surface workspace proof with
111
117
  `set_active_workspace({ workspaceId, userConfirmed:true })` or the equivalent
112
118
  `mcp__sellable` call, then reread the active workspace.
113
119
  Short form: mcp__sellable only.
114
120
  Short form: Do not use `mcp__sellable_admin`.
121
+ Short form: Do not use web search or browser search.
115
122
 
116
123
  Plan shape:
117
124
 
@@ -331,31 +338,56 @@ not a parent-thread summary. The receipt must include:
331
338
  when using a receipt file, and `notAdHoc:true`.
332
339
  - `researchSenderReceipt`: `research-sender` prompt load proof,
333
340
  `complete_sender_research` result, sender LinkedIn identity basis, and the
334
- notes/proof counts used before the net-new `create_campaign` call.
341
+ notes/proof counts used before the net-new `create_campaign` call. It must
342
+ include canonical `promptLoadedToHasMoreFalse:true`,
343
+ `completeSenderResearch`, and either `senderLinkedinUrl`, non-empty
344
+ `senderIds`, or non-empty `senderIdentityBasis`, plus `identityBasis`.
335
345
  - `campaignBriefReceipt`: the CampaignOffer/campaign id, current
336
346
  workflowTableId, brief hash or updated-at marker, delivery format, token
337
- rules, hard avoids, source-use rules, and first-message template state.
347
+ rules, hard avoids, source-use rules, and first-message template state. If
348
+ the tool output uses `approvedFirstMessageTemplate`, copy it to canonical
349
+ `firstMessageTemplate`; if it uses `deliveryFormatIncluded`,
350
+ `tokenRulesIncluded`, `hardAvoidsIncluded`, or `sourceUseRulesIncluded`, copy
351
+ those to canonical `deliveryFormat`, `tokenRules`, `hardAvoids`, and
352
+ `sourceUseRules`.
338
353
  - `sourceDecisionReceipt`: selected source/list id, provider, cursor/inventory
339
354
  state, import/copy caps, explicit `dedupeDncProviderExclusions:true` or an
340
355
  equivalent exclusions object, row ids or row-count evidence (`rowCount`,
341
356
  `readyRowCount`, or `rowEvidence`), and the reason no colder source was used
342
- before the current source was proven exhausted or insufficient.
357
+ before the current source was proven exhausted or insufficient. If the raw
358
+ provider output uses `sourceProvider`, `sourceListId`, `reviewBatchRowIds`, or
359
+ `rationale`, copy them to canonical `provider`, `sourceId`/`sourceListId`,
360
+ `rowIdsHash`/`rowCount`, and `sourceLadderReason`.
343
361
  - `filterDecisionReceipt`: saved/applied filter ids or explicit skip-filter
344
362
  decision with current campaign/table basis.
345
363
  - `messageDraftingReceipt`: the Message Drafting proof described below,
346
- including packaged `generate-messages` prompt/assets and validation.
364
+ including packaged `generate-messages` prompt/assets and validation. Raw
365
+ fields like `generateMessagesPromptLoadedToHasMoreFalse`,
366
+ `requiredAssetsLoadedToHasMoreFalse`,
367
+ `validationPromptLoadedToHasMoreFalse`,
368
+ `get_campaign_message_preparation_status`, and
369
+ `waitForCampaignProcessingProof` are useful, but the receipt must also copy
370
+ them into canonical `promptLoadedToHasMoreFalse`, `requiredAssetsLoaded`,
371
+ `validationLoaded`, `reviewBatchRowHash`, and
372
+ `messageDraftRecommendation`.
347
373
  - `reviewBatchReceipt`: review-batch row ids/hash, generated row count,
348
374
  quality-valid route-proof row id when approved, and proof that no broad
349
375
  approve-all occurred.
350
376
  - `sequenceReceipt`: exact current workflowTableId, recommended non-paid
351
377
  sequence attach/precheck result, and readback showing `hasSequence:true` when
352
- completion is claimed.
378
+ completion is claimed. If the tool output uses
379
+ `attachRecommendedSequenceResult.actionTypes` or
380
+ `nonPaidRecommendedSequence`, copy them to canonical `actionTypes` and
381
+ `nonPaid`.
353
382
  - final paused-send proof: if the current campaign table is `DRAFT` after the
354
383
  sequence is attached, call the product `pause_campaign({ campaignId })`
355
384
  endpoint/tool to put the unlaunched campaign into `PAUSED` review state, then
356
385
  reread the campaign/table. Do not raw-write `campaignStatus`, do not start or
357
386
  launch, and do not schedule/send. Completion requires reread proof of
358
- `currentStep:"send"` and `campaignStatus:"PAUSED"`.
387
+ `currentStep:"send"` and `campaignStatus:"PAUSED"`. If the raw output nests
388
+ this in `finalCampaignRead` or `finalTableRead`, copy it to canonical
389
+ `finalPausedSendProof.currentStep` and
390
+ `finalPausedSendProof.campaignStatus`.
359
391
  - `verifyCall`: the exact `setup_evergreen_campaigns({ mode:"verify",
360
392
  planRevision, selectedActionIds, receipts })` call/result used before the
361
393
  parent reports completion.
@@ -370,7 +402,18 @@ substitute `message` for `generatedMessageText`. Do not substitute
370
402
  `passVerdict` for `verdict`. If the self-check fails, fix the receipt before
371
403
  ending; do not leave the parent to infer canonical fields from top-level
372
404
  aliases or narrative text.
405
+ Self-check shorthand: copy raw tool-output aliases into canonical receipt keys
406
+ before writing JSON; do not leave only raw objects like
407
+ `get_campaign_message_preparation_status`, `attachRecommendedSequenceResult`,
408
+ `finalCampaignRead`, or `finalTableRead`.
373
409
  Self-check shorthand: top-level `planRevision`, `actionId`, `laneKey`, `laneType`, `workspaceId`, and `senderIds` must exist before worker completion.
410
+ Self-check shorthand: `messageDraftingReceipt.promptLoadedToHasMoreFalse`,
411
+ `requiredAssetsLoaded`, `validationLoaded`, `reviewBatchRowHash`, and
412
+ `messageDraftRecommendation` must exist before worker completion.
413
+ Self-check shorthand: `reviewBatchReceipt.rowIdsHash`,
414
+ `reviewBatchReceipt.generatedCount`, `sequenceReceipt.actionTypes`,
415
+ `sequenceReceipt.nonPaid`, `finalPausedSendProof.currentStep`, and
416
+ `finalPausedSendProof.campaignStatus` must exist before worker completion.
374
417
  Self-check shorthand: `sampleMessages[]` must include `rowId`, `generatedMessageText`, `verdict`, and `issues`.
375
418
  Self-check shorthand: Do not substitute `message` for `generatedMessageText`.
376
419
  Self-check shorthand: Do not substitute `passVerdict` for `verdict`.
@@ -455,9 +498,8 @@ verification unless the same object also appears inside
455
498
  "selectedLeadListId": "<source/list id>",
456
499
  "reviewBatchRowHash": "<review row ids hash>",
457
500
  "messageDraftRecommendation": {"basis": "generate-messages"},
458
- "sampleMessages[].verdict": "pass",
459
501
  "sampleMessages": [
460
- {"rowId": "<row id>", "generatedMessageText": "<message>", "verdict": "pass"}
502
+ {"rowId": "<row id>", "generatedMessageText": "<message>", "verdict": "passed", "issues": []}
461
503
  ]
462
504
  },
463
505
  "reviewBatchReceipt": {
@@ -467,8 +509,6 @@ verification unless the same object also appears inside
467
509
  "sequenceReceipt": {
468
510
  "workflowTableId": "<workflow table id>",
469
511
  "hasSequence": true,
470
- "sequenceReceipt.actionTypes": ["send_invite"],
471
- "sequenceReceipt.nonPaid": true,
472
512
  "actionTypes": ["send_invite"],
473
513
  "nonPaid": true
474
514
  },
@@ -596,7 +636,8 @@ The parent then calls
596
636
  `setup_evergreen_campaigns({ mode:"verify", postEngagerSenderIds,
597
637
  sharedSenderIds, planRevision, selectedActionIds, receipts })` using the same
598
638
  sender scopes as the plan call and the original execution planRevision/actionIds,
599
- and reports only verified completion. A verify call without the same sender scopes can recompute an empty or different plan and is invalid proof. A verify call that uses a later reuse planRevision instead of the original execution planRevision is also invalid proof. Only after verify succeeds, rerun
639
+ and reports only verified completion. Do not include `yolo` in the verify call;
640
+ `yolo` is plan-mode only. A verify call without the same sender scopes can recompute an empty or different plan and is invalid proof. A verify call that uses a later reuse planRevision instead of the original execution planRevision is also invalid proof. Only after verify succeeds, rerun
600
641
  `setup_evergreen_campaigns({ mode:"plan", postEngagerSenderIds,
601
642
  sharedSenderIds, yolo:true })` without explicit campaign/table bindings. That
602
643
  idempotency rerun must return `intent:"reuse"` for every completed lane and no