@sellable/mcp 0.1.957 → 0.1.959

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.
Files changed (48) hide show
  1. package/agents/post-find-leads-message-scout.md +4 -4
  2. package/agents/registry.json +1 -1
  3. package/dist/server.js +2 -2
  4. package/dist/tools/campaigns.js +5 -4
  5. package/dist/tools/prompts.d.ts +12 -4
  6. package/dist/tools/prompts.js +23 -7
  7. package/dist/tools/refill-v3-advance.js +1 -1
  8. package/dist/tools/refill-v3-campaign-work.d.ts +6 -0
  9. package/dist/tools/refill-v3-continue-contract.d.ts +4 -0
  10. package/dist/tools/refill-v3-continue-contract.js +3 -0
  11. package/dist/tools/refill-v3-continue.d.ts +18 -5
  12. package/dist/tools/refill-v3-continue.js +177 -85
  13. package/dist/tools/registry.d.ts +6 -2
  14. package/package.json +1 -1
  15. package/skills/create-campaign/SKILL.md +3 -3
  16. package/skills/create-campaign-v2/SKILL.md +1 -1
  17. package/skills/create-campaign-v2/SOUL.md +2 -1
  18. package/skills/create-campaign-v2/core/policy.md +2 -2
  19. package/skills/create-campaign-v2/references/approval-gate-framing.md +2 -1
  20. package/skills/create-campaign-v2/references/message-approach.md +25 -16
  21. package/skills/create-campaign-v2/references/parallel-critique-protocol.md +2 -2
  22. package/skills/create-campaign-v2/references/sample-validation-loop.md +1 -1
  23. package/skills/create-campaign-v2-tail/SKILL.md +2 -2
  24. package/skills/create-campaign-v2-validation/SKILL.md +2 -2
  25. package/skills/{conversation-chess → draft-message}/SKILL.md +2 -2
  26. package/skills/{conversation-chess → draft-message}/compiled/follow-up/endpoint.md +1 -1
  27. package/skills/{conversation-chess → draft-message}/compiled/follow-up/semantic.md +3 -3
  28. package/skills/{conversation-chess → draft-message}/compiled/manifest.json +22 -22
  29. package/skills/{conversation-chess → draft-message}/compiled/opener/endpoint.md +1 -1
  30. package/skills/{conversation-chess → draft-message}/compiled/opener/semantic.md +3 -3
  31. package/skills/{conversation-chess → draft-message}/compiled/reply/endpoint.md +1 -1
  32. package/skills/{conversation-chess → draft-message}/compiled/reply/semantic.md +3 -3
  33. package/skills/{conversation-chess → draft-message}/installed/SKILL.md +7 -6
  34. package/skills/first-campaign-onboarding/SKILL.md +8 -7
  35. package/skills/generate-messages/SKILL.md +13 -11
  36. package/skills/refill-sends/SKILL.md +7 -0
  37. package/skills/refill-sends-workflow/SKILL.md +7 -0
  38. package/skills/weekly-campaign-summary/SKILL.md +1 -1
  39. /package/skills/{conversation-chess → draft-message}/core/input-contract.md +0 -0
  40. /package/skills/{conversation-chess → draft-message}/core/situation-index.json +0 -0
  41. /package/skills/{conversation-chess → draft-message}/modes/follow-up.md +0 -0
  42. /package/skills/{conversation-chess → draft-message}/modes/opener.md +0 -0
  43. /package/skills/{conversation-chess → draft-message}/modes/reply.md +0 -0
  44. /package/skills/{conversation-chess → draft-message}/references/follow-ups.md +0 -0
  45. /package/skills/{conversation-chess → draft-message}/references/opener-editor.md +0 -0
  46. /package/skills/{conversation-chess → draft-message}/references/openers.md +0 -0
  47. /package/skills/{conversation-chess → draft-message}/references/rapport.md +0 -0
  48. /package/skills/{conversation-chess → draft-message}/references/replies.md +0 -0
@@ -1,9 +1,9 @@
1
1
  ---
2
- name: sellable-dev-conversation-chess
3
- description: Draft from the explicitly selected Conversation Chess mode.
2
+ name: sellable-dev-draft-message
3
+ description: Draft from the explicitly selected Draft Message mode.
4
4
  ---
5
5
 
6
- # Conversation Chess
6
+ # Draft Message
7
7
 
8
8
  One draft for the actual sender/situation. Rules/modes/examples loaded: select relevant ones; never fetch assets. Synthetic examples and histories: their facts, links and outcomes are not customer evidence. Creative rapport needs scoped permission.
