@elitedcs/ghl-mcp 3.83.5 → 3.83.6

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/CHANGELOG.md CHANGED
@@ -2,6 +2,28 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 3.83.6 — what a design run actually costs you, measured
6
+
7
+ 3.83.5 gave a running job a clock. This gives it an honest number on it.
8
+
9
+ How long a run takes was written by hand in three places and every one was wrong.
10
+ The brand page said a deck takes "roughly ten minutes". The run API said "twenty
11
+ minutes or more". The clock added in 3.83.5 said "ten to twenty". Nobody had ever
12
+ timed one.
13
+
14
+ Two runs have now been measured. A six-slide deck took 12 minutes 39 seconds and
15
+ $1.74 for a single pass. A conversion page on a real brand took 26 minutes and
16
+ $3.75 across three. So a pass is 9 to 13 minutes and $1.25 to $1.75, and a run may
17
+ use three of them.
18
+
19
+ That sentence now lives in one file and every screen reads it, so the three cannot
20
+ drift apart again.
21
+
22
+ **The cost is now stated before you press the button, not discovered afterwards.**
23
+ These runs use your own Claude, never ours. On a Max plan that is usage rather than
24
+ a bill, which is exactly why the figure belongs on the screen: on pay as you go it
25
+ is real money, and you should know roughly what a button costs before you press it.
26
+
5
27
  ## 3.83.5 — the brand page's buttons work, and a run tells you it is working
6
28
 
7
29
  If you use Design Studio, every button on a brand's own page has been dead since
package/README.md CHANGED
@@ -897,7 +897,7 @@ Built by **[Elite DCs, LLC](https://elitedcs.com)** — a digital marketing and
897
897
 
898
898
  **Tech stack:** TypeScript, Node.js, esbuild, MCP SDK, Zod, GHL API v2, Firebase Auth
899
899
 
900
- **Version:** 3.83.5
900
+ **Version:** 3.83.6
901
901
 
902
902
  ---
903
903
 
package/dist/index.js CHANGED
@@ -27187,6 +27187,20 @@ var init_run_jobs = __esm({
27187
27187
  }
27188
27188
  });
27189
27189
 
27190
+ // src/command-os/design/run-expectations.ts
27191
+ var RUN_MAX_PASSES, RUN_PASS_MINUTES, RUN_PASS_COST, RUN_TOTAL_MINUTES, RUN_TOTAL_COST, RUN_EXPECTATION;
27192
+ var init_run_expectations = __esm({
27193
+ "src/command-os/design/run-expectations.ts"() {
27194
+ "use strict";
27195
+ RUN_MAX_PASSES = 3;
27196
+ RUN_PASS_MINUTES = "9 to 13 minutes";
27197
+ RUN_PASS_COST = "$1.25 to $1.75";
27198
+ RUN_TOTAL_MINUTES = "25 to 40 minutes";
27199
+ RUN_TOTAL_COST = "about $5";
27200
+ RUN_EXPECTATION = `Each pass takes ${RUN_PASS_MINUTES} and costs ${RUN_PASS_COST} of your own Claude usage, and a run may take up to ${RUN_MAX_PASSES} passes. Allow ${RUN_TOTAL_MINUTES} and up to ${RUN_TOTAL_COST}.`;
27201
+ }
27202
+ });
27203
+
27190
27204
  // src/run-cost.ts
