@vm0/cli 9.74.4 → 9.75.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/index.js +1117 -482
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -47,7 +47,7 @@ if (DSN) {
|
|
|
47
47
|
Sentry.init({
|
|
48
48
|
dsn: DSN,
|
|
49
49
|
environment: process.env.SENTRY_ENVIRONMENT ?? "production",
|
|
50
|
-
release: "9.
|
|
50
|
+
release: "9.75.0",
|
|
51
51
|
sendDefaultPii: false,
|
|
52
52
|
tracesSampleRate: 0,
|
|
53
53
|
shutdownTimeout: 500,
|
|
@@ -66,7 +66,7 @@ if (DSN) {
|
|
|
66
66
|
}
|
|
67
67
|
});
|
|
68
68
|
Sentry.setContext("cli", {
|
|
69
|
-
version: "9.
|
|
69
|
+
version: "9.75.0",
|
|
70
70
|
command: process.argv.slice(2).join(" ")
|
|
71
71
|
});
|
|
72
72
|
Sentry.setContext("runtime", {
|
|
@@ -85,7 +85,7 @@ process.stdout.on("error", handleEpipe);
|
|
|
85
85
|
process.stderr.on("error", handleEpipe);
|
|
86
86
|
|
|
87
87
|
// src/index.ts
|
|
88
|
-
import { Command as
|
|
88
|
+
import { Command as Command93 } from "commander";
|
|
89
89
|
|
|
90
90
|
// src/lib/network/proxy.ts
|
|
91
91
|
import { EnvHttpProxyAgent, setGlobalDispatcher } from "undici";
|
|
@@ -2769,7 +2769,7 @@ function mpFirewall(type2, authHeaders, placeholders) {
|
|
|
2769
2769
|
{
|
|
2770
2770
|
base: getFirewallBaseUrl(type2),
|
|
2771
2771
|
auth: { headers: authHeaders },
|
|
2772
|
-
permissions: [{ name: "
|
|
2772
|
+
permissions: [{ name: "unrestricted", rules: ["ANY /{path*}"] }]
|
|
2773
2773
|
}
|
|
2774
2774
|
],
|
|
2775
2775
|
placeholders
|
|
@@ -3087,6 +3087,7 @@ var chatThreadListItemSchema = z18.object({
|
|
|
3087
3087
|
id: z18.string(),
|
|
3088
3088
|
title: z18.string().nullable(),
|
|
3089
3089
|
preview: z18.string().nullable(),
|
|
3090
|
+
agentComposeId: z18.string(),
|
|
3090
3091
|
createdAt: z18.string(),
|
|
3091
3092
|
updatedAt: z18.string()
|
|
3092
3093
|
});
|
|
@@ -3379,6 +3380,7 @@ var deployScheduleRequestSchema = z20.object({
|
|
|
3379
3380
|
intervalSeconds: z20.number().int().min(0).optional(),
|
|
3380
3381
|
timezone: z20.string().default("UTC"),
|
|
3381
3382
|
prompt: z20.string().min(1, "Prompt required"),
|
|
3383
|
+
description: z20.string().optional(),
|
|
3382
3384
|
appendSystemPrompt: z20.string().optional(),
|
|
3383
3385
|
// vars and secrets removed - now managed via server-side tables
|
|
3384
3386
|
artifactName: z20.string().optional(),
|
|
@@ -3417,6 +3419,7 @@ var scheduleResponseSchema = z20.object({
|
|
|
3417
3419
|
intervalSeconds: z20.number().nullable(),
|
|
3418
3420
|
timezone: z20.string(),
|
|
3419
3421
|
prompt: z20.string(),
|
|
3422
|
+
description: z20.string().nullable(),
|
|
3420
3423
|
appendSystemPrompt: z20.string().nullable(),
|
|
3421
3424
|
vars: z20.record(z20.string(), z20.string()).nullable(),
|
|
3422
3425
|
// Secret names only (values are never returned)
|
|
@@ -7209,6 +7212,302 @@ function resolveFirewallRef(input) {
|
|
|
7209
7212
|
return trimmed;
|
|
7210
7213
|
}
|
|
7211
7214
|
|
|
7215
|
+
// ../../packages/core/src/firewalls/confluence.generated.ts
|
|
7216
|
+
var confluenceFirewall = {
|
|
7217
|
+
name: "confluence",
|
|
7218
|
+
description: "Confluence Cloud API",
|
|
7219
|
+
placeholders: {
|
|
7220
|
+
CONFLUENCE_TOKEN: "ATATT3xVm0PlaceHolder000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
|
|
7221
|
+
},
|
|
7222
|
+
apis: [
|
|
7223
|
+
{
|
|
7224
|
+
base: "https://api.atlassian.com",
|
|
7225
|
+
auth: {
|
|
7226
|
+
headers: {
|
|
7227
|
+
Authorization: "Bearer ${{ secrets.CONFLUENCE_TOKEN }}"
|
|
7228
|
+
}
|
|
7229
|
+
},
|
|
7230
|
+
permissions: [
|
|
7231
|
+
{
|
|
7232
|
+
name: "unrestricted",
|
|
7233
|
+
description: "Allow all endpoints",
|
|
7234
|
+
rules: ["ANY /{path*}"]
|
|
7235
|
+
},
|
|
7236
|
+
{
|
|
7237
|
+
name: "manage:confluence-configuration",
|
|
7238
|
+
description: "Manage global settings.",
|
|
7239
|
+
rules: [
|
|
7240
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/settings/lookandfeel",
|
|
7241
|
+
"PUT /ex/confluence/{cloudId}/wiki/rest/api/settings/lookandfeel",
|
|
7242
|
+
"POST /ex/confluence/{cloudId}/wiki/rest/api/settings/lookandfeel/custom",
|
|
7243
|
+
"DELETE /ex/confluence/{cloudId}/wiki/rest/api/settings/lookandfeel/custom",
|
|
7244
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/settings/systemInfo",
|
|
7245
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/settings/theme",
|
|
7246
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/settings/theme/selected",
|
|
7247
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/settings/theme/{themeKey}"
|
|
7248
|
+
]
|
|
7249
|
+
},
|
|
7250
|
+
{
|
|
7251
|
+
name: "read:audit-log:confluence",
|
|
7252
|
+
description: "View audit records.",
|
|
7253
|
+
rules: [
|
|
7254
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/audit",
|
|
7255
|
+
"POST /ex/confluence/{cloudId}/wiki/rest/api/audit",
|
|
7256
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/audit/export",
|
|
7257
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/audit/retention",
|
|
7258
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/audit/since"
|
|
7259
|
+
]
|
|
7260
|
+
},
|
|
7261
|
+
{
|
|
7262
|
+
name: "read:confluence-content.all",
|
|
7263
|
+
description: "Read all content, including content body (expansions permitted). Note, APIs using this scope may also return data allowed by read:confluence-space.summary. However, this scope is not a substitute for read:confluence-space.summary.",
|
|
7264
|
+
rules: [
|
|
7265
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/content/{id}/history/{version}/macro/id/{macroId}",
|
|
7266
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/content/{id}/history/{version}/macro/id/{macroId}/convert/async/{to}",
|
|
7267
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/content/{id}/history/{version}/macro/id/{macroId}/convert/{to}",
|
|
7268
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/content/{id}/restriction",
|
|
7269
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/content/{id}/restriction/byOperation",
|
|
7270
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/content/{id}/restriction/byOperation/{operationKey}",
|
|
7271
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/content/{id}/restriction/byOperation/{operationKey}/byGroupId/{groupId}",
|
|
7272
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/content/{id}/restriction/byOperation/{operationKey}/user",
|
|
7273
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/contentbody/convert/async/bulk/tasks",
|
|
7274
|
+
"POST /ex/confluence/{cloudId}/wiki/rest/api/contentbody/convert/async/bulk/tasks",
|
|
7275
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/contentbody/convert/async/{id}",
|
|
7276
|
+
"POST /ex/confluence/{cloudId}/wiki/rest/api/contentbody/convert/async/{to}",
|
|
7277
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/space/{spaceKey}/state/content"
|
|
7278
|
+
]
|
|
7279
|
+
},
|
|
7280
|
+
{
|
|
7281
|
+
name: "read:confluence-content.permission",
|
|
7282
|
+
description: "Read content permissions.",
|
|
7283
|
+
rules: [
|
|
7284
|
+
"POST /ex/confluence/{cloudId}/wiki/rest/api/content/{id}/permission/check"
|
|
7285
|
+
]
|
|
7286
|
+
},
|
|
7287
|
+
{
|
|
7288
|
+
name: "read:confluence-content.summary",
|
|
7289
|
+
description: "Read a summary of the content, which is the content without expansions. Note, APIs using this scope may also return data allowed by read:confluence-space.summary. However, this scope is not a substitute for read:confluence-space.summary.",
|
|
7290
|
+
rules: [
|
|
7291
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/analytics/content/{contentId}/viewers",
|
|
7292
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/analytics/content/{contentId}/views",
|
|
7293
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/content/{id}/descendant",
|
|
7294
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/content/{id}/descendant/{type}",
|
|
7295
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/content/{id}/notification/child-created",
|
|
7296
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/content/{id}/notification/created",
|
|
7297
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/content/{id}/state",
|
|
7298
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/label",
|
|
7299
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/relation/{relationName}/from/{sourceType}/{sourceKey}/to/{targetType}",
|
|
7300
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/relation/{relationName}/from/{sourceType}/{sourceKey}/to/{targetType}/{targetKey}",
|
|
7301
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/relation/{relationName}/to/{targetType}/{targetKey}/from/{sourceType}",
|
|
7302
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/template/blueprint",
|
|
7303
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/template/page",
|
|
7304
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/template/{contentTemplateId}",
|
|
7305
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/user/watch/content/{contentId}",
|
|
7306
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/user/watch/label/{labelName}",
|
|
7307
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/user/watch/space/{spaceKey}"
|
|
7308
|
+
]
|
|
7309
|
+
},
|
|
7310
|
+
{
|
|
7311
|
+
name: "read:confluence-groups",
|
|
7312
|
+
description: "Read user groups.",
|
|
7313
|
+
rules: [
|
|
7314
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/group",
|
|
7315
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/group/by-id",
|
|
7316
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/group/picker",
|
|
7317
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/group/{groupId}/membersByGroupId"
|
|
7318
|
+
]
|
|
7319
|
+
},
|
|
7320
|
+
{
|
|
7321
|
+
name: "read:confluence-space.summary",
|
|
7322
|
+
description: "Read a summary of space information without expansions.",
|
|
7323
|
+
rules: [
|
|
7324
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/longtask/{id}",
|
|
7325
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/space/{spaceKey}/label",
|
|
7326
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/space/{spaceKey}/settings",
|
|
7327
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/space/{spaceKey}/state",
|
|
7328
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/space/{spaceKey}/state/settings",
|
|
7329
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/space/{spaceKey}/theme"
|
|
7330
|
+
]
|
|
7331
|
+
},
|
|
7332
|
+
{
|
|
7333
|
+
name: "read:confluence-user",
|
|
7334
|
+
description: "Read users.",
|
|
7335
|
+
rules: [
|
|
7336
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/user",
|
|
7337
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/user/anonymous",
|
|
7338
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/user/bulk",
|
|
7339
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/user/current",
|
|
7340
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/user/memberof"
|
|
7341
|
+
]
|
|
7342
|
+
},
|
|
7343
|
+
{
|
|
7344
|
+
name: "read:content-details:confluence",
|
|
7345
|
+
description: "View content details.",
|
|
7346
|
+
rules: ["GET /ex/confluence/{cloudId}/wiki/rest/api/search/user"]
|
|
7347
|
+
},
|
|
7348
|
+
{
|
|
7349
|
+
name: "read:content.metadata:confluence",
|
|
7350
|
+
description: "View content summaries.",
|
|
7351
|
+
rules: ["GET /ex/confluence/{cloudId}/wiki/rest/api/longtask"]
|
|
7352
|
+
},
|
|
7353
|
+
{
|
|
7354
|
+
name: "read:space.permission:confluence",
|
|
7355
|
+
description: "View space permissions.",
|
|
7356
|
+
rules: [
|
|
7357
|
+
"POST /ex/confluence/{cloudId}/wiki/rest/api/space/{spaceKey}/permission",
|
|
7358
|
+
"POST /ex/confluence/{cloudId}/wiki/rest/api/space/{spaceKey}/permission/custom-content"
|
|
7359
|
+
]
|
|
7360
|
+
},
|
|
7361
|
+
{
|
|
7362
|
+
name: "read:user:confluence",
|
|
7363
|
+
description: "View user details.",
|
|
7364
|
+
rules: [
|
|
7365
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/space/{spaceKey}/watch"
|
|
7366
|
+
]
|
|
7367
|
+
},
|
|
7368
|
+
{
|
|
7369
|
+
name: "read:user.property:confluence",
|
|
7370
|
+
description: "View user properties.",
|
|
7371
|
+
rules: [
|
|
7372
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/content-states",
|
|
7373
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/user/{userId}/property",
|
|
7374
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/user/{userId}/property/{key}"
|
|
7375
|
+
]
|
|
7376
|
+
},
|
|
7377
|
+
{
|
|
7378
|
+
name: "read:watcher:confluence",
|
|
7379
|
+
description: "View content watchers.",
|
|
7380
|
+
rules: [
|
|
7381
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/space/{spaceKey}/watch"
|
|
7382
|
+
]
|
|
7383
|
+
},
|
|
7384
|
+
{
|
|
7385
|
+
name: "readonly:content.attachment:confluence",
|
|
7386
|
+
description: "Download attachments of a Confluence page or blogpost that you have access to.",
|
|
7387
|
+
rules: [
|
|
7388
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/content/{id}/child/attachment/{attachmentId}/download"
|
|
7389
|
+
]
|
|
7390
|
+
},
|
|
7391
|
+
{
|
|
7392
|
+
name: "search:confluence",
|
|
7393
|
+
description: "Search Confluence. Note, APIs using this scope may also return data allowed by read:confluence-space.summary and read:confluence-content.summary. However, this scope is not a substitute for read:confluence-space.summary or read:confluence-content.summary.",
|
|
7394
|
+
rules: [
|
|
7395
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/content/search",
|
|
7396
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/search"
|
|
7397
|
+
]
|
|
7398
|
+
},
|
|
7399
|
+
{
|
|
7400
|
+
name: "write:audit-log:confluence",
|
|
7401
|
+
description: "Create audit records.",
|
|
7402
|
+
rules: [
|
|
7403
|
+
"POST /ex/confluence/{cloudId}/wiki/rest/api/audit",
|
|
7404
|
+
"PUT /ex/confluence/{cloudId}/wiki/rest/api/audit/retention"
|
|
7405
|
+
]
|
|
7406
|
+
},
|
|
7407
|
+
{
|
|
7408
|
+
name: "write:confluence-content",
|
|
7409
|
+
description: "Permits the creation of pages, blogs, comments and questions.",
|
|
7410
|
+
rules: [
|
|
7411
|
+
"POST /ex/confluence/{cloudId}/wiki/rest/api/content/archive",
|
|
7412
|
+
"POST /ex/confluence/{cloudId}/wiki/rest/api/content/blueprint/instance/{draftId}",
|
|
7413
|
+
"PUT /ex/confluence/{cloudId}/wiki/rest/api/content/blueprint/instance/{draftId}",
|
|
7414
|
+
"POST /ex/confluence/{cloudId}/wiki/rest/api/content/{id}/copy",
|
|
7415
|
+
"POST /ex/confluence/{cloudId}/wiki/rest/api/content/{id}/label",
|
|
7416
|
+
"DELETE /ex/confluence/{cloudId}/wiki/rest/api/content/{id}/label",
|
|
7417
|
+
"DELETE /ex/confluence/{cloudId}/wiki/rest/api/content/{id}/label/{label}",
|
|
7418
|
+
"DELETE /ex/confluence/{cloudId}/wiki/rest/api/content/{id}/pageTree",
|
|
7419
|
+
"POST /ex/confluence/{cloudId}/wiki/rest/api/content/{id}/pagehierarchy/copy",
|
|
7420
|
+
"POST /ex/confluence/{cloudId}/wiki/rest/api/content/{id}/restriction",
|
|
7421
|
+
"PUT /ex/confluence/{cloudId}/wiki/rest/api/content/{id}/restriction",
|
|
7422
|
+
"DELETE /ex/confluence/{cloudId}/wiki/rest/api/content/{id}/restriction",
|
|
7423
|
+
"PUT /ex/confluence/{cloudId}/wiki/rest/api/content/{id}/restriction/byOperation/{operationKey}/byGroupId/{groupId}",
|
|
7424
|
+
"DELETE /ex/confluence/{cloudId}/wiki/rest/api/content/{id}/restriction/byOperation/{operationKey}/byGroupId/{groupId}",
|
|
7425
|
+
"PUT /ex/confluence/{cloudId}/wiki/rest/api/content/{id}/restriction/byOperation/{operationKey}/user",
|
|
7426
|
+
"DELETE /ex/confluence/{cloudId}/wiki/rest/api/content/{id}/restriction/byOperation/{operationKey}/user",
|
|
7427
|
+
"PUT /ex/confluence/{cloudId}/wiki/rest/api/content/{id}/state",
|
|
7428
|
+
"DELETE /ex/confluence/{cloudId}/wiki/rest/api/content/{id}/state",
|
|
7429
|
+
"GET /ex/confluence/{cloudId}/wiki/rest/api/content/{id}/state/available",
|
|
7430
|
+
"POST /ex/confluence/{cloudId}/wiki/rest/api/content/{id}/version",
|
|
7431
|
+
"DELETE /ex/confluence/{cloudId}/wiki/rest/api/content/{id}/version/{versionNumber}",
|
|
7432
|
+
"PUT /ex/confluence/{cloudId}/wiki/rest/api/content/{pageId}/move/{position}/{targetId}",
|
|
7433
|
+
"PUT /ex/confluence/{cloudId}/wiki/rest/api/relation/{relationName}/from/{sourceType}/{sourceKey}/to/{targetType}/{targetKey}",
|
|
7434
|
+
"DELETE /ex/confluence/{cloudId}/wiki/rest/api/relation/{relationName}/from/{sourceType}/{sourceKey}/to/{targetType}/{targetKey}",
|
|
7435
|
+
"POST /ex/confluence/{cloudId}/wiki/rest/api/template",
|
|
7436
|
+
"PUT /ex/confluence/{cloudId}/wiki/rest/api/template",
|
|
7437
|
+
"DELETE /ex/confluence/{cloudId}/wiki/rest/api/template/{contentTemplateId}",
|
|
7438
|
+
"POST /ex/confluence/{cloudId}/wiki/rest/api/user/watch/content/{contentId}",
|
|
7439
|
+
"DELETE /ex/confluence/{cloudId}/wiki/rest/api/user/watch/content/{contentId}",
|
|
7440
|
+
"POST /ex/confluence/{cloudId}/wiki/rest/api/user/watch/label/{labelName}",
|
|
7441
|
+
"DELETE /ex/confluence/{cloudId}/wiki/rest/api/user/watch/label/{labelName}",
|
|
7442
|
+
"POST /ex/confluence/{cloudId}/wiki/rest/api/user/watch/space/{spaceKey}",
|
|
7443
|
+
"DELETE /ex/confluence/{cloudId}/wiki/rest/api/user/watch/space/{spaceKey}"
|
|
7444
|
+
]
|
|
7445
|
+
},
|
|
7446
|
+
{
|
|
7447
|
+
name: "write:confluence-file",
|
|
7448
|
+
description: "Upload attachments.",
|
|
7449
|
+
rules: [
|
|
7450
|
+
"POST /ex/confluence/{cloudId}/wiki/rest/api/content/{id}/child/attachment",
|
|
7451
|
+
"PUT /ex/confluence/{cloudId}/wiki/rest/api/content/{id}/child/attachment",
|
|
7452
|
+
"PUT /ex/confluence/{cloudId}/wiki/rest/api/content/{id}/child/attachment/{attachmentId}",
|
|
7453
|
+
"POST /ex/confluence/{cloudId}/wiki/rest/api/content/{id}/child/attachment/{attachmentId}/data"
|
|
7454
|
+
]
|
|
7455
|
+
},
|
|
7456
|
+
{
|
|
7457
|
+
name: "write:confluence-groups",
|
|
7458
|
+
description: "Create, remove and update user groups.",
|
|
7459
|
+
rules: [
|
|
7460
|
+
"POST /ex/confluence/{cloudId}/wiki/rest/api/group",
|
|
7461
|
+
"DELETE /ex/confluence/{cloudId}/wiki/rest/api/group/by-id",
|
|
7462
|
+
"POST /ex/confluence/{cloudId}/wiki/rest/api/group/userByGroupId",
|
|
7463
|
+
"DELETE /ex/confluence/{cloudId}/wiki/rest/api/group/userByGroupId"
|
|
7464
|
+
]
|
|
7465
|
+
},
|
|
7466
|
+
{
|
|
7467
|
+
name: "write:confluence-props",
|
|
7468
|
+
description: "Write content properties.",
|
|
7469
|
+
rules: [
|
|
7470
|
+
"PUT /ex/confluence/{cloudId}/wiki/rest/api/content/{id}/child/attachment/{attachmentId}"
|
|
7471
|
+
]
|
|
7472
|
+
},
|
|
7473
|
+
{
|
|
7474
|
+
name: "write:confluence-space",
|
|
7475
|
+
description: "Create, update and delete space information.",
|
|
7476
|
+
rules: [
|
|
7477
|
+
"POST /ex/confluence/{cloudId}/wiki/rest/api/space",
|
|
7478
|
+
"POST /ex/confluence/{cloudId}/wiki/rest/api/space/_private",
|
|
7479
|
+
"PUT /ex/confluence/{cloudId}/wiki/rest/api/space/{spaceKey}",
|
|
7480
|
+
"DELETE /ex/confluence/{cloudId}/wiki/rest/api/space/{spaceKey}",
|
|
7481
|
+
"POST /ex/confluence/{cloudId}/wiki/rest/api/space/{spaceKey}/label",
|
|
7482
|
+
"DELETE /ex/confluence/{cloudId}/wiki/rest/api/space/{spaceKey}/label",
|
|
7483
|
+
"PUT /ex/confluence/{cloudId}/wiki/rest/api/space/{spaceKey}/settings",
|
|
7484
|
+
"PUT /ex/confluence/{cloudId}/wiki/rest/api/space/{spaceKey}/theme",
|
|
7485
|
+
"DELETE /ex/confluence/{cloudId}/wiki/rest/api/space/{spaceKey}/theme"
|
|
7486
|
+
]
|
|
7487
|
+
},
|
|
7488
|
+
{
|
|
7489
|
+
name: "write:space.permission:confluence",
|
|
7490
|
+
description: "Update space permissions.",
|
|
7491
|
+
rules: [
|
|
7492
|
+
"POST /ex/confluence/{cloudId}/wiki/rest/api/space/{spaceKey}/permission",
|
|
7493
|
+
"POST /ex/confluence/{cloudId}/wiki/rest/api/space/{spaceKey}/permission/custom-content",
|
|
7494
|
+
"DELETE /ex/confluence/{cloudId}/wiki/rest/api/space/{spaceKey}/permission/{id}"
|
|
7495
|
+
]
|
|
7496
|
+
},
|
|
7497
|
+
{
|
|
7498
|
+
name: "write:user.property:confluence",
|
|
7499
|
+
description: "Create, update and delete user properties.",
|
|
7500
|
+
rules: [
|
|
7501
|
+
"POST /ex/confluence/{cloudId}/wiki/rest/api/user/{userId}/property/{key}",
|
|
7502
|
+
"PUT /ex/confluence/{cloudId}/wiki/rest/api/user/{userId}/property/{key}",
|
|
7503
|
+
"DELETE /ex/confluence/{cloudId}/wiki/rest/api/user/{userId}/property/{key}"
|
|
7504
|
+
]
|
|
7505
|
+
}
|
|
7506
|
+
]
|
|
7507
|
+
}
|
|
7508
|
+
]
|
|
7509
|
+
};
|
|
7510
|
+
|
|
7212
7511
|
// ../../packages/core/src/firewalls/github.generated.ts
|
|
7213
7512
|
var githubFirewall = {
|
|
7214
7513
|
name: "github",
|
|
@@ -10371,6 +10670,665 @@ var googleSheetsFirewall = {
|
|
|
10371
10670
|
]
|
|
10372
10671
|
};
|
|
10373
10672
|
|
|
10673
|
+
// ../../packages/core/src/firewalls/jira.generated.ts
|
|
10674
|
+
var jiraFirewall = {
|
|
10675
|
+
name: "jira",
|
|
10676
|
+
description: "Jira Cloud API",
|
|
10677
|
+
placeholders: {
|
|
10678
|
+
JIRA_TOKEN: "ATATT3xVm0PlaceHolder000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
|
|
10679
|
+
},
|
|
10680
|
+
apis: [
|
|
10681
|
+
{
|
|
10682
|
+
base: "https://api.atlassian.com",
|
|
10683
|
+
auth: {
|
|
10684
|
+
headers: {
|
|
10685
|
+
Authorization: "Bearer ${{ secrets.JIRA_TOKEN }}"
|
|
10686
|
+
}
|
|
10687
|
+
},
|
|
10688
|
+
permissions: [
|
|
10689
|
+
{
|
|
10690
|
+
name: "unrestricted",
|
|
10691
|
+
description: "Allow all endpoints",
|
|
10692
|
+
rules: ["ANY /{path*}"]
|
|
10693
|
+
},
|
|
10694
|
+
{
|
|
10695
|
+
name: "manage:jira-configuration",
|
|
10696
|
+
description: "Configure Jira settings that require the Jira administrators permission, for example, create projects and custom fields, view workflows, manage issue link types.",
|
|
10697
|
+
rules: [
|
|
10698
|
+
"GET /ex/jira/{cloudId}/rest/api/3/announcementBanner",
|
|
10699
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/announcementBanner",
|
|
10700
|
+
"POST /ex/jira/{cloudId}/rest/api/3/app/field/context/configuration/list",
|
|
10701
|
+
"GET /ex/jira/{cloudId}/rest/api/3/app/field/{fieldIdOrKey}/context/configuration",
|
|
10702
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/app/field/{fieldIdOrKey}/context/configuration",
|
|
10703
|
+
"GET /ex/jira/{cloudId}/rest/api/3/application-properties",
|
|
10704
|
+
"GET /ex/jira/{cloudId}/rest/api/3/application-properties/advanced-settings",
|
|
10705
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/application-properties/{id}",
|
|
10706
|
+
"GET /ex/jira/{cloudId}/rest/api/3/applicationrole",
|
|
10707
|
+
"GET /ex/jira/{cloudId}/rest/api/3/applicationrole/{key}",
|
|
10708
|
+
"GET /ex/jira/{cloudId}/rest/api/3/auditing/record",
|
|
10709
|
+
"GET /ex/jira/{cloudId}/rest/api/3/avatar/{type}/system",
|
|
10710
|
+
"GET /ex/jira/{cloudId}/rest/api/3/config/fieldschemes",
|
|
10711
|
+
"POST /ex/jira/{cloudId}/rest/api/3/config/fieldschemes",
|
|
10712
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/config/fieldschemes/fields",
|
|
10713
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/config/fieldschemes/fields",
|
|
10714
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/config/fieldschemes/fields/parameters",
|
|
10715
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/config/fieldschemes/fields/parameters",
|
|
10716
|
+
"GET /ex/jira/{cloudId}/rest/api/3/config/fieldschemes/projects",
|
|
10717
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/config/fieldschemes/projects",
|
|
10718
|
+
"GET /ex/jira/{cloudId}/rest/api/3/config/fieldschemes/{id}",
|
|
10719
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/config/fieldschemes/{id}",
|
|
10720
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/config/fieldschemes/{id}",
|
|
10721
|
+
"POST /ex/jira/{cloudId}/rest/api/3/config/fieldschemes/{id}/clone",
|
|
10722
|
+
"GET /ex/jira/{cloudId}/rest/api/3/config/fieldschemes/{id}/fields",
|
|
10723
|
+
"GET /ex/jira/{cloudId}/rest/api/3/config/fieldschemes/{id}/fields/{fieldId}/parameters",
|
|
10724
|
+
"GET /ex/jira/{cloudId}/rest/api/3/config/fieldschemes/{id}/projects",
|
|
10725
|
+
"GET /ex/jira/{cloudId}/rest/api/3/configuration/timetracking",
|
|
10726
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/configuration/timetracking",
|
|
10727
|
+
"GET /ex/jira/{cloudId}/rest/api/3/configuration/timetracking/list",
|
|
10728
|
+
"GET /ex/jira/{cloudId}/rest/api/3/configuration/timetracking/options",
|
|
10729
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/configuration/timetracking/options",
|
|
10730
|
+
"GET /ex/jira/{cloudId}/rest/api/3/events",
|
|
10731
|
+
"POST /ex/jira/{cloudId}/rest/api/3/field",
|
|
10732
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/field/association",
|
|
10733
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/field/association",
|
|
10734
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/field/{fieldId}",
|
|
10735
|
+
"GET /ex/jira/{cloudId}/rest/api/3/field/{fieldId}/context",
|
|
10736
|
+
"POST /ex/jira/{cloudId}/rest/api/3/field/{fieldId}/context",
|
|
10737
|
+
"GET /ex/jira/{cloudId}/rest/api/3/field/{fieldId}/context/defaultValue",
|
|
10738
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/field/{fieldId}/context/defaultValue",
|
|
10739
|
+
"GET /ex/jira/{cloudId}/rest/api/3/field/{fieldId}/context/issuetypemapping",
|
|
10740
|
+
"POST /ex/jira/{cloudId}/rest/api/3/field/{fieldId}/context/mapping",
|
|
10741
|
+
"GET /ex/jira/{cloudId}/rest/api/3/field/{fieldId}/context/projectmapping",
|
|
10742
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/field/{fieldId}/context/{contextId}",
|
|
10743
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/field/{fieldId}/context/{contextId}",
|
|
10744
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/field/{fieldId}/context/{contextId}/issuetype",
|
|
10745
|
+
"POST /ex/jira/{cloudId}/rest/api/3/field/{fieldId}/context/{contextId}/issuetype/remove",
|
|
10746
|
+
"GET /ex/jira/{cloudId}/rest/api/3/field/{fieldId}/context/{contextId}/option",
|
|
10747
|
+
"POST /ex/jira/{cloudId}/rest/api/3/field/{fieldId}/context/{contextId}/option",
|
|
10748
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/field/{fieldId}/context/{contextId}/option",
|
|
10749
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/field/{fieldId}/context/{contextId}/option/move",
|
|
10750
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/field/{fieldId}/context/{contextId}/option/{optionId}",
|
|
10751
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/field/{fieldId}/context/{contextId}/option/{optionId}/issue",
|
|
10752
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/field/{fieldId}/context/{contextId}/project",
|
|
10753
|
+
"POST /ex/jira/{cloudId}/rest/api/3/field/{fieldId}/context/{contextId}/project/remove",
|
|
10754
|
+
"GET /ex/jira/{cloudId}/rest/api/3/field/{fieldKey}/option",
|
|
10755
|
+
"POST /ex/jira/{cloudId}/rest/api/3/field/{fieldKey}/option",
|
|
10756
|
+
"GET /ex/jira/{cloudId}/rest/api/3/field/{fieldKey}/option/{optionId}",
|
|
10757
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/field/{fieldKey}/option/{optionId}",
|
|
10758
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/field/{fieldKey}/option/{optionId}",
|
|
10759
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/field/{fieldKey}/option/{optionId}/issue",
|
|
10760
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/field/{id}",
|
|
10761
|
+
"POST /ex/jira/{cloudId}/rest/api/3/field/{id}/restore",
|
|
10762
|
+
"POST /ex/jira/{cloudId}/rest/api/3/field/{id}/trash",
|
|
10763
|
+
"GET /ex/jira/{cloudId}/rest/api/3/fieldconfiguration",
|
|
10764
|
+
"POST /ex/jira/{cloudId}/rest/api/3/fieldconfiguration",
|
|
10765
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/fieldconfiguration/{id}",
|
|
10766
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/fieldconfiguration/{id}",
|
|
10767
|
+
"GET /ex/jira/{cloudId}/rest/api/3/fieldconfiguration/{id}/fields",
|
|
10768
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/fieldconfiguration/{id}/fields",
|
|
10769
|
+
"GET /ex/jira/{cloudId}/rest/api/3/fieldconfigurationscheme",
|
|
10770
|
+
"POST /ex/jira/{cloudId}/rest/api/3/fieldconfigurationscheme",
|
|
10771
|
+
"GET /ex/jira/{cloudId}/rest/api/3/fieldconfigurationscheme/mapping",
|
|
10772
|
+
"GET /ex/jira/{cloudId}/rest/api/3/fieldconfigurationscheme/project",
|
|
10773
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/fieldconfigurationscheme/project",
|
|
10774
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/fieldconfigurationscheme/{id}",
|
|
10775
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/fieldconfigurationscheme/{id}",
|
|
10776
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/fieldconfigurationscheme/{id}/mapping",
|
|
10777
|
+
"POST /ex/jira/{cloudId}/rest/api/3/fieldconfigurationscheme/{id}/mapping/delete",
|
|
10778
|
+
"POST /ex/jira/{cloudId}/rest/api/3/group",
|
|
10779
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/group",
|
|
10780
|
+
"GET /ex/jira/{cloudId}/rest/api/3/group/member",
|
|
10781
|
+
"POST /ex/jira/{cloudId}/rest/api/3/group/user",
|
|
10782
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/group/user",
|
|
10783
|
+
"GET /ex/jira/{cloudId}/rest/api/3/instance/license",
|
|
10784
|
+
"POST /ex/jira/{cloudId}/rest/api/3/issueLinkType",
|
|
10785
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/issueLinkType/{issueLinkTypeId}",
|
|
10786
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/issueLinkType/{issueLinkTypeId}",
|
|
10787
|
+
"POST /ex/jira/{cloudId}/rest/api/3/issuesecurityschemes",
|
|
10788
|
+
"GET /ex/jira/{cloudId}/rest/api/3/issuesecurityschemes/level",
|
|
10789
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/issuesecurityschemes/level/default",
|
|
10790
|
+
"GET /ex/jira/{cloudId}/rest/api/3/issuesecurityschemes/level/member",
|
|
10791
|
+
"GET /ex/jira/{cloudId}/rest/api/3/issuesecurityschemes/project",
|
|
10792
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/issuesecurityschemes/project",
|
|
10793
|
+
"GET /ex/jira/{cloudId}/rest/api/3/issuesecurityschemes/search",
|
|
10794
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/issuesecurityschemes/{id}",
|
|
10795
|
+
"GET /ex/jira/{cloudId}/rest/api/3/issuesecurityschemes/{issueSecuritySchemeId}/members",
|
|
10796
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/issuesecurityschemes/{schemeId}",
|
|
10797
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/issuesecurityschemes/{schemeId}/level",
|
|
10798
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/issuesecurityschemes/{schemeId}/level/{levelId}",
|
|
10799
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/issuesecurityschemes/{schemeId}/level/{levelId}",
|
|
10800
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/issuesecurityschemes/{schemeId}/level/{levelId}/member",
|
|
10801
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/issuesecurityschemes/{schemeId}/level/{levelId}/member/{memberId}",
|
|
10802
|
+
"POST /ex/jira/{cloudId}/rest/api/3/issuetype",
|
|
10803
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/issuetype/{id}",
|
|
10804
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/issuetype/{id}",
|
|
10805
|
+
"POST /ex/jira/{cloudId}/rest/api/3/issuetype/{id}/avatar2",
|
|
10806
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/issuetype/{issueTypeId}/properties/{propertyKey}",
|
|
10807
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/issuetype/{issueTypeId}/properties/{propertyKey}",
|
|
10808
|
+
"GET /ex/jira/{cloudId}/rest/api/3/issuetypescheme",
|
|
10809
|
+
"POST /ex/jira/{cloudId}/rest/api/3/issuetypescheme",
|
|
10810
|
+
"GET /ex/jira/{cloudId}/rest/api/3/issuetypescheme/mapping",
|
|
10811
|
+
"GET /ex/jira/{cloudId}/rest/api/3/issuetypescheme/project",
|
|
10812
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/issuetypescheme/project",
|
|
10813
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/issuetypescheme/{issueTypeSchemeId}",
|
|
10814
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/issuetypescheme/{issueTypeSchemeId}",
|
|
10815
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/issuetypescheme/{issueTypeSchemeId}/issuetype",
|
|
10816
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/issuetypescheme/{issueTypeSchemeId}/issuetype/move",
|
|
10817
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/issuetypescheme/{issueTypeSchemeId}/issuetype/{issueTypeId}",
|
|
10818
|
+
"GET /ex/jira/{cloudId}/rest/api/3/issuetypescreenscheme",
|
|
10819
|
+
"POST /ex/jira/{cloudId}/rest/api/3/issuetypescreenscheme",
|
|
10820
|
+
"GET /ex/jira/{cloudId}/rest/api/3/issuetypescreenscheme/mapping",
|
|
10821
|
+
"GET /ex/jira/{cloudId}/rest/api/3/issuetypescreenscheme/project",
|
|
10822
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/issuetypescreenscheme/project",
|
|
10823
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/issuetypescreenscheme/{issueTypeScreenSchemeId}",
|
|
10824
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/issuetypescreenscheme/{issueTypeScreenSchemeId}",
|
|
10825
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/issuetypescreenscheme/{issueTypeScreenSchemeId}/mapping",
|
|
10826
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/issuetypescreenscheme/{issueTypeScreenSchemeId}/mapping/default",
|
|
10827
|
+
"POST /ex/jira/{cloudId}/rest/api/3/issuetypescreenscheme/{issueTypeScreenSchemeId}/mapping/remove",
|
|
10828
|
+
"GET /ex/jira/{cloudId}/rest/api/3/issuetypescreenscheme/{issueTypeScreenSchemeId}/project",
|
|
10829
|
+
"POST /ex/jira/{cloudId}/rest/api/3/jql/sanitize",
|
|
10830
|
+
"GET /ex/jira/{cloudId}/rest/api/3/license/approximateLicenseCount",
|
|
10831
|
+
"GET /ex/jira/{cloudId}/rest/api/3/license/approximateLicenseCount/product/{applicationKey}",
|
|
10832
|
+
"GET /ex/jira/{cloudId}/rest/api/3/mypreferences",
|
|
10833
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/mypreferences",
|
|
10834
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/mypreferences",
|
|
10835
|
+
"GET /ex/jira/{cloudId}/rest/api/3/mypreferences/locale",
|
|
10836
|
+
"GET /ex/jira/{cloudId}/rest/api/3/notificationscheme",
|
|
10837
|
+
"POST /ex/jira/{cloudId}/rest/api/3/notificationscheme",
|
|
10838
|
+
"GET /ex/jira/{cloudId}/rest/api/3/notificationscheme/project",
|
|
10839
|
+
"GET /ex/jira/{cloudId}/rest/api/3/notificationscheme/{id}",
|
|
10840
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/notificationscheme/{id}",
|
|
10841
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/notificationscheme/{id}/notification",
|
|
10842
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/notificationscheme/{notificationSchemeId}",
|
|
10843
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/notificationscheme/{notificationSchemeId}/notification/{notificationId}",
|
|
10844
|
+
"GET /ex/jira/{cloudId}/rest/api/3/permissions",
|
|
10845
|
+
"POST /ex/jira/{cloudId}/rest/api/3/permissionscheme",
|
|
10846
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/permissionscheme/{schemeId}",
|
|
10847
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/permissionscheme/{schemeId}",
|
|
10848
|
+
"POST /ex/jira/{cloudId}/rest/api/3/permissionscheme/{schemeId}/permission",
|
|
10849
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/permissionscheme/{schemeId}/permission/{permissionId}",
|
|
10850
|
+
"POST /ex/jira/{cloudId}/rest/api/3/priority",
|
|
10851
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/priority/default",
|
|
10852
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/priority/move",
|
|
10853
|
+
"GET /ex/jira/{cloudId}/rest/api/3/priority/search",
|
|
10854
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/priority/{id}",
|
|
10855
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/priority/{id}",
|
|
10856
|
+
"GET /ex/jira/{cloudId}/rest/api/3/priorityscheme",
|
|
10857
|
+
"POST /ex/jira/{cloudId}/rest/api/3/priorityscheme",
|
|
10858
|
+
"POST /ex/jira/{cloudId}/rest/api/3/priorityscheme/mappings",
|
|
10859
|
+
"GET /ex/jira/{cloudId}/rest/api/3/priorityscheme/priorities/available",
|
|
10860
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/priorityscheme/{schemeId}",
|
|
10861
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/priorityscheme/{schemeId}",
|
|
10862
|
+
"GET /ex/jira/{cloudId}/rest/api/3/priorityscheme/{schemeId}/priorities",
|
|
10863
|
+
"GET /ex/jira/{cloudId}/rest/api/3/priorityscheme/{schemeId}/projects",
|
|
10864
|
+
"POST /ex/jira/{cloudId}/rest/api/3/project",
|
|
10865
|
+
"POST /ex/jira/{cloudId}/rest/api/3/project-template",
|
|
10866
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/project-template/edit-template",
|
|
10867
|
+
"GET /ex/jira/{cloudId}/rest/api/3/project-template/live-template",
|
|
10868
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/project-template/remove-template",
|
|
10869
|
+
"POST /ex/jira/{cloudId}/rest/api/3/project-template/save-template",
|
|
10870
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/project/{projectIdOrKey}",
|
|
10871
|
+
"POST /ex/jira/{cloudId}/rest/api/3/project/{projectIdOrKey}/delete",
|
|
10872
|
+
"POST /ex/jira/{cloudId}/rest/api/3/project/{projectIdOrKey}/restore",
|
|
10873
|
+
"POST /ex/jira/{cloudId}/rest/api/3/project/{projectIdOrKey}/role/{id}",
|
|
10874
|
+
"POST /ex/jira/{cloudId}/rest/api/3/resolution",
|
|
10875
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/resolution/default",
|
|
10876
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/resolution/move",
|
|
10877
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/resolution/{id}",
|
|
10878
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/resolution/{id}",
|
|
10879
|
+
"GET /ex/jira/{cloudId}/rest/api/3/role",
|
|
10880
|
+
"POST /ex/jira/{cloudId}/rest/api/3/role",
|
|
10881
|
+
"GET /ex/jira/{cloudId}/rest/api/3/role/{id}",
|
|
10882
|
+
"POST /ex/jira/{cloudId}/rest/api/3/role/{id}",
|
|
10883
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/role/{id}",
|
|
10884
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/role/{id}",
|
|
10885
|
+
"GET /ex/jira/{cloudId}/rest/api/3/role/{id}/actors",
|
|
10886
|
+
"POST /ex/jira/{cloudId}/rest/api/3/role/{id}/actors",
|
|
10887
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/role/{id}/actors",
|
|
10888
|
+
"POST /ex/jira/{cloudId}/rest/api/3/screenscheme",
|
|
10889
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/screenscheme/{screenSchemeId}",
|
|
10890
|
+
"GET /ex/jira/{cloudId}/rest/api/3/securitylevel/{id}",
|
|
10891
|
+
"GET /ex/jira/{cloudId}/rest/api/3/settings/columns",
|
|
10892
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/settings/columns",
|
|
10893
|
+
"GET /ex/jira/{cloudId}/rest/api/3/statuses",
|
|
10894
|
+
"POST /ex/jira/{cloudId}/rest/api/3/statuses",
|
|
10895
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/statuses",
|
|
10896
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/statuses",
|
|
10897
|
+
"GET /ex/jira/{cloudId}/rest/api/3/statuses/byNames",
|
|
10898
|
+
"GET /ex/jira/{cloudId}/rest/api/3/statuses/search",
|
|
10899
|
+
"GET /ex/jira/{cloudId}/rest/api/3/statuses/{statusId}/project/{projectId}/issueTypeUsages",
|
|
10900
|
+
"GET /ex/jira/{cloudId}/rest/api/3/statuses/{statusId}/projectUsages",
|
|
10901
|
+
"GET /ex/jira/{cloudId}/rest/api/3/statuses/{statusId}/workflowUsages",
|
|
10902
|
+
"GET /ex/jira/{cloudId}/rest/api/3/universal_avatar/type/{type}/owner/{entityId}",
|
|
10903
|
+
"POST /ex/jira/{cloudId}/rest/api/3/universal_avatar/type/{type}/owner/{entityId}",
|
|
10904
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/universal_avatar/type/{type}/owner/{owningObjectId}/avatar/{id}",
|
|
10905
|
+
"POST /ex/jira/{cloudId}/rest/api/3/user",
|
|
10906
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/user",
|
|
10907
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/user/columns",
|
|
10908
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/user/columns",
|
|
10909
|
+
"GET /ex/jira/{cloudId}/rest/api/3/workflow",
|
|
10910
|
+
"POST /ex/jira/{cloudId}/rest/api/3/workflow",
|
|
10911
|
+
"POST /ex/jira/{cloudId}/rest/api/3/workflow/history",
|
|
10912
|
+
"POST /ex/jira/{cloudId}/rest/api/3/workflow/history/list",
|
|
10913
|
+
"GET /ex/jira/{cloudId}/rest/api/3/workflow/rule/config",
|
|
10914
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/workflow/rule/config",
|
|
10915
|
+
"GET /ex/jira/{cloudId}/rest/api/3/workflow/transitions/{transitionId}/properties",
|
|
10916
|
+
"POST /ex/jira/{cloudId}/rest/api/3/workflow/transitions/{transitionId}/properties",
|
|
10917
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/workflow/transitions/{transitionId}/properties",
|
|
10918
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/workflow/transitions/{transitionId}/properties",
|
|
10919
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/workflow/{entityId}",
|
|
10920
|
+
"GET /ex/jira/{cloudId}/rest/api/3/workflow/{workflowId}/project/{projectId}/issueTypeUsages",
|
|
10921
|
+
"GET /ex/jira/{cloudId}/rest/api/3/workflow/{workflowId}/projectUsages",
|
|
10922
|
+
"GET /ex/jira/{cloudId}/rest/api/3/workflow/{workflowId}/workflowSchemes",
|
|
10923
|
+
"POST /ex/jira/{cloudId}/rest/api/3/workflows",
|
|
10924
|
+
"GET /ex/jira/{cloudId}/rest/api/3/workflows/capabilities",
|
|
10925
|
+
"POST /ex/jira/{cloudId}/rest/api/3/workflows/create",
|
|
10926
|
+
"POST /ex/jira/{cloudId}/rest/api/3/workflows/create/validation",
|
|
10927
|
+
"GET /ex/jira/{cloudId}/rest/api/3/workflows/defaultEditor",
|
|
10928
|
+
"POST /ex/jira/{cloudId}/rest/api/3/workflows/preview",
|
|
10929
|
+
"GET /ex/jira/{cloudId}/rest/api/3/workflows/search",
|
|
10930
|
+
"POST /ex/jira/{cloudId}/rest/api/3/workflows/update",
|
|
10931
|
+
"POST /ex/jira/{cloudId}/rest/api/3/workflows/update/validation",
|
|
10932
|
+
"GET /ex/jira/{cloudId}/rest/api/3/workflowscheme",
|
|
10933
|
+
"POST /ex/jira/{cloudId}/rest/api/3/workflowscheme",
|
|
10934
|
+
"GET /ex/jira/{cloudId}/rest/api/3/workflowscheme/project",
|
|
10935
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/workflowscheme/project",
|
|
10936
|
+
"POST /ex/jira/{cloudId}/rest/api/3/workflowscheme/project/switch",
|
|
10937
|
+
"POST /ex/jira/{cloudId}/rest/api/3/workflowscheme/read",
|
|
10938
|
+
"POST /ex/jira/{cloudId}/rest/api/3/workflowscheme/update",
|
|
10939
|
+
"POST /ex/jira/{cloudId}/rest/api/3/workflowscheme/update/mappings",
|
|
10940
|
+
"GET /ex/jira/{cloudId}/rest/api/3/workflowscheme/{id}",
|
|
10941
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/workflowscheme/{id}",
|
|
10942
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/workflowscheme/{id}",
|
|
10943
|
+
"POST /ex/jira/{cloudId}/rest/api/3/workflowscheme/{id}/createdraft",
|
|
10944
|
+
"GET /ex/jira/{cloudId}/rest/api/3/workflowscheme/{id}/default",
|
|
10945
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/workflowscheme/{id}/default",
|
|
10946
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/workflowscheme/{id}/default",
|
|
10947
|
+
"GET /ex/jira/{cloudId}/rest/api/3/workflowscheme/{id}/draft",
|
|
10948
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/workflowscheme/{id}/draft",
|
|
10949
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/workflowscheme/{id}/draft",
|
|
10950
|
+
"GET /ex/jira/{cloudId}/rest/api/3/workflowscheme/{id}/draft/default",
|
|
10951
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/workflowscheme/{id}/draft/default",
|
|
10952
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/workflowscheme/{id}/draft/default",
|
|
10953
|
+
"GET /ex/jira/{cloudId}/rest/api/3/workflowscheme/{id}/draft/issuetype/{issueType}",
|
|
10954
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/workflowscheme/{id}/draft/issuetype/{issueType}",
|
|
10955
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/workflowscheme/{id}/draft/issuetype/{issueType}",
|
|
10956
|
+
"POST /ex/jira/{cloudId}/rest/api/3/workflowscheme/{id}/draft/publish",
|
|
10957
|
+
"GET /ex/jira/{cloudId}/rest/api/3/workflowscheme/{id}/draft/workflow",
|
|
10958
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/workflowscheme/{id}/draft/workflow",
|
|
10959
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/workflowscheme/{id}/draft/workflow",
|
|
10960
|
+
"GET /ex/jira/{cloudId}/rest/api/3/workflowscheme/{id}/issuetype/{issueType}",
|
|
10961
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/workflowscheme/{id}/issuetype/{issueType}",
|
|
10962
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/workflowscheme/{id}/issuetype/{issueType}",
|
|
10963
|
+
"GET /ex/jira/{cloudId}/rest/api/3/workflowscheme/{id}/workflow",
|
|
10964
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/workflowscheme/{id}/workflow",
|
|
10965
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/workflowscheme/{id}/workflow",
|
|
10966
|
+
"GET /ex/jira/{cloudId}/rest/api/3/workflowscheme/{workflowSchemeId}/projectUsages"
|
|
10967
|
+
]
|
|
10968
|
+
},
|
|
10969
|
+
{
|
|
10970
|
+
name: "manage:jira-project",
|
|
10971
|
+
description: "Create and edit project settings and create new project-level objects, for example, versions, components.",
|
|
10972
|
+
rules: [
|
|
10973
|
+
"POST /ex/jira/{cloudId}/rest/api/3/component",
|
|
10974
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/component/{id}",
|
|
10975
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/component/{id}",
|
|
10976
|
+
"GET /ex/jira/{cloudId}/rest/api/3/field/{fieldId}/contexts",
|
|
10977
|
+
"GET /ex/jira/{cloudId}/rest/api/3/field/{fieldId}/screens",
|
|
10978
|
+
"POST /ex/jira/{cloudId}/rest/api/3/forge/panel/action/bulk/async",
|
|
10979
|
+
"GET /ex/jira/{cloudId}/rest/api/3/issuesecurityschemes",
|
|
10980
|
+
"GET /ex/jira/{cloudId}/rest/api/3/issuesecurityschemes/{id}",
|
|
10981
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/project/{projectIdOrKey}",
|
|
10982
|
+
"POST /ex/jira/{cloudId}/rest/api/3/project/{projectIdOrKey}/archive",
|
|
10983
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/project/{projectIdOrKey}/avatar",
|
|
10984
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/project/{projectIdOrKey}/avatar/{id}",
|
|
10985
|
+
"POST /ex/jira/{cloudId}/rest/api/3/project/{projectIdOrKey}/avatar2",
|
|
10986
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/project/{projectIdOrKey}/classification-level/default",
|
|
10987
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/project/{projectIdOrKey}/classification-level/default",
|
|
10988
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/project/{projectIdOrKey}/features/{featureKey}",
|
|
10989
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/project/{projectIdOrKey}/properties/{propertyKey}",
|
|
10990
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/project/{projectIdOrKey}/properties/{propertyKey}",
|
|
10991
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/project/{projectIdOrKey}/role/{id}",
|
|
10992
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/project/{projectIdOrKey}/role/{id}",
|
|
10993
|
+
"GET /ex/jira/{cloudId}/rest/api/3/project/{projectId}/email",
|
|
10994
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/project/{projectId}/email",
|
|
10995
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/project/{projectKeyOrId}/permissionscheme",
|
|
10996
|
+
"POST /ex/jira/{cloudId}/rest/api/3/projectCategory",
|
|
10997
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/projectCategory/{id}",
|
|
10998
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/projectCategory/{id}",
|
|
10999
|
+
"GET /ex/jira/{cloudId}/rest/api/3/screens",
|
|
11000
|
+
"POST /ex/jira/{cloudId}/rest/api/3/screens",
|
|
11001
|
+
"POST /ex/jira/{cloudId}/rest/api/3/screens/addToDefault/{fieldId}",
|
|
11002
|
+
"GET /ex/jira/{cloudId}/rest/api/3/screens/tabs",
|
|
11003
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/screens/{screenId}",
|
|
11004
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/screens/{screenId}",
|
|
11005
|
+
"GET /ex/jira/{cloudId}/rest/api/3/screens/{screenId}/availableFields",
|
|
11006
|
+
"GET /ex/jira/{cloudId}/rest/api/3/screens/{screenId}/tabs",
|
|
11007
|
+
"POST /ex/jira/{cloudId}/rest/api/3/screens/{screenId}/tabs",
|
|
11008
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/screens/{screenId}/tabs/{tabId}",
|
|
11009
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/screens/{screenId}/tabs/{tabId}",
|
|
11010
|
+
"GET /ex/jira/{cloudId}/rest/api/3/screens/{screenId}/tabs/{tabId}/fields",
|
|
11011
|
+
"POST /ex/jira/{cloudId}/rest/api/3/screens/{screenId}/tabs/{tabId}/fields",
|
|
11012
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/screens/{screenId}/tabs/{tabId}/fields/{id}",
|
|
11013
|
+
"POST /ex/jira/{cloudId}/rest/api/3/screens/{screenId}/tabs/{tabId}/fields/{id}/move",
|
|
11014
|
+
"POST /ex/jira/{cloudId}/rest/api/3/screens/{screenId}/tabs/{tabId}/move/{pos}",
|
|
11015
|
+
"GET /ex/jira/{cloudId}/rest/api/3/screenscheme",
|
|
11016
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/screenscheme/{screenSchemeId}",
|
|
11017
|
+
"POST /ex/jira/{cloudId}/rest/api/3/version",
|
|
11018
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/version/{id}",
|
|
11019
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/version/{id}",
|
|
11020
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/version/{id}/mergeto/{moveIssuesTo}",
|
|
11021
|
+
"POST /ex/jira/{cloudId}/rest/api/3/version/{id}/move",
|
|
11022
|
+
"POST /ex/jira/{cloudId}/rest/api/3/version/{id}/removeAndSwap",
|
|
11023
|
+
"GET /ex/jira/{cloudId}/rest/api/3/workflow/search"
|
|
11024
|
+
]
|
|
11025
|
+
},
|
|
11026
|
+
{
|
|
11027
|
+
name: "manage:jira-webhook",
|
|
11028
|
+
description: "Manage Jira webhooks. Enables an OAuth app to register and unregister dynamic webhooks in Jira. It also provides for fetching of registered webhooks.",
|
|
11029
|
+
rules: [
|
|
11030
|
+
"GET /ex/jira/{cloudId}/rest/api/3/webhook",
|
|
11031
|
+
"POST /ex/jira/{cloudId}/rest/api/3/webhook",
|
|
11032
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/webhook",
|
|
11033
|
+
"GET /ex/jira/{cloudId}/rest/api/3/webhook/failed",
|
|
11034
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/webhook/refresh"
|
|
11035
|
+
]
|
|
11036
|
+
},
|
|
11037
|
+
{
|
|
11038
|
+
name: "read:jira-user",
|
|
11039
|
+
description: "View user information in Jira that you have access to, including usernames, email addresses, and avatars.",
|
|
11040
|
+
rules: [
|
|
11041
|
+
"GET /ex/jira/{cloudId}/rest/api/3/configuration",
|
|
11042
|
+
"POST /ex/jira/{cloudId}/rest/api/3/expression/analyse",
|
|
11043
|
+
"POST /ex/jira/{cloudId}/rest/api/3/expression/eval",
|
|
11044
|
+
"POST /ex/jira/{cloudId}/rest/api/3/expression/evaluate",
|
|
11045
|
+
"GET /ex/jira/{cloudId}/rest/api/3/group",
|
|
11046
|
+
"GET /ex/jira/{cloudId}/rest/api/3/group/bulk",
|
|
11047
|
+
"GET /ex/jira/{cloudId}/rest/api/3/groups/picker",
|
|
11048
|
+
"POST /ex/jira/{cloudId}/rest/api/3/jql/pdcleaner",
|
|
11049
|
+
"GET /ex/jira/{cloudId}/rest/api/3/myself",
|
|
11050
|
+
"GET /ex/jira/{cloudId}/rest/api/3/user",
|
|
11051
|
+
"GET /ex/jira/{cloudId}/rest/api/3/user/assignable/multiProjectSearch",
|
|
11052
|
+
"GET /ex/jira/{cloudId}/rest/api/3/user/assignable/search",
|
|
11053
|
+
"GET /ex/jira/{cloudId}/rest/api/3/user/bulk",
|
|
11054
|
+
"GET /ex/jira/{cloudId}/rest/api/3/user/bulk/migration",
|
|
11055
|
+
"GET /ex/jira/{cloudId}/rest/api/3/user/columns",
|
|
11056
|
+
"GET /ex/jira/{cloudId}/rest/api/3/user/groups",
|
|
11057
|
+
"GET /ex/jira/{cloudId}/rest/api/3/user/permission/search",
|
|
11058
|
+
"GET /ex/jira/{cloudId}/rest/api/3/user/picker",
|
|
11059
|
+
"GET /ex/jira/{cloudId}/rest/api/3/user/properties",
|
|
11060
|
+
"GET /ex/jira/{cloudId}/rest/api/3/user/properties/{propertyKey}",
|
|
11061
|
+
"GET /ex/jira/{cloudId}/rest/api/3/user/search",
|
|
11062
|
+
"GET /ex/jira/{cloudId}/rest/api/3/user/search/query",
|
|
11063
|
+
"GET /ex/jira/{cloudId}/rest/api/3/user/search/query/key",
|
|
11064
|
+
"GET /ex/jira/{cloudId}/rest/api/3/user/viewissue/search",
|
|
11065
|
+
"GET /ex/jira/{cloudId}/rest/api/3/users",
|
|
11066
|
+
"GET /ex/jira/{cloudId}/rest/api/3/users/search"
|
|
11067
|
+
]
|
|
11068
|
+
},
|
|
11069
|
+
{
|
|
11070
|
+
name: "read:jira-work",
|
|
11071
|
+
description: "Read project and issue data. Search for issues and objects associated with issues (such as attachments and worklogs).",
|
|
11072
|
+
rules: [
|
|
11073
|
+
"GET /ex/jira/{cloudId}/rest/api/3/attachment/content/{id}",
|
|
11074
|
+
"GET /ex/jira/{cloudId}/rest/api/3/attachment/meta",
|
|
11075
|
+
"GET /ex/jira/{cloudId}/rest/api/3/attachment/thumbnail/{id}",
|
|
11076
|
+
"GET /ex/jira/{cloudId}/rest/api/3/attachment/{id}",
|
|
11077
|
+
"GET /ex/jira/{cloudId}/rest/api/3/attachment/{id}/expand/human",
|
|
11078
|
+
"GET /ex/jira/{cloudId}/rest/api/3/attachment/{id}/expand/raw",
|
|
11079
|
+
"GET /ex/jira/{cloudId}/rest/api/3/bulk/issues/fields",
|
|
11080
|
+
"GET /ex/jira/{cloudId}/rest/api/3/bulk/issues/transition",
|
|
11081
|
+
"GET /ex/jira/{cloudId}/rest/api/3/bulk/queue/{taskId}",
|
|
11082
|
+
"POST /ex/jira/{cloudId}/rest/api/3/changelog/bulkfetch",
|
|
11083
|
+
"GET /ex/jira/{cloudId}/rest/api/3/classification-levels",
|
|
11084
|
+
"POST /ex/jira/{cloudId}/rest/api/3/comment/list",
|
|
11085
|
+
"GET /ex/jira/{cloudId}/rest/api/3/comment/{commentId}/properties",
|
|
11086
|
+
"GET /ex/jira/{cloudId}/rest/api/3/comment/{commentId}/properties/{propertyKey}",
|
|
11087
|
+
"GET /ex/jira/{cloudId}/rest/api/3/component",
|
|
11088
|
+
"GET /ex/jira/{cloudId}/rest/api/3/component/{id}",
|
|
11089
|
+
"GET /ex/jira/{cloudId}/rest/api/3/component/{id}/relatedIssueCounts",
|
|
11090
|
+
"GET /ex/jira/{cloudId}/rest/api/3/customFieldOption/{id}",
|
|
11091
|
+
"GET /ex/jira/{cloudId}/rest/api/3/dashboard",
|
|
11092
|
+
"GET /ex/jira/{cloudId}/rest/api/3/dashboard/gadgets",
|
|
11093
|
+
"GET /ex/jira/{cloudId}/rest/api/3/dashboard/search",
|
|
11094
|
+
"GET /ex/jira/{cloudId}/rest/api/3/dashboard/{dashboardId}/gadget",
|
|
11095
|
+
"POST /ex/jira/{cloudId}/rest/api/3/dashboard/{dashboardId}/gadget",
|
|
11096
|
+
"GET /ex/jira/{cloudId}/rest/api/3/dashboard/{dashboardId}/items/{itemId}/properties",
|
|
11097
|
+
"GET /ex/jira/{cloudId}/rest/api/3/dashboard/{dashboardId}/items/{itemId}/properties/{propertyKey}",
|
|
11098
|
+
"GET /ex/jira/{cloudId}/rest/api/3/dashboard/{id}",
|
|
11099
|
+
"GET /ex/jira/{cloudId}/rest/api/3/data-policy",
|
|
11100
|
+
"GET /ex/jira/{cloudId}/rest/api/3/data-policy/project",
|
|
11101
|
+
"POST /ex/jira/{cloudId}/rest/api/3/expression/analyse",
|
|
11102
|
+
"POST /ex/jira/{cloudId}/rest/api/3/expression/eval",
|
|
11103
|
+
"POST /ex/jira/{cloudId}/rest/api/3/expression/evaluate",
|
|
11104
|
+
"GET /ex/jira/{cloudId}/rest/api/3/field",
|
|
11105
|
+
"GET /ex/jira/{cloudId}/rest/api/3/field/search",
|
|
11106
|
+
"GET /ex/jira/{cloudId}/rest/api/3/field/search/trashed",
|
|
11107
|
+
"GET /ex/jira/{cloudId}/rest/api/3/field/{fieldKey}/option/suggestions/edit",
|
|
11108
|
+
"GET /ex/jira/{cloudId}/rest/api/3/field/{fieldKey}/option/suggestions/search",
|
|
11109
|
+
"GET /ex/jira/{cloudId}/rest/api/3/filter/defaultShareScope",
|
|
11110
|
+
"GET /ex/jira/{cloudId}/rest/api/3/filter/favourite",
|
|
11111
|
+
"GET /ex/jira/{cloudId}/rest/api/3/filter/my",
|
|
11112
|
+
"GET /ex/jira/{cloudId}/rest/api/3/filter/search",
|
|
11113
|
+
"GET /ex/jira/{cloudId}/rest/api/3/filter/{id}",
|
|
11114
|
+
"GET /ex/jira/{cloudId}/rest/api/3/filter/{id}/columns",
|
|
11115
|
+
"GET /ex/jira/{cloudId}/rest/api/3/filter/{id}/permission",
|
|
11116
|
+
"GET /ex/jira/{cloudId}/rest/api/3/filter/{id}/permission/{permissionId}",
|
|
11117
|
+
"GET /ex/jira/{cloudId}/rest/api/3/groupuserpicker",
|
|
11118
|
+
"POST /ex/jira/{cloudId}/rest/api/3/issue/bulkfetch",
|
|
11119
|
+
"GET /ex/jira/{cloudId}/rest/api/3/issue/createmeta",
|
|
11120
|
+
"GET /ex/jira/{cloudId}/rest/api/3/issue/createmeta/{projectIdOrKey}/issuetypes",
|
|
11121
|
+
"GET /ex/jira/{cloudId}/rest/api/3/issue/createmeta/{projectIdOrKey}/issuetypes/{issueTypeId}",
|
|
11122
|
+
"GET /ex/jira/{cloudId}/rest/api/3/issue/limit/report",
|
|
11123
|
+
"GET /ex/jira/{cloudId}/rest/api/3/issue/picker",
|
|
11124
|
+
"POST /ex/jira/{cloudId}/rest/api/3/issue/watching",
|
|
11125
|
+
"GET /ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}",
|
|
11126
|
+
"GET /ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/changelog",
|
|
11127
|
+
"POST /ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/changelog/list",
|
|
11128
|
+
"GET /ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/comment",
|
|
11129
|
+
"GET /ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/comment/{id}",
|
|
11130
|
+
"GET /ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/editmeta",
|
|
11131
|
+
"GET /ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/properties",
|
|
11132
|
+
"GET /ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/properties/{propertyKey}",
|
|
11133
|
+
"GET /ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/remotelink",
|
|
11134
|
+
"GET /ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/remotelink/{linkId}",
|
|
11135
|
+
"GET /ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/transitions",
|
|
11136
|
+
"GET /ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/votes",
|
|
11137
|
+
"GET /ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/watchers",
|
|
11138
|
+
"GET /ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/worklog",
|
|
11139
|
+
"GET /ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/worklog/{id}",
|
|
11140
|
+
"GET /ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/worklog/{worklogId}/properties",
|
|
11141
|
+
"GET /ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/worklog/{worklogId}/properties/{propertyKey}",
|
|
11142
|
+
"GET /ex/jira/{cloudId}/rest/api/3/issueLink/{linkId}",
|
|
11143
|
+
"GET /ex/jira/{cloudId}/rest/api/3/issueLinkType",
|
|
11144
|
+
"GET /ex/jira/{cloudId}/rest/api/3/issueLinkType/{issueLinkTypeId}",
|
|
11145
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/issues/archive/export",
|
|
11146
|
+
"GET /ex/jira/{cloudId}/rest/api/3/issuetype",
|
|
11147
|
+
"GET /ex/jira/{cloudId}/rest/api/3/issuetype/project",
|
|
11148
|
+
"GET /ex/jira/{cloudId}/rest/api/3/issuetype/{id}",
|
|
11149
|
+
"GET /ex/jira/{cloudId}/rest/api/3/issuetype/{id}/alternatives",
|
|
11150
|
+
"GET /ex/jira/{cloudId}/rest/api/3/issuetype/{issueTypeId}/properties",
|
|
11151
|
+
"GET /ex/jira/{cloudId}/rest/api/3/issuetype/{issueTypeId}/properties/{propertyKey}",
|
|
11152
|
+
"GET /ex/jira/{cloudId}/rest/api/3/jql/autocompletedata",
|
|
11153
|
+
"POST /ex/jira/{cloudId}/rest/api/3/jql/autocompletedata",
|
|
11154
|
+
"GET /ex/jira/{cloudId}/rest/api/3/jql/autocompletedata/suggestions",
|
|
11155
|
+
"POST /ex/jira/{cloudId}/rest/api/3/jql/match",
|
|
11156
|
+
"POST /ex/jira/{cloudId}/rest/api/3/jql/parse",
|
|
11157
|
+
"GET /ex/jira/{cloudId}/rest/api/3/label",
|
|
11158
|
+
"GET /ex/jira/{cloudId}/rest/api/3/mypermissions",
|
|
11159
|
+
"POST /ex/jira/{cloudId}/rest/api/3/permissions/project",
|
|
11160
|
+
"GET /ex/jira/{cloudId}/rest/api/3/permissionscheme",
|
|
11161
|
+
"GET /ex/jira/{cloudId}/rest/api/3/permissionscheme/{schemeId}",
|
|
11162
|
+
"GET /ex/jira/{cloudId}/rest/api/3/permissionscheme/{schemeId}/permission",
|
|
11163
|
+
"GET /ex/jira/{cloudId}/rest/api/3/permissionscheme/{schemeId}/permission/{permissionId}",
|
|
11164
|
+
"GET /ex/jira/{cloudId}/rest/api/3/plans/plan",
|
|
11165
|
+
"GET /ex/jira/{cloudId}/rest/api/3/plans/plan/{planId}",
|
|
11166
|
+
"GET /ex/jira/{cloudId}/rest/api/3/plans/plan/{planId}/team",
|
|
11167
|
+
"GET /ex/jira/{cloudId}/rest/api/3/plans/plan/{planId}/team/atlassian/{atlassianTeamId}",
|
|
11168
|
+
"GET /ex/jira/{cloudId}/rest/api/3/plans/plan/{planId}/team/planonly/{planOnlyTeamId}",
|
|
11169
|
+
"GET /ex/jira/{cloudId}/rest/api/3/priority",
|
|
11170
|
+
"GET /ex/jira/{cloudId}/rest/api/3/priority/{id}",
|
|
11171
|
+
"GET /ex/jira/{cloudId}/rest/api/3/project",
|
|
11172
|
+
"GET /ex/jira/{cloudId}/rest/api/3/project/recent",
|
|
11173
|
+
"GET /ex/jira/{cloudId}/rest/api/3/project/search",
|
|
11174
|
+
"GET /ex/jira/{cloudId}/rest/api/3/project/type",
|
|
11175
|
+
"GET /ex/jira/{cloudId}/rest/api/3/project/type/accessible",
|
|
11176
|
+
"GET /ex/jira/{cloudId}/rest/api/3/project/type/{projectTypeKey}",
|
|
11177
|
+
"GET /ex/jira/{cloudId}/rest/api/3/project/type/{projectTypeKey}/accessible",
|
|
11178
|
+
"GET /ex/jira/{cloudId}/rest/api/3/project/{projectIdOrKey}",
|
|
11179
|
+
"GET /ex/jira/{cloudId}/rest/api/3/project/{projectIdOrKey}/avatars",
|
|
11180
|
+
"GET /ex/jira/{cloudId}/rest/api/3/project/{projectIdOrKey}/classification-config",
|
|
11181
|
+
"GET /ex/jira/{cloudId}/rest/api/3/project/{projectIdOrKey}/classification-level/default",
|
|
11182
|
+
"GET /ex/jira/{cloudId}/rest/api/3/project/{projectIdOrKey}/component",
|
|
11183
|
+
"GET /ex/jira/{cloudId}/rest/api/3/project/{projectIdOrKey}/components",
|
|
11184
|
+
"GET /ex/jira/{cloudId}/rest/api/3/project/{projectIdOrKey}/features",
|
|
11185
|
+
"GET /ex/jira/{cloudId}/rest/api/3/project/{projectIdOrKey}/properties",
|
|
11186
|
+
"GET /ex/jira/{cloudId}/rest/api/3/project/{projectIdOrKey}/properties/{propertyKey}",
|
|
11187
|
+
"GET /ex/jira/{cloudId}/rest/api/3/project/{projectIdOrKey}/role",
|
|
11188
|
+
"GET /ex/jira/{cloudId}/rest/api/3/project/{projectIdOrKey}/role/{id}",
|
|
11189
|
+
"GET /ex/jira/{cloudId}/rest/api/3/project/{projectIdOrKey}/roledetails",
|
|
11190
|
+
"GET /ex/jira/{cloudId}/rest/api/3/project/{projectIdOrKey}/statuses",
|
|
11191
|
+
"GET /ex/jira/{cloudId}/rest/api/3/project/{projectIdOrKey}/version",
|
|
11192
|
+
"GET /ex/jira/{cloudId}/rest/api/3/project/{projectIdOrKey}/versions",
|
|
11193
|
+
"GET /ex/jira/{cloudId}/rest/api/3/project/{projectId}/hierarchy",
|
|
11194
|
+
"GET /ex/jira/{cloudId}/rest/api/3/project/{projectKeyOrId}/issuesecuritylevelscheme",
|
|
11195
|
+
"GET /ex/jira/{cloudId}/rest/api/3/project/{projectKeyOrId}/notificationscheme",
|
|
11196
|
+
"GET /ex/jira/{cloudId}/rest/api/3/project/{projectKeyOrId}/permissionscheme",
|
|
11197
|
+
"GET /ex/jira/{cloudId}/rest/api/3/project/{projectKeyOrId}/securitylevel",
|
|
11198
|
+
"GET /ex/jira/{cloudId}/rest/api/3/projectCategory",
|
|
11199
|
+
"GET /ex/jira/{cloudId}/rest/api/3/projectCategory/{id}",
|
|
11200
|
+
"GET /ex/jira/{cloudId}/rest/api/3/projects/fields",
|
|
11201
|
+
"GET /ex/jira/{cloudId}/rest/api/3/projectvalidate/key",
|
|
11202
|
+
"GET /ex/jira/{cloudId}/rest/api/3/projectvalidate/validProjectKey",
|
|
11203
|
+
"GET /ex/jira/{cloudId}/rest/api/3/projectvalidate/validProjectName",
|
|
11204
|
+
"GET /ex/jira/{cloudId}/rest/api/3/resolution",
|
|
11205
|
+
"GET /ex/jira/{cloudId}/rest/api/3/resolution/search",
|
|
11206
|
+
"GET /ex/jira/{cloudId}/rest/api/3/resolution/{id}",
|
|
11207
|
+
"GET /ex/jira/{cloudId}/rest/api/3/search",
|
|
11208
|
+
"POST /ex/jira/{cloudId}/rest/api/3/search",
|
|
11209
|
+
"POST /ex/jira/{cloudId}/rest/api/3/search/approximate-count",
|
|
11210
|
+
"GET /ex/jira/{cloudId}/rest/api/3/search/jql",
|
|
11211
|
+
"POST /ex/jira/{cloudId}/rest/api/3/search/jql",
|
|
11212
|
+
"GET /ex/jira/{cloudId}/rest/api/3/status",
|
|
11213
|
+
"GET /ex/jira/{cloudId}/rest/api/3/status/{idOrName}",
|
|
11214
|
+
"GET /ex/jira/{cloudId}/rest/api/3/statuscategory",
|
|
11215
|
+
"GET /ex/jira/{cloudId}/rest/api/3/statuscategory/{idOrKey}",
|
|
11216
|
+
"GET /ex/jira/{cloudId}/rest/api/3/task/{taskId}",
|
|
11217
|
+
"GET /ex/jira/{cloudId}/rest/api/3/uiModifications",
|
|
11218
|
+
"POST /ex/jira/{cloudId}/rest/api/3/uiModifications",
|
|
11219
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/uiModifications/{uiModificationId}",
|
|
11220
|
+
"GET /ex/jira/{cloudId}/rest/api/3/universal_avatar/view/type/{type}",
|
|
11221
|
+
"GET /ex/jira/{cloudId}/rest/api/3/universal_avatar/view/type/{type}/avatar/{id}",
|
|
11222
|
+
"GET /ex/jira/{cloudId}/rest/api/3/universal_avatar/view/type/{type}/owner/{entityId}",
|
|
11223
|
+
"GET /ex/jira/{cloudId}/rest/api/3/version/{id}",
|
|
11224
|
+
"GET /ex/jira/{cloudId}/rest/api/3/version/{id}/relatedIssueCounts",
|
|
11225
|
+
"GET /ex/jira/{cloudId}/rest/api/3/version/{id}/relatedwork",
|
|
11226
|
+
"GET /ex/jira/{cloudId}/rest/api/3/version/{id}/unresolvedIssueCount",
|
|
11227
|
+
"GET /ex/jira/{cloudId}/rest/api/3/webhook",
|
|
11228
|
+
"POST /ex/jira/{cloudId}/rest/api/3/webhook",
|
|
11229
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/webhook",
|
|
11230
|
+
"GET /ex/jira/{cloudId}/rest/api/3/webhook/failed",
|
|
11231
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/webhook/refresh",
|
|
11232
|
+
"GET /ex/jira/{cloudId}/rest/api/3/worklog/deleted",
|
|
11233
|
+
"POST /ex/jira/{cloudId}/rest/api/3/worklog/list",
|
|
11234
|
+
"GET /ex/jira/{cloudId}/rest/api/3/worklog/updated"
|
|
11235
|
+
]
|
|
11236
|
+
},
|
|
11237
|
+
{
|
|
11238
|
+
name: "write:jira-work",
|
|
11239
|
+
description: "Create and edit issues in Jira, post comments, create worklogs, and delete issues.",
|
|
11240
|
+
rules: [
|
|
11241
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/attachment/{id}",
|
|
11242
|
+
"POST /ex/jira/{cloudId}/rest/api/3/bulk/issues/delete",
|
|
11243
|
+
"POST /ex/jira/{cloudId}/rest/api/3/bulk/issues/fields",
|
|
11244
|
+
"POST /ex/jira/{cloudId}/rest/api/3/bulk/issues/move",
|
|
11245
|
+
"POST /ex/jira/{cloudId}/rest/api/3/bulk/issues/transition",
|
|
11246
|
+
"POST /ex/jira/{cloudId}/rest/api/3/bulk/issues/unwatch",
|
|
11247
|
+
"POST /ex/jira/{cloudId}/rest/api/3/bulk/issues/watch",
|
|
11248
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/comment/{commentId}/properties/{propertyKey}",
|
|
11249
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/comment/{commentId}/properties/{propertyKey}",
|
|
11250
|
+
"POST /ex/jira/{cloudId}/rest/api/3/dashboard",
|
|
11251
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/dashboard/bulk/edit",
|
|
11252
|
+
"POST /ex/jira/{cloudId}/rest/api/3/dashboard/{dashboardId}/gadget",
|
|
11253
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/dashboard/{dashboardId}/gadget/{gadgetId}",
|
|
11254
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/dashboard/{dashboardId}/gadget/{gadgetId}",
|
|
11255
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/dashboard/{dashboardId}/items/{itemId}/properties/{propertyKey}",
|
|
11256
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/dashboard/{dashboardId}/items/{itemId}/properties/{propertyKey}",
|
|
11257
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/dashboard/{id}",
|
|
11258
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/dashboard/{id}",
|
|
11259
|
+
"POST /ex/jira/{cloudId}/rest/api/3/dashboard/{id}/copy",
|
|
11260
|
+
"POST /ex/jira/{cloudId}/rest/api/3/filter",
|
|
11261
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/filter/defaultShareScope",
|
|
11262
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/filter/{id}",
|
|
11263
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/filter/{id}",
|
|
11264
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/filter/{id}/columns",
|
|
11265
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/filter/{id}/columns",
|
|
11266
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/filter/{id}/favourite",
|
|
11267
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/filter/{id}/favourite",
|
|
11268
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/filter/{id}/owner",
|
|
11269
|
+
"POST /ex/jira/{cloudId}/rest/api/3/filter/{id}/permission",
|
|
11270
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/filter/{id}/permission/{permissionId}",
|
|
11271
|
+
"POST /ex/jira/{cloudId}/rest/api/3/issue",
|
|
11272
|
+
"POST /ex/jira/{cloudId}/rest/api/3/issue/archive",
|
|
11273
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/issue/archive",
|
|
11274
|
+
"POST /ex/jira/{cloudId}/rest/api/3/issue/bulk",
|
|
11275
|
+
"POST /ex/jira/{cloudId}/rest/api/3/issue/properties",
|
|
11276
|
+
"POST /ex/jira/{cloudId}/rest/api/3/issue/properties/multi",
|
|
11277
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/issue/properties/{propertyKey}",
|
|
11278
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/issue/properties/{propertyKey}",
|
|
11279
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/issue/unarchive",
|
|
11280
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}",
|
|
11281
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}",
|
|
11282
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/assignee",
|
|
11283
|
+
"POST /ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/attachments",
|
|
11284
|
+
"POST /ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/comment",
|
|
11285
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/comment/{id}",
|
|
11286
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/comment/{id}",
|
|
11287
|
+
"POST /ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/notify",
|
|
11288
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/properties/{propertyKey}",
|
|
11289
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/properties/{propertyKey}",
|
|
11290
|
+
"POST /ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/remotelink",
|
|
11291
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/remotelink",
|
|
11292
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/remotelink/{linkId}",
|
|
11293
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/remotelink/{linkId}",
|
|
11294
|
+
"POST /ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/transitions",
|
|
11295
|
+
"POST /ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/votes",
|
|
11296
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/votes",
|
|
11297
|
+
"POST /ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/watchers",
|
|
11298
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/watchers",
|
|
11299
|
+
"POST /ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/worklog",
|
|
11300
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/worklog",
|
|
11301
|
+
"POST /ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/worklog/move",
|
|
11302
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/worklog/{id}",
|
|
11303
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/worklog/{id}",
|
|
11304
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/worklog/{worklogId}/properties/{propertyKey}",
|
|
11305
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/worklog/{worklogId}/properties/{propertyKey}",
|
|
11306
|
+
"POST /ex/jira/{cloudId}/rest/api/3/issueLink",
|
|
11307
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/issueLink/{linkId}",
|
|
11308
|
+
"POST /ex/jira/{cloudId}/rest/api/3/plans/plan",
|
|
11309
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/plans/plan/{planId}",
|
|
11310
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/plans/plan/{planId}/archive",
|
|
11311
|
+
"POST /ex/jira/{cloudId}/rest/api/3/plans/plan/{planId}/duplicate",
|
|
11312
|
+
"POST /ex/jira/{cloudId}/rest/api/3/plans/plan/{planId}/team/atlassian",
|
|
11313
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/plans/plan/{planId}/team/atlassian/{atlassianTeamId}",
|
|
11314
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/plans/plan/{planId}/team/atlassian/{atlassianTeamId}",
|
|
11315
|
+
"POST /ex/jira/{cloudId}/rest/api/3/plans/plan/{planId}/team/planonly",
|
|
11316
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/plans/plan/{planId}/team/planonly/{planOnlyTeamId}",
|
|
11317
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/plans/plan/{planId}/team/planonly/{planOnlyTeamId}",
|
|
11318
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/plans/plan/{planId}/trash",
|
|
11319
|
+
"POST /ex/jira/{cloudId}/rest/api/3/task/{taskId}/cancel",
|
|
11320
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/user/properties/{propertyKey}",
|
|
11321
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/user/properties/{propertyKey}",
|
|
11322
|
+
"POST /ex/jira/{cloudId}/rest/api/3/version/{id}/relatedwork",
|
|
11323
|
+
"PUT /ex/jira/{cloudId}/rest/api/3/version/{id}/relatedwork",
|
|
11324
|
+
"DELETE /ex/jira/{cloudId}/rest/api/3/version/{versionId}/relatedwork/{relatedWorkId}"
|
|
11325
|
+
]
|
|
11326
|
+
}
|
|
11327
|
+
]
|
|
11328
|
+
}
|
|
11329
|
+
]
|
|
11330
|
+
};
|
|
11331
|
+
|
|
10374
11332
|
// ../../packages/core/src/firewalls/slack.generated.ts
|
|
10375
11333
|
var slackFirewall = {
|
|
10376
11334
|
name: "slack",
|
|
@@ -11201,12 +12159,14 @@ var slackFirewall = {
|
|
|
11201
12159
|
|
|
11202
12160
|
// ../../packages/core/src/firewalls/index.ts
|
|
11203
12161
|
var builtinFirewalls = {
|
|
12162
|
+
confluence: confluenceFirewall,
|
|
11204
12163
|
github: githubFirewall,
|
|
11205
12164
|
gmail: gmailFirewall,
|
|
11206
12165
|
"google-calendar": googleCalendarFirewall,
|
|
11207
12166
|
"google-docs": googleDocsFirewall,
|
|
11208
12167
|
"google-drive": googleDriveFirewall,
|
|
11209
12168
|
"google-sheets": googleSheetsFirewall,
|
|
12169
|
+
jira: jiraFirewall,
|
|
11210
12170
|
slack: slackFirewall
|
|
11211
12171
|
};
|
|
11212
12172
|
|
|
@@ -13203,7 +14163,7 @@ function getConfigPath() {
|
|
|
13203
14163
|
return join2(homedir2(), ".vm0", "config.json");
|
|
13204
14164
|
}
|
|
13205
14165
|
var infoCommand = new Command6().name("info").description("Display environment and debug information").action(async () => {
|
|
13206
|
-
console.log(chalk4.bold(`VM0 CLI v${"9.
|
|
14166
|
+
console.log(chalk4.bold(`VM0 CLI v${"9.75.0"}`));
|
|
13207
14167
|
console.log();
|
|
13208
14168
|
const config = await loadConfig();
|
|
13209
14169
|
const hasEnvToken = !!process.env.VM0_TOKEN;
|
|
@@ -13841,35 +14801,6 @@ async function getConnector(type2) {
|
|
|
13841
14801
|
handleError(result, `Failed to get connector "${type2}"`);
|
|
13842
14802
|
}
|
|
13843
14803
|
|
|
13844
|
-
// src/lib/api/domains/usage.ts
|
|
13845
|
-
async function getUsage(options) {
|
|
13846
|
-
const baseUrl = await getBaseUrl();
|
|
13847
|
-
const headers = await getHeaders();
|
|
13848
|
-
const activeOrg = await getActiveOrg();
|
|
13849
|
-
if (!activeOrg) {
|
|
13850
|
-
throw new Error(
|
|
13851
|
-
"No active organization configured. Run: vm0 org use <slug>"
|
|
13852
|
-
);
|
|
13853
|
-
}
|
|
13854
|
-
const params = new URLSearchParams({
|
|
13855
|
-
start_date: options.startDate,
|
|
13856
|
-
end_date: options.endDate,
|
|
13857
|
-
org: activeOrg
|
|
13858
|
-
});
|
|
13859
|
-
const response = await fetch(`${baseUrl}/api/usage?${params}`, {
|
|
13860
|
-
method: "GET",
|
|
13861
|
-
headers
|
|
13862
|
-
});
|
|
13863
|
-
if (!response.ok) {
|
|
13864
|
-
const body = await response.json();
|
|
13865
|
-
handleError(
|
|
13866
|
-
{ status: response.status, body },
|
|
13867
|
-
"Failed to fetch usage data"
|
|
13868
|
-
);
|
|
13869
|
-
}
|
|
13870
|
-
return response.json();
|
|
13871
|
-
}
|
|
13872
|
-
|
|
13873
14804
|
// src/lib/api/domains/user-preferences.ts
|
|
13874
14805
|
import { initClient as initClient11 } from "@ts-rest/core";
|
|
13875
14806
|
async function getUserPreferences() {
|
|
@@ -15263,7 +16194,7 @@ var composeCommand = new Command7().name("compose").description("Create or updat
|
|
|
15263
16194
|
options.autoUpdate = false;
|
|
15264
16195
|
}
|
|
15265
16196
|
if (options.autoUpdate !== false) {
|
|
15266
|
-
await startSilentUpgrade("9.
|
|
16197
|
+
await startSilentUpgrade("9.75.0");
|
|
15267
16198
|
}
|
|
15268
16199
|
try {
|
|
15269
16200
|
let result;
|
|
@@ -16098,7 +17029,7 @@ var mainRunCommand = new Command8().name("run").description("Run an agent").argu
|
|
|
16098
17029
|
withErrorHandler(
|
|
16099
17030
|
async (identifier, prompt, options) => {
|
|
16100
17031
|
if (options.autoUpdate !== false) {
|
|
16101
|
-
await startSilentUpgrade("9.
|
|
17032
|
+
await startSilentUpgrade("9.75.0");
|
|
16102
17033
|
}
|
|
16103
17034
|
const { org, name, version } = parseIdentifier(identifier);
|
|
16104
17035
|
let composeId;
|
|
@@ -17854,7 +18785,7 @@ var cookAction = new Command35().name("cook").description("Quick start: prepare,
|
|
|
17854
18785
|
withErrorHandler(
|
|
17855
18786
|
async (prompt, options) => {
|
|
17856
18787
|
if (options.autoUpdate !== false) {
|
|
17857
|
-
const shouldExit = await checkAndUpgrade("9.
|
|
18788
|
+
const shouldExit = await checkAndUpgrade("9.75.0", prompt);
|
|
17858
18789
|
if (shouldExit) {
|
|
17859
18790
|
process.exit(0);
|
|
17860
18791
|
}
|
|
@@ -18566,26 +19497,6 @@ var ApiClient = class {
|
|
|
18566
19497
|
const message = errorBody.error?.message || `Failed to list runs for schedule "${params.name}"`;
|
|
18567
19498
|
throw new Error(message);
|
|
18568
19499
|
}
|
|
18569
|
-
/**
|
|
18570
|
-
* Get usage statistics
|
|
18571
|
-
*/
|
|
18572
|
-
async getUsage(options) {
|
|
18573
|
-
const baseUrl = await this.getBaseUrl();
|
|
18574
|
-
const headers = await this.getHeaders();
|
|
18575
|
-
const params = new URLSearchParams({
|
|
18576
|
-
start_date: options.startDate,
|
|
18577
|
-
end_date: options.endDate
|
|
18578
|
-
});
|
|
18579
|
-
const response = await fetch(`${baseUrl}/api/usage?${params}`, {
|
|
18580
|
-
method: "GET",
|
|
18581
|
-
headers
|
|
18582
|
-
});
|
|
18583
|
-
if (!response.ok) {
|
|
18584
|
-
const error = await response.json();
|
|
18585
|
-
throw new Error(error.error?.message || "Failed to fetch usage data");
|
|
18586
|
-
}
|
|
18587
|
-
return response.json();
|
|
18588
|
-
}
|
|
18589
19500
|
/**
|
|
18590
19501
|
* Generic GET request
|
|
18591
19502
|
*/
|
|
@@ -20569,9 +21480,6 @@ var initCommand4 = new Command68().name("init").description("Initialize a new VM
|
|
|
20569
21480
|
console.log(
|
|
20570
21481
|
` 2. Edit ${chalk60.cyan("AGENTS.md")} to customize your agent's workflow`
|
|
20571
21482
|
);
|
|
20572
|
-
console.log(
|
|
20573
|
-
` Or install Claude plugin: ${chalk60.cyan(`vm0 setup-claude && claude "/vm0-agent let's build an agent"`)}`
|
|
20574
|
-
);
|
|
20575
21483
|
console.log(
|
|
20576
21484
|
` 3. Run your agent: ${chalk60.cyan(`vm0 cook "let's start working"`)}`
|
|
20577
21485
|
);
|
|
@@ -21510,217 +22418,68 @@ var disableCommand = new Command74().name("disable").description("Disable a sche
|
|
|
21510
22418
|
// src/commands/schedule/index.ts
|
|
21511
22419
|
var scheduleCommand = new Command75().name("schedule").description("Manage agent schedules").addCommand(setupCommand2).addCommand(listCommand10).addCommand(statusCommand7).addCommand(deleteCommand2).addCommand(enableCommand).addCommand(disableCommand);
|
|
21512
22420
|
|
|
21513
|
-
// src/commands/usage/index.ts
|
|
21514
|
-
import { Command as Command76 } from "commander";
|
|
21515
|
-
import chalk67 from "chalk";
|
|
21516
|
-
|
|
21517
|
-
// src/lib/utils/duration-formatter.ts
|
|
21518
|
-
function formatDuration(ms) {
|
|
21519
|
-
if (ms === null || ms === void 0 || ms === 0) {
|
|
21520
|
-
return "-";
|
|
21521
|
-
}
|
|
21522
|
-
if (ms < 0) {
|
|
21523
|
-
return "-";
|
|
21524
|
-
}
|
|
21525
|
-
const totalSeconds = Math.floor(ms / 1e3);
|
|
21526
|
-
if (totalSeconds === 0) {
|
|
21527
|
-
return "< 1s";
|
|
21528
|
-
}
|
|
21529
|
-
const hours = Math.floor(totalSeconds / 3600);
|
|
21530
|
-
const minutes = Math.floor(totalSeconds % 3600 / 60);
|
|
21531
|
-
const seconds = totalSeconds % 60;
|
|
21532
|
-
const parts = [];
|
|
21533
|
-
if (hours > 0) {
|
|
21534
|
-
parts.push(`${hours}h`);
|
|
21535
|
-
}
|
|
21536
|
-
if (minutes > 0) {
|
|
21537
|
-
parts.push(`${minutes}m`);
|
|
21538
|
-
}
|
|
21539
|
-
if (seconds > 0) {
|
|
21540
|
-
parts.push(`${seconds}s`);
|
|
21541
|
-
}
|
|
21542
|
-
return parts.join(" ");
|
|
21543
|
-
}
|
|
21544
|
-
|
|
21545
|
-
// src/commands/usage/index.ts
|
|
21546
|
-
var MAX_RANGE_MS = 30 * 24 * 60 * 60 * 1e3;
|
|
21547
|
-
var DEFAULT_RANGE_MS = 7 * 24 * 60 * 60 * 1e3;
|
|
21548
|
-
function formatDateDisplay(dateStr) {
|
|
21549
|
-
const date = new Date(dateStr);
|
|
21550
|
-
return date.toLocaleDateString("en-US", { month: "short", day: "numeric" });
|
|
21551
|
-
}
|
|
21552
|
-
function formatDateRange(start, end) {
|
|
21553
|
-
const startDate = new Date(start);
|
|
21554
|
-
const endDate = new Date(end);
|
|
21555
|
-
endDate.setDate(endDate.getDate() - 1);
|
|
21556
|
-
const startStr = startDate.toLocaleDateString("en-US", {
|
|
21557
|
-
month: "short",
|
|
21558
|
-
day: "numeric"
|
|
21559
|
-
});
|
|
21560
|
-
const endStr = endDate.toLocaleDateString("en-US", {
|
|
21561
|
-
month: "short",
|
|
21562
|
-
day: "numeric",
|
|
21563
|
-
year: "numeric"
|
|
21564
|
-
});
|
|
21565
|
-
return `${startStr} - ${endStr}`;
|
|
21566
|
-
}
|
|
21567
|
-
function fillMissingDates(daily, startDate, endDate) {
|
|
21568
|
-
const dateMap = /* @__PURE__ */ new Map();
|
|
21569
|
-
for (const day of daily) {
|
|
21570
|
-
dateMap.set(day.date, day);
|
|
21571
|
-
}
|
|
21572
|
-
const result = [];
|
|
21573
|
-
const current = new Date(startDate);
|
|
21574
|
-
current.setUTCHours(0, 0, 0, 0);
|
|
21575
|
-
while (current < endDate) {
|
|
21576
|
-
const dateStr = current.toISOString().split("T")[0];
|
|
21577
|
-
const existing = dateMap.get(dateStr);
|
|
21578
|
-
if (existing) {
|
|
21579
|
-
result.push(existing);
|
|
21580
|
-
} else {
|
|
21581
|
-
result.push({ date: dateStr, run_count: 0, run_time_ms: 0 });
|
|
21582
|
-
}
|
|
21583
|
-
current.setDate(current.getDate() + 1);
|
|
21584
|
-
}
|
|
21585
|
-
result.sort((a, b) => b.date.localeCompare(a.date));
|
|
21586
|
-
return result;
|
|
21587
|
-
}
|
|
21588
|
-
var usageCommand = new Command76().name("usage").description("View usage statistics").option("--since <date>", "Start date (ISO format or relative: 7d, 30d)").option(
|
|
21589
|
-
"--until <date>",
|
|
21590
|
-
"End date (ISO format or relative, defaults to now)"
|
|
21591
|
-
).action(
|
|
21592
|
-
withErrorHandler(async (options) => {
|
|
21593
|
-
const now = /* @__PURE__ */ new Date();
|
|
21594
|
-
let endDate;
|
|
21595
|
-
let startDate;
|
|
21596
|
-
if (options.until) {
|
|
21597
|
-
try {
|
|
21598
|
-
const untilMs = parseTime(options.until);
|
|
21599
|
-
endDate = new Date(untilMs);
|
|
21600
|
-
} catch {
|
|
21601
|
-
throw new Error(
|
|
21602
|
-
"Invalid --until format. Use ISO (2026-01-01) or relative (7d, 30d)"
|
|
21603
|
-
);
|
|
21604
|
-
}
|
|
21605
|
-
} else {
|
|
21606
|
-
endDate = now;
|
|
21607
|
-
}
|
|
21608
|
-
if (options.since) {
|
|
21609
|
-
try {
|
|
21610
|
-
const sinceMs = parseTime(options.since);
|
|
21611
|
-
startDate = new Date(sinceMs);
|
|
21612
|
-
} catch {
|
|
21613
|
-
throw new Error(
|
|
21614
|
-
"Invalid --since format. Use ISO (2026-01-01) or relative (7d, 30d)"
|
|
21615
|
-
);
|
|
21616
|
-
}
|
|
21617
|
-
} else {
|
|
21618
|
-
startDate = new Date(endDate.getTime() - DEFAULT_RANGE_MS);
|
|
21619
|
-
}
|
|
21620
|
-
if (startDate >= endDate) {
|
|
21621
|
-
throw new Error("--since must be before --until");
|
|
21622
|
-
}
|
|
21623
|
-
const rangeMs = endDate.getTime() - startDate.getTime();
|
|
21624
|
-
if (rangeMs > MAX_RANGE_MS) {
|
|
21625
|
-
throw new Error(
|
|
21626
|
-
"Time range exceeds maximum of 30 days. Use --until to specify an end date"
|
|
21627
|
-
);
|
|
21628
|
-
}
|
|
21629
|
-
const usage = await getUsage({
|
|
21630
|
-
startDate: startDate.toISOString(),
|
|
21631
|
-
endDate: endDate.toISOString()
|
|
21632
|
-
});
|
|
21633
|
-
const filledDaily = fillMissingDates(
|
|
21634
|
-
usage.daily,
|
|
21635
|
-
new Date(usage.period.start),
|
|
21636
|
-
new Date(usage.period.end)
|
|
21637
|
-
);
|
|
21638
|
-
console.log();
|
|
21639
|
-
console.log(
|
|
21640
|
-
chalk67.bold(
|
|
21641
|
-
`Usage Summary (${formatDateRange(usage.period.start, usage.period.end)})`
|
|
21642
|
-
)
|
|
21643
|
-
);
|
|
21644
|
-
console.log();
|
|
21645
|
-
console.log(chalk67.dim("DATE RUNS RUN TIME"));
|
|
21646
|
-
for (const day of filledDaily) {
|
|
21647
|
-
const dateDisplay = formatDateDisplay(day.date).padEnd(10);
|
|
21648
|
-
const runsDisplay = String(day.run_count).padStart(6);
|
|
21649
|
-
const timeDisplay = formatDuration(day.run_time_ms);
|
|
21650
|
-
console.log(`${dateDisplay}${runsDisplay} ${timeDisplay}`);
|
|
21651
|
-
}
|
|
21652
|
-
console.log(chalk67.dim("\u2500".repeat(29)));
|
|
21653
|
-
const totalRunsDisplay = String(usage.summary.total_runs).padStart(6);
|
|
21654
|
-
const totalTimeDisplay = formatDuration(usage.summary.total_run_time_ms);
|
|
21655
|
-
console.log(
|
|
21656
|
-
`${"TOTAL".padEnd(10)}${totalRunsDisplay} ${totalTimeDisplay}`
|
|
21657
|
-
);
|
|
21658
|
-
console.log();
|
|
21659
|
-
})
|
|
21660
|
-
);
|
|
21661
|
-
|
|
21662
22421
|
// src/commands/secret/index.ts
|
|
21663
|
-
import { Command as
|
|
22422
|
+
import { Command as Command79 } from "commander";
|
|
21664
22423
|
|
|
21665
22424
|
// src/commands/secret/list.ts
|
|
21666
|
-
import { Command as
|
|
21667
|
-
import
|
|
21668
|
-
var listCommand11 = new
|
|
22425
|
+
import { Command as Command76 } from "commander";
|
|
22426
|
+
import chalk67 from "chalk";
|
|
22427
|
+
var listCommand11 = new Command76().name("list").alias("ls").description("List all secrets").action(
|
|
21669
22428
|
withErrorHandler(async () => {
|
|
21670
22429
|
const result = await listSecrets();
|
|
21671
22430
|
if (result.secrets.length === 0) {
|
|
21672
|
-
console.log(
|
|
22431
|
+
console.log(chalk67.dim("No secrets found"));
|
|
21673
22432
|
console.log();
|
|
21674
22433
|
console.log("To add a secret:");
|
|
21675
|
-
console.log(
|
|
22434
|
+
console.log(chalk67.cyan(" vm0 secret set MY_API_KEY --body <value>"));
|
|
21676
22435
|
return;
|
|
21677
22436
|
}
|
|
21678
|
-
console.log(
|
|
22437
|
+
console.log(chalk67.bold("Secrets:"));
|
|
21679
22438
|
console.log();
|
|
21680
22439
|
for (const secret of result.secrets) {
|
|
21681
22440
|
let typeIndicator = "";
|
|
21682
22441
|
let derivedLine = null;
|
|
21683
22442
|
if (secret.type === "model-provider") {
|
|
21684
|
-
typeIndicator =
|
|
22443
|
+
typeIndicator = chalk67.dim(" [model-provider]");
|
|
21685
22444
|
} else if (secret.type === "connector") {
|
|
21686
22445
|
const derived = getConnectorDerivedNames(secret.name);
|
|
21687
22446
|
if (derived) {
|
|
21688
|
-
typeIndicator =
|
|
21689
|
-
derivedLine =
|
|
22447
|
+
typeIndicator = chalk67.dim(` [${derived.connectorLabel} connector]`);
|
|
22448
|
+
derivedLine = chalk67.dim(
|
|
21690
22449
|
`Available as: ${derived.envVarNames.join(", ")}`
|
|
21691
22450
|
);
|
|
21692
22451
|
} else {
|
|
21693
|
-
typeIndicator =
|
|
22452
|
+
typeIndicator = chalk67.dim(" [connector]");
|
|
21694
22453
|
}
|
|
21695
22454
|
} else if (secret.type === "user") {
|
|
21696
22455
|
const derived = getConnectorDerivedNames(secret.name);
|
|
21697
22456
|
if (derived) {
|
|
21698
|
-
typeIndicator =
|
|
21699
|
-
derivedLine =
|
|
22457
|
+
typeIndicator = chalk67.dim(` [${derived.connectorLabel} connector]`);
|
|
22458
|
+
derivedLine = chalk67.dim(
|
|
21700
22459
|
`Available as: ${derived.envVarNames.join(", ")}`
|
|
21701
22460
|
);
|
|
21702
22461
|
}
|
|
21703
22462
|
}
|
|
21704
|
-
console.log(` ${
|
|
22463
|
+
console.log(` ${chalk67.cyan(secret.name)}${typeIndicator}`);
|
|
21705
22464
|
if (derivedLine) {
|
|
21706
22465
|
console.log(` ${derivedLine}`);
|
|
21707
22466
|
}
|
|
21708
22467
|
if (secret.description) {
|
|
21709
|
-
console.log(` ${
|
|
22468
|
+
console.log(` ${chalk67.dim(secret.description)}`);
|
|
21710
22469
|
}
|
|
21711
22470
|
console.log(
|
|
21712
|
-
` ${
|
|
22471
|
+
` ${chalk67.dim(`Updated: ${new Date(secret.updatedAt).toLocaleString()}`)}`
|
|
21713
22472
|
);
|
|
21714
22473
|
console.log();
|
|
21715
22474
|
}
|
|
21716
|
-
console.log(
|
|
22475
|
+
console.log(chalk67.dim(`Total: ${result.secrets.length} secret(s)`));
|
|
21717
22476
|
})
|
|
21718
22477
|
);
|
|
21719
22478
|
|
|
21720
22479
|
// src/commands/secret/set.ts
|
|
21721
|
-
import { Command as
|
|
21722
|
-
import
|
|
21723
|
-
var setCommand4 = new
|
|
22480
|
+
import { Command as Command77 } from "commander";
|
|
22481
|
+
import chalk68 from "chalk";
|
|
22482
|
+
var setCommand4 = new Command77().name("set").description("Create or update a secret").argument("<name>", "Secret name (uppercase, e.g., MY_API_KEY)").option(
|
|
21724
22483
|
"-b, --body <value>",
|
|
21725
22484
|
"Secret value (required in non-interactive mode)"
|
|
21726
22485
|
).option("-d, --description <description>", "Optional description").action(
|
|
@@ -21759,19 +22518,19 @@ var setCommand4 = new Command78().name("set").description("Create or update a se
|
|
|
21759
22518
|
}
|
|
21760
22519
|
throw error;
|
|
21761
22520
|
}
|
|
21762
|
-
console.log(
|
|
22521
|
+
console.log(chalk68.green(`\u2713 Secret "${secret.name}" saved`));
|
|
21763
22522
|
console.log();
|
|
21764
22523
|
console.log("Use in vm0.yaml:");
|
|
21765
|
-
console.log(
|
|
21766
|
-
console.log(
|
|
22524
|
+
console.log(chalk68.cyan(` environment:`));
|
|
22525
|
+
console.log(chalk68.cyan(` ${name}: \${{ secrets.${name} }}`));
|
|
21767
22526
|
}
|
|
21768
22527
|
)
|
|
21769
22528
|
);
|
|
21770
22529
|
|
|
21771
22530
|
// src/commands/secret/delete.ts
|
|
21772
|
-
import { Command as
|
|
21773
|
-
import
|
|
21774
|
-
var deleteCommand3 = new
|
|
22531
|
+
import { Command as Command78 } from "commander";
|
|
22532
|
+
import chalk69 from "chalk";
|
|
22533
|
+
var deleteCommand3 = new Command78().name("delete").description("Delete a secret").argument("<name>", "Secret name to delete").option("-y, --yes", "Skip confirmation prompt").action(
|
|
21775
22534
|
withErrorHandler(async (name, options) => {
|
|
21776
22535
|
try {
|
|
21777
22536
|
await getSecret(name);
|
|
@@ -21790,61 +22549,61 @@ var deleteCommand3 = new Command79().name("delete").description("Delete a secret
|
|
|
21790
22549
|
false
|
|
21791
22550
|
);
|
|
21792
22551
|
if (!confirmed) {
|
|
21793
|
-
console.log(
|
|
22552
|
+
console.log(chalk69.dim("Cancelled"));
|
|
21794
22553
|
return;
|
|
21795
22554
|
}
|
|
21796
22555
|
}
|
|
21797
22556
|
await deleteSecret(name);
|
|
21798
|
-
console.log(
|
|
22557
|
+
console.log(chalk69.green(`\u2713 Secret "${name}" deleted`));
|
|
21799
22558
|
})
|
|
21800
22559
|
);
|
|
21801
22560
|
|
|
21802
22561
|
// src/commands/secret/index.ts
|
|
21803
|
-
var secretCommand = new
|
|
22562
|
+
var secretCommand = new Command79().name("secret").description("Manage stored secrets for agent runs").addCommand(listCommand11).addCommand(setCommand4).addCommand(deleteCommand3);
|
|
21804
22563
|
|
|
21805
22564
|
// src/commands/variable/index.ts
|
|
21806
|
-
import { Command as
|
|
22565
|
+
import { Command as Command83 } from "commander";
|
|
21807
22566
|
|
|
21808
22567
|
// src/commands/variable/list.ts
|
|
21809
|
-
import { Command as
|
|
21810
|
-
import
|
|
22568
|
+
import { Command as Command80 } from "commander";
|
|
22569
|
+
import chalk70 from "chalk";
|
|
21811
22570
|
function truncateValue2(value, maxLength = 60) {
|
|
21812
22571
|
if (value.length <= maxLength) {
|
|
21813
22572
|
return value;
|
|
21814
22573
|
}
|
|
21815
22574
|
return value.slice(0, maxLength - 15) + "... [truncated]";
|
|
21816
22575
|
}
|
|
21817
|
-
var listCommand12 = new
|
|
22576
|
+
var listCommand12 = new Command80().name("list").alias("ls").description("List all variables").action(
|
|
21818
22577
|
withErrorHandler(async () => {
|
|
21819
22578
|
const result = await listVariables();
|
|
21820
22579
|
if (result.variables.length === 0) {
|
|
21821
|
-
console.log(
|
|
22580
|
+
console.log(chalk70.dim("No variables found"));
|
|
21822
22581
|
console.log();
|
|
21823
22582
|
console.log("To add a variable:");
|
|
21824
|
-
console.log(
|
|
22583
|
+
console.log(chalk70.cyan(" vm0 variable set MY_VAR <value>"));
|
|
21825
22584
|
return;
|
|
21826
22585
|
}
|
|
21827
|
-
console.log(
|
|
22586
|
+
console.log(chalk70.bold("Variables:"));
|
|
21828
22587
|
console.log();
|
|
21829
22588
|
for (const variable of result.variables) {
|
|
21830
22589
|
const displayValue = truncateValue2(variable.value);
|
|
21831
|
-
console.log(` ${
|
|
22590
|
+
console.log(` ${chalk70.cyan(variable.name)} = ${displayValue}`);
|
|
21832
22591
|
if (variable.description) {
|
|
21833
|
-
console.log(` ${
|
|
22592
|
+
console.log(` ${chalk70.dim(variable.description)}`);
|
|
21834
22593
|
}
|
|
21835
22594
|
console.log(
|
|
21836
|
-
` ${
|
|
22595
|
+
` ${chalk70.dim(`Updated: ${new Date(variable.updatedAt).toLocaleString()}`)}`
|
|
21837
22596
|
);
|
|
21838
22597
|
console.log();
|
|
21839
22598
|
}
|
|
21840
|
-
console.log(
|
|
22599
|
+
console.log(chalk70.dim(`Total: ${result.variables.length} variable(s)`));
|
|
21841
22600
|
})
|
|
21842
22601
|
);
|
|
21843
22602
|
|
|
21844
22603
|
// src/commands/variable/set.ts
|
|
21845
|
-
import { Command as
|
|
21846
|
-
import
|
|
21847
|
-
var setCommand5 = new
|
|
22604
|
+
import { Command as Command81 } from "commander";
|
|
22605
|
+
import chalk71 from "chalk";
|
|
22606
|
+
var setCommand5 = new Command81().name("set").description("Create or update a variable").argument("<name>", "Variable name (uppercase, e.g., MY_VAR)").argument("<value>", "Variable value").option("-d, --description <description>", "Optional description").action(
|
|
21848
22607
|
withErrorHandler(
|
|
21849
22608
|
async (name, value, options) => {
|
|
21850
22609
|
let variable;
|
|
@@ -21864,19 +22623,19 @@ var setCommand5 = new Command82().name("set").description("Create or update a va
|
|
|
21864
22623
|
}
|
|
21865
22624
|
throw error;
|
|
21866
22625
|
}
|
|
21867
|
-
console.log(
|
|
22626
|
+
console.log(chalk71.green(`\u2713 Variable "${variable.name}" saved`));
|
|
21868
22627
|
console.log();
|
|
21869
22628
|
console.log("Use in vm0.yaml:");
|
|
21870
|
-
console.log(
|
|
21871
|
-
console.log(
|
|
22629
|
+
console.log(chalk71.cyan(` environment:`));
|
|
22630
|
+
console.log(chalk71.cyan(` ${name}: \${{ vars.${name} }}`));
|
|
21872
22631
|
}
|
|
21873
22632
|
)
|
|
21874
22633
|
);
|
|
21875
22634
|
|
|
21876
22635
|
// src/commands/variable/delete.ts
|
|
21877
|
-
import { Command as
|
|
21878
|
-
import
|
|
21879
|
-
var deleteCommand4 = new
|
|
22636
|
+
import { Command as Command82 } from "commander";
|
|
22637
|
+
import chalk72 from "chalk";
|
|
22638
|
+
var deleteCommand4 = new Command82().name("delete").description("Delete a variable").argument("<name>", "Variable name to delete").option("-y, --yes", "Skip confirmation prompt").action(
|
|
21880
22639
|
withErrorHandler(async (name, options) => {
|
|
21881
22640
|
try {
|
|
21882
22641
|
await getVariable(name);
|
|
@@ -21895,24 +22654,24 @@ var deleteCommand4 = new Command83().name("delete").description("Delete a variab
|
|
|
21895
22654
|
false
|
|
21896
22655
|
);
|
|
21897
22656
|
if (!confirmed) {
|
|
21898
|
-
console.log(
|
|
22657
|
+
console.log(chalk72.dim("Cancelled"));
|
|
21899
22658
|
return;
|
|
21900
22659
|
}
|
|
21901
22660
|
}
|
|
21902
22661
|
await deleteVariable(name);
|
|
21903
|
-
console.log(
|
|
22662
|
+
console.log(chalk72.green(`\u2713 Variable "${name}" deleted`));
|
|
21904
22663
|
})
|
|
21905
22664
|
);
|
|
21906
22665
|
|
|
21907
22666
|
// src/commands/variable/index.ts
|
|
21908
|
-
var variableCommand = new
|
|
22667
|
+
var variableCommand = new Command83().name("variable").description("Manage stored variables for agent runs").addCommand(listCommand12).addCommand(setCommand5).addCommand(deleteCommand4);
|
|
21909
22668
|
|
|
21910
22669
|
// src/commands/connector/index.ts
|
|
21911
|
-
import { Command as
|
|
22670
|
+
import { Command as Command88 } from "commander";
|
|
21912
22671
|
|
|
21913
22672
|
// src/commands/connector/connect.ts
|
|
21914
|
-
import { Command as
|
|
21915
|
-
import
|
|
22673
|
+
import { Command as Command84 } from "commander";
|
|
22674
|
+
import chalk74 from "chalk";
|
|
21916
22675
|
import { initClient as initClient15 } from "@ts-rest/core";
|
|
21917
22676
|
|
|
21918
22677
|
// src/commands/connector/lib/computer/start-services.ts
|
|
@@ -21921,7 +22680,7 @@ import { access as access2, constants } from "fs/promises";
|
|
|
21921
22680
|
import { createServer } from "net";
|
|
21922
22681
|
import { homedir as homedir4 } from "os";
|
|
21923
22682
|
import { join as join12 } from "path";
|
|
21924
|
-
import
|
|
22683
|
+
import chalk73 from "chalk";
|
|
21925
22684
|
|
|
21926
22685
|
// src/commands/connector/lib/computer/ngrok.ts
|
|
21927
22686
|
import ngrok from "@ngrok/ngrok";
|
|
@@ -21995,7 +22754,7 @@ async function checkComputerDependencies() {
|
|
|
21995
22754
|
}
|
|
21996
22755
|
}
|
|
21997
22756
|
async function startComputerServices(credentials) {
|
|
21998
|
-
console.log(
|
|
22757
|
+
console.log(chalk73.cyan("Starting computer connector services..."));
|
|
21999
22758
|
const wsgidavBinary = await findBinary("wsgidav");
|
|
22000
22759
|
if (!wsgidavBinary) {
|
|
22001
22760
|
throw new Error(
|
|
@@ -22022,7 +22781,7 @@ async function startComputerServices(credentials) {
|
|
|
22022
22781
|
);
|
|
22023
22782
|
wsgidav.stdout?.on("data", (data) => process.stdout.write(data));
|
|
22024
22783
|
wsgidav.stderr?.on("data", (data) => process.stderr.write(data));
|
|
22025
|
-
console.log(
|
|
22784
|
+
console.log(chalk73.green("\u2713 WebDAV server started"));
|
|
22026
22785
|
const chrome = spawn2(
|
|
22027
22786
|
chromeBinary,
|
|
22028
22787
|
[
|
|
@@ -22036,7 +22795,7 @@ async function startComputerServices(credentials) {
|
|
|
22036
22795
|
);
|
|
22037
22796
|
chrome.stdout?.on("data", (data) => process.stdout.write(data));
|
|
22038
22797
|
chrome.stderr?.on("data", (data) => process.stderr.write(data));
|
|
22039
|
-
console.log(
|
|
22798
|
+
console.log(chalk73.green("\u2713 Chrome started"));
|
|
22040
22799
|
try {
|
|
22041
22800
|
await startNgrokTunnels(
|
|
22042
22801
|
credentials.ngrokToken,
|
|
@@ -22045,18 +22804,18 @@ async function startComputerServices(credentials) {
|
|
|
22045
22804
|
cdpPort
|
|
22046
22805
|
);
|
|
22047
22806
|
console.log(
|
|
22048
|
-
|
|
22807
|
+
chalk73.green(
|
|
22049
22808
|
`\u2713 ngrok tunnels: webdav.${credentials.domain}, chrome.${credentials.domain}`
|
|
22050
22809
|
)
|
|
22051
22810
|
);
|
|
22052
22811
|
console.log();
|
|
22053
|
-
console.log(
|
|
22812
|
+
console.log(chalk73.green("\u2713 Computer connector active"));
|
|
22054
22813
|
console.log(` WebDAV: ~/Downloads \u2192 webdav.${credentials.domain}`);
|
|
22055
22814
|
console.log(
|
|
22056
22815
|
` Chrome CDP: port ${cdpPort} \u2192 chrome.${credentials.domain}`
|
|
22057
22816
|
);
|
|
22058
22817
|
console.log();
|
|
22059
|
-
console.log(
|
|
22818
|
+
console.log(chalk73.dim("Press ^C twice to disconnect"));
|
|
22060
22819
|
console.log();
|
|
22061
22820
|
let sigintCount = 0;
|
|
22062
22821
|
await new Promise((resolve2) => {
|
|
@@ -22070,7 +22829,7 @@ async function startComputerServices(credentials) {
|
|
|
22070
22829
|
const onSigint = () => {
|
|
22071
22830
|
sigintCount++;
|
|
22072
22831
|
if (sigintCount === 1) {
|
|
22073
|
-
console.log(
|
|
22832
|
+
console.log(chalk73.dim("\nPress ^C again to disconnect and exit..."));
|
|
22074
22833
|
} else {
|
|
22075
22834
|
done();
|
|
22076
22835
|
}
|
|
@@ -22080,11 +22839,11 @@ async function startComputerServices(credentials) {
|
|
|
22080
22839
|
});
|
|
22081
22840
|
} finally {
|
|
22082
22841
|
console.log();
|
|
22083
|
-
console.log(
|
|
22842
|
+
console.log(chalk73.cyan("Stopping services..."));
|
|
22084
22843
|
wsgidav.kill("SIGTERM");
|
|
22085
22844
|
chrome.kill("SIGTERM");
|
|
22086
22845
|
await stopNgrokTunnels();
|
|
22087
|
-
console.log(
|
|
22846
|
+
console.log(chalk73.green("\u2713 Services stopped"));
|
|
22088
22847
|
}
|
|
22089
22848
|
}
|
|
22090
22849
|
|
|
@@ -22109,10 +22868,10 @@ async function getHeaders2() {
|
|
|
22109
22868
|
function renderHelpText(text) {
|
|
22110
22869
|
return text.replace(
|
|
22111
22870
|
/\[([^\]]+)\]\(([^)]+)\)/g,
|
|
22112
|
-
(_m, label, url) => `${label} (${
|
|
22113
|
-
).replace(/\*\*([^*]+)\*\*/g, (_m, content) =>
|
|
22871
|
+
(_m, label, url) => `${label} (${chalk74.cyan(url)})`
|
|
22872
|
+
).replace(/\*\*([^*]+)\*\*/g, (_m, content) => chalk74.bold(content)).replace(
|
|
22114
22873
|
/^> (.+)$/gm,
|
|
22115
|
-
(_m, content) =>
|
|
22874
|
+
(_m, content) => chalk74.yellow(` ${content}`)
|
|
22116
22875
|
);
|
|
22117
22876
|
}
|
|
22118
22877
|
async function connectViaApiToken(connectorType, tokenValue) {
|
|
@@ -22137,7 +22896,7 @@ async function connectViaApiToken(connectorType, tokenValue) {
|
|
|
22137
22896
|
for (const [secretName, secretConfig] of secretEntries) {
|
|
22138
22897
|
if (!secretConfig.required) continue;
|
|
22139
22898
|
const value = await promptPassword(
|
|
22140
|
-
`${secretConfig.label}${secretConfig.placeholder ?
|
|
22899
|
+
`${secretConfig.label}${secretConfig.placeholder ? chalk74.dim(` (${secretConfig.placeholder})`) : ""}:`
|
|
22141
22900
|
);
|
|
22142
22901
|
if (!value) {
|
|
22143
22902
|
throw new Error("Cancelled");
|
|
@@ -22153,13 +22912,13 @@ async function connectViaApiToken(connectorType, tokenValue) {
|
|
|
22153
22912
|
});
|
|
22154
22913
|
}
|
|
22155
22914
|
console.log(
|
|
22156
|
-
|
|
22915
|
+
chalk74.green(`
|
|
22157
22916
|
\u2713 ${config.label} connected successfully via API token!`)
|
|
22158
22917
|
);
|
|
22159
22918
|
}
|
|
22160
22919
|
async function connectComputer(apiUrl, headers) {
|
|
22161
22920
|
await checkComputerDependencies();
|
|
22162
|
-
console.log(
|
|
22921
|
+
console.log(chalk74.cyan("Setting up computer connector..."));
|
|
22163
22922
|
const computerClient = initClient15(computerConnectorContract, {
|
|
22164
22923
|
baseUrl: apiUrl,
|
|
22165
22924
|
baseHeaders: headers,
|
|
@@ -22174,9 +22933,9 @@ async function connectComputer(apiUrl, headers) {
|
|
|
22174
22933
|
}
|
|
22175
22934
|
const credentials = createResult.body;
|
|
22176
22935
|
await startComputerServices(credentials);
|
|
22177
|
-
console.log(
|
|
22936
|
+
console.log(chalk74.cyan("Disconnecting computer connector..."));
|
|
22178
22937
|
await deleteConnector("computer");
|
|
22179
|
-
console.log(
|
|
22938
|
+
console.log(chalk74.green("\u2713 Disconnected computer"));
|
|
22180
22939
|
process.exit(0);
|
|
22181
22940
|
}
|
|
22182
22941
|
async function resolveAuthMethod(connectorType, tokenFlag) {
|
|
@@ -22215,7 +22974,7 @@ async function resolveAuthMethod(connectorType, tokenFlag) {
|
|
|
22215
22974
|
);
|
|
22216
22975
|
}
|
|
22217
22976
|
async function connectViaOAuth(connectorType, apiUrl, headers) {
|
|
22218
|
-
console.log(`Connecting ${
|
|
22977
|
+
console.log(`Connecting ${chalk74.cyan(connectorType)}...`);
|
|
22219
22978
|
const sessionsClient = initClient15(connectorSessionsContract, {
|
|
22220
22979
|
baseUrl: apiUrl,
|
|
22221
22980
|
baseHeaders: headers,
|
|
@@ -22231,8 +22990,8 @@ async function connectViaOAuth(connectorType, apiUrl, headers) {
|
|
|
22231
22990
|
}
|
|
22232
22991
|
const session = createResult.body;
|
|
22233
22992
|
const verificationUrl = `${apiUrl}${session.verificationUrl}`;
|
|
22234
|
-
console.log(
|
|
22235
|
-
console.log(
|
|
22993
|
+
console.log(chalk74.green("\nSession created"));
|
|
22994
|
+
console.log(chalk74.cyan(`
|
|
22236
22995
|
To connect, visit: ${verificationUrl}`));
|
|
22237
22996
|
console.log(
|
|
22238
22997
|
`
|
|
@@ -22264,7 +23023,7 @@ The session expires in ${Math.floor(session.expiresIn / 60)} minutes.`
|
|
|
22264
23023
|
switch (status.status) {
|
|
22265
23024
|
case "complete":
|
|
22266
23025
|
console.log(
|
|
22267
|
-
|
|
23026
|
+
chalk74.green(`
|
|
22268
23027
|
|
|
22269
23028
|
${connectorType} connected successfully!`)
|
|
22270
23029
|
);
|
|
@@ -22276,13 +23035,13 @@ ${connectorType} connected successfully!`)
|
|
|
22276
23035
|
`Connection failed: ${status.errorMessage || "Unknown error"}`
|
|
22277
23036
|
);
|
|
22278
23037
|
case "pending":
|
|
22279
|
-
process.stdout.write(
|
|
23038
|
+
process.stdout.write(chalk74.dim("."));
|
|
22280
23039
|
break;
|
|
22281
23040
|
}
|
|
22282
23041
|
}
|
|
22283
23042
|
throw new Error("Session timed out, please try again");
|
|
22284
23043
|
}
|
|
22285
|
-
var connectCommand = new
|
|
23044
|
+
var connectCommand = new Command84().name("connect").description("Connect a third-party service (e.g., GitHub)").argument("<type>", "Connector type (e.g., github)").option("--token <value>", "API token value (skip interactive prompt)").action(
|
|
22286
23045
|
withErrorHandler(async (type2, options) => {
|
|
22287
23046
|
const parseResult = connectorTypeSchema.safeParse(type2);
|
|
22288
23047
|
if (!parseResult.success) {
|
|
@@ -22307,9 +23066,9 @@ var connectCommand = new Command85().name("connect").description("Connect a thir
|
|
|
22307
23066
|
);
|
|
22308
23067
|
|
|
22309
23068
|
// src/commands/connector/list.ts
|
|
22310
|
-
import { Command as
|
|
22311
|
-
import
|
|
22312
|
-
var listCommand13 = new
|
|
23069
|
+
import { Command as Command85 } from "commander";
|
|
23070
|
+
import chalk75 from "chalk";
|
|
23071
|
+
var listCommand13 = new Command85().name("list").alias("ls").description("List all connectors and their status").action(
|
|
22313
23072
|
withErrorHandler(async () => {
|
|
22314
23073
|
const result = await listConnectors();
|
|
22315
23074
|
const connectedMap = new Map(result.connectors.map((c39) => [c39.type, c39]));
|
|
@@ -22331,26 +23090,26 @@ var listCommand13 = new Command86().name("list").alias("ls").description("List a
|
|
|
22331
23090
|
statusText.padEnd(statusWidth),
|
|
22332
23091
|
"ACCOUNT"
|
|
22333
23092
|
].join(" ");
|
|
22334
|
-
console.log(
|
|
23093
|
+
console.log(chalk75.dim(header));
|
|
22335
23094
|
for (const type2 of allTypes) {
|
|
22336
23095
|
const connector = connectedMap.get(type2);
|
|
22337
23096
|
const scopeMismatch = connector !== void 0 && connector.authMethod === "oauth" && !hasRequiredScopes(type2, connector.oauthScopes);
|
|
22338
|
-
const status = connector ? connector.needsReconnect ?
|
|
22339
|
-
const account = connector?.needsReconnect ?
|
|
23097
|
+
const status = connector ? connector.needsReconnect ? chalk75.yellow("!".padEnd(statusWidth)) : scopeMismatch ? chalk75.yellow("!".padEnd(statusWidth)) : chalk75.green("\u2713".padEnd(statusWidth)) : chalk75.dim("-".padEnd(statusWidth));
|
|
23098
|
+
const account = connector?.needsReconnect ? chalk75.yellow("(reconnect needed)") : scopeMismatch ? chalk75.yellow("(permissions update available)") : connector?.externalUsername ? `@${connector.externalUsername}` : chalk75.dim("-");
|
|
22340
23099
|
const row = [type2.padEnd(typeWidth), status, account].join(" ");
|
|
22341
23100
|
console.log(row);
|
|
22342
23101
|
}
|
|
22343
23102
|
console.log();
|
|
22344
|
-
console.log(
|
|
22345
|
-
console.log(
|
|
23103
|
+
console.log(chalk75.dim("To connect a service:"));
|
|
23104
|
+
console.log(chalk75.dim(" vm0 connector connect <type>"));
|
|
22346
23105
|
})
|
|
22347
23106
|
);
|
|
22348
23107
|
|
|
22349
23108
|
// src/commands/connector/status.ts
|
|
22350
|
-
import { Command as
|
|
22351
|
-
import
|
|
23109
|
+
import { Command as Command86 } from "commander";
|
|
23110
|
+
import chalk76 from "chalk";
|
|
22352
23111
|
var LABEL_WIDTH = 16;
|
|
22353
|
-
var statusCommand8 = new
|
|
23112
|
+
var statusCommand8 = new Command86().name("status").description("Show detailed status of a connector").argument("<type>", "Connector type (e.g., github)").action(
|
|
22354
23113
|
withErrorHandler(async (type2) => {
|
|
22355
23114
|
const parseResult = connectorTypeSchema.safeParse(type2);
|
|
22356
23115
|
if (!parseResult.success) {
|
|
@@ -22360,11 +23119,11 @@ var statusCommand8 = new Command87().name("status").description("Show detailed s
|
|
|
22360
23119
|
});
|
|
22361
23120
|
}
|
|
22362
23121
|
const connector = await getConnector(parseResult.data);
|
|
22363
|
-
console.log(`Connector: ${
|
|
23122
|
+
console.log(`Connector: ${chalk76.cyan(type2)}`);
|
|
22364
23123
|
console.log();
|
|
22365
23124
|
if (connector) {
|
|
22366
23125
|
console.log(
|
|
22367
|
-
`${"Status:".padEnd(LABEL_WIDTH)}${
|
|
23126
|
+
`${"Status:".padEnd(LABEL_WIDTH)}${chalk76.green("connected")}`
|
|
22368
23127
|
);
|
|
22369
23128
|
console.log(
|
|
22370
23129
|
`${"Account:".padEnd(LABEL_WIDTH)}@${connector.externalUsername}`
|
|
@@ -22380,7 +23139,7 @@ var statusCommand8 = new Command87().name("status").description("Show detailed s
|
|
|
22380
23139
|
if (connector.authMethod === "oauth" && !hasRequiredScopes(parseResult.data, connector.oauthScopes)) {
|
|
22381
23140
|
const diff = getScopeDiff(parseResult.data, connector.oauthScopes);
|
|
22382
23141
|
console.log(
|
|
22383
|
-
`${"Permissions:".padEnd(LABEL_WIDTH)}${
|
|
23142
|
+
`${"Permissions:".padEnd(LABEL_WIDTH)}${chalk76.yellow("update available")}`
|
|
22384
23143
|
);
|
|
22385
23144
|
if (diff.addedScopes.length > 0) {
|
|
22386
23145
|
console.log(
|
|
@@ -22402,23 +23161,23 @@ var statusCommand8 = new Command87().name("status").description("Show detailed s
|
|
|
22402
23161
|
);
|
|
22403
23162
|
}
|
|
22404
23163
|
console.log();
|
|
22405
|
-
console.log(
|
|
22406
|
-
console.log(
|
|
23164
|
+
console.log(chalk76.dim("To disconnect:"));
|
|
23165
|
+
console.log(chalk76.dim(` vm0 connector disconnect ${type2}`));
|
|
22407
23166
|
} else {
|
|
22408
23167
|
console.log(
|
|
22409
|
-
`${"Status:".padEnd(LABEL_WIDTH)}${
|
|
23168
|
+
`${"Status:".padEnd(LABEL_WIDTH)}${chalk76.dim("not connected")}`
|
|
22410
23169
|
);
|
|
22411
23170
|
console.log();
|
|
22412
|
-
console.log(
|
|
22413
|
-
console.log(
|
|
23171
|
+
console.log(chalk76.dim("To connect:"));
|
|
23172
|
+
console.log(chalk76.dim(` vm0 connector connect ${type2}`));
|
|
22414
23173
|
}
|
|
22415
23174
|
})
|
|
22416
23175
|
);
|
|
22417
23176
|
|
|
22418
23177
|
// src/commands/connector/disconnect.ts
|
|
22419
|
-
import { Command as
|
|
22420
|
-
import
|
|
22421
|
-
var disconnectCommand = new
|
|
23178
|
+
import { Command as Command87 } from "commander";
|
|
23179
|
+
import chalk77 from "chalk";
|
|
23180
|
+
var disconnectCommand = new Command87().name("disconnect").description("Disconnect a third-party service").argument("<type>", "Connector type to disconnect (e.g., github)").action(
|
|
22422
23181
|
withErrorHandler(async (type2) => {
|
|
22423
23182
|
const parseResult = connectorTypeSchema.safeParse(type2);
|
|
22424
23183
|
if (!parseResult.success) {
|
|
@@ -22429,145 +23188,16 @@ var disconnectCommand = new Command88().name("disconnect").description("Disconne
|
|
|
22429
23188
|
}
|
|
22430
23189
|
const connectorType = parseResult.data;
|
|
22431
23190
|
await deleteConnector(connectorType);
|
|
22432
|
-
console.log(
|
|
23191
|
+
console.log(chalk77.green(`\u2713 Disconnected ${type2}`));
|
|
22433
23192
|
})
|
|
22434
23193
|
);
|
|
22435
23194
|
|
|
22436
23195
|
// src/commands/connector/index.ts
|
|
22437
|
-
var connectorCommand = new
|
|
22438
|
-
|
|
22439
|
-
// src/commands/setup-claude/index.ts
|
|
22440
|
-
import { Command as Command90 } from "commander";
|
|
22441
|
-
import chalk80 from "chalk";
|
|
22442
|
-
|
|
22443
|
-
// src/lib/domain/onboard/claude-setup.ts
|
|
22444
|
-
import { spawn as spawn3 } from "child_process";
|
|
22445
|
-
import chalk79 from "chalk";
|
|
22446
|
-
var MARKETPLACE_NAME = "vm0-skills";
|
|
22447
|
-
var MARKETPLACE_REPO = "vm0-ai/vm0-skills";
|
|
22448
|
-
var PLUGIN_ID = "vm0@vm0-skills";
|
|
22449
|
-
var PRIMARY_SKILL_NAME = "vm0-agent";
|
|
22450
|
-
async function runClaudeCommand(args, cwd) {
|
|
22451
|
-
return new Promise((resolve2) => {
|
|
22452
|
-
const child = spawn3("claude", args, {
|
|
22453
|
-
stdio: ["inherit", "pipe", "pipe"],
|
|
22454
|
-
cwd
|
|
22455
|
-
});
|
|
22456
|
-
let stdout = "";
|
|
22457
|
-
let stderr = "";
|
|
22458
|
-
child.stdout?.on("data", (data) => {
|
|
22459
|
-
stdout += data.toString();
|
|
22460
|
-
});
|
|
22461
|
-
child.stderr?.on("data", (data) => {
|
|
22462
|
-
stderr += data.toString();
|
|
22463
|
-
});
|
|
22464
|
-
child.on("error", (err) => {
|
|
22465
|
-
resolve2({
|
|
22466
|
-
success: false,
|
|
22467
|
-
output: stdout,
|
|
22468
|
-
error: err.message
|
|
22469
|
-
});
|
|
22470
|
-
});
|
|
22471
|
-
child.on("close", (code) => {
|
|
22472
|
-
resolve2({
|
|
22473
|
-
success: code === 0,
|
|
22474
|
-
output: stdout,
|
|
22475
|
-
error: stderr || void 0
|
|
22476
|
-
});
|
|
22477
|
-
});
|
|
22478
|
-
});
|
|
22479
|
-
}
|
|
22480
|
-
async function isMarketplaceInstalled() {
|
|
22481
|
-
const result = await runClaudeCommand([
|
|
22482
|
-
"plugin",
|
|
22483
|
-
"marketplace",
|
|
22484
|
-
"list",
|
|
22485
|
-
"--json"
|
|
22486
|
-
]);
|
|
22487
|
-
if (!result.success) {
|
|
22488
|
-
return false;
|
|
22489
|
-
}
|
|
22490
|
-
try {
|
|
22491
|
-
const marketplaces = JSON.parse(result.output);
|
|
22492
|
-
return marketplaces.some((m) => m.name === MARKETPLACE_NAME);
|
|
22493
|
-
} catch {
|
|
22494
|
-
return false;
|
|
22495
|
-
}
|
|
22496
|
-
}
|
|
22497
|
-
async function addMarketplace() {
|
|
22498
|
-
const result = await runClaudeCommand([
|
|
22499
|
-
"plugin",
|
|
22500
|
-
"marketplace",
|
|
22501
|
-
"add",
|
|
22502
|
-
MARKETPLACE_REPO
|
|
22503
|
-
]);
|
|
22504
|
-
if (!result.success) {
|
|
22505
|
-
throw new Error(
|
|
22506
|
-
`Failed to add marketplace ${MARKETPLACE_REPO}: ${result.error ?? "unknown error"}`
|
|
22507
|
-
);
|
|
22508
|
-
}
|
|
22509
|
-
}
|
|
22510
|
-
async function updateMarketplace() {
|
|
22511
|
-
const result = await runClaudeCommand([
|
|
22512
|
-
"plugin",
|
|
22513
|
-
"marketplace",
|
|
22514
|
-
"update",
|
|
22515
|
-
MARKETPLACE_NAME
|
|
22516
|
-
]);
|
|
22517
|
-
if (!result.success) {
|
|
22518
|
-
console.warn(
|
|
22519
|
-
chalk79.yellow(
|
|
22520
|
-
`Warning: Could not update marketplace: ${result.error ?? "unknown error"}`
|
|
22521
|
-
)
|
|
22522
|
-
);
|
|
22523
|
-
}
|
|
22524
|
-
}
|
|
22525
|
-
async function ensureMarketplace() {
|
|
22526
|
-
const installed = await isMarketplaceInstalled();
|
|
22527
|
-
if (!installed) {
|
|
22528
|
-
await addMarketplace();
|
|
22529
|
-
} else {
|
|
22530
|
-
await updateMarketplace();
|
|
22531
|
-
}
|
|
22532
|
-
}
|
|
22533
|
-
async function installVm0Plugin(scope = "user", cwd) {
|
|
22534
|
-
await ensureMarketplace();
|
|
22535
|
-
const args = ["plugin", "install", PLUGIN_ID, "--scope", scope];
|
|
22536
|
-
const result = await runClaudeCommand(args, cwd);
|
|
22537
|
-
if (!result.success) {
|
|
22538
|
-
throw new Error(
|
|
22539
|
-
`Failed to install plugin ${PLUGIN_ID}: ${result.error ?? "unknown error"}`
|
|
22540
|
-
);
|
|
22541
|
-
}
|
|
22542
|
-
return {
|
|
22543
|
-
pluginId: PLUGIN_ID,
|
|
22544
|
-
scope
|
|
22545
|
-
};
|
|
22546
|
-
}
|
|
22547
|
-
|
|
22548
|
-
// src/commands/setup-claude/index.ts
|
|
22549
|
-
var setupClaudeCommand = new Command90().name("setup-claude").description("Install VM0 Claude Plugin").option("--agent-dir <dir>", "Agent directory to run install in").option("--scope <scope>", "Installation scope (user or project)", "project").action(
|
|
22550
|
-
withErrorHandler(async (options) => {
|
|
22551
|
-
console.log(chalk80.dim("Installing VM0 Claude Plugin..."));
|
|
22552
|
-
const scope = options.scope === "user" ? "user" : "project";
|
|
22553
|
-
const result = await installVm0Plugin(scope, options.agentDir);
|
|
22554
|
-
console.log(
|
|
22555
|
-
chalk80.green(`\u2713 Installed ${result.pluginId} (scope: ${result.scope})`)
|
|
22556
|
-
);
|
|
22557
|
-
console.log();
|
|
22558
|
-
console.log("Next step:");
|
|
22559
|
-
const cdPrefix = options.agentDir ? `cd ${options.agentDir} && ` : "";
|
|
22560
|
-
console.log(
|
|
22561
|
-
chalk80.cyan(
|
|
22562
|
-
` ${cdPrefix}claude "/${PRIMARY_SKILL_NAME} let's build a workflow"`
|
|
22563
|
-
)
|
|
22564
|
-
);
|
|
22565
|
-
})
|
|
22566
|
-
);
|
|
23196
|
+
var connectorCommand = new Command88().name("connector").description("Manage third-party service connections").addCommand(listCommand13).addCommand(statusCommand8).addCommand(connectCommand).addCommand(disconnectCommand);
|
|
22567
23197
|
|
|
22568
23198
|
// src/commands/preference/index.ts
|
|
22569
|
-
import { Command as
|
|
22570
|
-
import
|
|
23199
|
+
import { Command as Command89 } from "commander";
|
|
23200
|
+
import chalk78 from "chalk";
|
|
22571
23201
|
function detectTimezone2() {
|
|
22572
23202
|
return Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
22573
23203
|
}
|
|
@@ -22588,15 +23218,15 @@ function parseOnOff(flag, value) {
|
|
|
22588
23218
|
);
|
|
22589
23219
|
}
|
|
22590
23220
|
function displayPreferences(prefs) {
|
|
22591
|
-
console.log(
|
|
23221
|
+
console.log(chalk78.bold("Current preferences:"));
|
|
22592
23222
|
console.log(
|
|
22593
|
-
` Timezone: ${prefs.timezone ?
|
|
23223
|
+
` Timezone: ${prefs.timezone ? chalk78.cyan(prefs.timezone) : chalk78.dim("not set")}`
|
|
22594
23224
|
);
|
|
22595
23225
|
console.log(
|
|
22596
|
-
` Email notify: ${prefs.notifyEmail ?
|
|
23226
|
+
` Email notify: ${prefs.notifyEmail ? chalk78.green("on") : chalk78.dim("off")}`
|
|
22597
23227
|
);
|
|
22598
23228
|
console.log(
|
|
22599
|
-
` Slack notify: ${prefs.notifySlack ?
|
|
23229
|
+
` Slack notify: ${prefs.notifySlack ? chalk78.green("on") : chalk78.dim("off")}`
|
|
22600
23230
|
);
|
|
22601
23231
|
}
|
|
22602
23232
|
function buildUpdates(opts) {
|
|
@@ -22626,21 +23256,21 @@ function buildUpdates(opts) {
|
|
|
22626
23256
|
function printUpdateResult(updates, result) {
|
|
22627
23257
|
if (updates.timezone !== void 0) {
|
|
22628
23258
|
console.log(
|
|
22629
|
-
|
|
22630
|
-
`Timezone set to ${
|
|
23259
|
+
chalk78.green(
|
|
23260
|
+
`Timezone set to ${chalk78.cyan(result.timezone ?? updates.timezone)}`
|
|
22631
23261
|
)
|
|
22632
23262
|
);
|
|
22633
23263
|
}
|
|
22634
23264
|
if (updates.notifyEmail !== void 0) {
|
|
22635
23265
|
console.log(
|
|
22636
|
-
|
|
23266
|
+
chalk78.green(
|
|
22637
23267
|
`Email notifications ${result.notifyEmail ? "enabled" : "disabled"}`
|
|
22638
23268
|
)
|
|
22639
23269
|
);
|
|
22640
23270
|
}
|
|
22641
23271
|
if (updates.notifySlack !== void 0) {
|
|
22642
23272
|
console.log(
|
|
22643
|
-
|
|
23273
|
+
chalk78.green(
|
|
22644
23274
|
`Slack notifications ${result.notifySlack ? "enabled" : "disabled"}`
|
|
22645
23275
|
)
|
|
22646
23276
|
);
|
|
@@ -22649,7 +23279,7 @@ function printUpdateResult(updates, result) {
|
|
|
22649
23279
|
async function interactiveSetup(prefs) {
|
|
22650
23280
|
if (!prefs.timezone) {
|
|
22651
23281
|
const detectedTz = detectTimezone2();
|
|
22652
|
-
console.log(
|
|
23282
|
+
console.log(chalk78.dim(`
|
|
22653
23283
|
System timezone detected: ${detectedTz}`));
|
|
22654
23284
|
const tz = await promptText(
|
|
22655
23285
|
"Set timezone? (enter timezone or leave empty to skip)",
|
|
@@ -22660,7 +23290,7 @@ System timezone detected: ${detectedTz}`));
|
|
|
22660
23290
|
throw new Error(`Invalid timezone: ${tz.trim()}`);
|
|
22661
23291
|
}
|
|
22662
23292
|
await updateUserPreferences({ timezone: tz.trim() });
|
|
22663
|
-
console.log(
|
|
23293
|
+
console.log(chalk78.green(`Timezone set to ${chalk78.cyan(tz.trim())}`));
|
|
22664
23294
|
}
|
|
22665
23295
|
}
|
|
22666
23296
|
if (!prefs.notifyEmail) {
|
|
@@ -22670,11 +23300,11 @@ System timezone detected: ${detectedTz}`));
|
|
|
22670
23300
|
);
|
|
22671
23301
|
if (enable) {
|
|
22672
23302
|
await updateUserPreferences({ notifyEmail: true });
|
|
22673
|
-
console.log(
|
|
23303
|
+
console.log(chalk78.green("Email notifications enabled"));
|
|
22674
23304
|
}
|
|
22675
23305
|
}
|
|
22676
23306
|
}
|
|
22677
|
-
var preferenceCommand = new
|
|
23307
|
+
var preferenceCommand = new Command89().name("preference").description("View or update your preferences").option("--timezone <timezone>", "IANA timezone (e.g., America/New_York)").option("--notify-email <on|off>", "Enable or disable email notifications").option("--notify-slack <on|off>", "Enable or disable Slack notifications").action(
|
|
22678
23308
|
withErrorHandler(async (opts) => {
|
|
22679
23309
|
const updates = buildUpdates(opts);
|
|
22680
23310
|
if (updates) {
|
|
@@ -22689,32 +23319,32 @@ var preferenceCommand = new Command91().name("preference").description("View or
|
|
|
22689
23319
|
} else if (!prefs.timezone) {
|
|
22690
23320
|
console.log();
|
|
22691
23321
|
console.log(
|
|
22692
|
-
`To set timezone: ${
|
|
23322
|
+
`To set timezone: ${chalk78.cyan("vm0 preference --timezone <timezone>")}`
|
|
22693
23323
|
);
|
|
22694
23324
|
console.log(
|
|
22695
|
-
|
|
23325
|
+
chalk78.dim("Example: vm0 preference --timezone America/New_York")
|
|
22696
23326
|
);
|
|
22697
23327
|
}
|
|
22698
23328
|
})
|
|
22699
23329
|
);
|
|
22700
23330
|
|
|
22701
23331
|
// src/commands/upgrade/index.ts
|
|
22702
|
-
import { Command as
|
|
22703
|
-
import
|
|
22704
|
-
var upgradeCommand = new
|
|
23332
|
+
import { Command as Command90 } from "commander";
|
|
23333
|
+
import chalk79 from "chalk";
|
|
23334
|
+
var upgradeCommand = new Command90().name("upgrade").description("Upgrade vm0 CLI to the latest version").action(
|
|
22705
23335
|
withErrorHandler(async () => {
|
|
22706
23336
|
console.log("Checking for updates...");
|
|
22707
23337
|
const latestVersion = await getLatestVersion();
|
|
22708
23338
|
if (latestVersion === null) {
|
|
22709
23339
|
throw new Error("Could not check for updates. Please try again later.");
|
|
22710
23340
|
}
|
|
22711
|
-
if (latestVersion === "9.
|
|
22712
|
-
console.log(
|
|
23341
|
+
if (latestVersion === "9.75.0") {
|
|
23342
|
+
console.log(chalk79.green(`\u2713 Already up to date (${"9.75.0"})`));
|
|
22713
23343
|
return;
|
|
22714
23344
|
}
|
|
22715
23345
|
console.log(
|
|
22716
|
-
|
|
22717
|
-
`Current version: ${"9.
|
|
23346
|
+
chalk79.yellow(
|
|
23347
|
+
`Current version: ${"9.75.0"} -> Latest version: ${latestVersion}`
|
|
22718
23348
|
)
|
|
22719
23349
|
);
|
|
22720
23350
|
console.log();
|
|
@@ -22722,26 +23352,26 @@ var upgradeCommand = new Command92().name("upgrade").description("Upgrade vm0 CL
|
|
|
22722
23352
|
if (!isAutoUpgradeSupported(packageManager)) {
|
|
22723
23353
|
if (packageManager === "unknown") {
|
|
22724
23354
|
console.log(
|
|
22725
|
-
|
|
23355
|
+
chalk79.yellow(
|
|
22726
23356
|
"Could not detect your package manager for auto-upgrade."
|
|
22727
23357
|
)
|
|
22728
23358
|
);
|
|
22729
23359
|
} else {
|
|
22730
23360
|
console.log(
|
|
22731
|
-
|
|
23361
|
+
chalk79.yellow(
|
|
22732
23362
|
`Auto-upgrade is not supported for ${packageManager}.`
|
|
22733
23363
|
)
|
|
22734
23364
|
);
|
|
22735
23365
|
}
|
|
22736
|
-
console.log(
|
|
22737
|
-
console.log(
|
|
23366
|
+
console.log(chalk79.yellow("Please upgrade manually:"));
|
|
23367
|
+
console.log(chalk79.cyan(` ${getManualUpgradeCommand(packageManager)}`));
|
|
22738
23368
|
return;
|
|
22739
23369
|
}
|
|
22740
23370
|
console.log(`Upgrading via ${packageManager}...`);
|
|
22741
23371
|
const success = await performUpgrade(packageManager);
|
|
22742
23372
|
if (success) {
|
|
22743
23373
|
console.log(
|
|
22744
|
-
|
|
23374
|
+
chalk79.green(`\u2713 Upgraded from ${"9.75.0"} to ${latestVersion}`)
|
|
22745
23375
|
);
|
|
22746
23376
|
return;
|
|
22747
23377
|
}
|
|
@@ -22754,8 +23384,8 @@ var upgradeCommand = new Command92().name("upgrade").description("Upgrade vm0 CL
|
|
|
22754
23384
|
);
|
|
22755
23385
|
|
|
22756
23386
|
// src/commands/whoami.ts
|
|
22757
|
-
import { Command as
|
|
22758
|
-
import
|
|
23387
|
+
import { Command as Command91 } from "commander";
|
|
23388
|
+
import chalk80 from "chalk";
|
|
22759
23389
|
function isInsideSandbox() {
|
|
22760
23390
|
return !!process.env.VM0_RUN_ID;
|
|
22761
23391
|
}
|
|
@@ -22770,7 +23400,7 @@ async function showSandboxInfo() {
|
|
|
22770
23400
|
const apiUrl = process.env.VM0_API_URL;
|
|
22771
23401
|
const hasAgentInfo = agentName || agentVersion || agentComposeId || agentOrgSlug || cliAgentType;
|
|
22772
23402
|
if (hasAgentInfo) {
|
|
22773
|
-
console.log(
|
|
23403
|
+
console.log(chalk80.bold("Agent:"));
|
|
22774
23404
|
if (agentName) console.log(` Name: ${agentName}`);
|
|
22775
23405
|
if (agentVersion) console.log(` Version: ${agentVersion}`);
|
|
22776
23406
|
if (agentComposeId) console.log(` Compose ID: ${agentComposeId}`);
|
|
@@ -22778,7 +23408,7 @@ async function showSandboxInfo() {
|
|
|
22778
23408
|
if (cliAgentType) console.log(` Framework: ${cliAgentType}`);
|
|
22779
23409
|
console.log();
|
|
22780
23410
|
}
|
|
22781
|
-
console.log(
|
|
23411
|
+
console.log(chalk80.bold("Run:"));
|
|
22782
23412
|
if (runId) console.log(` ID: ${runId}`);
|
|
22783
23413
|
if (activeOrg) console.log(` Org: ${activeOrg}`);
|
|
22784
23414
|
if (apiUrl) console.log(` API: ${apiUrl}`);
|
|
@@ -22787,23 +23417,23 @@ async function showLocalInfo() {
|
|
|
22787
23417
|
const token = await getToken();
|
|
22788
23418
|
const apiUrl = await getApiUrl();
|
|
22789
23419
|
const activeOrg = await getActiveOrg();
|
|
22790
|
-
console.log(
|
|
23420
|
+
console.log(chalk80.bold("Auth:"));
|
|
22791
23421
|
if (token) {
|
|
22792
23422
|
const tokenSource = process.env.VM0_TOKEN ? "VM0_TOKEN env var" : "config file";
|
|
22793
23423
|
console.log(
|
|
22794
|
-
` Status: ${
|
|
23424
|
+
` Status: ${chalk80.green("Authenticated")} (via ${tokenSource})`
|
|
22795
23425
|
);
|
|
22796
23426
|
} else {
|
|
22797
|
-
console.log(` Status: ${
|
|
23427
|
+
console.log(` Status: ${chalk80.dim("Not authenticated")}`);
|
|
22798
23428
|
}
|
|
22799
23429
|
console.log(` API: ${apiUrl}`);
|
|
22800
23430
|
console.log();
|
|
22801
23431
|
if (activeOrg) {
|
|
22802
|
-
console.log(
|
|
23432
|
+
console.log(chalk80.bold("Org:"));
|
|
22803
23433
|
console.log(` Active: ${activeOrg}`);
|
|
22804
23434
|
}
|
|
22805
23435
|
}
|
|
22806
|
-
var whoamiCommand = new
|
|
23436
|
+
var whoamiCommand = new Command91().name("whoami").description("Show current identity and environment information").action(
|
|
22807
23437
|
withErrorHandler(async () => {
|
|
22808
23438
|
if (isInsideSandbox()) {
|
|
22809
23439
|
await showSandboxInfo();
|
|
@@ -22813,9 +23443,15 @@ var whoamiCommand = new Command93().name("whoami").description("Show current ide
|
|
|
22813
23443
|
})
|
|
22814
23444
|
);
|
|
22815
23445
|
|
|
23446
|
+
// src/commands/zero/index.ts
|
|
23447
|
+
import { Command as Command92 } from "commander";
|
|
23448
|
+
var zeroCommand = new Command92("zero").description(
|
|
23449
|
+
"Zero platform commands"
|
|
23450
|
+
);
|
|
23451
|
+
|
|
22816
23452
|
// src/index.ts
|
|
22817
|
-
var program = new
|
|
22818
|
-
program.name("vm0").description("VM0 CLI - Build and run agents with natural language").version("9.
|
|
23453
|
+
var program = new Command93();
|
|
23454
|
+
program.name("vm0").description("VM0 CLI - Build and run agents with natural language").version("9.75.0");
|
|
22819
23455
|
program.addCommand(authCommand);
|
|
22820
23456
|
program.addCommand(infoCommand);
|
|
22821
23457
|
program.addCommand(composeCommand);
|
|
@@ -22829,14 +23465,13 @@ program.addCommand(orgCommand);
|
|
|
22829
23465
|
program.addCommand(agentCommand);
|
|
22830
23466
|
program.addCommand(initCommand4);
|
|
22831
23467
|
program.addCommand(scheduleCommand);
|
|
22832
|
-
program.addCommand(usageCommand);
|
|
22833
23468
|
program.addCommand(secretCommand);
|
|
22834
23469
|
program.addCommand(variableCommand);
|
|
22835
23470
|
program.addCommand(connectorCommand);
|
|
22836
|
-
program.addCommand(setupClaudeCommand);
|
|
22837
23471
|
program.addCommand(preferenceCommand);
|
|
22838
23472
|
program.addCommand(upgradeCommand);
|
|
22839
23473
|
program.addCommand(whoamiCommand);
|
|
23474
|
+
program.addCommand(zeroCommand);
|
|
22840
23475
|
if (process.argv[1]?.endsWith("index.js") || process.argv[1]?.endsWith("index.ts") || process.argv[1]?.endsWith("vm0")) {
|
|
22841
23476
|
process.stdout.on("error", (err) => {
|
|
22842
23477
|
if (err.code === "EPIPE") process.exit(0);
|