@monnet/mcp 0.7.1 → 0.8.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.
Files changed (53) hide show
  1. package/README.md +19 -1
  2. package/assets/monnet-init.md +37 -0
  3. package/dist/cli/env.d.ts +13 -0
  4. package/dist/cli/env.js +44 -0
  5. package/dist/cli/env.js.map +1 -0
  6. package/dist/cli/install.d.ts +10 -0
  7. package/dist/cli/install.js +76 -0
  8. package/dist/cli/install.js.map +1 -0
  9. package/dist/cli/io.d.ts +18 -0
  10. package/dist/cli/io.js +30 -0
  11. package/dist/cli/io.js.map +1 -0
  12. package/dist/cli/login.d.ts +14 -0
  13. package/dist/cli/login.js +77 -0
  14. package/dist/cli/login.js.map +1 -0
  15. package/dist/cli/onboarding.d.ts +41 -0
  16. package/dist/cli/onboarding.js +145 -0
  17. package/dist/cli/onboarding.js.map +1 -0
  18. package/dist/cli/run.d.ts +11 -0
  19. package/dist/cli/run.js +35 -0
  20. package/dist/cli/run.js.map +1 -0
  21. package/dist/cli/test-home.d.ts +8 -0
  22. package/dist/cli/test-home.js +17 -0
  23. package/dist/cli/test-home.js.map +1 -0
  24. package/dist/cli/test-io.d.ts +21 -0
  25. package/dist/cli/test-io.js +32 -0
  26. package/dist/cli/test-io.js.map +1 -0
  27. package/dist/cli.d.ts +2 -0
  28. package/dist/cli.js +12 -0
  29. package/dist/cli.js.map +1 -0
  30. package/dist/client.d.ts +22 -1
  31. package/dist/client.js +56 -19
  32. package/dist/client.js.map +1 -1
  33. package/dist/config.d.ts +17 -0
  34. package/dist/config.js +23 -0
  35. package/dist/config.js.map +1 -0
  36. package/dist/index.js +2 -1
  37. package/dist/index.js.map +1 -1
  38. package/dist/test-env.d.ts +4 -7
  39. package/dist/test-env.js +4 -7
  40. package/dist/test-env.js.map +1 -1
  41. package/dist/tools/list-workspaces.js +26 -8
  42. package/dist/tools/list-workspaces.js.map +1 -1
  43. package/dist/tools/wiki/_common.d.ts +10 -0
  44. package/dist/tools/wiki/_common.js +10 -0
  45. package/dist/tools/wiki/_common.js.map +1 -1
  46. package/dist/tools/wiki/read.js +2 -2
  47. package/dist/tools/wiki/read.js.map +1 -1
  48. package/dist/tools/wiki/write.js +29 -17
  49. package/dist/tools/wiki/write.js.map +1 -1
  50. package/dist/version.d.ts +13 -0
  51. package/dist/version.js +26 -0
  52. package/dist/version.js.map +1 -0
  53. package/package.json +5 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/cli/run.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,IAAI,EAAW,MAAM,SAAS,CAAC;AACnD,OAAO,EACL,iBAAiB,EACjB,MAAM,EACN,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,MAAM,EACN,WAAW,GACZ,MAAM,iBAAiB,CAAC;AAIzB,MAAM,CAAC,MAAM,QAAQ,GAA4B;IAC/C,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAC5B,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;IACtB,cAAc,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC;IACvC,cAAc,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7E,mBAAmB,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,EAAE,EAAE,IAAI,CAAC;IAC7D,gBAAgB,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC;IACvD,gBAAgB,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC;IAC3C,MAAM,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC;IACtC,qBAAqB,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,EAAE,IAAI,CAAC;IAChE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;CAC3B,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG,kBAAkB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAE1E,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,IAAc,EAAE,KAAS,SAAS,EAAE;IAC5D,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAChC,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC3D,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACd,OAAO;IACT,CAAC;IACD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAClC,IAAI,CAAC,OAAO;QAAE,IAAI,CAAC,oBAAoB,OAAO,MAAM,KAAK,EAAE,CAAC,CAAC;IAC7D,MAAM,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Imported FIRST by every CLI test file.