27191
27205
  function runCostPath() {
27192
27206
  return path18.join(appDataDir(), "command-os-run-cost.jsonl");
@@ -28591,7 +28605,7 @@ var require_package = __commonJS({
28591
28605
  "package.json"(exports2, module2) {
28592
28606
  module2.exports = {
28593
28607
  name: "@elitedcs/ghl-mcp",
28594
- version: "3.83.5",
28608
+ version: "3.83.6",
28595
28609
  mcpName: "io.github.drjerryrelth/ghl-command",
28596
28610
  description: "GoHighLevel MCP Server for Claude. 250 tools \u2014 full CRM, automation, marketing control, account-wide workflow audit, live funnel-capture verification, and the only programmatic GHL workflow builder, now multi-tenant across client accounts.",
28597
28611
  main: "dist/index.js",
@@ -32369,7 +32383,7 @@ ${d.voice.samples.length ? `<h2>Voice</h2><ul>${d.voice.samples.map((s) => `<li>
32369
32383
  </div>
32370
32384
  ${opts.screenshot ? `<h2>Their site, as rendered</h2><img class="shot" src="/brand/${encodeURIComponent(d.slug)}/screenshot.png" alt="Screenshot of ${esc5(d.name)}'s website">` : ""}
32371
32385
  <h2>Make something in this brand</h2>
32372
- <p class="small">Runs on <b>your own Claude</b>, on this computer \u2014 never our key. A deck takes roughly ten minutes, a page twenty or more; the run keeps going if you close this tab. Write the headline and the points you want made, not instructions.</p>
32386
+ <p class="small">Runs on <b>your own Claude</b>, on this computer, never our key. ${esc5(RUN_EXPECTATION)} The run keeps going if you close this tab. Write the headline and the points you want made, not instructions.</p>
32373
32387
  <form id="make"><div class="two">
32374
32388
  <div><label for="mk-medium">What</label><select id="mk-medium"><option value="deck">A deck</option><option value="site">A landing page</option><option value="report">A report</option></select></div>
32375
32389
  <div><label for="mk-slides">Slides (a deck only)</label><input id="mk-slides" type="number" min="1" max="40" value="6"></div>
@@ -32398,6 +32412,7 @@ ${opts.dir ? `<p class="small">Stored at ${esc5(opts.dir)}</p>` : ""}
32398
32412
  ${foot(SHELL_JS(opts.seatToken ?? "") + `
32399
32413
  (function(){
32400
32414
  var poll=null,runId=null,started=0,ticker=null,passes=0;
32415
+ var EXPECT=${scriptJson(RUN_EXPECTATION)};
32401
32416
  function stopPolling(){if(poll){clearInterval(poll);poll=null}if(ticker){clearInterval(ticker);ticker=null}}
32402
32417
  function elapsed(ms){var s=Math.floor(ms/1000),m=Math.floor(s/60);s=s%60;return m?(m+"m "+(s<10?"0":"")+s+"s"):(s+"s")}
32403
32418
  /* The run prints NOTHING while Claude writes - it answers in one go, so the log
@@ -32407,7 +32422,7 @@ function elapsed(ms){var s=Math.floor(ms/1000),m=Math.floor(s/60);s=s%60;return
32407
32422
  from the child process, and it ticks every second, not every poll. */
32408
32423
  function tick(){
32409
32424
  if(!started)return;
32410
- say("mk-status","Working on your Claude: "+elapsed(Date.now()-started)+" so far"+(passes?(", on pass "+(passes+1)):"")+". Claude writes the whole file in one answer, so nothing appears below until a pass finishes. Ten to twenty minutes is normal. Closing this tab does not stop it.");
32425
+ say("mk-status","Working on your Claude: "+elapsed(Date.now()-started)+" so far"+(passes?(", on pass "+(passes+1)):"")+". Claude writes the whole file in one answer, so nothing appears below until a pass finishes. "+EXPECT+" Closing this tab does not stop it.");
32411
32426
  }
32412
32427
  function show(t){var el=document.getElementById("mk-log");el.hidden=false;el.textContent=t}
32413
32428
  document.getElementById("make").addEventListener("submit",async function(e){
@@ -32453,6 +32468,7 @@ var esc5, STYLE, SHELL_JS, foot;
32453
32468
  var init_brand_page = __esm({
32454
32469
  "src/command-os/design/brand-page.ts"() {
32455
32470
  "use strict";
32471
+ init_run_expectations();
32456
32472
  init_fonts();
32457
32473
  init_cockpit_shell();
32458
32474
  init_script_json();
@@ -36536,7 +36552,7 @@ async function runDashboard(argv) {
36536
36552
  }
36537
36553
  const job = startDesignRun(checked.value);
36538
36554
  res.writeHead(200, { "Content-Type": "application/json" });
36539
- res.end(JSON.stringify({ ok: true, id: job.id, outDir: job.outDir, note: "Started on your own Claude. This takes twenty minutes or more; poll /api/design/run?id= for progress." }));
36555
+ res.end(JSON.stringify({ ok: true, id: job.id, outDir: job.outDir, note: `Started on your own Claude. ${RUN_EXPECTATION} Poll /api/design/run?id= for progress.` }));
36540
36556
  } catch (e) {
36541
36557
  res.writeHead(400, { "Content-Type": "application/json" });
36542
36558
  res.end(JSON.stringify({ ok: false, error: e.message }));
@@ -37294,6 +37310,7 @@ var init_dashboard = __esm({
37294
37310
  init_claude_cli();
37295
37311
  init_token_registry();
37296
37312
  init_run_jobs();
37313
+ init_run_expectations();
37297
37314
  init_stage_runner();
37298
37315
  init_account_rules();
37299
37316
  init_claude_call();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elitedcs/ghl-mcp",
3
- "version": "3.83.5",
3
+ "version": "3.83.6",
4
4
  "mcpName": "io.github.drjerryrelth/ghl-command",
5
5
  "description": "GoHighLevel MCP Server for Claude. 250 tools — full CRM, automation, marketing control, account-wide workflow audit, live funnel-capture verification, and the only programmatic GHL workflow builder, now multi-tenant across client accounts.",
6
6
  "main": "dist/index.js",