9
9
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": "conversation-chess-compiled/v1",
3
- "compilerSha256": "8dd7ab313217d49dfa1ea740faccb112d4597e9b50b474d9fc1ee64e1fa9ac41",
3
+ "compilerSha256": "8ae72b0245fff2ee08d0b6e7ec1ba611956a8ac194f091bf4c35e71fe0ef4ffb",
4
4
  "selectedModes": [
5
5
  "OPENER",
6
6
  "REPLY",
@@ -90,47 +90,47 @@
90
90
  "utf16Characters": 3429
91
91
  },
92
92
  "compiled/opener/endpoint.md": {
93
- "sha256": "74c772ce3ec702481e9087c3f91e8000501abff3baa1c27aed37bca63ad1b66a",
94
- "utf8Bytes": 22699,
95
- "utf16Characters": 22553
93
+ "sha256": "ac515f8e5eeca13b18a18a2e72c3a0e0a6bc46b63f108f766efc1b869620ddc8",
94
+ "utf8Bytes": 22694,
95
+ "utf16Characters": 22548
96
96
  },
97
97
  "compiled/opener/semantic.md": {
98
- "sha256": "a7e7cc73dd38a42f520fc30b1b7adcf7e898bb166e1b6fe60cb26cd26694fc07",
99
- "utf8Bytes": 22400,
100
- "utf16Characters": 22256
98
+ "sha256": "6929c7f351a81e006aae335b7e47f5beabc4e33f795052c54bd3e458626228f9",
99
+ "utf8Bytes": 22385,
100
+ "utf16Characters": 22241
101
101
  },
102
102
  "compiled/opener/manifest.json": {
103
- "sha256": "e37467aaedc0a2274e39e1cb0f81eff3e5453eebc5fbdb7787fd05756e5f6cac",
103
+ "sha256": "14a2fd9ff3bcfddef9bdcb30a25f4228ec56a053982552184e2a61bcb317e278",
104
104
  "utf8Bytes": 1728,
105
105
  "utf16Characters": 1728
106
106
  },
107
107
  "compiled/reply/endpoint.md": {
108
- "sha256": "fc99e17d3a57bd1d725c8eeaba4699dd087a2d917d04494ebe544d0d54e8d747",
109
- "utf8Bytes": 12482,
110
- "utf16Characters": 12436
108
+ "sha256": "067abd6a6270d3a09d1ec8fbebfe38e061e46f762693e61bb59a412d7e31861d",
109
+ "utf8Bytes": 12477,
110
+ "utf16Characters": 12431
111
111
  },
112
112
  "compiled/reply/semantic.md": {
113
- "sha256": "22debec4755e5b4a5fd1d4f47dcbc7fa94f4ba042a2e2d1ed826a476f46583d0",
114
- "utf8Bytes": 12183,
115
- "utf16Characters": 12139
113
+ "sha256": "f3dc1d637a3629e1f80750af1ff856a9cb9a036e871fed1540da2f8b43462684",
114
+ "utf8Bytes": 12168,
115
+ "utf16Characters": 12124
116
116
  },
117
117
  "compiled/reply/manifest.json": {
118
- "sha256": "99dd29e984f46fffb3900e7581e069b9bbf1773c6cd42ca5b32aebe80770a434",
118
+ "sha256": "7b3746fa5a1a11a5896f4b6631e1b9ab98a5b0fa248e5fc546e7e881698fcfc4",
119
119
  "utf8Bytes": 1528,
120
120
  "utf16Characters": 1528
121
121
  },
122
122
  "compiled/follow-up/endpoint.md": {
123
- "sha256": "94722378481f4fcb957e2254507256557ff5a214b76760bd18f1395f4ce70941",
124
- "utf8Bytes": 8731,
125
- "utf16Characters": 8697
123
+ "sha256": "c81746801468832fe05ec996756dc550b6138683f89326578d5d0d9e2deb77ca",
124
+ "utf8Bytes": 8726,
125
+ "utf16Characters": 8692
126
126
  },
127
127
  "compiled/follow-up/semantic.md": {
128
- "sha256": "b1997d8e952c7c3de71a3fc8fd0dc34bcd26bdee52d48572a579a93f1d088762",
129
- "utf8Bytes": 8432,
130
- "utf16Characters": 8400
128
+ "sha256": "9db268a5d21811e4ac0b45b651f7439eb2da8eff99e47381eb9c7c2e531efc37",
129
+ "utf8Bytes": 8417,
130
+ "utf16Characters": 8385
131
131
  },
