nomoreide 0.1.71 → 0.1.72
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/dist/core/agent-profiles/index.d.ts +4 -0
- package/dist/core/agent-profiles/index.js +4 -0
- package/dist/core/agent-profiles/index.js.map +1 -1
- package/dist/core/agent-profiles/registry-auth.d.ts +25 -0
- package/dist/core/agent-profiles/registry-auth.js +78 -0
- package/dist/core/agent-profiles/registry-auth.js.map +1 -0
- package/dist/core/agent-profiles/registry-client.d.ts +65 -0
- package/dist/core/agent-profiles/registry-client.js +97 -0
- package/dist/core/agent-profiles/registry-client.js.map +1 -0
- package/dist/core/agent-profiles/registry-config.d.ts +48 -0
- package/dist/core/agent-profiles/registry-config.js +164 -0
- package/dist/core/agent-profiles/registry-config.js.map +1 -0
- package/dist/core/agent-profiles/registry-transfer.d.ts +42 -0
- package/dist/core/agent-profiles/registry-transfer.js +102 -0
- package/dist/core/agent-profiles/registry-transfer.js.map +1 -0
- package/dist/mcp/tools/agent-registry.d.ts +9 -0
- package/dist/mcp/tools/agent-registry.js +81 -0
- package/dist/mcp/tools/agent-registry.js.map +1 -0
- package/dist/mcp/tools/index.d.ts +1 -1
- package/dist/mcp/tools/index.js +3 -0
- package/dist/mcp/tools/index.js.map +1 -1
- package/dist/web/client/assets/{code-editor-B0j6kcLb.js → code-editor-fZ2dpXfw.js} +1 -1
- package/dist/web/client/assets/{index-DAiSqTLR.js → index-CraqLFuO.js} +116 -116
- package/dist/web/client/index.html +1 -1
- package/dist/web/routes/agent-registry-routes.d.ts +2 -0
- package/dist/web/routes/agent-registry-routes.js +295 -0
- package/dist/web/routes/agent-registry-routes.js.map +1 -0
- package/dist/web/routes/index.js +4 -0
- package/dist/web/routes/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Publish / install flows between local profiles and the hosted registry.
|
|
3
|
+
* Publish reuses `exportProfile`, so the uploaded package is the same
|
|
4
|
+
* credential-redacted `.tar.gz` a local export produces — raw secrets never
|
|
5
|
+
* leave the machine. Install downloads a published package and runs it
|
|
6
|
+
* through `importProfile` (same validation and credential resolution).
|
|
7
|
+
*/
|
|
8
|
+
import { mkdtemp, readFile, rm, writeFile } from "node:fs/promises";
|
|
9
|
+
import { tmpdir } from "node:os";
|
|
10
|
+
import path from "node:path";
|
|
11
|
+
import { createRegistryClient } from "./registry-client.js";
|
|
12
|
+
import { getProfile } from "./store.js";
|
|
13
|
+
import { exportProfile, importProfile } from "./transfer.js";
|
|
14
|
+
export async function publishProfileToRegistry(input, options = {}) {
|
|
15
|
+
const version = input.version ?? "1.0.0";
|
|
16
|
+
const client = createRegistryClient({
|
|
17
|
+
baseUrl: input.apiBaseUrl,
|
|
18
|
+
token: input.token,
|
|
19
|
+
fetch: input.fetch,
|
|
20
|
+
});
|
|
21
|
+
const profile = await getProfile(input.name, options);
|
|
22
|
+
const tmpRoot = await mkdtemp(path.join(tmpdir(), "nomoreide-publish-"));
|
|
23
|
+
try {
|
|
24
|
+
const { archivePath } = await exportProfile({ name: input.name, outputPath: path.join(tmpRoot, `${input.name}.tar.gz`), cwd: input.cwd }, options);
|
|
25
|
+
const bytes = await readFile(archivePath);
|
|
26
|
+
let registryProfile = await client.getProfileBySlug(input.slug);
|
|
27
|
+
if (!registryProfile) {
|
|
28
|
+
registryProfile = await client.createProfile({
|
|
29
|
+
slug: input.slug,
|
|
30
|
+
title: input.title,
|
|
31
|
+
summary: input.summary,
|
|
32
|
+
visibility: input.visibility,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
const registryVersion = await client.createProfileVersion({
|
|
36
|
+
profileId: registryProfile.id,
|
|
37
|
+
version,
|
|
38
|
+
changelog: input.changelog,
|
|
39
|
+
manifestJson: {
|
|
40
|
+
name: input.slug,
|
|
41
|
+
version,
|
|
42
|
+
...(profile.description ? { description: profile.description } : {}),
|
|
43
|
+
mcps: Object.entries(profile.mcps).map(([name, entry]) => ({ name, kind: entry.kind })),
|
|
44
|
+
skills: profile.skills.map((skill) => ({ name: skill.name })),
|
|
45
|
+
plugins: [],
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
await client.uploadPackage({
|
|
49
|
+
profileId: registryProfile.id,
|
|
50
|
+
versionId: registryVersion.id,
|
|
51
|
+
bytes,
|
|
52
|
+
mimeType: "application/gzip",
|
|
53
|
+
});
|
|
54
|
+
await client.publishProfileVersion({
|
|
55
|
+
profileId: registryProfile.id,
|
|
56
|
+
versionId: registryVersion.id,
|
|
57
|
+
});
|
|
58
|
+
return {
|
|
59
|
+
slug: input.slug,
|
|
60
|
+
profileId: registryProfile.id,
|
|
61
|
+
versionId: registryVersion.id,
|
|
62
|
+
version,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
finally {
|
|
66
|
+
await rm(tmpRoot, { recursive: true, force: true });
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
export async function installProfileFromRegistry(input, options = {}) {
|
|
70
|
+
const slug = input.slug.trim();
|
|
71
|
+
if (!slug)
|
|
72
|
+
throw new Error("Registry slug is required.");
|
|
73
|
+
const fetchImpl = input.fetch ?? fetch;
|
|
74
|
+
const client = input.client ??
|
|
75
|
+
createRegistryClient({ baseUrl: input.apiBaseUrl, token: input.token, fetch: fetchImpl });
|
|
76
|
+
const descriptor = await client.getInstallDescriptor(slug);
|
|
77
|
+
if (!descriptor.download_url) {
|
|
78
|
+
throw new Error(`Registry profile "${slug}" has no downloadable package.`);
|
|
79
|
+
}
|
|
80
|
+
const response = await fetchImpl(descriptor.download_url);
|
|
81
|
+
if (!response.ok) {
|
|
82
|
+
const text = await response.text().catch(() => "");
|
|
83
|
+
throw new Error(`Download failed: HTTP ${response.status}${text ? ` — ${text}` : ""}`);
|
|
84
|
+
}
|
|
85
|
+
const bytes = new Uint8Array(await response.arrayBuffer());
|
|
86
|
+
const dir = await mkdtemp(path.join(tmpdir(), "nomoreide-registry-install-"));
|
|
87
|
+
try {
|
|
88
|
+
const archivePath = path.join(dir, `${slug}-${descriptor.version}.tar.gz`);
|
|
89
|
+
await writeFile(archivePath, bytes);
|
|
90
|
+
const result = await importProfile({
|
|
91
|
+
archivePath,
|
|
92
|
+
force: input.force,
|
|
93
|
+
as: input.as,
|
|
94
|
+
credentials: input.credentials,
|
|
95
|
+
}, options);
|
|
96
|
+
return { ...result, version: descriptor.version, sourceKind: descriptor.source_kind };
|
|
97
|
+
}
|
|
98
|
+
finally {
|
|
99
|
+
await rm(dir, { recursive: true, force: true }).catch(() => { });
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=registry-transfer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry-transfer.js","sourceRoot":"","sources":["../../../src/core/agent-profiles/registry-transfer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { FastMCP } from "fastmcp";
|
|
2
|
+
import { type ToolContext } from "./context.js";
|
|
3
|
+
export declare const AGENT_REGISTRY_TOOL_NAMES: readonly ["nomoreide_profiles_publish", "nomoreide_profiles_install_from_registry", "nomoreide_profiles_register_github"];
|
|
4
|
+
/**
|
|
5
|
+
* Hosted profile registry (ROR-63; the brainctl platform, kept as-is).
|
|
6
|
+
* Auth comes from the stored registry sign-in (`~/.brainctl/config.json`) or
|
|
7
|
+
* `BRAINCTL_API_TOKEN` — sign-in itself is a browser flow in the web UI.
|
|
8
|
+
*/
|
|
9
|
+
export declare function registerAgentRegistryTools(server: FastMCP, _ctx: ToolContext): void;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { createRegistryClient, createRegistryTokenManager, installProfileFromRegistry, publishProfileToRegistry, resolveRegistryApiBaseUrl, resolveRegistryApiToken, } from "../../core/agent-profiles/index.js";
|
|
3
|
+
import { stringify } from "./context.js";
|
|
4
|
+
export const AGENT_REGISTRY_TOOL_NAMES = [
|
|
5
|
+
"nomoreide_profiles_publish",
|
|
6
|
+
"nomoreide_profiles_install_from_registry",
|
|
7
|
+
"nomoreide_profiles_register_github",
|
|
8
|
+
];
|
|
9
|
+
/**
|
|
10
|
+
* Hosted profile registry (ROR-63; the brainctl platform, kept as-is).
|
|
11
|
+
* Auth comes from the stored registry sign-in (`~/.brainctl/config.json`) or
|
|
12
|
+
* `BRAINCTL_API_TOKEN` — sign-in itself is a browser flow in the web UI.
|
|
13
|
+
*/
|
|
14
|
+
export function registerAgentRegistryTools(server, _ctx) {
|
|
15
|
+
const tokenManager = createRegistryTokenManager();
|
|
16
|
+
const authenticatedFetch = (input, init) => tokenManager.authenticatedFetch(typeof input === "string" ? input : input.toString(), init);
|
|
17
|
+
async function requireToken() {
|
|
18
|
+
if ((await tokenManager.getAccessToken()) === null) {
|
|
19
|
+
throw new Error("Not signed in to the profile registry. Sign in from the web UI (Agent Environments → Registry) or set BRAINCTL_API_TOKEN.");
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
server.addTool({
|
|
23
|
+
name: "nomoreide_profiles_publish",
|
|
24
|
+
description: "Publish a saved profile to the hosted registry so others can install it by slug. Uploads the credential-redacted export archive — raw secrets never leave the machine.",
|
|
25
|
+
parameters: z.object({
|
|
26
|
+
name: z.string().min(1).describe("Local profile name."),
|
|
27
|
+
slug: z.string().min(1).describe("Registry slug to publish under."),
|
|
28
|
+
title: z.string().min(1),
|
|
29
|
+
summary: z.string().optional(),
|
|
30
|
+
version: z.string().optional().describe("Defaults to 1.0.0."),
|
|
31
|
+
changelog: z.string().optional(),
|
|
32
|
+
visibility: z.enum(["public", "private"]).default("public"),
|
|
33
|
+
cwd: z.string().min(1).optional().describe("Project directory (defaults to the server's cwd)."),
|
|
34
|
+
}),
|
|
35
|
+
execute: async (input) => {
|
|
36
|
+
await requireToken();
|
|
37
|
+
return stringify(await publishProfileToRegistry({
|
|
38
|
+
...input,
|
|
39
|
+
cwd: input.cwd ?? process.cwd(),
|
|
40
|
+
apiBaseUrl: await resolveRegistryApiBaseUrl(),
|
|
41
|
+
fetch: authenticatedFetch,
|
|
42
|
+
}));
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
server.addTool({
|
|
46
|
+
name: "nomoreide_profiles_install_from_registry",
|
|
47
|
+
description: "Install a published profile from the hosted registry by slug. Supplied credentials (or matching environment variables) fill ${credentials.*} placeholders; unresolved keys are reported.",
|
|
48
|
+
parameters: z.object({
|
|
49
|
+
slug: z.string().min(1),
|
|
50
|
+
force: z.boolean().default(false).describe("Overwrite an existing profile of the same name."),
|
|
51
|
+
as: z.string().optional().describe("Install under a different local profile name."),
|
|
52
|
+
credentials: z.record(z.string()).optional(),
|
|
53
|
+
}),
|
|
54
|
+
execute: async (input) => stringify(await installProfileFromRegistry({
|
|
55
|
+
...input,
|
|
56
|
+
apiBaseUrl: await resolveRegistryApiBaseUrl(),
|
|
57
|
+
token: (await resolveRegistryApiToken())?.token,
|
|
58
|
+
})),
|
|
59
|
+
});
|
|
60
|
+
server.addTool({
|
|
61
|
+
name: "nomoreide_profiles_register_github",
|
|
62
|
+
description: "Register a GitHub repository as a registry profile — the registry serves it without a package upload (free sharing path).",
|
|
63
|
+
parameters: z.object({
|
|
64
|
+
repoUrl: z.string().min(1).describe("GitHub repository URL."),
|
|
65
|
+
slug: z.string().min(1),
|
|
66
|
+
title: z.string().min(1),
|
|
67
|
+
summary: z.string().optional(),
|
|
68
|
+
refName: z.string().optional().describe("Branch or tag (defaults to main)."),
|
|
69
|
+
profilePath: z.string().optional().describe("Path to the profile file inside the repo."),
|
|
70
|
+
}),
|
|
71
|
+
execute: async (input) => {
|
|
72
|
+
await requireToken();
|
|
73
|
+
const client = createRegistryClient({
|
|
74
|
+
baseUrl: await resolveRegistryApiBaseUrl(),
|
|
75
|
+
fetch: authenticatedFetch,
|
|
76
|
+
});
|
|
77
|
+
return stringify(await client.registerGithubProfile({ ...input, manifestJson: { name: input.slug } }));
|
|
78
|
+
},
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=agent-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-registry.js","sourceRoot":"","sources":["../../../src/mcp/tools/agent-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ import { type ToolContext } from "./context.js";
|
|
|
10
10
|
* a new domain module and register it below. This aggregator never grows a
|
|
11
11
|
* per-tool branch.
|
|
12
12
|
*/
|
|
13
|
-
export declare const NOMOREIDE_TOOL_NAMES: readonly ["nomoreide_list_services", "nomoreide_register_service", "nomoreide_start_service", "nomoreide_stop_service", "nomoreide_restart_service", "nomoreide_read_logs", "nomoreide_register_bundle", "nomoreide_start_bundle", "nomoreide_stop_bundle", "nomoreide_status", "nomoreide_service_context", "nomoreide_service_health", "nomoreide_timeline", "nomoreide_onboard_repo", "nomoreide_git_status", "nomoreide_git_branches", "nomoreide_git_switch_branch", "nomoreide_git_create_branch", "nomoreide_git_fetch", "nomoreide_git_diff", "nomoreide_git_staged_diff", "nomoreide_git_log", "nomoreide_git_stage", "nomoreide_git_unstage", "nomoreide_git_commit", "nomoreide_git_push", "nomoreide_git_clone", "nomoreide_git_register_repository", "nomoreide_git_select_repository", "nomoreide_snapshots_list", "nomoreide_snapshot_create", "nomoreide_github_set_token", "nomoreide_github_list_prs", "nomoreide_github_get_pr", "nomoreide_github_get_pr_diff", "nomoreide_github_create_pr", "nomoreide_github_merge_pr", "nomoreide_github_list_issues", "nomoreide_github_get_issue", "nomoreide_github_list_issue_comments", "nomoreide_github_add_issue_comment", "nomoreide_github_create_issue", "nomoreide_github_get_commit_ci", "nomoreide_github_list_workflow_runs", "nomoreide_list_errors", "nomoreide_error_prompt", "nomoreide_list_databases", "nomoreide_db_tables", "nomoreide_db_sample", "nomoreide_db_query", "nomoreide_docs", "nomoreide_open_ui", "nomoreide_close_ui", "nomoreide_agents_status", "nomoreide_agents_read_configs", "nomoreide_agents_doctor", "nomoreide_agents_add_mcp", "nomoreide_agents_remove_mcp", "nomoreide_agents_move_mcp_scope", "nomoreide_agents_move_skill_scope", "nomoreide_agents_snapshot_agent", "nomoreide_profiles_list", "nomoreide_profiles_get", "nomoreide_profiles_create", "nomoreide_profiles_update", "nomoreide_profiles_delete", "nomoreide_profiles_snapshot", "nomoreide_profiles_apply", "nomoreide_profiles_export", "nomoreide_profiles_import", "nomoreide_profiles_copy_items"];
|
|
13
|
+
export declare const NOMOREIDE_TOOL_NAMES: readonly ["nomoreide_list_services", "nomoreide_register_service", "nomoreide_start_service", "nomoreide_stop_service", "nomoreide_restart_service", "nomoreide_read_logs", "nomoreide_register_bundle", "nomoreide_start_bundle", "nomoreide_stop_bundle", "nomoreide_status", "nomoreide_service_context", "nomoreide_service_health", "nomoreide_timeline", "nomoreide_onboard_repo", "nomoreide_git_status", "nomoreide_git_branches", "nomoreide_git_switch_branch", "nomoreide_git_create_branch", "nomoreide_git_fetch", "nomoreide_git_diff", "nomoreide_git_staged_diff", "nomoreide_git_log", "nomoreide_git_stage", "nomoreide_git_unstage", "nomoreide_git_commit", "nomoreide_git_push", "nomoreide_git_clone", "nomoreide_git_register_repository", "nomoreide_git_select_repository", "nomoreide_snapshots_list", "nomoreide_snapshot_create", "nomoreide_github_set_token", "nomoreide_github_list_prs", "nomoreide_github_get_pr", "nomoreide_github_get_pr_diff", "nomoreide_github_create_pr", "nomoreide_github_merge_pr", "nomoreide_github_list_issues", "nomoreide_github_get_issue", "nomoreide_github_list_issue_comments", "nomoreide_github_add_issue_comment", "nomoreide_github_create_issue", "nomoreide_github_get_commit_ci", "nomoreide_github_list_workflow_runs", "nomoreide_list_errors", "nomoreide_error_prompt", "nomoreide_list_databases", "nomoreide_db_tables", "nomoreide_db_sample", "nomoreide_db_query", "nomoreide_docs", "nomoreide_open_ui", "nomoreide_close_ui", "nomoreide_agents_status", "nomoreide_agents_read_configs", "nomoreide_agents_doctor", "nomoreide_agents_add_mcp", "nomoreide_agents_remove_mcp", "nomoreide_agents_move_mcp_scope", "nomoreide_agents_move_skill_scope", "nomoreide_agents_snapshot_agent", "nomoreide_profiles_list", "nomoreide_profiles_get", "nomoreide_profiles_create", "nomoreide_profiles_update", "nomoreide_profiles_delete", "nomoreide_profiles_snapshot", "nomoreide_profiles_apply", "nomoreide_profiles_export", "nomoreide_profiles_import", "nomoreide_profiles_copy_items", "nomoreide_profiles_publish", "nomoreide_profiles_install_from_registry", "nomoreide_profiles_register_github"];
|
|
14
14
|
interface RegisterNoMoreIdeToolsOptions extends ToolContext {
|
|
15
15
|
server: FastMCP;
|
|
16
16
|
toolCallStore?: ToolCallStore;
|
package/dist/mcp/tools/index.js
CHANGED
|
@@ -2,6 +2,7 @@ import { wrapServerForRecording } from "./context.js";
|
|
|
2
2
|
import { AGENT_TOOL_NAMES, registerAgentTools } from "./agent.js";
|
|
3
3
|
import { AGENT_ENV_TOOL_NAMES, registerAgentEnvTools } from "./agent-env.js";
|
|
4
4
|
import { AGENT_PROFILE_TOOL_NAMES, registerAgentProfileTools } from "./agent-profiles.js";
|
|
5
|
+
import { AGENT_REGISTRY_TOOL_NAMES, registerAgentRegistryTools } from "./agent-registry.js";
|
|
5
6
|
import { DATABASE_TOOL_NAMES, registerDatabaseTools } from "./database.js";
|
|
6
7
|
import { DOC_TOOL_NAMES, registerDocTools } from "./docs.js";
|
|
7
8
|
import { ERROR_TOOL_NAMES, registerErrorTools } from "./errors.js";
|
|
@@ -30,6 +31,7 @@ export const NOMOREIDE_TOOL_NAMES = [
|
|
|
30
31
|
...AGENT_TOOL_NAMES,
|
|
31
32
|
...AGENT_ENV_TOOL_NAMES,
|
|
32
33
|
...AGENT_PROFILE_TOOL_NAMES,
|
|
34
|
+
...AGENT_REGISTRY_TOOL_NAMES,
|
|
33
35
|
];
|
|
34
36
|
export function registerNoMoreIdeTools(options) {
|
|
35
37
|
const { server: rawServer, toolCallStore, agentSessions, ...ctx } = options;
|
|
@@ -47,5 +49,6 @@ export function registerNoMoreIdeTools(options) {
|
|
|
47
49
|
registerAgentTools(server, ctx);
|
|
48
50
|
registerAgentEnvTools(server, ctx);
|
|
49
51
|
registerAgentProfileTools(server, ctx);
|
|
52
|
+
registerAgentRegistryTools(server, ctx);
|
|
50
53
|
}
|
|
51
54
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/tools/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,sBAAsB,EAAoB,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAC1F,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAE5E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,GAAG,kBAAkB;IACrB,GAAG,kBAAkB;IACrB,GAAG,cAAc;IACjB,GAAG,mBAAmB;IACtB,GAAG,iBAAiB;IACpB,GAAG,gBAAgB;IACnB,GAAG,mBAAmB;IACtB,GAAG,cAAc;IACjB,GAAG,gBAAgB;IACnB,GAAG,oBAAoB;IACvB,GAAG,wBAAwB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/tools/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,sBAAsB,EAAoB,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAC1F,OAAO,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAC5F,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAE5E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,GAAG,kBAAkB;IACrB,GAAG,kBAAkB;IACrB,GAAG,cAAc;IACjB,GAAG,mBAAmB;IACtB,GAAG,iBAAiB;IACpB,GAAG,gBAAgB;IACnB,GAAG,mBAAmB;IACtB,GAAG,cAAc;IACjB,GAAG,gBAAgB;IACnB,GAAG,oBAAoB;IACvB,GAAG,wBAAwB;IAC3B,GAAG,yBAAyB;CACpB,CAAC;AAQX,MAAM,UAAU,sBAAsB,CACpC,OAAsC;IAEtC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC;IAC5E,MAAM,MAAM,GAAG,aAAa;QAC1B,CAAC,CAAC,sBAAsB,CAAC,SAAS,EAAE,aAAa,EAAE,aAAa,CAAC;QACjE,CAAC,CAAC,SAAS,CAAC;IAEd,oBAAoB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAClC,oBAAoB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAClC,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,qBAAqB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACnC,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACjC,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChC,qBAAqB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACnC,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChC,qBAAqB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACnC,yBAAyB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACvC,0BAA0B,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC1C,CAAC"}
|