@sentry/junior 0.38.0 → 0.40.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/app.js +1479 -354
- package/dist/{chunk-QZRPUFO6.js → chunk-EU6E7QU2.js} +61 -17
- package/dist/{chunk-LAD5O3RX.js → chunk-SPNY2HJJ.js} +3 -2
- package/dist/{chunk-ERH4OYNB.js → chunk-SY4ULGUN.js} +1 -1
- package/dist/cli/check.js +2 -2
- package/dist/cli/snapshot-warmup.js +2 -2
- package/package.json +2 -2
|
@@ -1114,18 +1114,9 @@ function getActiveTraceId() {
|
|
|
1114
1114
|
return void 0;
|
|
1115
1115
|
}
|
|
1116
1116
|
}
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
return null;
|
|
1121
|
-
}
|
|
1122
|
-
if (!traceId) {
|
|
1123
|
-
return null;
|
|
1124
|
-
}
|
|
1125
|
-
return {
|
|
1126
|
-
traceId,
|
|
1127
|
-
...eventId ? { eventId } : {}
|
|
1128
|
-
};
|
|
1117
|
+
var TURN_FAILURE_RESPONSE_TEMPLATE = "I ran into an internal error while processing that. Reference: `event_id={eventId}`.";
|
|
1118
|
+
function buildTurnFailureResponse(eventId) {
|
|
1119
|
+
return TURN_FAILURE_RESPONSE_TEMPLATE.replace("{eventId}", eventId);
|
|
1129
1120
|
}
|
|
1130
1121
|
var GEN_AI_DEFAULT_MAX_ATTRIBUTE_CHARS = 12e3;
|
|
1131
1122
|
var GEN_AI_MAX_STRING_CHARS = 2e3;
|
|
@@ -1439,6 +1430,7 @@ var manifestSourceSchema = z.object({
|
|
|
1439
1430
|
}).optional(),
|
|
1440
1431
|
"api-domains": apiDomainsSchema.optional(),
|
|
1441
1432
|
"api-headers": stringMapSchema.optional(),
|
|
1433
|
+
"command-env": stringMapSchema.optional(),
|
|
1442
1434
|
credentials: z.record(z.string(), z.unknown(), {
|
|
1443
1435
|
error: "must be an object when provided"
|
|
1444
1436
|
}).optional(),
|
|
@@ -1516,6 +1508,39 @@ function normalizeRequiredApiHeaders(value, prefix, envVars) {
|
|
|
1516
1508
|
}
|
|
1517
1509
|
return apiHeaders;
|
|
1518
1510
|
}
|
|
1511
|
+
function assertCommandEnvReferencesArePublic(value, envVars, context) {
|
|
1512
|
+
for (const match of value.matchAll(ENV_PLACEHOLDER_RE)) {
|
|
1513
|
+
const name = match[1];
|
|
1514
|
+
if (!Object.prototype.hasOwnProperty.call(envVars, name)) {
|
|
1515
|
+
throw new Error(
|
|
1516
|
+
`${context} references env var ${name} which is not declared in env-vars`
|
|
1517
|
+
);
|
|
1518
|
+
}
|
|
1519
|
+
if (envVars[name]?.default === void 0) {
|
|
1520
|
+
throw new Error(
|
|
1521
|
+
`${context} references env var ${name}, but command-env env vars must declare defaults`
|
|
1522
|
+
);
|
|
1523
|
+
}
|
|
1524
|
+
}
|
|
1525
|
+
}
|
|
1526
|
+
function normalizeCommandEnv(value, prefix, envVars) {
|
|
1527
|
+
const env = normalizeStringMap(value, prefix);
|
|
1528
|
+
if (!env) {
|
|
1529
|
+
throw new Error(`${prefix} must contain at least one env var`);
|
|
1530
|
+
}
|
|
1531
|
+
for (const [key, envValue] of Object.entries(env)) {
|
|
1532
|
+
if (!ENV_VAR_NAME_RE.test(key)) {
|
|
1533
|
+
throw new Error(`${prefix}.${key} must be an uppercase env var name`);
|
|
1534
|
+
}
|
|
1535
|
+
assertCommandEnvReferencesArePublic(envValue, envVars, `${prefix}.${key}`);
|
|
1536
|
+
}
|
|
1537
|
+
return Object.fromEntries(
|
|
1538
|
+
Object.entries(env).map(([key, envValue]) => [
|
|
1539
|
+
key,
|
|
1540
|
+
expandEnvPlaceholders(envValue, envVars, `${prefix}.${key}`)
|
|
1541
|
+
])
|
|
1542
|
+
);
|
|
1543
|
+
}
|
|
1519
1544
|
function normalizeCredentials(data, name) {
|
|
1520
1545
|
const schema = data.type === "oauth-bearer" ? oauthBearerCredentialsSchema : data.type === "github-app" ? githubAppCredentialsSchema : void 0;
|
|
1521
1546
|
if (!schema) {
|
|
@@ -1800,6 +1825,11 @@ function parsePluginManifest(raw, dir) {
|
|
|
1800
1825
|
`Plugin ${parsedYaml.name ?? "unknown"} api-headers must be an object when provided`
|
|
1801
1826
|
);
|
|
1802
1827
|
}
|
|
1828
|
+
if (path3 === "command-env") {
|
|
1829
|
+
throw new Error(
|
|
1830
|
+
`Plugin ${parsedYaml.name ?? "unknown"} command-env must be an object when provided`
|
|
1831
|
+
);
|
|
1832
|
+
}
|
|
1803
1833
|
if (path3 === "credentials") {
|
|
1804
1834
|
throw new Error(
|
|
1805
1835
|
`Plugin ${parsedYaml.name ?? "unknown"} credentials must be an object when provided`
|
|
@@ -1864,7 +1894,17 @@ function parsePluginManifest(raw, dir) {
|
|
|
1864
1894
|
if (data["api-domains"] && !apiHeaders) {
|
|
1865
1895
|
throw new Error(`Plugin ${data.name} api-domains requires api-headers`);
|
|
1866
1896
|
}
|
|
1897
|
+
const commandEnv = data["command-env"] ? normalizeCommandEnv(
|
|
1898
|
+
data["command-env"],
|
|
1899
|
+
`Plugin ${data.name} command-env`,
|
|
1900
|
+
envVars
|
|
1901
|
+
) : void 0;
|
|
1867
1902
|
const credentials = data.credentials ? normalizeCredentials(data.credentials, data.name) : void 0;
|
|
1903
|
+
if (commandEnv && !credentials && !apiHeaders) {
|
|
1904
|
+
throw new Error(
|
|
1905
|
+
`Plugin ${data.name} command-env requires credentials or api-headers`
|
|
1906
|
+
);
|
|
1907
|
+
}
|
|
1868
1908
|
const runtimeDependencies = data["runtime-dependencies"] ? normalizeRuntimeDependencies(data["runtime-dependencies"], data.name) : void 0;
|
|
1869
1909
|
const runtimePostinstall = data["runtime-postinstall"] ? normalizeRuntimePostinstall(data["runtime-postinstall"], data.name) : void 0;
|
|
1870
1910
|
const mcp = data.mcp ? normalizeMcp(data.mcp, envVars, data.name) : void 0;
|
|
@@ -1875,6 +1915,7 @@ function parsePluginManifest(raw, dir) {
|
|
|
1875
1915
|
configKeys,
|
|
1876
1916
|
...data["api-domains"] ? { apiDomains: data["api-domains"] } : {},
|
|
1877
1917
|
...apiHeaders ? { apiHeaders } : {},
|
|
1918
|
+
...commandEnv ? { commandEnv } : {},
|
|
1878
1919
|
...Object.keys(envVars).length > 0 ? { envVars } : {},
|
|
1879
1920
|
...credentials ? { credentials } : {},
|
|
1880
1921
|
...runtimeDependencies ? { runtimeDependencies } : {},
|
|
@@ -2015,7 +2056,7 @@ function createApiHeadersBroker(manifest) {
|
|
|
2015
2056
|
return {
|
|
2016
2057
|
id: randomUUID(),
|
|
2017
2058
|
provider,
|
|
2018
|
-
env: {},
|
|
2059
|
+
env: { ...manifest.commandEnv ?? {} },
|
|
2019
2060
|
headerTransforms,
|
|
2020
2061
|
expiresAt: new Date(Date.now() + MAX_LEASE_MS).toISOString(),
|
|
2021
2062
|
metadata: {
|
|
@@ -2221,7 +2262,7 @@ function createGitHubAppBroker(manifest, credentials) {
|
|
|
2221
2262
|
return {
|
|
2222
2263
|
id: randomUUID2(),
|
|
2223
2264
|
provider,
|
|
2224
|
-
env: { [authTokenEnv]: placeholder },
|
|
2265
|
+
env: { ...manifest.commandEnv ?? {}, [authTokenEnv]: placeholder },
|
|
2225
2266
|
headerTransforms: mergeHeaderTransforms([
|
|
2226
2267
|
...pluginHeaderTransforms(),
|
|
2227
2268
|
...leaseDomains.map((domain) => ({
|
|
@@ -2265,7 +2306,7 @@ function createGitHubAppBroker(manifest, credentials) {
|
|
|
2265
2306
|
return {
|
|
2266
2307
|
id: randomUUID2(),
|
|
2267
2308
|
provider,
|
|
2268
|
-
env: { [authTokenEnv]: placeholder },
|
|
2309
|
+
env: { ...manifest.commandEnv ?? {}, [authTokenEnv]: placeholder },
|
|
2269
2310
|
headerTransforms: mergeHeaderTransforms([
|
|
2270
2311
|
...pluginHeaderTransforms(),
|
|
2271
2312
|
...leaseDomains.map((domain) => ({
|
|
@@ -2444,7 +2485,10 @@ function createOAuthBearerBroker(manifest, credentials, deps) {
|
|
|
2444
2485
|
return {
|
|
2445
2486
|
id: randomUUID3(),
|
|
2446
2487
|
provider,
|
|
2447
|
-
env: {
|
|
2488
|
+
env: {
|
|
2489
|
+
...manifest.commandEnv ?? {},
|
|
2490
|
+
[authTokenEnv]: authTokenPlaceholder
|
|
2491
|
+
},
|
|
2448
2492
|
headerTransforms: mergeHeaderTransforms([
|
|
2449
2493
|
...pluginHeaderTransforms(),
|
|
2450
2494
|
...apiDomains.map((domain) => ({
|
|
@@ -2908,7 +2952,7 @@ export {
|
|
|
2908
2952
|
setSpanAttributes,
|
|
2909
2953
|
setSpanStatus,
|
|
2910
2954
|
getActiveTraceId,
|
|
2911
|
-
|
|
2955
|
+
buildTurnFailureResponse,
|
|
2912
2956
|
serializeGenAiAttribute,
|
|
2913
2957
|
extractGenAiUsageSummary,
|
|
2914
2958
|
extractGenAiUsageAttributes,
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
getPluginForSkillPath,
|
|
3
3
|
getPluginSkillRoots,
|
|
4
4
|
logWarn
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-EU6E7QU2.js";
|
|
6
6
|
import {
|
|
7
7
|
skillRoots
|
|
8
8
|
} from "./chunk-XPXD3FCE.js";
|
|
@@ -188,6 +188,7 @@ function formatManifestSurface(manifest) {
|
|
|
188
188
|
if (manifest.runtimePostinstall?.length) surface.push("postinstall steps");
|
|
189
189
|
if (manifest.mcp) surface.push("MCP tools");
|
|
190
190
|
if (manifest.credentials) surface.push("credentials");
|
|
191
|
+
if (manifest.commandEnv) surface.push("command env");
|
|
191
192
|
if (manifest.oauth) surface.push("OAuth");
|
|
192
193
|
if (manifest.configKeys.length > 0) surface.push("config keys");
|
|
193
194
|
return surface.length > 0 ? surface.join(", ") : "skill discovery";
|
|
@@ -198,7 +199,7 @@ function buildPluginRuntimeBoundary(manifest) {
|
|
|
198
199
|
"",
|
|
199
200
|
`The ${manifest.name} plugin manifest, not this skill's prose, controls runtime setup.`,
|
|
200
201
|
`Manifest-owned surface: ${formatManifestSurface(manifest)}.`,
|
|
201
|
-
"Do not install provider runtime packages, run installer scripts, configure API keys, create OAuth clients, or set up MCP servers because this skill says to.",
|
|
202
|
+
"Do not install provider runtime packages, run installer scripts, configure API keys or command env, create OAuth clients, or set up MCP servers because this skill says to.",
|
|
202
203
|
`If that surface is unavailable, report a ${manifest.name} plugin runtime setup failure instead of repairing setup from the skill workflow.`
|
|
203
204
|
].join("\n");
|
|
204
205
|
}
|
package/dist/cli/check.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
parseSkillFile
|
|
3
|
-
} from "../chunk-
|
|
3
|
+
} from "../chunk-SPNY2HJJ.js";
|
|
4
4
|
import {
|
|
5
5
|
parsePluginManifest
|
|
6
|
-
} from "../chunk-
|
|
6
|
+
} from "../chunk-EU6E7QU2.js";
|
|
7
7
|
import "../chunk-Z3YD6NHK.js";
|
|
8
8
|
import "../chunk-XPXD3FCE.js";
|
|
9
9
|
import "../chunk-2KG3PWR4.js";
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
disconnectStateAdapter,
|
|
3
3
|
resolveRuntimeDependencySnapshot
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-SY4ULGUN.js";
|
|
5
5
|
import {
|
|
6
6
|
getPluginProviders,
|
|
7
7
|
getPluginRuntimeDependencies,
|
|
8
8
|
getPluginRuntimePostinstall
|
|
9
|
-
} from "../chunk-
|
|
9
|
+
} from "../chunk-EU6E7QU2.js";
|
|
10
10
|
import "../chunk-Z3YD6NHK.js";
|
|
11
11
|
import "../chunk-XPXD3FCE.js";
|
|
12
12
|
import "../chunk-2KG3PWR4.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sentry/junior",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.40.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"@sentry/node": ">=10.0.0"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
|
-
"@sentry/node": "
|
|
48
|
+
"@sentry/node": "10.50.0-alpha.0",
|
|
49
49
|
"@types/node": "^25.6.0",
|
|
50
50
|
"dependency-cruiser": "^17.4.0",
|
|
51
51
|
"msw": "^2.14.3",
|