132
132
  "compiled/follow-up/manifest.json": {
133
- "sha256": "092ef43b955139838c9aea6f1658ab4c9275f68dec42f92fb85704ae35d1b5a6",
133
+ "sha256": "65a2454e9f1e0055afca8b02c17bf28e054aba77d86cbcaea398e813db2412d1",
134
134
  "utf8Bytes": 1432,
135
135
  "utf16Characters": 1432
136
136
  }
@@ -1,4 +1,4 @@
1
- # Conversation Chess
1
+ # Draft Message
2
2
 
3
3
  One draft for the actual sender/situation. Rules/modes/examples loaded: select relevant ones; never fetch assets. Synthetic examples and histories: their facts, links and outcomes are not customer evidence. Creative rapport needs scoped permission.
4
4
 
@@ -1,9 +1,9 @@
1
1
  ---
2
- name: sellable-dev-conversation-chess
3
- description: Draft from the explicitly selected Conversation Chess mode.
2
+ name: sellable-dev-draft-message
3
+ description: Draft from the explicitly selected Draft Message mode.
4
4
  ---
5
5
 
6
- # Conversation Chess
6
+ # Draft Message
7
7
 
8
8
  One draft for the actual sender/situation. Rules/modes/examples loaded: select relevant ones; never fetch assets. Synthetic examples and histories: their facts, links and outcomes are not customer evidence. Creative rapport needs scoped permission.
9
9
 
@@ -1,4 +1,4 @@
1
- # Conversation Chess
1
+ # Draft Message
2
2
 
3
3
  One draft for the actual sender/situation. Rules/modes/examples loaded: select relevant ones; never fetch assets. Synthetic examples and histories: their facts, links and outcomes are not customer evidence. Creative rapport needs scoped permission.
4
4
 
@@ -1,9 +1,9 @@
1
1
  ---
2
- name: sellable-dev-conversation-chess
3
- description: Draft from the explicitly selected Conversation Chess mode.
2
+ name: sellable-dev-draft-message
3
+ description: Draft from the explicitly selected Draft Message mode.
4
4
  ---
5
5
 
6
- # Conversation Chess
6
+ # Draft Message
7
7
 
8
8
  One draft for the actual sender/situation. Rules/modes/examples loaded: select relevant ones; never fetch assets. Synthetic examples and histories: their facts, links and outcomes are not customer evidence. Creative rapport needs scoped permission.
9
9
 
@@ -1,19 +1,20 @@
1
1
  ---
2
- name: conversation-chess
3
- description: Draft an opener, reply or follow-up from the current sender, offer and conversation. Start with the Sellable get_subskill_prompt tool for subskillName conversation-chess.
2
+ name: draft-message
3
+ description: Draft one opener, reply or follow-up as the current sender, from their offer and the conversation. Nothing is sent. Start with the Sellable get_subskill_prompt tool for subskillName draft-message.
4
4
  ---
5
5
 
6
- # Sellable Conversation Chess
6
+ # Sellable Draft Message
7
7
 
8
- Use this skill for one conversational draft. It does not send messages, schedule,
8
+ Use this skill for one message draft, in either campaign approach
9
+ (Conversations or Message Testing). It does not send messages, schedule,
9
10
  book, approve templates, enroll prospects or change stored sender context.
10
11
  Campaign creation and row persistence remain with their existing owners.
11
12
 
12
- 1. Load `mcp__sellable__get_subskill_prompt({ subskillName: "conversation-chess" })`.
13
+ 1. Load `mcp__sellable__get_subskill_prompt({ subskillName: "draft-message" })`.
13
14
  Read every page using its `nextOffset` until `hasMore` is false. Do not
14
15
  reconstruct the prompt from memory, a repository or a plugin-cache path.
15
16
  2. Load `core/input-contract.md` through
16
- `mcp__sellable__get_subskill_asset({ subskillName: "conversation-chess", assetPath: "..." })`.
17
+ `mcp__sellable__get_subskill_asset({ subskillName: "draft-message", assetPath: "..." })`.
17
18
  Then load the selected guide and examples from the root prompt:
18
19
  OPENER uses `modes/opener.md` + `references/openers.md` + `references/rapport.md` +
19
20
  `references/opener-editor.md`; REPLY uses
@@ -245,8 +245,8 @@ continue in the same conversation; do not ask the user to run another command.
245
245
  sending account: the latter belongs at Settings, not before the draft.
246
246
  The flow's order and state gates still hold: the campaign exists before
247
247
  anyone is imported, the source is chosen before the import, sample rows
248
- exist before filters and messages run, and the template is saved before
249
- anything is queued. Who decides each one is set by the next section. Offer
248
+ exist before filters and messages run, and in Message Testing the template
249
+ is saved before anything is queued. Who decides each one is set by the next section. Offer
250
250
  CRM or meeting integrations only as optional context when helpful.
