@sellable/mcp 0.1.196 → 0.1.197

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/index-dev.js CHANGED
File without changes
package/dist/index.js CHANGED
File without changes
@@ -135,6 +135,7 @@ export interface PostFindLeadsScoutRegistryResponse {
135
135
  }
136
136
  export declare const DEFAULT_SUBSKILL_PROMPT_CHUNK_CHARS = 48000;
137
137
  export declare const MAX_SUBSKILL_PROMPT_CHUNK_CHARS = 48000;
138
+ export declare const ALLOWED_SUBSKILL_PROMPT_NAMES: readonly ["building-gtm-tables", "create-campaign", "create-campaign-brief", "create-campaign-v2", "create-campaign-v2-tail", "create-campaign-v2-validation", "create-post", "create-rubric", "engage", "enrich-prospects", "find-leads", "generate-messages", "interview", "load-voice", "research", "research-prospect", "research-sender", "workflow-sequences"];
138
139
  export declare const promptToolDefinitions: ({
139
140
  name: string;
140
141
  description: string;
@@ -178,6 +179,7 @@ export declare const promptToolDefinitions: ({
178
179
  properties: {
179
180
  subskillName: {
180
181
  type: string;
182
+ enum: readonly ["building-gtm-tables", "create-campaign", "create-campaign-brief", "create-campaign-v2", "create-campaign-v2-tail", "create-campaign-v2-validation", "create-post", "create-rubric", "engage", "enrich-prospects", "find-leads", "generate-messages", "interview", "load-voice", "research", "research-prospect", "research-sender", "workflow-sequences"];
181
183
  description: string;
182
184
  };
183
185
  offset: {
@@ -212,6 +214,7 @@ export declare const promptToolDefinitions: ({
212
214
  properties: {
213
215
  subskillName: {
214
216
  type: string;
217
+ enum: readonly ["building-gtm-tables", "create-campaign", "create-campaign-brief", "create-campaign-v2", "create-campaign-v2-tail", "create-campaign-v2-validation", "create-post", "create-rubric", "engage", "enrich-prospects", "find-leads", "generate-messages", "interview", "load-voice", "research", "research-prospect", "research-sender", "workflow-sequences"];
215
218
  description: string;
216
219
  };
217
220
  assetPath: {
@@ -13,6 +13,29 @@ import { markCreateCampaignPromptLoaded, markResearchPromptLoaded, markSenderRes
13
13
  // ~3s.
14
14
  export const DEFAULT_SUBSKILL_PROMPT_CHUNK_CHARS = 48_000;
15
15
  export const MAX_SUBSKILL_PROMPT_CHUNK_CHARS = 48_000;
16
+ const DEPRECATED_SUBSKILL_PROMPT_REPLACEMENTS = {
17
+ "generate-messages-compact": "generate-messages",
18
+ };
19
+ export const ALLOWED_SUBSKILL_PROMPT_NAMES = [
20
+ "building-gtm-tables",
21
+ "create-campaign",
22
+ "create-campaign-brief",
23
+ "create-campaign-v2",
24
+ "create-campaign-v2-tail",
25
+ "create-campaign-v2-validation",
26
+ "create-post",
27
+ "create-rubric",
28
+ "engage",
29
+ "enrich-prospects",
30
+ "find-leads",
31
+ "generate-messages",
32
+ "interview",
33
+ "load-voice",
34
+ "research",
35
+ "research-prospect",
36
+ "research-sender",
37
+ "workflow-sequences",
38
+ ];
16
39
  export const promptToolDefinitions = [
17
40
  {
18
41
  name: "list_subskill_prompts",
@@ -48,7 +71,8 @@ export const promptToolDefinitions = [
48
71
  properties: {
49
72
  subskillName: {
50
73
  type: "string",
51
- description: "Subskill prompt name (e.g., create-rubric, find-leads)",
74
+ enum: ALLOWED_SUBSKILL_PROMPT_NAMES,
75
+ description: "Subskill prompt name. Use generate-messages for message drafting.",
52
76
  },
53
77
  offset: {
54
78
  type: "number",
@@ -74,6 +98,7 @@ export const promptToolDefinitions = [
74
98
  properties: {
75
99
  subskillName: {
76
100
  type: "string",
101
+ enum: ALLOWED_SUBSKILL_PROMPT_NAMES,
77
102
  description: "Subskill name that owns the asset directory.",
78
103
  },
79
104
  assetPath: {
@@ -372,6 +397,12 @@ function markSubskillPromptLoaded(subskillName) {
372
397
  markResearchPromptLoaded("prospect", "research-prospect");
373
398
  }
374
399
  }
400
+ function rejectDeprecatedSubskillPromptName(subskillName) {
401
+ const replacement = DEPRECATED_SUBSKILL_PROMPT_REPLACEMENTS[subskillName];
402
+ if (!replacement)
403
+ return;
404
+ throw new Error(`Deprecated subskill prompt: ${subskillName}. Use ${replacement}; do not call the deprecated prompt name.`);
405
+ }
375
406
  function readChunkedContent(content, offset, limit, continuation) {
376
407
  const safeOffset = Math.min(Math.max(Number.isFinite(offset) ? Math.floor(offset ?? 0) : 0, 0), content.length);
377
408
  const requestedLimit = Number.isFinite(limit) && limit !== undefined
@@ -409,6 +440,7 @@ function readChunkedContent(content, offset, limit, continuation) {
409
440
  };
410
441
  }
411
442
  export function getSubskillPrompt(subskillName, offset, limit) {
443
+ rejectDeprecatedSubskillPromptName(subskillName);
412
444
  const skill = getSkillByName(subskillName);
413
445
  if (!skill) {
414
446
  throw new Error(`Unknown subskill prompt: ${subskillName}`);
@@ -447,6 +479,7 @@ function resolveSubskillAssetPath(subskillName, assetPath) {
447
479
  return { cleanAssetPath, resolved };
448
480
  }
449
481
  export function getSubskillAsset(subskillName, assetPath, offset, limit) {
482
+ rejectDeprecatedSubskillPromptName(subskillName);
450
483
  if (!getSkillByName(subskillName)) {
451
484
  throw new Error(`Unknown subskill prompt: ${subskillName}`);
452
485
  }
@@ -225,6 +225,7 @@ export declare const allTools: ({
225
225
  properties: {
226
226
  subskillName: {
227
227
  type: string;
228
+ enum: readonly ["building-gtm-tables", "create-campaign", "create-campaign-brief", "create-campaign-v2", "create-campaign-v2-tail", "create-campaign-v2-validation", "create-post", "create-rubric", "engage", "enrich-prospects", "find-leads", "generate-messages", "interview", "load-voice", "research", "research-prospect", "research-sender", "workflow-sequences"];
228
229
  description: string;
229
230
  };
230
231
  offset: {
@@ -259,6 +260,7 @@ export declare const allTools: ({
259
260
  properties: {
260
261
  subskillName: {
261
262
  type: string;
263
+ enum: readonly ["building-gtm-tables", "create-campaign", "create-campaign-brief", "create-campaign-v2", "create-campaign-v2-tail", "create-campaign-v2-validation", "create-post", "create-rubric", "engage", "enrich-prospects", "find-leads", "generate-messages", "interview", "load-voice", "research", "research-prospect", "research-sender", "workflow-sequences"];
262
264
  description: string;
263
265
  };
264
266
  assetPath: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sellable/mcp",
3
- "version": "0.1.196",
3
+ "version": "0.1.197",
4
4
  "type": "module",
5
5
  "description": "Sellable MCP server for Claude Code and Codex campaign workflows",
6
6
  "main": "dist/index.js",
@@ -165,7 +165,8 @@ before approval. Initial shell state is only brief review:
165
165
  `leadSourceProvider`, selected-list, workflow-table, or provider/search state
166
166
  until later approval transitions. Later turns must not print `Watch link:`;
167
167
  update `currentStep` and `watchNarration` so the open app changes live. Never
168
- open a browser or use automation just because a watch link exists.
168
+ call browser-opening tools, shell `open`, Computer Use, or in-app browser
169
+ automation just because a watch link exists.
169
170
 
170
171
  Every watched step switch must call:
171
172
 
@@ -0,0 +1,9 @@
1
+ {
2
+ "parallelMode": "wide",
3
+ "agentCount": 6,
4
+ "maxToolCallsPerAgent": 2,
5
+ "senderMaxAgents": 2,
6
+ "senderMaxToolCallsPerAgent": 3,
7
+ "progressMode": true,
8
+ "debugMode": true
9
+ }