@sentry/junior 0.113.0 → 0.115.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.
Files changed (98) hide show
  1. package/dist/{agent-hooks-BKEMWR3Z.js → agent-hooks-4EUUXP2F.js} +12 -11
  2. package/dist/api/conversations/detail.d.ts +26 -0
  3. package/dist/api/conversations/event-list.d.ts +26 -0
  4. package/dist/api/conversations/events.d.ts +1 -1
  5. package/dist/api/health.d.ts +7 -0
  6. package/dist/api/plugin-reports.d.ts +62 -0
  7. package/dist/api/plugins.d.ts +9 -0
  8. package/dist/api/runtime.d.ts +24 -0
  9. package/dist/api/schema/conversation.d.ts +104 -0
  10. package/dist/api/schema.d.ts +2 -2
  11. package/dist/api/schema.js +6 -6
  12. package/dist/api/skills.d.ts +6 -0
  13. package/dist/api.js +140 -100
  14. package/dist/app.d.ts +2 -0
  15. package/dist/app.js +1117 -5010
  16. package/dist/catalog-runtime-Y32UEQLB.js +18 -0
  17. package/dist/chat/agent/request.d.ts +6 -0
  18. package/dist/chat/agent/sandbox.d.ts +2 -0
  19. package/dist/chat/agent/tools.d.ts +2 -0
  20. package/dist/chat/config.d.ts +3 -1
  21. package/dist/chat/conversations/history.d.ts +92 -0
  22. package/dist/chat/conversations/projection.d.ts +20 -1
  23. package/dist/chat/local/credential-sync.d.ts +5 -0
  24. package/dist/chat/local/oauth-relay.d.ts +4 -0
  25. package/dist/chat/mcp/oauth.d.ts +1 -0
  26. package/dist/chat/oauth-authorization.d.ts +17 -0
  27. package/dist/chat/oauth-flow.d.ts +9 -0
  28. package/dist/chat/sandbox/egress/schemas.d.ts +46 -0
  29. package/dist/chat/sandbox/egress/signals.d.ts +9 -0
  30. package/dist/chat/sandbox/sandbox.d.ts +2 -0
  31. package/dist/chat/sentry-payload-filter.d.ts +4 -4
  32. package/dist/chat/services/context-budget.d.ts +7 -2
  33. package/dist/chat/services/context-compaction.d.ts +28 -1
  34. package/dist/chat/services/conversation-memory.d.ts +1 -0
  35. package/dist/chat/services/mcp-auth-orchestration.d.ts +5 -3
  36. package/dist/chat/services/plugin-auth-orchestration.d.ts +2 -0
  37. package/dist/chat/services/provider-error.d.ts +1 -0
  38. package/dist/chat/services/turn-router.d.ts +1 -0
  39. package/dist/chat/slack/message-control.d.ts +2 -0
  40. package/dist/chat/slack/oauth-authorization-message.d.ts +3 -0
  41. package/dist/chat/task-execution/slack-work.d.ts +2 -0
  42. package/dist/chat/tool-support/zod-tool.d.ts +1 -1
  43. package/dist/chat/tools/definition.d.ts +5 -0
  44. package/dist/chat/tools/sandbox/edit-file.d.ts +1 -1
  45. package/dist/chat/tools/sandbox/text-edits.d.ts +1 -0
  46. package/dist/{chunk-4WZ7YKDF.js → chunk-2QG4MZQ7.js} +2 -2
  47. package/dist/{chunk-H5ON7XTE.js → chunk-43RYMWJ2.js} +954 -2514
  48. package/dist/chunk-4CODA7P5.js +43 -0
  49. package/dist/{chunk-HMRVILWZ.js → chunk-67CVNDJ7.js} +1 -1
  50. package/dist/{chunk-LR2SKL5Y.js → chunk-6FKLPVF3.js} +1 -1
  51. package/dist/{chunk-2ZTTXTSZ.js → chunk-6OPTF4BQ.js} +10 -4
  52. package/dist/{chunk-3CTIAKSS.js → chunk-6V762AB4.js} +1 -1
  53. package/dist/{chunk-WBB22ANL.js → chunk-AGLQYELI.js} +77 -8
  54. package/dist/{chunk-DXRPHBOU.js → chunk-CEYOL62C.js} +77 -36
  55. package/dist/{chunk-QTS66GMR.js → chunk-CWEZEPD4.js} +3 -3
  56. package/dist/chunk-DIB4GX3G.js +8 -0
  57. package/dist/{chunk-OXE5ZUTS.js → chunk-EW5MLKT5.js} +10 -75
  58. package/dist/{chunk-42WRQLJ6.js → chunk-F3B2YJ76.js} +0 -14
  59. package/dist/chunk-FA6POGLH.js +70 -0
  60. package/dist/{chunk-ZRSUCJGA.js → chunk-FHC4JUSF.js} +1 -1
  61. package/dist/{chunk-6Y5L4BOM.js → chunk-FXOYURO4.js} +5 -3
  62. package/dist/{chunk-UKGNSJQQ.js → chunk-G36V2YGB.js} +108 -82
  63. package/dist/{chunk-K5BXPM74.js → chunk-G5SX4UPR.js} +3 -43
  64. package/dist/chunk-HDSDCEPK.js +80 -0
  65. package/dist/{chunk-LLKDNPYV.js → chunk-HWCQRGLL.js} +37 -3
  66. package/dist/{chunk-C4MZ3GP5.js → chunk-HZF5P5UN.js} +1 -1
  67. package/dist/chunk-LYA2AB5G.js +1914 -0
  68. package/dist/{chunk-36UJA3OD.js → chunk-NVUQSFWX.js} +2 -2
  69. package/dist/chunk-OB42YVAE.js +16 -0
  70. package/dist/{chunk-4VKFQPCW.js → chunk-PVZHG2XZ.js} +4 -4
  71. package/dist/{chunk-YJ44UT7D.js → chunk-RAVKCKXA.js} +7 -7
  72. package/dist/{chunk-RCBUZGIT.js → chunk-SYJT7AKB.js} +23 -20
  73. package/dist/{chunk-NP7TYFYR.js → chunk-TVE25LPW.js} +1 -1
  74. package/dist/chunk-W3U3YQYI.js +71 -0
  75. package/dist/chunk-YCLO7D7M.js +4267 -0
  76. package/dist/cli/chat.js +72 -40
  77. package/dist/cli/check.js +10 -8
  78. package/dist/cli/init.js +1 -0
  79. package/dist/cli/plugins.js +16 -14
  80. package/dist/cli/snapshot-warmup.js +13 -11
  81. package/dist/cli/upgrade.js +10 -8
  82. package/dist/{db-2ASK6MV6.js → db-KBSJHAZU.js} +8 -7
  83. package/dist/handlers/sandbox-egress-signals.d.ts +4 -0
  84. package/dist/instrumentation.js +72 -4
  85. package/dist/nitro.js +2 -2
  86. package/dist/oauth-callback-server-EYRMJTCS.js +231 -0
  87. package/dist/oauth-relay-3ZU72UGL.js +9 -0
  88. package/dist/reporting-schema.d.ts +12 -4
  89. package/dist/reporting.d.ts +5 -5
  90. package/dist/{runner-L363K62Z.js → runner-RQGZ5Z2S.js} +139 -72
  91. package/dist/sandbox-egress-signals-CDFAP67O.js +75 -0
  92. package/dist/{skills-VCPG3NOO.js → skills-JJQIE3BT.js} +10 -8
  93. package/dist/validation-MZ47PZP5.js +21 -0
  94. package/dist/version.js +1 -1
  95. package/package.json +5 -5
  96. package/dist/catalog-runtime-6XYOUVRZ.js +0 -16
  97. package/dist/chat/oauth-authorization-message.d.ts +0 -6
  98. package/dist/validation-GY7AJBLC.js +0 -19