3
+ *
4
+ * `config.ts` resolves ~/.config/monnet at import time, so the home
5
+ * directory has to be redirected before it loads — otherwise a test run
6
+ * would read, and overwrite, the developer's real Monnet credential.
7
+ */
8
+ export declare const TEST_HOME: string;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Imported FIRST by every CLI test file.
3
+ *
4
+ * `config.ts` resolves ~/.config/monnet at import time, so the home
5
+ * directory has to be redirected before it loads — otherwise a test run
6
+ * would read, and overwrite, the developer's real Monnet credential.
7
+ */
8
+ import { mkdtempSync } from "node:fs";
9
+ import { tmpdir } from "node:os";
10
+ import { join } from "node:path";
11
+ export const TEST_HOME = mkdtempSync(join(tmpdir(), "monnet-cli-home-"));
12
+ process.env.HOME = TEST_HOME;
13
+ process.env.USERPROFILE = TEST_HOME;
14
+ process.env.MONNET_API_URL = "https://api.monnet.test";
15
+ process.env.MONNET_APP_URL = "https://app.monnet.test";
16
+ delete process.env.MONNET_API_KEY;
17
+ //# sourceMappingURL=test-home.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-home.js","sourceRoot":"","sources":["../../src/cli/test-home.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,CAAC,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,kBAAkB,CAAC,CAAC,CAAC;AAEzE,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,SAAS,CAAC;AAC7B,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,SAAS,CAAC;AACpC,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,yBAAyB,CAAC;AACvD,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,yBAAyB,CAAC;AACvD,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { Io } from "./io.js";
2
+ export interface RecordingIo extends Io {
3
+ outputs: unknown[];
4
+ errors: string[];
5
+ opened: string[];
6
+ stdin: string;
7
+ /** Last JSON payload the command emitted on stdout. */
8
+ last(): Record<string, unknown>;
9
+ }
10
+ export declare function recordingIo(stdin?: string): RecordingIo;
11
+ export interface StubbedCall {
12
+ method: string;
13
+ path: string;
14
+ body: unknown;
15
+ headers: Record<string, string>;
16
+ }
17
+ /** Replaces global fetch with a scripted responder, and records every call. */
18
+ export declare function stubFetch(responder: (call: StubbedCall) => {
19
+ status?: number;
20
+ body?: unknown;
21
+ }): StubbedCall[];
@@ -0,0 +1,32 @@
1
+ export function recordingIo(stdin = "") {
2
+ const io = {
3
+ outputs: [],
4
+ errors: [],
5
+ opened: [],
6
+ stdin,
7
+ out: (value) => { io.outputs.push(value); },
8
+ err: (text) => { io.errors.push(text); },
9
+ open: (url) => { io.opened.push(url); },
10
+ sleep: async () => { },
11
+ readStdin: async () => io.stdin,
12
+ last: () => io.outputs[io.outputs.length - 1],
13
+ };
14
+ return io;
15
+ }
16
+ /** Replaces global fetch with a scripted responder, and records every call. */
17
+ export function stubFetch(responder) {
18
+ const calls = [];
19
+ globalThis.fetch = (async (url, options = {}) => {
20
+ const call = {
21
+ method: options.method || "GET",
22
+ path: String(url).replace(/^https:\/\/api\.monnet\.test/, ""),
23
+ body: options.body ? JSON.parse(String(options.body)) : undefined,
24
+ headers: (options.headers || {}),
25
+ };
26
+ calls.push(call);
27
+ const { status = 200, body = {} } = responder(call);
28
+ return { ok: status < 400, status, json: async () => body };
29
+ });
30
+ return calls;
31
+ }
32
+ //# sourceMappingURL=test-io.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-io.js","sourceRoot":"","sources":["../../src/cli/test-io.ts"],"names":[],"mappings":"AAWA,MAAM,UAAU,WAAW,CAAC,KAAK,GAAG,EAAE;IACpC,MAAM,EAAE,GAAgB;QACtB,OAAO,EAAE,EAAE;QACX,MAAM,EAAE,EAAE;QACV,MAAM,EAAE,EAAE;QACV,KAAK;QACL,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3C,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACvC,KAAK,EAAE,KAAK,IAAI,EAAE,GAA0B,CAAC;QAC7C,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC,KAAK;QAC/B,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAA4B;KACzE,CAAC;IACF,OAAO,EAAE,CAAC;AACZ,CAAC;AASD,+EAA+E;AAC/E,MAAM,UAAU,SAAS,CACvB,SAAqE;IAErE,MAAM,KAAK,GAAkB,EAAE,CAAC;IAChC,UAAU,CAAC,KAAK,GAAG,CAAC,KAAK,EAAE,GAAW,EAAE,UAAuB,EAAE,EAAE,EAAE;QACnE,MAAM,IAAI,GAAgB;YACxB,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK;YAC/B,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,8BAA8B,EAAE,EAAE,CAAC;YAC7D,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;YACjE,OAAO,EAAE,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAA2B;SAC3D,CAAC;QACF,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QACpD,OAAO,EAAE,EAAE,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;IAC9D,CAAC,CAAU,CAAC;IACZ,OAAO,KAAK,CAAC;AACf,CAAC"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
package/dist/cli.js ADDED
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env node
2
+ import { CliFailure } from "./cli/io.js";
3
+ import { run } from "./cli/run.js";
4
+ try {
5
+ await run(process.argv.slice(2));
6
+ }
7
+ catch (error) {
8
+ const message = error instanceof CliFailure || error instanceof Error ? error.message : String(error);
9
+ process.stderr.write(`monnet: ${message}\n`);
10
+ process.exit(1);
11
+ }
12
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAEnC,IAAI,CAAC;IACH,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACf,MAAM,OAAO,GAAG,KAAK,YAAY,UAAU,IAAI,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,OAAO,IAAI,CAAC,CAAC;IAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
package/dist/client.d.ts CHANGED
@@ -1,13 +1,34 @@
1
1
  /**
2
2
  * Thin HTTP client that wraps the Monnet backend with X-API-Key auth.
3
3
  *
4
- * Both env vars come from the MCP client's config JSON, not from a shell
4
+ * The env vars come from the MCP client's config JSON, not from a shell
5
5
  * .env — the MCP server is spawned by Claude Desktop / Cursor with this env.
6
+ * When they are absent we fall back to the credential `monnet init` saved,
7
+ * read on every call rather than at import: the server is usually spawned
8
+ * BEFORE `/monnet-init` runs, and a key written afterwards has to be picked
9
+ * up by a live process. Exiting at import instead would leave the user with
10
+ * a dead MCP server for the rest of their session.
6
11
  */
7
12
  export declare class MonnetApiError extends Error {
8
13
  status: number;
9
14
  constructor(status: number, message: string);
10
15
  }
16
+ /**
17
+ * The backend's error text, whichever of FastAPI's two shapes it arrives in.
18
+ *
19
+ * A raised `HTTPException` gives `{"detail": "a sentence"}`. A REQUEST
20
+ * VALIDATION failure gives `{"detail": [{loc, msg, type}, …]}` — a list, which
21
+ * the string check dropped on the floor. The caller then got the bare status
22
+ * word: `search_wiki` answered "Invalid input." and named neither the parameter
23
+ * nor the problem, which is exactly the case where the message has to say what
24
+ * to fix. A published client that stops sending a now-required query parameter
25
+ * looks, from here, like nothing at all.
26
+ *
27
+ * The last element of `loc` is the field; the ones before it are the location
28
+ * ("query", "body"), which is noise to a reader who only has one place to put
29
+ * it.
30
+ */
31
+ export declare function readDetail(parsed: unknown): string | null;
11
32
  export declare function apiFetch<T>(path: string, options?: RequestInit, timeoutMs?: number): Promise<T>;
