@sellable/mcp 0.1.190 → 0.1.191
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/README.md +1 -1
- package/agents/post-find-leads-message-scout.md +7 -8
- package/agents/registry.json +2 -2
- package/dist/auth.js +1 -1
- package/dist/index-dev.js +0 -0
- package/dist/index.js +0 -0
- package/dist/server.js +0 -22
- package/dist/tools/leads.d.ts +19 -63
- package/dist/tools/leads.js +3 -54
- package/dist/tools/prompts.js +2 -2
- package/dist/tools/registry.d.ts +37 -289
- package/dist/tools/registry.js +0 -2
- package/package.json +1 -1
- package/skills/create-campaign/SKILL.md +6 -8
- package/skills/create-campaign-v2/SKILL.md +9 -8
- package/skills/create-campaign-v2/SOUL.md +2 -2
- package/skills/create-campaign-v2/core/flow.v2.json +1 -1
- package/skills/create-campaign-v2/core/policy.md +3 -3
- package/skills/create-campaign-v2/references/approval-gate-framing.md +5 -5
- package/skills/create-campaign-v2/references/filter-leads.md +3 -5
- package/skills/create-campaign-v2/references/parallel-critique-protocol.md +2 -2
- package/skills/create-campaign-v2/references/sample-validation-loop.md +66 -46
- package/skills/create-campaign-v2/references/step-15-re-cascade.md +13 -20
- package/skills/create-campaign-v2-tail/SKILL.md +65 -52
- package/dist/tools/campaign-processing.d.ts +0 -383
- package/dist/tools/campaign-processing.js +0 -304
- package/skills/generate-messages-compact/SKILL.md +0 -100
- package/skills/generate-messages-compact/references/examples-critique-revision.md +0 -37
|
@@ -27,8 +27,8 @@ Re-cascade runs whenever ALL of the following are true:
|
|
|
27
27
|
to continue processing more campaign rows.
|
|
28
28
|
2. A subsequent check of rubric state shows rows that were pending at
|
|
29
29
|
first message-generation pass are now passed.
|
|
30
|
-
3. Those newly-passed rows do NOT yet have
|
|
31
|
-
(`
|
|
30
|
+
3. Those newly-passed rows do NOT yet have generated messages
|
|
31
|
+
(`messagesCount` flat relative to pre-cascade).
|
|
32
32
|
4. Step 15 has NOT yet transitioned to `awaiting-user-greenlight`.
|
|
33
33
|
|
|
34
34
|
Before that first generated-message approval, do not run this loop just to wait
|
|
@@ -41,31 +41,25 @@ rows graduated.
|
|
|
41
41
|
## Re-Cascade Loop Shape
|
|
42
42
|
|
|
43
43
|
```text
|
|
44
|
-
1.
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
1. paginate campaign table (get_rows_minimal, strip carryData) to
|
|
45
|
+
collect rowIds where:
|
|
46
|
+
- rubricStatus = "passed"
|
|
47
|
+
- messageStatus = "pending" OR messagesCount = 0
|
|
47
48
|
|
|
48
|
-
2. if
|
|
49
|
+
2. if newlyPassedRowIds.length == 0:
|
|
49
50
|
proceed to awaiting-user-greenlight
|
|
50
51
|
EXIT re-cascade loop
|
|
51
52
|
|
|
52
53
|
3. else:
|
|
53
|
-
|
|
54
|
+
queue_cells({
|
|
54
55
|
tableId,
|
|
55
|
-
|
|
56
|
-
rowSelector: { type: "needsGeneratedMessage" }
|
|
56
|
+
cellIds: newlyPassedGenerateMessageCellIds
|
|
57
57
|
})
|
|
58
58
|
|
|
59
|
-
4.
|
|
60
|
-
tableId,
|
|
61
|
-
minGeneratedMessages: 1,
|
|
62
|
-
templateRevision: "current"
|
|
63
|
-
})
|
|
64
|
-
|
|
65
|
-
5. re-check token contract on the cascaded subset (strict mode default)
|
|
59
|
+
4. re-check token contract on the cascaded subset (strict mode default)
|
|
66
60
|
— see references/thomas-revision-filters.md + gold-standard-message-patterns.md
|
|
67
61
|
|
|
68
|
-
|
|
62
|
+
5. go back to step 1 until newlyPassedRowIds == 0
|
|
69
63
|
```
|
|
70
64
|
|
|
71
65
|
## Cap
|
|
@@ -92,10 +86,9 @@ silently skipped.
|
|
|
92
86
|
## Hard Rules
|
|
93
87
|
|
|
94
88
|
- Generate Message cells do not always auto-cascade on late-passed rows —
|
|
95
|
-
Step 15 must explicitly queue
|
|
89
|
+
Step 15 must explicitly queue newly-pending Generate Message cells.
|
|
96
90
|
- Re-cascade iteration cap = 3. Trip escalates.
|
|
97
|
-
- `
|
|
98
|
-
re-cascade required.
|
|
91
|
+
- `messagesCount` flat + rubric graduating rows ⇒ re-cascade required.
|
|
99
92
|
- Token contract enforcement applies per-cascade, not once-for-all.
|
|
100
93
|
- Re-cascade NEVER re-runs `import_leads`, `check_rubric`, or
|
|
101
94
|
`enrich_with_prospeo`. Those are Step 13 / Step 14 actions.
|
|
@@ -30,8 +30,9 @@ Step 13 — materialize source list + confirm initial campaign slice
|
|
|
30
30
|
materialize/reuse approved source with campaignOfferId
|
|
31
31
|
import_leads(source-list target; SalesNav/Prospeo default ~1000, Signal Discovery default ~1500 engagers)
|
|
32
32
|
wait_for_lead_list_ready
|
|
33
|
-
confirm_lead_list(reviewBatchLimit=15)
|
|
33
|
+
confirm_lead_list(reviewBatchLimit=15)
|
|
34
34
|
wait_for_campaign_table_ready # campaign table exists
|
|
35
|
+
get_rows_minimal # read initial campaign-table execution slice
|
|
35
36
|
update_campaign(currentStep=filter-choice)
|
|
36
37
|
|
|
37
38
|
Post-import main thread
|
|
@@ -44,17 +45,22 @@ Post-import main thread
|
|
|
44
45
|
only then start the initial-slice cascade
|
|
45
46
|
|
|
46
47
|
Step 14 — kick initial-slice cascade + observe campaign rows
|
|
47
|
-
|
|
48
|
-
|
|
48
|
+
queue_cells(cellIds=<first 15 campaign-table execution-slice Enrich Prospect cells only>) <-- starts bounded chain
|
|
49
|
+
wait_for_campaign_table_ready # wait until sample cascade starts returning filter results
|
|
50
|
+
get_rows_minimal # read passesRubric + message cell status per row
|
|
51
|
+
wait_for_rubric_results(minPassedCount=1, includeRows=false)
|
|
49
52
|
if at least one row passes: update_campaign(currentStep=auto-execute-messaging)
|
|
50
53
|
compute projectedPass for later reporting / revision decisions
|
|
51
|
-
if zero rows pass: diagnose brief-vs-list; if brief: update_campaign_brief + re-queue + wait
|
|
54
|
+
if zero rows pass: diagnose brief-vs-list; if brief: update_campaign_brief + re-queue + wait
|
|
52
55
|
(check_rubric / bulk_enrich_with_prospeo are NOT called here —
|
|
53
|
-
cascade already did them.
|
|
56
|
+
cascade already did them. wait_for_rubric_results is OK as a
|
|
57
|
+
read-only observation helper if you need to block until the first
|
|
58
|
+
passing filtered row exists.)
|
|
54
59
|
|
|
55
60
|
Step 15 — observe messaging
|
|
56
|
-
|
|
57
|
-
|
|
61
|
+
wait_for_rubric_results({ minPassedCount: 1, minMessagesCount: 1, includeRows: false })
|
|
62
|
+
get_rows_minimal # confirm the first passing generated message exists
|
|
63
|
+
(rare) queue_cells on any pending Generate Message cells
|
|
58
64
|
token-contract spot check via get_rows
|
|
59
65
|
update_campaign(currentStep=auto-execute-messaging) with review-ready narration
|
|
60
66
|
ask the user to approve the generated message before Settings
|
|
@@ -93,14 +99,19 @@ Message` column's http_request writes those cells via the cascade.
|
|
|
93
99
|
- Do NOT call `check_rubric`, `enrich_with_prospeo`, or
|
|
94
100
|
`bulk_enrich_with_prospeo` in the tail. Those are direct-API
|
|
95
101
|
mutation tools that fetch data to the caller without writing to
|
|
96
|
-
the workflow table cells. Step
|
|
102
|
+
the workflow table cells. Step 13's `queue_cells` already
|
|
97
103
|
triggers the column-level enrichment that populates those cells.
|
|
98
104
|
Running these tools in the tail produces duplicate cost with no
|
|
99
105
|
cell side effect.
|
|
100
|
-
- `
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
106
|
+
- `wait_for_rubric_results` is read-only and OK to use as an
|
|
107
|
+
observation helper when you need to block on rubric completion —
|
|
108
|
+
it does not mutate cells. Prefer `get_rows_minimal` +
|
|
109
|
+
`wait_for_campaign_table_ready` for the primary cascade-observation
|
|
110
|
+
path, but use `wait_for_rubric_results({ targetCount: cohortSize })`
|
|
111
|
+
when the table-level wait returns before rubric cells finish. In
|
|
112
|
+
create-campaign-v2 Step 14, pass `minPassedCount: 1`; one passing
|
|
113
|
+
filtered row is enough to start observing Generate Message, even if
|
|
114
|
+
other sample rows are still processing.
|
|
104
115
|
- `start_campaign` is FORBIDDEN in the autonomous tail. It belongs only
|
|
105
116
|
in the Claude-greenlight path, AFTER the user signals "start". See
|
|
106
117
|
`references/final-handoff-contract.md`.
|
|
@@ -110,16 +121,15 @@ Message` column's http_request writes those cells via the cascade.
|
|
|
110
121
|
- You MAY NOT call `start_campaign` while ANY passing row has an
|
|
111
122
|
empty `Generate Message` cell. If you discover empty message cells in
|
|
112
123
|
the greenlight turn, ABORT greenlight and return to Step 15 first.
|
|
113
|
-
- You MAY NOT call `attach_sequence` while ANY
|
|
114
|
-
empty
|
|
115
|
-
`
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
-
|
|
121
|
-
|
|
122
|
-
every downstream cell stays `pending` and the campaign ships empty.
|
|
124
|
+
- You MAY NOT call `attach_sequence` while ANY passing row has an
|
|
125
|
+
empty `Generate Message` cell. Before `attach_sequence`, call
|
|
126
|
+
`get_rows_minimal` and confirm every row where `passesRubric=true`
|
|
127
|
+
has a `completed` Generate Message cell with non-empty `result`. If
|
|
128
|
+
any are pending, call `queue_cells` on those generateMessageCellIds
|
|
129
|
+
and wait. If rows truly won't message, ESCALATE.
|
|
130
|
+
- You MAY NOT advance past Step 13 without calling `queue_cells` on
|
|
131
|
+
the initial-slice Enrich Prospect cells. Without it, every downstream
|
|
132
|
+
cell stays `pending` and the campaign ships empty.
|
|
123
133
|
- You MAY NOT queue enrichment for rows outside the configured internal
|
|
124
134
|
execution slice before the user approves expansion. Full-list enrichment/message
|
|
125
135
|
generation is a credit-spend decision and must happen after the user
|
|
@@ -131,8 +141,9 @@ All subsequent steps read the already-parsed config. Do not re-load mid-run,
|
|
|
131
141
|
and do not read repo-local config files; packaged Claude Code and Codex runs
|
|
132
142
|
must use the MCP asset loader.
|
|
133
143
|
Load each subskill prompt (`create-campaign-v2`, `research-sender`,
|
|
134
|
-
`generate-messages
|
|
135
|
-
|
|
144
|
+
`generate-messages`) at most once per run. A multi-call chunk sequence counts
|
|
145
|
+
as one load. If a tool result already told you to load a prompt, load all
|
|
146
|
+
chunks once and remember; do not restart the same prompt from offset 0 later.
|
|
136
147
|
|
|
137
148
|
After every `update_campaign({ currentStep: ... })` in the tail, narrate
|
|
138
149
|
what changed and orient the user to what the already-open app will show next —
|
|
@@ -254,17 +265,16 @@ searchId, targetLeadCount: 1000 })`.
|
|
|
254
265
|
the source list and `workflowTableId` is the campaign table.
|
|
255
266
|
4. `wait_for_campaign_table_ready` until the initial campaign-table execution slice rows are
|
|
256
267
|
available in the campaign table.
|
|
257
|
-
5.
|
|
258
|
-
|
|
259
|
-
or queue cells in Step 13.
|
|
268
|
+
5. Call `get_rows_minimal({ tableId: workflowTableId })` and confirm the
|
|
269
|
+
15-row internal execution slice is present. Do not queue cells in Step 13.
|
|
260
270
|
6. If the import returns zero usable leads, ESCALATE per
|
|
261
271
|
`references/escalation-ladder.md` (hard fail).
|
|
262
272
|
7. `update_campaign({ campaignId, currentStep: "filter-choice" })`.
|
|
263
273
|
8. Describe the filter-choice screen now visible in the already-open app. Do not
|
|
264
274
|
repeat the watch URL.
|
|
265
275
|
|
|
266
|
-
**Do NOT call `check_rubric`, `
|
|
267
|
-
`
|
|
276
|
+
**Do NOT call `check_rubric`, `wait_for_rubric_results`,
|
|
277
|
+
`queue_cells`, `enrich_with_prospeo`, or `bulk_enrich_with_prospeo` in Step 13.**
|
|
268
278
|
Those are direct-API tools that fetch enrichment/scoring data to the
|
|
269
279
|
caller or start the workflow-table cascade too early. The cascade starts in
|
|
270
280
|
Step 14 only after `save_rubrics` and `update_campaign_brief` have both
|
|
@@ -289,16 +299,18 @@ message is ready. It does NOT call `check_rubric`,
|
|
|
289
299
|
Shape:
|
|
290
300
|
|
|
291
301
|
```text
|
|
292
|
-
|
|
293
|
-
|
|
302
|
+
queue_cells({ tableId: workflowTableId, cellIds: reviewBatchEnrichCellIds })
|
|
303
|
+
wait_for_campaign_table_ready({ tableId: workflowTableId })
|
|
304
|
+
get_rows_minimal({ tableId: workflowTableId })
|
|
305
|
+
wait_for_rubric_results({ tableId: workflowTableId, targetCount: cohortSize, minPassedCount: 1, includeRows: false })
|
|
294
306
|
passInSample = count of first sampleSize review/process sample rows with passesRubric === true
|
|
295
307
|
projectedPass = round(passInSample / sampleSize * importLimit)
|
|
296
308
|
|
|
297
|
-
if
|
|
309
|
+
if wait_for_rubric_results.ready === true and passRate.passed >= 1:
|
|
298
310
|
advance to Step 15 to observe or queue Generate Message for currently passing rows
|
|
299
311
|
do not wait for every sample row to finish before message generation starts
|
|
300
312
|
stop for review as soon as one passing generated message is ready
|
|
301
|
-
else if
|
|
313
|
+
else if wait_for_rubric_results.ready === false and reason === "timeout":
|
|
302
314
|
use the partial passRate/stats as the sample diagnostic
|
|
303
315
|
if passRate.passed >= 1:
|
|
304
316
|
advance to Step 15 to observe/queue Generate Message for passing rows
|
|
@@ -310,10 +322,9 @@ else if wait_for_campaign_processing.ready === false and reason === "timeout":
|
|
|
310
322
|
ask whether to revise source, revise filter/rubric, or wait once only if still processing
|
|
311
323
|
else:
|
|
312
324
|
diagnose brief-vs-list per sample-validation-loop.md
|
|
313
|
-
- brief: autonomous update_campaign_brief, then re-kick cascade
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
new results
|
|
325
|
+
- brief: autonomous update_campaign_brief, then re-kick cascade
|
|
326
|
+
(queue_cells on enrichCellIds) and wait for the new
|
|
327
|
+
results
|
|
317
328
|
- list: ESCALATE (no auto-revision of leads)
|
|
318
329
|
- unknown: ESCALATE
|
|
319
330
|
revisionRound += 1
|
|
@@ -350,8 +361,8 @@ Entered on `CampaignOffer.currentStep === "auto-execute-messaging"`.
|
|
|
350
361
|
|
|
351
362
|
**Messages are produced by the `Generate Message` column cascade, not
|
|
352
363
|
by a separate tool.** Do NOT call a `generate_messages` MCP tool —
|
|
353
|
-
that tool does not exist; `generate-messages
|
|
354
|
-
|
|
364
|
+
that tool does not exist; `generate-messages` is a subskill prompt
|
|
365
|
+
loaded during live messaging drafts. In the autonomous tail, messages
|
|
355
366
|
flow through the column pipeline: `Enrich Prospect` →
|
|
356
367
|
`DNC Check` → `ICP Score` → `Passes Rubric` → `Generate Message`.
|
|
357
368
|
Each column's http_request auto-fires when its upstream dependency
|
|
@@ -362,19 +373,21 @@ the output — not to generate messages manually.
|
|
|
362
373
|
|
|
363
374
|
**What Step 15 does:**
|
|
364
375
|
|
|
365
|
-
1.
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
376
|
+
1. `get_rows_minimal` to read `passesRubric` + `generateMessageCellId`
|
|
377
|
+
- the Generate Message cell's `status` and `result` per row.
|
|
378
|
+
Before queueing or waiting on Generate Message cells, confirm the
|
|
379
|
+
minted campaign brief still contains `{{...}}` in `## Approved Message
|
|
380
|
+
Template`. If it does not, fail before the cascade runs. Do not repair
|
|
381
|
+
after mint; the template must be present during mint so Step 15 never
|
|
382
|
+
starts in freeform generation mode.
|
|
383
|
+
2. For every row where `passesRubric === true`:
|
|
384
|
+
- The Generate Message cell should be `running` or `completed`
|
|
385
|
+
already (cascade auto-fired it). If it is still `pending`, queue
|
|
386
|
+
it explicitly: `queue_cells({ tableId, cellIds:
|
|
387
|
+
<generateMessageCellIds> })`.
|
|
388
|
+
3. `wait_for_rubric_results({ tableId, targetCount: reviewBatchSize,
|
|
389
|
+
minPassedCount: 1, minMessagesCount: 1, includeRows: false })` until the
|
|
390
|
+
first passing generated message is ready. Do not wait for every passing row's
|
|
378
391
|
Generate Message cell, and do not add "one more wait" for a stronger sample.
|
|
379
392
|
Remaining review/process sample rows can continue processing in the background.
|
|
380
393
|
4. Read the first ready generated message back via `get_rows` (full) and
|
|
@@ -1,383 +0,0 @@
|
|
|
1
|
-
type ColumnRole = "enrich" | "passesRubric" | "icpScore" | "generateMessage" | "approved";
|
|
2
|
-
type RowSelector = {
|
|
3
|
-
type: "reviewBatch";
|
|
4
|
-
basisHash?: string;
|
|
5
|
-
} | {
|
|
6
|
-
type: "rowIds";
|
|
7
|
-
rowIds: string[];
|
|
8
|
-
} | {
|
|
9
|
-
type: "passedRows";
|
|
10
|
-
limit?: number;
|
|
11
|
-
} | {
|
|
12
|
-
type: "needsGeneratedMessage";
|
|
13
|
-
limit?: number;
|
|
14
|
-
} | {
|
|
15
|
-
type: "staleGeneratedMessages";
|
|
16
|
-
limit?: number;
|
|
17
|
-
};
|
|
18
|
-
type SchemaInput = {
|
|
19
|
-
campaignId?: string;
|
|
20
|
-
tableId?: string;
|
|
21
|
-
};
|
|
22
|
-
type SelectInput = SchemaInput & {
|
|
23
|
-
columnRole: ColumnRole;
|
|
24
|
-
rowSelector: RowSelector;
|
|
25
|
-
limit?: number;
|
|
26
|
-
};
|
|
27
|
-
type QueueInput = SelectInput & {
|
|
28
|
-
forceRerun?: boolean;
|
|
29
|
-
reason?: string;
|
|
30
|
-
};
|
|
31
|
-
type WaitInput = SchemaInput & {
|
|
32
|
-
minPassedCount?: number;
|
|
33
|
-
minGeneratedMessages?: number;
|
|
34
|
-
templateRevision?: "current" | string;
|
|
35
|
-
timeoutMs?: number;
|
|
36
|
-
intervalMs?: number;
|
|
37
|
-
};
|
|
38
|
-
type ReviseTemplateInput = SchemaInput & {
|
|
39
|
-
campaignId: string;
|
|
40
|
-
templateMarkdown?: string;
|
|
41
|
-
approvedMessageTemplate?: string;
|
|
42
|
-
rowSelector?: RowSelector;
|
|
43
|
-
limit?: number;
|
|
44
|
-
};
|
|
45
|
-
type CampaignProcessingSchemaResponse = {
|
|
46
|
-
campaignId: string | null;
|
|
47
|
-
tableId: string;
|
|
48
|
-
rowCount: number;
|
|
49
|
-
currentApprovedBriefHash: string | null;
|
|
50
|
-
reviewBatch?: {
|
|
51
|
-
rowIds?: string[];
|
|
52
|
-
rowCount?: number;
|
|
53
|
-
basisHash?: string;
|
|
54
|
-
};
|
|
55
|
-
warnings?: string[];
|
|
56
|
-
};
|
|
57
|
-
type WorkflowTableStats = {
|
|
58
|
-
tableId: string;
|
|
59
|
-
totalRows: number;
|
|
60
|
-
messagesCount?: number;
|
|
61
|
-
generatedMessagesCount?: number;
|
|
62
|
-
currentRevisionGeneratedMessagesCount?: number;
|
|
63
|
-
staleGeneratedMessagesCount?: number;
|
|
64
|
-
generatedWithoutPassCount?: number;
|
|
65
|
-
currentTemplateRevisionHash?: string | null;
|
|
66
|
-
processingCount?: number;
|
|
67
|
-
queuedCount?: number;
|
|
68
|
-
cancellableCount?: number;
|
|
69
|
-
failedCount?: number;
|
|
70
|
-
needsApprovalCount?: number;
|
|
71
|
-
passRate?: {
|
|
72
|
-
completed: number;
|
|
73
|
-
passed: number;
|
|
74
|
-
pending?: number;
|
|
75
|
-
};
|
|
76
|
-
};
|
|
77
|
-
export declare const campaignProcessingToolDefinitions: ({
|
|
78
|
-
name: string;
|
|
79
|
-
description: string;
|
|
80
|
-
inputSchema: {
|
|
81
|
-
type: string;
|
|
82
|
-
properties: {
|
|
83
|
-
campaignId: {
|
|
84
|
-
type: string;
|
|
85
|
-
};
|
|
86
|
-
tableId: {
|
|
87
|
-
type: string;
|
|
88
|
-
};
|
|
89
|
-
columnRole?: undefined;
|
|
90
|
-
rowSelector?: undefined;
|
|
91
|
-
limit?: undefined;
|
|
92
|
-
forceRerun?: undefined;
|
|
93
|
-
reason?: undefined;
|
|
94
|
-
minPassedCount?: undefined;
|
|
95
|
-
minGeneratedMessages?: undefined;
|
|
96
|
-
templateRevision?: undefined;
|
|
97
|
-
timeoutMs?: undefined;
|
|
98
|
-
intervalMs?: undefined;
|
|
99
|
-
templateMarkdown?: undefined;
|
|
100
|
-
approvedMessageTemplate?: undefined;
|
|
101
|
-
};
|
|
102
|
-
additionalProperties: boolean;
|
|
103
|
-
required?: undefined;
|
|
104
|
-
};
|
|
105
|
-
} | {
|
|
106
|
-
name: string;
|
|
107
|
-
description: string;
|
|
108
|
-
inputSchema: {
|
|
109
|
-
type: string;
|
|
110
|
-
properties: {
|
|
111
|
-
campaignId: {
|
|
112
|
-
type: string;
|
|
113
|
-
};
|
|
114
|
-
tableId: {
|
|
115
|
-
type: string;
|
|
116
|
-
};
|
|
117
|
-
columnRole: {
|
|
118
|
-
type: string;
|
|
119
|
-
enum: string[];
|
|
120
|
-
};
|
|
121
|
-
rowSelector: {
|
|
122
|
-
type: string;
|
|
123
|
-
properties: {
|
|
124
|
-
type: {
|
|
125
|
-
type: string;
|
|
126
|
-
enum: string[];
|
|
127
|
-
};
|
|
128
|
-
basisHash: {
|
|
129
|
-
type: string;
|
|
130
|
-
};
|
|
131
|
-
rowIds: {
|
|
132
|
-
type: string;
|
|
133
|
-
items: {
|
|
134
|
-
type: string;
|
|
135
|
-
};
|
|
136
|
-
};
|
|
137
|
-
limit: {
|
|
138
|
-
type: string;
|
|
139
|
-
};
|
|
140
|
-
};
|
|
141
|
-
required: string[];
|
|
142
|
-
additionalProperties: boolean;
|
|
143
|
-
};
|
|
144
|
-
limit: {
|
|
145
|
-
type: string;
|
|
146
|
-
};
|
|
147
|
-
forceRerun?: undefined;
|
|
148
|
-
reason?: undefined;
|
|
149
|
-
minPassedCount?: undefined;
|
|
150
|
-
minGeneratedMessages?: undefined;
|
|
151
|
-
templateRevision?: undefined;
|
|
152
|
-
timeoutMs?: undefined;
|
|
153
|
-
intervalMs?: undefined;
|
|
154
|
-
templateMarkdown?: undefined;
|
|
155
|
-
approvedMessageTemplate?: undefined;
|
|
156
|
-
};
|
|
157
|
-
required: string[];
|
|
158
|
-
additionalProperties: boolean;
|
|
159
|
-
};
|
|
160
|
-
} | {
|
|
161
|
-
name: string;
|
|
162
|
-
description: string;
|
|
163
|
-
inputSchema: {
|
|
164
|
-
type: string;
|
|
165
|
-
properties: {
|
|
166
|
-
campaignId: {
|
|
167
|
-
type: string;
|
|
168
|
-
};
|
|
169
|
-
tableId: {
|
|
170
|
-
type: string;
|
|
171
|
-
};
|
|
172
|
-
columnRole: {
|
|
173
|
-
type: string;
|
|
174
|
-
enum: string[];
|
|
175
|
-
};
|
|
176
|
-
rowSelector: {
|
|
177
|
-
type: string;
|
|
178
|
-
properties: {
|
|
179
|
-
type: {
|
|
180
|
-
type: string;
|
|
181
|
-
enum: string[];
|
|
182
|
-
};
|
|
183
|
-
basisHash: {
|
|
184
|
-
type: string;
|
|
185
|
-
};
|
|
186
|
-
rowIds: {
|
|
187
|
-
type: string;
|
|
188
|
-
items: {
|
|
189
|
-
type: string;
|
|
190
|
-
};
|
|
191
|
-
};
|
|
192
|
-
limit: {
|
|
193
|
-
type: string;
|
|
194
|
-
};
|
|
195
|
-
};
|
|
196
|
-
required: string[];
|
|
197
|
-
additionalProperties: boolean;
|
|
198
|
-
};
|
|
199
|
-
forceRerun: {
|
|
200
|
-
type: string;
|
|
201
|
-
};
|
|
202
|
-
limit: {
|
|
203
|
-
type: string;
|
|
204
|
-
};
|
|
205
|
-
reason: {
|
|
206
|
-
type: string;
|
|
207
|
-
};
|
|
208
|
-
minPassedCount?: undefined;
|
|
209
|
-
minGeneratedMessages?: undefined;
|
|
210
|
-
templateRevision?: undefined;
|
|
211
|
-
timeoutMs?: undefined;
|
|
212
|
-
intervalMs?: undefined;
|
|
213
|
-
templateMarkdown?: undefined;
|
|
214
|
-
approvedMessageTemplate?: undefined;
|
|
215
|
-
};
|
|
216
|
-
required: string[];
|
|
217
|
-
additionalProperties: boolean;
|
|
218
|
-
};
|
|
219
|
-
} | {
|
|
220
|
-
name: string;
|
|
221
|
-
description: string;
|
|
222
|
-
inputSchema: {
|
|
223
|
-
type: string;
|
|
224
|
-
properties: {
|
|
225
|
-
campaignId: {
|
|
226
|
-
type: string;
|
|
227
|
-
};
|
|
228
|
-
tableId: {
|
|
229
|
-
type: string;
|
|
230
|
-
};
|
|
231
|
-
minPassedCount: {
|
|
232
|
-
type: string;
|
|
233
|
-
};
|
|
234
|
-
minGeneratedMessages: {
|
|
235
|
-
type: string;
|
|
236
|
-
};
|
|
237
|
-
templateRevision: {
|
|
238
|
-
type: string;
|
|
239
|
-
description: string;
|
|
240
|
-
};
|
|
241
|
-
timeoutMs: {
|
|
242
|
-
type: string;
|
|
243
|
-
};
|
|
244
|
-
intervalMs: {
|
|
245
|
-
type: string;
|
|
246
|
-
};
|
|
247
|
-
columnRole?: undefined;
|
|
248
|
-
rowSelector?: undefined;
|
|
249
|
-
limit?: undefined;
|
|
250
|
-
forceRerun?: undefined;
|
|
251
|
-
reason?: undefined;
|
|
252
|
-
templateMarkdown?: undefined;
|
|
253
|
-
approvedMessageTemplate?: undefined;
|
|
254
|
-
};
|
|
255
|
-
additionalProperties: boolean;
|
|
256
|
-
required?: undefined;
|
|
257
|
-
};
|
|
258
|
-
} | {
|
|
259
|
-
name: string;
|
|
260
|
-
description: string;
|
|
261
|
-
inputSchema: {
|
|
262
|
-
type: string;
|
|
263
|
-
properties: {
|
|
264
|
-
campaignId: {
|
|
265
|
-
type: string;
|
|
266
|
-
};
|
|
267
|
-
tableId: {
|
|
268
|
-
type: string;
|
|
269
|
-
};
|
|
270
|
-
templateMarkdown: {
|
|
271
|
-
type: string;
|
|
272
|
-
};
|
|
273
|
-
approvedMessageTemplate: {
|
|
274
|
-
type: string;
|
|
275
|
-
};
|
|
276
|
-
rowSelector: {
|
|
277
|
-
type: string;
|
|
278
|
-
properties: {
|
|
279
|
-
type: {
|
|
280
|
-
type: string;
|
|
281
|
-
enum: string[];
|
|
282
|
-
};
|
|
283
|
-
rowIds: {
|
|
284
|
-
type: string;
|
|
285
|
-
items: {
|
|
286
|
-
type: string;
|
|
287
|
-
};
|
|
288
|
-
};
|
|
289
|
-
limit: {
|
|
290
|
-
type: string;
|
|
291
|
-
};
|
|
292
|
-
basisHash?: undefined;
|
|
293
|
-
};
|
|
294
|
-
required: string[];
|
|
295
|
-
additionalProperties: boolean;
|
|
296
|
-
};
|
|
297
|
-
limit: {
|
|
298
|
-
type: string;
|
|
299
|
-
};
|
|
300
|
-
columnRole?: undefined;
|
|
301
|
-
forceRerun?: undefined;
|
|
302
|
-
reason?: undefined;
|
|
303
|
-
minPassedCount?: undefined;
|
|
304
|
-
minGeneratedMessages?: undefined;
|
|
305
|
-
templateRevision?: undefined;
|
|
306
|
-
timeoutMs?: undefined;
|
|
307
|
-
intervalMs?: undefined;
|
|
308
|
-
};
|
|
309
|
-
required: string[];
|
|
310
|
-
additionalProperties: boolean;
|
|
311
|
-
};
|
|
312
|
-
})[];
|
|
313
|
-
export declare function getCampaignTableSchema(input: SchemaInput): Promise<CampaignProcessingSchemaResponse>;
|
|
314
|
-
export declare function selectCampaignCells(input: SelectInput): Promise<unknown>;
|
|
315
|
-
export declare function queueCampaignCells(input: QueueInput): Promise<unknown>;
|
|
316
|
-
export declare function reviseMessageTemplateAndRerun(input: ReviseTemplateInput): Promise<unknown>;
|
|
317
|
-
export declare function waitForCampaignProcessing(input: WaitInput): Promise<{
|
|
318
|
-
ready: boolean;
|
|
319
|
-
reason: string;
|
|
320
|
-
attempts: number;
|
|
321
|
-
elapsedMs: number;
|
|
322
|
-
tableId: string;
|
|
323
|
-
pollKey: string;
|
|
324
|
-
requestedTemplateRevision: string;
|
|
325
|
-
currentTemplateRevisionHash: string;
|
|
326
|
-
guidance: string;
|
|
327
|
-
stats: WorkflowTableStats;
|
|
328
|
-
floors?: undefined;
|
|
329
|
-
result?: undefined;
|
|
330
|
-
warning?: undefined;
|
|
331
|
-
partialResult?: undefined;
|
|
332
|
-
} | {
|
|
333
|
-
ready: boolean;
|
|
334
|
-
attempts: number;
|
|
335
|
-
elapsedMs: number;
|
|
336
|
-
tableId: string;
|
|
337
|
-
pollKey: string;
|
|
338
|
-
floors: {
|
|
339
|
-
minPassedCount: number | null;
|
|
340
|
-
minGeneratedMessages: number | null;
|
|
341
|
-
templateRevision: string | null;
|
|
342
|
-
};
|
|
343
|
-
result: {
|
|
344
|
-
passedCount: number;
|
|
345
|
-
generatedMessagesCount: number;
|
|
346
|
-
currentRevisionGeneratedMessagesCount: number;
|
|
347
|
-
staleGeneratedMessagesCount: number;
|
|
348
|
-
generatedWithoutPassCount: number;
|
|
349
|
-
currentTemplateRevisionHash: string | null;
|
|
350
|
-
};
|
|
351
|
-
stats: WorkflowTableStats;
|
|
352
|
-
reason?: undefined;
|
|
353
|
-
requestedTemplateRevision?: undefined;
|
|
354
|
-
currentTemplateRevisionHash?: undefined;
|
|
355
|
-
guidance?: undefined;
|
|
356
|
-
warning?: undefined;
|
|
357
|
-
partialResult?: undefined;
|
|
358
|
-
} | {
|
|
359
|
-
ready: boolean;
|
|
360
|
-
reason: string;
|
|
361
|
-
attempts: number;
|
|
362
|
-
elapsedMs: number;
|
|
363
|
-
tableId: string;
|
|
364
|
-
pollKey: string;
|
|
365
|
-
warning: string | undefined;
|
|
366
|
-
partialResult: {
|
|
367
|
-
passedCount: number;
|
|
368
|
-
generatedMessagesCount: number;
|
|
369
|
-
currentRevisionGeneratedMessagesCount: number;
|
|
370
|
-
staleGeneratedMessagesCount: number;
|
|
371
|
-
generatedWithoutPassCount: number;
|
|
372
|
-
currentTemplateRevisionHash: string | null;
|
|
373
|
-
passFloorMet: boolean;
|
|
374
|
-
generatedFloorMet: boolean;
|
|
375
|
-
};
|
|
376
|
-
guidance: string;
|
|
377
|
-
stats: WorkflowTableStats | null;
|
|
378
|
-
requestedTemplateRevision?: undefined;
|
|
379
|
-
currentTemplateRevisionHash?: undefined;
|
|
380
|
-
floors?: undefined;
|
|
381
|
-
result?: undefined;
|
|
382
|
-
}>;
|
|
383
|
-
export {};
|