@micropage-sh/mcp 0.1.2 → 0.1.3

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.
Files changed (74) hide show
  1. package/README.md +11 -0
  2. package/dist/client/assets.d.ts +26 -8
  3. package/dist/client/assets.js +54 -116
  4. package/dist/client/assets.js.map +1 -1
  5. package/dist/client/auth-provider.d.ts +9 -3
  6. package/dist/client/auth-provider.js +11 -0
  7. package/dist/client/auth-provider.js.map +1 -1
  8. package/dist/client/bearer-auth.d.ts +16 -0
  9. package/dist/client/bearer-auth.js +24 -0
  10. package/dist/client/bearer-auth.js.map +1 -0
  11. package/dist/client/deploy-token.d.ts +6 -0
  12. package/dist/client/deploy-token.js +10 -4
  13. package/dist/client/deploy-token.js.map +1 -1
  14. package/dist/client/errors.d.ts +1 -1
  15. package/dist/client/errors.js.map +1 -1
  16. package/dist/client/http.d.ts +4 -0
  17. package/dist/client/http.js +7 -4
  18. package/dist/client/http.js.map +1 -1
  19. package/dist/client/ip.d.ts +12 -0
  20. package/dist/client/ip.js +93 -0
  21. package/dist/client/ip.js.map +1 -0
  22. package/dist/client/session-store.d.ts +3 -2
  23. package/dist/client/session-store.js +5 -1
  24. package/dist/client/session-store.js.map +1 -1
  25. package/dist/client/tier.d.ts +23 -3
  26. package/dist/client/tier.js +56 -17
  27. package/dist/client/tier.js.map +1 -1
  28. package/dist/context.d.ts +43 -7
  29. package/dist/guards.d.ts +11 -10
  30. package/dist/guards.js +21 -19
  31. package/dist/guards.js.map +1 -1
  32. package/dist/hints.d.ts +46 -0
  33. package/dist/hints.js +70 -0
  34. package/dist/hints.js.map +1 -0
  35. package/dist/index.js +2 -1
  36. package/dist/index.js.map +1 -1
  37. package/dist/node/deps.d.ts +26 -0
  38. package/dist/node/deps.js +51 -0
  39. package/dist/node/deps.js.map +1 -0
  40. package/dist/node/host-lookup.d.ts +3 -0
  41. package/dist/node/host-lookup.js +4 -0
  42. package/dist/node/host-lookup.js.map +1 -0
  43. package/dist/node/path-source.d.ts +3 -0
  44. package/dist/node/path-source.js +28 -0
  45. package/dist/node/path-source.js.map +1 -0
  46. package/dist/reference/prompts.d.ts +2 -1
  47. package/dist/reference/prompts.js +4 -3
  48. package/dist/reference/prompts.js.map +1 -1
  49. package/dist/reference.d.ts +1 -1
  50. package/dist/reference.js +2 -2
  51. package/dist/reference.js.map +1 -1
  52. package/dist/server.d.ts +4 -19
  53. package/dist/server.js +27 -33
  54. package/dist/server.js.map +1 -1
  55. package/dist/tools/account.d.ts +1 -0
  56. package/dist/tools/account.js +8 -8
  57. package/dist/tools/account.js.map +1 -1
  58. package/dist/tools/files.d.ts +15 -6
  59. package/dist/tools/files.js +63 -45
  60. package/dist/tools/files.js.map +1 -1
  61. package/dist/tools/forms.js +1 -1
  62. package/dist/tools/forms.js.map +1 -1
  63. package/dist/tools/posts.d.ts +2 -3
  64. package/dist/tools/posts.js +15 -16
  65. package/dist/tools/posts.js.map +1 -1
  66. package/dist/tools/projects.js +2 -2
  67. package/dist/tools/projects.js.map +1 -1
  68. package/dist/tools/shared.d.ts +1 -1
  69. package/dist/tools/shared.js +1 -1
  70. package/dist/tools/shared.js.map +1 -1
  71. package/dist/version.d.ts +2 -2
  72. package/dist/version.js +6 -7
  73. package/dist/version.js.map +1 -1
  74. package/package.json +6 -3
package/README.md CHANGED
@@ -29,6 +29,17 @@ For other clients, run `npx -y @micropage-sh/mcp` over stdio:
29
29
 
