@apex-inc/mcp-server 0.39.0 → 0.41.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 +1 -1
- package/dist/api-client.d.ts +22 -0
- package/dist/api-client.d.ts.map +1 -1
- package/dist/api-client.js +61 -1
- package/dist/api-client.js.map +1 -1
- package/dist/auth.d.ts +22 -0
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +71 -5
- package/dist/auth.js.map +1 -1
- package/dist/base-url.d.ts +8 -0
- package/dist/base-url.d.ts.map +1 -0
- package/dist/base-url.js +10 -0
- package/dist/base-url.js.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/letter-blocks.d.ts +17 -0
- package/dist/letter-blocks.d.ts.map +1 -1
- package/dist/letter-blocks.js +64 -0
- package/dist/letter-blocks.js.map +1 -1
- package/dist/preview-images.d.ts +9 -0
- package/dist/preview-images.d.ts.map +1 -0
- package/dist/preview-images.js +29 -0
- package/dist/preview-images.js.map +1 -0
- package/dist/prompts.d.ts +14 -0
- package/dist/prompts.d.ts.map +1 -1
- package/dist/prompts.js +31 -6
- package/dist/prompts.js.map +1 -1
- package/dist/repo-binding.d.ts +8 -0
- package/dist/repo-binding.d.ts.map +1 -0
- package/dist/repo-binding.js +13 -0
- package/dist/repo-binding.js.map +1 -0
- package/dist/resources.d.ts +13 -0
- package/dist/resources.d.ts.map +1 -1
- package/dist/resources.js +16 -0
- package/dist/resources.js.map +1 -1
- package/dist/setup-catchup-tools.d.ts +283 -5
- package/dist/setup-catchup-tools.d.ts.map +1 -1
- package/dist/setup-catchup-tools.js +348 -13
- package/dist/setup-catchup-tools.js.map +1 -1
- package/dist/setup-checklist.d.ts +68 -0
- package/dist/setup-checklist.d.ts.map +1 -0
- package/dist/setup-checklist.js +128 -0
- package/dist/setup-checklist.js.map +1 -0
- package/dist/setup-flow.d.ts +14 -0
- package/dist/setup-flow.d.ts.map +1 -0
- package/dist/setup-flow.js +52 -0
- package/dist/setup-flow.js.map +1 -0
- package/dist/smoke-tools.d.ts.map +1 -1
- package/dist/smoke-tools.js +2 -0
- package/dist/smoke-tools.js.map +1 -1
- package/dist/tool-groups.d.ts.map +1 -1
- package/dist/tool-groups.js +23 -0
- package/dist/tool-groups.js.map +1 -1
- package/dist/tool-shared.d.ts.map +1 -1
- package/dist/tool-shared.js +11 -4
- package/dist/tool-shared.js.map +1 -1
- package/dist/tools/ad-platforms.d.ts +240 -0
- package/dist/tools/ad-platforms.d.ts.map +1 -0
- package/dist/tools/ad-platforms.js +294 -0
- package/dist/tools/ad-platforms.js.map +1 -0
- package/dist/tools/adoption.d.ts +24 -2
- package/dist/tools/adoption.d.ts.map +1 -1
- package/dist/tools/adoption.js +24 -3
- package/dist/tools/adoption.js.map +1 -1
- package/dist/tools/context.d.ts +10 -0
- package/dist/tools/context.d.ts.map +1 -1
- package/dist/tools/context.js +36 -31
- package/dist/tools/context.js.map +1 -1
- package/dist/tools/experiments.d.ts +2 -2
- package/dist/tools/experiments.d.ts.map +1 -1
- package/dist/tools/experiments.js +2 -2
- package/dist/tools/experiments.js.map +1 -1
- package/dist/tools/letters.d.ts +48 -8
- package/dist/tools/letters.d.ts.map +1 -1
- package/dist/tools/letters.js +59 -5
- package/dist/tools/letters.js.map +1 -1
- package/dist/tools/measurement.d.ts +2 -2
- package/dist/tools/measurement.d.ts.map +1 -1
- package/dist/tools/measurement.js +4 -3
- package/dist/tools/measurement.js.map +1 -1
- package/dist/tools.d.ts +639 -19
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +2 -0
- package/dist/tools.js.map +1 -1
- package/package.json +3 -2
- package/skills/apex-communications/SKILL.md +5 -1
- package/skills/apex-growth-tracking/SKILL.md +1 -0
- package/skills/apex-integration-cookbook/SKILL.md +21 -7
- package/skills/apex-setup/SKILL.md +69 -0
package/README.md
CHANGED
|
@@ -35,7 +35,7 @@ For a static key (CI, or a locked-down laptop), add `APEX_API_KEY` (`apex_uk_…
|
|
|
35
35
|
|
|
36
36
|
| Variable | Required | Notes |
|
|
37
37
|
|----------|----------|-------|
|
|
38
|
-
| `APEX_URL` |
|
|
38
|
+
| `APEX_URL` | No | Defaults to `https://app.apex.inc`. Set `http://localhost:3000` for local Apex. |
|
|
39
39
|
| `APEX_WORKSPACE_KEY` | No | Shop this session starts on. `APEX_PROJECT_KEY` is the old name and still works. |
|
|
40
40
|
| `APEX_API_KEY` | No | Omit when you use device flow. |
|
|
41
41
|
|
package/dist/api-client.d.ts
CHANGED
|
@@ -24,6 +24,19 @@ export declare function noteEditorStaleFromResponse(res: {
|
|
|
24
24
|
};
|
|
25
25
|
}, body?: unknown): void;
|
|
26
26
|
export declare function setActiveWorkspace(workspaceKey: string): void;
|
|
27
|
+
export interface ActiveShop {
|
|
28
|
+
workspace_key: string;
|
|
29
|
+
workspace_name?: string;
|
|
30
|
+
org_id?: string;
|
|
31
|
+
org_name?: string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* The shop the next call writes to, named the way the owner knows it. Names
|
|
35
|
+
* are absent for org-scoped keys, which carry no org graph.
|
|
36
|
+
*/
|
|
37
|
+
export declare function getActiveShop(): ActiveShop | undefined;
|
|
38
|
+
/** Re-read the org graph after creating an organization or workspace. */
|
|
39
|
+
export declare function refreshUserContext(): Promise<void>;
|
|
27
40
|
export declare function getActiveWorkspace(): string | undefined;
|
|
28
41
|
export declare function setActiveOrg(orgId: string): void;
|
|
29
42
|
export declare function getActiveOrg(): string | undefined;
|
|
@@ -34,6 +47,13 @@ export declare function getUserContext(): UserContext | undefined;
|
|
|
34
47
|
*/
|
|
35
48
|
export declare function discoverContext(): Promise<string | undefined>;
|
|
36
49
|
export declare function sendStartupPing(): Promise<void>;
|
|
50
|
+
/**
|
|
51
|
+
* A signed-in person Apex has not let in yet. One sentence and the access
|
|
52
|
+
* page; retrying cannot help, and "regenerate your key" would be a lie.
|
|
53
|
+
*/
|
|
54
|
+
export declare const WAITING_FOR_ACCESS_MESSAGE: string;
|
|
55
|
+
/** Signed in as a person, but no organization: not let in yet. */
|
|
56
|
+
export declare function isWaitingForAccess(): boolean;
|
|
37
57
|
/**
|
|
38
58
|
* Sentence after a 401/403. A missing permission is not a revoked key —
|
|
39
59
|
* telling a shop to mint another key that still cannot see costs is a lie.
|
|
@@ -50,6 +70,8 @@ export declare function apiPost<T>(path: string, body: unknown): Promise<T>;
|
|
|
50
70
|
*/
|
|
51
71
|
export declare function postWithIdempotency<T>(path: string, idempotencyKey: string, body: unknown): Promise<T>;
|
|
52
72
|
export declare function apiDelete(path: string): Promise<void>;
|
|
73
|
+
/** DELETE for routes that answer with what they did (which platforms deleted, which refused). */
|
|
74
|
+
export declare function apiDeleteJson<T>(path: string): Promise<T>;
|
|
53
75
|
export declare function apiPatch<T>(path: string, body: unknown): Promise<T>;
|
|
54
76
|
/**
|
|
55
77
|
* PUT — for routes whose write is a full, idempotent replacement of one
|
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":"
|
|
1
|
+
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"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"}
|
package/dist/api-client.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { MCP_SERVER_VERSION } from "./version.js";
|
|
2
2
|
import { ensureAuth, getAuthToken, reauthAfterFailure, hasStoredCredential, staticApiKey, } from "./auth.js";
|
|
3
|
-
|
|
3
|
+
import { apexBaseUrl } from "./base-url.js";
|
|
4
|
+
const BASE_URL = apexBaseUrl();
|
|
4
5
|
let activeWorkspaceKey = (process.env.APEX_WORKSPACE_KEY || process.env.APEX_PROJECT_KEY);
|
|
5
6
|
let activeOrgId;
|
|
6
7
|
let userContext;
|
|
@@ -32,6 +33,38 @@ export function noteEditorStaleFromResponse(res, body) {
|
|
|
32
33
|
}
|
|
33
34
|
export function setActiveWorkspace(workspaceKey) {
|
|
34
35
|
activeWorkspaceKey = workspaceKey;
|
|
36
|
+
const owner = userContext?.orgs.find((o) => o.workspaces.some((w) => w.workspaceKey === workspaceKey));
|
|
37
|
+
if (owner)
|
|
38
|
+
activeOrgId = owner.orgId;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* The shop the next call writes to, named the way the owner knows it. Names
|
|
42
|
+
* are absent for org-scoped keys, which carry no org graph.
|
|
43
|
+
*/
|
|
44
|
+
export function getActiveShop() {
|
|
45
|
+
if (!activeWorkspaceKey)
|
|
46
|
+
return undefined;
|
|
47
|
+
for (const org of userContext?.orgs ?? []) {
|
|
48
|
+
const ws = org.workspaces.find((w) => w.workspaceKey === activeWorkspaceKey);
|
|
49
|
+
if (ws) {
|
|
50
|
+
return {
|
|
51
|
+
workspace_key: ws.workspaceKey,
|
|
52
|
+
workspace_name: ws.name,
|
|
53
|
+
org_id: org.orgId,
|
|
54
|
+
org_name: org.orgName,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return { workspace_key: activeWorkspaceKey };
|
|
59
|
+
}
|
|
60
|
+
/** Re-read the org graph after creating an organization or workspace. */
|
|
61
|
+
export async function refreshUserContext() {
|
|
62
|
+
const res = await fetch(`${BASE_URL}/api/user/orgs`, {
|
|
63
|
+
headers: { ...authHeaders() },
|
|
64
|
+
});
|
|
65
|
+
if (!res.ok)
|
|
66
|
+
return;
|
|
67
|
+
userContext = (await res.json());
|
|
35
68
|
}
|
|
36
69
|
export function getActiveWorkspace() {
|
|
37
70
|
return activeWorkspaceKey;
|
|
@@ -112,6 +145,8 @@ function buildStartupMessage() {
|
|
|
112
145
|
return "Connected to Apex.";
|
|
113
146
|
const { userEmail, orgs } = userContext;
|
|
114
147
|
const activeOrg = orgs.find((o) => o.orgId === activeOrgId);
|
|
148
|
+
if (orgs.length === 0)
|
|
149
|
+
return `Connected as ${userEmail}. ${WAITING_FOR_ACCESS_MESSAGE}`;
|
|
115
150
|
if (!activeOrg)
|
|
116
151
|
return `Connected as ${userEmail}. No organizations found.`;
|
|
117
152
|
const projectCount = activeOrg.workspaces.length;
|
|
@@ -150,6 +185,16 @@ export async function sendStartupPing() {
|
|
|
150
185
|
const REVOKED_KEY_HINT = " Your APEX_API_KEY is missing, invalid, or revoked. Generate a new key" +
|
|
151
186
|
" in Apex → Settings → AI Agents, update APEX_API_KEY in your MCP" +
|
|
152
187
|
" config, then restart the MCP server.";
|
|
188
|
+
/**
|
|
189
|
+
* A signed-in person Apex has not let in yet. One sentence and the access
|
|
190
|
+
* page; retrying cannot help, and "regenerate your key" would be a lie.
|
|
191
|
+
*/
|
|
192
|
+
export const WAITING_FOR_ACCESS_MESSAGE = `APEX_WAITING_FOR_ACCESS This Apex account is still waiting for access, so there is nothing to set up yet. ` +
|
|
193
|
+
`Apex emails when it's in. Check or finish the request at ${BASE_URL}/access. Do not retry or call more Apex tools until then.`;
|
|
194
|
+
/** Signed in as a person, but no organization: not let in yet. */
|
|
195
|
+
export function isWaitingForAccess() {
|
|
196
|
+
return Boolean(userContext && userContext.orgs.length === 0);
|
|
197
|
+
}
|
|
153
198
|
/**
|
|
154
199
|
* Sentence after a 401/403. A missing permission is not a revoked key —
|
|
155
200
|
* telling a shop to mint another key that still cannot see costs is a lie.
|
|
@@ -157,6 +202,8 @@ const REVOKED_KEY_HINT = " Your APEX_API_KEY is missing, invalid, or revoked. Ge
|
|
|
157
202
|
export function authFailureDetail(bodyText) {
|
|
158
203
|
try {
|
|
159
204
|
const parsed = JSON.parse(bodyText);
|
|
205
|
+
if (parsed.error === "Access pending")
|
|
206
|
+
return ` ${WAITING_FOR_ACCESS_MESSAGE}`;
|
|
160
207
|
if (parsed.error === "missing_scope") {
|
|
161
208
|
const required = parsed.required ?? "";
|
|
162
209
|
if (required === "cost:read" || required === "cost:write") {
|
|
@@ -191,6 +238,12 @@ export function authFailureDetail(bodyText) {
|
|
|
191
238
|
*/
|
|
192
239
|
async function throwForStatus(method, path, res) {
|
|
193
240
|
const text = await res.text().catch(() => "");
|
|
241
|
+
if (res.status === 403 && !userContext) {
|
|
242
|
+
await refreshUserContext().catch(() => undefined);
|
|
243
|
+
}
|
|
244
|
+
if (res.status === 403 && isWaitingForAccess()) {
|
|
245
|
+
throw new Error(WAITING_FOR_ACCESS_MESSAGE);
|
|
246
|
+
}
|
|
194
247
|
if (res.status === 401 || res.status === 403) {
|
|
195
248
|
throw new Error(`Apex authentication failed (${res.status}) on ${method} ${path}.${authFailureDetail(text)}`);
|
|
196
249
|
}
|
|
@@ -259,6 +312,13 @@ export async function apiDelete(path) {
|
|
|
259
312
|
if (!res.ok)
|
|
260
313
|
await throwForStatus("DELETE", path, res);
|
|
261
314
|
}
|
|
315
|
+
/** DELETE for routes that answer with what they did (which platforms deleted, which refused). */
|
|
316
|
+
export async function apiDeleteJson(path) {
|
|
317
|
+
const res = await fetchWithAuth(path, { method: "DELETE" });
|
|
318
|
+
if (!res.ok)
|
|
319
|
+
await throwForStatus("DELETE", path, res);
|
|
320
|
+
return res.json();
|
|
321
|
+
}
|
|
262
322
|
export async function apiPatch(path, body) {
|
|
263
323
|
const res = await fetchWithAuth(path, {
|
|
264
324
|
method: "PATCH",
|
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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"}
|
package/dist/auth.d.ts
CHANGED
|
@@ -14,6 +14,8 @@
|
|
|
14
14
|
* Tokens persist to ~/.apex/credentials.json (per Apex URL) and refresh
|
|
15
15
|
* automatically. See plans/mcp-device-auth-flow-2026-06.md.
|
|
16
16
|
*/
|
|
17
|
+
/** The not-connected text the agent sees (and shows the user). */
|
|
18
|
+
export declare function authRequiredMessage(verificationUriComplete: string, userCode: string): string;
|
|
17
19
|
/** Thrown when the user must approve in the browser. Message → tool result. */
|
|
18
20
|
export declare class AuthRequiredError extends Error {
|
|
19
21
|
constructor(verificationUriComplete: string, userCode: string);
|
|
@@ -40,6 +42,26 @@ export declare function getAuthToken(): string | undefined;
|
|
|
40
42
|
* Returns true only when a refresh succeeded and the caller should retry.
|
|
41
43
|
*/
|
|
42
44
|
export declare function reauthAfterFailure(): Promise<boolean>;
|
|
45
|
+
export type ApprovalWait = {
|
|
46
|
+
status: "connected";
|
|
47
|
+
} | {
|
|
48
|
+
status: "denied" | "expired";
|
|
49
|
+
} | {
|
|
50
|
+
status: "timeout";
|
|
51
|
+
} | {
|
|
52
|
+
status: "started";
|
|
53
|
+
verificationUriComplete: string;
|
|
54
|
+
userCode: string;
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Wait for the user to approve the pending device request. Watches the state
|
|
58
|
+
* the background poller writes; it does not poll the token endpoint itself.
|
|
59
|
+
* With nothing pending (and no ended request to report) it starts one.
|
|
60
|
+
*/
|
|
61
|
+
export declare function waitForApproval(opts?: {
|
|
62
|
+
timeoutMs?: number;
|
|
63
|
+
stepMs?: number;
|
|
64
|
+
}): Promise<ApprovalWait>;
|
|
43
65
|
/** True when we already hold a (possibly stale) credential — used by startup. */
|
|
44
66
|
export declare function hasStoredCredential(): boolean;
|
|
45
67
|
//# sourceMappingURL=auth.d.ts.map
|
package/dist/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAuCH,kEAAkE;AAClE,wBAAgB,mBAAmB,CAAC,uBAAuB,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQ7F;AAED,+EAA+E;AAC/E,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,uBAAuB,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;CAI9D;AA+ID;;;;GAIG;AACH;;;;;;GAMG;AACH,wBAAgB,YAAY,IAAI,MAAM,GAAG,SAAS,CAMjD;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAahD;AAED,2EAA2E;AAC3E,wBAAgB,YAAY,IAAI,MAAM,GAAG,SAAS,CAEjD;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC,CAM3D;AAED,MAAM,MAAM,YAAY,GACpB;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,GACvB;IAAE,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAA;CAAE,GAChC;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,GACrB;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,uBAAuB,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAY7E;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,IAAI,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GACjD,OAAO,CAAC,YAAY,CAAC,CAsCvB;AAED,iFAAiF;AACjF,wBAAgB,mBAAmB,IAAI,OAAO,CAO7C"}
|
package/dist/auth.js
CHANGED
|
@@ -16,22 +16,30 @@
|
|
|
16
16
|
*/
|
|
17
17
|
import { homedir } from "node:os";
|
|
18
18
|
import { join } from "node:path";
|
|
19
|
+
import { apexBaseUrl } from "./base-url.js";
|
|
19
20
|
import { mkdirSync, readFileSync, writeFileSync, existsSync, chmodSync, } from "node:fs";
|
|
20
|
-
const BASE_URL =
|
|
21
|
+
const BASE_URL = apexBaseUrl();
|
|
21
22
|
let creds = null;
|
|
22
23
|
let loaded = false;
|
|
23
24
|
let pending = null;
|
|
24
25
|
let bgPolling = false;
|
|
26
|
+
/** How the last device request ended without tokens, until someone reads it. */
|
|
27
|
+
let lastEnded = null;
|
|
25
28
|
const CRED_DIR = join(homedir(), ".apex");
|
|
26
29
|
const CRED_FILE = join(CRED_DIR, "credentials.json");
|
|
27
30
|
const credKey = () => BASE_URL.replace(/\/+$/, "");
|
|
31
|
+
/** The not-connected text the agent sees (and shows the user). */
|
|
32
|
+
export function authRequiredMessage(verificationUriComplete, userCode) {
|
|
33
|
+
return (`Apex isn't connected to this editor yet. To authorize:\n` +
|
|
34
|
+
` 1. Open ${verificationUriComplete}\n` +
|
|
35
|
+
` 2. Sign in to Apex if needed, then click Approve (code ${userCode}).\n` +
|
|
36
|
+
`Show the user this link and code. Then call wait_for_apex_approval: it returns as soon as they approve. ` +
|
|
37
|
+
`Then retry the call you were making.`);
|
|
38
|
+
}
|
|
28
39
|
/** Thrown when the user must approve in the browser. Message → tool result. */
|
|
29
40
|
export class AuthRequiredError extends Error {
|
|
30
41
|
constructor(verificationUriComplete, userCode) {
|
|
31
|
-
super(
|
|
32
|
-
` 1. Open ${verificationUriComplete}\n` +
|
|
33
|
-
` 2. Sign in to Apex if needed, then click Approve (code ${userCode}).\n` +
|
|
34
|
-
`Then run this again — it connects automatically once approved.`);
|
|
42
|
+
super(authRequiredMessage(verificationUriComplete, userCode));
|
|
35
43
|
this.name = "AuthRequiredError";
|
|
36
44
|
}
|
|
37
45
|
}
|
|
@@ -120,6 +128,7 @@ async function startDeviceRequest() {
|
|
|
120
128
|
verificationUriComplete: d.verification_uri_complete,
|
|
121
129
|
expiresAt: Date.now() + d.expires_in * 1000,
|
|
122
130
|
};
|
|
131
|
+
lastEnded = null;
|
|
123
132
|
// Hint in the logs too (some users watch them); the tool result is primary.
|
|
124
133
|
console.error(`[apex] Authorize this editor: open ${d.verification_uri_complete} and approve (code ${d.user_code}).`);
|
|
125
134
|
void backgroundPoll(d.interval || 5);
|
|
@@ -155,6 +164,7 @@ async function backgroundPoll(intervalSec) {
|
|
|
155
164
|
continue;
|
|
156
165
|
else {
|
|
157
166
|
// expired / denied — stop; a later call starts a fresh request.
|
|
167
|
+
lastEnded = err === "access_denied" ? "denied" : "expired";
|
|
158
168
|
pending = null;
|
|
159
169
|
return;
|
|
160
170
|
}
|
|
@@ -225,6 +235,62 @@ export async function reauthAfterFailure() {
|
|
|
225
235
|
const p = await startDeviceRequest();
|
|
226
236
|
throw new AuthRequiredError(p.verificationUriComplete, p.userCode);
|
|
227
237
|
}
|
|
238
|
+
function hasFreshCreds() {
|
|
239
|
+
return creds != null && Date.now() < creds.expiresAt - 60_000;
|
|
240
|
+
}
|
|
241
|
+
function takeEnded() {
|
|
242
|
+
const ended = lastEnded ?? "expired";
|
|
243
|
+
lastEnded = null;
|
|
244
|
+
return ended;
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Wait for the user to approve the pending device request. Watches the state
|
|
248
|
+
* the background poller writes; it does not poll the token endpoint itself.
|
|
249
|
+
* With nothing pending (and no ended request to report) it starts one.
|
|
250
|
+
*/
|
|
251
|
+
export async function waitForApproval(opts = {}) {
|
|
252
|
+
const timeoutMs = opts.timeoutMs ?? 120_000;
|
|
253
|
+
const stepMs = opts.stepMs ?? 1000;
|
|
254
|
+
if (staticApiKey())
|
|
255
|
+
return { status: "connected" };
|
|
256
|
+
if (!loaded) {
|
|
257
|
+
creds = loadCreds();
|
|
258
|
+
loaded = true;
|
|
259
|
+
}
|
|
260
|
+
if (hasFreshCreds())
|
|
261
|
+
return { status: "connected" };
|
|
262
|
+
if (!pending || Date.now() >= pending.expiresAt) {
|
|
263
|
+
if (pending) {
|
|
264
|
+
pending = null;
|
|
265
|
+
return { status: "expired" };
|
|
266
|
+
}
|
|
267
|
+
if (lastEnded)
|
|
268
|
+
return { status: takeEnded() };
|
|
269
|
+
if (creds && (await tryRefresh()))
|
|
270
|
+
return { status: "connected" };
|
|
271
|
+
const p = await startDeviceRequest();
|
|
272
|
+
return {
|
|
273
|
+
status: "started",
|
|
274
|
+
verificationUriComplete: p.verificationUriComplete,
|
|
275
|
+
userCode: p.userCode,
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
if (!bgPolling)
|
|
279
|
+
void backgroundPoll(5);
|
|
280
|
+
const deadline = Date.now() + timeoutMs;
|
|
281
|
+
while (Date.now() < deadline) {
|
|
282
|
+
if (hasFreshCreds())
|
|
283
|
+
return { status: "connected" };
|
|
284
|
+
if (!pending)
|
|
285
|
+
return { status: takeEnded() };
|
|
286
|
+
if (Date.now() >= pending.expiresAt) {
|
|
287
|
+
pending = null;
|
|
288
|
+
return { status: "expired" };
|
|
289
|
+
}
|
|
290
|
+
await sleep(stepMs);
|
|
291
|
+
}
|
|
292
|
+
return hasFreshCreds() ? { status: "connected" } : { status: "timeout" };
|
|
293
|
+
}
|
|
228
294
|
/** True when we already hold a (possibly stale) credential — used by startup. */
|
|
229
295
|
export function hasStoredCredential() {
|
|
230
296
|
if (staticApiKey())
|
package/dist/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EACL,SAAS,EACT,YAAY,EACZ,aAAa,EACb,UAAU,EACV,SAAS,GACV,MAAM,SAAS,CAAC;AAEjB,MAAM,QAAQ,
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where this server talks to Apex. A hand-copied config with no `APEX_URL`
|
|
3
|
+
* should still reach Apex, so the fallback is production. Local development
|
|
4
|
+
* sets `APEX_URL` to the local app explicitly.
|
|
5
|
+
*/
|
|
6
|
+
export declare const DEFAULT_APEX_URL = "https://app.apex.inc";
|
|
7
|
+
export declare function apexBaseUrl(): string;
|
|
8
|
+
//# sourceMappingURL=base-url.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-url.d.ts","sourceRoot":"","sources":["../src/base-url.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,yBAAyB,CAAC;AAEvD,wBAAgB,WAAW,IAAI,MAAM,CAEpC"}
|
package/dist/base-url.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where this server talks to Apex. A hand-copied config with no `APEX_URL`
|
|
3
|
+
* should still reach Apex, so the fallback is production. Local development
|
|
4
|
+
* sets `APEX_URL` to the local app explicitly.
|
|
5
|
+
*/
|
|
6
|
+
export const DEFAULT_APEX_URL = "https://app.apex.inc";
|
|
7
|
+
export function apexBaseUrl() {
|
|
8
|
+
return (process.env.APEX_URL || process.env.APEX_API_URL || DEFAULT_APEX_URL).replace(/\/$/, "");
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=base-url.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-url.js","sourceRoot":"","sources":["../src/base-url.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,sBAAsB,CAAC;AAEvD,MAAM,UAAU,WAAW;IACzB,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,gBAAgB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACnG,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -7,6 +7,7 @@ import { resourceDefinitions } from "./resources.js";
|
|
|
7
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
|
+
import { REPO_BINDING_INSTRUCTION } from "./repo-binding.js";
|
|
10
11
|
import { advertiseShape, restoreArgs, normalizeInbound } from "./param-casing.js";
|
|
11
12
|
import { advertisedToolNames, annotationsForTool, resolveToolCallName, } from "./tool-catalog.js";
|
|
12
13
|
// Subcommand dispatch: `npx @apex-inc/mcp-server screenshot <opts>` runs the
|
|
@@ -48,6 +49,8 @@ const server = new McpServer({ name: "apex", version: MCP_SERVER_VERSION }, {
|
|
|
48
49
|
"Tell the user to Update Cursor on Set up Apex or AI Agents so it asks before it ships onto a live test.",
|
|
49
50
|
"If get_setup_state shows first-run incomplete, name the merchant before inventing events.",
|
|
50
51
|
"After ads are connected, make a paid Apex Link before inventing UTMs. Do not stamp conversion ack.",
|
|
52
|
+
REPO_BINDING_INSTRUCTION,
|
|
53
|
+
"Setup replies name the shop they wrote to (shop). If it is not the shop this repo belongs to, stop and switch_workspace before the next write.",
|
|
51
54
|
].join(" "),
|
|
52
55
|
});
|
|
53
56
|
// --- Register tools ---
|
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;AAClF,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAE3B,6EAA6E;AAC7E,yEAAyE;AACzE,wCAAwC;AACxC,oEAAoE;AACpE,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,YAAY,EAAE,CAAC;IACrC,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;IACjE,MAAM,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE,EAC7C;IACE,YAAY,EAAE;QACZ,2EAA2E;QAC3E,mGAAmG;QACnG,wEAAwE;QACxE,oGAAoG;QACpG,sGAAsG;QACtG,uEAAuE;QACvE,+FAA+F;QAC/F,+FAA+F;QAC/F,sFAAsF;QACtF,sGAAsG;QACtG,+GAA+G;QAC/G,0GAA0G;QAC1G,uFAAuF;QACvF,kGAAkG;QAClG,uFAAuF;QACvF,+DAA+D;QAC/D,qFAAqF;QACrF,+EAA+E;QAC/E,oFAAoF;QACpF,yFAAyF;QACzF,sFAAsF;QACtF,wFAAwF;QACxF,mFAAmF;QACnF,2BAA2B;QAC3B,uFAAuF;QACvF,yGAAyG;QACzG,2FAA2F;QAC3F,oGAAoG;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/letter-blocks.d.ts
CHANGED
|
@@ -20,6 +20,8 @@ export declare const letterBlockSchema: z.ZodObject<{
|
|
|
20
20
|
button_width: z.ZodOptional<z.ZodEnum<["hug", "fill"]>>;
|
|
21
21
|
html: z.ZodOptional<z.ZodString>;
|
|
22
22
|
height: z.ZodOptional<z.ZodNumber>;
|
|
23
|
+
color: z.ZodOptional<z.ZodString>;
|
|
24
|
+
thickness: z.ZodOptional<z.ZodNumber>;
|
|
23
25
|
}, "strip", z.ZodTypeAny, {
|
|
24
26
|
type: "text" | "heading" | "image" | "button" | "html" | "spacer" | "divider";
|
|
25
27
|
label?: string | undefined;
|
|
@@ -34,6 +36,8 @@ export declare const letterBlockSchema: z.ZodObject<{
|
|
|
34
36
|
image_natural_height?: number | undefined;
|
|
35
37
|
button_width?: "fill" | "hug" | undefined;
|
|
36
38
|
height?: number | undefined;
|
|
39
|
+
color?: string | undefined;
|
|
40
|
+
thickness?: number | undefined;
|
|
37
41
|
}, {
|
|
38
42
|
type: "text" | "heading" | "image" | "button" | "html" | "spacer" | "divider";
|
|
39
43
|
label?: string | undefined;
|
|
@@ -48,6 +52,8 @@ export declare const letterBlockSchema: z.ZodObject<{
|
|
|
48
52
|
image_natural_height?: number | undefined;
|
|
49
53
|
button_width?: "fill" | "hug" | undefined;
|
|
50
54
|
height?: number | undefined;
|
|
55
|
+
color?: string | undefined;
|
|
56
|
+
thickness?: number | undefined;
|
|
51
57
|
}>;
|
|
52
58
|
export type LetterBlockInput = z.infer<typeof letterBlockSchema>;
|
|
53
59
|
interface Block {
|
|
@@ -65,6 +71,17 @@ interface ComposeInput {
|
|
|
65
71
|
blocks: LetterBlockInput[];
|
|
66
72
|
idSeed?: string;
|
|
67
73
|
}
|
|
74
|
+
/**
|
|
75
|
+
* The reverse of composeLetterDocument: a stored builder document as the
|
|
76
|
+
* sections edit_communication accepts. Brand header and footer are left out
|
|
77
|
+
* (edits keep them); any other block type is named in `skipped`.
|
|
78
|
+
*/
|
|
79
|
+
export declare function letterBlocksFromDocument(doc: {
|
|
80
|
+
blocks?: Block[];
|
|
81
|
+
} | null | undefined): {
|
|
82
|
+
blocks: LetterBlockInput[];
|
|
83
|
+
skipped: string[];
|
|
84
|
+
};
|
|
68
85
|
/**
|
|
69
86
|
* Build the builder document and slot map for a full-body edit. The first
|
|
70
87
|
* heading, text and button take the ids the theme's Title / Body / Button
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"letter-blocks.d.ts","sourceRoot":"","sources":["../src/letter-blocks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB
|
|
1
|
+
{"version":3,"file":"letter-blocks.d.ts","sourceRoot":"","sources":["../src/letter-blocks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqB5B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAEjE,UAAU,KAAK;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,YAAY;IACpB,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,KAAK,EAAE,CAAA;KAAE,GAAG,IAAI,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IACtC,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,GAAG,MAAM,GAAG,QAAQ,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC;IACtE,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA0CD;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE;IAAE,MAAM,CAAC,EAAE,KAAK,EAAE,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,GAAG;IACtF,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,CAgDA;AAUD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,YAAY,GAAG;IAC1D,eAAe,EAAE;QAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAAC,OAAO,EAAE,CAAC,CAAA;KAAE,CAAC;IACjD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B,CAuCA"}
|
package/dist/letter-blocks.js
CHANGED
|
@@ -23,6 +23,8 @@ export const letterBlockSchema = z.object({
|
|
|
23
23
|
button_width: z.enum(["hug", "fill"]).optional(),
|
|
24
24
|
html: z.string().optional().describe("html block: sent as written. Use for a plain text link line."),
|
|
25
25
|
height: z.number().optional().describe("spacer height in px"),
|
|
26
|
+
color: z.string().optional().describe("divider: its own hex color. Leave out to use the theme's."),
|
|
27
|
+
thickness: z.number().optional().describe("divider: its own thickness in px (1-8). Leave out to use the theme's."),
|
|
26
28
|
});
|
|
27
29
|
function contentFor(b) {
|
|
28
30
|
const c = {};
|
|
@@ -60,9 +62,71 @@ function contentFor(b) {
|
|
|
60
62
|
case "spacer":
|
|
61
63
|
c.height = b.height ?? 24;
|
|
62
64
|
break;
|
|
65
|
+
case "divider":
|
|
66
|
+
if (b.color)
|
|
67
|
+
c.color = b.color;
|
|
68
|
+
if (b.thickness)
|
|
69
|
+
c.thickness = b.thickness;
|
|
70
|
+
break;
|
|
63
71
|
}
|
|
64
72
|
return c;
|
|
65
73
|
}
|
|
74
|
+
const num = (v) => (typeof v === "number" && Number.isFinite(v) ? v : undefined);
|
|
75
|
+
const str = (v) => (typeof v === "string" ? v : undefined);
|
|
76
|
+
/**
|
|
77
|
+
* The reverse of composeLetterDocument: a stored builder document as the
|
|
78
|
+
* sections edit_communication accepts. Brand header and footer are left out
|
|
79
|
+
* (edits keep them); any other block type is named in `skipped`.
|
|
80
|
+
*/
|
|
81
|
+
export function letterBlocksFromDocument(doc) {
|
|
82
|
+
const blocks = [];
|
|
83
|
+
const skipped = [];
|
|
84
|
+
for (const b of doc?.blocks ?? []) {
|
|
85
|
+
const c = b.content ?? {};
|
|
86
|
+
const align = str(c.align);
|
|
87
|
+
const base = align ? { align } : {};
|
|
88
|
+
switch (b.type) {
|
|
89
|
+
case "brand-header":
|
|
90
|
+
case "brand-footer":
|
|
91
|
+
break;
|
|
92
|
+
case "heading":
|
|
93
|
+
blocks.push({ type: "heading", ...base, text: str(c.text) ?? "", ...(str(c.headingLevel) ? { heading_level: str(c.headingLevel) } : {}) });
|
|
94
|
+
break;
|
|
95
|
+
case "text":
|
|
96
|
+
blocks.push({ type: "text", ...base, text: str(c.text) ?? "" });
|
|
97
|
+
break;
|
|
98
|
+
case "image":
|
|
99
|
+
blocks.push({
|
|
100
|
+
type: "image", ...base,
|
|
101
|
+
url: str(c.url) ?? "",
|
|
102
|
+
...(str(c.alt) ? { alt: str(c.alt) } : {}),
|
|
103
|
+
...(num(c.imageHeight) ? { image_height: num(c.imageHeight) } : {}),
|
|
104
|
+
...(num(c.imageNaturalWidth) ? { image_natural_width: num(c.imageNaturalWidth) } : {}),
|
|
105
|
+
...(num(c.imageNaturalHeight) ? { image_natural_height: num(c.imageNaturalHeight) } : {}),
|
|
106
|
+
});
|
|
107
|
+
break;
|
|
108
|
+
case "button":
|
|
109
|
+
blocks.push({ type: "button", ...base, label: str(c.label) ?? "", url: str(c.url) ?? "", ...(str(c.buttonWidth) ? { button_width: str(c.buttonWidth) } : {}) });
|
|
110
|
+
break;
|
|
111
|
+
case "html":
|
|
112
|
+
blocks.push({ type: "html", html: str(c.html) ?? "" });
|
|
113
|
+
break;
|
|
114
|
+
case "spacer":
|
|
115
|
+
blocks.push({ type: "spacer", height: num(c.height) ?? 24 });
|
|
116
|
+
break;
|
|
117
|
+
case "divider":
|
|
118
|
+
blocks.push({
|
|
119
|
+
type: "divider",
|
|
120
|
+
...(str(c.color) ? { color: str(c.color) } : {}),
|
|
121
|
+
...(num(c.thickness) ? { thickness: num(c.thickness) } : {}),
|
|
122
|
+
});
|
|
123
|
+
break;
|
|
124
|
+
default:
|
|
125
|
+
skipped.push(b.type);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return { blocks, skipped };
|
|
129
|
+
}
|
|
66
130
|
function plain(html) {
|
|
67
131
|
return html
|
|
68
132
|
.replace(/<\/(p|li)>/gi, "\n")
|