251
251
  4. Reuse an existing draft for the same goal. Never create a duplicate because
252
252
  onboarding resumed in a new session.
@@ -304,11 +304,12 @@ for the message template: those are yours to decide and report.
304
304
  **How the first message is written.** The first campaign uses the
305
305
  Conversations approach from the workflow's `references/message-approach.md`:
306
306
  create it with `messageApproach: "conversation"`, write no message template,
307
- and let Sellable's writer write each first message for the person. Use Message
308
- Lab (`"message_test"`, one approved message to everyone) only when the
309
- customer asks to send the same message to everyone, to test copy, or to
310
- approve exact wording; then the template steps of the workflow apply and you
311
- approve the template yourself as before.
307
+ and let Sellable write each first message for the person. Use Message Testing
308
+ (`"message_test"`, one approved message to everyone) only when the customer
309
+ asks to send the same message to everyone, to test copy, or to approve exact
310
+ wording; then the template steps of the workflow apply and you approve the
311
+ template yourself as before. Name the approach to the customer with the
312
+ one-line descriptions in `references/message-approach.md`.
312
313
 
313
314
  **Approval 1: direction.** After research, write the brief, create the
314
315
  campaign with it (`create_campaign`), and post one message in this shape. The
@@ -1,24 +1,26 @@
1
1
  ---
2
2
  name: generate-messages
3
- description: Draft campaign recommendations and row messages through Conversation Chess while preserving approved templates, scoped context and review ownership.
3
+ description: Draft campaign recommendations and row messages through draft-message while preserving approved templates, scoped context and review ownership.
4
4
  visibility: internal
5
5
  ---
6
6
 
7
7
  # Generate Messages
8
8
 
9
- Own campaign drafting mechanics. Conversation Chess owns NEW, UNAPPROVED copy.
9
+ Own campaign drafting mechanics. draft-message owns NEW, UNAPPROVED copy.
10
10
  Do not combine its conversational move with a second product-clarity, CTA,
11
11
  three-candidate, finalizer or writer-agent recipe. Explicit operator instructions
12
12
  and approved template authority remain intact; no new writing-strategy flag exists.
13
13
  `useMessagingTemplate` and `messagingModeChoice` are review/delivery choices.
14
+ A Conversations campaign (`messageApproach: "conversation"`) has no template
15
+ and skips Mode 0; its first messages are written per row by the backend.
14
16
 
15
17
  ## Execution Modes
16
18
 
17
19
  ### Mode 0: Message Drafting Branch
18
20
 
19
21
  If you are the main task fulfilling a create-campaign request, you remain the
20
- campaign parent while drafting inline. Loading generate-messages or Conversation
21
- Chess does not turn you into the read-only scout. Only an actually delegated
22
+ campaign parent while drafting inline. Loading generate-messages or
23
+ draft-message does not turn you into the read-only scout. Only an actually delegated
22
24
  scout returns its recommendation without campaign writes. As the parent, use
23
25
  the existing `update_campaign` active and ready handoff below, then show the
24
26
  recommendation for review. Complete that durable handoff before your final ready
@@ -37,7 +39,7 @@ Missing saved filter rubrics does not block this branch: the parent may still
37
39
  be saving filters. Keep the first valid recommendation usable when only later
38
40
  filter/enrichment detail changes; an enriched rewrite needs explicit opt-in.
39
41
 
40
- Use the attested campaign/client/offer basis and the Chess loading path below.
42
+ Use the attested campaign/client/offer basis and the draft-message loading path below.
41
43
  Mode 0 does not require a connected senderId: sender selection belongs to
42
44
  Settings after message approval. Do not call get_sender/list_senders during
43
45
  create-campaign message review. Use supplied scoped company/default facts
@@ -97,7 +99,7 @@ An approved literal template is rendered by the existing deterministic owner;
97
99
  do not generate replacement copy, replace its approved claims or use a stale
98
100
  cached draft instead. Template tokens may be filled only within their approved
99
101
  semantics. Explicit operator revision is a proposed change until its existing
100
- approval owner accepts it. New unapproved recommendations use Chess.
102
+ approval owner accepts it. New unapproved recommendations use draft-message.
101
103
 
102
104
  Draft one row before scaling. Show the message; save to an empty message cell
103
105
  only within the caller's requested drafting scope and report “Draft saved (not
@@ -179,8 +181,8 @@ Without that permission, use honest present reactions and general humor.
179
181
 
180
182
  ## Reference Asset Loading
181
183
 
