@sellable/install 0.1.98 → 0.1.99
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.
|
@@ -11,11 +11,14 @@ campaign state. The main thread owns approval and campaign writes.
|
|
|
11
11
|
Use the live campaign inputs supplied by the parent thread:
|
|
12
12
|
|
|
13
13
|
- `campaignId`
|
|
14
|
+
- campaign revision or `campaignUpdatedAt`
|
|
14
15
|
- `campaignBrief` / campaign brief content model
|
|
15
16
|
- selected source decision and provider state
|
|
16
17
|
- `selectedLeadListId` or selected source list context
|
|
17
18
|
- `workflowTableId`
|
|
18
|
-
- imported review-batch rows from that selected list
|
|
19
|
+
- imported review-batch rows from that selected list, including row IDs and a
|
|
20
|
+
review-batch row hash when available
|
|
21
|
+
- filter basis at branch start: `pending`, `use-filters`, or `skip-filters`
|
|
19
22
|
- any already-saved fit/rubric result summaries supplied by the parent
|
|
20
23
|
|
|
21
24
|
Do not require or hunt for `brief.md`, `lead-review.md`, or `lead-sample.json`.
|
|
@@ -23,6 +26,13 @@ Those files are optional debug context only when the parent explicitly provides
|
|
|
23
26
|
them. Never inspect the product database directly, never run `psql`, and never
|
|
24
27
|
read stale local markdown files to reconstruct campaign state.
|
|
25
28
|
|
|
29
|
+
All live reads must come from scoped MCP/product tools by campaign and
|
|
30
|
+
workspace, such as `get_campaign`, `get_campaign_context`, and
|
|
31
|
+
`get_rows_minimal({ tableId: workflowTableId })`, or from equivalent parent
|
|
32
|
+
thread payloads. Reject the task as `blocked` if the campaign id, workspace,
|
|
33
|
+
`selectedLeadListId`, `workflowTableId`, or review-batch row ids do not match
|
|
34
|
+
the branch input.
|
|
35
|
+
|
|
26
36
|
## Required First Steps
|
|
27
37
|
|
|
28
38
|
1. Load the full long-form generate-messages prompt:
|
|
@@ -45,11 +55,31 @@ Return the following to the parent thread:
|
|
|
45
55
|
- one rendered good-fill sample for a plausible passing review-batch row
|
|
46
56
|
- one omit/fallback sample when the row signal is not safe
|
|
47
57
|
- pass/fail notes against the generate-messages quality gates
|
|
58
|
+
- compact runtime status: `ready`, `blocked`, `retry-needed`, or `stale`
|
|
59
|
+
- basis token containing campaign revision/updatedAt, brief hash,
|
|
60
|
+
`selectedLeadListId`, `workflowTableId`, review-batch row ids/hash, filter
|
|
61
|
+
choice, and rubric/filter basis when present
|
|
62
|
+
- output timestamp/hash and any retry/error detail
|
|
48
63
|
|
|
49
64
|
Write `message-validation.md`, `message-prep.md`, or
|
|
50
65
|
`message-candidate-drafts.md` only when the parent explicitly asks for debug
|
|
51
66
|
artifacts. Normal live campaign runs can return the same content directly.
|
|
52
67
|
|
|
68
|
+
When reporting branch runtime proof, use this shape under
|
|
69
|
+
`watchNarration.workerDetails.messageDraftBuilder`:
|
|
70
|
+
|
|
71
|
+
- `statusSource`: `branch` or `parent-thread-fallback`
|
|
72
|
+
- `status`: `branch-running`, `fallback-active`, `spawn-failed`,
|
|
73
|
+
`fallback-superseded`, `branch-superseded`, `ready`, `blocked`,
|
|
74
|
+
`retry-needed`, or `stale`
|
|
75
|
+
- `runId` or `fallbackId`
|
|
76
|
+
- `startedAt` and `updatedAt`
|
|
77
|
+
- `basisToken` and `basis`
|
|
78
|
+
- optional `compactOutputRef`, `compactOutput`, and `error`
|
|
79
|
+
|
|
80
|
+
Do not tell the UI to show Message Draft Builder as running unless this proof
|
|
81
|
+
exists and points at the current non-empty bounded review batch.
|
|
82
|
+
|
|
53
83
|
## Hard Rules
|
|
54
84
|
|
|
55
85
|
- Do not call product Generate Message cells. This worker drafts the template
|
package/agents/registry.json
CHANGED
|
@@ -225,10 +225,10 @@
|
|
|
225
225
|
],
|
|
226
226
|
"ownership": "proof inventory, token strategy, angle drafting, skeptical-prospect review, and selected winner only",
|
|
227
227
|
"codex": {
|
|
228
|
-
"description": "Message Draft Builder for campaign-backed template proposals
|
|
228
|
+
"description": "Message Draft Builder for campaign-backed template proposals after confirm_lead_list imports a non-empty bounded review batch.",
|
|
229
229
|
"model": "gpt-5.5",
|
|
230
230
|
"modelReasoningEffort": "high",
|
|
231
|
-
"sandboxMode": "
|
|
231
|
+
"sandboxMode": "read-only",
|
|
232
232
|
"nicknameCandidates": [
|
|
233
233
|
"Message Draft Builder",
|
|
234
234
|
"Draft Builder",
|
|
@@ -236,19 +236,17 @@
|
|
|
236
236
|
]
|
|
237
237
|
},
|
|
238
238
|
"claude": {
|
|
239
|
-
"description": "Use proactively as Message Draft Builder after
|
|
239
|
+
"description": "Use proactively as Message Draft Builder after confirm_lead_list imports a non-empty bounded review batch; load the full generate-messages prompt and draft only from scoped campaign/tool state.",
|
|
240
240
|
"model": "inherit",
|
|
241
241
|
"background": true,
|
|
242
242
|
"maxTurns": 10,
|
|
243
243
|
"color": "magenta",
|
|
244
244
|
"tools": [
|
|
245
245
|
"Read",
|
|
246
|
-
"Write",
|
|
247
|
-
"Edit",
|
|
248
|
-
"Grep",
|
|
249
|
-
"Glob",
|
|
250
246
|
"mcp__sellable__get_subskill_prompt",
|
|
251
|
-
"
|
|
247
|
+
"mcp__sellable__get_campaign",
|
|
248
|
+
"mcp__sellable__get_campaign_context",
|
|
249
|
+
"mcp__sellable__get_rows_minimal"
|
|
252
250
|
]
|
|
253
251
|
}
|
|
254
252
|
}
|
|
@@ -8,9 +8,10 @@ Required first step:
|
|
|
8
8
|
draft `campaignOfferId`, call `get_provider_prompt({ provider:
|
|
9
9
|
"signal-discovery", campaignOfferId, confirmed: true })` and include that same
|
|
10
10
|
`campaignOfferId` plus `currentStep: "signal-discovery"` in `search_signals`
|
|
11
|
-
so the
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
so the owning search route can show the source lane with current find-leads
|
|
12
|
+
narration and user options. Treat that as a campaign-attached persisted
|
|
13
|
+
search; do not run a post-mint search without the campaign ID. If no campaign
|
|
14
|
+
ID is supplied, run campaignless preview mode.
|
|
14
15
|
|
|
15
16
|
Use the inherited Sellable MCP tools when available:
|
|
16
17
|
|
|
@@ -44,6 +45,8 @@ sales Claude`; do not treat broad anchor-only lanes like `Claude Code`, `MCP`,
|
|
|
44
45
|
campaignOfferId, selectionMode: "replace", selections, headlineICPCriteria,
|
|
45
46
|
currentStep: "signal-discovery" })` before sampling so the watched Signal
|
|
46
47
|
Discovery table shows the promoted posts and the exact posts being tested.
|
|
48
|
+
Do not move the campaign to `confirm-lead-list`; `import_leads` owns that
|
|
49
|
+
visible transition after source approval.
|
|
47
50
|
6. Fetch or sample engagers for promoted posts and score rough ICP fit from
|
|
48
51
|
visible headline/display-name cues only. Do not enrich people during
|
|
49
52
|
viability estimation.
|
|
@@ -8,10 +8,12 @@ Required first step:
|
|
|
8
8
|
draft `campaignOfferId`, call `get_provider_prompt({ provider: "prospeo",
|
|
9
9
|
campaignOfferId, confirmed: true })` and include that same `campaignOfferId`
|
|
10
10
|
plus `currentStep: "prospeo"` in `search_prospeo` so the user can watch source
|
|
11
|
-
work in the campaign UI
|
|
12
|
-
preview mode. Treat post-mint
|
|
11
|
+
work in the campaign UI with source-lane narration owned by the search route.
|
|
12
|
+
If no campaign ID is supplied, run campaignless preview mode. Treat post-mint
|
|
13
13
|
searches with `campaignOfferId` as campaign-attached persisted search tabs;
|
|
14
14
|
do not run a live campaign search without the campaign ID.
|
|
15
|
+
Do not move the campaign to `confirm-lead-list`; `import_leads` owns that
|
|
16
|
+
visible transition after source approval.
|
|
15
17
|
|
|
16
18
|
Use the inherited Sellable MCP tools when available:
|
|
17
19
|
|
|
@@ -8,10 +8,12 @@ Required first step:
|
|
|
8
8
|
draft `campaignOfferId`, call `get_provider_prompt({ provider: "sales-nav",
|
|
9
9
|
campaignOfferId, confirmed: true })` and include that same `campaignOfferId` in
|
|
10
10
|
`search_sales_nav` with `currentStep: "sales-nav"` so the user can watch
|
|
11
|
-
source work in the campaign UI
|
|
12
|
-
campaignless preview mode. Treat post-mint
|
|
11
|
+
source work in the campaign UI with source-lane narration owned by the search
|
|
12
|
+
route. If no campaign ID is supplied, run campaignless preview mode. Treat post-mint
|
|
13
13
|
searches with `campaignOfferId` as campaign-attached persisted search tabs;
|
|
14
14
|
do not run a live campaign search without the campaign ID.
|
|
15
|
+
Do not move the campaign to `confirm-lead-list`; `import_leads` owns that
|
|
16
|
+
visible transition after source approval.
|
|
15
17
|
|
|
16
18
|
Use the inherited Sellable MCP tools when available:
|
|
17
19
|
|