package/dist/cli/chat.js CHANGED
@@ -1,35 +1,40 @@
1
1
  import {
2
2
  createAgentRunner,
3
3
  executeAgentRun
4
- } from "../chunk-H5ON7XTE.js";
5
- import "../chunk-DXRPHBOU.js";
6
- import "../chunk-4VKFQPCW.js";
4
+ } from "../chunk-43RYMWJ2.js";
5
+ import "../chunk-DIB4GX3G.js";
6
+ import "../chunk-LYA2AB5G.js";
7
+ import "../chunk-CEYOL62C.js";
8
+ import "../chunk-HDSDCEPK.js";
9
+ import "../chunk-PVZHG2XZ.js";
7
10
  import "../chunk-MU6HHZEN.js";
8
11
  import "../chunk-PDO5BLNM.js";
9
12
  import "../chunk-UIE3R5XU.js";
10
13
  import {
11
14
  loadAppPluginSet
12
15
  } from "../chunk-Y2CM7HXH.js";
13
- import "../chunk-YJ44UT7D.js";
14
- import "../chunk-HMRVILWZ.js";
15
- import "../chunk-QTS66GMR.js";
16
- import "../chunk-LLKDNPYV.js";
16
+ import "../chunk-RAVKCKXA.js";
17
+ import "../chunk-67CVNDJ7.js";
18
+ import "../chunk-CWEZEPD4.js";
19
+ import "../chunk-HWCQRGLL.js";
17
20
  import "../chunk-JQFJO5WH.js";
