@tokamohsen/sentry-mcp 0.29.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-C0xms8kb.cjs +34 -0
- package/dist/cli/parse-EvLqDjN2.d.cts +11 -0
- package/dist/cli/parse-EvLqDjN2.d.cts.map +1 -0
- package/dist/cli/parse-M8aGwIO5.d.ts +11 -0
- package/dist/cli/parse-M8aGwIO5.d.ts.map +1 -0
- package/dist/cli/parse.cjs +107 -0
- package/dist/cli/parse.cjs.map +1 -0
- package/dist/cli/parse.js +103 -0
- package/dist/cli/parse.js.map +1 -0
- package/dist/cli/resolve-C3hwH129.d.cts +10 -0
- package/dist/cli/resolve-C3hwH129.d.cts.map +1 -0
- package/dist/cli/resolve-kNjr_UaF.d.ts +10 -0
- package/dist/cli/resolve-kNjr_UaF.d.ts.map +1 -0
- package/dist/cli/resolve.cjs +57 -0
- package/dist/cli/resolve.cjs.map +1 -0
- package/dist/cli/resolve.js +54 -0
- package/dist/cli/resolve.js.map +1 -0
- package/dist/cli/types-B2hDXVnQ.d.ts +73 -0
- package/dist/cli/types-B2hDXVnQ.d.ts.map +1 -0
- package/dist/cli/types-VWgo1wm6.d.cts +73 -0
- package/dist/cli/types-VWgo1wm6.d.cts.map +1 -0
- package/dist/cli/types.cjs +0 -0
- package/dist/cli/types.js +1 -0
- package/dist/cli/usage-B0gAPy4S.d.cts +9 -0
- package/dist/cli/usage-B0gAPy4S.d.cts.map +1 -0
- package/dist/cli/usage-BMxqEEQ3.d.ts +9 -0
- package/dist/cli/usage-BMxqEEQ3.d.ts.map +1 -0
- package/dist/cli/usage.cjs +47 -0
- package/dist/cli/usage.cjs.map +1 -0
- package/dist/cli/usage.js +45 -0
- package/dist/cli/usage.js.map +1 -0
- package/dist/index-16fTC-hT.d.cts +1 -0
- package/dist/index-DgNgxUxv.d.ts +1 -0
- package/dist/index.cjs +208 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.js +207 -0
- package/dist/index.js.map +1 -0
- package/dist/transports/stdio-DVcJU1wB.d.ts +37 -0
- package/dist/transports/stdio-DVcJU1wB.d.ts.map +1 -0
- package/dist/transports/stdio-DeWUp4RP.d.cts +37 -0
- package/dist/transports/stdio-DeWUp4RP.d.cts.map +1 -0
- package/dist/transports/stdio.cjs +74 -0
- package/dist/transports/stdio.cjs.map +1 -0
- package/dist/transports/stdio.js +71 -0
- package/dist/transports/stdio.js.map +1 -0
- package/package.json +69 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
//#region \0rolldown/runtime.js
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __copyProps = (to, from, except, desc) => {
|
|
9
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
10
|
+
for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
11
|
+
key = keys[i];
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except) {
|
|
13
|
+
__defProp(to, key, {
|
|
14
|
+
get: ((k) => from[k]).bind(null, key),
|
|
15
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return to;
|
|
21
|
+
};
|
|
22
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
23
|
+
value: mod,
|
|
24
|
+
enumerable: true
|
|
25
|
+
}) : target, mod));
|
|
26
|
+
|
|
27
|
+
//#endregion
|
|
28
|
+
|
|
29
|
+
Object.defineProperty(exports, '__toESM', {
|
|
30
|
+
enumerable: true,
|
|
31
|
+
get: function () {
|
|
32
|
+
return __toESM;
|
|
33
|
+
}
|
|
34
|
+
});
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { CliArgs, EnvArgs, MergedArgs } from "./types-VWgo1wm6.cjs";
|
|
2
|
+
|
|
3
|
+
//#region src/cli/parse.d.ts
|
|
4
|
+
declare function parseArgv(argv: string[]): CliArgs;
|
|
5
|
+
declare function parseEnv(env: NodeJS.ProcessEnv): EnvArgs;
|
|
6
|
+
declare function merge(cli: CliArgs, env: EnvArgs): MergedArgs;
|
|
7
|
+
//# sourceMappingURL=parse.d.ts.map
|
|
8
|
+
|
|
9
|
+
//#endregion
|
|
10
|
+
export { merge, parseArgv, parseEnv };
|
|
11
|
+
//# sourceMappingURL=parse-EvLqDjN2.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-EvLqDjN2.d.cts","names":[],"sources":["../../src/cli/parse.ts"],"sourcesContent":[],"mappings":";;;iBAGgB,SAAA,kBAA2B;iBAuE3B,QAAA,MAAc,MAAA,CAAO,aAAa;AAvElC,iBAwFA,KAAA,CAxF2B,GAAA,EAwFhB,OAxFuB,EAAA,GAAA,EAwFT,OAxFS,CAAA,EAwFC,UAxFD;AAuElD"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { CliArgs, EnvArgs, MergedArgs } from "./types-B2hDXVnQ.js";
|
|
2
|
+
|
|
3
|
+
//#region src/cli/parse.d.ts
|
|
4
|
+
declare function parseArgv(argv: string[]): CliArgs;
|
|
5
|
+
declare function parseEnv(env: NodeJS.ProcessEnv): EnvArgs;
|
|
6
|
+
declare function merge(cli: CliArgs, env: EnvArgs): MergedArgs;
|
|
7
|
+
//# sourceMappingURL=parse.d.ts.map
|
|
8
|
+
|
|
9
|
+
//#endregion
|
|
10
|
+
export { merge, parseArgv, parseEnv };
|
|
11
|
+
//# sourceMappingURL=parse-M8aGwIO5.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-M8aGwIO5.d.ts","names":[],"sources":["../../src/cli/parse.ts"],"sourcesContent":[],"mappings":";;;iBAGgB,SAAA,kBAA2B;iBAuE3B,QAAA,MAAc,MAAA,CAAO,aAAa;AAvElC,iBAwFA,KAAA,CAxF2B,GAAA,EAwFhB,OAxFuB,EAAA,GAAA,EAwFT,OAxFS,CAAA,EAwFC,UAxFD;AAuElD"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
|
+
const require_chunk = require('../chunk-C0xms8kb.cjs');
|
|
3
|
+
let node_util = require("node:util");
|
|
4
|
+
|
|
5
|
+
//#region src/cli/parse.ts
|
|
6
|
+
function parseArgv(argv) {
|
|
7
|
+
const options = {
|
|
8
|
+
"access-token": { type: "string" },
|
|
9
|
+
host: { type: "string" },
|
|
10
|
+
url: { type: "string" },
|
|
11
|
+
"mcp-url": { type: "string" },
|
|
12
|
+
"sentry-dsn": { type: "string" },
|
|
13
|
+
"openai-base-url": { type: "string" },
|
|
14
|
+
"openai-model": { type: "string" },
|
|
15
|
+
"anthropic-base-url": { type: "string" },
|
|
16
|
+
"anthropic-model": { type: "string" },
|
|
17
|
+
"agent-provider": { type: "string" },
|
|
18
|
+
"organization-slug": { type: "string" },
|
|
19
|
+
"project-slug": { type: "string" },
|
|
20
|
+
skills: { type: "string" },
|
|
21
|
+
agent: { type: "boolean" },
|
|
22
|
+
experimental: { type: "boolean" },
|
|
23
|
+
help: {
|
|
24
|
+
type: "boolean",
|
|
25
|
+
short: "h"
|
|
26
|
+
},
|
|
27
|
+
version: {
|
|
28
|
+
type: "boolean",
|
|
29
|
+
short: "v"
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
const { values, positionals, tokens } = (0, node_util.parseArgs)({
|
|
33
|
+
args: argv,
|
|
34
|
+
options,
|
|
35
|
+
allowPositionals: false,
|
|
36
|
+
strict: false,
|
|
37
|
+
tokens: true
|
|
38
|
+
});
|
|
39
|
+
const knownLong = new Set(Object.keys(options));
|
|
40
|
+
const knownShort = new Set([...Object.values(options).map((o) => "short" in o ? o.short : void 0).filter(Boolean)]);
|
|
41
|
+
const unknownArgs = [];
|
|
42
|
+
for (const t of tokens || []) if (t.kind === "option") {
|
|
43
|
+
const name = t.name;
|
|
44
|
+
if (name && !(knownLong.has(name) || knownShort.has(name))) unknownArgs.push(t.raw ?? `--${name}`);
|
|
45
|
+
} else if (t.kind === "positional") unknownArgs.push(t.raw ?? String(t.value ?? ""));
|
|
46
|
+
return {
|
|
47
|
+
accessToken: values["access-token"],
|
|
48
|
+
host: values.host,
|
|
49
|
+
url: values.url,
|
|
50
|
+
mcpUrl: values["mcp-url"],
|
|
51
|
+
sentryDsn: values["sentry-dsn"],
|
|
52
|
+
openaiBaseUrl: values["openai-base-url"],
|
|
53
|
+
openaiModel: values["openai-model"],
|
|
54
|
+
anthropicBaseUrl: values["anthropic-base-url"],
|
|
55
|
+
anthropicModel: values["anthropic-model"],
|
|
56
|
+
agentProvider: values["agent-provider"],
|
|
57
|
+
organizationSlug: values["organization-slug"],
|
|
58
|
+
projectSlug: values["project-slug"],
|
|
59
|
+
skills: values.skills,
|
|
60
|
+
agent: values.agent === true,
|
|
61
|
+
experimental: values.experimental === true,
|
|
62
|
+
help: values.help === true,
|
|
63
|
+
version: values.version === true,
|
|
64
|
+
unknownArgs: unknownArgs.length > 0 ? unknownArgs : positionals || []
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
function parseEnv(env) {
|
|
68
|
+
const fromEnv = {};
|
|
69
|
+
if (env.SENTRY_ACCESS_TOKEN) fromEnv.accessToken = env.SENTRY_ACCESS_TOKEN;
|
|
70
|
+
if (env.SENTRY_URL) fromEnv.url = env.SENTRY_URL;
|
|
71
|
+
if (env.SENTRY_HOST) fromEnv.host = env.SENTRY_HOST;
|
|
72
|
+
if (env.MCP_URL) fromEnv.mcpUrl = env.MCP_URL;
|
|
73
|
+
if (env.SENTRY_DSN || env.DEFAULT_SENTRY_DSN) fromEnv.sentryDsn = env.SENTRY_DSN || env.DEFAULT_SENTRY_DSN;
|
|
74
|
+
if (env.OPENAI_MODEL) fromEnv.openaiModel = env.OPENAI_MODEL;
|
|
75
|
+
if (env.ANTHROPIC_MODEL) fromEnv.anthropicModel = env.ANTHROPIC_MODEL;
|
|
76
|
+
if (env.EMBEDDED_AGENT_PROVIDER) fromEnv.agentProvider = env.EMBEDDED_AGENT_PROVIDER;
|
|
77
|
+
if (env.MCP_SKILLS) fromEnv.skills = env.MCP_SKILLS;
|
|
78
|
+
return fromEnv;
|
|
79
|
+
}
|
|
80
|
+
function merge(cli, env) {
|
|
81
|
+
return {
|
|
82
|
+
accessToken: cli.accessToken ?? env.accessToken,
|
|
83
|
+
url: cli.url ?? env.url,
|
|
84
|
+
host: cli.host ?? env.host,
|
|
85
|
+
mcpUrl: cli.mcpUrl ?? env.mcpUrl,
|
|
86
|
+
sentryDsn: cli.sentryDsn ?? env.sentryDsn,
|
|
87
|
+
openaiBaseUrl: cli.openaiBaseUrl,
|
|
88
|
+
openaiModel: cli.openaiModel ?? env.openaiModel,
|
|
89
|
+
anthropicBaseUrl: cli.anthropicBaseUrl,
|
|
90
|
+
anthropicModel: cli.anthropicModel ?? env.anthropicModel,
|
|
91
|
+
agentProvider: cli.agentProvider ?? env.agentProvider,
|
|
92
|
+
skills: cli.skills ?? env.skills,
|
|
93
|
+
agent: cli.agent === true,
|
|
94
|
+
experimental: cli.experimental === true,
|
|
95
|
+
organizationSlug: cli.organizationSlug,
|
|
96
|
+
projectSlug: cli.projectSlug,
|
|
97
|
+
help: cli.help === true,
|
|
98
|
+
version: cli.version === true,
|
|
99
|
+
unknownArgs: cli.unknownArgs
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
//#endregion
|
|
104
|
+
exports.merge = merge;
|
|
105
|
+
exports.parseArgv = parseArgv;
|
|
106
|
+
exports.parseEnv = parseEnv;
|
|
107
|
+
//# sourceMappingURL=parse.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse.cjs","names":[],"sources":["../../src/cli/parse.ts"],"sourcesContent":["import { parseArgs } from \"node:util\";\nimport type { CliArgs, EnvArgs, MergedArgs } from \"./types\";\n\nexport function parseArgv(argv: string[]): CliArgs {\n const options = {\n \"access-token\": { type: \"string\" as const },\n host: { type: \"string\" as const },\n url: { type: \"string\" as const },\n \"mcp-url\": { type: \"string\" as const },\n \"sentry-dsn\": { type: \"string\" as const },\n \"openai-base-url\": { type: \"string\" as const },\n \"openai-model\": { type: \"string\" as const },\n \"anthropic-base-url\": { type: \"string\" as const },\n \"anthropic-model\": { type: \"string\" as const },\n \"agent-provider\": { type: \"string\" as const },\n \"organization-slug\": { type: \"string\" as const },\n \"project-slug\": { type: \"string\" as const },\n skills: { type: \"string\" as const },\n agent: { type: \"boolean\" as const },\n experimental: { type: \"boolean\" as const },\n help: { type: \"boolean\" as const, short: \"h\" as const },\n version: { type: \"boolean\" as const, short: \"v\" as const },\n };\n\n const { values, positionals, tokens } = parseArgs({\n args: argv,\n options,\n allowPositionals: false,\n strict: false,\n tokens: true,\n });\n\n const knownLong = new Set(Object.keys(options));\n const knownShort = new Set([\n ...(Object.values(options)\n .map((o) => (\"short\" in o ? (o.short as string | undefined) : undefined))\n .filter(Boolean) as string[]),\n ]);\n\n const unknownArgs: string[] = [];\n for (const t of (tokens as any[]) || []) {\n if (t.kind === \"option\") {\n const name = t.name as string | undefined;\n if (name && !(knownLong.has(name) || knownShort.has(name))) {\n unknownArgs.push((t.raw as string) ?? `--${name}`);\n }\n } else if (t.kind === \"positional\") {\n unknownArgs.push((t.raw as string) ?? String(t.value ?? \"\"));\n }\n }\n\n return {\n accessToken: values[\"access-token\"] as string | undefined,\n host: values.host as string | undefined,\n url: values.url as string | undefined,\n mcpUrl: values[\"mcp-url\"] as string | undefined,\n sentryDsn: values[\"sentry-dsn\"] as string | undefined,\n openaiBaseUrl: values[\"openai-base-url\"] as string | undefined,\n openaiModel: values[\"openai-model\"] as string | undefined,\n anthropicBaseUrl: values[\"anthropic-base-url\"] as string | undefined,\n anthropicModel: values[\"anthropic-model\"] as string | undefined,\n agentProvider: values[\"agent-provider\"] as string | undefined,\n organizationSlug: values[\"organization-slug\"] as string | undefined,\n projectSlug: values[\"project-slug\"] as string | undefined,\n skills: values.skills as string | undefined,\n agent: values.agent === true,\n experimental: values.experimental === true,\n help: (values.help as boolean | undefined) === true,\n version: (values.version as boolean | undefined) === true,\n unknownArgs:\n unknownArgs.length > 0 ? unknownArgs : (positionals as string[]) || [],\n };\n}\n\nexport function parseEnv(env: NodeJS.ProcessEnv): EnvArgs {\n const fromEnv: EnvArgs = {};\n if (env.SENTRY_ACCESS_TOKEN) fromEnv.accessToken = env.SENTRY_ACCESS_TOKEN;\n if (env.SENTRY_URL) fromEnv.url = env.SENTRY_URL;\n if (env.SENTRY_HOST) fromEnv.host = env.SENTRY_HOST;\n if (env.MCP_URL) fromEnv.mcpUrl = env.MCP_URL;\n if (env.SENTRY_DSN || env.DEFAULT_SENTRY_DSN)\n fromEnv.sentryDsn = env.SENTRY_DSN || env.DEFAULT_SENTRY_DSN;\n\n if (env.OPENAI_MODEL) fromEnv.openaiModel = env.OPENAI_MODEL;\n if (env.ANTHROPIC_MODEL) fromEnv.anthropicModel = env.ANTHROPIC_MODEL;\n if (env.EMBEDDED_AGENT_PROVIDER)\n fromEnv.agentProvider = env.EMBEDDED_AGENT_PROVIDER;\n if (env.MCP_SKILLS) fromEnv.skills = env.MCP_SKILLS;\n return fromEnv;\n}\n\nexport function merge(cli: CliArgs, env: EnvArgs): MergedArgs {\n // CLI wins over env\n return {\n accessToken: cli.accessToken ?? env.accessToken,\n // If CLI provided url/host, prefer those; else fall back to env\n url: cli.url ?? env.url,\n host: cli.host ?? env.host,\n mcpUrl: cli.mcpUrl ?? env.mcpUrl,\n sentryDsn: cli.sentryDsn ?? env.sentryDsn,\n openaiBaseUrl: cli.openaiBaseUrl,\n openaiModel: cli.openaiModel ?? env.openaiModel,\n anthropicBaseUrl: cli.anthropicBaseUrl,\n anthropicModel: cli.anthropicModel ?? env.anthropicModel,\n agentProvider: cli.agentProvider ?? env.agentProvider,\n // Skills precedence: CLI skills override env\n skills: cli.skills ?? env.skills,\n agent: cli.agent === true,\n experimental: cli.experimental === true,\n organizationSlug: cli.organizationSlug,\n projectSlug: cli.projectSlug,\n help: cli.help === true,\n version: cli.version === true,\n unknownArgs: cli.unknownArgs,\n };\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { parseArgs } from "node:util";
|
|
2
|
+
|
|
3
|
+
//#region src/cli/parse.ts
|
|
4
|
+
function parseArgv(argv) {
|
|
5
|
+
const options = {
|
|
6
|
+
"access-token": { type: "string" },
|
|
7
|
+
host: { type: "string" },
|
|
8
|
+
url: { type: "string" },
|
|
9
|
+
"mcp-url": { type: "string" },
|
|
10
|
+
"sentry-dsn": { type: "string" },
|
|
11
|
+
"openai-base-url": { type: "string" },
|
|
12
|
+
"openai-model": { type: "string" },
|
|
13
|
+
"anthropic-base-url": { type: "string" },
|
|
14
|
+
"anthropic-model": { type: "string" },
|
|
15
|
+
"agent-provider": { type: "string" },
|
|
16
|
+
"organization-slug": { type: "string" },
|
|
17
|
+
"project-slug": { type: "string" },
|
|
18
|
+
skills: { type: "string" },
|
|
19
|
+
agent: { type: "boolean" },
|
|
20
|
+
experimental: { type: "boolean" },
|
|
21
|
+
help: {
|
|
22
|
+
type: "boolean",
|
|
23
|
+
short: "h"
|
|
24
|
+
},
|
|
25
|
+
version: {
|
|
26
|
+
type: "boolean",
|
|
27
|
+
short: "v"
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
const { values, positionals, tokens } = parseArgs({
|
|
31
|
+
args: argv,
|
|
32
|
+
options,
|
|
33
|
+
allowPositionals: false,
|
|
34
|
+
strict: false,
|
|
35
|
+
tokens: true
|
|
36
|
+
});
|
|
37
|
+
const knownLong = new Set(Object.keys(options));
|
|
38
|
+
const knownShort = new Set([...Object.values(options).map((o) => "short" in o ? o.short : void 0).filter(Boolean)]);
|
|
39
|
+
const unknownArgs = [];
|
|
40
|
+
for (const t of tokens || []) if (t.kind === "option") {
|
|
41
|
+
const name = t.name;
|
|
42
|
+
if (name && !(knownLong.has(name) || knownShort.has(name))) unknownArgs.push(t.raw ?? `--${name}`);
|
|
43
|
+
} else if (t.kind === "positional") unknownArgs.push(t.raw ?? String(t.value ?? ""));
|
|
44
|
+
return {
|
|
45
|
+
accessToken: values["access-token"],
|
|
46
|
+
host: values.host,
|
|
47
|
+
url: values.url,
|
|
48
|
+
mcpUrl: values["mcp-url"],
|
|
49
|
+
sentryDsn: values["sentry-dsn"],
|
|
50
|
+
openaiBaseUrl: values["openai-base-url"],
|
|
51
|
+
openaiModel: values["openai-model"],
|
|
52
|
+
anthropicBaseUrl: values["anthropic-base-url"],
|
|
53
|
+
anthropicModel: values["anthropic-model"],
|
|
54
|
+
agentProvider: values["agent-provider"],
|
|
55
|
+
organizationSlug: values["organization-slug"],
|
|
56
|
+
projectSlug: values["project-slug"],
|
|
57
|
+
skills: values.skills,
|
|
58
|
+
agent: values.agent === true,
|
|
59
|
+
experimental: values.experimental === true,
|
|
60
|
+
help: values.help === true,
|
|
61
|
+
version: values.version === true,
|
|
62
|
+
unknownArgs: unknownArgs.length > 0 ? unknownArgs : positionals || []
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
function parseEnv(env) {
|
|
66
|
+
const fromEnv = {};
|
|
67
|
+
if (env.SENTRY_ACCESS_TOKEN) fromEnv.accessToken = env.SENTRY_ACCESS_TOKEN;
|
|
68
|
+
if (env.SENTRY_URL) fromEnv.url = env.SENTRY_URL;
|
|
69
|
+
if (env.SENTRY_HOST) fromEnv.host = env.SENTRY_HOST;
|
|
70
|
+
if (env.MCP_URL) fromEnv.mcpUrl = env.MCP_URL;
|
|
71
|
+
if (env.SENTRY_DSN || env.DEFAULT_SENTRY_DSN) fromEnv.sentryDsn = env.SENTRY_DSN || env.DEFAULT_SENTRY_DSN;
|
|
72
|
+
if (env.OPENAI_MODEL) fromEnv.openaiModel = env.OPENAI_MODEL;
|
|
73
|
+
if (env.ANTHROPIC_MODEL) fromEnv.anthropicModel = env.ANTHROPIC_MODEL;
|
|
74
|
+
if (env.EMBEDDED_AGENT_PROVIDER) fromEnv.agentProvider = env.EMBEDDED_AGENT_PROVIDER;
|
|
75
|
+
if (env.MCP_SKILLS) fromEnv.skills = env.MCP_SKILLS;
|
|
76
|
+
return fromEnv;
|
|
77
|
+
}
|
|
78
|
+
function merge(cli, env) {
|
|
79
|
+
return {
|
|
80
|
+
accessToken: cli.accessToken ?? env.accessToken,
|
|
81
|
+
url: cli.url ?? env.url,
|
|
82
|
+
host: cli.host ?? env.host,
|
|
83
|
+
mcpUrl: cli.mcpUrl ?? env.mcpUrl,
|
|
84
|
+
sentryDsn: cli.sentryDsn ?? env.sentryDsn,
|
|
85
|
+
openaiBaseUrl: cli.openaiBaseUrl,
|
|
86
|
+
openaiModel: cli.openaiModel ?? env.openaiModel,
|
|
87
|
+
anthropicBaseUrl: cli.anthropicBaseUrl,
|
|
88
|
+
anthropicModel: cli.anthropicModel ?? env.anthropicModel,
|
|
89
|
+
agentProvider: cli.agentProvider ?? env.agentProvider,
|
|
90
|
+
skills: cli.skills ?? env.skills,
|
|
91
|
+
agent: cli.agent === true,
|
|
92
|
+
experimental: cli.experimental === true,
|
|
93
|
+
organizationSlug: cli.organizationSlug,
|
|
94
|
+
projectSlug: cli.projectSlug,
|
|
95
|
+
help: cli.help === true,
|
|
96
|
+
version: cli.version === true,
|
|
97
|
+
unknownArgs: cli.unknownArgs
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
//#endregion
|
|
102
|
+
export { merge, parseArgv, parseEnv };
|
|
103
|
+
//# sourceMappingURL=parse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse.js","names":[],"sources":["../../src/cli/parse.ts"],"sourcesContent":["import { parseArgs } from \"node:util\";\nimport type { CliArgs, EnvArgs, MergedArgs } from \"./types\";\n\nexport function parseArgv(argv: string[]): CliArgs {\n const options = {\n \"access-token\": { type: \"string\" as const },\n host: { type: \"string\" as const },\n url: { type: \"string\" as const },\n \"mcp-url\": { type: \"string\" as const },\n \"sentry-dsn\": { type: \"string\" as const },\n \"openai-base-url\": { type: \"string\" as const },\n \"openai-model\": { type: \"string\" as const },\n \"anthropic-base-url\": { type: \"string\" as const },\n \"anthropic-model\": { type: \"string\" as const },\n \"agent-provider\": { type: \"string\" as const },\n \"organization-slug\": { type: \"string\" as const },\n \"project-slug\": { type: \"string\" as const },\n skills: { type: \"string\" as const },\n agent: { type: \"boolean\" as const },\n experimental: { type: \"boolean\" as const },\n help: { type: \"boolean\" as const, short: \"h\" as const },\n version: { type: \"boolean\" as const, short: \"v\" as const },\n };\n\n const { values, positionals, tokens } = parseArgs({\n args: argv,\n options,\n allowPositionals: false,\n strict: false,\n tokens: true,\n });\n\n const knownLong = new Set(Object.keys(options));\n const knownShort = new Set([\n ...(Object.values(options)\n .map((o) => (\"short\" in o ? (o.short as string | undefined) : undefined))\n .filter(Boolean) as string[]),\n ]);\n\n const unknownArgs: string[] = [];\n for (const t of (tokens as any[]) || []) {\n if (t.kind === \"option\") {\n const name = t.name as string | undefined;\n if (name && !(knownLong.has(name) || knownShort.has(name))) {\n unknownArgs.push((t.raw as string) ?? `--${name}`);\n }\n } else if (t.kind === \"positional\") {\n unknownArgs.push((t.raw as string) ?? String(t.value ?? \"\"));\n }\n }\n\n return {\n accessToken: values[\"access-token\"] as string | undefined,\n host: values.host as string | undefined,\n url: values.url as string | undefined,\n mcpUrl: values[\"mcp-url\"] as string | undefined,\n sentryDsn: values[\"sentry-dsn\"] as string | undefined,\n openaiBaseUrl: values[\"openai-base-url\"] as string | undefined,\n openaiModel: values[\"openai-model\"] as string | undefined,\n anthropicBaseUrl: values[\"anthropic-base-url\"] as string | undefined,\n anthropicModel: values[\"anthropic-model\"] as string | undefined,\n agentProvider: values[\"agent-provider\"] as string | undefined,\n organizationSlug: values[\"organization-slug\"] as string | undefined,\n projectSlug: values[\"project-slug\"] as string | undefined,\n skills: values.skills as string | undefined,\n agent: values.agent === true,\n experimental: values.experimental === true,\n help: (values.help as boolean | undefined) === true,\n version: (values.version as boolean | undefined) === true,\n unknownArgs:\n unknownArgs.length > 0 ? unknownArgs : (positionals as string[]) || [],\n };\n}\n\nexport function parseEnv(env: NodeJS.ProcessEnv): EnvArgs {\n const fromEnv: EnvArgs = {};\n if (env.SENTRY_ACCESS_TOKEN) fromEnv.accessToken = env.SENTRY_ACCESS_TOKEN;\n if (env.SENTRY_URL) fromEnv.url = env.SENTRY_URL;\n if (env.SENTRY_HOST) fromEnv.host = env.SENTRY_HOST;\n if (env.MCP_URL) fromEnv.mcpUrl = env.MCP_URL;\n if (env.SENTRY_DSN || env.DEFAULT_SENTRY_DSN)\n fromEnv.sentryDsn = env.SENTRY_DSN || env.DEFAULT_SENTRY_DSN;\n\n if (env.OPENAI_MODEL) fromEnv.openaiModel = env.OPENAI_MODEL;\n if (env.ANTHROPIC_MODEL) fromEnv.anthropicModel = env.ANTHROPIC_MODEL;\n if (env.EMBEDDED_AGENT_PROVIDER)\n fromEnv.agentProvider = env.EMBEDDED_AGENT_PROVIDER;\n if (env.MCP_SKILLS) fromEnv.skills = env.MCP_SKILLS;\n return fromEnv;\n}\n\nexport function merge(cli: CliArgs, env: EnvArgs): MergedArgs {\n // CLI wins over env\n return {\n accessToken: cli.accessToken ?? env.accessToken,\n // If CLI provided url/host, prefer those; else fall back to env\n url: cli.url ?? env.url,\n host: cli.host ?? env.host,\n mcpUrl: cli.mcpUrl ?? env.mcpUrl,\n sentryDsn: cli.sentryDsn ?? env.sentryDsn,\n openaiBaseUrl: cli.openaiBaseUrl,\n openaiModel: cli.openaiModel ?? env.openaiModel,\n anthropicBaseUrl: cli.anthropicBaseUrl,\n anthropicModel: cli.anthropicModel ?? env.anthropicModel,\n agentProvider: cli.agentProvider ?? env.agentProvider,\n // Skills precedence: CLI skills override env\n skills: cli.skills ?? env.skills,\n agent: cli.agent === true,\n experimental: cli.experimental === true,\n organizationSlug: cli.organizationSlug,\n projectSlug: cli.projectSlug,\n help: cli.help === true,\n version: cli.version === true,\n unknownArgs: cli.unknownArgs,\n };\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { MergedArgs, ResolvedConfig } from "./types-VWgo1wm6.cjs";
|
|
2
|
+
|
|
3
|
+
//#region src/cli/resolve.d.ts
|
|
4
|
+
declare function formatInvalidSkills(invalid: string[], envName?: string): string;
|
|
5
|
+
declare function finalize(input: MergedArgs): ResolvedConfig;
|
|
6
|
+
//# sourceMappingURL=resolve.d.ts.map
|
|
7
|
+
|
|
8
|
+
//#endregion
|
|
9
|
+
export { finalize, formatInvalidSkills };
|
|
10
|
+
//# sourceMappingURL=resolve-C3hwH129.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-C3hwH129.d.cts","names":[],"sources":["../../src/cli/resolve.ts"],"sourcesContent":[],"mappings":";;;iBAQgB,mBAAA;iBASA,QAAA,QAAgB,aAAa;AAT7C"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { MergedArgs, ResolvedConfig } from "./types-B2hDXVnQ.js";
|
|
2
|
+
|
|
3
|
+
//#region src/cli/resolve.d.ts
|
|
4
|
+
declare function formatInvalidSkills(invalid: string[], envName?: string): string;
|
|
5
|
+
declare function finalize(input: MergedArgs): ResolvedConfig;
|
|
6
|
+
//# sourceMappingURL=resolve.d.ts.map
|
|
7
|
+
|
|
8
|
+
//#endregion
|
|
9
|
+
export { finalize, formatInvalidSkills };
|
|
10
|
+
//# sourceMappingURL=resolve-kNjr_UaF.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-kNjr_UaF.d.ts","names":[],"sources":["../../src/cli/resolve.ts"],"sourcesContent":[],"mappings":";;;iBAQgB,mBAAA;iBASA,QAAA,QAAgB,aAAa;AAT7C"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
|
+
const require_chunk = require('../chunk-C0xms8kb.cjs');
|
|
3
|
+
let _sentry_mcp_core_skills = require("@sentry/mcp-core/skills");
|
|
4
|
+
let _sentry_mcp_core_utils_url_utils = require("@sentry/mcp-core/utils/url-utils");
|
|
5
|
+
|
|
6
|
+
//#region src/cli/resolve.ts
|
|
7
|
+
function formatInvalidSkills(invalid, envName) {
|
|
8
|
+
const where = envName ? `${envName} provided` : "Invalid skills provided";
|
|
9
|
+
const allSkills = Object.keys(_sentry_mcp_core_skills.SKILLS).join(", ");
|
|
10
|
+
return `Error: ${where}: ${invalid.join(", ")}\nAvailable skills: ${allSkills}`;
|
|
11
|
+
}
|
|
12
|
+
function finalize(input) {
|
|
13
|
+
if (!input.accessToken) throw new Error("Error: No access token was provided. Pass one with `--access-token` or via `SENTRY_ACCESS_TOKEN`.");
|
|
14
|
+
let sentryHost = "sentry.io";
|
|
15
|
+
if (input.url) sentryHost = (0, _sentry_mcp_core_utils_url_utils.validateAndParseSentryUrlThrows)(input.url);
|
|
16
|
+
else if (input.host) {
|
|
17
|
+
(0, _sentry_mcp_core_utils_url_utils.validateSentryHostThrows)(input.host);
|
|
18
|
+
sentryHost = input.host;
|
|
19
|
+
}
|
|
20
|
+
let finalSkills = void 0;
|
|
21
|
+
if (input.skills) {
|
|
22
|
+
const { valid, invalid } = (0, _sentry_mcp_core_skills.parseSkills)(input.skills);
|
|
23
|
+
if (invalid.length > 0) throw new Error(formatInvalidSkills(invalid));
|
|
24
|
+
if (valid.size === 0) throw new Error("Error: Invalid skills provided. No valid skills found.");
|
|
25
|
+
finalSkills = valid;
|
|
26
|
+
} else {
|
|
27
|
+
const allSkills = Object.keys(_sentry_mcp_core_skills.SKILLS);
|
|
28
|
+
finalSkills = new Set(allSkills);
|
|
29
|
+
}
|
|
30
|
+
const resolvedOpenAiBaseUrl = input.openaiBaseUrl ? (0, _sentry_mcp_core_utils_url_utils.validateOpenAiBaseUrlThrows)(input.openaiBaseUrl) : void 0;
|
|
31
|
+
const resolvedAnthropicBaseUrl = input.anthropicBaseUrl ? (0, _sentry_mcp_core_utils_url_utils.validateOpenAiBaseUrlThrows)(input.anthropicBaseUrl) : void 0;
|
|
32
|
+
let agentProvider = void 0;
|
|
33
|
+
if (input.agentProvider) {
|
|
34
|
+
const provider = input.agentProvider.toLowerCase();
|
|
35
|
+
if (provider !== "openai" && provider !== "anthropic") throw new Error(`Error: Invalid agent provider "${input.agentProvider}". Must be "openai" or "anthropic".`);
|
|
36
|
+
agentProvider = provider;
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
accessToken: input.accessToken,
|
|
40
|
+
sentryHost,
|
|
41
|
+
mcpUrl: input.mcpUrl,
|
|
42
|
+
sentryDsn: input.sentryDsn,
|
|
43
|
+
openaiBaseUrl: resolvedOpenAiBaseUrl,
|
|
44
|
+
openaiModel: input.openaiModel,
|
|
45
|
+
anthropicBaseUrl: resolvedAnthropicBaseUrl,
|
|
46
|
+
anthropicModel: input.anthropicModel,
|
|
47
|
+
agentProvider,
|
|
48
|
+
finalSkills,
|
|
49
|
+
organizationSlug: input.organizationSlug,
|
|
50
|
+
projectSlug: input.projectSlug
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
//#endregion
|
|
55
|
+
exports.finalize = finalize;
|
|
56
|
+
exports.formatInvalidSkills = formatInvalidSkills;
|
|
57
|
+
//# sourceMappingURL=resolve.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve.cjs","names":["SKILLS"],"sources":["../../src/cli/resolve.ts"],"sourcesContent":["import { parseSkills, SKILLS, type Skill } from \"@sentry/mcp-core/skills\";\nimport {\n validateAndParseSentryUrlThrows,\n validateOpenAiBaseUrlThrows,\n validateSentryHostThrows,\n} from \"@sentry/mcp-core/utils/url-utils\";\nimport type { MergedArgs, ResolvedConfig } from \"./types\";\n\nexport function formatInvalidSkills(\n invalid: string[],\n envName?: string,\n): string {\n const where = envName ? `${envName} provided` : \"Invalid skills provided\";\n const allSkills = Object.keys(SKILLS).join(\", \");\n return `Error: ${where}: ${invalid.join(\", \")}\\nAvailable skills: ${allSkills}`;\n}\n\nexport function finalize(input: MergedArgs): ResolvedConfig {\n // Access token required\n if (!input.accessToken) {\n throw new Error(\n \"Error: No access token was provided. Pass one with `--access-token` or via `SENTRY_ACCESS_TOKEN`.\",\n );\n }\n\n // Determine host from url/host with validation\n let sentryHost = \"sentry.io\";\n if (input.url) {\n sentryHost = validateAndParseSentryUrlThrows(input.url);\n } else if (input.host) {\n validateSentryHostThrows(input.host);\n sentryHost = input.host;\n }\n\n // Skills resolution\n //\n // IMPORTANT: stdio (CLI) intentionally defaults to ALL skills when no --skills flag is provided\n //\n // This differs from the OAuth flow, which requires explicit user selection:\n // - stdio/CLI: Non-interactive, defaults to ALL skills (inspect, docs, seer, triage, project-management)\n // - OAuth: Interactive, requires user to explicitly select skills (with sensible defaults pre-checked)\n //\n // Rationale:\n // We don't want the MCP to break if users don't specify skills. stdio is typically used in\n // local development and CI/CD environments where maximum access by default is expected.\n // OAuth is used in multi-tenant hosted environments where users should consciously grant\n // permissions on a per-app basis.\n //\n // For OAuth validation that enforces minimum 1 skill selection, see:\n // packages/mcp-cloudflare/src/server/oauth/routes/callback.ts (lines 234-248)\n //\n let finalSkills: Set<Skill> | undefined = undefined;\n if (input.skills) {\n // Override: use only the specified skills\n const { valid, invalid } = parseSkills(input.skills);\n if (invalid.length > 0) {\n throw new Error(formatInvalidSkills(invalid));\n }\n if (valid.size === 0) {\n throw new Error(\"Error: Invalid skills provided. No valid skills found.\");\n }\n finalSkills = valid;\n } else {\n // Default: grant ALL skills when no flag is provided (see comment block above for rationale)\n const allSkills = Object.keys(SKILLS) as Skill[];\n finalSkills = new Set<Skill>(allSkills);\n }\n\n const resolvedOpenAiBaseUrl = input.openaiBaseUrl\n ? validateOpenAiBaseUrlThrows(input.openaiBaseUrl)\n : undefined;\n\n // Validate anthropic base URL if provided (same validation as OpenAI)\n const resolvedAnthropicBaseUrl = input.anthropicBaseUrl\n ? validateOpenAiBaseUrlThrows(input.anthropicBaseUrl)\n : undefined;\n\n // Validate agent provider if explicitly set\n let agentProvider: \"openai\" | \"anthropic\" | undefined = undefined;\n if (input.agentProvider) {\n const provider = input.agentProvider.toLowerCase();\n if (provider !== \"openai\" && provider !== \"anthropic\") {\n throw new Error(\n `Error: Invalid agent provider \"${input.agentProvider}\". Must be \"openai\" or \"anthropic\".`,\n );\n }\n agentProvider = provider;\n }\n\n return {\n accessToken: input.accessToken,\n sentryHost,\n mcpUrl: input.mcpUrl,\n sentryDsn: input.sentryDsn,\n openaiBaseUrl: resolvedOpenAiBaseUrl,\n openaiModel: input.openaiModel,\n anthropicBaseUrl: resolvedAnthropicBaseUrl,\n anthropicModel: input.anthropicModel,\n agentProvider,\n finalSkills,\n organizationSlug: input.organizationSlug,\n projectSlug: input.projectSlug,\n };\n}\n"],"mappings":";;;;;;AAQA,SAAgB,oBACd,SACA,SACQ;CACR,MAAM,QAAQ,UAAU,GAAG,QAAQ,aAAa;CAChD,MAAM,YAAY,OAAO,KAAKA,+BAAO,CAAC,KAAK,KAAK;AAChD,QAAO,UAAU,MAAM,IAAI,QAAQ,KAAK,KAAK,CAAC,sBAAsB;;AAGtE,SAAgB,SAAS,OAAmC;AAE1D,KAAI,CAAC,MAAM,YACT,OAAM,IAAI,MACR,oGACD;CAIH,IAAI,aAAa;AACjB,KAAI,MAAM,IACR,oFAA6C,MAAM,IAAI;UAC9C,MAAM,MAAM;AACrB,iEAAyB,MAAM,KAAK;AACpC,eAAa,MAAM;;CAoBrB,IAAI,cAAsC;AAC1C,KAAI,MAAM,QAAQ;EAEhB,MAAM,EAAE,OAAO,qDAAwB,MAAM,OAAO;AACpD,MAAI,QAAQ,SAAS,EACnB,OAAM,IAAI,MAAM,oBAAoB,QAAQ,CAAC;AAE/C,MAAI,MAAM,SAAS,EACjB,OAAM,IAAI,MAAM,yDAAyD;AAE3E,gBAAc;QACT;EAEL,MAAM,YAAY,OAAO,KAAKA,+BAAO;AACrC,gBAAc,IAAI,IAAW,UAAU;;CAGzC,MAAM,wBAAwB,MAAM,kFACJ,MAAM,cAAc,GAChD;CAGJ,MAAM,2BAA2B,MAAM,qFACP,MAAM,iBAAiB,GACnD;CAGJ,IAAI,gBAAoD;AACxD,KAAI,MAAM,eAAe;EACvB,MAAM,WAAW,MAAM,cAAc,aAAa;AAClD,MAAI,aAAa,YAAY,aAAa,YACxC,OAAM,IAAI,MACR,kCAAkC,MAAM,cAAc,qCACvD;AAEH,kBAAgB;;AAGlB,QAAO;EACL,aAAa,MAAM;EACnB;EACA,QAAQ,MAAM;EACd,WAAW,MAAM;EACjB,eAAe;EACf,aAAa,MAAM;EACnB,kBAAkB;EAClB,gBAAgB,MAAM;EACtB;EACA;EACA,kBAAkB,MAAM;EACxB,aAAa,MAAM;EACpB"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { SKILLS, parseSkills } from "@sentry/mcp-core/skills";
|
|
2
|
+
import { validateAndParseSentryUrlThrows, validateOpenAiBaseUrlThrows, validateSentryHostThrows } from "@sentry/mcp-core/utils/url-utils";
|
|
3
|
+
|
|
4
|
+
//#region src/cli/resolve.ts
|
|
5
|
+
function formatInvalidSkills(invalid, envName) {
|
|
6
|
+
const where = envName ? `${envName} provided` : "Invalid skills provided";
|
|
7
|
+
const allSkills = Object.keys(SKILLS).join(", ");
|
|
8
|
+
return `Error: ${where}: ${invalid.join(", ")}\nAvailable skills: ${allSkills}`;
|
|
9
|
+
}
|
|
10
|
+
function finalize(input) {
|
|
11
|
+
if (!input.accessToken) throw new Error("Error: No access token was provided. Pass one with `--access-token` or via `SENTRY_ACCESS_TOKEN`.");
|
|
12
|
+
let sentryHost = "sentry.io";
|
|
13
|
+
if (input.url) sentryHost = validateAndParseSentryUrlThrows(input.url);
|
|
14
|
+
else if (input.host) {
|
|
15
|
+
validateSentryHostThrows(input.host);
|
|
16
|
+
sentryHost = input.host;
|
|
17
|
+
}
|
|
18
|
+
let finalSkills = void 0;
|
|
19
|
+
if (input.skills) {
|
|
20
|
+
const { valid, invalid } = parseSkills(input.skills);
|
|
21
|
+
if (invalid.length > 0) throw new Error(formatInvalidSkills(invalid));
|
|
22
|
+
if (valid.size === 0) throw new Error("Error: Invalid skills provided. No valid skills found.");
|
|
23
|
+
finalSkills = valid;
|
|
24
|
+
} else {
|
|
25
|
+
const allSkills = Object.keys(SKILLS);
|
|
26
|
+
finalSkills = new Set(allSkills);
|
|
27
|
+
}
|
|
28
|
+
const resolvedOpenAiBaseUrl = input.openaiBaseUrl ? validateOpenAiBaseUrlThrows(input.openaiBaseUrl) : void 0;
|
|
29
|
+
const resolvedAnthropicBaseUrl = input.anthropicBaseUrl ? validateOpenAiBaseUrlThrows(input.anthropicBaseUrl) : void 0;
|
|
30
|
+
let agentProvider = void 0;
|
|
31
|
+
if (input.agentProvider) {
|
|
32
|
+
const provider = input.agentProvider.toLowerCase();
|
|
33
|
+
if (provider !== "openai" && provider !== "anthropic") throw new Error(`Error: Invalid agent provider "${input.agentProvider}". Must be "openai" or "anthropic".`);
|
|
34
|
+
agentProvider = provider;
|
|
35
|
+
}
|
|
36
|
+
return {
|
|
37
|
+
accessToken: input.accessToken,
|
|
38
|
+
sentryHost,
|
|
39
|
+
mcpUrl: input.mcpUrl,
|
|
40
|
+
sentryDsn: input.sentryDsn,
|
|
41
|
+
openaiBaseUrl: resolvedOpenAiBaseUrl,
|
|
42
|
+
openaiModel: input.openaiModel,
|
|
43
|
+
anthropicBaseUrl: resolvedAnthropicBaseUrl,
|
|
44
|
+
anthropicModel: input.anthropicModel,
|
|
45
|
+
agentProvider,
|
|
46
|
+
finalSkills,
|
|
47
|
+
organizationSlug: input.organizationSlug,
|
|
48
|
+
projectSlug: input.projectSlug
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
//#endregion
|
|
53
|
+
export { finalize, formatInvalidSkills };
|
|
54
|
+
//# sourceMappingURL=resolve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve.js","names":[],"sources":["../../src/cli/resolve.ts"],"sourcesContent":["import { parseSkills, SKILLS, type Skill } from \"@sentry/mcp-core/skills\";\nimport {\n validateAndParseSentryUrlThrows,\n validateOpenAiBaseUrlThrows,\n validateSentryHostThrows,\n} from \"@sentry/mcp-core/utils/url-utils\";\nimport type { MergedArgs, ResolvedConfig } from \"./types\";\n\nexport function formatInvalidSkills(\n invalid: string[],\n envName?: string,\n): string {\n const where = envName ? `${envName} provided` : \"Invalid skills provided\";\n const allSkills = Object.keys(SKILLS).join(\", \");\n return `Error: ${where}: ${invalid.join(\", \")}\\nAvailable skills: ${allSkills}`;\n}\n\nexport function finalize(input: MergedArgs): ResolvedConfig {\n // Access token required\n if (!input.accessToken) {\n throw new Error(\n \"Error: No access token was provided. Pass one with `--access-token` or via `SENTRY_ACCESS_TOKEN`.\",\n );\n }\n\n // Determine host from url/host with validation\n let sentryHost = \"sentry.io\";\n if (input.url) {\n sentryHost = validateAndParseSentryUrlThrows(input.url);\n } else if (input.host) {\n validateSentryHostThrows(input.host);\n sentryHost = input.host;\n }\n\n // Skills resolution\n //\n // IMPORTANT: stdio (CLI) intentionally defaults to ALL skills when no --skills flag is provided\n //\n // This differs from the OAuth flow, which requires explicit user selection:\n // - stdio/CLI: Non-interactive, defaults to ALL skills (inspect, docs, seer, triage, project-management)\n // - OAuth: Interactive, requires user to explicitly select skills (with sensible defaults pre-checked)\n //\n // Rationale:\n // We don't want the MCP to break if users don't specify skills. stdio is typically used in\n // local development and CI/CD environments where maximum access by default is expected.\n // OAuth is used in multi-tenant hosted environments where users should consciously grant\n // permissions on a per-app basis.\n //\n // For OAuth validation that enforces minimum 1 skill selection, see:\n // packages/mcp-cloudflare/src/server/oauth/routes/callback.ts (lines 234-248)\n //\n let finalSkills: Set<Skill> | undefined = undefined;\n if (input.skills) {\n // Override: use only the specified skills\n const { valid, invalid } = parseSkills(input.skills);\n if (invalid.length > 0) {\n throw new Error(formatInvalidSkills(invalid));\n }\n if (valid.size === 0) {\n throw new Error(\"Error: Invalid skills provided. No valid skills found.\");\n }\n finalSkills = valid;\n } else {\n // Default: grant ALL skills when no flag is provided (see comment block above for rationale)\n const allSkills = Object.keys(SKILLS) as Skill[];\n finalSkills = new Set<Skill>(allSkills);\n }\n\n const resolvedOpenAiBaseUrl = input.openaiBaseUrl\n ? validateOpenAiBaseUrlThrows(input.openaiBaseUrl)\n : undefined;\n\n // Validate anthropic base URL if provided (same validation as OpenAI)\n const resolvedAnthropicBaseUrl = input.anthropicBaseUrl\n ? validateOpenAiBaseUrlThrows(input.anthropicBaseUrl)\n : undefined;\n\n // Validate agent provider if explicitly set\n let agentProvider: \"openai\" | \"anthropic\" | undefined = undefined;\n if (input.agentProvider) {\n const provider = input.agentProvider.toLowerCase();\n if (provider !== \"openai\" && provider !== \"anthropic\") {\n throw new Error(\n `Error: Invalid agent provider \"${input.agentProvider}\". Must be \"openai\" or \"anthropic\".`,\n );\n }\n agentProvider = provider;\n }\n\n return {\n accessToken: input.accessToken,\n sentryHost,\n mcpUrl: input.mcpUrl,\n sentryDsn: input.sentryDsn,\n openaiBaseUrl: resolvedOpenAiBaseUrl,\n openaiModel: input.openaiModel,\n anthropicBaseUrl: resolvedAnthropicBaseUrl,\n anthropicModel: input.anthropicModel,\n agentProvider,\n finalSkills,\n organizationSlug: input.organizationSlug,\n projectSlug: input.projectSlug,\n };\n}\n"],"mappings":";;;;AAQA,SAAgB,oBACd,SACA,SACQ;CACR,MAAM,QAAQ,UAAU,GAAG,QAAQ,aAAa;CAChD,MAAM,YAAY,OAAO,KAAK,OAAO,CAAC,KAAK,KAAK;AAChD,QAAO,UAAU,MAAM,IAAI,QAAQ,KAAK,KAAK,CAAC,sBAAsB;;AAGtE,SAAgB,SAAS,OAAmC;AAE1D,KAAI,CAAC,MAAM,YACT,OAAM,IAAI,MACR,oGACD;CAIH,IAAI,aAAa;AACjB,KAAI,MAAM,IACR,cAAa,gCAAgC,MAAM,IAAI;UAC9C,MAAM,MAAM;AACrB,2BAAyB,MAAM,KAAK;AACpC,eAAa,MAAM;;CAoBrB,IAAI,cAAsC;AAC1C,KAAI,MAAM,QAAQ;EAEhB,MAAM,EAAE,OAAO,YAAY,YAAY,MAAM,OAAO;AACpD,MAAI,QAAQ,SAAS,EACnB,OAAM,IAAI,MAAM,oBAAoB,QAAQ,CAAC;AAE/C,MAAI,MAAM,SAAS,EACjB,OAAM,IAAI,MAAM,yDAAyD;AAE3E,gBAAc;QACT;EAEL,MAAM,YAAY,OAAO,KAAK,OAAO;AACrC,gBAAc,IAAI,IAAW,UAAU;;CAGzC,MAAM,wBAAwB,MAAM,gBAChC,4BAA4B,MAAM,cAAc,GAChD;CAGJ,MAAM,2BAA2B,MAAM,mBACnC,4BAA4B,MAAM,iBAAiB,GACnD;CAGJ,IAAI,gBAAoD;AACxD,KAAI,MAAM,eAAe;EACvB,MAAM,WAAW,MAAM,cAAc,aAAa;AAClD,MAAI,aAAa,YAAY,aAAa,YACxC,OAAM,IAAI,MACR,kCAAkC,MAAM,cAAc,qCACvD;AAEH,kBAAgB;;AAGlB,QAAO;EACL,aAAa,MAAM;EACnB;EACA,QAAQ,MAAM;EACd,WAAW,MAAM;EACjB,eAAe;EACf,aAAa,MAAM;EACnB,kBAAkB;EAClB,gBAAgB,MAAM;EACtB;EACA;EACA,kBAAkB,MAAM;EACxB,aAAa,MAAM;EACpB"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { Skill } from "@sentry/mcp-core/skills";
|
|
2
|
+
|
|
3
|
+
//#region src/cli/types.d.ts
|
|
4
|
+
type CliArgs = {
|
|
5
|
+
accessToken?: string;
|
|
6
|
+
host?: string;
|
|
7
|
+
url?: string;
|
|
8
|
+
mcpUrl?: string;
|
|
9
|
+
sentryDsn?: string;
|
|
10
|
+
openaiBaseUrl?: string;
|
|
11
|
+
openaiModel?: string;
|
|
12
|
+
anthropicBaseUrl?: string;
|
|
13
|
+
anthropicModel?: string;
|
|
14
|
+
agentProvider?: string;
|
|
15
|
+
skills?: string;
|
|
16
|
+
agent?: boolean;
|
|
17
|
+
experimental?: boolean;
|
|
18
|
+
organizationSlug?: string;
|
|
19
|
+
projectSlug?: string;
|
|
20
|
+
help?: boolean;
|
|
21
|
+
version?: boolean;
|
|
22
|
+
unknownArgs: string[];
|
|
23
|
+
};
|
|
24
|
+
type EnvArgs = {
|
|
25
|
+
accessToken?: string;
|
|
26
|
+
host?: string;
|
|
27
|
+
url?: string;
|
|
28
|
+
mcpUrl?: string;
|
|
29
|
+
sentryDsn?: string;
|
|
30
|
+
openaiModel?: string;
|
|
31
|
+
anthropicModel?: string;
|
|
32
|
+
agentProvider?: string;
|
|
33
|
+
skills?: string;
|
|
34
|
+
};
|
|
35
|
+
type MergedArgs = {
|
|
36
|
+
accessToken?: string;
|
|
37
|
+
host?: string;
|
|
38
|
+
url?: string;
|
|
39
|
+
mcpUrl?: string;
|
|
40
|
+
sentryDsn?: string;
|
|
41
|
+
openaiBaseUrl?: string;
|
|
42
|
+
openaiModel?: string;
|
|
43
|
+
anthropicBaseUrl?: string;
|
|
44
|
+
anthropicModel?: string;
|
|
45
|
+
agentProvider?: string;
|
|
46
|
+
skills?: string;
|
|
47
|
+
agent?: boolean;
|
|
48
|
+
experimental?: boolean;
|
|
49
|
+
organizationSlug?: string;
|
|
50
|
+
projectSlug?: string;
|
|
51
|
+
help?: boolean;
|
|
52
|
+
version?: boolean;
|
|
53
|
+
unknownArgs: string[];
|
|
54
|
+
};
|
|
55
|
+
type ResolvedConfig = {
|
|
56
|
+
accessToken: string;
|
|
57
|
+
sentryHost: string;
|
|
58
|
+
mcpUrl?: string;
|
|
59
|
+
sentryDsn?: string;
|
|
60
|
+
openaiBaseUrl?: string;
|
|
61
|
+
openaiModel?: string;
|
|
62
|
+
anthropicBaseUrl?: string;
|
|
63
|
+
anthropicModel?: string;
|
|
64
|
+
agentProvider?: "openai" | "anthropic";
|
|
65
|
+
/** Primary authorization method */
|
|
66
|
+
finalSkills?: Set<Skill>;
|
|
67
|
+
organizationSlug?: string;
|
|
68
|
+
projectSlug?: string;
|
|
69
|
+
};
|
|
70
|
+
//# sourceMappingURL=types.d.ts.map
|
|
71
|
+
//#endregion
|
|
72
|
+
export { CliArgs, EnvArgs, MergedArgs, ResolvedConfig };
|
|
73
|
+
//# sourceMappingURL=types-B2hDXVnQ.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types-B2hDXVnQ.d.ts","names":[],"sources":["../../src/cli/types.ts"],"sourcesContent":[],"mappings":";;;KAEY,OAAA;;EAAA,IAAA,CAAA,EAAA,MAAO;EAqBP,GAAA,CAAA,EAAA,MAAO;EAYP,MAAA,CAAA,EAAA,MAAU;EAqBV,SAAA,CAAA,EAAA,MAAc;EAAA,aAAA,CAAA,EAAA,MAAA;aAWN,CAAA,EAAA,MAAA;kBAAJ,CAAA,EAAA,MAAA;EAAG,cAAA,CAAA,EAAA,MAAA;;;;;;;;;;;KA5CP,OAAA;;;;;;;;;;;KAYA,UAAA;;;;;;;;;;;;;;;;;;;;KAqBA,cAAA;;;;;;;;;;;gBAWI,IAAI"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { Skill } from "@sentry/mcp-core/skills";
|
|
2
|
+
|
|
3
|
+
//#region src/cli/types.d.ts
|
|
4
|
+
type CliArgs = {
|
|
5
|
+
accessToken?: string;
|
|
6
|
+
host?: string;
|
|
7
|
+
url?: string;
|
|
8
|
+
mcpUrl?: string;
|
|
9
|
+
sentryDsn?: string;
|
|
10
|
+
openaiBaseUrl?: string;
|
|
11
|
+
openaiModel?: string;
|
|
12
|
+
anthropicBaseUrl?: string;
|
|
13
|
+
anthropicModel?: string;
|
|
14
|
+
agentProvider?: string;
|
|
15
|
+
skills?: string;
|
|
16
|
+
agent?: boolean;
|
|
17
|
+
experimental?: boolean;
|
|
18
|
+
organizationSlug?: string;
|
|
19
|
+
projectSlug?: string;
|
|
20
|
+
help?: boolean;
|
|
21
|
+
version?: boolean;
|
|
22
|
+
unknownArgs: string[];
|
|
23
|
+
};
|
|
24
|
+
type EnvArgs = {
|
|
25
|
+
accessToken?: string;
|
|
26
|
+
host?: string;
|
|
27
|
+
url?: string;
|
|
28
|
+
mcpUrl?: string;
|
|
29
|
+
sentryDsn?: string;
|
|
30
|
+
openaiModel?: string;
|
|
31
|
+
anthropicModel?: string;
|
|
32
|
+
agentProvider?: string;
|
|
33
|
+
skills?: string;
|
|
34
|
+
};
|
|
35
|
+
type MergedArgs = {
|
|
36
|
+
accessToken?: string;
|
|
37
|
+
host?: string;
|
|
38
|
+
url?: string;
|
|
39
|
+
mcpUrl?: string;
|
|
40
|
+
sentryDsn?: string;
|
|
41
|
+
openaiBaseUrl?: string;
|
|
42
|
+
openaiModel?: string;
|
|
43
|
+
anthropicBaseUrl?: string;
|
|
44
|
+
anthropicModel?: string;
|
|
45
|
+
agentProvider?: string;
|
|
46
|
+
skills?: string;
|
|
47
|
+
agent?: boolean;
|
|
48
|
+
experimental?: boolean;
|
|
49
|
+
organizationSlug?: string;
|
|
50
|
+
projectSlug?: string;
|
|
51
|
+
help?: boolean;
|
|
52
|
+
version?: boolean;
|
|
53
|
+
unknownArgs: string[];
|
|
54
|
+
};
|
|
55
|
+
type ResolvedConfig = {
|
|
56
|
+
accessToken: string;
|
|
57
|
+
sentryHost: string;
|
|
58
|
+
mcpUrl?: string;
|
|
59
|
+
sentryDsn?: string;
|
|
60
|
+
openaiBaseUrl?: string;
|
|
61
|
+
openaiModel?: string;
|
|
62
|
+
anthropicBaseUrl?: string;
|
|
63
|
+
anthropicModel?: string;
|
|
64
|
+
agentProvider?: "openai" | "anthropic";
|
|
65
|
+
/** Primary authorization method */
|
|
66
|
+
finalSkills?: Set<Skill>;
|
|
67
|
+
organizationSlug?: string;
|
|
68
|
+
projectSlug?: string;
|
|
69
|
+
};
|
|
70
|
+
//# sourceMappingURL=types.d.ts.map
|
|
71
|
+
//#endregion
|
|
72
|
+
export { CliArgs, EnvArgs, MergedArgs, ResolvedConfig };
|
|
73
|
+
//# sourceMappingURL=types-VWgo1wm6.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types-VWgo1wm6.d.cts","names":[],"sources":["../../src/cli/types.ts"],"sourcesContent":[],"mappings":";;;KAEY,OAAA;;EAAA,IAAA,CAAA,EAAA,MAAO;EAqBP,GAAA,CAAA,EAAA,MAAO;EAYP,MAAA,CAAA,EAAA,MAAU;EAqBV,SAAA,CAAA,EAAA,MAAc;EAAA,aAAA,CAAA,EAAA,MAAA;aAWN,CAAA,EAAA,MAAA;kBAAJ,CAAA,EAAA,MAAA;EAAG,cAAA,CAAA,EAAA,MAAA;;;;;;;;;;;KA5CP,OAAA;;;;;;;;;;;KAYA,UAAA;;;;;;;;;;;;;;;;;;;;KAqBA,cAAA;;;;;;;;;;;gBAWI,IAAI"}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Skill } from "@sentry/mcp-core/skills";
|
|
2
|
+
|
|
3
|
+
//#region src/cli/usage.d.ts
|
|
4
|
+
declare function buildUsage(packageName: string, allSkills: ReadonlyArray<Skill>): string;
|
|
5
|
+
//# sourceMappingURL=usage.d.ts.map
|
|
6
|
+
|
|
7
|
+
//#endregion
|
|
8
|
+
export { buildUsage };
|
|
9
|
+
//# sourceMappingURL=usage-B0gAPy4S.d.cts.map
|