@apex-inc/mcp-server 0.32.0 → 0.34.0
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/README.md +19 -18
- package/dist/api-client.d.ts +5 -0
- package/dist/api-client.d.ts.map +1 -1
- package/dist/api-client.js +40 -24
- package/dist/api-client.js.map +1 -1
- package/dist/conflict-advisory.d.ts +29 -0
- package/dist/conflict-advisory.d.ts.map +1 -0
- package/dist/conflict-advisory.js +48 -0
- package/dist/conflict-advisory.js.map +1 -0
- package/dist/index.js +8 -5
- package/dist/index.js.map +1 -1
- package/dist/live-test-guard.d.ts +1 -0
- package/dist/live-test-guard.d.ts.map +1 -1
- package/dist/live-test-guard.js +4 -3
- package/dist/live-test-guard.js.map +1 -1
- package/dist/prompts.d.ts.map +1 -1
- package/dist/prompts.js +5 -7
- package/dist/prompts.js.map +1 -1
- package/dist/setup-catchup-tools.d.ts.map +1 -1
- package/dist/setup-catchup-tools.js +15 -3
- package/dist/setup-catchup-tools.js.map +1 -1
- package/dist/smoke-tools.d.ts +56 -0
- package/dist/smoke-tools.d.ts.map +1 -0
- package/dist/smoke-tools.js +261 -0
- package/dist/smoke-tools.js.map +1 -0
- package/dist/tool-catalog.d.ts +10 -0
- package/dist/tool-catalog.d.ts.map +1 -0
- package/dist/tool-catalog.js +36 -0
- package/dist/tool-catalog.js.map +1 -0
- package/dist/tool-groups.d.ts +5 -0
- package/dist/tool-groups.d.ts.map +1 -0
- package/dist/tool-groups.js +206 -0
- package/dist/tool-groups.js.map +1 -0
- package/dist/tool-shared.d.ts +300 -0
- package/dist/tool-shared.d.ts.map +1 -0
- package/dist/tool-shared.js +319 -0
- package/dist/tool-shared.js.map +1 -0
- package/dist/tools/accounts.d.ts +124 -0
- package/dist/tools/accounts.d.ts.map +1 -0
- package/dist/tools/accounts.js +99 -0
- package/dist/tools/accounts.js.map +1 -0
- package/dist/tools/adoption.d.ts +499 -0
- package/dist/tools/adoption.d.ts.map +1 -0
- package/dist/tools/adoption.js +447 -0
- package/dist/tools/adoption.js.map +1 -0
- package/dist/tools/context.d.ts +216 -0
- package/dist/tools/context.d.ts.map +1 -0
- package/dist/tools/context.js +328 -0
- package/dist/tools/context.js.map +1 -0
- package/dist/tools/experiments.d.ts +1066 -0
- package/dist/tools/experiments.d.ts.map +1 -0
- package/dist/tools/experiments.js +2090 -0
- package/dist/tools/experiments.js.map +1 -0
- package/dist/tools/letters.d.ts +1107 -0
- package/dist/tools/letters.d.ts.map +1 -0
- package/dist/tools/letters.js +1324 -0
- package/dist/tools/letters.js.map +1 -0
- package/dist/tools/measurement.d.ts +886 -0
- package/dist/tools/measurement.d.ts.map +1 -0
- package/dist/tools/measurement.js +1353 -0
- package/dist/tools/measurement.js.map +1 -0
- package/dist/tools/partners.d.ts +364 -0
- package/dist/tools/partners.d.ts.map +1 -0
- package/dist/tools/partners.js +199 -0
- package/dist/tools/partners.js.map +1 -0
- package/dist/tools.d.ts +3161 -2826
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +26 -6133
- package/dist/tools.js.map +1 -1
- package/package.json +3 -2
- package/skills/apex-communications/SKILL.md +5 -5
- package/skills/apex-experimentation/SKILL.md +11 -14
- package/skills/apex-growth-intelligence/SKILL.md +1 -1
- package/skills/apex-integration-cookbook/SKILL.md +1 -1
package/README.md
CHANGED
|
@@ -1,44 +1,45 @@
|
|
|
1
1
|
# @apex-inc/mcp-server
|
|
2
2
|
|
|
3
|
-
MCP server for Apex
|
|
3
|
+
MCP server for Apex. Your coding agent talks to the same Apex the dashboard uses.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Docs: [app.apex.inc/docs/mcp](https://app.apex.inc/docs/mcp/overview)
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
## Install from Apex
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
1. Open **Settings → AI Agents**.
|
|
10
|
+
2. Leave **Device flow** selected.
|
|
11
|
+
3. Click **Install in Cursor** or **Install in VS Code**.
|
|
10
12
|
|
|
11
|
-
|
|
13
|
+
No key goes in the file. The first Apex tool call prints an approval link.
|
|
12
14
|
|
|
13
|
-
|
|
14
|
-
npm install @apex-inc/mcp-server
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
## Configure
|
|
15
|
+
## Manual config
|
|
18
16
|
|
|
19
|
-
Add to `.cursor/mcp.json` (or your MCP client's equivalent)
|
|
17
|
+
Add to `.cursor/mcp.json` (or your MCP client's equivalent). Those `npx` arguments are required.
|
|
20
18
|
|
|
21
19
|
```json
|
|
22
20
|
{
|
|
23
21
|
"mcpServers": {
|
|
24
22
|
"apex": {
|
|
25
23
|
"command": "npx",
|
|
26
|
-
"args": ["@apex-inc/mcp-server"],
|
|
24
|
+
"args": ["-y", "-p", "@apex-inc/mcp-server", "mcp-server"],
|
|
27
25
|
"env": {
|
|
28
|
-
"APEX_URL": "https://
|
|
29
|
-
"
|
|
30
|
-
"APEX_PROJECT_KEY": "your-workspace-key"
|
|
26
|
+
"APEX_URL": "https://app.apex.inc",
|
|
27
|
+
"APEX_WORKSPACE_KEY": "your-workspace-key"
|
|
31
28
|
}
|
|
32
29
|
}
|
|
33
30
|
}
|
|
34
31
|
}
|
|
35
32
|
```
|
|
36
33
|
|
|
34
|
+
For a static key (CI, or a locked-down laptop), add `APEX_API_KEY` (`apex_uk_…` or `apex_sk_…`). Generate it on **Settings → AI Agents**.
|
|
35
|
+
|
|
37
36
|
| Variable | Required | Notes |
|
|
38
37
|
|----------|----------|-------|
|
|
39
|
-
| `APEX_URL` | Yes |
|
|
40
|
-
| `
|
|
41
|
-
| `
|
|
38
|
+
| `APEX_URL` | Yes | `https://app.apex.inc` in production. `http://localhost:3000` for local Apex. |
|
|
39
|
+
| `APEX_WORKSPACE_KEY` | No | Shop this session starts on. `APEX_PROJECT_KEY` is the old name and still works. |
|
|
40
|
+
| `APEX_API_KEY` | No | Omit when you use device flow. |
|
|
41
|
+
|
|
42
|
+
The editor Tools list is the live catalog. Do not treat a short list in a blog post as the count.
|
|
42
43
|
|
|
43
44
|
## Screenshot CLI
|
|
44
45
|
|
package/dist/api-client.d.ts
CHANGED
|
@@ -34,6 +34,11 @@ export declare function getUserContext(): UserContext | undefined;
|
|
|
34
34
|
*/
|
|
35
35
|
export declare function discoverContext(): Promise<string | undefined>;
|
|
36
36
|
export declare function sendStartupPing(): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* Sentence after a 401/403. A missing permission is not a revoked key —
|
|
39
|
+
* telling a shop to mint another key that still cannot see costs is a lie.
|
|
40
|
+
*/
|
|
41
|
+
export declare function authFailureDetail(bodyText: string): string;
|
|
37
42
|
export declare function apiGet<T>(path: string): Promise<T>;
|
|
38
43
|
export declare function apiPost<T>(path: string, body: unknown): Promise<T>;
|
|
39
44
|
/**
|
package/dist/api-client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"AAaA,UAAU,OAAO;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,KAAK,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACxE;AAED,UAAU,WAAW;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,OAAO,EAAE,CAAC;CACjB;AAID,eAAO,MAAM,mBAAmB,sBAAsB,CAAC;AAIvD,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAED,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAI3D;AAED,wBAAgB,2BAA2B,CACzC,GAAG,EAAE;IAAE,OAAO,EAAE;QAAE,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;CAAE,EACtD,IAAI,CAAC,EAAE,OAAO,GACb,IAAI,CAYN;AAED,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,QAEtD;AAED,wBAAgB,kBAAkB,IAAI,MAAM,GAAG,SAAS,CAEvD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,QAMzC;AAED,wBAAgB,YAAY,IAAI,MAAM,GAAG,SAAS,CAEjD;AAED,wBAAgB,cAAc,IAAI,WAAW,GAAG,SAAS,CAExD;AAiBD;;;GAGG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAsCnE;AA2BD,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAiBrD;
|
|
1
|
+
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"AAaA,UAAU,OAAO;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,KAAK,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACxE;AAED,UAAU,WAAW;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,OAAO,EAAE,CAAC;CACjB;AAID,eAAO,MAAM,mBAAmB,sBAAsB,CAAC;AAIvD,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAED,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAI3D;AAED,wBAAgB,2BAA2B,CACzC,GAAG,EAAE;IAAE,OAAO,EAAE;QAAE,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;CAAE,EACtD,IAAI,CAAC,EAAE,OAAO,GACb,IAAI,CAYN;AAED,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,QAEtD;AAED,wBAAgB,kBAAkB,IAAI,MAAM,GAAG,SAAS,CAEvD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,QAMzC;AAED,wBAAgB,YAAY,IAAI,MAAM,GAAG,SAAS,CAEjD;AAED,wBAAgB,cAAc,IAAI,WAAW,GAAG,SAAS,CAExD;AAiBD;;;GAGG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAsCnE;AA2BD,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAiBrD;AAOD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAmC1D;AAgDD,wBAAsB,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAIxD;AAED,wBAAsB,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAQxE;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CAAC,CAAC,EACzC,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,CAAC,CAAC,CAWZ;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG3D;AAED,wBAAsB,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAQzE;AAED;;;;;GAKG;AACH,wBAAsB,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAQvE"}
|
package/dist/api-client.js
CHANGED
|
@@ -147,36 +147,52 @@ export async function sendStartupPing() {
|
|
|
147
147
|
// fire-and-forget
|
|
148
148
|
}
|
|
149
149
|
}
|
|
150
|
+
const REVOKED_KEY_HINT = " Your APEX_API_KEY is missing, invalid, or revoked. Generate a new key" +
|
|
151
|
+
" in Apex → Settings → AI Agents, update APEX_API_KEY in your MCP" +
|
|
152
|
+
" config, then restart the MCP server.";
|
|
153
|
+
/**
|
|
154
|
+
* Sentence after a 401/403. A missing permission is not a revoked key —
|
|
155
|
+
* telling a shop to mint another key that still cannot see costs is a lie.
|
|
156
|
+
*/
|
|
157
|
+
export function authFailureDetail(bodyText) {
|
|
158
|
+
try {
|
|
159
|
+
const parsed = JSON.parse(bodyText);
|
|
160
|
+
if (parsed.error === "missing_scope") {
|
|
161
|
+
const required = parsed.required ?? "";
|
|
162
|
+
if (required === "cost:read" || required === "cost:write") {
|
|
163
|
+
return (" This key cannot see costs. Cost of goods stays off until you" +
|
|
164
|
+
" turn it on for this key in Settings → AI Agents.");
|
|
165
|
+
}
|
|
166
|
+
if (required) {
|
|
167
|
+
return (` This key is not allowed to ${required}. Turn that on for this` +
|
|
168
|
+
" key in Settings → AI Agents.");
|
|
169
|
+
}
|
|
170
|
+
return (" This key is missing a required permission. Turn it on for this" +
|
|
171
|
+
" key in Settings → AI Agents.");
|
|
172
|
+
}
|
|
173
|
+
let detail = "";
|
|
174
|
+
if (parsed.message)
|
|
175
|
+
detail = ` ${parsed.message}`;
|
|
176
|
+
if (parsed.docsUrl)
|
|
177
|
+
detail += ` See ${parsed.docsUrl}.`;
|
|
178
|
+
if (detail)
|
|
179
|
+
return detail;
|
|
180
|
+
}
|
|
181
|
+
catch {
|
|
182
|
+
/* non-JSON body — fall back to the generic hint */
|
|
183
|
+
}
|
|
184
|
+
return REVOKED_KEY_HINT;
|
|
185
|
+
}
|
|
150
186
|
/**
|
|
151
187
|
* Turn a non-OK response into a thrown Error. For 401/403 we surface an
|
|
152
|
-
*
|
|
153
|
-
*
|
|
154
|
-
*
|
|
155
|
-
* how to fix it rather than hitting a dead end. (Auth-experience fix
|
|
156
|
-
* 2026-06-13.) API keys are static credentials — there is nothing to
|
|
157
|
-
* silently refresh; the correct recovery is "regenerate + update config".
|
|
188
|
+
* actionable sentence (structured `{ error, message, docsUrl, required }`
|
|
189
|
+
* when present) instead of a bare status code. (Auth-experience fix
|
|
190
|
+
* 2026-06-13.) A missing permission is not "regenerate the key."
|
|
158
191
|
*/
|
|
159
192
|
async function throwForStatus(method, path, res) {
|
|
160
193
|
const text = await res.text().catch(() => "");
|
|
161
194
|
if (res.status === 401 || res.status === 403) {
|
|
162
|
-
|
|
163
|
-
try {
|
|
164
|
-
const parsed = JSON.parse(text);
|
|
165
|
-
if (parsed.message)
|
|
166
|
-
detail = ` ${parsed.message}`;
|
|
167
|
-
if (parsed.docsUrl)
|
|
168
|
-
detail += ` See ${parsed.docsUrl}.`;
|
|
169
|
-
}
|
|
170
|
-
catch {
|
|
171
|
-
/* non-JSON body — fall back to the generic hint */
|
|
172
|
-
}
|
|
173
|
-
if (!detail) {
|
|
174
|
-
detail =
|
|
175
|
-
" Your APEX_API_KEY is missing, invalid, or revoked. Generate a new key" +
|
|
176
|
-
" in Apex → Settings → AI Agents, update APEX_API_KEY in your MCP" +
|
|
177
|
-
" config, then restart the MCP server.";
|
|
178
|
-
}
|
|
179
|
-
throw new Error(`Apex authentication failed (${res.status}) on ${method} ${path}.${detail}`);
|
|
195
|
+
throw new Error(`Apex authentication failed (${res.status}) on ${method} ${path}.${authFailureDetail(text)}`);
|
|
180
196
|
}
|
|
181
197
|
throw new Error(`${method} ${path} failed (${res.status}): ${text}`);
|
|
182
198
|
}
|
package/dist/api-client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export interface ConflictHit {
|
|
2
|
+
experimentId: string;
|
|
3
|
+
name: string;
|
|
4
|
+
status: string;
|
|
5
|
+
primaryMetricLabel: string;
|
|
6
|
+
location: string;
|
|
7
|
+
confidence: "high" | "low";
|
|
8
|
+
}
|
|
9
|
+
export interface NeighborHit {
|
|
10
|
+
experimentId: string;
|
|
11
|
+
name: string;
|
|
12
|
+
status: string;
|
|
13
|
+
location: string;
|
|
14
|
+
targetAnchor?: string;
|
|
15
|
+
primaryMetricLabel?: string;
|
|
16
|
+
sameMetric?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface ConflictAdvisoryData {
|
|
19
|
+
sameMetric: ConflictHit[];
|
|
20
|
+
differentMetric: ConflictHit[];
|
|
21
|
+
neighbors?: NeighborHit[];
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Author-time conflict guard text. Mix sentence when the same person can see
|
|
25
|
+
* two parts. Keep them apart only on overlap.
|
|
26
|
+
*/
|
|
27
|
+
export declare function renderConflictAdvisory(data: ConflictAdvisoryData, selfId?: string): string;
|
|
28
|
+
export declare function hasConflictAdvisory(data: ConflictAdvisoryData): boolean;
|
|
29
|
+
//# sourceMappingURL=conflict-advisory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conflict-advisory.d.ts","sourceRoot":"","sources":["../src/conflict-advisory.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,KAAK,CAAC;CAC5B;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,WAAW,EAAE,CAAC;IAC1B,eAAe,EAAE,WAAW,EAAE,CAAC;IAC/B,SAAS,CAAC,EAAE,WAAW,EAAE,CAAC;CAC3B;AAMD;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,oBAAoB,EAC1B,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAsDR;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAMvE"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
function placeOf(n) {
|
|
2
|
+
return n.targetAnchor || (n.location.includes("(whole page)") ? "the whole page" : n.location);
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* Author-time conflict guard text. Mix sentence when the same person can see
|
|
6
|
+
* two parts. Keep them apart only on overlap.
|
|
7
|
+
*/
|
|
8
|
+
export function renderConflictAdvisory(data, selfId) {
|
|
9
|
+
const lines = [];
|
|
10
|
+
const overlapIds = new Set([...data.sameMetric, ...data.differentMetric].map((h) => h.experimentId));
|
|
11
|
+
for (const h of data.differentMetric) {
|
|
12
|
+
const soft = h.confidence === "low"
|
|
13
|
+
? " (same data source — only a real conflict if it targets the same screen)"
|
|
14
|
+
: "";
|
|
15
|
+
lines.push(`Someone could see both. "${h.name}" (${h.experimentId}) is live in this same place${soft}.`);
|
|
16
|
+
lines.push(selfId
|
|
17
|
+
? ` → Keep them apart: set_experiment_mutex({ experimentId: "${selfId}", withExperimentId: "${h.experimentId}" }). No one will see both. Each experiment will get fewer people. New visitors only. People already in both stay as they are. Or start this only after "${h.name}" ends.`
|
|
18
|
+
: ` → After creating it, Keep them apart: set_experiment_mutex({ experimentId: "<new id>", withExperimentId: "${h.experimentId}" }). No one will see both. Each experiment will get fewer people. New visitors only. People already in both stay as they are. Or start this only after "${h.name}" ends.`);
|
|
19
|
+
}
|
|
20
|
+
for (const h of data.sameMetric) {
|
|
21
|
+
const soft = h.confidence === "low"
|
|
22
|
+
? " (same data source — only a real conflict if it targets the same screen)"
|
|
23
|
+
: "";
|
|
24
|
+
lines.push(`Someone could see both. "${h.name}" (${h.experimentId}) is live in this same place${soft}.`);
|
|
25
|
+
lines.push(selfId
|
|
26
|
+
? ` → Keep them apart: set_experiment_mutex({ experimentId: "${selfId}", withExperimentId: "${h.experimentId}" }). No one will see both. Each experiment will get fewer people. New visitors only. People already in both stay as they are. Or start this only after "${h.name}" ends.`
|
|
27
|
+
: ` → After creating it, Keep them apart: set_experiment_mutex({ experimentId: "<new id>", withExperimentId: "${h.experimentId}" }). Or start this only after "${h.name}" ends.`);
|
|
28
|
+
lines.push(` You and "${h.name}" are measuring the same thing. If you want one clean answer, put both changes in one experiment, or wait until "${h.name}" ends.`);
|
|
29
|
+
}
|
|
30
|
+
for (const n of data.neighbors ?? []) {
|
|
31
|
+
if (overlapIds.has(n.experimentId))
|
|
32
|
+
continue;
|
|
33
|
+
const section = placeOf(n);
|
|
34
|
+
lines.push(`${n.name} is live on ${section}. The same person can see both, so this number includes that other change. Do not add the two lifts.`);
|
|
35
|
+
if (n.sameMetric) {
|
|
36
|
+
lines.push(`You and ${n.name} are measuring the same thing. If you want one clean answer, put both changes in one experiment, or wait until ${n.name} ends.`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
if (lines.length === 0)
|
|
40
|
+
return "✓ No overlap with live experiments on this surface.";
|
|
41
|
+
return `Conflict guard:\n${lines.join("\n")}`;
|
|
42
|
+
}
|
|
43
|
+
export function hasConflictAdvisory(data) {
|
|
44
|
+
return (data.sameMetric.length > 0 ||
|
|
45
|
+
data.differentMetric.length > 0 ||
|
|
46
|
+
(data.neighbors?.length ?? 0) > 0);
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=conflict-advisory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conflict-advisory.js","sourceRoot":"","sources":["../src/conflict-advisory.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -8,6 +8,7 @@ import { promptDefinitions } from "./prompts.js";
|
|
|
8
8
|
import { sendStartupPing, discoverContext, applyEditorStalePrefix, isEditorStale, } from "./api-client.js";
|
|
9
9
|
import { MCP_SERVER_VERSION } from "./version.js";
|
|
10
10
|
import { advertiseShape, restoreArgs, normalizeInbound } from "./param-casing.js";
|
|
11
|
+
import { advertisedToolNames, annotationsForTool, resolveToolCallName, } from "./tool-catalog.js";
|
|
11
12
|
// Subcommand dispatch: `npx @apex-inc/mcp-server screenshot <opts>` runs the
|
|
12
13
|
// Playwright capture flow (experiment arm or Milestone still) and exits,
|
|
13
14
|
// instead of starting the stdio server.
|
|
@@ -19,7 +20,7 @@ if (process.argv[2] === "screenshot") {
|
|
|
19
20
|
}
|
|
20
21
|
const server = new McpServer({ name: "apex", version: MCP_SERVER_VERSION }, {
|
|
21
22
|
instructions: [
|
|
22
|
-
"You are connected to the Apex growth platform, which manages
|
|
23
|
+
"You are connected to the Apex growth platform, which manages experiments.",
|
|
23
24
|
"Do NOT call list_experiments on ordinary coding, debugging, or product work that does not mention",
|
|
24
25
|
"experiments — do not dump the test list when they are fixing a button.",
|
|
25
26
|
"DO call check_live_tests before you edit a page, commit, or push, even if the user did not mention",
|
|
@@ -30,7 +31,7 @@ const server = new McpServer({ name: "apex", version: MCP_SERVER_VERSION }, {
|
|
|
30
31
|
"or milestone_ids. If a letter, Adaptive Journey, or Milestone is live, stop and ask.",
|
|
31
32
|
"If check_live_tests returns a running high-confidence hit, stop and ask. Do not edit. Do not commit.",
|
|
32
33
|
"Do not pass confirmLiveExperiment, confirmTreatmentChange, or confirmLiveMilestone unless they picked an out.",
|
|
33
|
-
"Three outs: end the
|
|
34
|
+
"Three outs: end the experiment then ship; wait until it ends; or say this change is not this experiment.",
|
|
34
35
|
"When the user does ask about their experiments (e.g. 'what experiments are running?',",
|
|
35
36
|
"'check Apex', 'any experiments ready to graduate?'), use list_experiments to check their status.",
|
|
36
37
|
"If any experiments show PENDING GRADUATION in that context, mention them and offer to",
|
|
@@ -45,7 +46,7 @@ const server = new McpServer({ name: "apex", version: MCP_SERVER_VERSION }, {
|
|
|
45
46
|
"defaulting to 'customer'.",
|
|
46
47
|
"If a tool result starts with APEX_EDITOR_STALE, stop. Do not keep calling Apex tools.",
|
|
47
48
|
"Tell the user to Update Cursor on Set up Apex or AI Agents so it asks before it ships onto a live test.",
|
|
48
|
-
"If get_setup_state shows first-run incomplete, name the
|
|
49
|
+
"If get_setup_state shows first-run incomplete, name the merchant before inventing events.",
|
|
49
50
|
"After ads are connected, make a paid Apex Link before inventing UTMs. Do not stamp conversion ack.",
|
|
50
51
|
].join(" "),
|
|
51
52
|
});
|
|
@@ -53,8 +54,9 @@ const server = new McpServer({ name: "apex", version: MCP_SERVER_VERSION }, {
|
|
|
53
54
|
// Tools are advertised in snake_case (Apex's uniform agent-facing convention);
|
|
54
55
|
// `restoreArgs` hands each handler the source key casing it was authored
|
|
55
56
|
// against, so handler code stays idiomatic + type-checked. See param-casing.ts.
|
|
56
|
-
for (const
|
|
57
|
-
|
|
57
|
+
for (const name of advertisedToolNames(Object.keys(toolDefinitions))) {
|
|
58
|
+
const def = toolDefinitions[name];
|
|
59
|
+
server.tool(name, def.description, advertiseShape(def.schema.shape), annotationsForTool(name), async (args) => {
|
|
58
60
|
try {
|
|
59
61
|
const result = await def.handler(restoreArgs(args, def.schema.shape));
|
|
60
62
|
if (isEditorStale() && result && Array.isArray(result.content)) {
|
|
@@ -106,6 +108,7 @@ async function main() {
|
|
|
106
108
|
m.params?.name &&
|
|
107
109
|
m.params.arguments &&
|
|
108
110
|
typeof m.params.arguments === "object") {
|
|
111
|
+
m.params.name = resolveToolCallName(m.params.name);
|
|
109
112
|
const def = toolDefinitions[m.params.name];
|
|
110
113
|
if (def) {
|
|
111
114
|
m.params.arguments = normalizeInbound(m.params.arguments, def.schema.shape);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EACL,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,aAAa,GACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live-test-guard.d.ts","sourceRoot":"","sources":["../src/live-test-guard.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,MAAM,YAAY,GAAG;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"live-test-guard.d.ts","sourceRoot":"","sources":["../src/live-test-guard.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,MAAM,YAAY,GAAG;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC5C,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClD,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAa1B;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CASrD;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAQvD;AAED,iFAAiF;AACjF,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAE5D;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,MAAM,CAoB/D;AAED,wBAAsB,oBAAoB,CAAC,IAAI,EAAE;IAC/C,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gHAAgH;IAChH,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,WAAW,CAAC;CAC5C,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,CAAC,CAoB1D"}
|
package/dist/live-test-guard.js
CHANGED
|
@@ -42,15 +42,16 @@ export function formatLiveTestStop(hits) {
|
|
|
42
42
|
return `- ${h.name} is live. People are already on this path. A new publish changes what new people get. People already on it stay on the old path.`;
|
|
43
43
|
}
|
|
44
44
|
const files = h.files?.length ? ` Files: ${h.files.join(", ")}.` : "";
|
|
45
|
-
|
|
45
|
+
const place = h.placeLabel ? ` on ${h.placeLabel}` : "";
|
|
46
|
+
return `- ${h.name} is live${place}. People still see both versions. If you change this, those counts can mix. Ask before you edit.${files}`;
|
|
46
47
|
});
|
|
47
48
|
return [
|
|
48
49
|
"Apex STOP. Something live is on what you are about to change.",
|
|
49
50
|
...lines,
|
|
50
51
|
"Do not edit. Do not commit. Do not publish. Ask which they want:",
|
|
51
|
-
"1. End the
|
|
52
|
+
"1. End the experiment (or turn the Milestone off), then change it.",
|
|
52
53
|
"2. Wait until it ends.",
|
|
53
|
-
"3. Say this change is not
|
|
54
|
+
"3. Say this change is not this experiment (they mark that on the experiment page).",
|
|
54
55
|
].join("\n");
|
|
55
56
|
}
|
|
56
57
|
export async function refuseLiveApexObject(opts) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live-test-guard.js","sourceRoot":"","sources":["../src/live-test-guard.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"live-test-guard.js","sourceRoot":"","sources":["../src/live-test-guard.ts"],"names":[],"mappings":"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"}
|
package/dist/prompts.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB;;;;;;;;;wBAYV,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB;;;;;;;;;wBAYV,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;;;;;;;;;;;;;;;;;;wBA8KtB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;;;;;;;;;;;;;;;;;;wBAiDtB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;;;;;;;;;;;;;;;;;;wBAkCtB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;;;;;;;;;;;;;;;;;;wBA0CtB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;;;;;;;;;;;;;;;;;;wBAyBtB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAgDtB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;;;;;;;;;;CAkBzC,CAAC"}
|
package/dist/prompts.js
CHANGED
|
@@ -40,11 +40,9 @@ Every message you write should make it clear the user is working with Apex. Star
|
|
|
40
40
|
|
|
41
41
|
## Architecture
|
|
42
42
|
|
|
43
|
-
|
|
44
|
-
- **SDK mode** (default via MCP): You make real code changes using \`useApexVariant\`. Requires deploy. Pixel-perfect previews. First HTML is flicker-free only when the server already assigned the visitor and passed that arm (\`initialVariant\` or \`<ApexProvider assignments>\`).
|
|
45
|
-
- **Snippet mode**: Runtime DOM manipulation via JS snippet. No code changes, but limited to text swaps. Do not conflate with the React hook. Do not hide the page until assign as the hook promise.
|
|
43
|
+
MCP creates a **code experiment**. Apex returns a recipe. You implement it in this repo with \`useApexVariant\`. Do not offer a mode picker. Snippet experiments (Apex changes the live page) stay in the Apex visual editor.
|
|
46
44
|
|
|
47
|
-
|
|
45
|
+
First HTML is flicker-free only when the server already assigned the visitor and passed that arm (\`initialVariant\` or \`<ApexProvider assignments>\`). The hook alone is not enough. Do not hide the page until assign returns.
|
|
48
46
|
|
|
49
47
|
## Flow — one AskQuestion at a time
|
|
50
48
|
|
|
@@ -131,8 +129,8 @@ AskQuestion:
|
|
|
131
129
|
|
|
132
130
|
If confirmed, call \`create_experiment\` with preview=false.
|
|
133
131
|
|
|
134
|
-
### Step 6: Implement
|
|
135
|
-
The create_experiment response contains
|
|
132
|
+
### Step 6: Implement the recipe
|
|
133
|
+
The create_experiment response contains a recipe. Follow ITS import + steps (web uses \`useApexVariant\` from \`@apex-inc/react\`; mobile uses \`Apex.getVariant()\` from \`@apex-inc/capacitor-plugin\`). In short:
|
|
136
134
|
1. Install + import the resolver named in the recipe's \`sdk\` block
|
|
137
135
|
2. Resolve the variant for \`<experimentId>\` (fires \`experiment_exposure\` automatically). Merchants still write \`const variant = useApexVariant(id)\` and branch. That hook is not flicker-free by itself. On Next / Remix, mint or read \`apex_vid\` on the document request, assign with the same rules as \`GET /api/experiments/{id}/assign\`, and pass that arm: \`useApexVariant(id, { initialVariant, search })\` or \`<ApexProvider assignments>\`. \`{ search }\` also makes \`_apex_preview\` match. If you use Next.js, \`npm install @apex-inc/next @apex-inc/react\`, then \`apexVisitorMiddleware\`, \`assignExperiments\`, \`<ApexProvider assignments>\`. The hook alone is not flicker-free. A client-only SPA cannot know the arm before first HTML. Creating the experiment via MCP does not remove flicker.
|
|
138
136
|
3. Wrap the target content in a variant conditional; fall back to control on null/error
|
|
@@ -212,7 +210,7 @@ AskQuestion:
|
|
|
212
210
|
- Suggest next experiment
|
|
213
211
|
\`\`\`
|
|
214
212
|
|
|
215
|
-
If promoting a winner, the \`promote_winner\` response includes a code cleanup recipe
|
|
213
|
+
If promoting a winner, the \`promote_winner\` response includes a code cleanup recipe. Follow those instructions to graduate the code (remove the useApexVariant conditional, keep only the winner).`,
|
|
216
214
|
},
|
|
217
215
|
},
|
|
218
216
|
],
|
package/dist/prompts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,gBAAgB,EAAE;QAChB,IAAI,EAAE,gBAAgB;QACtB,WAAW,EACT,sFAAsF;QACxF,SAAS,EAAE;YACT;gBACE,IAAI,EAAE,UAAU;gBAChB,WAAW,EAAE,gEAAgE;gBAC7E,QAAQ,EAAE,KAAK;aAChB;SACF;QACD,OAAO,EAAE,CAAC,IAA4B,EAAE,EAAE;YACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC/B,MAAM,KAAK,GAAG,QAAQ;gBACpB,CAAC,CAAC,+BAA+B,QAAQ,OAAO;gBAChD,CAAC,CAAC,EAAE,CAAC;YAEP,OAAO;gBACL,QAAQ,EAAE;oBACR;wBACE,IAAI,EAAE,MAAe;wBACrB,OAAO,EAAE;4BACP,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,GAAG,KAAK
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-catchup-tools.d.ts","sourceRoot":"","sources":["../src/setup-catchup-tools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA2BxB,QAAA,MAAM,SAAS,sEAML,CAAC;AAEX,QAAA,MAAM,iBAAiB,iFAMb,CAAC;AAEX,QAAA,MAAM,eAAe,gFAQX,CAAC;AAkBX,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;mCAUO;YAAE,KAAK,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;;;;;;;;;;;;;;;6EAmC9D;YACD,aAAa,CAAC,EAAE,MAAM,CAAC;YACvB,QAAQ,CAAC,EAAE,CAAC,OAAO,SAAS,EAAE,MAAM,CAAC,CAAC;YACtC,eAAe,CAAC,EAAE,CAAC,OAAO,iBAAiB,EAAE,MAAM,CAAC,CAAC;YACrD,UAAU,CAAC,EAAE,MAAM,CAAC;SACrB;;;;;;;;;;;;;;;;iCA8B8B;YAAE,SAAS,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;;;;;;;;;wCAsBjD;YACD,OAAO,EAAE,KAAK,GAAG,IAAI,CAAC;YACtB,MAAM,CAAC,EAAE,CAAC,OAAO,eAAe,EAAE,MAAM,CAAC,CAAC;SAC3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCAwBkC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAwC9C;YACpB,UAAU,CAAC,EAAE,MAAM,CAAC;YACpB,qBAAqB,CAAC,EAAE,MAAM,CAAC;YAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;YACxB,gBAAgB,CAAC,EAAE,OAAO,CAAC;YAC3B,SAAS,CAAC,EAAE;gBACV,KAAK,EAAE;oBAAE,KAAK,EAAE,MAAM,CAAC;oBAAC,MAAM,EAAE,MAAM,CAAC;oBAAC,WAAW,EAAE,MAAM,CAAA;iBAAE,CAAC;gBAC9D,MAAM,EAAE;oBAAE,KAAK,EAAE,MAAM,CAAC;oBAAC,MAAM,EAAE,MAAM,CAAC;oBAAC,WAAW,EAAE,MAAM,CAAA;iBAAE,CAAC;aAChE,CAAC;SACH;;;;;;;;;;;;;;;;6BA8B0B;YAAE,KAAK,EAAE,MAAM,EAAE,CAAA;SAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"setup-catchup-tools.d.ts","sourceRoot":"","sources":["../src/setup-catchup-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -226,11 +226,23 @@ export const setupCatchupTools = {
|
|
|
226
226
|
},
|
|
227
227
|
},
|
|
228
228
|
get_scoring_model: {
|
|
229
|
-
description: `${APEX} — Read the active scoring weights.
|
|
229
|
+
description: `${APEX} — Read the active scoring weights. If the shop has not saved a model yet, this returns that the vertical preset is still in use — not an error.`,
|
|
230
230
|
schema: z.object({}),
|
|
231
231
|
handler: async () => {
|
|
232
|
-
|
|
233
|
-
|
|
232
|
+
try {
|
|
233
|
+
const data = await apiGet("/api/scoring/models/active");
|
|
234
|
+
return jsonResult(data);
|
|
235
|
+
}
|
|
236
|
+
catch (err) {
|
|
237
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
238
|
+
if (/\(404\)/.test(message) && /scoring\/models\/active/.test(message)) {
|
|
239
|
+
return jsonResult({
|
|
240
|
+
usingPreset: true,
|
|
241
|
+
message: "No saved scoring model. Using the vertical preset.",
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
throw err;
|
|
245
|
+
}
|
|
234
246
|
},
|
|
235
247
|
},
|
|
236
248
|
set_scoring_weights: {
|