@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.
- package/README.md +19 -1
- package/assets/monnet-init.md +37 -0
- package/dist/cli/env.d.ts +13 -0
- package/dist/cli/env.js +44 -0
- package/dist/cli/env.js.map +1 -0
- package/dist/cli/install.d.ts +10 -0
- package/dist/cli/install.js +76 -0
- package/dist/cli/install.js.map +1 -0
- package/dist/cli/io.d.ts +18 -0
- package/dist/cli/io.js +30 -0
- package/dist/cli/io.js.map +1 -0
- package/dist/cli/login.d.ts +14 -0
- package/dist/cli/login.js +77 -0
- package/dist/cli/login.js.map +1 -0
- package/dist/cli/onboarding.d.ts +41 -0
- package/dist/cli/onboarding.js +145 -0
- package/dist/cli/onboarding.js.map +1 -0
- package/dist/cli/run.d.ts +11 -0
- package/dist/cli/run.js +35 -0
- package/dist/cli/run.js.map +1 -0
- package/dist/cli/test-home.d.ts +8 -0
- package/dist/cli/test-home.js +17 -0
- package/dist/cli/test-home.js.map +1 -0
- package/dist/cli/test-io.d.ts +21 -0
- package/dist/cli/test-io.js +32 -0
- package/dist/cli/test-io.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +12 -0
- package/dist/cli.js.map +1 -0
- package/dist/client.d.ts +22 -1
- package/dist/client.js +56 -19
- package/dist/client.js.map +1 -1
- package/dist/config.d.ts +17 -0
- package/dist/config.js +23 -0
- package/dist/config.js.map +1 -0
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/test-env.d.ts +4 -7
- package/dist/test-env.js +4 -7
- package/dist/test-env.js.map +1 -1
- package/dist/tools/list-workspaces.js +26 -8
- package/dist/tools/list-workspaces.js.map +1 -1
- package/dist/tools/wiki/_common.d.ts +10 -0
- package/dist/tools/wiki/_common.js +10 -0
- package/dist/tools/wiki/_common.js.map +1 -1
- package/dist/tools/wiki/read.js +2 -2
- package/dist/tools/wiki/read.js.map +1 -1
- package/dist/tools/wiki/write.js +29 -17
- package/dist/tools/wiki/write.js.map +1 -1
- package/dist/version.d.ts +13 -0
- package/dist/version.js +26 -0
- package/dist/version.js.map +1 -0
- 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
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
|
package/dist/cli.js.map
ADDED
|
@@ -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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
|
|
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(`${
|
|
96
|
+
response = await fetch(`${apiUrl()}${path}`, {
|
|
55
97
|
...options,
|
|
56
98
|
signal: controller.signal,
|
|
57
99
|
headers: {
|
|
58
|
-
"X-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
|
-
|
|
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(`${
|
|
141
|
+
response = await fetch(`${apiUrl()}${path}`, {
|
|
105
142
|
method: "POST",
|
|
106
143
|
signal: controller.signal,
|
|
107
144
|
headers: {
|
|
108
|
-
"X-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 `${
|
|
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}.
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
ADDED
|
@@ -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
|
-
|
|
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;
|
|
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"}
|
package/dist/test-env.d.ts
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Imported first by every test file.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
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
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
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.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-env.js","sourceRoot":"","sources":["../src/test-env.ts"],"names":[],"mappings":"AAAA
|
|
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
|
-
|
|
5
|
-
|
|
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 = [
|
|
8
|
-
|
|
9
|
-
lines.push(
|
|
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
|
|
16
|
-
"needed by other tools (get_motion,
|
|
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;
|
|
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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"}
|
package/dist/tools/wiki/read.js
CHANGED
|
@@ -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 ||
|
|
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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"}
|