@sellable/mcp 0.1.768 → 0.1.769

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.
@@ -1,397 +0,0 @@
1
- {
2
- "version": "v1.0",
3
- "workflow": "refill-sends-v2-workflow",
4
- "principle": "Execute refill sends v2 through a fenced run record: bootstrap, plan, execute, verify, and report. Dry runs stay read-only; real runs execute only packet-named bounded work.",
5
- "revisionProjectionContract": {
6
- "action": "revise_message_template_and_rerun",
7
- "requiredAuthorities": [
8
- "targetConfig",
9
- "runHandle",
10
- "reportingContext",
11
- "messageTemplateRevision.source:user_approved",
12
- "messageTemplateRevision.templateMarkdown",
13
- "messageTemplateRevision.priorTemplateAuthorityDigest",
14
- "messageTemplateRevision.nextTemplateAuthorityDigest",
15
- "messageTemplateRevision.cohortRowIds[1..500]",
16
- "messageTemplateRevision.requestId",
17
- "messageTemplateRevision.effectId",
18
- "messageTemplateRevision.revisionOperationId"
19
- ],
20
- "noInference": "Absent or partial messageTemplateRevision means no revision; forceRerun never synthesizes authority.",
21
- "continuation": "Preserve targetConfig and the server runHandle separately through resume/takeover, journal, outcome, replay, and terminal report.",
22
- "reporting": "Preserve refill_reporting.v2 exactly, including live epoch/sequence/reset/watermark, semantic counts, blockers, compatibility, and terminal outcome; redact raw copy/prospect fields."
23
- },
24
- "laneSources": [
25
- "managed_waterfall",
26
- "dashboard_evergreen",
27
- "active_campaign"
28
- ],
29
- "terminalReasons": [
30
- "complete",
31
- "capped_by_scheduler",
32
- "loaded_awaiting_scheduler",
33
- "lanes_exhausted",
34
- "blocked",
35
- "no_refillable_campaigns",
36
- "not_an_evergreen_workspace"
37
- ],
38
- "blockers": ["workspace_access"],
39
- "enumeratedRungs": [
40
- "start_campaign",
41
- "approve_messages",
42
- "wait_for_active_work",
43
- "enrich_more",
44
- "reconcile_source_copy",
45
- "rerun_errored_cells",
46
- "add_leads_same_source",
47
- "paid_lane_fallback",
48
- "next_campaign",
49
- "wait_for_scheduler",
50
- "done"
51
- ],
52
- "rungLabels": {
53
- "start_campaign": "start the paused campaign so ready rows can schedule",
54
- "approve_messages": "approve generated messages that are ready for review",
55
- "wait_for_active_work": "wait for active campaign work to finish",
56
- "enrich_more": "enrich the next batch of unenriched rows",
57
- "reconcile_source_copy": "copy leads already found into the campaign table",
58
- "add_leads_same_source": "find more leads via this campaign's original source",
59
- "paid_lane_fallback": "move paid InMail demand to the connection fallback lane",
60
- "next_campaign": "move to the next campaign in the lane",
61
- "wait_for_scheduler": "wait for the scheduler to pick up ready rows",
62
- "done": "finish the refill run",
63
- "rerun_errored_cells": "re-run errored enrichment/message cells"
64
- },
65
- "hardRules": [
66
- "dry-runs write journals only and never create run records",
67
- "execute only the packet fingerprint captured at the last plan gate",
68
- "validate packet coherence before dispatch; replan once, then block packet_incoherent",
69
- "repair rungs come from the plan packet; the loop bounds and refuses, never self-emits repair actions",
70
- "capped_by_scheduler is complete, never poll",
71
- "awaiting scheduler is not an end state; window-closed reports name remaining-ready, expected pickup time, and resume handle",
72
- "honest-rubric-fail means a human updates the rubric or changes lead source",
73
- "source replenishment beyond same-source-automatic is a scoped create-campaign handoff, never refill-owned provider search",
74
- "connection-only evergreen lanes with exact [\"send_invite\"] proof are invite-only refill capacity; never infer DM, InMail, Sales Nav cascade, paid-credit refresh, message generation, follow-up, sequence mutation, scheduler writes, launch, or send work from them",
75
- "revise_message_template_and_rerun is allowed only as the exact packet head backed by the complete explicit user-approved revision projection contract",
76
- "no campaign creation, provider-family switch, threshold lowering, scheduler writes, sends, archives, deletes, or brief/filter/message/sequence/sender mutation without a separate approval packet"
77
- ],
78
- "requiredBootstrap": [
79
- {
80
- "tool": "get_auth_status",
81
- "purpose": "Confirm MCP auth before reading workspace or starting a refill run."
82
- },
83
- {
84
- "tool": "get_active_workspace",
85
- "purpose": "Resolve explicit workspace evidence when the request did not provide workspaceId."
86
- },
87
- {
88
- "tool": "refill_sends_v2",
89
- "requiredValues": {
90
- "workspaceId": "{workspaceId}"
91
- },
92
- "requiredOutput": [
93
- "terminal, in_progress, blocked, or dry_run status",
94
- "resume handle {runId, fence, gate} when in_progress"
95
- ]
96
- },
97
- {
98
- "tool": "get_subskill_prompt",
99
- "requiredValues": {
100
- "subskillName": "refill-sends-v2-workflow"
101
- },
102
- "mustReadUntil": {
103
- "hasMore": false
104
- }
105
- },
106
- {
107
- "tool": "get_subskill_asset",
108
- "requiredValues": {
109
- "subskillName": "refill-sends-v2-workflow",
110
- "assetPath": "core/flow.v1.json"
111
- },
112
- "mustReadUntil": {
113
- "hasMore": false
114
- },
115
- "validation": {
116
- "workflow": "refill-sends-v2-workflow",
117
- "versionPrefix": "v1",
118
- "requiredTopLevelKeys": [
119
- "states",
120
- "gateOrder",
121
- "enumeratedRungs",
122
- "rungLabels",
123
- "verification",
124
- "laneSources",
125
- "terminalReasons",
126
- "blockers",
127
- "hardRules"
128
- ]
129
- }
130
- },
131
- {
132
- "tool": "get_refill_plan_v2",
133
- "requiredValues": {
134
- "workspaceId": "{workspaceId}",
135
- "intent": "auto"
136
- },
137
- "requiredOutput": [
138
- "planRevision or workspace_access blocker",
139
- "stateRevision",
140
- "packet with supplyCensus/censusReason when available",
141
- "pipelineDiagnosis checklist when blocked",
142
- "sideEffects"
143
- ]
144
- }
145
- ],
146
- "gateOrder": ["bootstrap", "plan", "execute", "verify", "report"],
147
- "states": [
148
- {
149
- "id": "bootstrap",
150
- "description": "Load the command contract, workflow prompt, flow asset, and workspace facts. A real run starts or resumes a fenced run record; dryRun:true stays read-only and journal-only.",
151
- "allowedTools": [
152
- "get_auth_status",
153
- "get_active_workspace",
154
- "list_workspaces",
155
- "get_workspace",
156
- "refill_sends_v2",
157
- "get_subskill_prompt",
158
- "get_subskill_asset",
159
- "get_refill_plan_v2"
160
- ],
161
- "onEnter": [
162
- {
163
- "tool": "get_auth_status"
164
- },
165
- {
166
- "tool": "refill_sends_v2",
167
- "requiredFields": ["workspaceId"]
168
- },
169
- {
170
- "tool": "get_subskill_prompt",
171
- "requiredValues": {
172
- "subskillName": "refill-sends-v2-workflow"
173
- }
174
- },
175
- {
176
- "tool": "get_subskill_asset",
177
- "requiredValues": {
178
- "subskillName": "refill-sends-v2-workflow",
179
- "assetPath": "core/flow.v1.json"
180
- }
181
- }
182
- ],
183
- "transitions": {
184
- "contract_loaded": "plan",
185
- "resume_handle_loaded": "verify",
186
- "dry_run_requested": "report"
187
- }
188
- },
189
- {
190
- "id": "plan",
191
- "description": "Read a fresh get_refill_plan_v2 packet with runState fed back from the run record. The loop captures planRevision, stateRevision, and targetShapeRevision, then validates packet coherence before dispatch. The packet's supplyCensus, censusReason, and pipelineDiagnosis checklist explain the rung choice. If packet_incoherent appears, replan once; a second incoherent packet blocks.",
192
- "allowedTools": ["get_refill_plan_v2"],
193
- "onEnter": [
194
- {
195
- "tool": "get_refill_plan_v2",
196
- "requiredFields": ["workspaceId"],
197
- "optionalFields": [
198
- "intent",
199
- "senderIds",
200
- "runState",
201
- "journal",
202
- "journalNote"
203
- ]
204
- }
205
- ],
206
- "requiredOutput": [
207
- "planRevision starts with pr1: unless blocker is workspace_access",
208
- "stateRevision and targetShapeRevision captured",
209
- "chosen label (evergreenRung token) is in enumeratedRungs",
210
- "supplyCensus and censusReason justify prep/source/repair choices",
211
- "pipelineDiagnosis checklist names firstFailing when blocked",
212
- "terminal doneReason maps to terminalReasons"
213
- ],
214
- "allowedRungsSource": "enumeratedRungs",
215
- "doNotAllow": [
216
- "add_column",
217
- "add_on_demand_leads",
218
- "add_rubric_item",
219
- "add_teammate",
220
- "add_to_comment_campaign",
221
- "add_to_connection_campaign",
222
- "add_to_inmail_campaign",
223
- "archive_campaign",
224
- "attach_recommended_sequence",
225
- "attach_sequence",
226
- "bulk_enrich_with_prospeo",
227
- "cancel_campaign_message_preparation",
228
- "cancel_find_leads",
229
- "cancel_lead_import",
230
- "capture_post_idea",
231
- "check_rubric",
232
- "commit_blueprint",
233
- "confirm_harvest_job_companies",
234
- "confirm_lead_list",
235
- "confirm_prospeo_company_accounts",
236
- "copy_sender_config",
237
- "create_campaign",
238
- "create_on_demand_campaign",
239
- "create_on_demand_table",
240
- "create_workspace",
241
- "create_workflow_table",
242
- "delete_column",
243
- "delete_rubric_item",
244
- "duplicate_campaign",
245
- "enrich_with_prospeo",
246
- "fill_campaign_horizon",
247
- "get_or_create_direct_campaign_table",
248
- "import_leads",
249
- "load_csv_dnc_entries",
250
- "load_csv_domains",
251
- "load_csv_linkedin_leads",
252
- "mark_post_published",
253
- "migrate_flat_configs",
254
- "pause_campaign",
255
- "pause_direct_campaign",
256
- "pause_on_demand_campaign",
257
- "prepare_campaign_ab_test",
258
- "queue_campaign_cells",
259
- "queue_cells",
260
- "record_campaign_review_batch",
261
- "record_engage_proven_search",
262
- "refill_sends",
263
- "refresh_paid_inmail_credits",
264
- "refresh_sender_engagement",
265
- "revise_message_template_and_rerun",
266
- "save_domain_filters",
267
- "save_hook_research",
268
- "save_post_draft",
269
- "save_rubrics",
270
- "send_inbox_draft",
271
- "send_inbox_manual_reply",
272
- "set_active_workspace",
273
- "set_campaign_waterfall_order",
274
- "set_company_info",
275
- "set_engage_state",
276
- "set_engage_style_guide",
277
- "set_headline_icp_criteria",
278
- "set_sender_calendar_link",
279
- "set_sender_routing",
280
- "setup_evergreen_campaigns",
281
- "start_campaign",
282
- "start_campaign_message_preparation",
283
- "start_direct_campaign",
284
- "start_on_demand_campaign",
285
- "update_campaign",
286
- "update_campaign_brief",
287
- "update_cell",
288
- "update_column",
289
- "update_find_leads_run",
290
- "update_inbox_draft",
291
- "update_post_draft",
292
- "update_published_post_metrics",
293
- "update_rubric_item",
294
- "upsert_engage_tracked_person",
295
- "upsert_rubric"
296
- ],
297
- "transitions": {
298
- "work_named": "execute",
299
- "terminal_doneReason": "report",
300
- "workspace_access": "report",
301
- "packet_incoherent_replan": "plan",
302
- "packet_incoherent_blocked": "report"
303
- }
304
- },
305
- {
306
- "id": "execute",
307
- "description": "Execute exactly the packet head action through refill_sends_v2 internals. Bounded approvals, message preparation, same-source copies, rerun_errored_cells, saved signal continuations, paid-credit refreshes, and pinned-lane starts are allowed only when named by the packet. Execute only the fingerprint captured at the last plan gate; stale packets refuse and return to plan.",
308
- "allowedTools": [
309
- "refill_sends_v2",
310
- "start_campaign_message_preparation",
311
- "confirm_lead_list",
312
- "import_leads",
313
- "search_signals",
314
- "select_promising_posts",
315
- "start_campaign",
316
- "queue_campaign_cells"
317
- ],
318
- "doNotAllow": [
319
- "create_campaign",
320
- "create_on_demand_campaign",
321
- "setup_evergreen_campaigns",
322
- "set_campaign_waterfall_order",
323
- "refresh_paid_inmail_credits",
324
- "send_inbox_draft",
325
- "send_inbox_manual_reply",
326
- "update_campaign_brief",
327
- "set_headline_icp_criteria",
328
- "set_sender_routing"
329
- ],
330
- "transitions": {
331
- "planned_recorded": "verify",
332
- "stale_packet": "plan",
333
- "non_yolo_continuation": "report",
334
- "lease_lost": "report"
335
- }
336
- },
337
- {
338
- "id": "verify",
339
- "description": "Verify whole-row outcomes before another plan read. Reattach to an own active prep job by requestSource/requestHash; never re-dispatch prep while a matching job is active. Foreign prep waits until clear or blocks foreign_prep_active. wait_for_active_work and wait_for_source_import reread the plan on bounded cadence. wait_for_scheduler is cross-invocation: each tool call polls briefly under the host guard, heartbeats the lease, and returns in_progress sweep guidance so the agent re-invokes refill_sends_v2 with {runId,fence}. The approximately five minute scheduler budget is cumulative at the run level.",
340
- "allowedTools": ["refill_sends_v2", "get_refill_plan_v2"],
341
- "onEnter": [
342
- {
343
- "tool": "refill_sends_v2",
344
- "requiredFields": ["workspaceId", "runId", "fence"]
345
- }
346
- ],
347
- "hardRules": [
348
- "do not re-dispatch prep when an own active job exists; reattach and poll status",
349
- "capped_by_scheduler is complete",
350
- "replan-driven repair: the planner names rerun_errored_cells, approve_messages, start_campaign, or source work; the loop bounds and refuses",
351
- "conversion verdict is journaled from packet facts after the first prep batch; the plan gate withholds a second unproven prep batch",
352
- "zero pickup after a confirmed sweep is debugged from pipelineDiagnosis, not waited out forever",
353
- "Sales Nav and Prospeo continuation packets render a scoped $sellable:create-campaign [campaignId] handoff for same saved-search identity, import mode add into the same source list, source work only"
354
- ],
355
- "transitions": {
356
- "verify_poll": "verify",
357
- "verified": "plan",
358
- "in_progress_resume": "verify",
359
- "terminal": "report",
360
- "blocked": "report"
361
- },
362
- "repeatUntil": "terminal_or_in_progress_resume_or_blocked"
363
- },
364
- {
365
- "id": "report",
366
- "description": "Present the terminal or blocked report. Terminal proof is the run record at g4_terminal with a doneReason plus journal planned->did->outcome lines and a terminal block. loaded_awaiting_scheduler keeps the token for run-record compatibility, but report copy must include remaining-ready count, exact expected pickup time, and the resume handle; never render bare loaded, awaiting scheduler copy. Blocked Sales Nav and Prospeo packets reprint the scoped $sellable:create-campaign [campaignId] handoff text.",
367
- "allowedTools": [],
368
- "onEnter": [
369
- {
370
- "action": "present_run_terminal_or_resume_report"
371
- }
372
- ],
373
- "terminal": true
374
- }
375
- ],
376
- "verification": {
377
- "requiredProof": [
378
- "run record reached g4_terminal with a named doneReason",
379
- "journal contains planned -> did -> outcome lines",
380
- "journal contains terminal block and index line",
381
- "planRevision has pr1: prefix unless blocker is workspace_access",
382
- "chosen evergreenRung belongs to enumeratedRungs and has a plain-language rungLabels entry",
383
- "managed_waterfall, dashboard_evergreen, or active_campaign lane source recorded",
384
- "laneChain recorded when active_campaign chain is selected",
385
- "supplyCensus/censusReason and pipelineDiagnosis checklist reviewed when present",
386
- "in_progress results include runId, fence, gate, and sweep or wait guidance"
387
- ],
388
- "notCompletionProof": [
389
- "called get_refill_plan_v2 alone",
390
- "plan packet alone",
391
- "action queue exists but no planned/did/outcome journal evidence",
392
- "in_progress continuation without {runId,fence,gate}",
393
- "journal absence",
394
- "bare loaded awaiting scheduler report without expected pickup time"
395
- ]
396
- }
397
- }