30
30
  Emailing subscribers, deleting projects and reading form submissions are off by default. Turn them on with `MICROPAGE_MCP_ALLOW_SEND=1`, `MICROPAGE_MCP_ALLOW_DELETE=1` and `MICROPAGE_MCP_SUBMISSIONS=1`. For headless use, set `MICROPAGE_DEPLOY_TOKEN` and `MICROPAGE_DEPLOY_PROJECT` instead of logging in. See [Install](https://docs.micropage.sh/docs/mcp/install/) and [Safety](https://docs.micropage.sh/docs/mcp/safety/).
31
31
 
32
+ ## Hosted server
33
+
34
+ micropage also hosts this server at `https://mcp.micropage.sh/mcp`. Clients connect over streamable HTTP and sign in with OAuth through the micropage account, so nothing is installed locally. Dynamic client registration is off, so each client uses a pre-registered client ID. Claude Code:
35
+
36
+ ```sh
37
+ claude mcp add --transport http --client-id f1176948-266f-42af-9fe6-b285e023421c --callback-port 33418 \
38
+ micropage https://mcp.micropage.sh/mcp
39
+ ```
40
+
41
+ The setup for claude.ai and Claude Desktop, the per-connection permissions, and the deploy-token headers for headless use are in [Hosted server](https://docs.micropage.sh/docs/mcp/remote/).
42
+
32
43
  ## Development
33
44
 
34
45
  See [DEVELOPMENT.md](DEVELOPMENT.md) for working on the server and [PUBLISHING.md](PUBLISHING.md) for releases.
@@ -1,4 +1,7 @@
1
+ import { MicropageError } from "./errors.js";
1
2
  import type { FetchLike, Http } from "./http.js";
3
+ import { isPrivateAddress } from "./ip.js";
4
+ export { isPrivateAddress };
2
5
  /** Same extensions and types as the CLI (cli/src/mime.js); upload-file stores whatever type it is sent. */
3
6
  export declare const ASSET_MIME_TYPES: Readonly<Record<string, string>>;
4
7
  export declare const MAX_ASSET_BYTES: number;
@@ -25,26 +28,41 @@ export type AssetSource = {
25
28
  } | {
26
29
  base64: string;
27
30
  };
31
+ /** Reads a `{path}` source, refusing anything over maxBytes. Only a local server has one. */
32
+ export type PathLoader = (path: string, maxBytes: number) => Promise<Uint8Array>;
28
33
  export interface LoadSourceOptions {
29
34
  /** Used for `{url}` sources only; never sent micropage credentials. */
30
35
  fetch?: FetchLike;
31
- /** Resolves `{url}` hostnames before each fetch; defaults to urlHostLookup.current. */
32
- lookup?: HostLookup;
36
+ /**
37
+ * Resolves `{url}` hostnames before each fetch so private addresses are
38
+ * refused. Without one only IP-literal hosts and the denylist are checked,
39
+ * which is enough only where fetch itself cannot reach private networks.
40
+ */
41
+ lookup?: HostLookup | null;
42
+ /** Hostnames never fetched, checked on every redirect hop. */
43
+ deniedHosts?: HostDenylist;
44
+ /** Without one, `{path}` sources are refused. */
45
+ pathLoader?: PathLoader;
33
46
  maxBytes?: number;
34
47
  timeoutMs?: number;
35
48
  }
49
+ export declare function assetTooLarge(size: number | string, maxBytes: number): MicropageError;
36
50
  export declare function loadAssetSource(source: AssetSource, options?: LoadSourceOptions): Promise<Buffer>;
37
51
  export type HostLookup = (hostname: string) => Promise<ReadonlyArray<{
38
52
  address: string;
39
53
  family: number;
40
54
  }>>;
41
- /** Swappable in tests so no real DNS query is made. */
42
- export declare const urlHostLookup: {
43
- current: HostLookup;
44
- };
55
+ /**
56
+ * Hostnames `{url}` sources must not fetch. `exact` matches the host only;
57
+ * a `suffixes` entry matches the domain itself and every subdomain of it
58
+ * ("example.com" covers example.com and a.b.example.com, not badexample.com).
59
+ * Case and a trailing dot are ignored.
60
+ */
61
+ export interface HostDenylist {
62
+ exact?: ReadonlyArray<string>;
63
+ suffixes?: ReadonlyArray<string>;
64
+ }
45
65
  export declare const MAX_URL_REDIRECTS = 5;
46
- /** True for loopback, private, link-local, CGNAT, ULA, multicast and unspecified addresses, in any notation. */
47
- export declare function isPrivateAddress(ip: string): boolean;
48
66
  export declare function sha256Hex(bytes: Uint8Array): string;
49
67
  export interface UserFile {
50
68
  id: string;
@@ -1,10 +1,8 @@
1
1
  import { createHash } from "node:crypto";
2
- import { lookup } from "node:dns/promises";
3
- import { readFile, stat } from "node:fs/promises";
4
- import { isIP } from "node:net";
5
- import { extname, isAbsolute } from "node:path";
6
2
  import { VERSION } from "../version.js";
7
3
  import { MicropageError, isMicropageError } from "./errors.js";
4
+ import { ipFamily, isPrivateAddress } from "./ip.js";
5
+ export { isPrivateAddress };
8
6
  /** Same extensions and types as the CLI (cli/src/mime.js); upload-file stores whatever type it is sent. */
9
7
  export const ASSET_MIME_TYPES = Object.freeze({
10
8
  ".png": "image/png",
@@ -22,6 +20,14 @@ const formatMb = (bytes) => `${(bytes / MB).toFixed(bytes < 10 * MB ? 2 : 1)} MB
22
20
  // ---------------------------------------------------------------------------
23
21
  // Filename
24
22
  // ---------------------------------------------------------------------------
23
+ /** path.extname for a bare filename: "" for no extension and for dotfiles such as ".png". */
24
+ function extname(filename) {
25
+ const base = filename.slice(filename.lastIndexOf("/") + 1);
26
+ const dot = base.lastIndexOf(".");
27
+ if (dot <= 0 || /^\.+$/.test(base))
28
+ return "";
29
+ return base.slice(dot);
30
+ }
25
31
  /**
26
32
  * The stored filename is what `.page` markup references (`img: <- logo.png`),
27
33
  * so it must be a bare name with an extension the CLI would upload.
@@ -75,7 +81,7 @@ function looksLike(ext, bytes) {
75
81
  case ".ico":
76
82
  return startsWith(bytes, [0x00, 0x00, 0x01, 0x00]);
77
83
  case ".svg":
78
- return hasSvgRoot(Buffer.from(bytes).toString("utf8"));
84
+ return hasSvgRoot(Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength).toString("utf8"));
79
85
  default:
80
86
  return false;
81
87
  }
@@ -129,137 +135,63 @@ export function assertContentMatchesExtension(filename, bytes) {
129
135
  "Check the source, or rename the file to its real image type. Nothing was uploaded.");
130
136
  }
131
137
  }
132
- function tooLarge(size, maxBytes) {
138
+ export function assetTooLarge(size, maxBytes) {
133
139
  const shown = typeof size === "number" ? formatMb(size) : size;
134
140
  return new MicropageError("ASSET_TOO_LARGE", `The asset is ${shown}; the limit is ${formatMb(maxBytes)}. Resize or recompress it (e.g. to WebP) and retry. Nothing was uploaded.`);
135
141
  }
136
142
  export async function loadAssetSource(source, options = {}) {
137
143
  const maxBytes = options.maxBytes ?? MAX_ASSET_BYTES;
138
- if ("path" in source)
139
- return loadPath(source.path, maxBytes);
144
+ if ("path" in source) {
145
+ if (!options.pathLoader) {
146
+ throw new MicropageError("INVALID_SOURCE", "source.path is not available on this server: it cannot read files from the user's machine. " +
147
+ "Pass the image as source.base64, or as source.url if it is on a public https host.");
148
+ }
149
+ const bytes = await options.pathLoader(source.path, maxBytes);
150
+ if (bytes.length > maxBytes)
151
+ throw assetTooLarge(bytes.length, maxBytes);
152
+ return Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength);
153
+ }
140
154
  if ("url" in source) {
141
155
  return loadUrl(source.url, {
142
156
  maxBytes,
143
157
  timeoutMs: options.timeoutMs ?? URL_FETCH_TIMEOUT_MS,
144
158
  fetchImpl: options.fetch ?? ((i, init) => fetch(i, init)),
145
- lookup: options.lookup ?? urlHostLookup.current,
159
+ lookup: options.lookup ?? null,
160
+ denied: compileDenylist(options.deniedHosts),
161
+ localAlternative: options.pathLoader ? "source.path or source.base64" : "source.base64",
146
162
  });
147
163
  }
148
164
  return loadBase64(source.base64, maxBytes);
149
165
  }
150
- async function loadPath(path, maxBytes) {
151
- if (!isAbsolute(path)) {
152
- throw new MicropageError("INVALID_SOURCE", `source.path "${path}" is relative. Pass an absolute path; the server's working directory is not the user's.`);
153
- }
154
- let info;
155
- try {
156
- info = await stat(path);
157
- }
158
- catch (err) {
159
- throw new MicropageError("INVALID_SOURCE", `Cannot read source.path "${path}": ${err.code ?? String(err)}.`, {
160
- cause: err,
161
- });
162
- }
163
- if (!info.isFile())
164
- throw new MicropageError("INVALID_SOURCE", `source.path "${path}" is not a regular file.`);
165
- if (info.size > maxBytes)
166
- throw tooLarge(info.size, maxBytes);
167
- const bytes = await readFile(path);
168
- if (bytes.length > maxBytes)
169
- throw tooLarge(bytes.length, maxBytes);
170
- return bytes;
171
- }
172
166
  function loadBase64(raw, maxBytes) {
173
167
  // Accept a data: URL as well as bare base64, and ignore line wrapping.
174
- const body = raw.replace(/^data:[^,]*;base64,/i, "").replace(/\s+/g, "");
168
+ // The argument can be megabytes, so it is only copied when it has whitespace to strip.
169
+ const unprefixed = raw.replace(/^data:[^,]*;base64,/i, "");
170
+ const body = /\s/.test(unprefixed) ? unprefixed.replace(/\s+/g, "") : unprefixed;
175
171
  if (!body || !/^[A-Za-z0-9+/_-]+={0,2}$/.test(body)) {
176
172
  throw new MicropageError("INVALID_SOURCE", "source.base64 is not valid base64. Pass the file bytes base64-encoded (a data: URL is fine).");
177
173
  }
178
174
  // Checked before decoding so an oversized argument is never materialized twice.
179
175
  if (Math.floor((body.length * 3) / 4) > maxBytes + 2)
180
- throw tooLarge(Math.floor((body.length * 3) / 4), maxBytes);
176
+ throw assetTooLarge(Math.floor((body.length * 3) / 4), maxBytes);
181
177
  // Node's base64 decoder also accepts the URL-safe alphabet.
182
178
  const bytes = Buffer.from(body, "base64");
183
179
  if (bytes.length > maxBytes)
184
- throw tooLarge(bytes.length, maxBytes);
185
- return bytes;
186
- }
187
- /** Swappable in tests so no real DNS query is made. */
188
- export const urlHostLookup = {
189
- current: (hostname) => lookup(hostname, { all: true, verbatim: true }),
190
- };
191
- export const MAX_URL_REDIRECTS = 5;
192
- function ipv4Bytes(ip) {
193
- const parts = ip.split(".");
194
- if (parts.length !== 4)
195
- return null;
196
- const bytes = parts.map((p) => (/^\d{1,3}$/.test(p) ? Number(p) : Number.NaN));
197
- return bytes.every((b) => b >= 0 && b <= 255) ? bytes : null;
198
- }
199
- /** 16 bytes of an IPv6 address (zone id dropped), or null when it does not parse. */
200
- function ipv6Bytes(raw) {
201
- let ip = raw.split("%")[0];
202
- let tail = [];
203
- const lastColon = ip.lastIndexOf(":");
204
- if (ip.slice(lastColon + 1).includes(".")) {
205
- const v4 = ipv4Bytes(ip.slice(lastColon + 1));
206
- if (!v4)
207
- return null;
208
- tail = v4;
209
- ip = `${ip.slice(0, lastColon + 1)}0:0`;
210
- }
211
- const halves = ip.split("::");
212
- if (halves.length > 2)
213
- return null;
214
- const groups = (h) => (h === "" ? [] : h.split(":"));
215
- const head = groups(halves[0]);
216
- const back = halves.length === 2 ? groups(halves[1]) : [];
217
- const fill = 8 - head.length - back.length;
218
- if (halves.length === 1 ? fill !== 0 : fill < 1)
219
- return null;
220
- const all = [...head, ...Array(halves.length === 2 ? fill : 0).fill("0"), ...back];
221
- const bytes = [];
222
- for (const g of all) {
223
- if (!/^[0-9a-f]{1,4}$/i.test(g))
224
- return null;
225
- const n = parseInt(g, 16);
226
- bytes.push(n >> 8, n & 0xff);
227
- }
228
- if (tail.length)
229
- bytes.splice(12, 4, ...tail);
180
+ throw assetTooLarge(bytes.length, maxBytes);
230
181
  return bytes;
231
182
  }
232
- function blockedV4([a, b]) {
233
- return (a === 0 || // 0.0.0.0/8 "this network"
234
- a === 10 ||
235
- a === 127 ||
236
- (a === 100 && b >= 64 && b <= 127) || // CGNAT 100.64/10
237
- (a === 169 && b === 254) || // link-local, cloud metadata
238
- (a === 172 && b >= 16 && b <= 31) ||
239
- (a === 192 && b === 168) ||
240
- a >= 224 // multicast 224/4 and reserved 240/4, incl. broadcast
241
- );
183
+ const normaliseHost = (host) => host.trim().toLowerCase().replace(/\.+$/, "");
184
+ function compileDenylist(list) {
185
+ return {
186
+ exact: new Set((list?.exact ?? []).map(normaliseHost).filter(Boolean)),
187
+ suffixes: (list?.suffixes ?? []).map((s) => normaliseHost(s).replace(/^\.+/, "")).filter(Boolean),
188
+ };
242
189
  }
243
- /** True for loopback, private, link-local, CGNAT, ULA, multicast and unspecified addresses, in any notation. */
244
- export function isPrivateAddress(ip) {
245
- const family = isIP(ip.split("%")[0]);
246
- if (family === 4)
247
- return blockedV4(ipv4Bytes(ip));
248
- if (family !== 6)
249
- return true;
250
- const b = ipv6Bytes(ip);
251
- if (!b)
252
- return true;
253
- const zeros = (n) => b.slice(0, n).every((x) => x === 0);
254
- // ::ffff:a.b.c.d (mapped) and ::a.b.c.d (compatible, which also covers :: and ::1).
255
- if ((zeros(10) && b[10] === 0xff && b[11] === 0xff) || zeros(12))
256
- return blockedV4(b.slice(12));
257
- return ((b[0] === 0xfe && (b[1] & 0xc0) === 0x80) || // fe80::/10 link-local
258
- (b[0] & 0xfe) === 0xfc || // fc00::/7 unique local
259
- b[0] === 0xff // ff00::/8 multicast
260
- );
190
+ function matchesDenylist(host, denied) {
191
+ return denied.exact.has(host) || denied.suffixes.some((s) => host === s || host.endsWith(`.${s}`));
261
192
  }
262
- async function assertPublicHost(url, lookupHost, redirected) {
193
+ export const MAX_URL_REDIRECTS = 5;
194
+ async function assertPublicHost(url, check, redirected) {
263
195
  if (url.protocol !== "https:") {
264
196
  throw new MicropageError("INVALID_SOURCE", redirected
265
197
  ? `source.url redirected to a non-https URL (${url.toString()}). Nothing was uploaded.`
@@ -267,15 +199,21 @@ async function assertPublicHost(url, lookupHost, redirected) {
267
199
  }
268
200
  const host = url.hostname.replace(/^\[|\]$/g, "");
269
201
  const refuse = (address) => new MicropageError("INVALID_SOURCE", `source.url host ${url.hostname} is a private, local or reserved address (${address}). Only public https hosts are ` +
270
- "fetched; upload a local file with source.path or source.base64 instead. Nothing was fetched.");
271
- if (isIP(host)) {
202
+ `fetched; upload a local file with ${check.localAlternative} instead. Nothing was fetched.`);
203
+ if (ipFamily(host)) {
272
204
  if (isPrivateAddress(host))
273
205
  throw refuse(host);
274
206
  return;
275
207
  }
208
+ if (matchesDenylist(normaliseHost(host), check.denied)) {
209
+ throw new MicropageError("INVALID_SOURCE", `source.url host ${url.hostname} is not fetched by this server. Pass the image from another public https host, ` +
210
+ `or upload it with ${check.localAlternative}. Nothing was fetched.`);
211
+ }
212
+ if (!check.lookup)
213
+ return;
276
214
  let addresses;
277
215
  try {
278
- addresses = await lookupHost(host);
216
+ addresses = await check.lookup(host);
279
217
  }
280
218
  catch (err) {
281
219
  throw new MicropageError("NETWORK", `Could not resolve ${host}: ${err instanceof Error ? err.message : String(err)}. Check the URL.`, {
@@ -289,7 +227,7 @@ async function assertPublicHost(url, lookupHost, redirected) {
289
227
  throw refuse(bad.address);
290
228
  }
291
229
  const REDIRECT_STATUSES = new Set([301, 302, 303, 307, 308]);
292
- async function loadUrl(raw, { maxBytes, timeoutMs, fetchImpl, lookup: lookupHost }) {
230
+ async function loadUrl(raw, { maxBytes, timeoutMs, fetchImpl, ...check }) {
293
231
  let url;
294
232
  try {
295
233
  url = new URL(raw);
@@ -300,7 +238,7 @@ async function loadUrl(raw, { maxBytes, timeoutMs, fetchImpl, lookup: lookupHost
300
238
  const signal = AbortSignal.timeout(timeoutMs);
301
239
  let res;
302
240
  for (let hop = 0;; hop++) {
303
- await assertPublicHost(url, lookupHost, hop > 0);
241
+ await assertPublicHost(url, check, hop > 0);
304
242
  try {
305
243
  res = await fetchImpl(url.toString(), {
306
244
  method: "GET",
@@ -346,7 +284,7 @@ async function loadUrl(raw, { maxBytes, timeoutMs, fetchImpl, lookup: lookupHost
346
284
  const declared = Number(res.headers.get("content-length"));
347
285
  if (Number.isFinite(declared) && declared > maxBytes) {
348
286
  await res.body?.cancel().catch(() => undefined);
349
- throw tooLarge(declared, maxBytes);
287
+ throw assetTooLarge(declared, maxBytes);
350
288
  }
351
289
  // Content-Length can be absent or wrong, so the cap is enforced while reading.
352
290
  const chunks = [];
@@ -361,7 +299,7 @@ async function loadUrl(raw, { maxBytes, timeoutMs, fetchImpl, lookup: lookupHost
361
299
  total += value.byteLength;
362
300
  if (total > maxBytes) {
363
301
  await reader.cancel().catch(() => undefined);
364
- throw tooLarge(`over ${formatMb(maxBytes)}`, maxBytes);
302
+ throw assetTooLarge(`over ${formatMb(maxBytes)}`, maxBytes);
365
303
  }
366
304
  chunks.push(value);
367
305
  }
@@ -403,7 +341,7 @@ export async function deleteFile(http, fileId) {
403
341
  /** Multipart body exactly as the CLI's uploadAssetWithToken builds it. */
404
342
  export function buildUploadForm(projectId, filename, bytes, contentHash) {
405
343
  const form = new FormData();
406
- form.append("file", new Blob([new Uint8Array(bytes)], { type: mimeTypeFor(filename) }), filename);
344
+ form.append("file", new Blob([bytes], { type: mimeTypeFor(filename) }), filename);
407
345
  form.append("project_id", String(projectId));
408
346
  form.append("content_hash", contentHash);
409
347
  return form;
@@ -1 +1 @@
1
- {"version":3,"file":"assets.js","sourceRoot":"","sources":["../../src/client/assets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"assets.js","sourceRoot":"","sources":["../../src/client/assets.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,17 @@
1
- export type AuthMode = "session" | "deploy_token" | "none";
1
+ import { type ModeHints } from "../hints.js";
2
+ export type AuthMode = "session" | "deploy_token" | "oauth" | "none";
3
+ export declare const LOGIN_HINT = "Run `micropage login` in a terminal, then retry.";
2
4
  /**
3
5
  * Where access tokens come from. Injected into Http so the same client code
4
- * serves the stdio server (CLI session file or deploy token) and a future
5
- * remote server (OAuth bearer per request).
6
+ * serves the stdio server (CLI session file or deploy token) and the remote
7
+ * server (an OAuth bearer per request).
6
8
  */
7
9
  export interface AuthProvider {
8
10
  readonly mode: AuthMode;
9
11
  /** Set in deploy-token mode: the only project this process may touch. */
10
12
  readonly pinnedProjectUuid?: string;
13
+ /** Set in session mode: the CLI session file in use. */
14
+ readonly sessionPath?: string;
11
15
  /**
12
16
  * A currently valid access token. With `forceRefresh` the provider must
13
17
  * not return its cached token without first trying to obtain a new one;
@@ -17,6 +21,8 @@ export interface AuthProvider {
17
21
  forceRefresh?: boolean;
18
22
  }): Promise<string>;
19
23
  }
24
+ /** The signed-in user's id, read from the current access token's `sub`. */
25
+ export declare function currentUserId(auth: AuthProvider, hints?: Pick<ModeHints, "tokenNoUser">): Promise<string>;
20
26
  /** Placeholder used until a real provider is resolved: every call explains how to log in. */
21
27
  export declare class NoAuthProvider implements AuthProvider {
22
28
  readonly mode: "none";
@@ -1,4 +1,15 @@
1
+ import { STDIO_HINTS } from "../hints.js";
1
2
  import { MicropageError } from "./errors.js";
3
+ import { decodeJwtClaims } from "./jwt.js";
4
+ export const LOGIN_HINT = "Run `micropage login` in a terminal, then retry.";
5
+ /** The signed-in user's id, read from the current access token's `sub`. */
6
+ export async function currentUserId(auth, hints = STDIO_HINTS) {
7
+ const sub = decodeJwtClaims(await auth.getAccessToken())?.sub;
8
+ if (typeof sub !== "string" || !sub) {
9
+ throw new MicropageError("SESSION_EXPIRED", hints.tokenNoUser);
10
+ }
11
+ return sub;
12
+ }
2
13
  /** Placeholder used until a real provider is resolved: every call explains how to log in. */
3
14
  export class NoAuthProvider {
4
15
  mode = "none";
@@ -1 +1 @@
1
- {"version":3,"file":"auth-provider.js","sourceRoot":"","sources":["../../src/client/auth-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAqB7C,6FAA6F;AAC7F,MAAM,OAAO,cAAc;IAChB,IAAI,GAAG,MAAe,CAAC;IAEhC,KAAK,CAAC,cAAc;QAClB,MAAM,IAAI,cAAc,CACtB,eAAe,EACf,kFAAkF;YAChF,2EAA2E,CAC9E,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"auth-provider.js","sourceRoot":"","sources":["../../src/client/auth-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAI3C,MAAM,CAAC,MAAM,UAAU,GAAG,kDAAkD,CAAC;AAqB7E,2EAA2E;AAC3E,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAkB,EAAE,QAAwC,WAAW;IACzG,MAAM,GAAG,GAAG,eAAe,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,EAAE,GAAG,CAAC;IAC9D,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC;QACpC,MAAM,IAAI,cAAc,CAAC,iBAAiB,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,6FAA6F;AAC7F,MAAM,OAAO,cAAc;IAChB,IAAI,GAAG,MAAe,CAAC;IAEhC,KAAK,CAAC,cAAc;QAClB,MAAM,IAAI,cAAc,CACtB,eAAe,EACf,kFAAkF;YAChF,2EAA2E,CAC9E,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,16 @@
1
+ import type { AuthProvider } from "./auth-provider.js";
2
+ export declare const REAUTH_MESSAGE: string;
3
+ /**
4
+ * Serves one access token that the caller already verified (the remote
5
+ * server checks each request's bearer before building deps). It cannot
6
+ * refresh: the refresh token belongs to the MCP client, so a token the API
7
+ * rejects ends the request with AUTH_EXPIRED and the client re-authenticates.
8
+ */
9
+ export declare class BearerAuthProvider implements AuthProvider {
10
+ readonly mode: "oauth";
11
+ private readonly accessToken;
12
+ constructor(accessToken: string);
13
+ getAccessToken(options?: {
14
+ forceRefresh?: boolean;
15
+ }): Promise<string>;
16
+ }
@@ -0,0 +1,24 @@
1
+ import { MicropageError } from "./errors.js";
2
+ export const REAUTH_MESSAGE = "The micropage authorization for this connection has expired or was revoked. Ask the user to reconnect " +
3
+ "(re-authenticate) the micropage connector in their MCP client, then retry. Nothing was changed by the failed call.";
4
+ /**
5
+ * Serves one access token that the caller already verified (the remote
6
+ * server checks each request's bearer before building deps). It cannot
7
+ * refresh: the refresh token belongs to the MCP client, so a token the API
8
+ * rejects ends the request with AUTH_EXPIRED and the client re-authenticates.
9
+ */
10
+ export class BearerAuthProvider {
11
+ mode = "oauth";
12
+ accessToken;
13
+ constructor(accessToken) {
14
+ if (!accessToken.trim())
15
+ throw new MicropageError("AUTH_EXPIRED", REAUTH_MESSAGE);
16
+ this.accessToken = accessToken;
17
+ }
18
+ async getAccessToken(options = {}) {
19
+ if (options.forceRefresh)
20
+ throw new MicropageError("AUTH_EXPIRED", REAUTH_MESSAGE, { status: 401 });
21
+ return this.accessToken;
22
+ }
23
+ }
24
+ //# sourceMappingURL=bearer-auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bearer-auth.js","sourceRoot":"","sources":["../../src/client/bearer-auth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,CAAC,MAAM,cAAc,GACzB,wGAAwG;IACxG,oHAAoH,CAAC;AAEvH;;;;;GAKG;AACH,MAAM,OAAO,kBAAkB;IACpB,IAAI,GAAG,OAAgB,CAAC;IAChB,WAAW,CAAS;IAErC,YAAY,WAAmB;QAC7B,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;YAAE,MAAM,IAAI,cAAc,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;QAClF,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,UAAsC,EAAE;QAC3D,IAAI,OAAO,CAAC,YAAY;YAAE,MAAM,IAAI,cAAc,CAAC,cAAc,EAAE,cAAc,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACpG,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;CACF"}
@@ -1,3 +1,4 @@
1
+ import { type ModeHints } from "../hints.js";
1
2
  import type { AuthProvider } from "./auth-provider.js";
2
3
  import type { MicropageConfig } from "./config.js";
3
4
  import type { FetchLike } from "./http.js";
@@ -20,6 +21,8 @@ export interface DeployTokenAuthOptions extends DeployTokenEnv {
20
21
  now?: () => number;
21
22
  ttlSeconds?: number;
22
23
  timeoutMs?: number;
24
+ /** What a refused exchange tells the user to check. Defaults to the stdio wording (env vars). */
25
+ hints?: Pick<ModeHints, "deployTokenCheck" | "deployProjectCheck">;
23
26
  }
24
27
  /**
25
28
  * Exchanges a project deploy token for a short-lived owner JWT
@@ -38,9 +41,12 @@ export declare class DeployTokenAuthProvider implements AuthProvider {
38
41
  private readonly now;
39
42
  private readonly ttlSeconds;
40
43
  private readonly timeoutMs;
44
+ private readonly hints;
41
45
  private cached;
42
46
  private inflight;
43
47
  constructor(options: DeployTokenAuthOptions);
48
+ /** True when getAccessToken() would answer from the cached JWT, without an exchange. */
49
+ hasFreshToken(): boolean;
44
50
  getAccessToken(options?: {
45
51
  forceRefresh?: boolean;
46
52
  }): Promise<string>;
@@ -1,3 +1,4 @@
1
+ import { STDIO_HINTS } from "../hints.js";
1
2
  import { VERSION } from "../version.js";
2
3
  import { MicropageError, planRequiredError } from "./errors.js";
3
4
  import { isProjectUuid } from "./project-ref.js";
@@ -44,6 +45,7 @@ export class DeployTokenAuthProvider {
44
45
  now;
45
46
  ttlSeconds;
46
47
  timeoutMs;
48
+ hints;
47
49
  cached = null;
48
50
  inflight = null;
49
51
  constructor(options) {
@@ -54,10 +56,15 @@ export class DeployTokenAuthProvider {
54
56
  this.now = options.now ?? Date.now;
55
57
  this.ttlSeconds = options.ttlSeconds ?? DEPLOY_TOKEN_TTL_SECONDS;
56
58
  this.timeoutMs = options.timeoutMs ?? 20_000;
59
+ this.hints = options.hints ?? STDIO_HINTS;
60
+ }
61
+ /** True when getAccessToken() would answer from the cached JWT, without an exchange. */
62
+ hasFreshToken() {
63
+ return this.cached !== null && this.cached.expiresAtMs - REEXCHANGE_SKEW_MS > this.now();
57
64
  }
58
65
  async getAccessToken(options = {}) {
59
66
  const cached = this.cached;
60
- if (!options.forceRefresh && cached && cached.expiresAtMs - REEXCHANGE_SKEW_MS > this.now()) {
67
+ if (!options.forceRefresh && cached && this.hasFreshToken()) {
61
68
  return cached.accessToken;
62
69
  }
63
70
  this.inflight ??= this.exchange(options.forceRefresh ? cached?.accessToken : undefined).finally(() => {
@@ -101,11 +108,10 @@ export class DeployTokenAuthProvider {
101
108
  if (planRequired)
102
109
  throw planRequired;
103
110
  if (res.status === 401 || res.status === 403) {
104
- throw new MicropageError("DEPLOY_TOKEN_INVALID", `The deploy token was rejected (${detail}). Ask the user to check MICROPAGE_DEPLOY_TOKEN, or to create a new ` +
105
- `token in the micropage editor under Settings > Deploy tokens.`, { status: res.status, data });
111
+ throw new MicropageError("DEPLOY_TOKEN_INVALID", `The deploy token was rejected (${detail}). ${this.hints.deployTokenCheck}`, { status: res.status, data });
106
112
  }
107
113
  if (res.status === 404) {
108
- throw new MicropageError("DEPLOY_TOKEN_INVALID", `No project with uuid ${this.pinnedProjectUuid} exists (${detail}). Ask the user to check MICROPAGE_DEPLOY_PROJECT.`, { status: 404, data });
114
+ throw new MicropageError("DEPLOY_TOKEN_INVALID", `No project with uuid ${this.pinnedProjectUuid} exists (${detail}). ${this.hints.deployProjectCheck}`, { status: 404, data });
109
115
  }
110
116
  if (!res.ok) {
111
117
  throw new MicropageError("HTTP", `Exchanging the deploy token failed (HTTP ${res.status}): ${detail}`, {
@@ -1 +1 @@
1
- {"version":3,"file":"deploy-token.js","sourceRoot":"","sources":["../../src/client/deploy-token.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deploy-token.js","sourceRoot":"","sources":["../../src/client/deploy-token.ts"],"names":[],"mappings":"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"}