18
21
  import "../chunk-4ZNGQH7C.js";
19
- import "../chunk-RCBUZGIT.js";
22
+ import "../chunk-SYJT7AKB.js";
20
23
  import "../chunk-VFUK3X5B.js";
21
- import "../chunk-6Y5L4BOM.js";
22
- import "../chunk-4WZ7YKDF.js";
23
- import "../chunk-LR2SKL5Y.js";
24
- import "../chunk-OXE5ZUTS.js";
25
- import "../chunk-C4MZ3GP5.js";
26
- import "../chunk-36UJA3OD.js";
27
- import "../chunk-42WRQLJ6.js";
24
+ import "../chunk-FXOYURO4.js";
25
+ import "../chunk-2QG4MZQ7.js";
26
+ import "../chunk-6FKLPVF3.js";
27
+ import "../chunk-EW5MLKT5.js";
28
+ import "../chunk-W3U3YQYI.js";
29
+ import "../chunk-HZF5P5UN.js";
30
+ import "../chunk-NVUQSFWX.js";
31
+ import "../chunk-OB42YVAE.js";
32
+ import "../chunk-F3B2YJ76.js";
28
33
  import "../chunk-6GWA276C.js";
29
34
  import "../chunk-B3IT5END.js";
30
35
  import "../chunk-3V7OFJZC.js";
31
- import "../chunk-NP7TYFYR.js";
32
- import "../chunk-ZRSUCJGA.js";
36
+ import "../chunk-TVE25LPW.js";
37
+ import "../chunk-FHC4JUSF.js";
33
38
  import "../chunk-MLKGABMK.js";
34
39
 
35
40
  // src/cli/chat.ts
@@ -152,10 +157,10 @@ async function configureLocalChatPlugins(pluginSet) {
152
157
  databaseModule
153
158
  ] = await Promise.all([
154
159
  import("../plugins-PZMDS7AT.js"),
155
- import("../agent-hooks-BKEMWR3Z.js"),
156
- import("../catalog-runtime-6XYOUVRZ.js"),
157
- import("../validation-GY7AJBLC.js"),
158
- import("../db-2ASK6MV6.js")
160
+ import("../agent-hooks-4EUUXP2F.js"),
161
+ import("../catalog-runtime-Y32UEQLB.js"),
162
+ import("../validation-MZ47PZP5.js"),
163
+ import("../db-KBSJHAZU.js")
159
164
  ]);
160
165
  const resolvedPluginSet = pluginSet === void 0 ? await loadLocalPluginSet() : pluginSet ?? void 0;
161
166
  const plugins = pluginsModule.pluginRuntimeRegistrationsFromPluginSet(resolvedPluginSet);
@@ -213,12 +218,35 @@ function newRunConversationId() {
213
218
  }
214
219
  return conversationId;
215
220
  }
