@sellable/mcp 0.1.65 → 0.1.66

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sellable/mcp",
3
- "version": "0.1.65",
3
+ "version": "0.1.66",
4
4
  "type": "module",
5
5
  "description": "Sellable MCP server for Claude Code and Codex campaign workflows",
6
6
  "main": "dist/index.js",
@@ -9,7 +9,7 @@ visibility: internal
9
9
  <role>
10
10
  You are the create-campaign-v2 orchestrator. Your job is to execute the
11
11
  configured `core/flow.v2.json` state machine from scratch: (1) interview the
12
- user and create `brief-v1`, (2) validate the chained Phase 84 draft artifacts,
12
+ user and create `brief.md`, (2) validate the chained Phase 84 draft artifacts,
13
13
  (3) run a message-review gate, show the user an approval packet and commit
14
14
  gate, and (4) if the user
15
15
  approves, atomically mint a real `CampaignOffer` and hand off to the bounded
@@ -34,8 +34,8 @@ The JSON flow is the source of truth for stage order, `requiredArtifacts`,
34
34
  replace them.
35
35
 
36
36
  Each stage writes its own artifact into the draft directory before the next
37
- stage starts. `brief-v1.md` is the customer-facing brief output; `brief.md` is
38
- the canonical downstream campaign thesis input.
37
+ stage starts. `brief.md` is the single customer-facing brief and canonical
38
+ downstream campaign thesis input.
39
39
 
40
40
  After validation artifacts are complete, show the user a commit gate with 6
