nomoreide 0.1.97 → 0.1.98
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 +16 -1
- package/dist/cli/commands.js +5 -1
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/database.d.ts +2 -0
- package/dist/cli/database.js +145 -0
- package/dist/cli/database.js.map +1 -0
- package/dist/core/agent-profiles/types.d.ts +6 -6
- package/dist/core/config-store.d.ts +16 -2
- package/dist/core/config-store.js +55 -2
- package/dist/core/config-store.js.map +1 -1
- package/dist/core/db/catalog.d.ts +57 -0
- package/dist/core/db/catalog.js +38 -0
- package/dist/core/db/catalog.js.map +1 -0
- package/dist/core/db/driver.d.ts +20 -3
- package/dist/core/db/driver.js +8 -0
- package/dist/core/db/driver.js.map +1 -1
- package/dist/core/db/mysql-driver.d.ts +8 -1
- package/dist/core/db/mysql-driver.js +167 -7
- package/dist/core/db/mysql-driver.js.map +1 -1
- package/dist/core/db/postgres-driver.d.ts +8 -1
- package/dist/core/db/postgres-driver.js +235 -4
- package/dist/core/db/postgres-driver.js.map +1 -1
- package/dist/core/db/sqlite-driver.d.ts +7 -1
- package/dist/core/db/sqlite-driver.js +123 -4
- package/dist/core/db/sqlite-driver.js.map +1 -1
- package/dist/core/db-peek.d.ts +24 -0
- package/dist/core/db-peek.js +120 -0
- package/dist/core/db-peek.js.map +1 -1
- package/dist/core/db-write.d.ts +11 -0
- package/dist/core/db-write.js +118 -0
- package/dist/core/db-write.js.map +1 -1
- package/dist/core/git-actions.d.ts +12 -0
- package/dist/core/git-actions.js +48 -0
- package/dist/core/git-actions.js.map +1 -1
- package/dist/core/git-manager.d.ts +4 -1
- package/dist/core/git-manager.js +18 -2
- package/dist/core/git-manager.js.map +1 -1
- package/dist/core/github-auth.d.ts +28 -0
- package/dist/core/github-auth.js +134 -0
- package/dist/core/github-auth.js.map +1 -0
- package/dist/core/github-context.d.ts +12 -0
- package/dist/core/github-context.js +64 -0
- package/dist/core/github-context.js.map +1 -0
- package/dist/core/github-manager.d.ts +2 -0
- package/dist/core/github-manager.js.map +1 -1
- package/dist/core/tool-call-store.d.ts +1 -0
- package/dist/core/tool-call-store.js +10 -1
- package/dist/core/tool-call-store.js.map +1 -1
- package/dist/core/types.d.ts +13 -0
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp/tools/context.js +2 -2
- package/dist/mcp/tools/context.js.map +1 -1
- package/dist/mcp/tools/database.d.ts +1 -1
- package/dist/mcp/tools/database.js +53 -0
- package/dist/mcp/tools/database.js.map +1 -1
- package/dist/mcp/tools/github.js +10 -20
- package/dist/mcp/tools/github.js.map +1 -1
- package/dist/mcp/tools/index.d.ts +1 -1
- package/dist/web/client/assets/{code-editor-Bv3tCQrj.js → code-editor-C9zfB-Qp.js} +1 -1
- package/dist/web/client/assets/index-BW5OtB6c.js +308 -0
- package/dist/web/client/assets/index-DofkHtdO.css +1 -0
- package/dist/web/client/assets/{system-process-table-q3WxburN.js → system-process-table-yI0XrfjG.js} +1 -1
- package/dist/web/client/index.html +3 -3
- package/dist/web/routes/database-routes.js +93 -2
- package/dist/web/routes/database-routes.js.map +1 -1
- package/dist/web/routes/git-routes.js +61 -1
- package/dist/web/routes/git-routes.js.map +1 -1
- package/dist/web/routes/github-context.d.ts +2 -8
- package/dist/web/routes/github-context.js +2 -29
- package/dist/web/routes/github-context.js.map +1 -1
- package/dist/web/routes/github-routes.js +157 -9
- package/dist/web/routes/github-routes.js.map +1 -1
- package/package.json +1 -1
- package/dist/web/client/assets/index-BeJHDwLO.css +0 -1
- package/dist/web/client/assets/index-zb3rhV5y.js +0 -308
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { GitHubCredentialSelection, GitRepositoryDefinition, NoMoreIdeConfig } from "./types.js";
|
|
2
|
+
export interface GitHubCliAccount {
|
|
3
|
+
host: string;
|
|
4
|
+
login: string;
|
|
5
|
+
active: boolean;
|
|
6
|
+
state: string;
|
|
7
|
+
}
|
|
8
|
+
export interface GitHubCliAccounts {
|
|
9
|
+
available: boolean;
|
|
10
|
+
accounts: GitHubCliAccount[];
|
|
11
|
+
error?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface ResolvedGitHubCredential {
|
|
14
|
+
source: "gh" | "stored";
|
|
15
|
+
host: string;
|
|
16
|
+
login?: string;
|
|
17
|
+
token: string;
|
|
18
|
+
}
|
|
19
|
+
export type GhRunner = (args: string[]) => Promise<string>;
|
|
20
|
+
export declare class GitHubCliAuth {
|
|
21
|
+
private readonly run;
|
|
22
|
+
constructor(run?: GhRunner);
|
|
23
|
+
listAccounts(): Promise<GitHubCliAccounts>;
|
|
24
|
+
token(host: string, login: string): Promise<string>;
|
|
25
|
+
}
|
|
26
|
+
export declare function parseGitHubCliAccounts(raw: string): GitHubCliAccount[];
|
|
27
|
+
export declare function resolveGitHubCredential(config: NoMoreIdeConfig, repository: GitRepositoryDefinition | undefined, remoteHost: string, cli?: GitHubCliAuth): Promise<ResolvedGitHubCredential>;
|
|
28
|
+
export declare function publicCredential(credential: ResolvedGitHubCredential): GitHubCredentialSelection;
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { execFile } from "node:child_process";
|
|
2
|
+
import { promisify } from "node:util";
|
|
3
|
+
const execFileAsync = promisify(execFile);
|
|
4
|
+
const GH_TIMEOUT_MS = 5_000;
|
|
5
|
+
const GH_MAX_BUFFER = 1024 * 1024;
|
|
6
|
+
export class GitHubCliAuth {
|
|
7
|
+
run;
|
|
8
|
+
constructor(run = runGh) {
|
|
9
|
+
this.run = run;
|
|
10
|
+
}
|
|
11
|
+
async listAccounts() {
|
|
12
|
+
try {
|
|
13
|
+
const stdout = await this.run(["auth", "status", "--json", "hosts"]);
|
|
14
|
+
return { available: true, accounts: parseGitHubCliAccounts(stdout) };
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
return {
|
|
18
|
+
available: false,
|
|
19
|
+
accounts: [],
|
|
20
|
+
error: ghUnavailableMessage(error),
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
async token(host, login) {
|
|
25
|
+
validateGitHubIdentity(host, login);
|
|
26
|
+
try {
|
|
27
|
+
const token = (await this.run([
|
|
28
|
+
"auth",
|
|
29
|
+
"token",
|
|
30
|
+
"--hostname",
|
|
31
|
+
host,
|
|
32
|
+
"--user",
|
|
33
|
+
login,
|
|
34
|
+
])).trim();
|
|
35
|
+
if (!token)
|
|
36
|
+
throw new Error("GitHub CLI returned an empty token.");
|
|
37
|
+
return token;
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
throw new Error(`GitHub CLI could not provide credentials for @${login} on ${host}. Re-authenticate with gh auth login or choose another account.`);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
export function parseGitHubCliAccounts(raw) {
|
|
45
|
+
const parsed = JSON.parse(raw);
|
|
46
|
+
if (!parsed.hosts || typeof parsed.hosts !== "object" || Array.isArray(parsed.hosts)) {
|
|
47
|
+
throw new Error("GitHub CLI returned an unsupported account response.");
|
|
48
|
+
}
|
|
49
|
+
const accounts = [];
|
|
50
|
+
for (const [host, entries] of Object.entries(parsed.hosts)) {
|
|
51
|
+
if (!Array.isArray(entries))
|
|
52
|
+
continue;
|
|
53
|
+
for (const entry of entries) {
|
|
54
|
+
if (!entry || typeof entry !== "object")
|
|
55
|
+
continue;
|
|
56
|
+
const candidate = entry;
|
|
57
|
+
const login = typeof candidate.login === "string" ? candidate.login.trim() : "";
|
|
58
|
+
const entryHost = typeof candidate.host === "string" ? candidate.host.trim() : host;
|
|
59
|
+
if (!login || !entryHost)
|
|
60
|
+
continue;
|
|
61
|
+
accounts.push({
|
|
62
|
+
host: entryHost,
|
|
63
|
+
login,
|
|
64
|
+
active: candidate.active === true,
|
|
65
|
+
state: typeof candidate.state === "string" ? candidate.state : "unknown",
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return accounts;
|
|
70
|
+
}
|
|
71
|
+
export async function resolveGitHubCredential(config, repository, remoteHost, cli = new GitHubCliAuth()) {
|
|
72
|
+
const selection = repository?.githubCredential;
|
|
73
|
+
if (selection?.host !== undefined && selection.host !== remoteHost) {
|
|
74
|
+
throw new Error(`The selected GitHub credential is for ${selection.host}, but this repository uses ${remoteHost}.`);
|
|
75
|
+
}
|
|
76
|
+
if (selection?.source === "gh") {
|
|
77
|
+
return {
|
|
78
|
+
source: "gh",
|
|
79
|
+
host: selection.host,
|
|
80
|
+
login: selection.login,
|
|
81
|
+
token: await cli.token(selection.host, selection.login),
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
const host = selection?.host ?? remoteHost;
|
|
85
|
+
const token = config.githubTokens.find((entry) => entry.host === host)?.token;
|
|
86
|
+
if (!token) {
|
|
87
|
+
const suffix = selection?.source === "stored" ? ` for ${host}` : "";
|
|
88
|
+
throw new Error(`No stored GitHub token configured${suffix}. Choose a GitHub CLI account or connect GitHub.`);
|
|
89
|
+
}
|
|
90
|
+
return { source: "stored", host, token };
|
|
91
|
+
}
|
|
92
|
+
export function publicCredential(credential) {
|
|
93
|
+
if (credential.source === "gh") {
|
|
94
|
+
if (!credential.login)
|
|
95
|
+
throw new Error("Resolved GitHub CLI credential is missing its login.");
|
|
96
|
+
return { source: "gh", host: credential.host, login: credential.login };
|
|
97
|
+
}
|
|
98
|
+
return { source: "stored", host: credential.host };
|
|
99
|
+
}
|
|
100
|
+
async function runGh(args) {
|
|
101
|
+
const env = { ...process.env };
|
|
102
|
+
for (const name of [
|
|
103
|
+
"GH_TOKEN",
|
|
104
|
+
"GITHUB_TOKEN",
|
|
105
|
+
"GH_ENTERPRISE_TOKEN",
|
|
106
|
+
"GITHUB_ENTERPRISE_TOKEN",
|
|
107
|
+
]) {
|
|
108
|
+
delete env[name];
|
|
109
|
+
}
|
|
110
|
+
env.GH_PROMPT_DISABLED = "1";
|
|
111
|
+
const { stdout } = await execFileAsync("gh", args, {
|
|
112
|
+
encoding: "utf8",
|
|
113
|
+
env,
|
|
114
|
+
maxBuffer: GH_MAX_BUFFER,
|
|
115
|
+
timeout: GH_TIMEOUT_MS,
|
|
116
|
+
});
|
|
117
|
+
return stdout;
|
|
118
|
+
}
|
|
119
|
+
function validateGitHubIdentity(host, login) {
|
|
120
|
+
const hasControlCharacter = [...host, ...login].some((char) => {
|
|
121
|
+
const code = char.charCodeAt(0);
|
|
122
|
+
return code <= 31 || code === 127;
|
|
123
|
+
});
|
|
124
|
+
if (!host.trim() || !login.trim() || hasControlCharacter) {
|
|
125
|
+
throw new Error("Invalid GitHub host or account login.");
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
function ghUnavailableMessage(error) {
|
|
129
|
+
const code = error?.code;
|
|
130
|
+
if (code === "ENOENT")
|
|
131
|
+
return "GitHub CLI is not installed or is not available on PATH.";
|
|
132
|
+
return "GitHub CLI account discovery is unavailable. Update gh and run gh auth login.";
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=github-auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-auth.js","sourceRoot":"","sources":["../../src/core/github-auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ConfigStore } from "./config-store.js";
|
|
2
|
+
import { GitHubManager } from "./github-manager.js";
|
|
3
|
+
import type { GitHubCredentialSelection, NoMoreIdeConfig } from "./types.js";
|
|
4
|
+
export interface GitHubContext {
|
|
5
|
+
manager: GitHubManager;
|
|
6
|
+
owner: string;
|
|
7
|
+
repo: string;
|
|
8
|
+
credential: GitHubCredentialSelection;
|
|
9
|
+
}
|
|
10
|
+
export declare function requireGitHubContext(configStore: ConfigStore, gitCwd: string): Promise<GitHubContext>;
|
|
11
|
+
export declare function optionalGitHubContext(configStore: ConfigStore, gitCwd: string): Promise<GitHubContext | null>;
|
|
12
|
+
export declare function selectedGitHubCwd(config: NoMoreIdeConfig, fallbackCwd: string): string;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { realpath } from "node:fs/promises";
|
|
2
|
+
import { isAbsolute, relative, resolve } from "node:path";
|
|
3
|
+
import { GitManager } from "./git-manager.js";
|
|
4
|
+
import { publicCredential, resolveGitHubCredential } from "./github-auth.js";
|
|
5
|
+
import { GitHubManager } from "./github-manager.js";
|
|
6
|
+
export async function requireGitHubContext(configStore, gitCwd) {
|
|
7
|
+
const config = await configStore.load();
|
|
8
|
+
const git = new GitManager(gitCwd);
|
|
9
|
+
const [remoteUrl, topLevel] = await Promise.all([git.remoteUrl("origin"), git.root()]);
|
|
10
|
+
if (!remoteUrl)
|
|
11
|
+
throw new Error("No git remote 'origin' found.");
|
|
12
|
+
const parsed = GitHubManager.parseRemoteUrl(remoteUrl);
|
|
13
|
+
if (!parsed)
|
|
14
|
+
throw new Error(`Could not parse GitHub remote URL: ${remoteUrl}`);
|
|
15
|
+
const repository = await matchRegisteredRepository(config, topLevel);
|
|
16
|
+
const credential = await resolveGitHubCredential(config, repository, "github.com");
|
|
17
|
+
return {
|
|
18
|
+
manager: new GitHubManager(credential.token, parsed.owner, parsed.repo),
|
|
19
|
+
owner: parsed.owner,
|
|
20
|
+
repo: parsed.repo,
|
|
21
|
+
credential: publicCredential(credential),
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
export async function optionalGitHubContext(configStore, gitCwd) {
|
|
25
|
+
try {
|
|
26
|
+
return await requireGitHubContext(configStore, gitCwd);
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
export function selectedGitHubCwd(config, fallbackCwd) {
|
|
33
|
+
const repository = config.gitRepositories.find((entry) => entry.name === config.selectedGitRepository)
|
|
34
|
+
?? config.gitRepositories[0];
|
|
35
|
+
return repository?.activeWorktreePath ?? repository?.path ?? fallbackCwd;
|
|
36
|
+
}
|
|
37
|
+
async function matchRegisteredRepository(config, topLevel) {
|
|
38
|
+
const canonicalTopLevel = await canonicalPath(topLevel);
|
|
39
|
+
const candidates = [];
|
|
40
|
+
for (const repository of config.gitRepositories) {
|
|
41
|
+
for (const root of [repository.path, repository.activeWorktreePath]) {
|
|
42
|
+
if (root)
|
|
43
|
+
candidates.push({ repository, root: await canonicalPath(root) });
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
const exact = candidates.filter((candidate) => candidate.root === canonicalTopLevel);
|
|
47
|
+
const names = new Set(exact.map((candidate) => candidate.repository.name));
|
|
48
|
+
if (names.size === 1)
|
|
49
|
+
return exact[0]?.repository;
|
|
50
|
+
if (names.size > 1)
|
|
51
|
+
throw new Error("The Git repository matches multiple registered projects.");
|
|
52
|
+
if (candidates.some((candidate) => pathContains(candidate.root, canonicalTopLevel))) {
|
|
53
|
+
throw new Error("This nested Git repository is not registered with its own GitHub account.");
|
|
54
|
+
}
|
|
55
|
+
return undefined;
|
|
56
|
+
}
|
|
57
|
+
async function canonicalPath(path) {
|
|
58
|
+
return realpath(path).catch(() => resolve(path));
|
|
59
|
+
}
|
|
60
|
+
function pathContains(root, candidate) {
|
|
61
|
+
const child = relative(root, candidate);
|
|
62
|
+
return child === "" || (!child.startsWith("..") && !isAbsolute(child));
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=github-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-context.js","sourceRoot":"","sources":["../../src/core/github-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -122,6 +122,8 @@ export interface GitHubWorkflowJob {
|
|
|
122
122
|
}
|
|
123
123
|
export interface GitHubViewer {
|
|
124
124
|
login: string;
|
|
125
|
+
/** Public avatar URL; cached at connect time so status calls stay free. */
|
|
126
|
+
avatar_url?: string;
|
|
125
127
|
}
|
|
126
128
|
export interface GitHubRepoInfo {
|
|
127
129
|
full_name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github-manager.js","sourceRoot":"","sources":["../../src/core/github-manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"github-manager.js","sourceRoot":"","sources":["../../src/core/github-manager.ts"],"names":[],"mappings":"AAoJA,MAAM,OAAO,cAAe,SAAQ,KAAK;IAGrB;IACA;IAHlB,YACE,OAAe,EACC,MAAc,EACd,IAAY;QAE5B,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,WAAM,GAAN,MAAM,CAAQ;QACd,SAAI,GAAJ,IAAI,CAAQ;QAG5B,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,MAAM,OAAO,aAAa;IAEL;IACA;IACA;IACA;IAJnB,YACmB,KAAa,EACb,KAAa,EACb,IAAY,EACZ,UAAU,wBAAwB;QAHlC,UAAK,GAAL,KAAK,CAAQ;QACb,UAAK,GAAL,KAAK,CAAQ;QACb,SAAI,GAAJ,IAAI,CAAQ;QACZ,YAAO,GAAP,OAAO,CAA2B;IAClD,CAAC;IAEJ,MAAM,CAAC,cAAc,CAAC,SAAiB;QACrC,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;QACjC,sCAAsC;QACtC,MAAM,UAAU,GAAG,yEAAyE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3G,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAE,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAE,EAAE,CAAC;QACzD,CAAC;QACD,kCAAkC;QAClC,MAAM,QAAQ,GAAG,+CAA+C,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/E,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAE,EAAE,CAAC;QACrD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,MAAM;QACV,OAAO,IAAI,CAAC,OAAO,CAAe,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,OAAO,IAAI,CAAC,OAAO,CAAiB,UAAU,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,IAAY,EAAE,IAAY;QAC9C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAC7B,UAAU,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,YAAY,kBAAkB,CAAC,IAAI,CAAC,MAAM,kBAAkB,CAAC,IAAI,CAAC,EAAE,CACtG,CAAC;QACF,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBACrC,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;aAC1C,CAAC,CAAC;YACH,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACvC,IAAI,EAAE,IAAI,CAAC,QAAQ;gBACnB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAC;YACH,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI;SAC1C,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAC7B,UAAU,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,wBAAwB,CAC1D,CAAC;QACF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAC3B,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;SACnC,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,QAAmC,MAAM,EAAE,IAAI,GAAG,CAAC;QAC/D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAC7B,UAAU,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,gBAAgB,KAAK,qBAAqB,IAAI,EAAE,CAClF,CAAC;QACF,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAAc;QACxB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAC7B,UAAU,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,UAAU,MAAM,EAAE,CACpD,CAAC;QACF,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAAc;QAC5B,OAAO,IAAI,CAAC,OAAO,CACjB,UAAU,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,UAAU,MAAM,EAAE,EACnD,EAAE,MAAM,EAAE,6BAA6B,EAAE,CAC1C,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAc;QAC9B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAC7B,UAAU,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,UAAU,MAAM,qBAAqB,CACvE,CAAC;QACF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACzB,IAAI,EAAE,IAAI,CAAC,QAAQ;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAAc;QAChC,OAAO,IAAI,CAAC,OAAO,CACjB,UAAU,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,UAAU,MAAM,uBAAuB,CACzE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAMd;QACC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAC7B,UAAU,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,QAAQ,EACzC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAC/B,CAAC;QACF,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,OAAO,CACX,MAAc,EACd,OAAiG,EAAE;QAEnG,OAAO,IAAI,CAAC,OAAO,CACjB,UAAU,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,UAAU,MAAM,QAAQ,EACzD;YACE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE;gBACJ,YAAY,EAAE,IAAI,CAAC,MAAM,IAAI,QAAQ;gBACrC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/D,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACtE;SACF,CACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,QAAmC,MAAM,EAAE,IAAI,GAAG,CAAC;QAClE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAC7B,UAAU,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,iBAAiB,KAAK,qBAAqB,IAAI,EAAE,CACnF,CAAC;QACF,iDAAiD;QACjD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAAc;QAC3B,OAAO,IAAI,CAAC,OAAO,CACjB,UAAU,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,WAAW,MAAM,EAAE,CACrD,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAAsC;QACtD,OAAO,IAAI,CAAC,OAAO,CACjB,UAAU,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,SAAS,EAC1C,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAC/B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,MAAc;QACpC,OAAO,IAAI,CAAC,OAAO,CACjB,UAAU,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,WAAW,MAAM,wBAAwB,CAC3E,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,MAAc,EAAE,IAAY;QAChD,OAAO,IAAI,CAAC,OAAO,CACjB,UAAU,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,WAAW,MAAM,WAAW,EAC7D,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,CACnC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,GAAW;QAC/B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAC7B,UAAU,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,YAAY,GAAG,0BAA0B,CAC3E,CAAC;YACF,OAAO;gBACL,GAAG;gBACH,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC;gBACnC,UAAU,EAAE,IAAI,CAAC,WAAW;gBAC5B,IAAI,EAAE,IAAI,CAAC,UAAU;aACtB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,cAAc,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5D,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;YAC5D,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,MAAe,EAAE,IAAI,GAAG,CAAC;QAC9C,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3E,IAAI,MAAM;YAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAC7B,UAAU,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,iBAAiB,MAAM,EAAE,CAC3D,CAAC;QACF,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,KAAa;QACrC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAC7B,UAAU,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,iBAAiB,KAAK,oBAAoB,CAC5E,CAAC;QACF,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAEO,KAAK,CAAC,OAAO,CAAI,IAAY,EAAE,IAA2D;QAChG,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC;QACtE,MAAM,OAAO,GAA2B;YACtC,aAAa,EAAE,UAAU,IAAI,CAAC,KAAK,EAAE;YACrC,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,6BAA6B;YACrD,sBAAsB,EAAE,YAAY;SACrC,CAAC;QAEF,MAAM,IAAI,GAAgB;YACxB,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,KAAK;YAC7B,OAAO;SACR,CAAC;QAEF,IAAI,IAAI,EAAE,IAAI,KAAK,SAAS,EAAE,CAAC;YAC7B,IAAI,IAAI,CAAC,MAAM,KAAK,6BAA6B,EAAE,CAAC;gBAClD,kCAAkC;YACpC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;gBAC7C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAExC,IAAI,IAAI,EAAE,MAAM,KAAK,6BAA6B,EAAE,CAAC;YACnD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;gBACpE,MAAM,IAAI,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACxD,CAAC;YACD,OAAO,QAAQ,CAAC,IAAI,EAAkB,CAAC;QACzC,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,IAAI,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC;YAClC,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA0B,CAAC;gBAC3D,IAAI,IAAI,CAAC,OAAO;oBAAE,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YAC3C,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;YACxB,MAAM,IAAI,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,EAAgB,CAAC;IACvC,CAAC;CACF;AAkDD,SAAS,WAAW,CAAC,EAAS;IAC5B,OAAO;QACL,MAAM,EAAE,EAAE,CAAC,MAAM;QACjB,KAAK,EAAE,EAAE,CAAC,KAAK;QACf,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAE,EAAE,CAAC,KAA2B;QAChE,IAAI,EAAE,EAAE,CAAC,IAAI;QACb,QAAQ,EAAE,EAAE,CAAC,QAAQ;QACrB,IAAI,EAAE,EAAE,CAAC,IAAI;QACb,IAAI,EAAE,EAAE,CAAC,IAAI;QACb,IAAI,EAAE,EAAE,CAAC,IAAI;QACb,UAAU,EAAE,EAAE,CAAC,UAAU;QACzB,UAAU,EAAE,EAAE,CAAC,UAAU;QACzB,SAAS,EAAE,EAAE,CAAC,SAAS;QACvB,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,KAAK;QACxB,SAAS,EAAE,EAAE,CAAC,SAAS,IAAI,IAAI;KAChC,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,IAAsB;IACzC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACxC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5F,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,CAAC,UAAU,KAAK,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IAChI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,CAAC,UAAU,KAAK,WAAW,CAAC;QAAE,OAAO,SAAS,CAAC;IACnG,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,SAAS,CAAC,OAAe;IAChC,OAAO,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACpD,CAAC"}
|
|
@@ -39,7 +39,11 @@ export function previewArgs(args) {
|
|
|
39
39
|
if (args === undefined || args === null)
|
|
40
40
|
return undefined;
|
|
41
41
|
try {
|
|
42
|
-
const json = typeof args === "string"
|
|
42
|
+
const json = typeof args === "string"
|
|
43
|
+
? redactSensitiveText(args)
|
|
44
|
+
: JSON.stringify(args, (key, value) => /(url|password|token|secret|credential)/i.test(key) && typeof value === "string"
|
|
45
|
+
? "[redacted]"
|
|
46
|
+
: value);
|
|
43
47
|
if (!json)
|
|
44
48
|
return undefined;
|
|
45
49
|
if (json.length <= ARG_PREVIEW_BYTES)
|
|
@@ -50,4 +54,9 @@ export function previewArgs(args) {
|
|
|
50
54
|
return undefined;
|
|
51
55
|
}
|
|
52
56
|
}
|
|
57
|
+
export function redactSensitiveText(value) {
|
|
58
|
+
return value
|
|
59
|
+
.replace(/\b(postgres(?:ql)?|mysql|mariadb):\/\/([^\s:@/]+):([^\s@/]+)@/gi, "$1://$2:****@")
|
|
60
|
+
.replace(/\b(password|token|secret)\s*[=:]\s*[^\s,;]+/gi, "$1=****");
|
|
61
|
+
}
|
|
53
62
|
//# sourceMappingURL=tool-call-store.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-call-store.js","sourceRoot":"","sources":["../../src/core/tool-call-store.ts"],"names":[],"mappings":"AAcA,MAAM,OAAO,aAAa;IAKK;IAJZ,OAAO,GAAqB,EAAE,CAAC;IAC/B,SAAS,GAAG,IAAI,GAAG,EAAY,CAAC;IACzC,MAAM,GAAG,CAAC,CAAC;IAEnB,YAA6B,WAAW,GAAG;QAAd,aAAQ,GAAR,QAAQ,CAAM;IAAG,CAAC;IAE/C,MAAM,CAAC,KAAiC;QACtC,MAAM,MAAM,GAAmB,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,KAAK,EAAE,CAAC;QAC/D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1B,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YACxC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9D,CAAC;QACD,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC;gBACH,QAAQ,CAAC,MAAM,CAAC,CAAC;YACnB,CAAC;YAAC,MAAM,CAAC;gBACP,yBAAyB;YAC3B,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,KAAK,GAAG,GAAG;QAChB,IAAI,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;IACzD,CAAC;IAED,SAAS,CAAC,QAAkB;QAC1B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC,CAAC;IACJ,CAAC;CACF;AAED,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAE9B,MAAM,UAAU,WAAW,CAAC,IAAa;IACvC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAC1D,IAAI,CAAC;QACH,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"tool-call-store.js","sourceRoot":"","sources":["../../src/core/tool-call-store.ts"],"names":[],"mappings":"AAcA,MAAM,OAAO,aAAa;IAKK;IAJZ,OAAO,GAAqB,EAAE,CAAC;IAC/B,SAAS,GAAG,IAAI,GAAG,EAAY,CAAC;IACzC,MAAM,GAAG,CAAC,CAAC;IAEnB,YAA6B,WAAW,GAAG;QAAd,aAAQ,GAAR,QAAQ,CAAM;IAAG,CAAC;IAE/C,MAAM,CAAC,KAAiC;QACtC,MAAM,MAAM,GAAmB,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,KAAK,EAAE,CAAC;QAC/D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1B,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YACxC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9D,CAAC;QACD,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC;gBACH,QAAQ,CAAC,MAAM,CAAC,CAAC;YACnB,CAAC;YAAC,MAAM,CAAC;gBACP,yBAAyB;YAC3B,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,KAAK,GAAG,GAAG;QAChB,IAAI,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;IACzD,CAAC;IAED,SAAS,CAAC,QAAkB;QAC1B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC,CAAC;IACJ,CAAC;CACF;AAED,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAE9B,MAAM,UAAU,WAAW,CAAC,IAAa;IACvC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAC1D,IAAI,CAAC;QACH,MAAM,IAAI,GACR,OAAO,IAAI,KAAK,QAAQ;YACtB,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC;YAC3B,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAClC,yCAAyC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAC9E,CAAC,CAAC,YAAY;gBACd,CAAC,CAAC,KAAK,CACV,CAAC;QACR,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC;QAC5B,IAAI,IAAI,CAAC,MAAM,IAAI,iBAAiB;YAAE,OAAO,IAAI,CAAC;QAClD,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,GAAG,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,OAAO,KAAK;SACT,OAAO,CAAC,iEAAiE,EAAE,eAAe,CAAC;SAC3F,OAAO,CAAC,+CAA+C,EAAE,SAAS,CAAC,CAAC;AACzE,CAAC"}
|
package/dist/core/types.d.ts
CHANGED
|
@@ -38,7 +38,17 @@ export interface GitRepositoryDefinition {
|
|
|
38
38
|
path: string;
|
|
39
39
|
/** Worktree currently used by Git, agents, shells, and GitHub workflows. */
|
|
40
40
|
activeWorktreePath?: string;
|
|
41
|
+
/** GitHub identity used for API operations in this logical repository. */
|
|
42
|
+
githubCredential?: GitHubCredentialSelection;
|
|
41
43
|
}
|
|
44
|
+
export type GitHubCredentialSelection = {
|
|
45
|
+
source: "gh";
|
|
46
|
+
host: string;
|
|
47
|
+
login: string;
|
|
48
|
+
} | {
|
|
49
|
+
source: "stored";
|
|
50
|
+
host: string;
|
|
51
|
+
};
|
|
42
52
|
export type DatabaseEngine = "postgres" | "mysql" | "sqlite";
|
|
43
53
|
/**
|
|
44
54
|
* A read-only database connection for DB Peek. For `postgres`/`mysql`, `url` is
|
|
@@ -120,6 +130,9 @@ export interface LogQuery {
|
|
|
120
130
|
export interface GitHubToken {
|
|
121
131
|
host: string;
|
|
122
132
|
token: string;
|
|
133
|
+
/** Account the token belongs to, captured at connect time (optional legacy). */
|
|
134
|
+
login?: string;
|
|
135
|
+
avatarUrl?: string;
|
|
123
136
|
}
|
|
124
137
|
export interface ProjectPreferences {
|
|
125
138
|
logs: {
|
package/dist/index.js
CHANGED
|
@@ -25,6 +25,7 @@ else if (command === "web") {
|
|
|
25
25
|
else if ([
|
|
26
26
|
"add",
|
|
27
27
|
"agents",
|
|
28
|
+
"db",
|
|
28
29
|
"git",
|
|
29
30
|
"list",
|
|
30
31
|
"logs",
|
|
@@ -37,7 +38,7 @@ else if ([
|
|
|
37
38
|
process.exitCode = await runCli(process.argv.slice(2));
|
|
38
39
|
}
|
|
39
40
|
else {
|
|
40
|
-
console.error("Usage: nomoreide [mcp|setup|tui|web|daemon|git|agents|profile|list|logs|start|stop|restart|add]");
|
|
41
|
+
console.error("Usage: nomoreide [mcp|setup|tui|web|daemon|git|db|agents|profile|list|logs|start|stop|restart|add]");
|
|
41
42
|
process.exitCode = 1;
|
|
42
43
|
}
|
|
43
44
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;AAEzC,IAAI,OAAO,KAAK,KAAK,IAAI,CAAC,OAAO,KAAK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC;IAC3E,MAAM,uBAAuB,EAAE,CAAC;AAClC,CAAC;KAAM,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;IAC7B,MAAM,YAAY,EAAE,CAAC,KAAK,EAAE,CAAC;AAC/B,CAAC;KAAM,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;IAChC,OAAO,CAAC,QAAQ,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D,CAAC;KAAM,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;IACtE,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3E,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,IAAI,MAAM,CAAC,cAAc;QAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAChE,OAAO,CAAC,KAAK,CAAC,qBAAqB,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;AACnD,CAAC;KAAM,IACL;IACE,KAAK;IACL,QAAQ;IACR,KAAK;IACL,MAAM;IACN,MAAM;IACN,SAAS;IACT,OAAO;IACP,OAAO;IACP,MAAM;IACN,SAAS;CACV,CAAC,QAAQ,CAAC,OAAO,CAAC,EACnB,CAAC;IACD,OAAO,CAAC,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC;KAAM,CAAC;IACN,OAAO,CAAC,KAAK,CACX,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;AAEzC,IAAI,OAAO,KAAK,KAAK,IAAI,CAAC,OAAO,KAAK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC;IAC3E,MAAM,uBAAuB,EAAE,CAAC;AAClC,CAAC;KAAM,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;IAC7B,MAAM,YAAY,EAAE,CAAC,KAAK,EAAE,CAAC;AAC/B,CAAC;KAAM,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;IAChC,OAAO,CAAC,QAAQ,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D,CAAC;KAAM,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;IACtE,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3E,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,IAAI,MAAM,CAAC,cAAc;QAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAChE,OAAO,CAAC,KAAK,CAAC,qBAAqB,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;AACnD,CAAC;KAAM,IACL;IACE,KAAK;IACL,QAAQ;IACR,IAAI;IACJ,KAAK;IACL,MAAM;IACN,MAAM;IACN,SAAS;IACT,OAAO;IACP,OAAO;IACP,MAAM;IACN,SAAS;CACV,CAAC,QAAQ,CAAC,OAAO,CAAC,EACnB,CAAC;IACD,OAAO,CAAC,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC;KAAM,CAAC;IACN,OAAO,CAAC,KAAK,CACX,oGAAoG,CACrG,CAAC;IACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { GitActions } from "../../core/git-actions.js";
|
|
2
2
|
import { GitManager } from "../../core/git-manager.js";
|
|
3
|
-
import { previewArgs } from "../../core/tool-call-store.js";
|
|
3
|
+
import { previewArgs, redactSensitiveText } from "../../core/tool-call-store.js";
|
|
4
4
|
export function git(cwd) {
|
|
5
5
|
return new GitManager(cwd ?? process.cwd());
|
|
6
6
|
}
|
|
@@ -50,7 +50,7 @@ export function wrapServerForRecording(server, store, sessions) {
|
|
|
50
50
|
status: "error",
|
|
51
51
|
sessionId,
|
|
52
52
|
args: previewArgs(args),
|
|
53
|
-
error: error instanceof Error ? error.message : String(error),
|
|
53
|
+
error: redactSensitiveText(error instanceof Error ? error.message : String(error)),
|
|
54
54
|
});
|
|
55
55
|
throw error;
|
|
56
56
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/mcp/tools/context.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,WAAW,EAAsB,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/mcp/tools/context.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAsB,MAAM,+BAA+B,CAAC;AAiBrG,MAAM,UAAU,GAAG,CAAC,GAAY;IAC9B,OAAO,IAAI,UAAU,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,UAAU,CAAC,GAAY;IACrC,OAAO,IAAI,UAAU,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACxC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB,CACpC,MAAe,EACf,KAAoB,EACpB,QAA8B;IAE9B,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,CAAC,UAA6C,EAAE,EAAE;QAChE,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,CAAC;QAC3C,MAAM,mBAAmB,GAAG;YAC1B,GAAG,UAAU;YACb,OAAO,EAAE,KAAK,EAAE,IAAa,EAAE,OAAgB,EAAE,EAAE;gBACjD,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;gBACzE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACzB,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;gBAChD,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAO,eAGA,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;oBACtC,KAAK,CAAC,MAAM,CAAC;wBACX,IAAI,EAAE,UAAU,CAAC,IAAI;wBACrB,SAAS;wBACT,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;wBAC9B,MAAM,EAAE,IAAI;wBACZ,SAAS;wBACT,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC;qBACxB,CAAC,CAAC;oBACH,OAAO,MAA4C,CAAC;gBACtD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,KAAK,CAAC,MAAM,CAAC;wBACX,IAAI,EAAE,UAAU,CAAC,IAAI;wBACrB,SAAS;wBACT,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;wBAC9B,MAAM,EAAE,OAAO;wBACf,SAAS;wBACT,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC;wBACvB,KAAK,EAAE,mBAAmB,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;qBACnF,CAAC,CAAC;oBACH,MAAM,KAAK,CAAC;gBACd,CAAC;YACH,CAAC;SACmC,CAAC;QACvC,OAAO,WAAW,CAAC,mBAAmB,CAAC,CAAC;IAC1C,CAAC,CAAC;IACF,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE;QACvB,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ;YACxB,IAAI,IAAI,KAAK,SAAS;gBAAE,OAAO,OAAO,CAAC;YACvC,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC7C,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { FastMCP } from "fastmcp";
|
|
2
2
|
import { type ToolContext } from "./context.js";
|
|
3
|
-
export declare const DATABASE_TOOL_NAMES: readonly ["nomoreide_list_databases", "nomoreide_db_tables", "nomoreide_db_sample", "nomoreide_db_query"];
|
|
3
|
+
export declare const DATABASE_TOOL_NAMES: readonly ["nomoreide_list_databases", "nomoreide_register_database", "nomoreide_check_database", "nomoreide_db_schemas", "nomoreide_db_objects", "nomoreide_db_object_details", "nomoreide_db_tables", "nomoreide_db_sample", "nomoreide_db_query"];
|
|
4
4
|
/**
|
|
5
5
|
* DB Peek tools: read-only access to the user's registered database
|
|
6
6
|
* connections. Scoped to connections in ConfigStore; `nomoreide_db_query` runs
|
|
@@ -25,10 +25,24 @@ function writeStagingGuidance(connection) {
|
|
|
25
25
|
}
|
|
26
26
|
export const DATABASE_TOOL_NAMES = [
|
|
27
27
|
"nomoreide_list_databases",
|
|
28
|
+
"nomoreide_register_database",
|
|
29
|
+
"nomoreide_check_database",
|
|
30
|
+
"nomoreide_db_schemas",
|
|
31
|
+
"nomoreide_db_objects",
|
|
32
|
+
"nomoreide_db_object_details",
|
|
28
33
|
"nomoreide_db_tables",
|
|
29
34
|
"nomoreide_db_sample",
|
|
30
35
|
"nomoreide_db_query",
|
|
31
36
|
];
|
|
37
|
+
const engineSchema = z.enum(["postgres", "mysql", "sqlite"]);
|
|
38
|
+
const registerSchema = z.object({
|
|
39
|
+
name: z.string().min(1).describe("Globally unique connection name."),
|
|
40
|
+
engine: engineSchema,
|
|
41
|
+
url: z.string().min(1).describe("Connection URL, or an absolute SQLite file path."),
|
|
42
|
+
projectPath: z.string().optional().describe("Optional project directory used for UI scoping."),
|
|
43
|
+
check: z.boolean().optional().describe("Check connectivity before saving (default true)."),
|
|
44
|
+
replace: z.boolean().optional().describe("Required to replace an existing connection with the same name."),
|
|
45
|
+
});
|
|
32
46
|
const connectionSchema = z.object({
|
|
33
47
|
connection: z
|
|
34
48
|
.string()
|
|
@@ -61,6 +75,12 @@ const querySchema = connectionSchema.extend({
|
|
|
61
75
|
.optional()
|
|
62
76
|
.describe("Max rows to return (default 100)."),
|
|
63
77
|
});
|
|
78
|
+
const schemaSchema = connectionSchema.extend({
|
|
79
|
+
schema: z.string().min(1).describe("Schema name returned by nomoreide_db_schemas."),
|
|
80
|
+
});
|
|
81
|
+
const objectSchema = connectionSchema.extend({
|
|
82
|
+
key: z.string().min(1).describe("Opaque object key returned by nomoreide_db_objects."),
|
|
83
|
+
});
|
|
64
84
|
/**
|
|
65
85
|
* DB Peek tools: read-only access to the user's registered database
|
|
66
86
|
* connections. Scoped to connections in ConfigStore; `nomoreide_db_query` runs
|
|
@@ -74,6 +94,39 @@ export function registerDatabaseTools(server, ctx) {
|
|
|
74
94
|
parameters: z.object({}),
|
|
75
95
|
execute: async () => stringify(await dbPeek.listConnections()),
|
|
76
96
|
});
|
|
97
|
+
server.addTool({
|
|
98
|
+
name: "nomoreide_register_database",
|
|
99
|
+
description: "Register a read-only database connection. Connectivity is checked by default; raw credentials are never returned or recorded.",
|
|
100
|
+
parameters: registerSchema,
|
|
101
|
+
execute: async ({ name, engine, url, projectPath, check, replace }) => stringify(await dbPeek.register({ name, engine, url, projectPath, check, replace })),
|
|
102
|
+
});
|
|
103
|
+
server.addTool({
|
|
104
|
+
name: "nomoreide_check_database",
|
|
105
|
+
description: "Check a registered connection without revealing its credentials.",
|
|
106
|
+
parameters: connectionSchema,
|
|
107
|
+
execute: async ({ connection }) => stringify(await dbPeek.check(connection)),
|
|
108
|
+
});
|
|
109
|
+
server.addTool({
|
|
110
|
+
name: "nomoreide_db_schemas",
|
|
111
|
+
description: "List schemas and supported catalog capabilities for a registered connection.",
|
|
112
|
+
parameters: connectionSchema,
|
|
113
|
+
execute: async ({ connection }) => stringify({
|
|
114
|
+
schemas: await dbPeek.listSchemas(connection),
|
|
115
|
+
capabilities: await dbPeek.capabilities(connection),
|
|
116
|
+
}),
|
|
117
|
+
});
|
|
118
|
+
server.addTool({
|
|
119
|
+
name: "nomoreide_db_objects",
|
|
120
|
+
description: "List tables, views, routines, and sequences in one live database schema.",
|
|
121
|
+
parameters: schemaSchema,
|
|
122
|
+
execute: async ({ connection, schema }) => stringify(await dbPeek.listObjects(connection, schema)),
|
|
123
|
+
});
|
|
124
|
+
server.addTool({
|
|
125
|
+
name: "nomoreide_db_object_details",
|
|
126
|
+
description: "Read columns, indexes, constraints, triggers, a capped definition, and an executable create script for an opaque live catalog object.",
|
|
127
|
+
parameters: objectSchema,
|
|
128
|
+
execute: async ({ connection, key }) => stringify(await dbPeek.objectDetails(connection, key)),
|
|
129
|
+
});
|
|
77
130
|
server.addTool({
|
|
78
131
|
name: "nomoreide_db_tables",
|
|
79
132
|
description: "List the tables and views in a registered database connection.",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../../src/mcp/tools/database.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../../src/mcp/tools/database.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/tools/github.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import {
|
|
3
|
-
import { GitHubManager, } from "../../core/github-manager.js";
|
|
2
|
+
import { requireGitHubContext, selectedGitHubCwd } from "../../core/github-context.js";
|
|
4
3
|
import { stringify } from "./context.js";
|
|
5
4
|
export const GITHUB_TOOL_NAMES = [
|
|
6
5
|
"nomoreide_github_set_token",
|
|
@@ -22,24 +21,8 @@ const cwdSchema = z.object({
|
|
|
22
21
|
});
|
|
23
22
|
async function buildManager(ctx, cwd) {
|
|
24
23
|
const config = await ctx.configStore.load();
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
throw new Error("No GitHub token configured. Use nomoreide_github_set_token first.");
|
|
28
|
-
}
|
|
29
|
-
const gitCwd = cwd ?? process.cwd();
|
|
30
|
-
const remoteUrl = await new GitManager(gitCwd).remoteUrl("origin");
|
|
31
|
-
if (!remoteUrl) {
|
|
32
|
-
throw new Error("No git remote 'origin' found in the repository.");
|
|
33
|
-
}
|
|
34
|
-
const parsed = GitHubManager.parseRemoteUrl(remoteUrl);
|
|
35
|
-
if (!parsed) {
|
|
36
|
-
throw new Error(`Could not parse GitHub remote URL: ${remoteUrl}`);
|
|
37
|
-
}
|
|
38
|
-
return {
|
|
39
|
-
manager: new GitHubManager(token, parsed.owner, parsed.repo),
|
|
40
|
-
owner: parsed.owner,
|
|
41
|
-
repo: parsed.repo,
|
|
42
|
-
};
|
|
24
|
+
const gitCwd = cwd ?? selectedGitHubCwd(config, process.cwd());
|
|
25
|
+
return requireGitHubContext(ctx.configStore, gitCwd);
|
|
43
26
|
}
|
|
44
27
|
export function registerGithubTools(server, ctx) {
|
|
45
28
|
const { configStore } = ctx;
|
|
@@ -52,6 +35,13 @@ export function registerGithubTools(server, ctx) {
|
|
|
52
35
|
}),
|
|
53
36
|
execute: async ({ token, host }) => {
|
|
54
37
|
await configStore.setGithubToken(host, token);
|
|
38
|
+
const config = await configStore.load();
|
|
39
|
+
if (config.selectedGitRepository) {
|
|
40
|
+
await configStore.setGitHubCredential(config.selectedGitRepository, {
|
|
41
|
+
source: "stored",
|
|
42
|
+
host,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
55
45
|
return `GitHub token stored for ${host}.`;
|
|
56
46
|
},
|
|
57
47
|
});
|