221
+ function localDevServerUrl() {
222
+ return `http://127.0.0.1:${process.env.PORT?.trim() || "3000"}`;
223
+ }
216
224
  async function prepareLocalChatRun(io, pluginSet) {
217
225
  defaultStateAdapterForLocalChat();
218
226
  await configureLocalChatPlugins(pluginSet);
219
- const { runLocalAgentTurn } = await import("../runner-L363K62Z.js");
227
+ const { runLocalAgentTurn } = await import("../runner-RQGZ5Z2S.js");
228
+ const { startLocalOAuthCallbackServer } = await import("../oauth-callback-server-EYRMJTCS.js");
229
+ const { createLocalOAuthState } = await import("../oauth-relay-3ZU72UGL.js");
230
+ const { createLocalSandboxEgressSignalTransport } = await import("../sandbox-egress-signals-CDFAP67O.js");
231
+ const agentRunner = createAgentRunner(executeAgentRun);
232
+ const oauthCallback = await startLocalOAuthCallbackServer(agentRunner);
220
233
  const deps = {
221
- agentRunner: createAgentRunner(executeAgentRun),
234
+ agentRunner,
235
+ authorization: {
236
+ cancel: oauthCallback.cancelAuthorization,
237
+ createState: async () => await createLocalOAuthState(oauthCallback.port),
238
+ deliver: async (request) => {
239
+ oauthCallback.beginAuthorization(request.authorizationUrl);
240
+ await reportStatus(
241
+ io,
242
+ `${request.label}:
243
+ ${request.authorizationUrl}
244
+ ${request.completionText}`
245
+ );
246
+ },
247
+ wait: oauthCallback.waitForAuthorization
248
+ },
249
+ sandboxEgressSignals: createLocalSandboxEgressSignalTransport(localDevServerUrl()),
222
250
  deliverReply: async (reply) => {
223
251
  await deliverReply(io, reply);
224
252
  },
@@ -229,27 +257,30 @@ async function prepareLocalChatRun(io, pluginSet) {
229
257
  await reportToolResult(io, result);
230
258
  }
231
259
  };
232
- return { conversationId: newRunConversationId(), runLocalAgentTurn, deps };
260
+ return {
261
+ close: oauthCallback.close,
262
+ conversationId: newRunConversationId(),
263
+ runLocalAgentTurn,
264
+ deps
265
+ };
233
266
  }
234
267
  async function runPrompt(options, io, pluginSet) {
235
- const { conversationId, runLocalAgentTurn, deps } = await prepareLocalChatRun(
236
- io,
237
- pluginSet
238
- );
239
- const result = await runLocalAgentTurn(
240
- {
241
- conversationId,
242
- message: options.message
243
- },
244
- deps
245
- );
246
- return result.outcome === "success" ? 0 : 1;
268
+ const { close, conversationId, runLocalAgentTurn, deps } = await prepareLocalChatRun(io, pluginSet);
269
+ try {
270
+ const result = await runLocalAgentTurn(
271
+ {
272
+ conversationId,
273
+ message: options.message
274
+ },
275
+ deps
276
+ );
277
+ return result.outcome === "success" ? 0 : 1;
278
+ } finally {
279
+ await close();
280
+ }
247
281
  }
248
282
  async function runInteractive(io, pluginSet) {
249
- const { conversationId, runLocalAgentTurn, deps } = await prepareLocalChatRun(
250
- io,
251
- pluginSet
252
- );
283
+ const { close, conversationId, runLocalAgentTurn, deps } = await prepareLocalChatRun(io, pluginSet);
253
284
  const rl = readline.createInterface({
254
285
  input: io.input,
255
286
  output: io.output,
@@ -281,6 +312,7 @@ async function runInteractive(io, pluginSet) {
281
312
  }
282
313
  } finally {
283
314
  rl.close();
315
+ await close();
284
316
  }
285
317
  }
286
318
  async function runChat(argv, io = DEFAULT_IO, deps = {}) {
package/dist/cli/check.js CHANGED
@@ -1,14 +1,16 @@
1
1
  import {
2
2
  parseSkillFile
3
- } from "../chunk-4WZ7YKDF.js";
4
- import "../chunk-LR2SKL5Y.js";
3
+ } from "../chunk-2QG4MZQ7.js";
4
+ import "../chunk-6FKLPVF3.js";
5
5
  import {
6
6
  parseInlinePluginManifest,
7
7
  parsePluginManifest
8
- } from "../chunk-OXE5ZUTS.js";
9
- import "../chunk-C4MZ3GP5.js";
10
- import "../chunk-36UJA3OD.js";
11
- import "../chunk-42WRQLJ6.js";
8
+ } from "../chunk-EW5MLKT5.js";
9
+ import "../chunk-W3U3YQYI.js";
10
+ import "../chunk-HZF5P5UN.js";
11
+ import "../chunk-NVUQSFWX.js";
12
+ import "../chunk-OB42YVAE.js";
13
+ import "../chunk-F3B2YJ76.js";
12
14
  import "../chunk-6GWA276C.js";