41
41
  choices (approve / revise-brief / revise-leads / revise-rubric /
@@ -51,7 +51,6 @@ Validated draft directory:
51
51
 
52
52
  ```text
53
53
  .sellable/create-campaign-v2/drafts/{workspace-slug}/{campaign-slug}/
54
- brief-v1.md
55
54
  brief.md
56
55
  lead-review.md
57
56
  lead-sample.json
@@ -362,6 +361,10 @@ me`, `I’ll paste a different sender profile`, and `Other / custom`.
362
361
  Approval options should refer to what the user just read, e.g. `Approve this
363
362
  brief`, `Revise target`, `Revise offer/proof`, and `Other / custom`.
364
363
  Include an `Open artifact:` link to `brief.md` before the approval question.
364
+ The visible brief must come before local persistence chrome. After the brief
365
+ is synthesized, render the approval-ready brief in chat before running visible
366
+ `mkdir`, `Write`, artifact-copy, or similar local draft setup. File/folder
367
+ creation is not the user's value moment; the brief is.
365
368
 
366
369
  - After the brief is approved or auto-confirmed, show the next progress line:
367
370
  `Cool. Now I'm going to find people who are both a good fit and likely to
@@ -390,13 +393,13 @@ should test for this campaign. Those can run in parallel and usually take
390
393
 
391
394
  - In hosted/rehearsal runs, `Bash` is only for safe local draft-directory
392
395
  housekeeping before approval: `mkdir`, `ls`, `find`, `test`, `pwd`, `echo`,
393
- `cat`, or copying `brief-v1.md` to `brief.md` inside the repo. Do not use
396
+ or `cat` inside the repo. Do not use
394
397
  Bash to run interpreters/scripts (`python`, `node`, `npm`, `pnpm`, `yarn`,
395
398
  `npx`), call APIs, query databases, inspect prompt dumps, run git, or
396
399
  synthesize artifact content. Use `Read`/`Write`/`Edit` for artifact files and
397
400
  MCP tools for product actions.
398
- - `brief-v1.md` is the user-facing brief. `brief.md` is the stable downstream
399
- input and remains the thesis source.
401
+ - `brief.md` is the single user-facing brief and stable downstream thesis
402
+ source.
400
403
  - `lead-review.md` and `lead-sample.json` are the required outputs of `find leads`.
401
404
  - `lead-filter.md` is the primary output of `filter leads`.
402
405
  - `rubric.json` is optional and secondary to `lead-filter.md`.
@@ -12,7 +12,7 @@
12
12
  ],
13
13
  "events": [
14
14
  "bootstrap_complete",
15
- "brief_v1_ready",
15
+ "brief_ready",
16
16
  "source_intake_ready",
17
17
  "user_brief_confirmed",
18
18
  "lead_review_ready",
@@ -139,7 +139,7 @@
139
139
  "campaignBrief": "~1-2 min"
140
140
  },
141
141
  "forbiddenWording": [
142
- "brief-v1.md",
142
+ "brief.md",
143
143
  "lead-review.md",
144
144
  "lead-sample.json",
145
145
  "message-validation.md"
@@ -150,14 +150,24 @@
150
150
  "target": "create-campaign-brief"
151
151
  },
152
152
  {
153
- "action": "write_artifact",
154
- "artifact": "brief-v1.md"
153
+ "action": "render_brief_preview_before_artifact_write",
154
+ "requiredVisibleContent": [
155
+ "Campaign brief",
156
+ "Decision",
157
+ "Target",
158
+ "Pain",
159
+ "Offer",
160
+ "Proof",
161
+ "Lead plan",
162
+ "Risks",
163
+ "After approval"
164
+ ],
165
+ "mustRunBefore": ["write_artifact", "Bash", "mkdir"],
166
+ "chatRenderRule": "After synthesizing the brief, render the approval-ready brief in chat before any visible local folder creation, file write, or artifact copy. The user should see useful brief content before local persistence chrome. Do not ask the user to approve a hidden artifact."
155
167
  },
156
168
  {
157
- "action": "copy_artifact",
158
- "from": "brief-v1.md",
159
- "to": "brief.md",
160
- "reason": "brief.md remains the canonical downstream artifact name"
169
+ "action": "write_artifact",
170
+ "artifact": "brief.md"
161
171
  },
162
172
  {
163
173
  "action": "ask_source_intake_after_strategy_batch",
@@ -183,7 +193,7 @@
183
193
  }
184
194
  ],
185
195
  "requiredArtifacts": [],
186
- "producesArtifacts": ["brief-v1.md", "brief.md"],
196
+ "producesArtifacts": ["brief.md"],
187
197
  "allowedTools": [
188
198
  "get_subskill_prompt",
189
199
  "get_subskill_asset",
@@ -211,9 +221,9 @@
211
221
  "start_campaign"
212
222
  ],
213
223
  "watchRequired": false,
214
- "waitFor": ["brief_v1_ready", "confirm_with_user"],
224
+ "waitFor": ["brief_ready", "confirm_with_user"],
215
225
  "transitions": {
216
- "brief_v1_ready": "brief-review",
226
+ "brief_ready": "brief-review",
217
227
  "confirm_with_user": "brief-review"
218
228
  },
219
229
  "optionalProducesArtifacts": ["lead-source-intake.json"]
@@ -224,7 +234,7 @@
224
234
  "onEnter": [
225
235
  {
226
236
  "action": "show_brief_summary",
227
- "artifact": "brief-v1.md"
237
+ "artifact": "brief.md"
228
238
  },
229
239
  {
230
240
  "action": "render_brief_approval_checkpoint",
@@ -243,7 +253,7 @@
243
253
  "then I will find good-fit leads"
244
254
  ],
245
255
  "minimumVisibleBriefDetail": "full_readable_brief_before_question",
246
- "requiredArtifactLinks": ["brief-v1.md", "brief.md"],
256
+ "requiredArtifactLinks": ["brief.md"],
247
257
  "artifactLinkTiming": "before_approval_question",
248
258
  "avoidQuestionWhenOnlyUsefulAnswerIs": "looks good"
249
259
  },
@@ -257,7 +267,7 @@
257
267
  }
258
268
  }
259
269
  ],
260
- "requiredArtifacts": ["brief-v1.md", "brief.md"],
270
+ "requiredArtifacts": ["brief.md"],
261
271
  "producesArtifacts": [],
262
272
  "allowedTools": [
263
273
  "AskUserQuestion",
@@ -326,7 +336,7 @@
326
336
  "artifacts": ["lead-review.md", "lead-sample.json"]
327
337
  }
328
338
  ],
329
- "requiredArtifacts": ["brief-v1.md", "brief.md"],
339
+ "requiredArtifacts": ["brief.md"],
330
340
  "producesArtifacts": ["lead-review.md", "lead-sample.json"],
331
341
  "allowedTools": [
332
342
  "get_subskill_prompt",
@@ -52,7 +52,7 @@ gate is the only mandatory pre-mint approval gate.
52
52
  The minimum pre-approval chain is:
53
53
 
54
54
  ```text
55
- brief-v1.md / brief.md
55
+ brief.md
56
56
  lead-review.md
57
57
  lead-sample.json
58
58
  lead-filter.md