@elitedcs/ghl-mcp 3.91.1 → 3.92.1
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 +37 -0
- package/README.md +4 -4
- package/dist/brain-function.js +18653 -0
- package/dist/capture-helper.js +84 -53
- package/dist/index.js +29571 -16882
- package/guide/guide.html +3 -3
- package/package.json +5 -2
package/dist/capture-helper.js
CHANGED
|
@@ -5,6 +5,14 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
|
5
5
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
6
|
var __getProtoOf = Object.getPrototypeOf;
|
|
7
7
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __esm = (fn, res, err) => function __init() {
|
|
9
|
+
if (err) throw err[0];
|
|
10
|
+
try {
|
|
11
|
+
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
|
|
12
|
+
} catch (e) {
|
|
13
|
+
throw err = [e], e;
|
|
14
|
+
}
|
|
15
|
+
};
|
|
8
16
|
var __copyProps = (to, from, except, desc) => {
|
|
9
17
|
if (from && typeof from === "object" || typeof from === "function") {
|
|
10
18
|
for (let key of __getOwnPropNames(from))
|
|
@@ -22,61 +30,14 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
22
30
|
mod
|
|
23
31
|
));
|
|
24
32
|
|
|
25
|
-
// src/
|
|
26
|
-
var
|
|
27
|
-
|
|
28
|
-
|
|
33
|
+
// src/attestation.ts
|
|
34
|
+
var init_attestation = __esm({
|
|
35
|
+
"src/attestation.ts"() {
|
|
36
|
+
"use strict";
|
|
37
|
+
}
|
|
38
|
+
});
|
|
29
39
|
|
|
30
40
|
// src/credentials-store.ts
|
|
31
|
-
var path = __toESM(require("path"));
|
|
32
|
-
var os = __toESM(require("os"));
|
|
33
|
-
var import_zod = require("zod");
|
|
34
|
-
var APP_NAME = "elitedcs-ghl-mcp";
|
|
35
|
-
var CredentialsSchema = import_zod.z.object({
|
|
36
|
-
license_key: import_zod.z.string().min(1),
|
|
37
|
-
email: import_zod.z.string().email(),
|
|
38
|
-
verified_at: import_zod.z.string().min(1),
|
|
39
|
-
ghl_api_key: import_zod.z.string().min(1),
|
|
40
|
-
ghl_location_id: import_zod.z.string().min(1),
|
|
41
|
-
ghl_company_id: import_zod.z.string().optional(),
|
|
42
|
-
ghl_user_id: import_zod.z.string().optional(),
|
|
43
|
-
ghl_firebase_api_key: import_zod.z.string().optional(),
|
|
44
|
-
ghl_firebase_refresh_token: import_zod.z.string().optional(),
|
|
45
|
-
// Ed25519-signed attestation from elitedcs.com/api/validate-license.
|
|
46
|
-
// v3.24.0+ writes this on every successful online validation; index.ts
|
|
47
|
-
// verifies on startup and refuses to load tools without it (closing the
|
|
48
|
-
// hand-crafted-credentials.json bypass that existed through v3.23.0).
|
|
49
|
-
// Optional in the schema only so files written by earlier versions still
|
|
50
|
-
// parse — index.ts's gate forces a re-validate when the field is missing.
|
|
51
|
-
signed_attestation: import_zod.z.string().optional(),
|
|
52
|
-
/** Stable machine id (2026-07-28). Replaces the hostname-derived
|
|
53
|
-
* fingerprint, which changed with the network on laptops and silently ate
|
|
54
|
-
* install slots. Written once and reused forever. */
|
|
55
|
-
device_id: import_zod.z.string().optional(),
|
|
56
|
-
/** Per-seat cockpit key (2026-08-27, Command OS PRD row 0). The cockpit binds
|
|
57
|
-
* 127.0.0.1, which stops other machines reaching the port but not other
|
|
58
|
-
* PROGRAMS and other browsers on this one — and on a shared team machine that
|
|
59
|
-
* is everybody. Every state-changing cockpit request must carry this value;
|
|
60
|
-
* the served page gets it injected so the operator never types anything.
|
|
61
|
-
* Written once on the first cockpit run, replaced by
|
|
62
|
-
* `ghl-mcp dashboard --rotate-token`. Optional in the schema so files written
|
|
63
|
-
* by earlier versions still parse. NEVER printed, logged or displayed. */
|
|
64
|
-
cockpit_seat_token: import_zod.z.string().optional(),
|
|
65
|
-
/** The operator's OWN Anthropic key (2026-09-05, hub audit). Command OS runs
|
|
66
|
-
* the build stages and Design Studio on the member's Claude account — ours is
|
|
67
|
-
* not on offer — and until now that key had no home in setup at all: it had to
|
|
68
|
-
* be typed into the Claude Desktop settings file, passed to `claude mcp add -e`,
|
|
69
|
-
* or exported in the shell before `dashboard`, and a member who did none of
|
|
70
|
-
* those met a stage that simply failed. Saved here from the cockpit's Your
|
|
71
|
-
* agency screen and folded into the environment the run inherits.
|
|
72
|
-
* NEVER printed, logged or sent back to the page — the screen shows only the
|
|
73
|
-
* last four characters of what is saved. */
|
|
74
|
-
anthropic_api_key: import_zod.z.string().optional(),
|
|
75
|
-
anthropic_key_check: import_zod.z.object({ fingerprint: import_zod.z.string(), at: import_zod.z.string(), ok: import_zod.z.boolean() }).optional(),
|
|
76
|
-
// Desktop OAuth app configuration. Never returned by calendar tools.
|
|
77
|
-
google_oauth_client_id: import_zod.z.string().optional(),
|
|
78
|
-
google_oauth_client_secret: import_zod.z.string().optional()
|
|
79
|
-
});
|
|
80
41
|
function appDataDir() {
|
|
81
42
|
const override = process.env.GHL_MCP_CONFIG_DIR?.trim();
|
|
82
43
|
if (override) {
|
|
@@ -98,8 +59,78 @@ function appDataDir() {
|
|
|
98
59
|
const xdg = process.env.XDG_CONFIG_HOME || path.join(home, ".config");
|
|
99
60
|
return path.join(xdg, APP_NAME);
|
|
100
61
|
}
|
|
62
|
+
var path, os, import_zod, APP_NAME, CredentialsSchema;
|
|
63
|
+
var init_credentials_store = __esm({
|
|
64
|
+
"src/credentials-store.ts"() {
|
|
65
|
+
"use strict";
|
|
66
|
+
path = __toESM(require("path"));
|
|
67
|
+
os = __toESM(require("os"));
|
|
68
|
+
import_zod = require("zod");
|
|
69
|
+
init_attestation();
|
|
70
|
+
APP_NAME = "elitedcs-ghl-mcp";
|
|
71
|
+
CredentialsSchema = import_zod.z.object({
|
|
72
|
+
license_key: import_zod.z.string().min(1),
|
|
73
|
+
email: import_zod.z.string().email(),
|
|
74
|
+
verified_at: import_zod.z.string().min(1),
|
|
75
|
+
ghl_api_key: import_zod.z.string().min(1),
|
|
76
|
+
ghl_location_id: import_zod.z.string().min(1),
|
|
77
|
+
ghl_company_id: import_zod.z.string().optional(),
|
|
78
|
+
ghl_user_id: import_zod.z.string().optional(),
|
|
79
|
+
ghl_firebase_api_key: import_zod.z.string().optional(),
|
|
80
|
+
ghl_firebase_refresh_token: import_zod.z.string().optional(),
|
|
81
|
+
// Ed25519-signed attestation from elitedcs.com/api/validate-license.
|
|
82
|
+
// v3.24.0+ writes this on every successful online validation; index.ts
|
|
83
|
+
// verifies on startup and refuses to load tools without it (closing the
|
|
84
|
+
// hand-crafted-credentials.json bypass that existed through v3.23.0).
|
|
85
|
+
// Optional in the schema only so files written by earlier versions still
|
|
86
|
+
// parse — index.ts's gate forces a re-validate when the field is missing.
|
|
87
|
+
signed_attestation: import_zod.z.string().optional(),
|
|
88
|
+
/** The last signed pass, kept when a "no" wipes signed_attestation (Codex final #2, 2026-10-27).
|
|
89
|
+
* NEVER a license: nothing reads it for tool access. Setup-only startup reads it only to confirm,
|
|
90
|
+
* from a verified signature, that the person on this computer is the license OWNER, the one
|
|
91
|
+
* who may still export or switch off a client brain after a cancel. */
|
|
92
|
+
last_signed_attestation: import_zod.z.string().optional(),
|
|
93
|
+
/** The client brain's admission credential for elitedcs.com/api/license-status (website security review
|
|
94
|
+
* round 4, 2026-10-17): returned by validate-license to an active Command OS owner, replaced on every
|
|
95
|
+
* validation, removed when an answer has none. brain_setup saves it in the member's own Supabase project
|
|
96
|
+
* (BRAIN_LICENSE_ADMISSION). It only lets the brain ASK whether this key is active. Never printed. */
|
|
97
|
+
license_status_admission: import_zod.z.string().optional(),
|
|
98
|
+
/** Stable machine id (2026-07-28). Replaces the hostname-derived
|
|
99
|
+
* fingerprint, which changed with the network on laptops and silently ate
|
|
100
|
+
* install slots. Written once and reused forever. */
|
|
101
|
+
device_id: import_zod.z.string().optional(),
|
|
102
|
+
/** Per-seat cockpit key (2026-08-27, Command OS PRD row 0). The cockpit binds
|
|
103
|
+
* 127.0.0.1, which stops other machines reaching the port but not other
|
|
104
|
+
* PROGRAMS and other browsers on this one — and on a shared team machine that
|
|
105
|
+
* is everybody. Every state-changing cockpit request must carry this value;
|
|
106
|
+
* the served page gets it injected so the operator never types anything.
|
|
107
|
+
* Written once on the first cockpit run, replaced by
|
|
108
|
+
* `ghl-mcp dashboard --rotate-token`. Optional in the schema so files written
|
|
109
|
+
* by earlier versions still parse. NEVER printed, logged or displayed. */
|
|
110
|
+
cockpit_seat_token: import_zod.z.string().optional(),
|
|
111
|
+
/** The operator's OWN Anthropic key (2026-09-05, hub audit). Command OS runs
|
|
112
|
+
* the build stages and Design Studio on the member's Claude account — ours is
|
|
113
|
+
* not on offer — and until now that key had no home in setup at all: it had to
|
|
114
|
+
* be typed into the Claude Desktop settings file, passed to `claude mcp add -e`,
|
|
115
|
+
* or exported in the shell before `dashboard`, and a member who did none of
|
|
116
|
+
* those met a stage that simply failed. Saved here from the cockpit's Your
|
|
117
|
+
* agency screen and folded into the environment the run inherits.
|
|
118
|
+
* NEVER printed, logged or sent back to the page — the screen shows only the
|
|
119
|
+
* last four characters of what is saved. */
|
|
120
|
+
anthropic_api_key: import_zod.z.string().optional(),
|
|
121
|
+
anthropic_key_check: import_zod.z.object({ fingerprint: import_zod.z.string(), at: import_zod.z.string(), ok: import_zod.z.boolean() }).optional(),
|
|
122
|
+
// Desktop OAuth app configuration. Never returned by calendar tools.
|
|
123
|
+
google_oauth_client_id: import_zod.z.string().optional(),
|
|
124
|
+
google_oauth_client_secret: import_zod.z.string().optional()
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
});
|
|
101
128
|
|
|
102
129
|
// src/interactive-capture.ts
|
|
130
|
+
var fs = __toESM(require("fs"));
|
|
131
|
+
var path2 = __toESM(require("path"));
|
|
132
|
+
var import_zod2 = require("zod");
|
|
133
|
+
init_credentials_store();
|
|
103
134
|
function chromeProfileDir() {
|
|
104
135
|
return path2.join(appDataDir(), "chrome-profile");
|
|
105
136
|
}
|