13
15
  import "../chunk-B3IT5END.js";
14
16
  import "../chunk-3V7OFJZC.js";
@@ -16,8 +18,8 @@ import {
16
18
  JUNIOR_CONVERSATION_WORK_CALLBACK_ROUTE,
17
19
  JUNIOR_HEARTBEAT_ROUTE,
18
20
  LEGACY_JUNIOR_CONVERSATION_WORK_FUNCTION
19
- } from "../chunk-NP7TYFYR.js";
20
- import "../chunk-ZRSUCJGA.js";
21
+ } from "../chunk-TVE25LPW.js";
22
+ import "../chunk-FHC4JUSF.js";
21
23
  import "../chunk-MLKGABMK.js";
22
24
 
23
25
  // src/cli/check.ts
package/dist/cli/init.js CHANGED
@@ -208,6 +208,7 @@ SLACK_SIGNING_SECRET=
208
208
  JUNIOR_SECRET=
209
209
  JUNIOR_BOT_NAME=
210
210
  JUNIOR_SLASH_COMMAND=
211
+ JUNIOR_CROSS_ACTOR_MID_RUN_MODE=
211
212
  AI_MODEL=
212
213
  AI_FAST_MODEL=
213
214
  AI_HANDOFF_MODEL=
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  validatePluginEgressCredentialHooks,
3
3
  validatePluginRegistrations
4
- } from "../chunk-3CTIAKSS.js";
4
+ } from "../chunk-6V762AB4.js";
5
5
  import {
6
6
  pluginCatalogConfigFromPluginSet,
7
7
  pluginCliRegistrationsFromPluginSet,
@@ -14,29 +14,31 @@ import {
14
14
  createPluginLogger,
15
15
  setPlugins,
16
16
  validatePlugins
17
- } from "../chunk-YJ44UT7D.js";
18
- import "../chunk-HMRVILWZ.js";
19
- import "../chunk-QTS66GMR.js";
17
+ } from "../chunk-RAVKCKXA.js";
18
+ import "../chunk-67CVNDJ7.js";
19
+ import "../chunk-CWEZEPD4.js";
20
20
  import {
21
21
  getDb
22
- } from "../chunk-LLKDNPYV.js";
22
+ } from "../chunk-HWCQRGLL.js";
23
23
  import "../chunk-JQFJO5WH.js";
24
24
  import "../chunk-4ZNGQH7C.js";
25
- import "../chunk-RCBUZGIT.js";
25
+ import "../chunk-SYJT7AKB.js";
26
26
  import "../chunk-VFUK3X5B.js";
27
- import "../chunk-6Y5L4BOM.js";
27
+ import "../chunk-FXOYURO4.js";
28
28
  import {
29
29
  pluginCatalogRuntime
30
- } from "../chunk-LR2SKL5Y.js";
31
- import "../chunk-OXE5ZUTS.js";
32
- import "../chunk-C4MZ3GP5.js";
33
- import "../chunk-36UJA3OD.js";
34
- import "../chunk-42WRQLJ6.js";
30
+ } from "../chunk-6FKLPVF3.js";
31
+ import "../chunk-EW5MLKT5.js";
32
+ import "../chunk-W3U3YQYI.js";
33
+ import "../chunk-HZF5P5UN.js";
34
+ import "../chunk-NVUQSFWX.js";
35
+ import "../chunk-OB42YVAE.js";
36
+ import "../chunk-F3B2YJ76.js";
35
37
  import "../chunk-6GWA276C.js";