182
- 1. Load `get_subskill_prompt({subskillName:"conversation-chess"})` completely.
183
- 2. Through `get_subskill_asset`, load conversation-chess's
184
+ 1. Load `get_subskill_prompt({subskillName:"draft-message"})` completely.
185
+ 2. Through `get_subskill_asset`, load draft-message's
184
186
  `core/input-contract.md` completely.
185
187
  3. Select the actual workKind and load its guide/examples named by the root:
186
188
  OPENER: `modes/opener.md`, `references/openers.md` and `references/rapport.md`;
@@ -201,13 +203,13 @@ Load assets through MCP, not repository/plugin-cache/local file paths. Missing
201
203
  required assets returns existing `blocked` / `retry-needed`; do not draft from
202
204
  memory or invent a native schema field. Track exact loaded IDs internally.
203
205
  No mandatory old gold-standard examples, cleanup pack, parallel critics or
204
- multi-angle finalizer applies to Chess. If the user explicitly supplies a
206
+ multi-angle finalizer applies to draft-message. If the user explicitly supplies a
205
207
  specific approved template or different writing instruction, preserve it
206
208
  within the same factual, scope and approval boundaries.
207
209
 
208
210
  ## Draft And Check Once
209
211
 
210
- Follow the selected Chess situation. Confirm, reveal something relevant, react,
212
+ Follow the selected draft-message situation. Confirm, reveal something relevant, react,
211
213
  answer, clarify or close as appropriate; no universal sentence/bubble count,
212
214
  forced question, product explanation or CTA. Pay the latest owed answer before
213
215
  advancing. Keep human and business topics available without forcing both into
@@ -240,7 +242,7 @@ senders, template text cannot assume one person's story/post ownership. Resolve
240
242
  that at the actual row sender or choose a portable factual shape.
241
243
 
242
244
  For offline `message-validation.md`, record Status, Mode, Lead Sample Basis,
243
- current sender/offer sources, selected Chess mode/example IDs, supported/missing
245
+ current sender/offer sources, selected draft-message mode/example IDs, supported/missing
244
246
  facts, the rendered sample messages, token rules when relevant, Findings and
245
247
  Recommendation. Distinguish illustrative examples from observed responses.
246
248
  Do not require candidate permutations, scores from imaginary agents or a long
@@ -823,6 +823,13 @@ process lives. If a server restart reports that retained attention is missing,
823
823
  stop with `continuation_reconciliation_required` and the exact scope and last
824
824
  receipt; do not invent a replacement run or claim the prior effect failed.
825
825
  Never treat a timeout as zero effect.
826
+ A result carrying `recoveredFromError` means the continuation's work failed,
827
+ the MCP re-observed once, and the world had moved: handle that result by its
828
+ own kind and name the error in the final report. A thrown error is not a
829
+ terminal: the MCP still holds the run's current credential, so call
830
+ `refill_v3_advance` once more with the identical workspace, scope, campaignId,
831
+ and yolo grant. Report a blocker only if that fresh call fails with the same
832
+ error.
826
833
  Continue the authorized refill across every connected sender and requested
827
834
  lane until the coordinator returns row-complete terminal evidence. Preserve the
828
835
  rubric, message, caps, and exclusions; pending work needs no renewed approval.
@@ -456,6 +456,13 @@ Each call answers with exactly one of six results:
456
456
  restarted MCP reports missing retained attention, stop with
457
457
  `continuation_reconciliation_required`, the exact scope, and the last receipt;
458
458
  do not open a replacement run for an uncertain effect.
459
+ A result carrying `recoveredFromError` means the continuation's work failed,
460
+ the MCP re-observed once, and the world had moved: handle that result by its
461
+ own kind and name the error in the final report. A thrown error is not a
462
+ terminal: the MCP still holds the run's current credential, so call
463
+ `refill_v3_advance` once more with the identical workspace, scope,
464
+ campaignId, and yolo grant. Report a blocker only if that fresh call fails
465
+ with the same error.
459
466
  Interpret its world wrappers
460
467
  by their outer kind: `world_terminal` means `advanceResult` is already the
461
468
  canonical `awaiting_external_change`, `complete`, or `blocked` terminal, so
@@ -29,7 +29,7 @@ Optional from the invoking prompt: workspace (default: active workspace), Slack
29
29
  :fire: *Wins this week*
30
30
  • *{Name}* ({short title}, @ {Company}, {size} staff) — _"{their words, ≤140 chars}"_
31
31
 
32
- :speech_balloon: *Conversations ready for your reply*
32
+ :speech_balloon: *Replies waiting on you*
33
33
  • *{Name}* ({context}) — _"{quote}"_
34
34
 
35
35
  :calendar: *Already working on next week*