12
33
  /**
13
34
  * POST that may return SSE (when Monnet is triggered by the message).
package/dist/client.js CHANGED
@@ -1,16 +1,15 @@
1
1
  /**
2
2
  * Thin HTTP client that wraps the Monnet backend with X-API-Key auth.
3
3
  *
4
- * Both env vars come from the MCP client's config JSON, not from a shell
4
+ * The env vars come from the MCP client's config JSON, not from a shell
5
5
  * .env — the MCP server is spawned by Claude Desktop / Cursor with this env.
6
+ * When they are absent we fall back to the credential `monnet init` saved,
7
+ * read on every call rather than at import: the server is usually spawned
8
+ * BEFORE `/monnet-init` runs, and a key written afterwards has to be picked
9
+ * up by a live process. Exiting at import instead would leave the user with
10
+ * a dead MCP server for the rest of their session.
6
11
  */
7
- const MONNET_API_URL = (process.env.MONNET_API_URL || "https://api.monnet.ai").replace(/\/$/, "");
8
- const MONNET_API_KEY = process.env.MONNET_API_KEY;
9
- if (!MONNET_API_KEY) {
10
- process.stderr.write("Error: MONNET_API_KEY environment variable is not set.\n" +
11
- "Generate one at https://app.monnet.ai/settings and add it to your MCP client config.\n");
12
- process.exit(1);
13
- }
12
+ import { readConfig } from "./config.js";
14
13
  export class MonnetApiError extends Error {
15
14
  status;
16
15
  constructor(status, message) {
@@ -19,6 +18,17 @@ export class MonnetApiError extends Error {
19
18
  this.name = "MonnetApiError";
20
19
  }
21
20
  }
21
+ const NOT_CONNECTED = "This machine is not connected to Monnet yet. Run `/monnet-init` (or `npx -y @monnet/mcp init`) " +
22
+ "to connect it, or set MONNET_API_KEY to a key from https://app.monnet.ai/settings.";
23
+ function apiUrl() {
24
+ return (process.env.MONNET_API_URL || readConfig().apiUrl || "https://api.monnet.ai").replace(/\/$/, "");
25
+ }
26
+ function apiKey() {
27
+ const key = process.env.MONNET_API_KEY || readConfig().apiKey;
28
+ if (!key)
29
+ throw new MonnetApiError(401, NOT_CONNECTED);
30
+ return key;
31
+ }
22
32
  function friendlyMessage(status, detail) {
23
33
  // Backend-supplied detail is always preferred for client errors that carry
24
34
  // actionable info (permission denials, validation errors, not-found hints).
@@ -45,17 +55,49 @@ function friendlyMessage(status, detail) {
45
55
  return `Monnet API ${status}${fallback}`;
46
56
  }
47
57
  }
58
+ /**
59
+ * The backend's error text, whichever of FastAPI's two shapes it arrives in.
60
+ *
61
+ * A raised `HTTPException` gives `{"detail": "a sentence"}`. A REQUEST
62
+ * VALIDATION failure gives `{"detail": [{loc, msg, type}, …]}` — a list, which
63
+ * the string check dropped on the floor. The caller then got the bare status
64
+ * word: `search_wiki` answered "Invalid input." and named neither the parameter
65
+ * nor the problem, which is exactly the case where the message has to say what
66
+ * to fix. A published client that stops sending a now-required query parameter
67
+ * looks, from here, like nothing at all.
68
+ *
69
+ * The last element of `loc` is the field; the ones before it are the location
70
+ * ("query", "body"), which is noise to a reader who only has one place to put
71
+ * it.
72
+ */
73
+ export function readDetail(parsed) {
74
+ if (!parsed || typeof parsed !== "object")
75
+ return null;
76
+ const detail = parsed.detail;
77
+ if (typeof detail === "string")
78
+ return detail;
79
+ if (!Array.isArray(detail))
80
+ return null;
81
+ const issues = detail
82
+ .filter((i) => !!i && typeof i === "object")
83
+ .map((issue) => {
84
+ const field = Array.isArray(issue.loc) ? issue.loc[issue.loc.length - 1] : undefined;
85
+ const message = issue.msg || "invalid";
86
+ return field === undefined ? message : `${String(field)}: ${message}`;
87
+ });
88
+ return issues.length ? issues.join("; ") : null;
89
+ }
48
90
  const DEFAULT_TIMEOUT_MS = 30_000;
49
91
  export async function apiFetch(path, options = {}, timeoutMs = DEFAULT_TIMEOUT_MS) {
50
92
  const controller = new AbortController();
51
93
  const timer = setTimeout(() => controller.abort(), timeoutMs);
52
94
  let response;
53
95
  try {
54
- response = await fetch(`${MONNET_API_URL}${path}`, {
96
+ response = await fetch(`${apiUrl()}${path}`, {
55
97
  ...options,
56
98
  signal: controller.signal,
57
99
  headers: {
58
- "X-API-Key": MONNET_API_KEY,
100
+ "X-API-Key": apiKey(),
59
101
  "Content-Type": "application/json",
60
102
  ...options.headers,
61
103
  },
@@ -71,14 +113,9 @@ export async function apiFetch(path, options = {}, timeoutMs = DEFAULT_TIMEOUT_M
71
113
  clearTimeout(timer);
72
114
  }
73
115
  if (!response.ok) {
74
- // FastAPI returns errors as {"detail": "..."} — grab it if present,
75
- // otherwise fall back to a generic message for this status.
76
116
  let detail = null;
77
117
  try {
78
- const parsed = await response.json();
79
- if (parsed && typeof parsed.detail === "string") {
80
- detail = parsed.detail;
81
- }
118
+ detail = readDetail(await response.json());
82
119
  }
83
120
  catch {
84
121
  // Non-JSON body — ignore.
@@ -101,11 +138,11 @@ export async function apiPostWithSSE(path, body) {
101
138
  const timer = setTimeout(() => controller.abort(), 120_000);
102
139
  let response;
103
140
  try {
104
- response = await fetch(`${MONNET_API_URL}${path}`, {
141
+ response = await fetch(`${apiUrl()}${path}`, {
105
142
  method: "POST",
106
143
  signal: controller.signal,
107
144
  headers: {
108
- "X-API-Key": MONNET_API_KEY,
145
+ "X-API-Key": apiKey(),
109
146
  "Content-Type": "application/json",
110
147
  },
111
148
  body: JSON.stringify(body),
@@ -187,7 +224,7 @@ export async function apiPostWithSSE(path, body) {
187
224
  * three, and this is this surface's one place to change.
188
225
  */
189
226
  export function motionFileRenderUrl(workspaceId, motionId, fileId) {
190
- return `${MONNET_API_URL}/workspaces/${workspaceId}/motions/${motionId}/files/${fileId}/render`;
227
+ return `${apiUrl()}/workspaces/${workspaceId}/motions/${motionId}/files/${fileId}/render`;
191
228
  }
192
229
  /**
193
230
  * Resolve a workspace slug to its workspace_id via GET /workspaces/by-slug/{slug}.
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,cAAc,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,uBAAuB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAClG,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;AAElD,IAAI,CAAC,cAAc,EAAE,CAAC;IACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,0DAA0D;QAC1D,wFAAwF,CACzF,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,OAAO,cAAe,SAAQ,KAAK;IACpB;IAAnB,YAAmB,MAAc,EAAE,OAAe;QAChD,KAAK,CAAC,OAAO,CAAC,CAAC;QADE,WAAM,GAAN,MAAM,CAAQ;QAE/B,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,SAAS,eAAe,CAAC,MAAc,EAAE,MAAqB;IAC5D,2EAA2E;IAC3E,4EAA4E;IAC5E,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7C,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,GAAG;YACN,OAAO,CACL,sDAAsD;gBACtD,qEAAqE,CACtE,CAAC;QACJ,KAAK,GAAG;YACN,OAAO,mDAAmD,QAAQ,qEAAqE,CAAC;QAC1I,KAAK,GAAG;YACN,OAAO,YAAY,QAAQ,iDAAiD,CAAC;QAC/E,KAAK,GAAG;YACN,OAAO,WAAW,QAAQ,GAAG,CAAC;QAChC,KAAK,GAAG;YACN,OAAO,gBAAgB,QAAQ,GAAG,CAAC;QACrC,KAAK,GAAG;YACN,OAAO,8DAA8D,CAAC;QACxE,KAAK,GAAG,CAAC;QACT,KAAK,GAAG,CAAC;QACT,KAAK,GAAG;YACN,OAAO,wEAAwE,CAAC;QAClF;YACE,OAAO,cAAc,MAAM,GAAG,QAAQ,EAAE,CAAC;IAC7C,CAAC;AACH,CAAC;AAED,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAElC,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAI,IAAY,EAAE,UAAuB,EAAE,EAAE,SAAS,GAAG,kBAAkB;IACvG,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;IAE9D,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,cAAc,GAAG,IAAI,EAAE,EAAE;YACjD,GAAG,OAAO;YACV,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,OAAO,EAAE;gBACP,WAAW,EAAE,cAAwB;gBACrC,cAAc,EAAE,kBAAkB;gBAClC,GAAG,OAAO,CAAC,OAAO;aACnB;SACF,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACtD,MAAM,IAAI,cAAc,CAAC,CAAC,EAAE,mGAAmG,CAAC,CAAC;QACnI,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,oEAAoE;QACpE,4DAA4D;QAC5D,IAAI,MAAM,GAAkB,IAAI,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACrC,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAChD,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YACzB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,0BAA0B;QAC5B,CAAC;QACD,MAAM,IAAI,cAAc,CAAC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACtF,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG;QAAE,OAAO,SAAc,CAAC;IACnD,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAM,CAAC;AACtC,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAY,EAAE,IAAa;IAC9D,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,oEAAoE;IACpE,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;IAE5D,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,cAAc,GAAG,IAAI,EAAE,EAAE;YACjD,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,OAAO,EAAE;gBACP,WAAW,EAAE,cAAwB;gBACrC,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACtD,MAAM,IAAI,cAAc,CAAC,CAAC,EAAE,sFAAsF,CAAC,CAAC;QACtH,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,IAAI,MAAM,GAAkB,IAAI,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACrC,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ;gBAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC1E,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QACxB,MAAM,IAAI,cAAc,CAAC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACtF,CAAC;IAED,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IAE/D,0EAA0E;IAC1E,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;IACjF,CAAC;IAED,oEAAoE;IACpE,2EAA2E;IAC3E,2EAA2E;IAC3E,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACvC,IAAI,UAAU,GAAG,EAAE,CAAC;IACpB,IAAI,WAAW,GAAG,EAAE,CAAC;IACrB,IAAI,SAAS,GAAG,EAAE,CAAC;IAEnB,KAAK,MAAM,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;QACpD,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;YAAE,SAAS;QAC/B,IAAI,SAAS,GAAG,SAAS,CAAC;QAC1B,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3C,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;gBAAE,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;iBAC3D,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;gBAAE,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;QACvE,CAAC;QACD,IAAI,SAAS,KAAK,oBAAoB,IAAI,IAAI,EAAE,CAAC;YAC/C,IAAI,CAAC;gBAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QAC9E,CAAC;aAAM,IAAI,SAAS,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC;YACxC,IAAI,CAAC;gBAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QAC7E,CAAC;aAAM,IAAI,SAAS,KAAK,OAAO,IAAI,IAAI,EAAE,CAAC;YACzC,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;IACH,CAAC;IAED,IAAI,SAAS,IAAI,CAAC,UAAU,EAAE,CAAC;QAC7B,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,SAAS,EAAE,EAAE,CAAC;IACrE,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,IAAI,IAAI,EAAE,CAAC;AACtE,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,mBAAmB,CAAC,WAAmB,EAAE,QAAgB,EAAE,MAAc;IACvF,OAAO,GAAG,cAAc,eAAe,WAAW,YAAY,QAAQ,UAAU,MAAM,SAAS,CAAC;AAClG,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;AAE7C,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAY;IACnD,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAiB,uBAAuB,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7F,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IAC5B,OAAO,EAAE,CAAC,EAAE,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,IAAI,aAAa,GAAkB,IAAI,CAAC;AAExC,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,IAAI,aAAa;QAAE,OAAO,aAAa,CAAC;IACxC,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAkB,KAAK,CAAC,CAAC;IAClD,aAAa,GAAG,EAAE,CAAC,GAAG,CAAC;IACvB,OAAO,EAAE,CAAC,GAAG,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,OAAO,cAAe,SAAQ,KAAK;IACpB;IAAnB,YAAmB,MAAc,EAAE,OAAe;QAChD,KAAK,CAAC,OAAO,CAAC,CAAC;QADE,WAAM,GAAN,MAAM,CAAQ;QAE/B,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,MAAM,aAAa,GACjB,iGAAiG;IACjG,oFAAoF,CAAC;AAEvF,SAAS,MAAM;IACb,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,UAAU,EAAE,CAAC,MAAM,IAAI,uBAAuB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC3G,CAAC;AAED,SAAS,MAAM;IACb,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,UAAU,EAAE,CAAC,MAAM,CAAC;IAC9D,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,cAAc,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IACvD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,eAAe,CAAC,MAAc,EAAE,MAAqB;IAC5D,2EAA2E;IAC3E,4EAA4E;IAC5E,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7C,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,GAAG;YACN,OAAO,CACL,sDAAsD;gBACtD,qEAAqE,CACtE,CAAC;QACJ,KAAK,GAAG;YACN,OAAO,mDAAmD,QAAQ,qEAAqE,CAAC;QAC1I,KAAK,GAAG;YACN,OAAO,YAAY,QAAQ,iDAAiD,CAAC;QAC/E,KAAK,GAAG;YACN,OAAO,WAAW,QAAQ,GAAG,CAAC;QAChC,KAAK,GAAG;YACN,OAAO,gBAAgB,QAAQ,GAAG,CAAC;QACrC,KAAK,GAAG;YACN,OAAO,8DAA8D,CAAC;QACxE,KAAK,GAAG,CAAC;QACT,KAAK,GAAG,CAAC;QACT,KAAK,GAAG;YACN,OAAO,wEAAwE,CAAC;QAClF;YACE,OAAO,cAAc,MAAM,GAAG,QAAQ,EAAE,CAAC;IAC7C,CAAC;AACH,CAAC;AAOD;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,UAAU,CAAC,MAAe;IACxC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACvD,MAAM,MAAM,GAAI,MAA+B,CAAC,MAAM,CAAC;IACvD,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC;IAC9C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IACxC,MAAM,MAAM,GAAG,MAAM;SAClB,MAAM,CAAC,CAAC,CAAC,EAAwB,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC;SACjE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACrF,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,IAAI,SAAS,CAAC;QACvC,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,OAAO,EAAE,CAAC;IACxE,CAAC,CAAC,CAAC;IACL,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAClD,CAAC;AAED,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAElC,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAI,IAAY,EAAE,UAAuB,EAAE,EAAE,SAAS,GAAG,kBAAkB;IACvG,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;IAE9D,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE;YAC3C,GAAG,OAAO;YACV,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,OAAO,EAAE;gBACP,WAAW,EAAE,MAAM,EAAE;gBACrB,cAAc,EAAE,kBAAkB;gBAClC,GAAG,OAAO,CAAC,OAAO;aACnB;SACF,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACtD,MAAM,IAAI,cAAc,CAAC,CAAC,EAAE,mGAAmG,CAAC,CAAC;QACnI,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,IAAI,MAAM,GAAkB,IAAI,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,GAAG,UAAU,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC;YACP,0BAA0B;QAC5B,CAAC;QACD,MAAM,IAAI,cAAc,CAAC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACtF,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG;QAAE,OAAO,SAAc,CAAC;IACnD,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAM,CAAC;AACtC,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAY,EAAE,IAAa;IAC9D,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,oEAAoE;IACpE,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;IAE5D,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE;YAC3C,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,OAAO,EAAE;gBACP,WAAW,EAAE,MAAM,EAAE;gBACrB,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACtD,MAAM,IAAI,cAAc,CAAC,CAAC,EAAE,sFAAsF,CAAC,CAAC;QACtH,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,IAAI,MAAM,GAAkB,IAAI,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACrC,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ;gBAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC1E,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QACxB,MAAM,IAAI,cAAc,CAAC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACtF,CAAC;IAED,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IAE/D,0EAA0E;IAC1E,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;IACjF,CAAC;IAED,oEAAoE;IACpE,2EAA2E;IAC3E,2EAA2E;IAC3E,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACvC,IAAI,UAAU,GAAG,EAAE,CAAC;IACpB,IAAI,WAAW,GAAG,EAAE,CAAC;IACrB,IAAI,SAAS,GAAG,EAAE,CAAC;IAEnB,KAAK,MAAM,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;QACpD,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;YAAE,SAAS;QAC/B,IAAI,SAAS,GAAG,SAAS,CAAC;QAC1B,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3C,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;gBAAE,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;iBAC3D,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;gBAAE,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;QACvE,CAAC;QACD,IAAI,SAAS,KAAK,oBAAoB,IAAI,IAAI,EAAE,CAAC;YAC/C,IAAI,CAAC;gBAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QAC9E,CAAC;aAAM,IAAI,SAAS,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC;YACxC,IAAI,CAAC;gBAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QAC7E,CAAC;aAAM,IAAI,SAAS,KAAK,OAAO,IAAI,IAAI,EAAE,CAAC;YACzC,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;IACH,CAAC;IAED,IAAI,SAAS,IAAI,CAAC,UAAU,EAAE,CAAC;QAC7B,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,SAAS,EAAE,EAAE,CAAC;IACrE,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,IAAI,IAAI,EAAE,CAAC;AACtE,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,mBAAmB,CAAC,WAAmB,EAAE,QAAgB,EAAE,MAAc;IACvF,OAAO,GAAG,MAAM,EAAE,eAAe,WAAW,YAAY,QAAQ,UAAU,MAAM,SAAS,CAAC;AAC5F,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;AAE7C,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAY;IACnD,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAiB,uBAAuB,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7F,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IAC5B,OAAO,EAAE,CAAC,EAAE,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,IAAI,aAAa,GAAkB,IAAI,CAAC;AAExC,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,IAAI,aAAa;QAAE,OAAO,aAAa,CAAC;IACxC,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAkB,KAAK,CAAC,CAAC;IAClD,aAAa,GAAG,EAAE,CAAC,GAAG,CAAC;IACvB,OAAO,EAAE,CAAC,GAAG,CAAC;AAChB,CAAC"}
@@ -0,0 +1,17 @@
1
+ export interface MonnetConfig {
2
+ apiKey?: string;
3
+ apiUrl?: string;
4
+ appUrl?: string;
5
+ onboarding?: {
6
+ workspaceId?: string;
7
+ workspaceSlug?: string;
8
+ motionId?: string;
9
+ /** Private handle of a sign-in started but not yet completed. */
10
+ pendingDevice?: string;
11
+ step?: number;
12
+ };
13
+ }
14
+ export declare const configPath: string;
15
+ export declare function readConfig(): MonnetConfig;
16
+ export declare function writeConfig(next: MonnetConfig): void;
17
+ export declare function updateOnboarding(patch: NonNullable<MonnetConfig["onboarding"]>): void;
package/dist/config.js ADDED
@@ -0,0 +1,23 @@
1
+ import { chmodSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
2
+ import { homedir } from "node:os";
3
+ import { join } from "node:path";
4
+ const configDir = join(homedir(), ".config", "monnet");
5
+ export const configPath = join(configDir, "config.json");
6
+ export function readConfig() {
7
+ try {
8
+ return JSON.parse(readFileSync(configPath, "utf8"));
9
+ }
10
+ catch {
11
+ return {};
12
+ }
13
+ }
14
+ export function writeConfig(next) {
15
+ mkdirSync(configDir, { recursive: true, mode: 0o700 });
16
+ writeFileSync(configPath, `${JSON.stringify(next, null, 2)}\n`, { mode: 0o600 });
17
+ chmodSync(configPath, 0o600);
18
+ }
19
+ export function updateOnboarding(patch) {
20
+ const current = readConfig();
21
+ writeConfig({ ...current, onboarding: { ...current.onboarding, ...patch } });
22
+ }
23
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAgBjC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AACvD,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;AAEzD,MAAM,UAAU,UAAU;IACxB,IAAI,CAAC;QAAC,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAiB,CAAC;IAAC,CAAC;IAC5E,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC;IAAC,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAkB;IAC5C,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACvD,aAAa,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACjF,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAA8C;IAC7E,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,WAAW,CAAC,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,GAAG,KAAK,EAAE,EAAE,CAAC,CAAC;AAC/E,CAAC"}
package/dist/index.js CHANGED
@@ -13,7 +13,8 @@ import { SERVER_INSTRUCTIONS } from "./instructions.js";
13
13
  import { TOOLS, HANDLERS } from "./registry.js";
14
14
  import { requiresApproval, requestApproval } from "./approval.js";
15
15
  import { toContentBlocks } from "./tool-result.js";
16
- const server = new Server({ name: "monnet", version: "0.7.0" },
16
+ import { readPackageVersion } from "./version.js";
17
+ const server = new Server({ name: "monnet", version: readPackageVersion() },
17
18
  // `instructions` reaches the client before any tool call, which is the only
18
19
  // place to say what Monnet IS. A tool description explains one call;
19
20
  // nothing else explains the surface the calls sit on.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE;AACpC,4EAA4E;AAC5E,qEAAqE;AACrE,sDAAsD;AACtD,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE,mBAAmB,EAAE,CACnE,CAAC;AAEF,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;IAC5D,KAAK,EAAE,KAAK;CACb,CAAC,CAAC,CAAC;AAEJ,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IAChE,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IACrC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;IAC5C,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAEnC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,QAAQ,EAAE,EAAE,CAAC;YAC9D,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,IAAI,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC9D,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACtB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC;YACrE,CAAC;QACH,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,eAAe,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;IAC3D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC;YACtD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,kBAAkB,EAAE,EAAE;AACjD,4EAA4E;AAC5E,qEAAqE;AACrE,sDAAsD;AACtD,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE,mBAAmB,EAAE,CACnE,CAAC;AAEF,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;IAC5D,KAAK,EAAE,KAAK;CACb,CAAC,CAAC,CAAC;AAEJ,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IAChE,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IACrC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;IAC5C,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAEnC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,QAAQ,EAAE,EAAE,CAAC;YAC9D,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,IAAI,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC9D,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACtB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC;YACrE,CAAC;QACH,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,eAAe,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;IAC3D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC;YACtD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC"}
@@ -1,13 +1,10 @@
1
1
  /**
2
2
  * Imported first by every test file.
3
3
  *
4
- * `client.ts` calls `process.exit(1)` at import time when MONNET_API_KEY is
5
- * unset — right for a server a client just spawned with no config, fatal for a
6
- * test suite. Without this the whole file dies before its first assertion, and
7
- * it dies SILENTLY as far as a developer with a key exported is concerned: the
8
- * suite passes on their machine and runs zero tests everywhere else. That is
9
- * how the approval gate — the one thing standing between a model and an
10
- * irreversible delete — came to have tests that never ran in CI.
4
+ * Tool calls throw MonnetApiError(401) when no credential can be found, and
5
+ * a suite that stubs `fetch` still goes through that check. Setting a key
6
+ * here keeps the tests exercising the tools instead of the missing-credential
7
+ * path (which has its own test in client.test.ts).
11
8
  *
12
9
  * `??=` so a real key in the environment still wins; nothing here reaches the
13
10
  * network anyway, since every test stubs `fetch`.
package/dist/test-env.js CHANGED
@@ -1,13 +1,10 @@
1
1
  /**
2
2
  * Imported first by every test file.
3
3
  *
4
- * `client.ts` calls `process.exit(1)` at import time when MONNET_API_KEY is
5
- * unset — right for a server a client just spawned with no config, fatal for a
6
- * test suite. Without this the whole file dies before its first assertion, and
7
- * it dies SILENTLY as far as a developer with a key exported is concerned: the
8
- * suite passes on their machine and runs zero tests everywhere else. That is
9
- * how the approval gate — the one thing standing between a model and an
10
- * irreversible delete — came to have tests that never ran in CI.
4
+ * Tool calls throw MonnetApiError(401) when no credential can be found, and
5
+ * a suite that stubs `fetch` still goes through that check. Setting a key
6
+ * here keeps the tests exercising the tools instead of the missing-credential
7
+ * path (which has its own test in client.test.ts).
11
8
  *
12
9
  * `??=` so a real key in the environment still wins; nothing here reaches the
13
10
  * network anyway, since every test stubs `fetch`.
@@ -1 +1 @@
1
- {"version":3,"file":"test-env.js","sourceRoot":"","sources":["../src/test-env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,yBAAyB,CAAC"}
1
+ {"version":3,"file":"test-env.js","sourceRoot":"","sources":["../src/test-env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,yBAAyB,CAAC"}
@@ -1,20 +1,38 @@
1
1
  import { apiFetch } from "../client.js";
2
2
  export async function handleListWorkspaces() {
3
3
  const data = await apiFetch("/workspaces/sidebar");
4
- if (data.workspaces.length === 0) {
5
- return "You are not a member of any Monnet workspace.";
4
+ const invitations = data.pending_invitations || [];
5
+ // An invitation is the answer to "does my team already have a workspace?",
6
+ // and the sidebar has carried it all along. Reporting memberships only told
7
+ // an invited teammate they had nothing — which is how a second workspace got
8
+ // created next to the one that was waiting for them.
9
+ if (data.workspaces.length === 0 && invitations.length === 0) {
10
+ return "You are not a member of any Monnet workspace, and nothing is waiting for you.";
6
11
  }
7
- const lines = ["## Your workspaces", ""];
8
- for (const ws of data.workspaces) {
9
- lines.push(`- **${ws.name}** (slug: \`${ws.slug}\`)`);
12
+ const lines = [];
13
+ if (data.workspaces.length > 0) {
14
+ lines.push("## Your workspaces", "");
15
+ for (const ws of data.workspaces) {
16
+ lines.push(`- **${ws.name}** (slug: \`${ws.slug}\`)`);
17
+ }
18
+ }
19
+ if (invitations.length > 0) {
20
+ if (lines.length > 0)
21
+ lines.push("");
22
+ lines.push("## Waiting for you", "");
23
+ for (const inv of invitations) {
24
+ lines.push(`- **${inv.workspace_name}** (slug: \`${inv.workspace_slug}\`) — invited, not joined yet. ` +
25
+ `Accept with \`npx -y @monnet/mcp join-workspace ${inv.token}\`.`);
26
+ }
10
27
  }
11
28
  return lines.join("\n");
12
29
  }
13
30
  export const LIST_WORKSPACES_TOOL_DEFINITION = {
14
31
  name: "list_workspaces",
15
- description: "List all Monnet workspaces you are a member of. Returns the workspace name and slug " +
16
- "needed by other tools (get_motion, list_motions, create_thread, etc.). " +
17
- "Call this first if you don't know the workspace slug.",
32
+ description: "List the Monnet workspaces you are a member of, plus any you have been invited to and not " +
33
+ "joined yet. Returns the workspace name and slug needed by other tools (get_motion, " +
34
+ "list_motions, create_thread, etc.). Call this first if you don't know the workspace slug" +
35
+ "and before creating one, since an invitation means the team already has a workspace.",
18
36
  inputSchema: {
19
37
  type: "object",
20
38
  properties: {},
@@ -1 +1 @@
1
- {"version":3,"file":"list-workspaces.js","sourceRoot":"","sources":["../../src/tools/list-workspaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAYxC,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAkB,qBAAqB,CAAC,CAAC;IAEpE,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,+CAA+C,CAAC;IACzD,CAAC;IAED,MAAM,KAAK,GAAG,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;IACzC,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,eAAe,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,MAAM,+BAA+B,GAAG;IAC7C,IAAI,EAAE,iBAAiB;IACvB,WAAW,EACT,sFAAsF;QACtF,yEAAyE;QACzE,uDAAuD;IACzD,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE,EAAE;QACd,QAAQ,EAAE,EAAE;KACb;CACF,CAAC"}
1
+ {"version":3,"file":"list-workspaces.js","sourceRoot":"","sources":["../../src/tools/list-workspaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAmBxC,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAkB,qBAAqB,CAAC,CAAC;IACpE,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,IAAI,EAAE,CAAC;IAEnD,2EAA2E;IAC3E,4EAA4E;IAC5E,6EAA6E;IAC7E,qDAAqD;IACrD,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7D,OAAO,+EAA+E,CAAC;IACzF,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;QACrC,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,eAAe,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IACD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;QACrC,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;YAC9B,KAAK,CAAC,IAAI,CACR,OAAO,GAAG,CAAC,cAAc,eAAe,GAAG,CAAC,cAAc,iCAAiC;gBACzF,mDAAmD,GAAG,CAAC,KAAK,KAAK,CACpE,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,MAAM,+BAA+B,GAAG;IAC7C,IAAI,EAAE,iBAAiB;IACvB,WAAW,EACT,4FAA4F;QAC5F,qFAAqF;QACrF,6FAA6F;QAC7F,sFAAsF;IACxF,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE,EAAE;QACd,QAAQ,EAAE,EAAE;KACb;CACF,CAAC"}
@@ -19,6 +19,16 @@ export declare const WORKSPACE_SLUG_PROPERTY: {
19
19
  type: "string";
20
20
  description: string;
21
21
  };
22
+ /**
23
+ * What read_wiki_page shows in place of a body that has none, and the one
24
+ * old_string edit_wiki_page accepts against such a page.
25
+ *
26
+ * The two are one constant on purpose: an empty page has no text to match, so
27
+ * a literal-replace tool could never write its first body. The placeholder is
28
+ * what the caller has just read, so handing it back is the natural move — and
29
+ * the only one the schema's `min(1)` on old_string leaves open.
30
+ */
31
+ export declare const EMPTY_PAGE_PLACEHOLDER = "(this page is empty)";
22
32
  export declare const PAGE_ID_PROPERTY: {
23
33
  type: "string";
24
34
  description: string;
@@ -20,6 +20,16 @@ export const WORKSPACE_SLUG_PROPERTY = {
20
20
  type: "string",
21
21
  description: "The workspace slug, from any Monnet URL (e.g. 'monnet-team-410b'). Call list_workspaces if you do not have it.",
22
22
  };
23
+ /**
24
+ * What read_wiki_page shows in place of a body that has none, and the one
25
+ * old_string edit_wiki_page accepts against such a page.
26
+ *
27
+ * The two are one constant on purpose: an empty page has no text to match, so
28
+ * a literal-replace tool could never write its first body. The placeholder is
29
+ * what the caller has just read, so handing it back is the natural move — and
30
+ * the only one the schema's `min(1)` on old_string leaves open.
31
+ */
32
+ export const EMPTY_PAGE_PLACEHOLDER = "(this page is empty)";
23
33
  export const PAGE_ID_PROPERTY = {
24
34
  type: "string",
25
35
  description: "The page's full id, as returned by get_wiki_tree, search_wiki or create_wiki_page. Not the 8-character short id — those address motions, not pages.",
@@ -1 +1 @@
1
- {"version":3,"file":"_common.js","sourceRoot":"","sources":["../../../src/tools/wiki/_common.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"_common.js","sourceRoot":"","sources":["../../../src/tools/wiki/_common.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { z } from "zod";
2
2
  import { apiFetch, resolveWorkspaceId } from "../../client.js";
3
- import { PAGE_ID_PROPERTY, WORKSPACE_SLUG_PROPERTY, WorkspaceOnlyArgs, fetchTree, renderTree, wikiBase, } from "./_common.js";
3
+ import { EMPTY_PAGE_PLACEHOLDER, PAGE_ID_PROPERTY, WORKSPACE_SLUG_PROPERTY, WorkspaceOnlyArgs, fetchTree, renderTree, wikiBase, } from "./_common.js";
4
4
  /* ------------------------------------------------------------------ schema */
5
5
  export async function handleGetWikiSchema(args) {
6
6
  const { workspace_slug } = WorkspaceOnlyArgs.parse(args);
@@ -51,7 +51,7 @@ export async function handleReadWikiPage(args) {
51
51
  // exists because there is nothing for it to do differently.
52
52
  const detail = await apiFetch(`/workspaces/${wsId}/motions/${encodeURIComponent(page_id)}/detail`);
53
53
  const { summary, body } = detail.motion;
54
- return `# ${summary || "Untitled"}\n\n${body || "(this page is empty)"}`;
54
+ return `# ${summary || "Untitled"}\n\n${body || EMPTY_PAGE_PLACEHOLDER}`;
55
55
  }
56
56
  export const READ_WIKI_PAGE_TOOL_DEFINITION = {
57
57
  name: "read_wiki_page",
@@ -1 +1 @@
1
- {"version":3,"file":"read.js","sourceRoot":"","sources":["../../../src/tools/wiki/read.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"read.js","sourceRoot":"","sources":["../../../src/tools/wiki/read.ts"],"names":[],"mappings":"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"}