36
38
  import "../chunk-B3IT5END.js";
37
39
  import "../chunk-3V7OFJZC.js";
38
- import "../chunk-NP7TYFYR.js";
39
- import "../chunk-ZRSUCJGA.js";
40
+ import "../chunk-TVE25LPW.js";
41
+ import "../chunk-FHC4JUSF.js";
40
42
  import "../chunk-MLKGABMK.js";
41
43
 
42
44
  // src/cli/plugins.ts
@@ -1,25 +1,27 @@
1
1
  import {
2
2
  GLOBAL_RUNTIME_DEPENDENCIES,
3
3
  resolveRuntimeDependencySnapshot
4
- } from "../chunk-4VKFQPCW.js";
4
+ } from "../chunk-PVZHG2XZ.js";
5
5
  import {
6
6
  disconnectStateAdapter
7
- } from "../chunk-HMRVILWZ.js";
7
+ } from "../chunk-67CVNDJ7.js";
8
8
  import "../chunk-4ZNGQH7C.js";
9
- import "../chunk-RCBUZGIT.js";
10
- import "../chunk-6Y5L4BOM.js";
9
+ import "../chunk-SYJT7AKB.js";
10
+ import "../chunk-FXOYURO4.js";
11
11
  import {
12
12
  pluginCatalogRuntime
13
- } from "../chunk-LR2SKL5Y.js";
14
- import "../chunk-OXE5ZUTS.js";
15
- import "../chunk-C4MZ3GP5.js";
16
- import "../chunk-36UJA3OD.js";
17
- import "../chunk-42WRQLJ6.js";
13
+ } from "../chunk-6FKLPVF3.js";
14
+ import "../chunk-EW5MLKT5.js";
15
+ import "../chunk-W3U3YQYI.js";
16
+ import "../chunk-HZF5P5UN.js";
17
+ import "../chunk-NVUQSFWX.js";
18
+ import "../chunk-OB42YVAE.js";
19
+ import "../chunk-F3B2YJ76.js";
18
20
  import "../chunk-6GWA276C.js";
19
21
  import "../chunk-B3IT5END.js";
20
22
  import "../chunk-3V7OFJZC.js";
21
- import "../chunk-NP7TYFYR.js";
22
- import "../chunk-ZRSUCJGA.js";
23
+ import "../chunk-TVE25LPW.js";
24
+ import "../chunk-FHC4JUSF.js";
23
25
  import "../chunk-MLKGABMK.js";
24
26
 
25
27
  // src/cli/snapshot-warmup.ts
@@ -11,20 +11,22 @@ import {
11
11
  } from "../chunk-JQFJO5WH.js";
12
12
  import {
13
13
  getChatConfig
14
- } from "../chunk-RCBUZGIT.js";
14
+ } from "../chunk-SYJT7AKB.js";
15
15
  import "../chunk-VFUK3X5B.js";
16
- import "../chunk-6Y5L4BOM.js";
16
+ import "../chunk-FXOYURO4.js";
17
17
  import {
18
18
  createPluginCatalogRuntime
19
- } from "../chunk-OXE5ZUTS.js";
20
- import "../chunk-C4MZ3GP5.js";
21
- import "../chunk-36UJA3OD.js";
22
- import "../chunk-42WRQLJ6.js";
19
+ } from "../chunk-EW5MLKT5.js";
20
+ import "../chunk-W3U3YQYI.js";
21
+ import "../chunk-HZF5P5UN.js";
22
+ import "../chunk-NVUQSFWX.js";
23
+ import "../chunk-OB42YVAE.js";
24
+ import "../chunk-F3B2YJ76.js";
23
25
  import "../chunk-6GWA276C.js";
24
26
  import "../chunk-B3IT5END.js";
25
27
  import "../chunk-3V7OFJZC.js";
