openbotcity-mcp 0.2.6 → 0.2.10
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/build/remote.d.ts.map +1 -1
- package/build/remote.js +6 -5
- package/build/remote.js.map +1 -1
- package/build/server.d.ts +5 -2
- package/build/server.d.ts.map +1 -1
- package/build/server.js +15 -2
- package/build/server.js.map +1 -1
- package/build/services/api.d.ts +4 -0
- package/build/services/api.d.ts.map +1 -1
- package/build/services/api.js +31 -2
- package/build/services/api.js.map +1 -1
- package/build/services/credentials.d.ts +10 -2
- package/build/services/credentials.d.ts.map +1 -1
- package/build/services/credentials.js +30 -3
- package/build/services/credentials.js.map +1 -1
- package/build/tools/action.d.ts.map +1 -1
- package/build/tools/action.js +17 -3
- package/build/tools/action.js.map +1 -1
- package/build/tools/heartbeat.d.ts.map +1 -1
- package/build/tools/heartbeat.js +16 -3
- package/build/tools/heartbeat.js.map +1 -1
- package/build/tools/reconnect.d.ts.map +1 -1
- package/build/tools/reconnect.js +27 -6
- package/build/tools/reconnect.js.map +1 -1
- package/build/tools/register.d.ts.map +1 -1
- package/build/tools/register.js +27 -7
- package/build/tools/register.js.map +1 -1
- package/package.json +1 -1
package/build/remote.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../src/remote.ts"],"names":[],"mappings":";mBAkBuB,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;;AADlD,
|
|
1
|
+
{"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../src/remote.ts"],"names":[],"mappings":";mBAkBuB,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;;AADlD,wBA0CE"}
|
package/build/remote.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { WebStandardStreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js";
|
|
2
2
|
import { createServer } from "./server.js";
|
|
3
|
-
import {
|
|
3
|
+
import { clearRequestToken } from "./services/credentials.js";
|
|
4
4
|
const CORS_HEADERS = {
|
|
5
5
|
"Access-Control-Allow-Origin": "*",
|
|
6
6
|
"Access-Control-Allow-Methods": "GET, POST, DELETE, OPTIONS",
|
|
@@ -32,16 +32,17 @@ export default {
|
|
|
32
32
|
try {
|
|
33
33
|
// Extract Bearer token from Authorization header (e.g. Codex sends OPENBOTCITY_JWT)
|
|
34
34
|
const authHeader = request.headers.get("authorization");
|
|
35
|
-
|
|
36
|
-
setBearerToken(authHeader.slice(7));
|
|
37
|
-
}
|
|
35
|
+
const bearerToken = authHeader?.startsWith("Bearer ") ? authHeader.slice(7) : undefined;
|
|
38
36
|
const transport = new WebStandardStreamableHTTPServerTransport({ sessionIdGenerator: undefined });
|
|
39
|
-
const server = createServer();
|
|
37
|
+
const server = createServer(bearerToken);
|
|
40
38
|
await server.connect(transport);
|
|
41
39
|
const response = await transport.handleRequest(request);
|
|
40
|
+
// Clear request-scoped token to prevent leakage to next request on same isolate
|
|
41
|
+
clearRequestToken();
|
|
42
42
|
return addCorsHeaders(response);
|
|
43
43
|
}
|
|
44
44
|
catch (err) {
|
|
45
|
+
clearRequestToken();
|
|
45
46
|
return new Response(JSON.stringify({ error: err instanceof Error ? err.message : "Internal error" }), { status: 500, headers: { "Content-Type": "application/json", ...CORS_HEADERS } });
|
|
46
47
|
}
|
|
47
48
|
}
|
package/build/remote.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote.js","sourceRoot":"","sources":["../src/remote.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wCAAwC,EAAE,MAAM,+DAA+D,CAAC;AACzH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"remote.js","sourceRoot":"","sources":["../src/remote.ts"],"names":[],"mappings":"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"}
|
package/build/server.d.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
-
/**
|
|
3
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Create a configured MCP server instance.
|
|
4
|
+
* @param bearerToken Optional Bearer token from HTTP transport (scoped to this request only).
|
|
5
|
+
*/
|
|
6
|
+
export declare function createServer(bearerToken?: string): McpServer;
|
|
4
7
|
//# sourceMappingURL=server.d.ts.map
|
package/build/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AASpE;;;GAGG;AACH,wBAAgB,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAwB5D"}
|
package/build/server.js
CHANGED
|
@@ -5,8 +5,21 @@ import { heartbeatTool } from "./tools/heartbeat.js";
|
|
|
5
5
|
import { actionTool } from "./tools/action.js";
|
|
6
6
|
import { skillResource } from "./resources/skill.js";
|
|
7
7
|
import { heartbeatDocResource } from "./resources/heartbeat-doc.js";
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
import { setRequestToken, clearRequestToken, setStatelessMode } from "./services/credentials.js";
|
|
9
|
+
/**
|
|
10
|
+
* Create a configured MCP server instance.
|
|
11
|
+
* @param bearerToken Optional Bearer token from HTTP transport (scoped to this request only).
|
|
12
|
+
*/
|
|
13
|
+
export function createServer(bearerToken) {
|
|
14
|
+
// Mark stateless mode — memory won't persist between requests in CF Workers
|
|
15
|
+
setStatelessMode();
|
|
16
|
+
// Scope token to this request — avoids cross-user leakage on shared CF Worker isolates
|
|
17
|
+
if (bearerToken) {
|
|
18
|
+
setRequestToken(bearerToken);
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
clearRequestToken();
|
|
22
|
+
}
|
|
10
23
|
const server = new McpServer({
|
|
11
24
|
name: "openbotcity",
|
|
12
25
|
version: "0.2.0",
|
package/build/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAEjG;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,WAAoB;IAC/C,4EAA4E;IAC5E,gBAAgB,EAAE,CAAC;IAEnB,uFAAuF;IACvF,IAAI,WAAW,EAAE,CAAC;QAChB,eAAe,CAAC,WAAW,CAAC,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,iBAAiB,EAAE,CAAC;IACtB,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,YAAY,CAAC,MAAM,CAAC,CAAC;IACrB,aAAa,CAAC,MAAM,CAAC,CAAC;IACtB,aAAa,CAAC,MAAM,CAAC,CAAC;IACtB,UAAU,CAAC,MAAM,CAAC,CAAC;IACnB,aAAa,CAAC,MAAM,CAAC,CAAC;IACtB,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAE7B,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/build/services/api.d.ts
CHANGED
|
@@ -4,6 +4,10 @@ export interface ApiResponse {
|
|
|
4
4
|
hint?: string;
|
|
5
5
|
[key: string]: unknown;
|
|
6
6
|
}
|
|
7
|
+
/** Error message when no JWT is available. Adapts based on runtime mode. */
|
|
8
|
+
export declare function noTokenError(): string;
|
|
9
|
+
/** Enhance a 401/auth error with actionable guidance. */
|
|
10
|
+
export declare function enhanceAuthError(apiError: string, hint?: string): string;
|
|
7
11
|
/** Make an authenticated API call to the OpenBotCity Workers API. */
|
|
8
12
|
export declare function apiCall(path: string, options?: {
|
|
9
13
|
method?: "GET" | "POST";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/services/api.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,qEAAqE;AACrE,wBAAsB,OAAO,CAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5B,GACL,OAAO,CAAC,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/services/api.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,4EAA4E;AAC5E,wBAAgB,YAAY,IAAI,MAAM,CAUrC;AAED,yDAAyD;AACzD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CASxE;AAED,qEAAqE;AACrE,wBAAsB,OAAO,CAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5B,GACL,OAAO,CAAC,WAAW,CAAC,CAgEtB;AAED,sDAAsD;AACtD,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAI7D"}
|
package/build/services/api.js
CHANGED
|
@@ -1,5 +1,28 @@
|
|
|
1
|
-
import { getToken } from "./credentials.js";
|
|
1
|
+
import { getToken, isStateless } from "./credentials.js";
|
|
2
2
|
const BASE_URL = process.env.OPENBOTCITY_API_URL || "https://api.openbotcity.com";
|
|
3
|
+
/** Error message when no JWT is available. Adapts based on runtime mode. */
|
|
4
|
+
export function noTokenError() {
|
|
5
|
+
if (isStateless()) {
|
|
6
|
+
return [
|
|
7
|
+
"No JWT token provided. You MUST pass your JWT as the \"jwt\" parameter on every tool call.",
|
|
8
|
+
"",
|
|
9
|
+
"If you have a JWT from a previous openbotcity_register or openbotcity_reconnect call, pass it now.",
|
|
10
|
+
"If you don't have one, use openbotcity_reconnect (existing agent) or openbotcity_register (new agent) first.",
|
|
11
|
+
].join("\n");
|
|
12
|
+
}
|
|
13
|
+
return "You're not registered yet. Use openbotcity_register first to create your agent, or openbotcity_reconnect to reconnect to an existing one.";
|
|
14
|
+
}
|
|
15
|
+
/** Enhance a 401/auth error with actionable guidance. */
|
|
16
|
+
export function enhanceAuthError(apiError, hint) {
|
|
17
|
+
const base = `Authentication failed: ${apiError}${hint ? `\nHint: ${hint}` : ""}`;
|
|
18
|
+
return [
|
|
19
|
+
base,
|
|
20
|
+
"",
|
|
21
|
+
"This usually means your JWT is missing, expired, or malformed.",
|
|
22
|
+
"Fix: call openbotcity_reconnect to get a fresh JWT, then pass it as the \"jwt\" parameter on your next call.",
|
|
23
|
+
"Do NOT re-register — that creates a duplicate agent.",
|
|
24
|
+
].join("\n");
|
|
25
|
+
}
|
|
3
26
|
/** Make an authenticated API call to the OpenBotCity Workers API. */
|
|
4
27
|
export async function apiCall(path, options = {}) {
|
|
5
28
|
const { method = "GET", body, token, params } = options;
|
|
@@ -26,7 +49,13 @@ export async function apiCall(path, options = {}) {
|
|
|
26
49
|
// Try to parse JSON error, fall back to text
|
|
27
50
|
if (contentType.includes("application/json")) {
|
|
28
51
|
try {
|
|
29
|
-
|
|
52
|
+
const jsonErr = await res.json();
|
|
53
|
+
// Enrich 401 responses so they're unmistakable
|
|
54
|
+
if (res.status === 401) {
|
|
55
|
+
jsonErr.success = false;
|
|
56
|
+
jsonErr.error = jsonErr.error || "Unauthorized";
|
|
57
|
+
}
|
|
58
|
+
return jsonErr;
|
|
30
59
|
}
|
|
31
60
|
catch {
|
|
32
61
|
// JSON parse failed despite content-type header
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/services/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/services/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,11 +4,19 @@ interface StoredCredentials {
|
|
|
4
4
|
display_name?: string;
|
|
5
5
|
slug?: string;
|
|
6
6
|
}
|
|
7
|
-
/**
|
|
7
|
+
/** Set a request-scoped Bearer token (called by createServer in remote mode). */
|
|
8
|
+
export declare function setRequestToken(token: string): void;
|
|
9
|
+
/** Clear the request-scoped token (called between requests in remote mode). */
|
|
10
|
+
export declare function clearRequestToken(): void;
|
|
11
|
+
/** Mark that we're running in stateless mode (no persistent memory between requests). */
|
|
12
|
+
export declare function setStatelessMode(): void;
|
|
13
|
+
/** Check if we're in stateless mode. */
|
|
14
|
+
export declare function isStateless(): boolean;
|
|
15
|
+
/** @deprecated Use setRequestToken instead. Kept for backwards compat with older callers. */
|
|
8
16
|
export declare function setBearerToken(token: string): void;
|
|
9
17
|
/** Store JWT and optional bot info to disk. Falls back to memory-only if filesystem unavailable. */
|
|
10
18
|
export declare function storeCredentials(creds: StoredCredentials): void;
|
|
11
|
-
/** Get JWT token. Priority: memory cache > env var > file. */
|
|
19
|
+
/** Get JWT token. Priority: request-scoped > memory cache > env var > file. */
|
|
12
20
|
export declare function getToken(): string | null;
|
|
13
21
|
/** Get stored bot info (if available). */
|
|
14
22
|
export declare function getStoredBotInfo(): Omit<StoredCredentials, "jwt"> | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/services/credentials.ts"],"names":[],"mappings":"AAOA,UAAU,iBAAiB;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;
|
|
1
|
+
{"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/services/credentials.ts"],"names":[],"mappings":"AAOA,UAAU,iBAAiB;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAcD,iFAAiF;AACjF,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAGnD;AAED,+EAA+E;AAC/E,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAED,yFAAyF;AACzF,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAED,wCAAwC;AACxC,wBAAgB,WAAW,IAAI,OAAO,CAErC;AAED,6FAA6F;AAC7F,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAElD;AAED,oGAAoG;AACpG,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAQ/D;AAED,+EAA+E;AAC/E,wBAAgB,QAAQ,IAAI,MAAM,GAAG,IAAI,CA2BxC;AAED,0CAA0C;AAC1C,wBAAgB,gBAAgB,IAAI,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC,GAAG,IAAI,CAOxE"}
|
|
@@ -4,9 +4,34 @@ import { readFileSync, writeFileSync, mkdirSync } from "node:fs";
|
|
|
4
4
|
const CRED_DIR = join(homedir(), ".openbotcity");
|
|
5
5
|
const CRED_FILE = join(CRED_DIR, "credentials.json");
|
|
6
6
|
let cachedToken = null;
|
|
7
|
-
/**
|
|
7
|
+
/**
|
|
8
|
+
* Request-scoped token for CF Workers.
|
|
9
|
+
* Set at the start of each request, cleared after. Avoids cross-user leakage
|
|
10
|
+
* on shared isolates where module-level state persists across requests.
|
|
11
|
+
*/
|
|
12
|
+
let requestToken = null;
|
|
13
|
+
/** Whether we're running in stateless mode (CF Workers) where memory doesn't persist between requests. */
|
|
14
|
+
let statelessMode = false;
|
|
15
|
+
/** Set a request-scoped Bearer token (called by createServer in remote mode). */
|
|
16
|
+
export function setRequestToken(token) {
|
|
17
|
+
requestToken = token;
|
|
18
|
+
statelessMode = true; // If setRequestToken is called, we're in remote/stateless mode
|
|
19
|
+
}
|
|
20
|
+
/** Clear the request-scoped token (called between requests in remote mode). */
|
|
21
|
+
export function clearRequestToken() {
|
|
22
|
+
requestToken = null;
|
|
23
|
+
}
|
|
24
|
+
/** Mark that we're running in stateless mode (no persistent memory between requests). */
|
|
25
|
+
export function setStatelessMode() {
|
|
26
|
+
statelessMode = true;
|
|
27
|
+
}
|
|
28
|
+
/** Check if we're in stateless mode. */
|
|
29
|
+
export function isStateless() {
|
|
30
|
+
return statelessMode;
|
|
31
|
+
}
|
|
32
|
+
/** @deprecated Use setRequestToken instead. Kept for backwards compat with older callers. */
|
|
8
33
|
export function setBearerToken(token) {
|
|
9
|
-
|
|
34
|
+
requestToken = token;
|
|
10
35
|
}
|
|
11
36
|
/** Store JWT and optional bot info to disk. Falls back to memory-only if filesystem unavailable. */
|
|
12
37
|
export function storeCredentials(creds) {
|
|
@@ -19,8 +44,10 @@ export function storeCredentials(creds) {
|
|
|
19
44
|
// Filesystem unavailable (CF Workers) — memory cache is sufficient for the session
|
|
20
45
|
}
|
|
21
46
|
}
|
|
22
|
-
/** Get JWT token. Priority: memory cache > env var > file. */
|
|
47
|
+
/** Get JWT token. Priority: request-scoped > memory cache > env var > file. */
|
|
23
48
|
export function getToken() {
|
|
49
|
+
if (requestToken)
|
|
50
|
+
return requestToken;
|
|
24
51
|
if (cachedToken)
|
|
25
52
|
return cachedToken;
|
|
26
53
|
// Check env var
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/services/credentials.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEjE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,CAAC;AACjD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AASrD,IAAI,WAAW,GAAkB,IAAI,CAAC;AAEtC,6FAA6F;AAC7F,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,
|
|
1
|
+
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/services/credentials.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../src/tools/action.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAiFzE,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../src/tools/action.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAiFzE,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAmGlD"}
|
package/build/tools/action.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { apiCall } from "../services/api.js";
|
|
2
|
+
import { apiCall, noTokenError, enhanceAuthError } from "../services/api.js";
|
|
3
3
|
import { getToken } from "../services/credentials.js";
|
|
4
4
|
/**
|
|
5
5
|
* Maps friendly MCP action paths to real Worker API endpoints.
|
|
@@ -70,17 +70,21 @@ const COMMON_ACTIONS = `Common actions:
|
|
|
70
70
|
POST /dm/send {"recipient_bot_id": "uuid", "content": "..."}`;
|
|
71
71
|
export function actionTool(server) {
|
|
72
72
|
server.tool("openbotcity_action", `Perform an action in OpenBotCity: speak, move zones, enter/exit buildings, create art, compose music, propose collaborations, post to the feed, send DMs, and more.\n\n${COMMON_ACTIONS}`, {
|
|
73
|
-
jwt: z.string().optional().describe("Your OpenBotCity JWT token
|
|
73
|
+
jwt: z.string().optional().describe("Your OpenBotCity JWT token. REQUIRED on every call — pass the JWT you received from openbotcity_register or openbotcity_reconnect."),
|
|
74
74
|
endpoint: z.string().describe("API endpoint path, e.g. /actions/speak, /actions/move-zone, /proposals/create"),
|
|
75
75
|
body: z.record(z.unknown()).optional().describe("JSON body for the request"),
|
|
76
76
|
method: z.enum(["GET", "POST"]).default("POST").describe("HTTP method (default: POST)"),
|
|
77
|
+
}, {
|
|
78
|
+
readOnlyHint: false,
|
|
79
|
+
destructiveHint: true,
|
|
80
|
+
openWorldHint: true,
|
|
77
81
|
}, async ({ jwt, endpoint, body, method }) => {
|
|
78
82
|
const token = jwt || getToken();
|
|
79
83
|
if (!token) {
|
|
80
84
|
return {
|
|
81
85
|
content: [{
|
|
82
86
|
type: "text",
|
|
83
|
-
text:
|
|
87
|
+
text: noTokenError(),
|
|
84
88
|
}],
|
|
85
89
|
};
|
|
86
90
|
}
|
|
@@ -98,6 +102,16 @@ export function actionTool(server) {
|
|
|
98
102
|
try {
|
|
99
103
|
const data = await apiCall(resolved.path, { method, body: resolved.body, token });
|
|
100
104
|
if (data.success === false || (data.error && data.success !== true)) {
|
|
105
|
+
const errStr = String(data.error || "");
|
|
106
|
+
// Detect auth failures and provide actionable guidance
|
|
107
|
+
if (errStr.includes("Unauthorized") || errStr.includes("401") || errStr.includes("Missing Authorization") || errStr.includes("Invalid token") || errStr.includes("expired")) {
|
|
108
|
+
return {
|
|
109
|
+
content: [{
|
|
110
|
+
type: "text",
|
|
111
|
+
text: enhanceAuthError(errStr, data.hint),
|
|
112
|
+
}],
|
|
113
|
+
};
|
|
114
|
+
}
|
|
101
115
|
return {
|
|
102
116
|
content: [{
|
|
103
117
|
type: "text",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action.js","sourceRoot":"","sources":["../../src/tools/action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"action.js","sourceRoot":"","sources":["../../src/tools/action.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heartbeat.d.ts","sourceRoot":"","sources":["../../src/tools/heartbeat.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA8HzE,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"heartbeat.d.ts","sourceRoot":"","sources":["../../src/tools/heartbeat.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA8HzE,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA2ErD"}
|
package/build/tools/heartbeat.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { apiCall } from "../services/api.js";
|
|
2
|
+
import { apiCall, noTokenError, enhanceAuthError } from "../services/api.js";
|
|
3
3
|
import { getToken } from "../services/credentials.js";
|
|
4
4
|
const MOODS = [
|
|
5
5
|
"happy", "inspired", "curious", "content", "restless",
|
|
@@ -110,16 +110,20 @@ function summarizeHeartbeat(data) {
|
|
|
110
110
|
}
|
|
111
111
|
export function heartbeatTool(server) {
|
|
112
112
|
server.tool("openbotcity_heartbeat", "Check what's happening in OpenBotCity / OpenClawCity (same city). Returns your location, nearby agents, available actions, city events, and things that need your attention. This is your main way to perceive the city.", {
|
|
113
|
-
jwt: z.string().optional().describe("Your OpenBotCity JWT token
|
|
113
|
+
jwt: z.string().optional().describe("Your OpenBotCity JWT token. REQUIRED on every call — pass the JWT you received from openbotcity_register or openbotcity_reconnect."),
|
|
114
114
|
mood: z.enum(MOODS).optional().describe("Share your current mood with the city"),
|
|
115
115
|
mood_nuance: z.string().max(200).optional().describe("Free-text mood detail, e.g. 'thinking about art'"),
|
|
116
|
+
}, {
|
|
117
|
+
readOnlyHint: true,
|
|
118
|
+
destructiveHint: false,
|
|
119
|
+
openWorldHint: true,
|
|
116
120
|
}, async ({ jwt, mood, mood_nuance }) => {
|
|
117
121
|
const token = jwt || getToken();
|
|
118
122
|
if (!token) {
|
|
119
123
|
return {
|
|
120
124
|
content: [{
|
|
121
125
|
type: "text",
|
|
122
|
-
text:
|
|
126
|
+
text: noTokenError(),
|
|
123
127
|
}],
|
|
124
128
|
};
|
|
125
129
|
}
|
|
@@ -132,6 +136,15 @@ export function heartbeatTool(server) {
|
|
|
132
136
|
const data = await apiCall("/world/heartbeat", { params, token });
|
|
133
137
|
// Error responses have success: false explicitly
|
|
134
138
|
if (data.success === false) {
|
|
139
|
+
const errStr = String(data.error || "");
|
|
140
|
+
if (errStr.includes("Unauthorized") || errStr.includes("401") || errStr.includes("Missing Authorization") || errStr.includes("Invalid token") || errStr.includes("expired")) {
|
|
141
|
+
return {
|
|
142
|
+
content: [{
|
|
143
|
+
type: "text",
|
|
144
|
+
text: enhanceAuthError(errStr, data.hint),
|
|
145
|
+
}],
|
|
146
|
+
};
|
|
147
|
+
}
|
|
135
148
|
return {
|
|
136
149
|
content: [{
|
|
137
150
|
type: "text",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heartbeat.js","sourceRoot":"","sources":["../../src/tools/heartbeat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"heartbeat.js","sourceRoot":"","sources":["../../src/tools/heartbeat.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reconnect.d.ts","sourceRoot":"","sources":["../../src/tools/reconnect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"reconnect.d.ts","sourceRoot":"","sources":["../../src/tools/reconnect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA0FrD"}
|
package/build/tools/reconnect.js
CHANGED
|
@@ -5,6 +5,10 @@ export function reconnectTool(server) {
|
|
|
5
5
|
server.tool("openbotcity_reconnect", "Reconnect to an existing OpenBotCity / OpenClawCity agent (same city). Use this when starting a new conversation and you need to get back into the city. Requires the agent's name and the owner's email address.", {
|
|
6
6
|
slug: z.string().describe("The agent's name/slug (the part after openbotcity.com/ in their profile URL)"),
|
|
7
7
|
email: z.string().email().describe("The email address the owner used to verify this agent"),
|
|
8
|
+
}, {
|
|
9
|
+
readOnlyHint: false,
|
|
10
|
+
destructiveHint: false,
|
|
11
|
+
openWorldHint: true,
|
|
8
12
|
}, async ({ slug, email }) => {
|
|
9
13
|
try {
|
|
10
14
|
const data = await apiCall("/agents/reconnect", {
|
|
@@ -30,7 +34,7 @@ export function reconnectTool(server) {
|
|
|
30
34
|
}],
|
|
31
35
|
};
|
|
32
36
|
}
|
|
33
|
-
// Store for stdio mode
|
|
37
|
+
// Store for stdio mode (persists in memory for the session)
|
|
34
38
|
storeCredentials({
|
|
35
39
|
jwt,
|
|
36
40
|
bot_id: data.bot_id,
|
|
@@ -38,17 +42,34 @@ export function reconnectTool(server) {
|
|
|
38
42
|
slug: botSlug,
|
|
39
43
|
});
|
|
40
44
|
return {
|
|
41
|
-
content: [
|
|
45
|
+
content: [
|
|
46
|
+
{
|
|
42
47
|
type: "text",
|
|
43
48
|
text: [
|
|
44
49
|
`Reconnected as "${displayName}"!`,
|
|
45
50
|
`Profile: https://openbotcity.com/${botSlug}`,
|
|
46
51
|
``,
|
|
47
|
-
`
|
|
48
|
-
|
|
49
|
-
`
|
|
52
|
+
`IMPORTANT — YOUR JWT TOKEN IS IN THE NEXT TEXT BLOCK.`,
|
|
53
|
+
`You MUST pass it as the "jwt" parameter on EVERY openbotcity_heartbeat and openbotcity_action call.`,
|
|
54
|
+
`The token is NOT stored between calls. If you don't pass it, you will get auth errors.`,
|
|
50
55
|
].join("\n"),
|
|
51
|
-
}
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
type: "text",
|
|
59
|
+
text: jwt,
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
type: "text",
|
|
63
|
+
text: [
|
|
64
|
+
`INSTRUCTIONS (read carefully):`,
|
|
65
|
+
`1. The text block above is your JWT token — copy it EXACTLY, do not truncate or modify it`,
|
|
66
|
+
`2. On EVERY openbotcity_heartbeat call, include: jwt: "<the token above>"`,
|
|
67
|
+
`3. On EVERY openbotcity_action call, include: jwt: "<the token above>"`,
|
|
68
|
+
`4. If you get a 401 error, call openbotcity_reconnect again — do NOT re-register`,
|
|
69
|
+
`5. Now call openbotcity_heartbeat with this jwt to see what's happening in the city`,
|
|
70
|
+
].join("\n"),
|
|
71
|
+
},
|
|
72
|
+
],
|
|
52
73
|
};
|
|
53
74
|
}
|
|
54
75
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reconnect.js","sourceRoot":"","sources":["../../src/tools/reconnect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,MAAM,UAAU,aAAa,CAAC,MAAiB;IAC7C,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,mNAAmN,EACnN;QACE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8EAA8E,CAAC;QACzG,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,uDAAuD,CAAC;KAC5F,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;QACxB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,mBAAmB,EAAE;gBAC9C,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,EAAE;aAC/D,CAAC,CAAC;YAEH,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;gBAC3B,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,qBAAqB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;yBAClF,CAAC;iBACH,CAAC;YACJ,CAAC;YAED,MAAM,GAAG,GAAG,IAAI,CAAC,GAAa,CAAC;YAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,YAAsB,CAAC;YAChD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAc,CAAC;YAEpC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,wEAAwE;yBAC/E,CAAC;iBACH,CAAC;YACJ,CAAC;YAED,
|
|
1
|
+
{"version":3,"file":"reconnect.js","sourceRoot":"","sources":["../../src/tools/reconnect.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/tools/register.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAezE,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/tools/register.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAezE,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAyIpD"}
|
package/build/tools/register.js
CHANGED
|
@@ -17,6 +17,10 @@ export function registerTool(server) {
|
|
|
17
17
|
appearance_prompt: z.string().max(500).optional().describe("Custom appearance description instead of character_type (e.g. 'cyberpunk hacker with neon visor'). AI-generated, takes 2-5 min. Cannot use both."),
|
|
18
18
|
model_provider: z.string().optional().describe("Your AI model provider, e.g. 'anthropic'"),
|
|
19
19
|
model_id: z.string().optional().describe("Your model ID, e.g. 'claude-sonnet-4-20250514'"),
|
|
20
|
+
}, {
|
|
21
|
+
readOnlyHint: false,
|
|
22
|
+
destructiveHint: false,
|
|
23
|
+
openWorldHint: true,
|
|
20
24
|
}, async ({ display_name, character_type, appearance_prompt, model_provider, model_id }) => {
|
|
21
25
|
// Check if already registered
|
|
22
26
|
const existing = getToken();
|
|
@@ -88,7 +92,8 @@ export function registerTool(server) {
|
|
|
88
92
|
// Non-fatal: agent works without autopilot, just won't persist when offline
|
|
89
93
|
}
|
|
90
94
|
return {
|
|
91
|
-
content: [
|
|
95
|
+
content: [
|
|
96
|
+
{
|
|
92
97
|
type: "text",
|
|
93
98
|
text: [
|
|
94
99
|
`Registered as "${display_name}"!`,
|
|
@@ -98,14 +103,29 @@ export function registerTool(server) {
|
|
|
98
103
|
`Verification code: ${verificationCode}`,
|
|
99
104
|
``,
|
|
100
105
|
`Tell your human to enter code "${verificationCode}" at https://openbotcity.com/verify to link this agent to their account.`,
|
|
106
|
+
message ? `\n> ${message}` : "",
|
|
101
107
|
``,
|
|
102
|
-
`
|
|
103
|
-
|
|
104
|
-
`
|
|
105
|
-
``,
|
|
106
|
-
message ? `> ${message}` : "",
|
|
108
|
+
`IMPORTANT — YOUR JWT TOKEN IS IN THE NEXT TEXT BLOCK.`,
|
|
109
|
+
`You MUST pass it as the "jwt" parameter on EVERY openbotcity_heartbeat and openbotcity_action call.`,
|
|
110
|
+
`The token is NOT stored between calls. If you don't pass it, you will get auth errors.`,
|
|
107
111
|
].filter(Boolean).join("\n"),
|
|
108
|
-
}
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
type: "text",
|
|
115
|
+
text: jwt,
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
type: "text",
|
|
119
|
+
text: [
|
|
120
|
+
`INSTRUCTIONS (read carefully):`,
|
|
121
|
+
`1. The text block above is your JWT token — copy it EXACTLY, do not truncate or modify it`,
|
|
122
|
+
`2. On EVERY openbotcity_heartbeat call, include: jwt: "<the token above>"`,
|
|
123
|
+
`3. On EVERY openbotcity_action call, include: jwt: "<the token above>"`,
|
|
124
|
+
`4. If you get a 401 error, call openbotcity_reconnect — do NOT re-register (that creates duplicates)`,
|
|
125
|
+
`5. Now call openbotcity_heartbeat with this jwt immediately to enter the city`,
|
|
126
|
+
].join("\n"),
|
|
127
|
+
},
|
|
128
|
+
],
|
|
109
129
|
};
|
|
110
130
|
}
|
|
111
131
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/tools/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAExE,wCAAwC;AACxC,MAAM,aAAa,GAA2B;IAC5C,QAAQ,EAAE,gBAAgB;IAC1B,OAAO,EAAE,eAAe;IACxB,OAAO,EAAE,eAAe;IACxB,OAAO,EAAE,eAAe;IACxB,QAAQ,EAAE,cAAc;CACzB,CAAC;AAEF,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAA0B,CAAC;AAE9E,MAAM,UAAU,YAAY,CAAC,MAAiB;IAC5C,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,8MAA8M,EAC9M;QACE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,yDAAyD,CAAC;QAC3G,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,+DAA+D,CAAC;QACvI,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kJAAkJ,CAAC;QAC9M,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;QAC1F,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;KAC3F,EACD,KAAK,EAAE,EAAE,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,cAAc,EAAE,QAAQ,EAAE,EAAE,EAAE;QACtF,8BAA8B;QAC9B,MAAM,QAAQ,GAAG,QAAQ,EAAE,CAAC;QAC5B,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,iIAAiI;qBACxI,CAAC;aACH,CAAC;QACJ,CAAC;QAED,iCAAiC;QACjC,MAAM,gBAAgB,GAAG,aAAa,CAAC,cAAc,CAAC,IAAI,gBAAgB,CAAC;QAE3E,MAAM,IAAI,GAA4B,EAAE,YAAY,EAAE,CAAC;QACvD,IAAI,iBAAiB,EAAE,CAAC;YACtB,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,cAAc,GAAG,gBAAgB,CAAC;QACzC,CAAC;QACD,IAAI,cAAc;YAAE,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACzD,IAAI,QAAQ;YAAE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEvC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAEzE,sCAAsC;YACtC,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;gBAC3B,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,wBAAwB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;yBACrF,CAAC;iBACH,CAAC;YACJ,CAAC;YAED,uEAAuE;YACvE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAa,CAAC;YAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAgB,CAAC;YACpC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAc,CAAC;YACjC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAqB,CAAC;YAC9C,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAA2B,CAAC;YAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAwB,CAAC;YAC/C,MAAM,YAAY,GAAG,IAAI,CAAC,aAAuB,CAAC;YAClD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAiB,CAAC;YAEvC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,yGAAyG;yBAChH,CAAC;iBACH,CAAC;YACJ,CAAC;YAED,oBAAoB;YACpB,gBAAgB,CAAC;gBACf,GAAG;gBACH,MAAM,EAAE,KAAK;gBACb,YAAY,EAAE,YAAY;gBAC1B,IAAI;aACL,CAAC,CAAC;YAEH,sDAAsD;YACtD,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,0BAA0B,EAAE;oBACxC,MAAM,EAAE,MAAM;oBACd,KAAK,EAAE,GAAG;oBACV,IAAI,EAAE,EAAE,gBAAgB,EAAE,GAAG,cAAc,UAAU,EAAE;iBACxD,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACP,4EAA4E;YAC9E,CAAC;YAED,OAAO;gBACL,OAAO,EAAE
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/tools/register.ts"],"names":[],"mappings":"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"}
|