@runpod/mcp-server 4.6.0 → 4.7.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/CHANGELOG.md +30 -0
- package/README.md +3 -1
- package/dist/{chunk-4GF3CMSH.mjs → chunk-5IFIMVI6.mjs} +2 -2
- package/dist/{chunk-4GF3CMSH.mjs.map → chunk-5IFIMVI6.mjs.map} +1 -1
- package/dist/http.cjs +335 -220
- package/dist/http.cjs.map +1 -1
- package/dist/http.mjs +335 -220
- package/dist/http.mjs.map +1 -1
- package/dist/stdio.cjs +336 -221
- package/dist/stdio.cjs.map +1 -1
- package/dist/stdio.mjs +337 -222
- package/dist/stdio.mjs.map +1 -1
- package/dist/{wizard-KKTBTVXE.mjs → wizard-NVV3UNOG.mjs} +2 -2
- package/package.json +5 -3
- /package/dist/{wizard-KKTBTVXE.mjs.map → wizard-NVV3UNOG.mjs.map} +0 -0
package/dist/http.mjs
CHANGED
|
@@ -480,7 +480,7 @@ var generatedTools = [
|
|
|
480
480
|
description: "Environment variables as key-value pairs",
|
|
481
481
|
examples: [
|
|
482
482
|
{
|
|
483
|
-
JUPYTER_PASSWORD: "
|
|
483
|
+
JUPYTER_PASSWORD: "changeme"
|
|
484
484
|
}
|
|
485
485
|
]
|
|
486
486
|
},
|
|
@@ -683,7 +683,7 @@ var generatedTools = [
|
|
|
683
683
|
type: "string",
|
|
684
684
|
description: "ECR resource ARN",
|
|
685
685
|
examples: [
|
|
686
|
-
"arn:aws:ecr:us-east-2:
|
|
686
|
+
"arn:aws:ecr:us-east-2:123456789012:repository/runpod/deployment"
|
|
687
687
|
]
|
|
688
688
|
},
|
|
689
689
|
name: {
|
|
@@ -767,7 +767,7 @@ var generatedTools = [
|
|
|
767
767
|
description: "Environment variables as key-value pairs",
|
|
768
768
|
examples: [
|
|
769
769
|
{
|
|
770
|
-
JUPYTER_PASSWORD: "
|
|
770
|
+
JUPYTER_PASSWORD: "changeme"
|
|
771
771
|
}
|
|
772
772
|
]
|
|
773
773
|
},
|
|
@@ -1018,7 +1018,7 @@ var generatedTools = [
|
|
|
1018
1018
|
type: "object",
|
|
1019
1019
|
required: ["volumeId"],
|
|
1020
1020
|
additionalProperties: false,
|
|
1021
|
-
description: "A volume mounted on every worker, always at `/runpod-volume`.
|
|
1021
|
+
description: "A volume mounted on every worker, always at `/runpod-volume`.",
|
|
1022
1022
|
properties: {
|
|
1023
1023
|
volumeId: {
|
|
1024
1024
|
type: "string",
|
|
@@ -1068,8 +1068,7 @@ var generatedTools = [
|
|
|
1068
1068
|
},
|
|
1069
1069
|
EndpointType: {
|
|
1070
1070
|
type: "string",
|
|
1071
|
-
description: "Request-routing semantics for a
|
|
1072
|
-
"x-enum-varnames": ["EndpointTypeQueue", "EndpointTypeLoadBalancer"],
|
|
1071
|
+
description: "Request-routing semantics for a serverless endpoint. `QUEUE` \u2014 submit asynchronous or synchronous jobs through the managed queue. `LOAD_BALANCER` \u2014 send requests directly to worker-defined HTTP paths.",
|
|
1073
1072
|
enum: ["QUEUE", "LOAD_BALANCER"]
|
|
1074
1073
|
},
|
|
1075
1074
|
EndpointWorkers: {
|
|
@@ -1178,7 +1177,6 @@ var generatedTools = [
|
|
|
1178
1177
|
type: "string",
|
|
1179
1178
|
minLength: 1,
|
|
1180
1179
|
maxLength: 191,
|
|
1181
|
-
pattern: "[^\\p{Z}\\t-\\r\x85]",
|
|
1182
1180
|
description: "Human-readable name, 1\u2013191 characters with at least one non-whitespace character. Leading and trailing whitespace is trimmed.",
|
|
1183
1181
|
examples: ["training-data"]
|
|
1184
1182
|
}
|
|
@@ -1325,7 +1323,7 @@ var generatedTools = [
|
|
|
1325
1323
|
description: "Environment variables as key-value pairs",
|
|
1326
1324
|
examples: [
|
|
1327
1325
|
{
|
|
1328
|
-
JUPYTER_PASSWORD: "
|
|
1326
|
+
JUPYTER_PASSWORD: "changeme"
|
|
1329
1327
|
}
|
|
1330
1328
|
]
|
|
1331
1329
|
},
|
|
@@ -1474,7 +1472,7 @@ var generatedTools = [
|
|
|
1474
1472
|
{
|
|
1475
1473
|
type: "object",
|
|
1476
1474
|
required: ["name"],
|
|
1477
|
-
description: "Request body for creating a pod. Exactly one of `gpu` or `cpu` must be set
|
|
1475
|
+
description: "Request body for creating a pod. Exactly one of `gpu` or `cpu` must be set. For CPU pods, memory is derived by the API from the selected flavor's RAM multiplier; clients provide only CPU flavor and vCPU count.",
|
|
1478
1476
|
properties: {
|
|
1479
1477
|
name: {
|
|
1480
1478
|
type: "string",
|
|
@@ -1504,7 +1502,7 @@ var generatedTools = [
|
|
|
1504
1502
|
globalNetworking: {
|
|
1505
1503
|
type: "boolean",
|
|
1506
1504
|
default: false,
|
|
1507
|
-
description: "Enable global networking, giving the pod a private IP reachable across data centers. Requires an NVIDIA GPU and a global-networking-enabled data center (
|
|
1505
|
+
description: "Enable global networking, giving the pod a private IP reachable across data centers. Requires an NVIDIA GPU and a global-networking-enabled data center. See `list-data-centers` (`globalNetwork`) for eligible data centers.",
|
|
1508
1506
|
examples: [false]
|
|
1509
1507
|
},
|
|
1510
1508
|
gpu: {
|
|
@@ -1803,7 +1801,7 @@ var generatedTools = [
|
|
|
1803
1801
|
description: "Environment variables as key-value pairs",
|
|
1804
1802
|
examples: [
|
|
1805
1803
|
{
|
|
1806
|
-
JUPYTER_PASSWORD: "
|
|
1804
|
+
JUPYTER_PASSWORD: "changeme"
|
|
1807
1805
|
}
|
|
1808
1806
|
]
|
|
1809
1807
|
},
|
|
@@ -2264,7 +2262,7 @@ var generatedTools = [
|
|
|
2264
2262
|
items: {
|
|
2265
2263
|
$ref: "#/$defs/CatalogInclude"
|
|
2266
2264
|
},
|
|
2267
|
-
description: "Comma-separated optional expansions
|
|
2265
|
+
description: "Comma-separated optional expansions; see `CatalogInclude` for the supported values."
|
|
2268
2266
|
},
|
|
2269
2267
|
product: {
|
|
2270
2268
|
type: "array",
|
|
@@ -2284,7 +2282,7 @@ var generatedTools = [
|
|
|
2284
2282
|
$defs: {
|
|
2285
2283
|
CatalogInclude: {
|
|
2286
2284
|
type: "string",
|
|
2287
|
-
description: "Catalog include expansion.
|
|
2285
|
+
description: "Catalog include expansion. `AVAILABILITY` is the only supported value.",
|
|
2288
2286
|
enum: ["AVAILABILITY"]
|
|
2289
2287
|
},
|
|
2290
2288
|
CpuProduct: {
|
|
@@ -2510,7 +2508,7 @@ var generatedTools = [
|
|
|
2510
2508
|
items: {
|
|
2511
2509
|
$ref: "#/$defs/CatalogInclude"
|
|
2512
2510
|
},
|
|
2513
|
-
description: "Comma-separated optional expansions
|
|
2511
|
+
description: "Comma-separated optional expansions; see `CatalogInclude` for the supported values."
|
|
2514
2512
|
},
|
|
2515
2513
|
product: {
|
|
2516
2514
|
type: "array",
|
|
@@ -2556,7 +2554,7 @@ var generatedTools = [
|
|
|
2556
2554
|
$defs: {
|
|
2557
2555
|
CatalogInclude: {
|
|
2558
2556
|
type: "string",
|
|
2559
|
-
description: "Catalog include expansion.
|
|
2557
|
+
description: "Catalog include expansion. `AVAILABILITY` is the only supported value.",
|
|
2560
2558
|
enum: ["AVAILABILITY"]
|
|
2561
2559
|
},
|
|
2562
2560
|
GpuCloudFilter: {
|
|
@@ -2765,6 +2763,99 @@ var generatedTools = [
|
|
|
2765
2763
|
required: ["id"]
|
|
2766
2764
|
}
|
|
2767
2765
|
},
|
|
2766
|
+
{
|
|
2767
|
+
name: "list-audit-logs",
|
|
2768
|
+
title: "List audit logs",
|
|
2769
|
+
operationId: "listAuditLogs",
|
|
2770
|
+
description: "List audit logs. Returns the account's audit trail, newest first, cursor-paginated; an omitted `limit` defaults to 200. Each entry records who acted (`actorId`, `email`), what they did (`action`), to which resource (`resourceType`, `resourceId`), and the details of the change (`value`). When the caller belongs to an organization the trail is the organization's, and `actorIds` narrows it to specific members; otherwise it is the trail of the account the request acts for. Filters combine with AND. Entries older than the account's audit log retention window are not returned, and an account whose plan does not include audit logs is answered 403. Follow `pagination.nextCursor` until `hasNextPage` is false.",
|
|
2771
|
+
directoryDescription: "List the account's audit trail, newest first. Results are cursor-paginated and record the actor, action, resource, timestamp, and change details. Filters include actor IDs, actions, time range, and text search. The account's retention window and plan determine which entries are available.",
|
|
2772
|
+
method: "GET",
|
|
2773
|
+
path: "/v2/audit-logs",
|
|
2774
|
+
params: [
|
|
2775
|
+
{
|
|
2776
|
+
name: "actorIds",
|
|
2777
|
+
location: "query",
|
|
2778
|
+
explode: false
|
|
2779
|
+
},
|
|
2780
|
+
{
|
|
2781
|
+
name: "actions",
|
|
2782
|
+
location: "query",
|
|
2783
|
+
explode: false
|
|
2784
|
+
},
|
|
2785
|
+
{
|
|
2786
|
+
name: "startTime",
|
|
2787
|
+
location: "query"
|
|
2788
|
+
},
|
|
2789
|
+
{
|
|
2790
|
+
name: "endTime",
|
|
2791
|
+
location: "query"
|
|
2792
|
+
},
|
|
2793
|
+
{
|
|
2794
|
+
name: "search",
|
|
2795
|
+
location: "query"
|
|
2796
|
+
},
|
|
2797
|
+
{
|
|
2798
|
+
name: "cursor",
|
|
2799
|
+
location: "query"
|
|
2800
|
+
},
|
|
2801
|
+
{
|
|
2802
|
+
name: "limit",
|
|
2803
|
+
location: "query"
|
|
2804
|
+
}
|
|
2805
|
+
],
|
|
2806
|
+
hasBody: false,
|
|
2807
|
+
annotations: {
|
|
2808
|
+
readOnlyHint: true,
|
|
2809
|
+
destructiveHint: false,
|
|
2810
|
+
idempotentHint: true,
|
|
2811
|
+
openWorldHint: true
|
|
2812
|
+
},
|
|
2813
|
+
inputSchema: {
|
|
2814
|
+
type: "object",
|
|
2815
|
+
properties: {
|
|
2816
|
+
actorIds: {
|
|
2817
|
+
type: "array",
|
|
2818
|
+
items: {
|
|
2819
|
+
type: "string"
|
|
2820
|
+
},
|
|
2821
|
+
description: "Only return entries performed by these users. Comma-separated user IDs. Available to organization accounts only; a personal or team account is answered 400."
|
|
2822
|
+
},
|
|
2823
|
+
actions: {
|
|
2824
|
+
type: "array",
|
|
2825
|
+
items: {
|
|
2826
|
+
type: "string"
|
|
2827
|
+
},
|
|
2828
|
+
description: "Only return entries whose `action` is one of these names, matched exactly as recorded. Comma-separated."
|
|
2829
|
+
},
|
|
2830
|
+
startTime: {
|
|
2831
|
+
type: "string",
|
|
2832
|
+
format: "date-time",
|
|
2833
|
+
description: "Earliest instant to include, inclusive (RFC 3339). The account's audit log retention window still applies: entries that have aged out are not returned even when this reaches further back."
|
|
2834
|
+
},
|
|
2835
|
+
endTime: {
|
|
2836
|
+
type: "string",
|
|
2837
|
+
format: "date-time",
|
|
2838
|
+
description: "Latest instant to include, inclusive (RFC 3339). Must be after `startTime` when both are given; 400 otherwise."
|
|
2839
|
+
},
|
|
2840
|
+
search: {
|
|
2841
|
+
type: "string",
|
|
2842
|
+
minLength: 1,
|
|
2843
|
+
description: "Case-insensitive substring match against `email`, `resourceType`, `resourceId`, `action` and `value`; `actorId` is not searched. Surrounding whitespace is ignored."
|
|
2844
|
+
},
|
|
2845
|
+
cursor: {
|
|
2846
|
+
type: "string",
|
|
2847
|
+
minLength: 1,
|
|
2848
|
+
description: "Opaque resume cursor \u2014 pass the previous response's `pagination.nextCursor` through verbatim; omit for the first page. A cursor is only valid for the operation and parameters that issued it; a malformed or foreign cursor is rejected."
|
|
2849
|
+
},
|
|
2850
|
+
limit: {
|
|
2851
|
+
type: "integer",
|
|
2852
|
+
minimum: 1,
|
|
2853
|
+
maximum: 200,
|
|
2854
|
+
description: "Page size, 1\u2013200. Defaults to 200 when omitted."
|
|
2855
|
+
}
|
|
2856
|
+
}
|
|
2857
|
+
}
|
|
2858
|
+
},
|
|
2768
2859
|
{
|
|
2769
2860
|
name: "list-billing",
|
|
2770
2861
|
title: "List billing",
|
|
@@ -2825,13 +2916,6 @@ var generatedTools = [
|
|
|
2825
2916
|
BillingBucketSize: {
|
|
2826
2917
|
type: "string",
|
|
2827
2918
|
enum: ["hour", "day", "week", "month", "year"],
|
|
2828
|
-
"x-enum-varnames": [
|
|
2829
|
-
"BillingBucketSizeHour",
|
|
2830
|
-
"BillingBucketSizeDay",
|
|
2831
|
-
"BillingBucketSizeWeek",
|
|
2832
|
-
"BillingBucketSizeMonth",
|
|
2833
|
-
"BillingBucketSizeYear"
|
|
2834
|
-
],
|
|
2835
2919
|
default: "day",
|
|
2836
2920
|
description: "Length of each billing time bucket.",
|
|
2837
2921
|
examples: ["day"]
|
|
@@ -2907,13 +2991,6 @@ var generatedTools = [
|
|
|
2907
2991
|
BillingBucketSize: {
|
|
2908
2992
|
type: "string",
|
|
2909
2993
|
enum: ["hour", "day", "week", "month", "year"],
|
|
2910
|
-
"x-enum-varnames": [
|
|
2911
|
-
"BillingBucketSizeHour",
|
|
2912
|
-
"BillingBucketSizeDay",
|
|
2913
|
-
"BillingBucketSizeWeek",
|
|
2914
|
-
"BillingBucketSizeMonth",
|
|
2915
|
-
"BillingBucketSizeYear"
|
|
2916
|
-
],
|
|
2917
2994
|
default: "day",
|
|
2918
2995
|
description: "Length of each billing time bucket.",
|
|
2919
2996
|
examples: ["day"]
|
|
@@ -3032,7 +3109,7 @@ var generatedTools = [
|
|
|
3032
3109
|
items: {
|
|
3033
3110
|
$ref: "#/$defs/CatalogInclude"
|
|
3034
3111
|
},
|
|
3035
|
-
description: "Comma-separated optional expansions
|
|
3112
|
+
description: "Comma-separated optional expansions; see `CatalogInclude` for the supported values."
|
|
3036
3113
|
},
|
|
3037
3114
|
product: {
|
|
3038
3115
|
type: "array",
|
|
@@ -3051,7 +3128,7 @@ var generatedTools = [
|
|
|
3051
3128
|
$defs: {
|
|
3052
3129
|
CatalogInclude: {
|
|
3053
3130
|
type: "string",
|
|
3054
|
-
description: "Catalog include expansion.
|
|
3131
|
+
description: "Catalog include expansion. `AVAILABILITY` is the only supported value.",
|
|
3055
3132
|
enum: ["AVAILABILITY"]
|
|
3056
3133
|
},
|
|
3057
3134
|
CpuProduct: {
|
|
@@ -3270,13 +3347,6 @@ var generatedTools = [
|
|
|
3270
3347
|
BillingBucketSize: {
|
|
3271
3348
|
type: "string",
|
|
3272
3349
|
enum: ["hour", "day", "week", "month", "year"],
|
|
3273
|
-
"x-enum-varnames": [
|
|
3274
|
-
"BillingBucketSizeHour",
|
|
3275
|
-
"BillingBucketSizeDay",
|
|
3276
|
-
"BillingBucketSizeWeek",
|
|
3277
|
-
"BillingBucketSizeMonth",
|
|
3278
|
-
"BillingBucketSizeYear"
|
|
3279
|
-
],
|
|
3280
3350
|
default: "day",
|
|
3281
3351
|
description: "Length of each billing time bucket.",
|
|
3282
3352
|
examples: ["day"]
|
|
@@ -3513,7 +3583,7 @@ var generatedTools = [
|
|
|
3513
3583
|
items: {
|
|
3514
3584
|
$ref: "#/$defs/CatalogInclude"
|
|
3515
3585
|
},
|
|
3516
|
-
description: "Comma-separated optional expansions
|
|
3586
|
+
description: "Comma-separated optional expansions; see `CatalogInclude` for the supported values."
|
|
3517
3587
|
},
|
|
3518
3588
|
product: {
|
|
3519
3589
|
type: "array",
|
|
@@ -3558,7 +3628,7 @@ var generatedTools = [
|
|
|
3558
3628
|
$defs: {
|
|
3559
3629
|
CatalogInclude: {
|
|
3560
3630
|
type: "string",
|
|
3561
|
-
description: "Catalog include expansion.
|
|
3631
|
+
description: "Catalog include expansion. `AVAILABILITY` is the only supported value.",
|
|
3562
3632
|
enum: ["AVAILABILITY"]
|
|
3563
3633
|
},
|
|
3564
3634
|
GpuCloudFilter: {
|
|
@@ -3642,13 +3712,6 @@ var generatedTools = [
|
|
|
3642
3712
|
BillingBucketSize: {
|
|
3643
3713
|
type: "string",
|
|
3644
3714
|
enum: ["hour", "day", "week", "month", "year"],
|
|
3645
|
-
"x-enum-varnames": [
|
|
3646
|
-
"BillingBucketSizeHour",
|
|
3647
|
-
"BillingBucketSizeDay",
|
|
3648
|
-
"BillingBucketSizeWeek",
|
|
3649
|
-
"BillingBucketSizeMonth",
|
|
3650
|
-
"BillingBucketSizeYear"
|
|
3651
|
-
],
|
|
3652
3715
|
default: "day",
|
|
3653
3716
|
description: "Length of each billing time bucket.",
|
|
3654
3717
|
examples: ["day"]
|
|
@@ -3765,13 +3828,6 @@ var generatedTools = [
|
|
|
3765
3828
|
BillingBucketSize: {
|
|
3766
3829
|
type: "string",
|
|
3767
3830
|
enum: ["hour", "day", "week", "month", "year"],
|
|
3768
|
-
"x-enum-varnames": [
|
|
3769
|
-
"BillingBucketSizeHour",
|
|
3770
|
-
"BillingBucketSizeDay",
|
|
3771
|
-
"BillingBucketSizeWeek",
|
|
3772
|
-
"BillingBucketSizeMonth",
|
|
3773
|
-
"BillingBucketSizeYear"
|
|
3774
|
-
],
|
|
3775
3831
|
default: "day",
|
|
3776
3832
|
description: "Length of each billing time bucket.",
|
|
3777
3833
|
examples: ["day"]
|
|
@@ -3980,13 +4036,6 @@ var generatedTools = [
|
|
|
3980
4036
|
BillingBucketSize: {
|
|
3981
4037
|
type: "string",
|
|
3982
4038
|
enum: ["hour", "day", "week", "month", "year"],
|
|
3983
|
-
"x-enum-varnames": [
|
|
3984
|
-
"BillingBucketSizeHour",
|
|
3985
|
-
"BillingBucketSizeDay",
|
|
3986
|
-
"BillingBucketSizeWeek",
|
|
3987
|
-
"BillingBucketSizeMonth",
|
|
3988
|
-
"BillingBucketSizeYear"
|
|
3989
|
-
],
|
|
3990
4039
|
default: "day",
|
|
3991
4040
|
description: "Length of each billing time bucket.",
|
|
3992
4041
|
examples: ["day"]
|
|
@@ -4205,7 +4254,7 @@ var generatedTools = [
|
|
|
4205
4254
|
description: "Environment variables as key-value pairs",
|
|
4206
4255
|
examples: [
|
|
4207
4256
|
{
|
|
4208
|
-
JUPYTER_PASSWORD: "
|
|
4257
|
+
JUPYTER_PASSWORD: "changeme"
|
|
4209
4258
|
}
|
|
4210
4259
|
]
|
|
4211
4260
|
},
|
|
@@ -4302,7 +4351,7 @@ var generatedTools = [
|
|
|
4302
4351
|
type: "object",
|
|
4303
4352
|
required: ["volumeId"],
|
|
4304
4353
|
additionalProperties: false,
|
|
4305
|
-
description: "A volume mounted on every worker, always at `/runpod-volume`.
|
|
4354
|
+
description: "A volume mounted on every worker, always at `/runpod-volume`.",
|
|
4306
4355
|
properties: {
|
|
4307
4356
|
volumeId: {
|
|
4308
4357
|
type: "string",
|
|
@@ -4562,7 +4611,6 @@ var generatedTools = [
|
|
|
4562
4611
|
type: "string",
|
|
4563
4612
|
minLength: 1,
|
|
4564
4613
|
maxLength: 191,
|
|
4565
|
-
pattern: "[^\\p{Z}\\t-\\r\x85]",
|
|
4566
4614
|
description: "New human-readable name, 1\u2013191 characters with at least one non-whitespace character. Leading and trailing whitespace is trimmed.",
|
|
4567
4615
|
examples: ["renamed-volume"]
|
|
4568
4616
|
}
|
|
@@ -4708,7 +4756,7 @@ var generatedTools = [
|
|
|
4708
4756
|
description: "Environment variables as key-value pairs",
|
|
4709
4757
|
examples: [
|
|
4710
4758
|
{
|
|
4711
|
-
JUPYTER_PASSWORD: "
|
|
4759
|
+
JUPYTER_PASSWORD: "changeme"
|
|
4712
4760
|
}
|
|
4713
4761
|
]
|
|
4714
4762
|
},
|
|
@@ -4846,7 +4894,7 @@ var generatedTools = [
|
|
|
4846
4894
|
properties: {
|
|
4847
4895
|
globalNetworking: {
|
|
4848
4896
|
type: "boolean",
|
|
4849
|
-
description: "Enable (true) or disable (false) global networking. Takes effect on the next pod start/restart, not live. Requires an NVIDIA GPU and a global-networking-enabled data center
|
|
4897
|
+
description: "Enable (true) or disable (false) global networking. Takes effect on the next pod start/restart, not live. Requires an NVIDIA GPU and a global-networking-enabled data center."
|
|
4850
4898
|
},
|
|
4851
4899
|
locked: {
|
|
4852
4900
|
type: "boolean",
|
|
@@ -4993,7 +5041,7 @@ var generatedTools = [
|
|
|
4993
5041
|
hasBody: true,
|
|
4994
5042
|
annotations: {
|
|
4995
5043
|
readOnlyHint: false,
|
|
4996
|
-
destructiveHint:
|
|
5044
|
+
destructiveHint: true,
|
|
4997
5045
|
idempotentHint: true,
|
|
4998
5046
|
openWorldHint: true
|
|
4999
5047
|
},
|
|
@@ -5055,7 +5103,7 @@ var generatedTools = [
|
|
|
5055
5103
|
description: "Environment variables as key-value pairs",
|
|
5056
5104
|
examples: [
|
|
5057
5105
|
{
|
|
5058
|
-
JUPYTER_PASSWORD: "
|
|
5106
|
+
JUPYTER_PASSWORD: "changeme"
|
|
5059
5107
|
}
|
|
5060
5108
|
]
|
|
5061
5109
|
},
|
|
@@ -5175,9 +5223,187 @@ var generatedTools = [
|
|
|
5175
5223
|
}
|
|
5176
5224
|
];
|
|
5177
5225
|
|
|
5226
|
+
// src/specgen/tools/annotations.ts
|
|
5227
|
+
var readOnly = {
|
|
5228
|
+
readOnlyHint: true,
|
|
5229
|
+
destructiveHint: false,
|
|
5230
|
+
idempotentHint: true,
|
|
5231
|
+
openWorldHint: true
|
|
5232
|
+
};
|
|
5233
|
+
var bundledRead = {
|
|
5234
|
+
readOnlyHint: true,
|
|
5235
|
+
destructiveHint: false,
|
|
5236
|
+
idempotentHint: true,
|
|
5237
|
+
openWorldHint: false
|
|
5238
|
+
};
|
|
5239
|
+
var write = {
|
|
5240
|
+
readOnlyHint: false,
|
|
5241
|
+
destructiveHint: false,
|
|
5242
|
+
idempotentHint: false,
|
|
5243
|
+
openWorldHint: true
|
|
5244
|
+
};
|
|
5245
|
+
var idempotentWrite = {
|
|
5246
|
+
readOnlyHint: false,
|
|
5247
|
+
destructiveHint: false,
|
|
5248
|
+
idempotentHint: true,
|
|
5249
|
+
openWorldHint: true
|
|
5250
|
+
};
|
|
5251
|
+
var destructive = {
|
|
5252
|
+
readOnlyHint: false,
|
|
5253
|
+
destructiveHint: true,
|
|
5254
|
+
idempotentHint: true,
|
|
5255
|
+
openWorldHint: true
|
|
5256
|
+
};
|
|
5257
|
+
var destructiveWrite = {
|
|
5258
|
+
readOnlyHint: false,
|
|
5259
|
+
destructiveHint: true,
|
|
5260
|
+
idempotentHint: false,
|
|
5261
|
+
openWorldHint: true
|
|
5262
|
+
};
|
|
5263
|
+
|
|
5264
|
+
// src/specgen/clients/http-error.ts
|
|
5265
|
+
var HttpError = class extends Error {
|
|
5266
|
+
constructor(message, status, payload = void 0) {
|
|
5267
|
+
super(message);
|
|
5268
|
+
this.status = status;
|
|
5269
|
+
this.payload = payload;
|
|
5270
|
+
this.name = "HttpError";
|
|
5271
|
+
}
|
|
5272
|
+
};
|
|
5273
|
+
function missingKeyError() {
|
|
5274
|
+
return new HttpError(
|
|
5275
|
+
"No Runpod API key: the request carried no usable credential.",
|
|
5276
|
+
401
|
|
5277
|
+
);
|
|
5278
|
+
}
|
|
5279
|
+
|
|
5280
|
+
// src/specgen/tools/util.ts
|
|
5281
|
+
function ok(payload) {
|
|
5282
|
+
return { ok: true, status: 200, payload };
|
|
5283
|
+
}
|
|
5284
|
+
function badRequest(message) {
|
|
5285
|
+
return { ok: false, status: 400, payload: { error: message } };
|
|
5286
|
+
}
|
|
5287
|
+
function isTimeout(error) {
|
|
5288
|
+
if (!(error instanceof Error)) return false;
|
|
5289
|
+
if (error.name === "TimeoutError" || error.name === "AbortError") return true;
|
|
5290
|
+
const cause = error.cause;
|
|
5291
|
+
return cause instanceof Error && (cause.name === "TimeoutError" || cause.name === "AbortError");
|
|
5292
|
+
}
|
|
5293
|
+
var UNREACHED_CODES = /* @__PURE__ */ new Set([
|
|
5294
|
+
"ENOTFOUND",
|
|
5295
|
+
"EAI_AGAIN",
|
|
5296
|
+
"ECONNREFUSED",
|
|
5297
|
+
"EHOSTUNREACH",
|
|
5298
|
+
"ENETUNREACH",
|
|
5299
|
+
"UND_ERR_CONNECT_TIMEOUT"
|
|
5300
|
+
]);
|
|
5301
|
+
var TLS_CODE = /^(?:CERT_|ERR_TLS_|UNABLE_TO_|DEPTH_ZERO_|SELF_SIGNED_)/;
|
|
5302
|
+
function causeCode(cause) {
|
|
5303
|
+
const code = cause?.code;
|
|
5304
|
+
if (typeof code === "string") return code;
|
|
5305
|
+
const inner = cause instanceof AggregateError ? cause.errors[0] : void 0;
|
|
5306
|
+
const innerCode = inner?.code;
|
|
5307
|
+
return typeof innerCode === "string" ? innerCode : void 0;
|
|
5308
|
+
}
|
|
5309
|
+
function networkFailureResult(error) {
|
|
5310
|
+
if (!(error instanceof TypeError)) return void 0;
|
|
5311
|
+
const afterHeaders = error.message === "terminated";
|
|
5312
|
+
if (!afterHeaders && error.message !== "fetch failed") return void 0;
|
|
5313
|
+
const code = causeCode(error.cause);
|
|
5314
|
+
if (!code) return void 0;
|
|
5315
|
+
const unreached = !afterHeaders && (UNREACHED_CODES.has(code) || TLS_CODE.test(code));
|
|
5316
|
+
return {
|
|
5317
|
+
ok: false,
|
|
5318
|
+
status: unreached ? 503 : 502,
|
|
5319
|
+
payload: unreached ? {
|
|
5320
|
+
error: "Could not reach the Runpod API.",
|
|
5321
|
+
cause: code,
|
|
5322
|
+
hint: "The request never reached Runpod, so retrying the same call is safe: retry it once. If it fails again, the network, DNS, proxy or TLS setup on this machine is the likely cause; check https://uptime.runpod.io and report it rather than retrying further."
|
|
5323
|
+
} : {
|
|
5324
|
+
error: "The connection to the Runpod API dropped before the full response arrived.",
|
|
5325
|
+
cause: code,
|
|
5326
|
+
hint: "The request may have been applied. A read can be retried once. For a create, update, delete or job submission, check with the matching get- or list- tool whether it took effect before calling again; retrying blindly can create a duplicate billable resource."
|
|
5327
|
+
}
|
|
5328
|
+
};
|
|
5329
|
+
}
|
|
5330
|
+
async function runTool(body) {
|
|
5331
|
+
try {
|
|
5332
|
+
return await body();
|
|
5333
|
+
} catch (error) {
|
|
5334
|
+
if (error instanceof HttpError) {
|
|
5335
|
+
return {
|
|
5336
|
+
ok: false,
|
|
5337
|
+
status: error.status,
|
|
5338
|
+
payload: { error: error.message, detail: error.payload }
|
|
5339
|
+
};
|
|
5340
|
+
}
|
|
5341
|
+
if (isTimeout(error)) {
|
|
5342
|
+
return {
|
|
5343
|
+
ok: false,
|
|
5344
|
+
status: 504,
|
|
5345
|
+
payload: {
|
|
5346
|
+
error: "The Runpod API did not respond before the request deadline.",
|
|
5347
|
+
hint: "Transient upstream stall: retry the same call once; if it persists, check https://uptime.runpod.io."
|
|
5348
|
+
}
|
|
5349
|
+
};
|
|
5350
|
+
}
|
|
5351
|
+
const network = networkFailureResult(error);
|
|
5352
|
+
if (network) return network;
|
|
5353
|
+
throw error;
|
|
5354
|
+
}
|
|
5355
|
+
}
|
|
5356
|
+
|
|
5357
|
+
// src/specgen/tools/pod-transitions.ts
|
|
5358
|
+
var podAction = generatedTools.find((tool) => tool.name === "pod-action");
|
|
5359
|
+
if (!podAction)
|
|
5360
|
+
throw new Error("pod-action is missing from the generated tools");
|
|
5361
|
+
var POD_ID = {
|
|
5362
|
+
type: "object",
|
|
5363
|
+
properties: { id: { type: "string", description: "ID of the Pod" } },
|
|
5364
|
+
required: ["id"],
|
|
5365
|
+
additionalProperties: false
|
|
5366
|
+
};
|
|
5367
|
+
function transition(action, title, description, annotations) {
|
|
5368
|
+
return {
|
|
5369
|
+
name: `${action}-pod`,
|
|
5370
|
+
title,
|
|
5371
|
+
description,
|
|
5372
|
+
inputSchema: POD_ID,
|
|
5373
|
+
annotations,
|
|
5374
|
+
handler: (ctx, args) => runTool(
|
|
5375
|
+
() => dispatchGeneratedTool(ctx.sdk, podAction, {
|
|
5376
|
+
id: args.id,
|
|
5377
|
+
body: { action }
|
|
5378
|
+
})
|
|
5379
|
+
)
|
|
5380
|
+
};
|
|
5381
|
+
}
|
|
5382
|
+
var podTransitionTools = [
|
|
5383
|
+
transition(
|
|
5384
|
+
"start",
|
|
5385
|
+
"Start Pod",
|
|
5386
|
+
"Start a stopped Pod (status EXITED or ERROR). Billable: the Pod accrues its hourly price while it runs. Returns the updated Pod; a Pod in any other status returns 409.",
|
|
5387
|
+
write
|
|
5388
|
+
),
|
|
5389
|
+
transition(
|
|
5390
|
+
"stop",
|
|
5391
|
+
"Stop Pod",
|
|
5392
|
+
"Stop a running or provisioning Pod. It releases its GPU or CPU and stops compute billing; the container disk is wiped, while the volume disk and any attached network volume keep their data and volume storage keeps billing. Returns the updated Pod; a Pod in any other status returns 409.",
|
|
5393
|
+
destructiveWrite
|
|
5394
|
+
),
|
|
5395
|
+
transition(
|
|
5396
|
+
"restart",
|
|
5397
|
+
"Restart Pod",
|
|
5398
|
+
"Restart a running Pod's container in place. Whatever is running in the container is interrupted and the container disk is wiped; the volume disk and any attached network volume keep their data. Returns the updated Pod; a Pod that is not RUNNING returns 409.",
|
|
5399
|
+
destructiveWrite
|
|
5400
|
+
)
|
|
5401
|
+
];
|
|
5402
|
+
|
|
5178
5403
|
// src/specgen/profile.ts
|
|
5179
5404
|
var DIRECTORY_PATH = "/directory";
|
|
5180
5405
|
var IN = { include: true };
|
|
5406
|
+
var CREDENTIAL_MANAGEMENT = "Manages stored credentials; OpenAI restricts plugins that handle access credentials, so the directory leaves the whole credential family out.";
|
|
5181
5407
|
var CREDENTIAL_INPUT = "Takes a secret or password as input; directories forbid collecting credentials.";
|
|
5182
5408
|
var ALP = "Collects conversation-derived data beyond the task; the directory profile never serves it.";
|
|
5183
5409
|
var DIRECTORY_TOOLS = {
|
|
@@ -5194,8 +5420,6 @@ var DIRECTORY_TOOLS = {
|
|
|
5194
5420
|
"delete-global-volume": IN,
|
|
5195
5421
|
"delete-network-volume": IN,
|
|
5196
5422
|
"delete-pod": IN,
|
|
5197
|
-
"delete-registry": IN,
|
|
5198
|
-
"delete-secret": IN,
|
|
5199
5423
|
"delete-template": IN,
|
|
5200
5424
|
"deploy-hub-repo": IN,
|
|
5201
5425
|
"endpoint-health": IN,
|
|
@@ -5211,10 +5435,9 @@ var DIRECTORY_TOOLS = {
|
|
|
5211
5435
|
"get-network-volume": IN,
|
|
5212
5436
|
"get-organization": IN,
|
|
5213
5437
|
"get-pod": IN,
|
|
5214
|
-
"get-registry": IN,
|
|
5215
|
-
"get-secret": IN,
|
|
5216
5438
|
"get-ssh-keys": IN,
|
|
5217
5439
|
"get-template": IN,
|
|
5440
|
+
"list-audit-logs": IN,
|
|
5218
5441
|
"list-billing": IN,
|
|
5219
5442
|
"list-cluster-billing": IN,
|
|
5220
5443
|
"list-cluster-pods": IN,
|
|
@@ -5236,12 +5459,9 @@ var DIRECTORY_TOOLS = {
|
|
|
5236
5459
|
"list-pods": IN,
|
|
5237
5460
|
"list-public-endpoints": IN,
|
|
5238
5461
|
"list-public-templates": IN,
|
|
5239
|
-
"list-registries": IN,
|
|
5240
|
-
"list-secrets": IN,
|
|
5241
5462
|
"list-serverless-billing": IN,
|
|
5242
5463
|
"list-templates": IN,
|
|
5243
5464
|
"lookup-concept": IN,
|
|
5244
|
-
"pod-action": IN,
|
|
5245
5465
|
"purge-endpoint-queue": IN,
|
|
5246
5466
|
"retry-job": IN,
|
|
5247
5467
|
"revoke-delegation": IN,
|
|
@@ -5260,6 +5480,13 @@ var DIRECTORY_TOOLS = {
|
|
|
5260
5480
|
"update-template": IN,
|
|
5261
5481
|
"run-endpoint": { include: true, omitInputs: ["s3Config"] },
|
|
5262
5482
|
"runsync-endpoint": { include: true, omitInputs: ["s3Config"] },
|
|
5483
|
+
"pod-action": {
|
|
5484
|
+
include: false,
|
|
5485
|
+
reason: "Takes the transition as an argument; OpenAI asks for one tool per operation, so the directory serves start-pod, stop-pod and restart-pod (terminate is delete-pod)."
|
|
5486
|
+
},
|
|
5487
|
+
"start-pod": IN,
|
|
5488
|
+
"stop-pod": IN,
|
|
5489
|
+
"restart-pod": IN,
|
|
5263
5490
|
"list-guides": {
|
|
5264
5491
|
include: false,
|
|
5265
5492
|
reason: "Serves playbooks that instruct the model how to behave."
|
|
@@ -5273,6 +5500,12 @@ var DIRECTORY_TOOLS = {
|
|
|
5273
5500
|
reason: "Fetches schemas the directory already lists in full; directories reject schema fetching."
|
|
5274
5501
|
},
|
|
5275
5502
|
"create-secret": { include: false, reason: CREDENTIAL_INPUT },
|
|
5503
|
+
"get-secret": { include: false, reason: CREDENTIAL_MANAGEMENT },
|
|
5504
|
+
"list-secrets": { include: false, reason: CREDENTIAL_MANAGEMENT },
|
|
5505
|
+
"delete-secret": { include: false, reason: CREDENTIAL_MANAGEMENT },
|
|
5506
|
+
"get-registry": { include: false, reason: CREDENTIAL_MANAGEMENT },
|
|
5507
|
+
"list-registries": { include: false, reason: CREDENTIAL_MANAGEMENT },
|
|
5508
|
+
"delete-registry": { include: false, reason: CREDENTIAL_MANAGEMENT },
|
|
5276
5509
|
"update-secret": { include: false, reason: CREDENTIAL_INPUT },
|
|
5277
5510
|
"create-registry": { include: false, reason: CREDENTIAL_INPUT },
|
|
5278
5511
|
report_feedback: { include: false, reason: ALP },
|
|
@@ -5390,137 +5623,6 @@ function capList(items, options, extra) {
|
|
|
5390
5623
|
};
|
|
5391
5624
|
}
|
|
5392
5625
|
|
|
5393
|
-
// src/specgen/clients/http-error.ts
|
|
5394
|
-
var HttpError = class extends Error {
|
|
5395
|
-
constructor(message, status, payload = void 0) {
|
|
5396
|
-
super(message);
|
|
5397
|
-
this.status = status;
|
|
5398
|
-
this.payload = payload;
|
|
5399
|
-
this.name = "HttpError";
|
|
5400
|
-
}
|
|
5401
|
-
};
|
|
5402
|
-
function missingKeyError() {
|
|
5403
|
-
return new HttpError(
|
|
5404
|
-
"No Runpod API key: the request carried no usable credential.",
|
|
5405
|
-
401
|
|
5406
|
-
);
|
|
5407
|
-
}
|
|
5408
|
-
|
|
5409
|
-
// src/specgen/tools/util.ts
|
|
5410
|
-
function ok(payload) {
|
|
5411
|
-
return { ok: true, status: 200, payload };
|
|
5412
|
-
}
|
|
5413
|
-
function badRequest(message) {
|
|
5414
|
-
return { ok: false, status: 400, payload: { error: message } };
|
|
5415
|
-
}
|
|
5416
|
-
function isTimeout(error) {
|
|
5417
|
-
if (!(error instanceof Error)) return false;
|
|
5418
|
-
if (error.name === "TimeoutError" || error.name === "AbortError") return true;
|
|
5419
|
-
const cause = error.cause;
|
|
5420
|
-
return cause instanceof Error && (cause.name === "TimeoutError" || cause.name === "AbortError");
|
|
5421
|
-
}
|
|
5422
|
-
var UNREACHED_CODES = /* @__PURE__ */ new Set([
|
|
5423
|
-
"ENOTFOUND",
|
|
5424
|
-
"EAI_AGAIN",
|
|
5425
|
-
"ECONNREFUSED",
|
|
5426
|
-
"EHOSTUNREACH",
|
|
5427
|
-
"ENETUNREACH",
|
|
5428
|
-
"UND_ERR_CONNECT_TIMEOUT"
|
|
5429
|
-
]);
|
|
5430
|
-
var TLS_CODE = /^(?:CERT_|ERR_TLS_|UNABLE_TO_|DEPTH_ZERO_|SELF_SIGNED_)/;
|
|
5431
|
-
function causeCode(cause) {
|
|
5432
|
-
const code = cause?.code;
|
|
5433
|
-
if (typeof code === "string") return code;
|
|
5434
|
-
const inner = cause instanceof AggregateError ? cause.errors[0] : void 0;
|
|
5435
|
-
const innerCode = inner?.code;
|
|
5436
|
-
return typeof innerCode === "string" ? innerCode : void 0;
|
|
5437
|
-
}
|
|
5438
|
-
function networkFailureResult(error) {
|
|
5439
|
-
if (!(error instanceof TypeError)) return void 0;
|
|
5440
|
-
const afterHeaders = error.message === "terminated";
|
|
5441
|
-
if (!afterHeaders && error.message !== "fetch failed") return void 0;
|
|
5442
|
-
const code = causeCode(error.cause);
|
|
5443
|
-
if (!code) return void 0;
|
|
5444
|
-
const unreached = !afterHeaders && (UNREACHED_CODES.has(code) || TLS_CODE.test(code));
|
|
5445
|
-
return {
|
|
5446
|
-
ok: false,
|
|
5447
|
-
status: unreached ? 503 : 502,
|
|
5448
|
-
payload: unreached ? {
|
|
5449
|
-
error: "Could not reach the Runpod API.",
|
|
5450
|
-
cause: code,
|
|
5451
|
-
hint: "The request never reached Runpod, so retrying the same call is safe: retry it once. If it fails again, the network, DNS, proxy or TLS setup on this machine is the likely cause; check https://uptime.runpod.io and report it rather than retrying further."
|
|
5452
|
-
} : {
|
|
5453
|
-
error: "The connection to the Runpod API dropped before the full response arrived.",
|
|
5454
|
-
cause: code,
|
|
5455
|
-
hint: "The request may have been applied. A read can be retried once. For a create, update, delete or job submission, check with the matching get- or list- tool whether it took effect before calling again; retrying blindly can create a duplicate billable resource."
|
|
5456
|
-
}
|
|
5457
|
-
};
|
|
5458
|
-
}
|
|
5459
|
-
async function runTool(body) {
|
|
5460
|
-
try {
|
|
5461
|
-
return await body();
|
|
5462
|
-
} catch (error) {
|
|
5463
|
-
if (error instanceof HttpError) {
|
|
5464
|
-
return {
|
|
5465
|
-
ok: false,
|
|
5466
|
-
status: error.status,
|
|
5467
|
-
payload: { error: error.message, detail: error.payload }
|
|
5468
|
-
};
|
|
5469
|
-
}
|
|
5470
|
-
if (isTimeout(error)) {
|
|
5471
|
-
return {
|
|
5472
|
-
ok: false,
|
|
5473
|
-
status: 504,
|
|
5474
|
-
payload: {
|
|
5475
|
-
error: "The Runpod API did not respond before the request deadline.",
|
|
5476
|
-
hint: "Transient upstream stall: retry the same call once; if it persists, check https://uptime.runpod.io."
|
|
5477
|
-
}
|
|
5478
|
-
};
|
|
5479
|
-
}
|
|
5480
|
-
const network = networkFailureResult(error);
|
|
5481
|
-
if (network) return network;
|
|
5482
|
-
throw error;
|
|
5483
|
-
}
|
|
5484
|
-
}
|
|
5485
|
-
|
|
5486
|
-
// src/specgen/tools/annotations.ts
|
|
5487
|
-
var readOnly = {
|
|
5488
|
-
readOnlyHint: true,
|
|
5489
|
-
destructiveHint: false,
|
|
5490
|
-
idempotentHint: true,
|
|
5491
|
-
openWorldHint: true
|
|
5492
|
-
};
|
|
5493
|
-
var bundledRead = {
|
|
5494
|
-
readOnlyHint: true,
|
|
5495
|
-
destructiveHint: false,
|
|
5496
|
-
idempotentHint: true,
|
|
5497
|
-
openWorldHint: false
|
|
5498
|
-
};
|
|
5499
|
-
var write = {
|
|
5500
|
-
readOnlyHint: false,
|
|
5501
|
-
destructiveHint: false,
|
|
5502
|
-
idempotentHint: false,
|
|
5503
|
-
openWorldHint: true
|
|
5504
|
-
};
|
|
5505
|
-
var idempotentWrite = {
|
|
5506
|
-
readOnlyHint: false,
|
|
5507
|
-
destructiveHint: false,
|
|
5508
|
-
idempotentHint: true,
|
|
5509
|
-
openWorldHint: true
|
|
5510
|
-
};
|
|
5511
|
-
var destructive = {
|
|
5512
|
-
readOnlyHint: false,
|
|
5513
|
-
destructiveHint: true,
|
|
5514
|
-
idempotentHint: true,
|
|
5515
|
-
openWorldHint: true
|
|
5516
|
-
};
|
|
5517
|
-
var destructiveWrite = {
|
|
5518
|
-
readOnlyHint: false,
|
|
5519
|
-
destructiveHint: true,
|
|
5520
|
-
idempotentHint: false,
|
|
5521
|
-
openWorldHint: true
|
|
5522
|
-
};
|
|
5523
|
-
|
|
5524
5626
|
// src/specgen/tools/capacity.ts
|
|
5525
5627
|
var CUDA_VERSION_REGEX = /^\d{1,2}\.\d{1,2}$/;
|
|
5526
5628
|
var MAX_PROBE_VERSIONS = 12;
|
|
@@ -6903,7 +7005,7 @@ function knowledgeSearchBase(env) {
|
|
|
6903
7005
|
return pick(env.KNOWLEDGE_SEARCH_URL, "") || void 0;
|
|
6904
7006
|
}
|
|
6905
7007
|
|
|
6906
|
-
//
|
|
7008
|
+
// packages/typescript-api-sdk/dist/index.js
|
|
6907
7009
|
var PATH_PARAM_RE = /\{[^{}]+\}/g;
|
|
6908
7010
|
var supportsRequestInitExt = () => {
|
|
6909
7011
|
return typeof process === "object" && Number.parseInt(process?.versions?.node?.substring(0, 2)) >= 18 && process.versions.undici;
|
|
@@ -7475,10 +7577,7 @@ var Parser = class {
|
|
|
7475
7577
|
parseItem(standaloneItem = true) {
|
|
7476
7578
|
if (standaloneItem)
|
|
7477
7579
|
this.skipWS();
|
|
7478
|
-
const result = [
|
|
7479
|
-
this.parseBareItem(),
|
|
7480
|
-
this.parseParameters()
|
|
7481
|
-
];
|
|
7580
|
+
const result = [this.parseBareItem(), this.parseParameters()];
|
|
7482
7581
|
if (standaloneItem)
|
|
7483
7582
|
this.checkTrail();
|
|
7484
7583
|
return result;
|
|
@@ -7498,10 +7597,7 @@ var Parser = class {
|
|
|
7498
7597
|
this.skipWS();
|
|
7499
7598
|
if (this.lookChar() === ")") {
|
|
7500
7599
|
this.pos++;
|
|
7501
|
-
return [
|
|
7502
|
-
innerList,
|
|
7503
|
-
this.parseParameters()
|
|
7504
|
-
];
|
|
7600
|
+
return [innerList, this.parseParameters()];
|
|
7505
7601
|
}
|
|
7506
7602
|
innerList.push(this.parseItem(false));
|
|
7507
7603
|
const nextChar = this.lookChar();
|
|
@@ -8088,7 +8184,6 @@ var LogEventParser = class {
|
|
|
8088
8184
|
constructor(maxEventBytes) {
|
|
8089
8185
|
this.maxEventBytes = maxEventBytes;
|
|
8090
8186
|
}
|
|
8091
|
-
maxEventBytes;
|
|
8092
8187
|
line = "";
|
|
8093
8188
|
dataLines = [];
|
|
8094
8189
|
eventName = "";
|
|
@@ -8834,7 +8929,9 @@ function listTool(tool, profile = "default") {
|
|
|
8834
8929
|
tool.directoryDescription ?? tool.description,
|
|
8835
8930
|
inputSchema
|
|
8836
8931
|
),
|
|
8837
|
-
inputSchema:
|
|
8932
|
+
inputSchema: withoutCredentialExamples(
|
|
8933
|
+
withoutInputs(inputSchema, directoryOmittedInputs(name))
|
|
8934
|
+
),
|
|
8838
8935
|
annotations
|
|
8839
8936
|
};
|
|
8840
8937
|
const { description } = tool;
|
|
@@ -8856,6 +8953,21 @@ function withApiReference(description, schema) {
|
|
|
8856
8953
|
const sentence = /[.!?]$/.test(trimmed) ? trimmed : `${trimmed}.`;
|
|
8857
8954
|
return `${sentence} ${DIRECTORY_API_REFERENCE}`;
|
|
8858
8955
|
}
|
|
8956
|
+
var CREDENTIAL = /pass(word|wd|phrase)?|secret|token(?!s)|api_?key|private_?key|credential/i;
|
|
8957
|
+
function withoutCredentialExamples(schema) {
|
|
8958
|
+
const strip = (node) => {
|
|
8959
|
+
if (Array.isArray(node)) return node.map(strip);
|
|
8960
|
+
if (!node || typeof node !== "object") return node;
|
|
8961
|
+
const out = {};
|
|
8962
|
+
for (const [key, value] of Object.entries(node)) {
|
|
8963
|
+
if (key === "examples" && CREDENTIAL.test(JSON.stringify(value)))
|
|
8964
|
+
continue;
|
|
8965
|
+
out[key] = strip(value);
|
|
8966
|
+
}
|
|
8967
|
+
return out;
|
|
8968
|
+
};
|
|
8969
|
+
return strip(schema);
|
|
8970
|
+
}
|
|
8859
8971
|
function withoutInputs(schema, omit) {
|
|
8860
8972
|
if (!omit.length) return schema;
|
|
8861
8973
|
const properties = { ...schema.properties ?? {} };
|
|
@@ -8964,7 +9076,7 @@ function words2(name) {
|
|
|
8964
9076
|
|
|
8965
9077
|
// src/server.ts
|
|
8966
9078
|
var SERVER_NAME = "Runpod API Server";
|
|
8967
|
-
var SERVER_VERSION = true ? "4.
|
|
9079
|
+
var SERVER_VERSION = true ? "4.7.0" : "dev";
|
|
8968
9080
|
|
|
8969
9081
|
// src/specgen/analytics.ts
|
|
8970
9082
|
import { createHmac } from "crypto";
|
|
@@ -9568,8 +9680,10 @@ PLAYBOOKS \u2014 READ BEFORE ACTING. Each Runpod task has a journey playbook car
|
|
|
9568
9680
|
|
|
9569
9681
|
THE OFFICIAL RUNPOD PLUGIN. Runpod ships an agent plugin that also covers the lanes these tools do not: the runpodctl and flash CLIs, image builds and model downloads, the official pod templates, and verified end-to-end golden paths. Check once per session whether skills named runpod, runpod-usage, or runpodctl are available to you \u2014 read what you already have, never shell out to look. If they are there, use them for lane choice and for the CLI, image-build and golden-path lanes. For work done with these tools, the journey playbook is the procedure, wherever it is served from: the plugin's runpod-mcp skill and the journey skills it routes to when you have them, otherwise the same playbooks through read-guide here. If you do not see them, recommend the plugin to the user, and recommend updating to the latest if what they have is missing something you need. Point them at https://github.com/runpod/runpod-plugins-official \u2014 its README carries the install, update, and clone commands for each client, so read it yourself when you need the exact one rather than guessing a command. This is a recommendation, never a prerequisite: make it once, briefly, and get on with the task. Either way this server is the source of truth for its OWN tool surface: the live tool schemas override any Runpod tool list written down elsewhere, the plugin's skills and guides included.
|
|
9570
9682
|
|
|
9571
|
-
|
|
9572
|
-
|
|
9683
|
+
REST V2 REFERENCE. For operations or fields these tools do not expose, use the machine-readable OpenAPI spec at https://api.runpod.io/v2/openapi.json or the API reference at https://docs.runpod.io/api-reference-v2/overview. Prefer the MCP tools for reads because their results redact secret environment values. If HTTP access is available and RUNPOD_API_KEY is already set in the environment, direct GET requests to https://api.runpod.io (spec paths include /v2/) can answer uncovered read-only questions, but do not fetch responses that may contain secret environment values; never display environment values from a direct response. Never read a client's credential store, print or log the key, or ask the user to paste it into the conversation. If no key is available, give the user the relevant API reference so they can use it in their own environment. Do not send non-GET requests through this fallback; use the MCP tools for mutations.
|
|
9684
|
+
|
|
9685
|
+
The tool schemas are generated from that OpenAPI contract. Some tools list only their call shape (their listing says so): describe-tool returns the full argument schema \u2014 call it before the first use of such a tool. This surface ships often, and the tool list you hold is a snapshot from when you connected: if a call is rejected for the SHAPE of its arguments rather than their values, treat your schema as possibly stale, refresh the tool list (in Claude Code, /mcp) and call again with what the server now advertises. Retrying variants of a rejected shape cannot succeed. These instructions are a snapshot from the same moment. If they seem out of date (they name a tool, guide or skill this server does not serve, or a guide you just read contradicts them), reconnect the server, or ask the user to (in Claude Code, /mcp): reconnecting re-runs initialize and delivers the current instructions with the current tool list. Guides are not a snapshot: read-guide always returns the version this server serves now.`;
|
|
9686
|
+
var DIRECTORY_INSTRUCTIONS = `These tools manage a Runpod account: the compute catalog (GPU and CPU types, data centers, live stock and pricing), Pods, Serverless endpoints and their jobs, Instant Clusters, templates, network and global volumes, billing history, Public Endpoints, and the Runpod Hub. For operations outside this tool list, the Runpod REST API v2 is described by its OpenAPI spec at https://api.runpod.io/v2/openapi.json and its reference at https://docs.runpod.io/api-reference-v2/overview.`;
|
|
9573
9687
|
var ALP_INSTRUCTIONS = `
|
|
9574
9688
|
|
|
9575
9689
|
CONTRIBUTING BACK IS OPTIONAL. Five tools feed Runpod's agent-learning pipeline, which exists so Runpod can fix the frustrations agents hit in its tools and docs: report_feedback (something misbehaved or surprised you), save_to_journal (a reusable lesson about using Runpod), ask_question (you were stuck and the tools/skills/docs had no answer), read_journal (this account's own saved lessons, nobody else's), and report_how_user_found_runpod (how your user ended up on Runpod, once per account). Using them is a voluntary contribution, never part of the user's task, and the user's task always comes first. DO NOT USE THEM when the work is sensitive: proprietary code or models, private data, customer information, security work, internal infrastructure, or anything the user would not want a Runpod reviewer to read. Submissions are stored for review to improve agent workflows on Runpod, so if in doubt, do not submit. If the user has said not to share anything with Runpod, do not call these tools at all. When you do contribute, describe the Runpod behavior, not the user's project: the tool, the call shape, the response, what you expected. Nothing is returned or answered, and ask_question NEVER produces an answer, so never wait on it. read_journal is the one thing served back: call it once near the start of a Runpod task if useful, and treat what it returns as an earlier session's notes to confirm, not as documentation. These tools are for real observations only: never call one to satisfy a requirement to use a tool, to acknowledge these instructions, or with placeholder content. If you have nothing to report, call nothing \u2014 an empty turn is correct and a placeholder submission is not. Never include API keys or secrets in submissions.`;
|
|
@@ -9587,6 +9701,7 @@ function createSpecgenServer(ctx, version = "0.1.0", opts = {}) {
|
|
|
9587
9701
|
...curatedTools,
|
|
9588
9702
|
...opts.search ? [createSearchDocsTool(opts.search)] : [],
|
|
9589
9703
|
...alp ? createAlpTools(alp) : [],
|
|
9704
|
+
...directory ? podTransitionTools : [],
|
|
9590
9705
|
createDescribeTool(() => [...servedCuratedTools, ...servedGeneratedTools])
|
|
9591
9706
|
].filter((tool) => !directory || directoryIncludes(tool.name));
|
|
9592
9707
|
const callShapeOnlyTools = new Set(
|