26
- import "../chunk-NP7TYFYR.js";
27
- import "../chunk-ZRSUCJGA.js";
28
+ import "../chunk-TVE25LPW.js";
29
+ import "../chunk-FHC4JUSF.js";
28
30
  import "../chunk-MLKGABMK.js";
29
31
 
30
32
  // src/chat/conversations/sql/migrations.ts
@@ -5,16 +5,17 @@ import {
5
5
  getConversationStore,
6
6
  getDb,
7
7
  getSqlExecutor
8
- } from "./chunk-LLKDNPYV.js";
8
+ } from "./chunk-HWCQRGLL.js";
9
9
  import "./chunk-JQFJO5WH.js";
10
- import "./chunk-RCBUZGIT.js";
10
+ import "./chunk-SYJT7AKB.js";
11
11
  import "./chunk-VFUK3X5B.js";
12
- import "./chunk-6Y5L4BOM.js";
13
- import "./chunk-36UJA3OD.js";
14
- import "./chunk-42WRQLJ6.js";
12
+ import "./chunk-FXOYURO4.js";
13
+ import "./chunk-NVUQSFWX.js";
14
+ import "./chunk-OB42YVAE.js";
15
+ import "./chunk-F3B2YJ76.js";
15
16
  import "./chunk-6GWA276C.js";
16
- import "./chunk-NP7TYFYR.js";
17
- import "./chunk-ZRSUCJGA.js";
17
+ import "./chunk-TVE25LPW.js";
18
+ import "./chunk-FHC4JUSF.js";
18
19
  import "./chunk-MLKGABMK.js";
