@vm0/cli 9.74.3 → 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 +1126 -484
- 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";
|
|
@@ -847,9 +847,15 @@ var logEntrySchema = z5.object({
|
|
|
847
847
|
startedAt: z5.string().nullable(),
|
|
848
848
|
completedAt: z5.string().nullable()
|
|
849
849
|
});
|
|
850
|
+
var logsFiltersSchema = z5.object({
|
|
851
|
+
statuses: z5.array(logStatusSchema),
|
|
852
|
+
sources: z5.array(triggerSourceSchema),
|
|
853
|
+
agents: z5.array(z5.string())
|
|
854
|
+
});
|
|
850
855
|
var logsListResponseSchema = z5.object({
|
|
851
856
|
data: z5.array(logEntrySchema),
|
|
852
|
-
pagination: paginationSchema
|
|
857
|
+
pagination: paginationSchema,
|
|
858
|
+
filters: logsFiltersSchema
|
|
853
859
|
});
|
|
854
860
|
var artifactSchema = z5.object({
|
|
855
861
|
name: z5.string().nullable(),
|
|
@@ -881,7 +887,8 @@ var logsListContract = c2.router({
|
|
|
881
887
|
agent: z5.string().optional(),
|
|
882
888
|
name: z5.string().optional(),
|
|
883
889
|
org: z5.string().optional(),
|
|
884
|
-
status: logStatusSchema.optional()
|
|
890
|
+
status: logStatusSchema.optional(),
|
|
891
|
+
triggerSource: triggerSourceSchema.optional()
|
|
885
892
|
}),
|
|
886
893
|
responses: {
|
|
887
894
|
200: logsListResponseSchema,
|
|
@@ -2762,7 +2769,7 @@ function mpFirewall(type2, authHeaders, placeholders) {
|
|
|
2762
2769
|
{
|
|
2763
2770
|
base: getFirewallBaseUrl(type2),
|
|
2764
2771
|
auth: { headers: authHeaders },
|
|
2765
|
-
permissions: [{ name: "
|
|
2772
|
+
permissions: [{ name: "unrestricted", rules: ["ANY /{path*}"] }]
|
|
2766
2773
|
}
|
|
2767
2774
|
],
|
|
2768
2775
|
placeholders
|
|
@@ -3080,6 +3087,7 @@ var chatThreadListItemSchema = z18.object({
|
|
|
3080
3087
|
id: z18.string(),
|
|
3081
3088
|
title: z18.string().nullable(),
|
|
3082
3089
|
preview: z18.string().nullable(),
|
|
3090
|
+
agentComposeId: z18.string(),
|
|
3083
3091
|
createdAt: z18.string(),
|
|
3084
3092
|
updatedAt: z18.string()
|
|
3085
3093
|
});
|
|
@@ -3372,6 +3380,7 @@ var deployScheduleRequestSchema = z20.object({
|
|
|
3372
3380
|
intervalSeconds: z20.number().int().min(0).optional(),
|
|
3373
3381
|
timezone: z20.string().default("UTC"),
|
|
3374
3382
|
prompt: z20.string().min(1, "Prompt required"),
|
|
3383
|
+
description: z20.string().optional(),
|
|
3375
3384
|
appendSystemPrompt: z20.string().optional(),
|
|
3376
3385
|
// vars and secrets removed - now managed via server-side tables
|
|
3377
3386
|
artifactName: z20.string().optional(),
|
|
@@ -3410,6 +3419,7 @@ var scheduleResponseSchema = z20.object({
|
|
|
3410
3419
|
intervalSeconds: z20.number().nullable(),
|
|
3411
3420
|
timezone: z20.string(),
|
|
3412
3421
|
prompt: z20.string(),
|
|
3422
|
+
description: z20.string().nullable(),
|
|
3413
3423
|
appendSystemPrompt: z20.string().nullable(),
|
|
3414
3424
|
vars: z20.record(z20.string(), z20.string()).nullable(),
|
|
3415
3425
|
// Secret names only (values are never returned)
|
|
@@ -7202,6 +7212,302 @@ function resolveFirewallRef(input) {
|
|
|
7202
7212
|
return trimmed;
|
|
7203
7213
|
}
|
|
7204
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
|
+
|
|
7205
7511
|
// ../../packages/core/src/firewalls/github.generated.ts
|
|
7206
7512
|
var githubFirewall = {
|
|
7207
7513
|
name: "github",
|
|
@@ -10364,6 +10670,665 @@ var googleSheetsFirewall = {
|
|
|
10364
10670
|
]
|
|
10365
10671
|
};
|
|
10366
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
|
+
|
|
10367
11332
|
// ../../packages/core/src/firewalls/slack.generated.ts
|
|
10368
11333
|
var slackFirewall = {
|
|
10369
11334
|
name: "slack",
|
|
@@ -11194,12 +12159,14 @@ var slackFirewall = {
|
|
|
11194
12159
|
|
|
11195
12160
|
// ../../packages/core/src/firewalls/index.ts
|
|
11196
12161
|
var builtinFirewalls = {
|
|
12162
|
+
confluence: confluenceFirewall,
|
|
11197
12163
|
github: githubFirewall,
|
|
11198
12164
|
gmail: gmailFirewall,
|
|
11199
12165
|
"google-calendar": googleCalendarFirewall,
|
|
11200
12166
|
"google-docs": googleDocsFirewall,
|
|
11201
12167
|
"google-drive": googleDriveFirewall,
|
|
11202
12168
|
"google-sheets": googleSheetsFirewall,
|
|
12169
|
+
jira: jiraFirewall,
|
|
11203
12170
|
slack: slackFirewall
|
|
11204
12171
|
};
|
|
11205
12172
|
|
|
@@ -13196,7 +14163,7 @@ function getConfigPath() {
|
|
|
13196
14163
|
return join2(homedir2(), ".vm0", "config.json");
|
|
13197
14164
|
}
|
|
13198
14165
|
var infoCommand = new Command6().name("info").description("Display environment and debug information").action(async () => {
|
|
13199
|
-
console.log(chalk4.bold(`VM0 CLI v${"9.
|
|
14166
|
+
console.log(chalk4.bold(`VM0 CLI v${"9.75.0"}`));
|
|
13200
14167
|
console.log();
|
|
13201
14168
|
const config = await loadConfig();
|
|
13202
14169
|
const hasEnvToken = !!process.env.VM0_TOKEN;
|
|
@@ -13834,35 +14801,6 @@ async function getConnector(type2) {
|
|
|
13834
14801
|
handleError(result, `Failed to get connector "${type2}"`);
|
|
13835
14802
|
}
|
|
13836
14803
|
|
|
13837
|
-
// src/lib/api/domains/usage.ts
|
|
13838
|
-
async function getUsage(options) {
|
|
13839
|
-
const baseUrl = await getBaseUrl();
|
|
13840
|
-
const headers = await getHeaders();
|
|
13841
|
-
const activeOrg = await getActiveOrg();
|
|
13842
|
-
if (!activeOrg) {
|
|
13843
|
-
throw new Error(
|
|
13844
|
-
"No active organization configured. Run: vm0 org use <slug>"
|
|
13845
|
-
);
|
|
13846
|
-
}
|
|
13847
|
-
const params = new URLSearchParams({
|
|
13848
|
-
start_date: options.startDate,
|
|
13849
|
-
end_date: options.endDate,
|
|
13850
|
-
org: activeOrg
|
|
13851
|
-
});
|
|
13852
|
-
const response = await fetch(`${baseUrl}/api/usage?${params}`, {
|
|
13853
|
-
method: "GET",
|
|
13854
|
-
headers
|
|
13855
|
-
});
|
|
13856
|
-
if (!response.ok) {
|
|
13857
|
-
const body = await response.json();
|
|
13858
|
-
handleError(
|
|
13859
|
-
{ status: response.status, body },
|
|
13860
|
-
"Failed to fetch usage data"
|
|
13861
|
-
);
|
|
13862
|
-
}
|
|
13863
|
-
return response.json();
|
|
13864
|
-
}
|
|
13865
|
-
|
|
13866
14804
|
// src/lib/api/domains/user-preferences.ts
|
|
13867
14805
|
import { initClient as initClient11 } from "@ts-rest/core";
|
|
13868
14806
|
async function getUserPreferences() {
|
|
@@ -15256,7 +16194,7 @@ var composeCommand = new Command7().name("compose").description("Create or updat
|
|
|
15256
16194
|
options.autoUpdate = false;
|
|
15257
16195
|
}
|
|
15258
16196
|
if (options.autoUpdate !== false) {
|
|
15259
|
-
await startSilentUpgrade("9.
|
|
16197
|
+
await startSilentUpgrade("9.75.0");
|
|
15260
16198
|
}
|
|
15261
16199
|
try {
|
|
15262
16200
|
let result;
|
|
@@ -16091,7 +17029,7 @@ var mainRunCommand = new Command8().name("run").description("Run an agent").argu
|
|
|
16091
17029
|
withErrorHandler(
|
|
16092
17030
|
async (identifier, prompt, options) => {
|
|
16093
17031
|
if (options.autoUpdate !== false) {
|
|
16094
|
-
await startSilentUpgrade("9.
|
|
17032
|
+
await startSilentUpgrade("9.75.0");
|
|
16095
17033
|
}
|
|
16096
17034
|
const { org, name, version } = parseIdentifier(identifier);
|
|
16097
17035
|
let composeId;
|
|
@@ -17847,7 +18785,7 @@ var cookAction = new Command35().name("cook").description("Quick start: prepare,
|
|
|
17847
18785
|
withErrorHandler(
|
|
17848
18786
|
async (prompt, options) => {
|
|
17849
18787
|
if (options.autoUpdate !== false) {
|
|
17850
|
-
const shouldExit = await checkAndUpgrade("9.
|
|
18788
|
+
const shouldExit = await checkAndUpgrade("9.75.0", prompt);
|
|
17851
18789
|
if (shouldExit) {
|
|
17852
18790
|
process.exit(0);
|
|
17853
18791
|
}
|
|
@@ -18559,26 +19497,6 @@ var ApiClient = class {
|
|
|
18559
19497
|
const message = errorBody.error?.message || `Failed to list runs for schedule "${params.name}"`;
|
|
18560
19498
|
throw new Error(message);
|
|
18561
19499
|
}
|
|
18562
|
-
/**
|
|
18563
|
-
* Get usage statistics
|
|
18564
|
-
*/
|
|
18565
|
-
async getUsage(options) {
|
|
18566
|
-
const baseUrl = await this.getBaseUrl();
|
|
18567
|
-
const headers = await this.getHeaders();
|
|
18568
|
-
const params = new URLSearchParams({
|
|
18569
|
-
start_date: options.startDate,
|
|
18570
|
-
end_date: options.endDate
|
|
18571
|
-
});
|
|
18572
|
-
const response = await fetch(`${baseUrl}/api/usage?${params}`, {
|
|
18573
|
-
method: "GET",
|
|
18574
|
-
headers
|
|
18575
|
-
});
|
|
18576
|
-
if (!response.ok) {
|
|
18577
|
-
const error = await response.json();
|
|
18578
|
-
throw new Error(error.error?.message || "Failed to fetch usage data");
|
|
18579
|
-
}
|
|
18580
|
-
return response.json();
|
|
18581
|
-
}
|
|
18582
19500
|
/**
|
|
18583
19501
|
* Generic GET request
|
|
18584
19502
|
*/
|
|
@@ -20562,9 +21480,6 @@ var initCommand4 = new Command68().name("init").description("Initialize a new VM
|
|
|
20562
21480
|
console.log(
|
|
20563
21481
|
` 2. Edit ${chalk60.cyan("AGENTS.md")} to customize your agent's workflow`
|
|
20564
21482
|
);
|
|
20565
|
-
console.log(
|
|
20566
|
-
` Or install Claude plugin: ${chalk60.cyan(`vm0 setup-claude && claude "/vm0-agent let's build an agent"`)}`
|
|
20567
|
-
);
|
|
20568
21483
|
console.log(
|
|
20569
21484
|
` 3. Run your agent: ${chalk60.cyan(`vm0 cook "let's start working"`)}`
|
|
20570
21485
|
);
|
|
@@ -21503,217 +22418,68 @@ var disableCommand = new Command74().name("disable").description("Disable a sche
|
|
|
21503
22418
|
// src/commands/schedule/index.ts
|
|
21504
22419
|
var scheduleCommand = new Command75().name("schedule").description("Manage agent schedules").addCommand(setupCommand2).addCommand(listCommand10).addCommand(statusCommand7).addCommand(deleteCommand2).addCommand(enableCommand).addCommand(disableCommand);
|
|
21505
22420
|
|
|
21506
|
-
// src/commands/usage/index.ts
|
|
21507
|
-
import { Command as Command76 } from "commander";
|
|
21508
|
-
import chalk67 from "chalk";
|
|
21509
|
-
|
|
21510
|
-
// src/lib/utils/duration-formatter.ts
|
|
21511
|
-
function formatDuration(ms) {
|
|
21512
|
-
if (ms === null || ms === void 0 || ms === 0) {
|
|
21513
|
-
return "-";
|
|
21514
|
-
}
|
|
21515
|
-
if (ms < 0) {
|
|
21516
|
-
return "-";
|
|
21517
|
-
}
|
|
21518
|
-
const totalSeconds = Math.floor(ms / 1e3);
|
|
21519
|
-
if (totalSeconds === 0) {
|
|
21520
|
-
return "< 1s";
|
|
21521
|
-
}
|
|
21522
|
-
const hours = Math.floor(totalSeconds / 3600);
|
|
21523
|
-
const minutes = Math.floor(totalSeconds % 3600 / 60);
|
|
21524
|
-
const seconds = totalSeconds % 60;
|
|
21525
|
-
const parts = [];
|
|
21526
|
-
if (hours > 0) {
|
|
21527
|
-
parts.push(`${hours}h`);
|
|
21528
|
-
}
|
|
21529
|
-
if (minutes > 0) {
|
|
21530
|
-
parts.push(`${minutes}m`);
|
|
21531
|
-
}
|
|
21532
|
-
if (seconds > 0) {
|
|
21533
|
-
parts.push(`${seconds}s`);
|
|
21534
|
-
}
|
|
21535
|
-
return parts.join(" ");
|
|
21536
|
-
}
|
|
21537
|
-
|
|
21538
|
-
// src/commands/usage/index.ts
|
|
21539
|
-
var MAX_RANGE_MS = 30 * 24 * 60 * 60 * 1e3;
|
|
21540
|
-
var DEFAULT_RANGE_MS = 7 * 24 * 60 * 60 * 1e3;
|
|
21541
|
-
function formatDateDisplay(dateStr) {
|
|
21542
|
-
const date = new Date(dateStr);
|
|
21543
|
-
return date.toLocaleDateString("en-US", { month: "short", day: "numeric" });
|
|
21544
|
-
}
|
|
21545
|
-
function formatDateRange(start, end) {
|
|
21546
|
-
const startDate = new Date(start);
|
|
21547
|
-
const endDate = new Date(end);
|
|
21548
|
-
endDate.setDate(endDate.getDate() - 1);
|
|
21549
|
-
const startStr = startDate.toLocaleDateString("en-US", {
|
|
21550
|
-
month: "short",
|
|
21551
|
-
day: "numeric"
|
|
21552
|
-
});
|
|
21553
|
-
const endStr = endDate.toLocaleDateString("en-US", {
|
|
21554
|
-
month: "short",
|
|
21555
|
-
day: "numeric",
|
|
21556
|
-
year: "numeric"
|
|
21557
|
-
});
|
|
21558
|
-
return `${startStr} - ${endStr}`;
|
|
21559
|
-
}
|
|
21560
|
-
function fillMissingDates(daily, startDate, endDate) {
|
|
21561
|
-
const dateMap = /* @__PURE__ */ new Map();
|
|
21562
|
-
for (const day of daily) {
|
|
21563
|
-
dateMap.set(day.date, day);
|
|
21564
|
-
}
|
|
21565
|
-
const result = [];
|
|
21566
|
-
const current = new Date(startDate);
|
|
21567
|
-
current.setUTCHours(0, 0, 0, 0);
|
|
21568
|
-
while (current < endDate) {
|
|
21569
|
-
const dateStr = current.toISOString().split("T")[0];
|
|
21570
|
-
const existing = dateMap.get(dateStr);
|
|
21571
|
-
if (existing) {
|
|
21572
|
-
result.push(existing);
|
|
21573
|
-
} else {
|
|
21574
|
-
result.push({ date: dateStr, run_count: 0, run_time_ms: 0 });
|
|
21575
|
-
}
|
|
21576
|
-
current.setDate(current.getDate() + 1);
|
|
21577
|
-
}
|
|
21578
|
-
result.sort((a, b) => b.date.localeCompare(a.date));
|
|
21579
|
-
return result;
|
|
21580
|
-
}
|
|
21581
|
-
var usageCommand = new Command76().name("usage").description("View usage statistics").option("--since <date>", "Start date (ISO format or relative: 7d, 30d)").option(
|
|
21582
|
-
"--until <date>",
|
|
21583
|
-
"End date (ISO format or relative, defaults to now)"
|
|
21584
|
-
).action(
|
|
21585
|
-
withErrorHandler(async (options) => {
|
|
21586
|
-
const now = /* @__PURE__ */ new Date();
|
|
21587
|
-
let endDate;
|
|
21588
|
-
let startDate;
|
|
21589
|
-
if (options.until) {
|
|
21590
|
-
try {
|
|
21591
|
-
const untilMs = parseTime(options.until);
|
|
21592
|
-
endDate = new Date(untilMs);
|
|
21593
|
-
} catch {
|
|
21594
|
-
throw new Error(
|
|
21595
|
-
"Invalid --until format. Use ISO (2026-01-01) or relative (7d, 30d)"
|
|
21596
|
-
);
|
|
21597
|
-
}
|
|
21598
|
-
} else {
|
|
21599
|
-
endDate = now;
|
|
21600
|
-
}
|
|
21601
|
-
if (options.since) {
|
|
21602
|
-
try {
|
|
21603
|
-
const sinceMs = parseTime(options.since);
|
|
21604
|
-
startDate = new Date(sinceMs);
|
|
21605
|
-
} catch {
|
|
21606
|
-
throw new Error(
|
|
21607
|
-
"Invalid --since format. Use ISO (2026-01-01) or relative (7d, 30d)"
|
|
21608
|
-
);
|
|
21609
|
-
}
|
|
21610
|
-
} else {
|
|
21611
|
-
startDate = new Date(endDate.getTime() - DEFAULT_RANGE_MS);
|
|
21612
|
-
}
|
|
21613
|
-
if (startDate >= endDate) {
|
|
21614
|
-
throw new Error("--since must be before --until");
|
|
21615
|
-
}
|
|
21616
|
-
const rangeMs = endDate.getTime() - startDate.getTime();
|
|
21617
|
-
if (rangeMs > MAX_RANGE_MS) {
|
|
21618
|
-
throw new Error(
|
|
21619
|
-
"Time range exceeds maximum of 30 days. Use --until to specify an end date"
|
|
21620
|
-
);
|
|
21621
|
-
}
|
|
21622
|
-
const usage = await getUsage({
|
|
21623
|
-
startDate: startDate.toISOString(),
|
|
21624
|
-
endDate: endDate.toISOString()
|
|
21625
|
-
});
|
|
21626
|
-
const filledDaily = fillMissingDates(
|
|
21627
|
-
usage.daily,
|
|
21628
|
-
new Date(usage.period.start),
|
|
21629
|
-
new Date(usage.period.end)
|
|
21630
|
-
);
|
|
21631
|
-
console.log();
|
|
21632
|
-
console.log(
|
|
21633
|
-
chalk67.bold(
|
|
21634
|
-
`Usage Summary (${formatDateRange(usage.period.start, usage.period.end)})`
|
|
21635
|
-
)
|
|
21636
|
-
);
|
|
21637
|
-
console.log();
|
|
21638
|
-
console.log(chalk67.dim("DATE RUNS RUN TIME"));
|
|
21639
|
-
for (const day of filledDaily) {
|
|
21640
|
-
const dateDisplay = formatDateDisplay(day.date).padEnd(10);
|
|
21641
|
-
const runsDisplay = String(day.run_count).padStart(6);
|
|
21642
|
-
const timeDisplay = formatDuration(day.run_time_ms);
|
|
21643
|
-
console.log(`${dateDisplay}${runsDisplay} ${timeDisplay}`);
|
|
21644
|
-
}
|
|
21645
|
-
console.log(chalk67.dim("\u2500".repeat(29)));
|
|
21646
|
-
const totalRunsDisplay = String(usage.summary.total_runs).padStart(6);
|
|
21647
|
-
const totalTimeDisplay = formatDuration(usage.summary.total_run_time_ms);
|
|
21648
|
-
console.log(
|
|
21649
|
-
`${"TOTAL".padEnd(10)}${totalRunsDisplay} ${totalTimeDisplay}`
|
|
21650
|
-
);
|
|
21651
|
-
console.log();
|
|
21652
|
-
})
|
|
21653
|
-
);
|
|
21654
|
-
|
|
21655
22421
|
// src/commands/secret/index.ts
|
|
21656
|
-
import { Command as
|
|
22422
|
+
import { Command as Command79 } from "commander";
|
|
21657
22423
|
|
|
21658
22424
|
// src/commands/secret/list.ts
|
|
21659
|
-
import { Command as
|
|
21660
|
-
import
|
|
21661
|
-
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(
|
|
21662
22428
|
withErrorHandler(async () => {
|
|
21663
22429
|
const result = await listSecrets();
|
|
21664
22430
|
if (result.secrets.length === 0) {
|
|
21665
|
-
console.log(
|
|
22431
|
+
console.log(chalk67.dim("No secrets found"));
|
|
21666
22432
|
console.log();
|
|
21667
22433
|
console.log("To add a secret:");
|
|
21668
|
-
console.log(
|
|
22434
|
+
console.log(chalk67.cyan(" vm0 secret set MY_API_KEY --body <value>"));
|
|
21669
22435
|
return;
|
|
21670
22436
|
}
|
|
21671
|
-
console.log(
|
|
22437
|
+
console.log(chalk67.bold("Secrets:"));
|
|
21672
22438
|
console.log();
|
|
21673
22439
|
for (const secret of result.secrets) {
|
|
21674
22440
|
let typeIndicator = "";
|
|
21675
22441
|
let derivedLine = null;
|
|
21676
22442
|
if (secret.type === "model-provider") {
|
|
21677
|
-
typeIndicator =
|
|
22443
|
+
typeIndicator = chalk67.dim(" [model-provider]");
|
|
21678
22444
|
} else if (secret.type === "connector") {
|
|
21679
22445
|
const derived = getConnectorDerivedNames(secret.name);
|
|
21680
22446
|
if (derived) {
|
|
21681
|
-
typeIndicator =
|
|
21682
|
-
derivedLine =
|
|
22447
|
+
typeIndicator = chalk67.dim(` [${derived.connectorLabel} connector]`);
|
|
22448
|
+
derivedLine = chalk67.dim(
|
|
21683
22449
|
`Available as: ${derived.envVarNames.join(", ")}`
|
|
21684
22450
|
);
|
|
21685
22451
|
} else {
|
|
21686
|
-
typeIndicator =
|
|
22452
|
+
typeIndicator = chalk67.dim(" [connector]");
|
|
21687
22453
|
}
|
|
21688
22454
|
} else if (secret.type === "user") {
|
|
21689
22455
|
const derived = getConnectorDerivedNames(secret.name);
|
|
21690
22456
|
if (derived) {
|
|
21691
|
-
typeIndicator =
|
|
21692
|
-
derivedLine =
|
|
22457
|
+
typeIndicator = chalk67.dim(` [${derived.connectorLabel} connector]`);
|
|
22458
|
+
derivedLine = chalk67.dim(
|
|
21693
22459
|
`Available as: ${derived.envVarNames.join(", ")}`
|
|
21694
22460
|
);
|
|
21695
22461
|
}
|
|
21696
22462
|
}
|
|
21697
|
-
console.log(` ${
|
|
22463
|
+
console.log(` ${chalk67.cyan(secret.name)}${typeIndicator}`);
|
|
21698
22464
|
if (derivedLine) {
|
|
21699
22465
|
console.log(` ${derivedLine}`);
|
|
21700
22466
|
}
|
|
21701
22467
|
if (secret.description) {
|
|
21702
|
-
console.log(` ${
|
|
22468
|
+
console.log(` ${chalk67.dim(secret.description)}`);
|
|
21703
22469
|
}
|
|
21704
22470
|
console.log(
|
|
21705
|
-
` ${
|
|
22471
|
+
` ${chalk67.dim(`Updated: ${new Date(secret.updatedAt).toLocaleString()}`)}`
|
|
21706
22472
|
);
|
|
21707
22473
|
console.log();
|
|
21708
22474
|
}
|
|
21709
|
-
console.log(
|
|
22475
|
+
console.log(chalk67.dim(`Total: ${result.secrets.length} secret(s)`));
|
|
21710
22476
|
})
|
|
21711
22477
|
);
|
|
21712
22478
|
|
|
21713
22479
|
// src/commands/secret/set.ts
|
|
21714
|
-
import { Command as
|
|
21715
|
-
import
|
|
21716
|
-
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(
|
|
21717
22483
|
"-b, --body <value>",
|
|
21718
22484
|
"Secret value (required in non-interactive mode)"
|
|
21719
22485
|
).option("-d, --description <description>", "Optional description").action(
|
|
@@ -21752,19 +22518,19 @@ var setCommand4 = new Command78().name("set").description("Create or update a se
|
|
|
21752
22518
|
}
|
|
21753
22519
|
throw error;
|
|
21754
22520
|
}
|
|
21755
|
-
console.log(
|
|
22521
|
+
console.log(chalk68.green(`\u2713 Secret "${secret.name}" saved`));
|
|
21756
22522
|
console.log();
|
|
21757
22523
|
console.log("Use in vm0.yaml:");
|
|
21758
|
-
console.log(
|
|
21759
|
-
console.log(
|
|
22524
|
+
console.log(chalk68.cyan(` environment:`));
|
|
22525
|
+
console.log(chalk68.cyan(` ${name}: \${{ secrets.${name} }}`));
|
|
21760
22526
|
}
|
|
21761
22527
|
)
|
|
21762
22528
|
);
|
|
21763
22529
|
|
|
21764
22530
|
// src/commands/secret/delete.ts
|
|
21765
|
-
import { Command as
|
|
21766
|
-
import
|
|
21767
|
-
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(
|
|
21768
22534
|
withErrorHandler(async (name, options) => {
|
|
21769
22535
|
try {
|
|
21770
22536
|
await getSecret(name);
|
|
@@ -21783,61 +22549,61 @@ var deleteCommand3 = new Command79().name("delete").description("Delete a secret
|
|
|
21783
22549
|
false
|
|
21784
22550
|
);
|
|
21785
22551
|
if (!confirmed) {
|
|
21786
|
-
console.log(
|
|
22552
|
+
console.log(chalk69.dim("Cancelled"));
|
|
21787
22553
|
return;
|
|
21788
22554
|
}
|
|
21789
22555
|
}
|
|
21790
22556
|
await deleteSecret(name);
|
|
21791
|
-
console.log(
|
|
22557
|
+
console.log(chalk69.green(`\u2713 Secret "${name}" deleted`));
|
|
21792
22558
|
})
|
|
21793
22559
|
);
|
|
21794
22560
|
|
|
21795
22561
|
// src/commands/secret/index.ts
|
|
21796
|
-
var secretCommand = new
|
|
22562
|
+
var secretCommand = new Command79().name("secret").description("Manage stored secrets for agent runs").addCommand(listCommand11).addCommand(setCommand4).addCommand(deleteCommand3);
|
|
21797
22563
|
|
|
21798
22564
|
// src/commands/variable/index.ts
|
|
21799
|
-
import { Command as
|
|
22565
|
+
import { Command as Command83 } from "commander";
|
|
21800
22566
|
|
|
21801
22567
|
// src/commands/variable/list.ts
|
|
21802
|
-
import { Command as
|
|
21803
|
-
import
|
|
22568
|
+
import { Command as Command80 } from "commander";
|
|
22569
|
+
import chalk70 from "chalk";
|
|
21804
22570
|
function truncateValue2(value, maxLength = 60) {
|
|
21805
22571
|
if (value.length <= maxLength) {
|
|
21806
22572
|
return value;
|
|
21807
22573
|
}
|
|
21808
22574
|
return value.slice(0, maxLength - 15) + "... [truncated]";
|
|
21809
22575
|
}
|
|
21810
|
-
var listCommand12 = new
|
|
22576
|
+
var listCommand12 = new Command80().name("list").alias("ls").description("List all variables").action(
|
|
21811
22577
|
withErrorHandler(async () => {
|
|
21812
22578
|
const result = await listVariables();
|
|
21813
22579
|
if (result.variables.length === 0) {
|
|
21814
|
-
console.log(
|
|
22580
|
+
console.log(chalk70.dim("No variables found"));
|
|
21815
22581
|
console.log();
|
|
21816
22582
|
console.log("To add a variable:");
|
|
21817
|
-
console.log(
|
|
22583
|
+
console.log(chalk70.cyan(" vm0 variable set MY_VAR <value>"));
|
|
21818
22584
|
return;
|
|
21819
22585
|
}
|
|
21820
|
-
console.log(
|
|
22586
|
+
console.log(chalk70.bold("Variables:"));
|
|
21821
22587
|
console.log();
|
|
21822
22588
|
for (const variable of result.variables) {
|
|
21823
22589
|
const displayValue = truncateValue2(variable.value);
|
|
21824
|
-
console.log(` ${
|
|
22590
|
+
console.log(` ${chalk70.cyan(variable.name)} = ${displayValue}`);
|
|
21825
22591
|
if (variable.description) {
|
|
21826
|
-
console.log(` ${
|
|
22592
|
+
console.log(` ${chalk70.dim(variable.description)}`);
|
|
21827
22593
|
}
|
|
21828
22594
|
console.log(
|
|
21829
|
-
` ${
|
|
22595
|
+
` ${chalk70.dim(`Updated: ${new Date(variable.updatedAt).toLocaleString()}`)}`
|
|
21830
22596
|
);
|
|
21831
22597
|
console.log();
|
|
21832
22598
|
}
|
|
21833
|
-
console.log(
|
|
22599
|
+
console.log(chalk70.dim(`Total: ${result.variables.length} variable(s)`));
|
|
21834
22600
|
})
|
|
21835
22601
|
);
|
|
21836
22602
|
|
|
21837
22603
|
// src/commands/variable/set.ts
|
|
21838
|
-
import { Command as
|
|
21839
|
-
import
|
|
21840
|
-
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(
|
|
21841
22607
|
withErrorHandler(
|
|
21842
22608
|
async (name, value, options) => {
|
|
21843
22609
|
let variable;
|
|
@@ -21857,19 +22623,19 @@ var setCommand5 = new Command82().name("set").description("Create or update a va
|
|
|
21857
22623
|
}
|
|
21858
22624
|
throw error;
|
|
21859
22625
|
}
|
|
21860
|
-
console.log(
|
|
22626
|
+
console.log(chalk71.green(`\u2713 Variable "${variable.name}" saved`));
|
|
21861
22627
|
console.log();
|
|
21862
22628
|
console.log("Use in vm0.yaml:");
|
|
21863
|
-
console.log(
|
|
21864
|
-
console.log(
|
|
22629
|
+
console.log(chalk71.cyan(` environment:`));
|
|
22630
|
+
console.log(chalk71.cyan(` ${name}: \${{ vars.${name} }}`));
|
|
21865
22631
|
}
|
|
21866
22632
|
)
|
|
21867
22633
|
);
|
|
21868
22634
|
|
|
21869
22635
|
// src/commands/variable/delete.ts
|
|
21870
|
-
import { Command as
|
|
21871
|
-
import
|
|
21872
|
-
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(
|
|
21873
22639
|
withErrorHandler(async (name, options) => {
|
|
21874
22640
|
try {
|
|
21875
22641
|
await getVariable(name);
|
|
@@ -21888,24 +22654,24 @@ var deleteCommand4 = new Command83().name("delete").description("Delete a variab
|
|
|
21888
22654
|
false
|
|
21889
22655
|
);
|
|
21890
22656
|
if (!confirmed) {
|
|
21891
|
-
console.log(
|
|
22657
|
+
console.log(chalk72.dim("Cancelled"));
|
|
21892
22658
|
return;
|
|
21893
22659
|
}
|
|
21894
22660
|
}
|
|
21895
22661
|
await deleteVariable(name);
|
|
21896
|
-
console.log(
|
|
22662
|
+
console.log(chalk72.green(`\u2713 Variable "${name}" deleted`));
|
|
21897
22663
|
})
|
|
21898
22664
|
);
|
|
21899
22665
|
|
|
21900
22666
|
// src/commands/variable/index.ts
|
|
21901
|
-
var variableCommand = new
|
|
22667
|
+
var variableCommand = new Command83().name("variable").description("Manage stored variables for agent runs").addCommand(listCommand12).addCommand(setCommand5).addCommand(deleteCommand4);
|
|
21902
22668
|
|
|
21903
22669
|
// src/commands/connector/index.ts
|
|
21904
|
-
import { Command as
|
|
22670
|
+
import { Command as Command88 } from "commander";
|
|
21905
22671
|
|
|
21906
22672
|
// src/commands/connector/connect.ts
|
|
21907
|
-
import { Command as
|
|
21908
|
-
import
|
|
22673
|
+
import { Command as Command84 } from "commander";
|
|
22674
|
+
import chalk74 from "chalk";
|
|
21909
22675
|
import { initClient as initClient15 } from "@ts-rest/core";
|
|
21910
22676
|
|
|
21911
22677
|
// src/commands/connector/lib/computer/start-services.ts
|
|
@@ -21914,7 +22680,7 @@ import { access as access2, constants } from "fs/promises";
|
|
|
21914
22680
|
import { createServer } from "net";
|
|
21915
22681
|
import { homedir as homedir4 } from "os";
|
|
21916
22682
|
import { join as join12 } from "path";
|
|
21917
|
-
import
|
|
22683
|
+
import chalk73 from "chalk";
|
|
21918
22684
|
|
|
21919
22685
|
// src/commands/connector/lib/computer/ngrok.ts
|
|
21920
22686
|
import ngrok from "@ngrok/ngrok";
|
|
@@ -21988,7 +22754,7 @@ async function checkComputerDependencies() {
|
|
|
21988
22754
|
}
|
|
21989
22755
|
}
|
|
21990
22756
|
async function startComputerServices(credentials) {
|
|
21991
|
-
console.log(
|
|
22757
|
+
console.log(chalk73.cyan("Starting computer connector services..."));
|
|
21992
22758
|
const wsgidavBinary = await findBinary("wsgidav");
|
|
21993
22759
|
if (!wsgidavBinary) {
|
|
21994
22760
|
throw new Error(
|
|
@@ -22015,7 +22781,7 @@ async function startComputerServices(credentials) {
|
|
|
22015
22781
|
);
|
|
22016
22782
|
wsgidav.stdout?.on("data", (data) => process.stdout.write(data));
|
|
22017
22783
|
wsgidav.stderr?.on("data", (data) => process.stderr.write(data));
|
|
22018
|
-
console.log(
|
|
22784
|
+
console.log(chalk73.green("\u2713 WebDAV server started"));
|
|
22019
22785
|
const chrome = spawn2(
|
|
22020
22786
|
chromeBinary,
|
|
22021
22787
|
[
|
|
@@ -22029,7 +22795,7 @@ async function startComputerServices(credentials) {
|
|
|
22029
22795
|
);
|
|
22030
22796
|
chrome.stdout?.on("data", (data) => process.stdout.write(data));
|
|
22031
22797
|
chrome.stderr?.on("data", (data) => process.stderr.write(data));
|
|
22032
|
-
console.log(
|
|
22798
|
+
console.log(chalk73.green("\u2713 Chrome started"));
|
|
22033
22799
|
try {
|
|
22034
22800
|
await startNgrokTunnels(
|
|
22035
22801
|
credentials.ngrokToken,
|
|
@@ -22038,18 +22804,18 @@ async function startComputerServices(credentials) {
|
|
|
22038
22804
|
cdpPort
|
|
22039
22805
|
);
|
|
22040
22806
|
console.log(
|
|
22041
|
-
|
|
22807
|
+
chalk73.green(
|
|
22042
22808
|
`\u2713 ngrok tunnels: webdav.${credentials.domain}, chrome.${credentials.domain}`
|
|
22043
22809
|
)
|
|
22044
22810
|
);
|
|
22045
22811
|
console.log();
|
|
22046
|
-
console.log(
|
|
22812
|
+
console.log(chalk73.green("\u2713 Computer connector active"));
|
|
22047
22813
|
console.log(` WebDAV: ~/Downloads \u2192 webdav.${credentials.domain}`);
|
|
22048
22814
|
console.log(
|
|
22049
22815
|
` Chrome CDP: port ${cdpPort} \u2192 chrome.${credentials.domain}`
|
|
22050
22816
|
);
|
|
22051
22817
|
console.log();
|
|
22052
|
-
console.log(
|
|
22818
|
+
console.log(chalk73.dim("Press ^C twice to disconnect"));
|
|
22053
22819
|
console.log();
|
|
22054
22820
|
let sigintCount = 0;
|
|
22055
22821
|
await new Promise((resolve2) => {
|
|
@@ -22063,7 +22829,7 @@ async function startComputerServices(credentials) {
|
|
|
22063
22829
|
const onSigint = () => {
|
|
22064
22830
|
sigintCount++;
|
|
22065
22831
|
if (sigintCount === 1) {
|
|
22066
|
-
console.log(
|
|
22832
|
+
console.log(chalk73.dim("\nPress ^C again to disconnect and exit..."));
|
|
22067
22833
|
} else {
|
|
22068
22834
|
done();
|
|
22069
22835
|
}
|
|
@@ -22073,11 +22839,11 @@ async function startComputerServices(credentials) {
|
|
|
22073
22839
|
});
|
|
22074
22840
|
} finally {
|
|
22075
22841
|
console.log();
|
|
22076
|
-
console.log(
|
|
22842
|
+
console.log(chalk73.cyan("Stopping services..."));
|
|
22077
22843
|
wsgidav.kill("SIGTERM");
|
|
22078
22844
|
chrome.kill("SIGTERM");
|
|
22079
22845
|
await stopNgrokTunnels();
|
|
22080
|
-
console.log(
|
|
22846
|
+
console.log(chalk73.green("\u2713 Services stopped"));
|
|
22081
22847
|
}
|
|
22082
22848
|
}
|
|
22083
22849
|
|
|
@@ -22102,10 +22868,10 @@ async function getHeaders2() {
|
|
|
22102
22868
|
function renderHelpText(text) {
|
|
22103
22869
|
return text.replace(
|
|
22104
22870
|
/\[([^\]]+)\]\(([^)]+)\)/g,
|
|
22105
|
-
(_m, label, url) => `${label} (${
|
|
22106
|
-
).replace(/\*\*([^*]+)\*\*/g, (_m, content) =>
|
|
22871
|
+
(_m, label, url) => `${label} (${chalk74.cyan(url)})`
|
|
22872
|
+
).replace(/\*\*([^*]+)\*\*/g, (_m, content) => chalk74.bold(content)).replace(
|
|
22107
22873
|
/^> (.+)$/gm,
|
|
22108
|
-
(_m, content) =>
|
|
22874
|
+
(_m, content) => chalk74.yellow(` ${content}`)
|
|
22109
22875
|
);
|
|
22110
22876
|
}
|
|
22111
22877
|
async function connectViaApiToken(connectorType, tokenValue) {
|
|
@@ -22130,7 +22896,7 @@ async function connectViaApiToken(connectorType, tokenValue) {
|
|
|
22130
22896
|
for (const [secretName, secretConfig] of secretEntries) {
|
|
22131
22897
|
if (!secretConfig.required) continue;
|
|
22132
22898
|
const value = await promptPassword(
|
|
22133
|
-
`${secretConfig.label}${secretConfig.placeholder ?
|
|
22899
|
+
`${secretConfig.label}${secretConfig.placeholder ? chalk74.dim(` (${secretConfig.placeholder})`) : ""}:`
|
|
22134
22900
|
);
|
|
22135
22901
|
if (!value) {
|
|
22136
22902
|
throw new Error("Cancelled");
|
|
@@ -22146,13 +22912,13 @@ async function connectViaApiToken(connectorType, tokenValue) {
|
|
|
22146
22912
|
});
|
|
22147
22913
|
}
|
|
22148
22914
|
console.log(
|
|
22149
|
-
|
|
22915
|
+
chalk74.green(`
|
|
22150
22916
|
\u2713 ${config.label} connected successfully via API token!`)
|
|
22151
22917
|
);
|
|
22152
22918
|
}
|
|
22153
22919
|
async function connectComputer(apiUrl, headers) {
|
|
22154
22920
|
await checkComputerDependencies();
|
|
22155
|
-
console.log(
|
|
22921
|
+
console.log(chalk74.cyan("Setting up computer connector..."));
|
|
22156
22922
|
const computerClient = initClient15(computerConnectorContract, {
|
|
22157
22923
|
baseUrl: apiUrl,
|
|
22158
22924
|
baseHeaders: headers,
|
|
@@ -22167,9 +22933,9 @@ async function connectComputer(apiUrl, headers) {
|
|
|
22167
22933
|
}
|
|
22168
22934
|
const credentials = createResult.body;
|
|
22169
22935
|
await startComputerServices(credentials);
|
|
22170
|
-
console.log(
|
|
22936
|
+
console.log(chalk74.cyan("Disconnecting computer connector..."));
|
|
22171
22937
|
await deleteConnector("computer");
|
|
22172
|
-
console.log(
|
|
22938
|
+
console.log(chalk74.green("\u2713 Disconnected computer"));
|
|
22173
22939
|
process.exit(0);
|
|
22174
22940
|
}
|
|
22175
22941
|
async function resolveAuthMethod(connectorType, tokenFlag) {
|
|
@@ -22208,7 +22974,7 @@ async function resolveAuthMethod(connectorType, tokenFlag) {
|
|
|
22208
22974
|
);
|
|
22209
22975
|
}
|
|
22210
22976
|
async function connectViaOAuth(connectorType, apiUrl, headers) {
|
|
22211
|
-
console.log(`Connecting ${
|
|
22977
|
+
console.log(`Connecting ${chalk74.cyan(connectorType)}...`);
|
|
22212
22978
|
const sessionsClient = initClient15(connectorSessionsContract, {
|
|
22213
22979
|
baseUrl: apiUrl,
|
|
22214
22980
|
baseHeaders: headers,
|
|
@@ -22224,8 +22990,8 @@ async function connectViaOAuth(connectorType, apiUrl, headers) {
|
|
|
22224
22990
|
}
|
|
22225
22991
|
const session = createResult.body;
|
|
22226
22992
|
const verificationUrl = `${apiUrl}${session.verificationUrl}`;
|
|
22227
|
-
console.log(
|
|
22228
|
-
console.log(
|
|
22993
|
+
console.log(chalk74.green("\nSession created"));
|
|
22994
|
+
console.log(chalk74.cyan(`
|
|
22229
22995
|
To connect, visit: ${verificationUrl}`));
|
|
22230
22996
|
console.log(
|
|
22231
22997
|
`
|
|
@@ -22257,7 +23023,7 @@ The session expires in ${Math.floor(session.expiresIn / 60)} minutes.`
|
|
|
22257
23023
|
switch (status.status) {
|
|
22258
23024
|
case "complete":
|
|
22259
23025
|
console.log(
|
|
22260
|
-
|
|
23026
|
+
chalk74.green(`
|
|
22261
23027
|
|
|
22262
23028
|
${connectorType} connected successfully!`)
|
|
22263
23029
|
);
|
|
@@ -22269,13 +23035,13 @@ ${connectorType} connected successfully!`)
|
|
|
22269
23035
|
`Connection failed: ${status.errorMessage || "Unknown error"}`
|
|
22270
23036
|
);
|
|
22271
23037
|
case "pending":
|
|
22272
|
-
process.stdout.write(
|
|
23038
|
+
process.stdout.write(chalk74.dim("."));
|
|
22273
23039
|
break;
|
|
22274
23040
|
}
|
|
22275
23041
|
}
|
|
22276
23042
|
throw new Error("Session timed out, please try again");
|
|
22277
23043
|
}
|
|
22278
|
-
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(
|
|
22279
23045
|
withErrorHandler(async (type2, options) => {
|
|
22280
23046
|
const parseResult = connectorTypeSchema.safeParse(type2);
|
|
22281
23047
|
if (!parseResult.success) {
|
|
@@ -22300,9 +23066,9 @@ var connectCommand = new Command85().name("connect").description("Connect a thir
|
|
|
22300
23066
|
);
|
|
22301
23067
|
|
|
22302
23068
|
// src/commands/connector/list.ts
|
|
22303
|
-
import { Command as
|
|
22304
|
-
import
|
|
22305
|
-
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(
|
|
22306
23072
|
withErrorHandler(async () => {
|
|
22307
23073
|
const result = await listConnectors();
|
|
22308
23074
|
const connectedMap = new Map(result.connectors.map((c39) => [c39.type, c39]));
|
|
@@ -22324,26 +23090,26 @@ var listCommand13 = new Command86().name("list").alias("ls").description("List a
|
|
|
22324
23090
|
statusText.padEnd(statusWidth),
|
|
22325
23091
|
"ACCOUNT"
|
|
22326
23092
|
].join(" ");
|
|
22327
|
-
console.log(
|
|
23093
|
+
console.log(chalk75.dim(header));
|
|
22328
23094
|
for (const type2 of allTypes) {
|
|
22329
23095
|
const connector = connectedMap.get(type2);
|
|
22330
23096
|
const scopeMismatch = connector !== void 0 && connector.authMethod === "oauth" && !hasRequiredScopes(type2, connector.oauthScopes);
|
|
22331
|
-
const status = connector ? connector.needsReconnect ?
|
|
22332
|
-
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("-");
|
|
22333
23099
|
const row = [type2.padEnd(typeWidth), status, account].join(" ");
|
|
22334
23100
|
console.log(row);
|
|
22335
23101
|
}
|
|
22336
23102
|
console.log();
|
|
22337
|
-
console.log(
|
|
22338
|
-
console.log(
|
|
23103
|
+
console.log(chalk75.dim("To connect a service:"));
|
|
23104
|
+
console.log(chalk75.dim(" vm0 connector connect <type>"));
|
|
22339
23105
|
})
|
|
22340
23106
|
);
|
|
22341
23107
|
|
|
22342
23108
|
// src/commands/connector/status.ts
|
|
22343
|
-
import { Command as
|
|
22344
|
-
import
|
|
23109
|
+
import { Command as Command86 } from "commander";
|
|
23110
|
+
import chalk76 from "chalk";
|
|
22345
23111
|
var LABEL_WIDTH = 16;
|
|
22346
|
-
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(
|
|
22347
23113
|
withErrorHandler(async (type2) => {
|
|
22348
23114
|
const parseResult = connectorTypeSchema.safeParse(type2);
|
|
22349
23115
|
if (!parseResult.success) {
|
|
@@ -22353,11 +23119,11 @@ var statusCommand8 = new Command87().name("status").description("Show detailed s
|
|
|
22353
23119
|
});
|
|
22354
23120
|
}
|
|
22355
23121
|
const connector = await getConnector(parseResult.data);
|
|
22356
|
-
console.log(`Connector: ${
|
|
23122
|
+
console.log(`Connector: ${chalk76.cyan(type2)}`);
|
|
22357
23123
|
console.log();
|
|
22358
23124
|
if (connector) {
|
|
22359
23125
|
console.log(
|
|
22360
|
-
`${"Status:".padEnd(LABEL_WIDTH)}${
|
|
23126
|
+
`${"Status:".padEnd(LABEL_WIDTH)}${chalk76.green("connected")}`
|
|
22361
23127
|
);
|
|
22362
23128
|
console.log(
|
|
22363
23129
|
`${"Account:".padEnd(LABEL_WIDTH)}@${connector.externalUsername}`
|
|
@@ -22373,7 +23139,7 @@ var statusCommand8 = new Command87().name("status").description("Show detailed s
|
|
|
22373
23139
|
if (connector.authMethod === "oauth" && !hasRequiredScopes(parseResult.data, connector.oauthScopes)) {
|
|
22374
23140
|
const diff = getScopeDiff(parseResult.data, connector.oauthScopes);
|
|
22375
23141
|
console.log(
|
|
22376
|
-
`${"Permissions:".padEnd(LABEL_WIDTH)}${
|
|
23142
|
+
`${"Permissions:".padEnd(LABEL_WIDTH)}${chalk76.yellow("update available")}`
|
|
22377
23143
|
);
|
|
22378
23144
|
if (diff.addedScopes.length > 0) {
|
|
22379
23145
|
console.log(
|
|
@@ -22395,23 +23161,23 @@ var statusCommand8 = new Command87().name("status").description("Show detailed s
|
|
|
22395
23161
|
);
|
|
22396
23162
|
}
|
|
22397
23163
|
console.log();
|
|
22398
|
-
console.log(
|
|
22399
|
-
console.log(
|
|
23164
|
+
console.log(chalk76.dim("To disconnect:"));
|
|
23165
|
+
console.log(chalk76.dim(` vm0 connector disconnect ${type2}`));
|
|
22400
23166
|
} else {
|
|
22401
23167
|
console.log(
|
|
22402
|
-
`${"Status:".padEnd(LABEL_WIDTH)}${
|
|
23168
|
+
`${"Status:".padEnd(LABEL_WIDTH)}${chalk76.dim("not connected")}`
|
|
22403
23169
|
);
|
|
22404
23170
|
console.log();
|
|
22405
|
-
console.log(
|
|
22406
|
-
console.log(
|
|
23171
|
+
console.log(chalk76.dim("To connect:"));
|
|
23172
|
+
console.log(chalk76.dim(` vm0 connector connect ${type2}`));
|
|
22407
23173
|
}
|
|
22408
23174
|
})
|
|
22409
23175
|
);
|
|
22410
23176
|
|
|
22411
23177
|
// src/commands/connector/disconnect.ts
|
|
22412
|
-
import { Command as
|
|
22413
|
-
import
|
|
22414
|
-
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(
|
|
22415
23181
|
withErrorHandler(async (type2) => {
|
|
22416
23182
|
const parseResult = connectorTypeSchema.safeParse(type2);
|
|
22417
23183
|
if (!parseResult.success) {
|
|
@@ -22422,145 +23188,16 @@ var disconnectCommand = new Command88().name("disconnect").description("Disconne
|
|
|
22422
23188
|
}
|
|
22423
23189
|
const connectorType = parseResult.data;
|
|
22424
23190
|
await deleteConnector(connectorType);
|
|
22425
|
-
console.log(
|
|
23191
|
+
console.log(chalk77.green(`\u2713 Disconnected ${type2}`));
|
|
22426
23192
|
})
|
|
22427
23193
|
);
|
|
22428
23194
|
|
|
22429
23195
|
// src/commands/connector/index.ts
|
|
22430
|
-
var connectorCommand = new
|
|
22431
|
-
|
|
22432
|
-
// src/commands/setup-claude/index.ts
|
|
22433
|
-
import { Command as Command90 } from "commander";
|
|
22434
|
-
import chalk80 from "chalk";
|
|
22435
|
-
|
|
22436
|
-
// src/lib/domain/onboard/claude-setup.ts
|
|
22437
|
-
import { spawn as spawn3 } from "child_process";
|
|
22438
|
-
import chalk79 from "chalk";
|
|
22439
|
-
var MARKETPLACE_NAME = "vm0-skills";
|
|
22440
|
-
var MARKETPLACE_REPO = "vm0-ai/vm0-skills";
|
|
22441
|
-
var PLUGIN_ID = "vm0@vm0-skills";
|
|
22442
|
-
var PRIMARY_SKILL_NAME = "vm0-agent";
|
|
22443
|
-
async function runClaudeCommand(args, cwd) {
|
|
22444
|
-
return new Promise((resolve2) => {
|
|
22445
|
-
const child = spawn3("claude", args, {
|
|
22446
|
-
stdio: ["inherit", "pipe", "pipe"],
|
|
22447
|
-
cwd
|
|
22448
|
-
});
|
|
22449
|
-
let stdout = "";
|
|
22450
|
-
let stderr = "";
|
|
22451
|
-
child.stdout?.on("data", (data) => {
|
|
22452
|
-
stdout += data.toString();
|
|
22453
|
-
});
|
|
22454
|
-
child.stderr?.on("data", (data) => {
|
|
22455
|
-
stderr += data.toString();
|
|
22456
|
-
});
|
|
22457
|
-
child.on("error", (err) => {
|
|
22458
|
-
resolve2({
|
|
22459
|
-
success: false,
|
|
22460
|
-
output: stdout,
|
|
22461
|
-
error: err.message
|
|
22462
|
-
});
|
|
22463
|
-
});
|
|
22464
|
-
child.on("close", (code) => {
|
|
22465
|
-
resolve2({
|
|
22466
|
-
success: code === 0,
|
|
22467
|
-
output: stdout,
|
|
22468
|
-
error: stderr || void 0
|
|
22469
|
-
});
|
|
22470
|
-
});
|
|
22471
|
-
});
|
|
22472
|
-
}
|
|
22473
|
-
async function isMarketplaceInstalled() {
|
|
22474
|
-
const result = await runClaudeCommand([
|
|
22475
|
-
"plugin",
|
|
22476
|
-
"marketplace",
|
|
22477
|
-
"list",
|
|
22478
|
-
"--json"
|
|
22479
|
-
]);
|
|
22480
|
-
if (!result.success) {
|
|
22481
|
-
return false;
|
|
22482
|
-
}
|
|
22483
|
-
try {
|
|
22484
|
-
const marketplaces = JSON.parse(result.output);
|
|
22485
|
-
return marketplaces.some((m) => m.name === MARKETPLACE_NAME);
|
|
22486
|
-
} catch {
|
|
22487
|
-
return false;
|
|
22488
|
-
}
|
|
22489
|
-
}
|
|
22490
|
-
async function addMarketplace() {
|
|
22491
|
-
const result = await runClaudeCommand([
|
|
22492
|
-
"plugin",
|
|
22493
|
-
"marketplace",
|
|
22494
|
-
"add",
|
|
22495
|
-
MARKETPLACE_REPO
|
|
22496
|
-
]);
|
|
22497
|
-
if (!result.success) {
|
|
22498
|
-
throw new Error(
|
|
22499
|
-
`Failed to add marketplace ${MARKETPLACE_REPO}: ${result.error ?? "unknown error"}`
|
|
22500
|
-
);
|
|
22501
|
-
}
|
|
22502
|
-
}
|
|
22503
|
-
async function updateMarketplace() {
|
|
22504
|
-
const result = await runClaudeCommand([
|
|
22505
|
-
"plugin",
|
|
22506
|
-
"marketplace",
|
|
22507
|
-
"update",
|
|
22508
|
-
MARKETPLACE_NAME
|
|
22509
|
-
]);
|
|
22510
|
-
if (!result.success) {
|
|
22511
|
-
console.warn(
|
|
22512
|
-
chalk79.yellow(
|
|
22513
|
-
`Warning: Could not update marketplace: ${result.error ?? "unknown error"}`
|
|
22514
|
-
)
|
|
22515
|
-
);
|
|
22516
|
-
}
|
|
22517
|
-
}
|
|
22518
|
-
async function ensureMarketplace() {
|
|
22519
|
-
const installed = await isMarketplaceInstalled();
|
|
22520
|
-
if (!installed) {
|
|
22521
|
-
await addMarketplace();
|
|
22522
|
-
} else {
|
|
22523
|
-
await updateMarketplace();
|
|
22524
|
-
}
|
|
22525
|
-
}
|
|
22526
|
-
async function installVm0Plugin(scope = "user", cwd) {
|
|
22527
|
-
await ensureMarketplace();
|
|
22528
|
-
const args = ["plugin", "install", PLUGIN_ID, "--scope", scope];
|
|
22529
|
-
const result = await runClaudeCommand(args, cwd);
|
|
22530
|
-
if (!result.success) {
|
|
22531
|
-
throw new Error(
|
|
22532
|
-
`Failed to install plugin ${PLUGIN_ID}: ${result.error ?? "unknown error"}`
|
|
22533
|
-
);
|
|
22534
|
-
}
|
|
22535
|
-
return {
|
|
22536
|
-
pluginId: PLUGIN_ID,
|
|
22537
|
-
scope
|
|
22538
|
-
};
|
|
22539
|
-
}
|
|
22540
|
-
|
|
22541
|
-
// src/commands/setup-claude/index.ts
|
|
22542
|
-
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(
|
|
22543
|
-
withErrorHandler(async (options) => {
|
|
22544
|
-
console.log(chalk80.dim("Installing VM0 Claude Plugin..."));
|
|
22545
|
-
const scope = options.scope === "user" ? "user" : "project";
|
|
22546
|
-
const result = await installVm0Plugin(scope, options.agentDir);
|
|
22547
|
-
console.log(
|
|
22548
|
-
chalk80.green(`\u2713 Installed ${result.pluginId} (scope: ${result.scope})`)
|
|
22549
|
-
);
|
|
22550
|
-
console.log();
|
|
22551
|
-
console.log("Next step:");
|
|
22552
|
-
const cdPrefix = options.agentDir ? `cd ${options.agentDir} && ` : "";
|
|
22553
|
-
console.log(
|
|
22554
|
-
chalk80.cyan(
|
|
22555
|
-
` ${cdPrefix}claude "/${PRIMARY_SKILL_NAME} let's build a workflow"`
|
|
22556
|
-
)
|
|
22557
|
-
);
|
|
22558
|
-
})
|
|
22559
|
-
);
|
|
23196
|
+
var connectorCommand = new Command88().name("connector").description("Manage third-party service connections").addCommand(listCommand13).addCommand(statusCommand8).addCommand(connectCommand).addCommand(disconnectCommand);
|
|
22560
23197
|
|
|
22561
23198
|
// src/commands/preference/index.ts
|
|
22562
|
-
import { Command as
|
|
22563
|
-
import
|
|
23199
|
+
import { Command as Command89 } from "commander";
|
|
23200
|
+
import chalk78 from "chalk";
|
|
22564
23201
|
function detectTimezone2() {
|
|
22565
23202
|
return Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
22566
23203
|
}
|
|
@@ -22581,15 +23218,15 @@ function parseOnOff(flag, value) {
|
|
|
22581
23218
|
);
|
|
22582
23219
|
}
|
|
22583
23220
|
function displayPreferences(prefs) {
|
|
22584
|
-
console.log(
|
|
23221
|
+
console.log(chalk78.bold("Current preferences:"));
|
|
22585
23222
|
console.log(
|
|
22586
|
-
` Timezone: ${prefs.timezone ?
|
|
23223
|
+
` Timezone: ${prefs.timezone ? chalk78.cyan(prefs.timezone) : chalk78.dim("not set")}`
|
|
22587
23224
|
);
|
|
22588
23225
|
console.log(
|
|
22589
|
-
` Email notify: ${prefs.notifyEmail ?
|
|
23226
|
+
` Email notify: ${prefs.notifyEmail ? chalk78.green("on") : chalk78.dim("off")}`
|
|
22590
23227
|
);
|
|
22591
23228
|
console.log(
|
|
22592
|
-
` Slack notify: ${prefs.notifySlack ?
|
|
23229
|
+
` Slack notify: ${prefs.notifySlack ? chalk78.green("on") : chalk78.dim("off")}`
|
|
22593
23230
|
);
|
|
22594
23231
|
}
|
|
22595
23232
|
function buildUpdates(opts) {
|
|
@@ -22619,21 +23256,21 @@ function buildUpdates(opts) {
|
|
|
22619
23256
|
function printUpdateResult(updates, result) {
|
|
22620
23257
|
if (updates.timezone !== void 0) {
|
|
22621
23258
|
console.log(
|
|
22622
|
-
|
|
22623
|
-
`Timezone set to ${
|
|
23259
|
+
chalk78.green(
|
|
23260
|
+
`Timezone set to ${chalk78.cyan(result.timezone ?? updates.timezone)}`
|
|
22624
23261
|
)
|
|
22625
23262
|
);
|
|
22626
23263
|
}
|
|
22627
23264
|
if (updates.notifyEmail !== void 0) {
|
|
22628
23265
|
console.log(
|
|
22629
|
-
|
|
23266
|
+
chalk78.green(
|
|
22630
23267
|
`Email notifications ${result.notifyEmail ? "enabled" : "disabled"}`
|
|
22631
23268
|
)
|
|
22632
23269
|
);
|
|
22633
23270
|
}
|
|
22634
23271
|
if (updates.notifySlack !== void 0) {
|
|
22635
23272
|
console.log(
|
|
22636
|
-
|
|
23273
|
+
chalk78.green(
|
|
22637
23274
|
`Slack notifications ${result.notifySlack ? "enabled" : "disabled"}`
|
|
22638
23275
|
)
|
|
22639
23276
|
);
|
|
@@ -22642,7 +23279,7 @@ function printUpdateResult(updates, result) {
|
|
|
22642
23279
|
async function interactiveSetup(prefs) {
|
|
22643
23280
|
if (!prefs.timezone) {
|
|
22644
23281
|
const detectedTz = detectTimezone2();
|
|
22645
|
-
console.log(
|
|
23282
|
+
console.log(chalk78.dim(`
|
|
22646
23283
|
System timezone detected: ${detectedTz}`));
|
|
22647
23284
|
const tz = await promptText(
|
|
22648
23285
|
"Set timezone? (enter timezone or leave empty to skip)",
|
|
@@ -22653,7 +23290,7 @@ System timezone detected: ${detectedTz}`));
|
|
|
22653
23290
|
throw new Error(`Invalid timezone: ${tz.trim()}`);
|
|
22654
23291
|
}
|
|
22655
23292
|
await updateUserPreferences({ timezone: tz.trim() });
|
|
22656
|
-
console.log(
|
|
23293
|
+
console.log(chalk78.green(`Timezone set to ${chalk78.cyan(tz.trim())}`));
|
|
22657
23294
|
}
|
|
22658
23295
|
}
|
|
22659
23296
|
if (!prefs.notifyEmail) {
|
|
@@ -22663,11 +23300,11 @@ System timezone detected: ${detectedTz}`));
|
|
|
22663
23300
|
);
|
|
22664
23301
|
if (enable) {
|
|
22665
23302
|
await updateUserPreferences({ notifyEmail: true });
|
|
22666
|
-
console.log(
|
|
23303
|
+
console.log(chalk78.green("Email notifications enabled"));
|
|
22667
23304
|
}
|
|
22668
23305
|
}
|
|
22669
23306
|
}
|
|
22670
|
-
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(
|
|
22671
23308
|
withErrorHandler(async (opts) => {
|
|
22672
23309
|
const updates = buildUpdates(opts);
|
|
22673
23310
|
if (updates) {
|
|
@@ -22682,32 +23319,32 @@ var preferenceCommand = new Command91().name("preference").description("View or
|
|
|
22682
23319
|
} else if (!prefs.timezone) {
|
|
22683
23320
|
console.log();
|
|
22684
23321
|
console.log(
|
|
22685
|
-
`To set timezone: ${
|
|
23322
|
+
`To set timezone: ${chalk78.cyan("vm0 preference --timezone <timezone>")}`
|
|
22686
23323
|
);
|
|
22687
23324
|
console.log(
|
|
22688
|
-
|
|
23325
|
+
chalk78.dim("Example: vm0 preference --timezone America/New_York")
|
|
22689
23326
|
);
|
|
22690
23327
|
}
|
|
22691
23328
|
})
|
|
22692
23329
|
);
|
|
22693
23330
|
|
|
22694
23331
|
// src/commands/upgrade/index.ts
|
|
22695
|
-
import { Command as
|
|
22696
|
-
import
|
|
22697
|
-
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(
|
|
22698
23335
|
withErrorHandler(async () => {
|
|
22699
23336
|
console.log("Checking for updates...");
|
|
22700
23337
|
const latestVersion = await getLatestVersion();
|
|
22701
23338
|
if (latestVersion === null) {
|
|
22702
23339
|
throw new Error("Could not check for updates. Please try again later.");
|
|
22703
23340
|
}
|
|
22704
|
-
if (latestVersion === "9.
|
|
22705
|
-
console.log(
|
|
23341
|
+
if (latestVersion === "9.75.0") {
|
|
23342
|
+
console.log(chalk79.green(`\u2713 Already up to date (${"9.75.0"})`));
|
|
22706
23343
|
return;
|
|
22707
23344
|
}
|
|
22708
23345
|
console.log(
|
|
22709
|
-
|
|
22710
|
-
`Current version: ${"9.
|
|
23346
|
+
chalk79.yellow(
|
|
23347
|
+
`Current version: ${"9.75.0"} -> Latest version: ${latestVersion}`
|
|
22711
23348
|
)
|
|
22712
23349
|
);
|
|
22713
23350
|
console.log();
|
|
@@ -22715,26 +23352,26 @@ var upgradeCommand = new Command92().name("upgrade").description("Upgrade vm0 CL
|
|
|
22715
23352
|
if (!isAutoUpgradeSupported(packageManager)) {
|
|
22716
23353
|
if (packageManager === "unknown") {
|
|
22717
23354
|
console.log(
|
|
22718
|
-
|
|
23355
|
+
chalk79.yellow(
|
|
22719
23356
|
"Could not detect your package manager for auto-upgrade."
|
|
22720
23357
|
)
|
|
22721
23358
|
);
|
|
22722
23359
|
} else {
|
|
22723
23360
|
console.log(
|
|
22724
|
-
|
|
23361
|
+
chalk79.yellow(
|
|
22725
23362
|
`Auto-upgrade is not supported for ${packageManager}.`
|
|
22726
23363
|
)
|
|
22727
23364
|
);
|
|
22728
23365
|
}
|
|
22729
|
-
console.log(
|
|
22730
|
-
console.log(
|
|
23366
|
+
console.log(chalk79.yellow("Please upgrade manually:"));
|
|
23367
|
+
console.log(chalk79.cyan(` ${getManualUpgradeCommand(packageManager)}`));
|
|
22731
23368
|
return;
|
|
22732
23369
|
}
|
|
22733
23370
|
console.log(`Upgrading via ${packageManager}...`);
|
|
22734
23371
|
const success = await performUpgrade(packageManager);
|
|
22735
23372
|
if (success) {
|
|
22736
23373
|
console.log(
|
|
22737
|
-
|
|
23374
|
+
chalk79.green(`\u2713 Upgraded from ${"9.75.0"} to ${latestVersion}`)
|
|
22738
23375
|
);
|
|
22739
23376
|
return;
|
|
22740
23377
|
}
|
|
@@ -22747,8 +23384,8 @@ var upgradeCommand = new Command92().name("upgrade").description("Upgrade vm0 CL
|
|
|
22747
23384
|
);
|
|
22748
23385
|
|
|
22749
23386
|
// src/commands/whoami.ts
|
|
22750
|
-
import { Command as
|
|
22751
|
-
import
|
|
23387
|
+
import { Command as Command91 } from "commander";
|
|
23388
|
+
import chalk80 from "chalk";
|
|
22752
23389
|
function isInsideSandbox() {
|
|
22753
23390
|
return !!process.env.VM0_RUN_ID;
|
|
22754
23391
|
}
|
|
@@ -22763,7 +23400,7 @@ async function showSandboxInfo() {
|
|
|
22763
23400
|
const apiUrl = process.env.VM0_API_URL;
|
|
22764
23401
|
const hasAgentInfo = agentName || agentVersion || agentComposeId || agentOrgSlug || cliAgentType;
|
|
22765
23402
|
if (hasAgentInfo) {
|
|
22766
|
-
console.log(
|
|
23403
|
+
console.log(chalk80.bold("Agent:"));
|
|
22767
23404
|
if (agentName) console.log(` Name: ${agentName}`);
|
|
22768
23405
|
if (agentVersion) console.log(` Version: ${agentVersion}`);
|
|
22769
23406
|
if (agentComposeId) console.log(` Compose ID: ${agentComposeId}`);
|
|
@@ -22771,7 +23408,7 @@ async function showSandboxInfo() {
|
|
|
22771
23408
|
if (cliAgentType) console.log(` Framework: ${cliAgentType}`);
|
|
22772
23409
|
console.log();
|
|
22773
23410
|
}
|
|
22774
|
-
console.log(
|
|
23411
|
+
console.log(chalk80.bold("Run:"));
|
|
22775
23412
|
if (runId) console.log(` ID: ${runId}`);
|
|
22776
23413
|
if (activeOrg) console.log(` Org: ${activeOrg}`);
|
|
22777
23414
|
if (apiUrl) console.log(` API: ${apiUrl}`);
|
|
@@ -22780,23 +23417,23 @@ async function showLocalInfo() {
|
|
|
22780
23417
|
const token = await getToken();
|
|
22781
23418
|
const apiUrl = await getApiUrl();
|
|
22782
23419
|
const activeOrg = await getActiveOrg();
|
|
22783
|
-
console.log(
|
|
23420
|
+
console.log(chalk80.bold("Auth:"));
|
|
22784
23421
|
if (token) {
|
|
22785
23422
|
const tokenSource = process.env.VM0_TOKEN ? "VM0_TOKEN env var" : "config file";
|
|
22786
23423
|
console.log(
|
|
22787
|
-
` Status: ${
|
|
23424
|
+
` Status: ${chalk80.green("Authenticated")} (via ${tokenSource})`
|
|
22788
23425
|
);
|
|
22789
23426
|
} else {
|
|
22790
|
-
console.log(` Status: ${
|
|
23427
|
+
console.log(` Status: ${chalk80.dim("Not authenticated")}`);
|
|
22791
23428
|
}
|
|
22792
23429
|
console.log(` API: ${apiUrl}`);
|
|
22793
23430
|
console.log();
|
|
22794
23431
|
if (activeOrg) {
|
|
22795
|
-
console.log(
|
|
23432
|
+
console.log(chalk80.bold("Org:"));
|
|
22796
23433
|
console.log(` Active: ${activeOrg}`);
|
|
22797
23434
|
}
|
|
22798
23435
|
}
|
|
22799
|
-
var whoamiCommand = new
|
|
23436
|
+
var whoamiCommand = new Command91().name("whoami").description("Show current identity and environment information").action(
|
|
22800
23437
|
withErrorHandler(async () => {
|
|
22801
23438
|
if (isInsideSandbox()) {
|
|
22802
23439
|
await showSandboxInfo();
|
|
@@ -22806,9 +23443,15 @@ var whoamiCommand = new Command93().name("whoami").description("Show current ide
|
|
|
22806
23443
|
})
|
|
22807
23444
|
);
|
|
22808
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
|
+
|
|
22809
23452
|
// src/index.ts
|
|
22810
|
-
var program = new
|
|
22811
|
-
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");
|
|
22812
23455
|
program.addCommand(authCommand);
|
|
22813
23456
|
program.addCommand(infoCommand);
|
|
22814
23457
|
program.addCommand(composeCommand);
|
|
@@ -22822,14 +23465,13 @@ program.addCommand(orgCommand);
|
|
|
22822
23465
|
program.addCommand(agentCommand);
|
|
22823
23466
|
program.addCommand(initCommand4);
|
|
22824
23467
|
program.addCommand(scheduleCommand);
|
|
22825
|
-
program.addCommand(usageCommand);
|
|
22826
23468
|
program.addCommand(secretCommand);
|
|
22827
23469
|
program.addCommand(variableCommand);
|
|
22828
23470
|
program.addCommand(connectorCommand);
|
|
22829
|
-
program.addCommand(setupClaudeCommand);
|
|
22830
23471
|
program.addCommand(preferenceCommand);
|
|
22831
23472
|
program.addCommand(upgradeCommand);
|
|
22832
23473
|
program.addCommand(whoamiCommand);
|
|
23474
|
+
program.addCommand(zeroCommand);
|
|
22833
23475
|
if (process.argv[1]?.endsWith("index.js") || process.argv[1]?.endsWith("index.ts") || process.argv[1]?.endsWith("vm0")) {
|
|
22834
23476
|
process.stdout.on("error", (err) => {
|
|
22835
23477
|
if (err.code === "EPIPE") process.exit(0);
|