@sellable/mcp 0.1.511 → 0.1.513
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/dist/api.js +15 -12
- package/dist/refill-journal.d.ts +49 -0
- package/dist/refill-journal.js +134 -0
- package/dist/refill-local-state.d.ts +31 -0
- package/dist/refill-local-state.js +96 -0
- package/dist/server.js +13 -3
- package/dist/tools/evergreen-refill-plan.d.ts +69 -0
- package/dist/tools/evergreen-refill-plan.js +273 -0
- package/dist/tools/leads.d.ts +40 -0
- package/dist/tools/leads.js +86 -31
- package/dist/tools/prompts.d.ts +4 -3
- package/dist/tools/prompts.js +7 -1
- package/dist/tools/refill-sends-evergreen.d.ts +28 -0
- package/dist/tools/refill-sends-evergreen.js +47 -0
- package/dist/tools/refill-sends-v2.d.ts +28 -0
- package/dist/tools/refill-sends-v2.js +49 -0
- package/dist/tools/registry.d.ts +46 -106
- package/dist/tools/registry.js +6 -2
- package/package.json +1 -1
- package/skills/refill-sends-evergreen/SKILL.md +19 -0
- package/skills/refill-sends-evergreen-workflow/SKILL.md +20 -0
- package/skills/refill-sends-evergreen-workflow/core/flow.v1.json +247 -0
- package/skills/refill-sends-v2/SKILL.md +96 -0
- package/skills/refill-sends-v2-workflow/SKILL.md +127 -0
- package/skills/refill-sends-v2-workflow/core/flow.v1.json +266 -0
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: refill-sends-v2
|
|
3
|
+
description: Plan refill sends v2 work through the read-only three-lane dry-run planner.
|
|
4
|
+
visibility: public
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- mcp__sellable__refill_sends_v2
|
|
7
|
+
- mcp__sellable__get_refill_plan_v2
|
|
8
|
+
- mcp__sellable__get_subskill_prompt
|
|
9
|
+
- mcp__sellable__get_subskill_asset
|
|
10
|
+
- mcp__sellable__get_auth_status
|
|
11
|
+
- mcp__sellable__get_active_workspace
|
|
12
|
+
- mcp__sellable__list_workspaces
|
|
13
|
+
- mcp__sellable__get_workspace
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Refill Sends V2
|
|
17
|
+
|
|
18
|
+
Use this public command wrapper for refill planning requests such as "refill
|
|
19
|
+
sends", "fill evergreen senders", "load everyone up", "plan Damiano", or "show a
|
|
20
|
+
dry-run for this workspace".
|
|
21
|
+
|
|
22
|
+
Host command names:
|
|
23
|
+
|
|
24
|
+
- Claude Code: `/sellable:refill-sends-v2`
|
|
25
|
+
- Codex: `$sellable:refill-sends-v2`
|
|
26
|
+
|
|
27
|
+
This is plan-only, read-only, dry-run, zero mutations. It creates no campaigns,
|
|
28
|
+
does not prepare or approve messages, does not start campaigns, does not
|
|
29
|
+
schedule or send messages, does not refresh paid InMail credit facts, and does
|
|
30
|
+
not change source configuration. Execution remains in the Phase 86 workflow.
|
|
31
|
+
|
|
32
|
+
## Entry
|
|
33
|
+
|
|
34
|
+
Resolve the explicit `workspaceId` from the request, automation config, or
|
|
35
|
+
active workspace readback. Scheduled or autonomous usage must carry
|
|
36
|
+
`workspaceId` on every tool call. If the workspace is missing or ambiguous, stop
|
|
37
|
+
with `WORKSPACE_REQUIRED`; do not switch the shared active workspace.
|
|
38
|
+
|
|
39
|
+
Start with the command contract:
|
|
40
|
+
|
|
41
|
+
```text
|
|
42
|
+
refill_sends_v2({ workspaceId })
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Then load the internal workflow prompt and flow asset:
|
|
46
|
+
|
|
47
|
+
```text
|
|
48
|
+
get_subskill_prompt({ subskillName: "refill-sends-v2-workflow" })
|
|
49
|
+
get_subskill_asset({ subskillName: "refill-sends-v2-workflow", assetPath: "core/flow.v1.json" })
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Continue both loads until `hasMore:false`; parse the flow JSON and verify
|
|
53
|
+
`workflow:"refill-sends-v2-workflow"` with a `v1` version before the planner
|
|
54
|
+
call.
|
|
55
|
+
|
|
56
|
+
Call the dry-run planner with the explicit workspace id:
|
|
57
|
+
|
|
58
|
+
```text
|
|
59
|
+
get_refill_plan_v2({ workspaceId, intent:"auto", senderIds?, runState?, journal?, journalNote? })
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
The default `intent:"auto"` checks the three lane-source families in order:
|
|
63
|
+
|
|
64
|
+
- `managed_waterfall` for product-managed evergreen waterfall lanes.
|
|
65
|
+
- `dashboard_evergreen` for dashboard-visible evergreen campaigns.
|
|
66
|
+
- `active_campaign` for regular active campaigns that should refill through a
|
|
67
|
+
deterministic lane chain.
|
|
68
|
+
|
|
69
|
+
Use `senderIds` only when the user scoped the request to exact senders. Use
|
|
70
|
+
`runState` only for an explicit what-if dry run; otherwise let the MCP read
|
|
71
|
+
local lane memory hints. Leave `journal` enabled unless the user specifically
|
|
72
|
+
asked for no local journal.
|
|
73
|
+
|
|
74
|
+
## Report
|
|
75
|
+
|
|
76
|
+
Review the returned packet before giving a recommendation:
|
|
77
|
+
|
|
78
|
+
- `planRevision` starts with `pr1:`.
|
|
79
|
+
- `stateRevision` identifies the current readback.
|
|
80
|
+
- `packet` is the operator-facing facts receipt.
|
|
81
|
+
- `plans[]` contains per-sender lane decisions and itinerary details.
|
|
82
|
+
- `globalActionQueue[]` is a dry-run sequence only.
|
|
83
|
+
- `evergreen.laneOrder[].source` uses `managed_waterfall`,
|
|
84
|
+
`dashboard_evergreen`, or `active_campaign`.
|
|
85
|
+
- `evergreen.senderLaneSelections[].laneChain` records the ordered lane chain
|
|
86
|
+
when a regular active campaign chain is selected.
|
|
87
|
+
- Terminals can include `done` or `no_refillable_campaigns`.
|
|
88
|
+
- A membership 403 must return the structured `workspace_access` blocker; report
|
|
89
|
+
it as a read-only blocker, not a login retry.
|
|
90
|
+
- `journalPath` points to the dry-run markdown journal written by the MCP.
|
|
91
|
+
- `sideEffects` must be all false.
|
|
92
|
+
|
|
93
|
+
Report campaign names and sender names first, ids second. Include the lane
|
|
94
|
+
source, lane chain when present, chosen rung, itinerary, plan revision, journal
|
|
95
|
+
path, and any blockers or warnings. Stop after the report; do not execute the
|
|
96
|
+
action queue.
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: refill-sends-v2-workflow
|
|
3
|
+
description: Internal read-only workflow for refill sends v2 dry-run planning.
|
|
4
|
+
visibility: internal
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- mcp__sellable__refill_sends_v2
|
|
7
|
+
- mcp__sellable__get_refill_plan_v2
|
|
8
|
+
- mcp__sellable__get_subskill_prompt
|
|
9
|
+
- mcp__sellable__get_subskill_asset
|
|
10
|
+
- mcp__sellable__get_auth_status
|
|
11
|
+
- mcp__sellable__get_active_workspace
|
|
12
|
+
- mcp__sellable__list_workspaces
|
|
13
|
+
- mcp__sellable__get_workspace
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Refill Sends V2 Workflow
|
|
17
|
+
|
|
18
|
+
This internal workflow is the read-only, dry-run, zero mutations plan surface
|
|
19
|
+
for refill sends v2. The workflow has three gates: bootstrap, plan, and report.
|
|
20
|
+
It covers product-managed evergreen workspaces, dashboard evergreen workspaces,
|
|
21
|
+
and non-evergreen active campaign workspaces without creating new campaigns.
|
|
22
|
+
|
|
23
|
+
Runtime flow asset: after loading this prompt, load
|
|
24
|
+
`get_subskill_asset({ subskillName: "refill-sends-v2-workflow", assetPath: "core/flow.v1.json" })`
|
|
25
|
+
through MCP, continue chunks until `hasMore:false`, parse the JSON, and verify
|
|
26
|
+
`workflow:"refill-sends-v2-workflow"` with a `v1` version before any planner
|
|
27
|
+
call. If the asset cannot load or parse, stop with
|
|
28
|
+
`blocked:refill_sends_v2_workflow_asset_unavailable`; do not emulate it from
|
|
29
|
+
local files or memory.
|
|
30
|
+
|
|
31
|
+
## G0 Bootstrap Facts
|
|
32
|
+
|
|
33
|
+
Resolve the request-scoped `workspaceId` using read-only auth and workspace
|
|
34
|
+
tools. Scheduled or autonomous runs must not rely on implicit workspace state.
|
|
35
|
+
Call `refill_sends_v2({ workspaceId })` first to receive the command contract,
|
|
36
|
+
then call `get_refill_plan_v2({ workspaceId, intent:"auto" })` for the dry-run
|
|
37
|
+
packet.
|
|
38
|
+
|
|
39
|
+
Optional inputs:
|
|
40
|
+
|
|
41
|
+
- `senderIds`: exact sender scope when the user named senders.
|
|
42
|
+
- `intent`: defaults to `auto`. Use explicit `evergreen`, `plain`, or `active`
|
|
43
|
+
only for a what-if comparison.
|
|
44
|
+
- `runState`: synthetic v1 lane memory for what-if dry runs. Use it only when
|
|
45
|
+
the user intentionally wants a hypothetical cursor, pin, cooldown state, or
|
|
46
|
+
laneChain replay.
|
|
47
|
+
- `journal:false`: skip the local journal only when explicitly requested.
|
|
48
|
+
- `journalNote`: append operator context to the dry-run terminal section.
|
|
49
|
+
|
|
50
|
+
## G1 Lane Sources
|
|
51
|
+
|
|
52
|
+
The planner reports the lane source for every selected lane:
|
|
53
|
+
|
|
54
|
+
1. `managed_waterfall`: product-managed evergreen waterfall lanes.
|
|
55
|
+
2. `dashboard_evergreen`: dashboard-visible evergreen campaigns that are not in
|
|
56
|
+
the managed waterfall snapshot.
|
|
57
|
+
3. `active_campaign`: regular active campaigns ranked into a deterministic
|
|
58
|
+
laneChain for non-evergreen refill planning.
|
|
59
|
+
|
|
60
|
+
If no lane family has refillable campaigns, report `no_refillable_campaigns`.
|
|
61
|
+
If the user lacks membership on a requested workspace, report the structured
|
|
62
|
+
`workspace_access` blocker with the workspace id and journal path.
|
|
63
|
+
|
|
64
|
+
## G2 Refill Ladder
|
|
65
|
+
|
|
66
|
+
The planner chooses from this locked rung order:
|
|
67
|
+
|
|
68
|
+
1. `start_campaign`: a paused selected lane has scheduler-ready supply but must
|
|
69
|
+
be live before the scheduler can pick it up.
|
|
70
|
+
2. `approve_messages`: generated rows are ready for a bounded approval step.
|
|
71
|
+
3. `wait_for_active_work`: enrichment, generation, import, or preparation is
|
|
72
|
+
already active, so the next honest action is to wait for that work to finish.
|
|
73
|
+
4. `enrich_more`: exact-set enrichment can close the current ready gap.
|
|
74
|
+
5. `reconcile_source_copy`: same-source rows exist and can be copied without
|
|
75
|
+
changing source family or source fingerprint.
|
|
76
|
+
6. `add_leads_same_source`: the same source path can add bounded new supply.
|
|
77
|
+
7. `paid_lane_fallback`: paid InMail is blocked or below threshold, so the same
|
|
78
|
+
waterfall can fall back to an existing supported lane.
|
|
79
|
+
8. `next_campaign`: the current lane is exhausted, cooling down, pinned away, or
|
|
80
|
+
unsafe, and the next surviving campaign lane should be inspected.
|
|
81
|
+
9. `wait_for_scheduler`: ready or projected supply covers the target, and only
|
|
82
|
+
scheduler pickup remains.
|
|
83
|
+
10. `done`: the sender or lane is complete for the selected target window, a
|
|
84
|
+
scheduler cap makes additional preparation unnecessary, or
|
|
85
|
+
`no_refillable_campaigns` is the honest terminal.
|
|
86
|
+
|
|
87
|
+
Forward-only lane rule: a lane can move to a later rung or a later surviving
|
|
88
|
+
campaign, but the dry-run packet must not jump backward to invent work that the
|
|
89
|
+
facts do not support. Pinned-campaign rule: a pinned campaign stays selected
|
|
90
|
+
until the planner proves a blocker, cooldown, exhaustion, or safer next lane.
|
|
91
|
+
Capped-is-complete rule: when scheduler capacity is lower than the requested
|
|
92
|
+
target and ready/projected coverage satisfies that cap, report `done` with the
|
|
93
|
+
cap reason. Honest-itinerary rule: show what was checked, what was skipped, and
|
|
94
|
+
why; never hide uncertainty behind a confident source recommendation.
|
|
95
|
+
|
|
96
|
+
Guardrails: no campaign creation, no provider-family switch, no threshold
|
|
97
|
+
lowering, no scheduler writes, no launch/send/archive/delete, no
|
|
98
|
+
brief/filter/message/sequence/sender mutation, no message preparation, no
|
|
99
|
+
message approval, no paid InMail credit refresh, no source mutation, no row
|
|
100
|
+
queueing, and no campaign status change.
|
|
101
|
+
|
|
102
|
+
## Journal
|
|
103
|
+
|
|
104
|
+
`get_refill_plan_v2` writes a local dry-run journal unless `journal:false` is
|
|
105
|
+
passed. Read the returned `journalPath` from the tool result and include it in
|
|
106
|
+
the report. The journal contains bootstrap, plan, and terminal sections plus an
|
|
107
|
+
index line under the run journal directory. If the tool returns
|
|
108
|
+
`journalPath:null` with a `journalWriteFailed` warning, report the warning and
|
|
109
|
+
continue with the dry-run packet; do not retry by writing local files yourself.
|
|
110
|
+
|
|
111
|
+
## Report Contract
|
|
112
|
+
|
|
113
|
+
Completion means packet reviewed and journal written. Merely calling
|
|
114
|
+
`get_refill_plan_v2` is not completion proof.
|
|
115
|
+
|
|
116
|
+
Report these facts:
|
|
117
|
+
|
|
118
|
+
- workspace id and selected sender scope;
|
|
119
|
+
- plan revision and state revision;
|
|
120
|
+
- selected campaign, lane source, and laneChain per sender;
|
|
121
|
+
- chosen rung and dry-run action queue;
|
|
122
|
+
- itinerary, skipped lanes, blockers, cooldowns, and warnings;
|
|
123
|
+
- `no_refillable_campaigns` terminals and `workspace_access` blockers;
|
|
124
|
+
- journal path;
|
|
125
|
+
- side effects proof, which must show all false values.
|
|
126
|
+
|
|
127
|
+
Stop after the report. This workflow never executes the action queue.
|
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "v1.0",
|
|
3
|
+
"workflow": "refill-sends-v2-workflow",
|
|
4
|
+
"principle": "Plan refill sends v2 as a read-only dry-run with zero mutations across managed_waterfall, dashboard_evergreen, and active_campaign lane sources.",
|
|
5
|
+
"laneSources": ["managed_waterfall", "dashboard_evergreen", "active_campaign"],
|
|
6
|
+
"terminalReasons": ["done", "no_refillable_campaigns"],
|
|
7
|
+
"blockers": ["workspace_access"],
|
|
8
|
+
"enumeratedRungs": [
|
|
9
|
+
"start_campaign",
|
|
10
|
+
"approve_messages",
|
|
11
|
+
"wait_for_active_work",
|
|
12
|
+
"enrich_more",
|
|
13
|
+
"reconcile_source_copy",
|
|
14
|
+
"add_leads_same_source",
|
|
15
|
+
"paid_lane_fallback",
|
|
16
|
+
"next_campaign",
|
|
17
|
+
"wait_for_scheduler",
|
|
18
|
+
"done"
|
|
19
|
+
],
|
|
20
|
+
"requiredBootstrap": [
|
|
21
|
+
{
|
|
22
|
+
"tool": "get_auth_status",
|
|
23
|
+
"purpose": "Confirm MCP auth before reading workspace or plan facts."
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"tool": "get_active_workspace",
|
|
27
|
+
"purpose": "Resolve explicit workspace evidence when the request did not provide workspaceId."
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"tool": "refill_sends_v2",
|
|
31
|
+
"requiredValues": {
|
|
32
|
+
"workspaceId": "{workspaceId}"
|
|
33
|
+
},
|
|
34
|
+
"requiredOutput": [
|
|
35
|
+
"readOnly true",
|
|
36
|
+
"approvalContract says Phase 86 handles execution"
|
|
37
|
+
]
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"tool": "get_subskill_prompt",
|
|
41
|
+
"requiredValues": {
|
|
42
|
+
"subskillName": "refill-sends-v2-workflow"
|
|
43
|
+
},
|
|
44
|
+
"mustReadUntil": {
|
|
45
|
+
"hasMore": false
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"tool": "get_subskill_asset",
|
|
50
|
+
"requiredValues": {
|
|
51
|
+
"subskillName": "refill-sends-v2-workflow",
|
|
52
|
+
"assetPath": "core/flow.v1.json"
|
|
53
|
+
},
|
|
54
|
+
"mustReadUntil": {
|
|
55
|
+
"hasMore": false
|
|
56
|
+
},
|
|
57
|
+
"validation": {
|
|
58
|
+
"workflow": "refill-sends-v2-workflow",
|
|
59
|
+
"versionPrefix": "v1",
|
|
60
|
+
"requiredTopLevelKeys": [
|
|
61
|
+
"states",
|
|
62
|
+
"gateOrder",
|
|
63
|
+
"enumeratedRungs",
|
|
64
|
+
"verification",
|
|
65
|
+
"laneSources",
|
|
66
|
+
"terminalReasons",
|
|
67
|
+
"blockers"
|
|
68
|
+
]
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"tool": "get_refill_plan_v2",
|
|
73
|
+
"requiredValues": {
|
|
74
|
+
"workspaceId": "{workspaceId}",
|
|
75
|
+
"intent": "auto"
|
|
76
|
+
},
|
|
77
|
+
"requiredOutput": [
|
|
78
|
+
"planRevision or workspace_access blocker",
|
|
79
|
+
"stateRevision",
|
|
80
|
+
"packet",
|
|
81
|
+
"journalPath",
|
|
82
|
+
"sideEffects"
|
|
83
|
+
]
|
|
84
|
+
}
|
|
85
|
+
],
|
|
86
|
+
"gateOrder": ["bootstrap", "plan", "report"],
|
|
87
|
+
"states": [
|
|
88
|
+
{
|
|
89
|
+
"id": "bootstrap",
|
|
90
|
+
"description": "Load the read-only command contract, workflow prompt, flow asset, and workspace facts.",
|
|
91
|
+
"allowedTools": [
|
|
92
|
+
"get_auth_status",
|
|
93
|
+
"get_active_workspace",
|
|
94
|
+
"list_workspaces",
|
|
95
|
+
"get_workspace",
|
|
96
|
+
"refill_sends_v2",
|
|
97
|
+
"get_subskill_prompt",
|
|
98
|
+
"get_subskill_asset",
|
|
99
|
+
"get_refill_plan_v2"
|
|
100
|
+
],
|
|
101
|
+
"onEnter": [
|
|
102
|
+
{
|
|
103
|
+
"tool": "get_auth_status"
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"tool": "refill_sends_v2",
|
|
107
|
+
"requiredFields": ["workspaceId"]
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"tool": "get_subskill_prompt",
|
|
111
|
+
"requiredValues": {
|
|
112
|
+
"subskillName": "refill-sends-v2-workflow"
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
"tool": "get_subskill_asset",
|
|
117
|
+
"requiredValues": {
|
|
118
|
+
"subskillName": "refill-sends-v2-workflow",
|
|
119
|
+
"assetPath": "core/flow.v1.json"
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
],
|
|
123
|
+
"transitions": {
|
|
124
|
+
"contract_loaded": "plan"
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"id": "plan",
|
|
129
|
+
"description": "Call the read-only refill sends v2 dry-run planner exactly once for this invocation.",
|
|
130
|
+
"allowedTools": ["get_refill_plan_v2"],
|
|
131
|
+
"onEnter": [
|
|
132
|
+
{
|
|
133
|
+
"tool": "get_refill_plan_v2",
|
|
134
|
+
"requiredFields": ["workspaceId"],
|
|
135
|
+
"optionalFields": [
|
|
136
|
+
"intent",
|
|
137
|
+
"senderIds",
|
|
138
|
+
"runState",
|
|
139
|
+
"journal",
|
|
140
|
+
"journalNote"
|
|
141
|
+
]
|
|
142
|
+
}
|
|
143
|
+
],
|
|
144
|
+
"requiredOutput": [
|
|
145
|
+
"sideEffects all false",
|
|
146
|
+
"planRevision starts with pr1: unless blocker is workspace_access",
|
|
147
|
+
"journalPath reported",
|
|
148
|
+
"chosen evergreenRung is in enumeratedRungs",
|
|
149
|
+
"lane sources are managed_waterfall, dashboard_evergreen, or active_campaign",
|
|
150
|
+
"terminal can be no_refillable_campaigns"
|
|
151
|
+
],
|
|
152
|
+
"allowedRungsSource": "enumeratedRungs",
|
|
153
|
+
"doNotAllow": [
|
|
154
|
+
"add_column",
|
|
155
|
+
"add_on_demand_leads",
|
|
156
|
+
"add_rubric_item",
|
|
157
|
+
"add_teammate",
|
|
158
|
+
"add_to_comment_campaign",
|
|
159
|
+
"add_to_connection_campaign",
|
|
160
|
+
"add_to_inmail_campaign",
|
|
161
|
+
"archive_campaign",
|
|
162
|
+
"attach_recommended_sequence",
|
|
163
|
+
"attach_sequence",
|
|
164
|
+
"bulk_enrich_with_prospeo",
|
|
165
|
+
"cancel_campaign_message_preparation",
|
|
166
|
+
"cancel_lead_import",
|
|
167
|
+
"capture_post_idea",
|
|
168
|
+
"check_rubric",
|
|
169
|
+
"commit_blueprint",
|
|
170
|
+
"confirm_harvest_job_companies",
|
|
171
|
+
"confirm_lead_list",
|
|
172
|
+
"confirm_prospeo_company_accounts",
|
|
173
|
+
"copy_sender_config",
|
|
174
|
+
"create_campaign",
|
|
175
|
+
"create_on_demand_campaign",
|
|
176
|
+
"create_on_demand_table",
|
|
177
|
+
"create_workspace",
|
|
178
|
+
"create_workflow_table",
|
|
179
|
+
"delete_column",
|
|
180
|
+
"delete_rubric_item",
|
|
181
|
+
"duplicate_campaign",
|
|
182
|
+
"enrich_with_prospeo",
|
|
183
|
+
"fill_campaign_horizon",
|
|
184
|
+
"get_or_create_direct_campaign_table",
|
|
185
|
+
"import_leads",
|
|
186
|
+
"load_csv_dnc_entries",
|
|
187
|
+
"load_csv_domains",
|
|
188
|
+
"load_csv_linkedin_leads",
|
|
189
|
+
"mark_post_published",
|
|
190
|
+
"migrate_flat_configs",
|
|
191
|
+
"pause_campaign",
|
|
192
|
+
"pause_direct_campaign",
|
|
193
|
+
"pause_on_demand_campaign",
|
|
194
|
+
"prepare_campaign_ab_test",
|
|
195
|
+
"queue_campaign_cells",
|
|
196
|
+
"queue_cells",
|
|
197
|
+
"record_campaign_review_batch",
|
|
198
|
+
"record_engage_proven_search",
|
|
199
|
+
"refill_sends",
|
|
200
|
+
"refresh_paid_inmail_credits",
|
|
201
|
+
"revise_message_template_and_rerun",
|
|
202
|
+
"save_domain_filters",
|
|
203
|
+
"save_hook_research",
|
|
204
|
+
"save_post_draft",
|
|
205
|
+
"save_rubrics",
|
|
206
|
+
"send_inbox_draft",
|
|
207
|
+
"send_inbox_manual_reply",
|
|
208
|
+
"set_active_workspace",
|
|
209
|
+
"set_campaign_waterfall_order",
|
|
210
|
+
"set_company_info",
|
|
211
|
+
"set_engage_state",
|
|
212
|
+
"set_engage_style_guide",
|
|
213
|
+
"set_headline_icp_criteria",
|
|
214
|
+
"set_sender_routing",
|
|
215
|
+
"setup_evergreen_campaigns",
|
|
216
|
+
"start_campaign",
|
|
217
|
+
"start_campaign_message_preparation",
|
|
218
|
+
"start_direct_campaign",
|
|
219
|
+
"start_on_demand_campaign",
|
|
220
|
+
"update_campaign",
|
|
221
|
+
"update_campaign_brief",
|
|
222
|
+
"update_cell",
|
|
223
|
+
"update_column",
|
|
224
|
+
"update_inbox_draft",
|
|
225
|
+
"update_post_draft",
|
|
226
|
+
"update_published_post_metrics",
|
|
227
|
+
"update_rubric_item",
|
|
228
|
+
"upsert_engage_tracked_person",
|
|
229
|
+
"upsert_rubric"
|
|
230
|
+
],
|
|
231
|
+
"transitions": {
|
|
232
|
+
"packet_returned": "report",
|
|
233
|
+
"workspace_access": "report"
|
|
234
|
+
}
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
"id": "report",
|
|
238
|
+
"description": "Present packet, lane source, laneChain, itinerary, warnings, blockers, plan revision, and journal path; then stop.",
|
|
239
|
+
"allowedTools": [],
|
|
240
|
+
"onEnter": [
|
|
241
|
+
{
|
|
242
|
+
"action": "present_packet_itinerary_and_journal_path"
|
|
243
|
+
}
|
|
244
|
+
],
|
|
245
|
+
"terminal": true
|
|
246
|
+
}
|
|
247
|
+
],
|
|
248
|
+
"verification": {
|
|
249
|
+
"requiredProof": [
|
|
250
|
+
"sideEffects all false in get_refill_plan_v2 response",
|
|
251
|
+
"planRevision has pr1: prefix unless blocker is workspace_access",
|
|
252
|
+
"journalPath reported or journalWriteFailed warning surfaced",
|
|
253
|
+
"chosen evergreenRung belongs to enumeratedRungs",
|
|
254
|
+
"lane source belongs to managed_waterfall, dashboard_evergreen, active_campaign",
|
|
255
|
+
"laneChain recorded when active_campaign chain is selected",
|
|
256
|
+
"no_refillable_campaigns terminal reported when no lane is refillable",
|
|
257
|
+
"packet reviewed with itinerary and blockers"
|
|
258
|
+
],
|
|
259
|
+
"notCompletionProof": [
|
|
260
|
+
"called get_refill_plan_v2 alone",
|
|
261
|
+
"action queue exists",
|
|
262
|
+
"ready rows alone",
|
|
263
|
+
"operator wants execution"
|
|
264
|
+
]
|
|
265
|
+
}
|
|
266
|
+
}
|