@sentry/junior-plugin-api 0.121.0 → 0.122.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/index.js +20 -0
- package/dist/tools.d.ts +23 -14
- package/package.json +1 -1
- package/src/tools.ts +95 -12
package/dist/index.js
CHANGED
|
@@ -291,6 +291,14 @@ var PluginToolInputError = class extends Error {
|
|
|
291
291
|
this.name = "PluginToolInputError";
|
|
292
292
|
}
|
|
293
293
|
};
|
|
294
|
+
var pluginToolContentSchema = z6.discriminatedUnion("type", [
|
|
295
|
+
z6.object({ type: z6.literal("text"), text: z6.string() }).strict(),
|
|
296
|
+
z6.object({
|
|
297
|
+
type: z6.literal("image"),
|
|
298
|
+
data: z6.string(),
|
|
299
|
+
mimeType: z6.string()
|
|
300
|
+
}).strict()
|
|
301
|
+
]);
|
|
294
302
|
var pluginToolContinuationSchema = z6.object({
|
|
295
303
|
arguments: z6.record(z6.string(), z6.unknown()),
|
|
296
304
|
reason: z6.string().min(1).optional()
|
|
@@ -310,6 +318,9 @@ var pluginToolResultSchema = z6.object({
|
|
|
310
318
|
error: z6.union([pluginToolErrorSchema, z6.string()]).optional()
|
|
311
319
|
}).passthrough();
|
|
312
320
|
var toolApprovalModeSchema = z6.enum(["auto", "review", "approve"]);
|
|
321
|
+
function isPluginToolResultEnvelope(value) {
|
|
322
|
+
return value !== null && typeof value === "object" && Array.isArray(value.content) && "details" in value;
|
|
323
|
+
}
|
|
313
324
|
function formatZodPath(path) {
|
|
314
325
|
return path.length > 0 ? path.map(String).join(".") : "root";
|
|
315
326
|
}
|
|
@@ -362,6 +373,14 @@ function createZodTool(definition, helperName) {
|
|
|
362
373
|
input,
|
|
363
374
|
options
|
|
364
375
|
);
|
|
376
|
+
if (isPluginToolResultEnvelope(result)) {
|
|
377
|
+
return {
|
|
378
|
+
content: z6.array(pluginToolContentSchema).parse(result.content),
|
|
379
|
+
details: outputSchema.parse(
|
|
380
|
+
pluginToolResultSchema.parse(result.details)
|
|
381
|
+
)
|
|
382
|
+
};
|
|
383
|
+
}
|
|
365
384
|
return outputSchema.parse(pluginToolResultSchema.parse(result));
|
|
366
385
|
}
|
|
367
386
|
} : {}
|
|
@@ -609,6 +628,7 @@ export {
|
|
|
609
628
|
pluginRunTranscriptEntrySchema,
|
|
610
629
|
pluginRunTranscriptProvenanceSchema,
|
|
611
630
|
pluginStoredTokensSchema,
|
|
631
|
+
pluginToolContentSchema,
|
|
612
632
|
pluginToolContinuationSchema,
|
|
613
633
|
pluginToolErrorSchema,
|
|
614
634
|
pluginToolResultSchema,
|
package/dist/tools.d.ts
CHANGED
|
@@ -53,14 +53,22 @@ export interface PluginEgress {
|
|
|
53
53
|
request: Request;
|
|
54
54
|
}): Promise<Response>;
|
|
55
55
|
}
|
|
56
|
-
export
|
|
57
|
-
type: "text"
|
|
58
|
-
text:
|
|
59
|
-
}
|
|
60
|
-
type: "image"
|
|
61
|
-
data:
|
|
62
|
-
mimeType:
|
|
63
|
-
}
|
|
56
|
+
export declare const pluginToolContentSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
57
|
+
type: z.ZodLiteral<"text">;
|
|
58
|
+
text: z.ZodString;
|
|
59
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
60
|
+
type: z.ZodLiteral<"image">;
|
|
61
|
+
data: z.ZodString;
|
|
62
|
+
mimeType: z.ZodString;
|
|
63
|
+
}, z.core.$strict>], "type">;
|
|
64
|
+
/** Model-visible content returned by a plugin tool. */
|
|
65
|
+
export type PluginToolContent = z.output<typeof pluginToolContentSchema>;
|
|
66
|
+
/** Standard tool result envelope with separate model content and runtime details. */
|
|
67
|
+
export interface PluginToolResultEnvelope<TDetails = PluginToolResult> {
|
|
68
|
+
content: PluginToolContent[];
|
|
69
|
+
details: TDetails;
|
|
70
|
+
}
|
|
71
|
+
export type PluginMcpContent = PluginToolContent;
|
|
64
72
|
/** Successful raw provider result returned to a plugin-owned wrapper tool. */
|
|
65
73
|
export type PluginMcpToolSuccess = {
|
|
66
74
|
content: PluginMcpContent[];
|
|
@@ -206,7 +214,7 @@ export interface ToolApprovalMetadata<TInput = unknown> {
|
|
|
206
214
|
*/
|
|
207
215
|
describeProposal?(input: TInput): string;
|
|
208
216
|
}
|
|
209
|
-
export interface PluginToolDefinition<TInput = unknown, TOutput = unknown> extends ToolApprovalMetadata<TInput> {
|
|
217
|
+
export interface PluginToolDefinition<TInput = unknown, TOutput = unknown, TExecuteOutput = TOutput> extends ToolApprovalMetadata<TInput> {
|
|
210
218
|
description: string;
|
|
211
219
|
executionMode?: unknown;
|
|
212
220
|
inputSchema: unknown;
|
|
@@ -229,18 +237,19 @@ export interface PluginToolDefinition<TInput = unknown, TOutput = unknown> exten
|
|
|
229
237
|
* future major version.
|
|
230
238
|
*/
|
|
231
239
|
promptSnippet?: string;
|
|
232
|
-
execute?: PluginToolExecute<TInput,
|
|
240
|
+
execute?: PluginToolExecute<TInput, TExecuteOutput>;
|
|
233
241
|
}
|
|
234
|
-
type ZodPluginToolDefinition<TInputSchema extends ZodTypeAny, TOutputSchema extends ZodType<PluginToolResult
|
|
242
|
+
type ZodPluginToolDefinition<TInputSchema extends ZodTypeAny, TOutputSchema extends ZodType<PluginToolResult>, TExecuteResult extends z.input<TOutputSchema> | PluginToolResultEnvelope<z.input<TOutputSchema>>> = Omit<PluginToolDefinition<z.output<TInputSchema>, z.output<TOutputSchema>>, "inputSchema" | "outputSchema" | "prepareArguments" | "execute"> & {
|
|
235
243
|
inputSchema: TInputSchema;
|
|
236
244
|
outputSchema: TOutputSchema;
|
|
237
245
|
prepareArguments?: (args: unknown) => z.input<TInputSchema>;
|
|
238
|
-
execute?: (input: z.output<TInputSchema>, options: PluginToolExecuteOptions) => Promise<
|
|
246
|
+
execute?: (input: z.output<TInputSchema>, options: PluginToolExecuteOptions) => Promise<TExecuteResult> | TExecuteResult;
|
|
239
247
|
};
|
|
248
|
+
type ParsedPluginToolExecuteResult<TOutputSchema extends ZodTypeAny, TResult> = TResult extends PluginToolResultEnvelope<unknown> ? PluginToolResultEnvelope<z.output<TOutputSchema>> : z.output<TOutputSchema>;
|
|
240
249
|
/** Define a plugin tool with Zod input parsing and validated structured results. */
|
|
241
|
-
export declare function zodTool<TInputSchema extends ZodTypeAny, TOutputSchema extends ZodType<PluginToolResult
|
|
250
|
+
export declare function zodTool<TInputSchema extends ZodTypeAny, TOutputSchema extends ZodType<PluginToolResult>, TExecuteResult extends z.input<TOutputSchema> | PluginToolResultEnvelope<z.input<TOutputSchema>>>(definition: ZodPluginToolDefinition<TInputSchema, TOutputSchema, TExecuteResult>): PluginToolDefinition<z.output<TInputSchema>, z.output<TOutputSchema>, ParsedPluginToolExecuteResult<TOutputSchema, TExecuteResult>>;
|
|
242
251
|
/** Define a plugin tool with Zod input parsing and the structured result contract. */
|
|
243
|
-
export declare function definePluginTool<TInputSchema extends ZodTypeAny, TOutputSchema extends ZodType<PluginToolResult
|
|
252
|
+
export declare function definePluginTool<TInputSchema extends ZodTypeAny, TOutputSchema extends ZodType<PluginToolResult>, TExecuteResult extends z.input<TOutputSchema> | PluginToolResultEnvelope<z.input<TOutputSchema>>>(definition: ZodPluginToolDefinition<TInputSchema, TOutputSchema, TExecuteResult>): PluginToolDefinition<z.output<TInputSchema>, z.output<TOutputSchema>, ParsedPluginToolExecuteResult<TOutputSchema, TExecuteResult>>;
|
|
244
253
|
export interface SlackToolRegistrationHookContext {
|
|
245
254
|
/**
|
|
246
255
|
* Capabilities of the source Slack conversation exposed to this plugin.
|
package/package.json
CHANGED
package/src/tools.ts
CHANGED
|
@@ -67,9 +67,27 @@ export interface PluginEgress {
|
|
|
67
67
|
}): Promise<Response>;
|
|
68
68
|
}
|
|
69
69
|
|
|
70
|
-
export
|
|
71
|
-
|
|
72
|
-
|
|
70
|
+
export const pluginToolContentSchema = z.discriminatedUnion("type", [
|
|
71
|
+
z.object({ type: z.literal("text"), text: z.string() }).strict(),
|
|
72
|
+
z
|
|
73
|
+
.object({
|
|
74
|
+
type: z.literal("image"),
|
|
75
|
+
data: z.string(),
|
|
76
|
+
mimeType: z.string(),
|
|
77
|
+
})
|
|
78
|
+
.strict(),
|
|
79
|
+
]);
|
|
80
|
+
|
|
81
|
+
/** Model-visible content returned by a plugin tool. */
|
|
82
|
+
export type PluginToolContent = z.output<typeof pluginToolContentSchema>;
|
|
83
|
+
|
|
84
|
+
/** Standard tool result envelope with separate model content and runtime details. */
|
|
85
|
+
export interface PluginToolResultEnvelope<TDetails = PluginToolResult> {
|
|
86
|
+
content: PluginToolContent[];
|
|
87
|
+
details: TDetails;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export type PluginMcpContent = PluginToolContent;
|
|
73
91
|
|
|
74
92
|
/** Successful raw provider result returned to a plugin-owned wrapper tool. */
|
|
75
93
|
export type PluginMcpToolSuccess = {
|
|
@@ -234,6 +252,7 @@ export interface ToolApprovalMetadata<TInput = unknown> {
|
|
|
234
252
|
export interface PluginToolDefinition<
|
|
235
253
|
TInput = unknown,
|
|
236
254
|
TOutput = unknown,
|
|
255
|
+
TExecuteOutput = TOutput,
|
|
237
256
|
> extends ToolApprovalMetadata<TInput> {
|
|
238
257
|
description: string;
|
|
239
258
|
executionMode?: unknown;
|
|
@@ -257,12 +276,15 @@ export interface PluginToolDefinition<
|
|
|
257
276
|
* future major version.
|
|
258
277
|
*/
|
|
259
278
|
promptSnippet?: string;
|
|
260
|
-
execute?: PluginToolExecute<TInput,
|
|
279
|
+
execute?: PluginToolExecute<TInput, TExecuteOutput>;
|
|
261
280
|
}
|
|
262
281
|
|
|
263
282
|
type ZodPluginToolDefinition<
|
|
264
283
|
TInputSchema extends ZodTypeAny,
|
|
265
284
|
TOutputSchema extends ZodType<PluginToolResult>,
|
|
285
|
+
TExecuteResult extends
|
|
286
|
+
| z.input<TOutputSchema>
|
|
287
|
+
| PluginToolResultEnvelope<z.input<TOutputSchema>>,
|
|
266
288
|
> = Omit<
|
|
267
289
|
PluginToolDefinition<z.output<TInputSchema>, z.output<TOutputSchema>>,
|
|
268
290
|
"inputSchema" | "outputSchema" | "prepareArguments" | "execute"
|
|
@@ -273,9 +295,25 @@ type ZodPluginToolDefinition<
|
|
|
273
295
|
execute?: (
|
|
274
296
|
input: z.output<TInputSchema>,
|
|
275
297
|
options: PluginToolExecuteOptions,
|
|
276
|
-
) => Promise<
|
|
298
|
+
) => Promise<TExecuteResult> | TExecuteResult;
|
|
277
299
|
};
|
|
278
300
|
|
|
301
|
+
type ParsedPluginToolExecuteResult<TOutputSchema extends ZodTypeAny, TResult> =
|
|
302
|
+
TResult extends PluginToolResultEnvelope<unknown>
|
|
303
|
+
? PluginToolResultEnvelope<z.output<TOutputSchema>>
|
|
304
|
+
: z.output<TOutputSchema>;
|
|
305
|
+
|
|
306
|
+
function isPluginToolResultEnvelope(
|
|
307
|
+
value: unknown,
|
|
308
|
+
): value is PluginToolResultEnvelope<unknown> {
|
|
309
|
+
return (
|
|
310
|
+
value !== null &&
|
|
311
|
+
typeof value === "object" &&
|
|
312
|
+
Array.isArray((value as { content?: unknown }).content) &&
|
|
313
|
+
"details" in value
|
|
314
|
+
);
|
|
315
|
+
}
|
|
316
|
+
|
|
279
317
|
function formatZodPath(path: readonly PropertyKey[]): string {
|
|
280
318
|
return path.length > 0 ? path.map(String).join(".") : "root";
|
|
281
319
|
}
|
|
@@ -304,10 +342,21 @@ function parsePluginToolInput<TInputSchema extends ZodTypeAny>(
|
|
|
304
342
|
function createZodTool<
|
|
305
343
|
TInputSchema extends ZodTypeAny,
|
|
306
344
|
TOutputSchema extends ZodType<PluginToolResult>,
|
|
345
|
+
TExecuteResult extends
|
|
346
|
+
| z.input<TOutputSchema>
|
|
347
|
+
| PluginToolResultEnvelope<z.input<TOutputSchema>>,
|
|
307
348
|
>(
|
|
308
|
-
definition: ZodPluginToolDefinition<
|
|
349
|
+
definition: ZodPluginToolDefinition<
|
|
350
|
+
TInputSchema,
|
|
351
|
+
TOutputSchema,
|
|
352
|
+
TExecuteResult
|
|
353
|
+
>,
|
|
309
354
|
helperName: "definePluginTool" | "zodTool",
|
|
310
|
-
): PluginToolDefinition<
|
|
355
|
+
): PluginToolDefinition<
|
|
356
|
+
z.output<TInputSchema>,
|
|
357
|
+
z.output<TOutputSchema>,
|
|
358
|
+
ParsedPluginToolExecuteResult<TOutputSchema, TExecuteResult>
|
|
359
|
+
> {
|
|
311
360
|
const { inputSchema, outputSchema, prepareArguments, execute, ...tool } =
|
|
312
361
|
definition;
|
|
313
362
|
let modelInputSchema: unknown;
|
|
@@ -345,20 +394,43 @@ function createZodTool<
|
|
|
345
394
|
input as z.output<TInputSchema>,
|
|
346
395
|
options,
|
|
347
396
|
);
|
|
397
|
+
if (isPluginToolResultEnvelope(result)) {
|
|
398
|
+
return {
|
|
399
|
+
content: z.array(pluginToolContentSchema).parse(result.content),
|
|
400
|
+
details: outputSchema.parse(
|
|
401
|
+
pluginToolResultSchema.parse(result.details),
|
|
402
|
+
),
|
|
403
|
+
};
|
|
404
|
+
}
|
|
348
405
|
return outputSchema.parse(pluginToolResultSchema.parse(result));
|
|
349
406
|
},
|
|
350
407
|
}
|
|
351
408
|
: {}),
|
|
352
|
-
}
|
|
409
|
+
} as PluginToolDefinition<
|
|
410
|
+
z.output<TInputSchema>,
|
|
411
|
+
z.output<TOutputSchema>,
|
|
412
|
+
ParsedPluginToolExecuteResult<TOutputSchema, TExecuteResult>
|
|
413
|
+
>;
|
|
353
414
|
}
|
|
354
415
|
|
|
355
416
|
/** Define a plugin tool with Zod input parsing and validated structured results. */
|
|
356
417
|
export function zodTool<
|
|
357
418
|
TInputSchema extends ZodTypeAny,
|
|
358
419
|
TOutputSchema extends ZodType<PluginToolResult>,
|
|
420
|
+
TExecuteResult extends
|
|
421
|
+
| z.input<TOutputSchema>
|
|
422
|
+
| PluginToolResultEnvelope<z.input<TOutputSchema>>,
|
|
359
423
|
>(
|
|
360
|
-
definition: ZodPluginToolDefinition<
|
|
361
|
-
|
|
424
|
+
definition: ZodPluginToolDefinition<
|
|
425
|
+
TInputSchema,
|
|
426
|
+
TOutputSchema,
|
|
427
|
+
TExecuteResult
|
|
428
|
+
>,
|
|
429
|
+
): PluginToolDefinition<
|
|
430
|
+
z.output<TInputSchema>,
|
|
431
|
+
z.output<TOutputSchema>,
|
|
432
|
+
ParsedPluginToolExecuteResult<TOutputSchema, TExecuteResult>
|
|
433
|
+
> {
|
|
362
434
|
return createZodTool(definition, "zodTool");
|
|
363
435
|
}
|
|
364
436
|
|
|
@@ -366,9 +438,20 @@ export function zodTool<
|
|
|
366
438
|
export function definePluginTool<
|
|
367
439
|
TInputSchema extends ZodTypeAny,
|
|
368
440
|
TOutputSchema extends ZodType<PluginToolResult>,
|
|
441
|
+
TExecuteResult extends
|
|
442
|
+
| z.input<TOutputSchema>
|
|
443
|
+
| PluginToolResultEnvelope<z.input<TOutputSchema>>,
|
|
369
444
|
>(
|
|
370
|
-
definition: ZodPluginToolDefinition<
|
|
371
|
-
|
|
445
|
+
definition: ZodPluginToolDefinition<
|
|
446
|
+
TInputSchema,
|
|
447
|
+
TOutputSchema,
|
|
448
|
+
TExecuteResult
|
|
449
|
+
>,
|
|
450
|
+
): PluginToolDefinition<
|
|
451
|
+
z.output<TInputSchema>,
|
|
452
|
+
z.output<TOutputSchema>,
|
|
453
|
+
ParsedPluginToolExecuteResult<TOutputSchema, TExecuteResult>
|
|
454
|
+
> {
|
|
372
455
|
return createZodTool(definition, "definePluginTool");
|
|
373
456
|
}
|
|
374
457
|
|