19
20
  export {
20
21
  closeDb,
@@ -0,0 +1,4 @@
1
+ /** Clear command-scoped sandbox egress signals through the loopback dev server. */
2
+ export declare function DELETE(request: Request): Promise<Response>;
3
+ /** Consume command-scoped sandbox egress signals through the loopback dev server. */
4
+ export declare function GET(request: Request): Promise<Response>;
@@ -3,8 +3,9 @@ import {
3
3
  } from "./chunk-UIE3R5XU.js";
4
4
  import {
5
5
  getCurrentConversationPrivacy
6
- } from "./chunk-6Y5L4BOM.js";
7
- import "./chunk-42WRQLJ6.js";
6
+ } from "./chunk-FXOYURO4.js";
7
+ import "./chunk-OB42YVAE.js";
8
+ import "./chunk-F3B2YJ76.js";
8
9
  import {
9
10
  getClient,
10
11
  getGlobalScope,
@@ -15,8 +16,8 @@ import {
15
16
  import {
16
17
  getDeploymentServiceVersion,
17
18
  getDeploymentTelemetryAttributes
18
- } from "./chunk-NP7TYFYR.js";
19
- import "./chunk-ZRSUCJGA.js";
19
+ } from "./chunk-TVE25LPW.js";
20
+ import "./chunk-FHC4JUSF.js";
20
21
  import "./chunk-MLKGABMK.js";
21
22
 
22
23
  // src/chat/sentry-payload-filter.ts
@@ -29,6 +30,69 @@ var PAYLOAD_ATTRIBUTE_KEYS = /* @__PURE__ */ new Set([
29
30
  "gen_ai.tool.call.arguments",
30
31
  "gen_ai.tool.call.result"
31
32
  ]);
33
+ var URL_ATTRIBUTE_KEYS = /* @__PURE__ */ new Set([
34
+ "http.target",
35
+ "http.url",
36
+ "url.full",
37
+ "url.path"
38
+ ]);
39
+ var OAUTH_CALLBACK_PATH = "/api/oauth/callback/";
40
+ var LOCAL_CREDENTIAL_PATH = "/api/internal/local-oauth-credentials";
41
+ var SECRET_HEADER_NAMES = /* @__PURE__ */ new Set([
42
+ "x-junior-local-credential-signature",
43
+ "x-junior-sandbox-egress-token"
44
+ ]);
45
+ function stripQuery(value) {
46
+ const queryIndex = value.indexOf("?");
47
+ return queryIndex >= 0 ? value.slice(0, queryIndex) : value;
48
+ }
49
+ function isSecretHeaderAttribute(key) {
50
+ const normalized = key.toLowerCase().replace(/[^a-z0-9]/g, "");
51
+ return normalized.endsWith("xjuniorlocalcredentialsignature") || normalized.endsWith("xjuniorsandboxegresstoken");
52
+ }
53
+ function scrubSensitiveUrlAttributes(attributes) {
54
+ if (!attributes) {
55
+ return;
56
+ }
57
+ delete attributes["url.query"];
58
+ const hasLocalCredentialUrl = [...URL_ATTRIBUTE_KEYS].some((key) => {
59
+ const value = attributes[key];
60
+ return typeof value === "string" && value.includes(LOCAL_CREDENTIAL_PATH);
61
+ });
62
+ for (const key of Object.keys(attributes)) {
63
+ if (isSecretHeaderAttribute(key) || hasLocalCredentialUrl && key === "http.request.body.data") {
64
+ delete attributes[key];
65
+ }
66
+ }
67
+ for (const key of URL_ATTRIBUTE_KEYS) {
68
+ const value = attributes[key];
69
+ if (typeof value !== "string" || !value.includes(OAUTH_CALLBACK_PATH)) {
70
+ continue;
71
+ }
72
+ attributes[key] = stripQuery(value);
73
+ }
74
+ }
75
+ function scrubSensitiveRequest(request) {
76
+ if (!request) {
77
+ return;
78
+ }
79
+ const url = request.url;
80
+ if (url?.includes(OAUTH_CALLBACK_PATH)) {
81
+ request.url = stripQuery(url);
82
+ delete request.query_string;
83
+ }
84
+ if (url?.includes(LOCAL_CREDENTIAL_PATH)) {
85
+ delete request.data;
86
+ }
87
+ if (!request.headers) {
88
+ return;
89
+ }
90
+ for (const key of Object.keys(request.headers)) {
91
+ if (SECRET_HEADER_NAMES.has(key.toLowerCase())) {
92
+ delete request.headers[key];
93
+ }
94
+ }
95
+ }
32
96
  function hasPayloadAttributes(attributes) {
33
97
  return Object.keys(attributes).some((key) => PAYLOAD_ATTRIBUTE_KEYS.has(key));
34
98
  }
@@ -66,10 +130,13 @@ function scrubContainer(container) {
66
130
  }
67
131
  scrubPayloadAttributes(container.data);
68
132
  scrubPayloadAttributes(container.attributes);
133
+ scrubSensitiveUrlAttributes(container.data);
134
+ scrubSensitiveUrlAttributes(container.attributes);
69
135
  }
70
136
  function scrubPrivateSentryEvent(event) {
71
137
  const eventRecord = event;
72
138
  scrubContainer(eventRecord);
139
+ scrubSensitiveRequest(event.request);
73
140
  scrubContainer(event.contexts?.trace);
74
141
  for (const breadcrumb of event.breadcrumbs ?? []) {
75
142
  scrubContainer(breadcrumb);
@@ -79,6 +146,7 @@ function scrubPrivateSentryEvent(event) {
79
146
  function scrubPrivateSentryTransaction(event) {
80
147
  const eventRecord = event;
81
148
  scrubContainer(eventRecord);
149
+ scrubSensitiveRequest(event.request);
82
150
  scrubContainer(event.contexts?.trace);
83
151
  for (const span of event.spans ?? []) {
84
152
  scrubContainer(span);
package/dist/nitro.js CHANGED
@@ -25,8 +25,8 @@ import {
25
25
  JUNIOR_PLUGIN_TASK_CALLBACK_ROUTE,
26
26
  JUNIOR_RETENTION_CRON_SCHEDULE,
27
27
  JUNIOR_RETENTION_ROUTE
28
- } from "./chunk-NP7TYFYR.js";
29
- import "./chunk-ZRSUCJGA.js";
28
+ } from "./chunk-TVE25LPW.js";
29
+ import "./chunk-FHC4JUSF.js";
30
30
  import "./chunk-MLKGABMK.js";
31
31
 
32
32
  // src/nitro.ts