@vm0/cli 9.70.1 → 9.70.2
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 +526 -32
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -45,7 +45,7 @@ if (DSN) {
|
|
|
45
45
|
Sentry.init({
|
|
46
46
|
dsn: DSN,
|
|
47
47
|
environment: process.env.SENTRY_ENVIRONMENT ?? "production",
|
|
48
|
-
release: "9.70.
|
|
48
|
+
release: "9.70.2",
|
|
49
49
|
sendDefaultPii: false,
|
|
50
50
|
tracesSampleRate: 0,
|
|
51
51
|
shutdownTimeout: 500,
|
|
@@ -64,7 +64,7 @@ if (DSN) {
|
|
|
64
64
|
}
|
|
65
65
|
});
|
|
66
66
|
Sentry.setContext("cli", {
|
|
67
|
-
version: "9.70.
|
|
67
|
+
version: "9.70.2",
|
|
68
68
|
command: process.argv.slice(2).join(" ")
|
|
69
69
|
});
|
|
70
70
|
Sentry.setContext("runtime", {
|
|
@@ -675,7 +675,7 @@ function getConfigPath() {
|
|
|
675
675
|
return join2(homedir2(), ".vm0", "config.json");
|
|
676
676
|
}
|
|
677
677
|
var infoCommand = new Command6().name("info").description("Display environment and debug information").action(async () => {
|
|
678
|
-
console.log(chalk4.bold(`VM0 CLI v${"9.70.
|
|
678
|
+
console.log(chalk4.bold(`VM0 CLI v${"9.70.2"}`));
|
|
679
679
|
console.log();
|
|
680
680
|
const config = await loadConfig();
|
|
681
681
|
const hasEnvToken = !!process.env.VM0_TOKEN;
|
|
@@ -4842,6 +4842,33 @@ var CONNECTOR_TYPES_DEF = {
|
|
|
4842
4842
|
},
|
|
4843
4843
|
defaultAuthMethod: "api-token"
|
|
4844
4844
|
},
|
|
4845
|
+
cloudinary: {
|
|
4846
|
+
label: "Cloudinary",
|
|
4847
|
+
helpText: "Connect your Cloudinary account to manage images, videos, and media assets with CDN delivery and transformations",
|
|
4848
|
+
authMethods: {
|
|
4849
|
+
"api-token": {
|
|
4850
|
+
label: "API Credentials",
|
|
4851
|
+
helpText: "1. Log in to the [Cloudinary Console](https://console.cloudinary.com/settings/api-keys)\n2. Go to **Settings** \u2192 **API Keys**\n3. Copy your **Cloud Name**, **API Key**, and **API Secret**",
|
|
4852
|
+
secrets: {
|
|
4853
|
+
CLOUDINARY_TOKEN: {
|
|
4854
|
+
label: "API Key",
|
|
4855
|
+
required: true
|
|
4856
|
+
},
|
|
4857
|
+
CLOUDINARY_API_SECRET: {
|
|
4858
|
+
label: "API Secret",
|
|
4859
|
+
required: true
|
|
4860
|
+
},
|
|
4861
|
+
CLOUDINARY_CLOUD_NAME: {
|
|
4862
|
+
label: "Cloud Name",
|
|
4863
|
+
required: true,
|
|
4864
|
+
type: "variable",
|
|
4865
|
+
placeholder: "your-cloud-name"
|
|
4866
|
+
}
|
|
4867
|
+
}
|
|
4868
|
+
}
|
|
4869
|
+
},
|
|
4870
|
+
defaultAuthMethod: "api-token"
|
|
4871
|
+
},
|
|
4845
4872
|
cronlytic: {
|
|
4846
4873
|
label: "Cronlytic",
|
|
4847
4874
|
helpText: "Connect your Cronlytic account to monitor cron jobs and scheduled tasks",
|
|
@@ -4863,6 +4890,22 @@ var CONNECTOR_TYPES_DEF = {
|
|
|
4863
4890
|
},
|
|
4864
4891
|
defaultAuthMethod: "api-token"
|
|
4865
4892
|
},
|
|
4893
|
+
"customer-io": {
|
|
4894
|
+
label: "Customer.io",
|
|
4895
|
+
helpText: "Connect your Customer.io account to send behavioral emails, SMS, and push notifications triggered by user events",
|
|
4896
|
+
authMethods: {
|
|
4897
|
+
"api-token": {
|
|
4898
|
+
label: "API Token",
|
|
4899
|
+
secrets: {
|
|
4900
|
+
CUSTOMERIO_APP_TOKEN: {
|
|
4901
|
+
label: "App API Key",
|
|
4902
|
+
required: true
|
|
4903
|
+
}
|
|
4904
|
+
}
|
|
4905
|
+
}
|
|
4906
|
+
},
|
|
4907
|
+
defaultAuthMethod: "api-token"
|
|
4908
|
+
},
|
|
4866
4909
|
dify: {
|
|
4867
4910
|
label: "Dify",
|
|
4868
4911
|
helpText: "Connect your Dify account to build and manage AI-powered workflows, chatbots, and agentic applications",
|
|
@@ -5413,6 +5456,24 @@ var CONNECTOR_TYPES_DEF = {
|
|
|
5413
5456
|
}
|
|
5414
5457
|
}
|
|
5415
5458
|
},
|
|
5459
|
+
calendly: {
|
|
5460
|
+
label: "Calendly",
|
|
5461
|
+
helpText: "Connect your Calendly account to access scheduling data, event types, and invitee information",
|
|
5462
|
+
authMethods: {
|
|
5463
|
+
"api-token": {
|
|
5464
|
+
label: "Personal Access Token",
|
|
5465
|
+
helpText: "1. Log in to [Calendly](https://calendly.com)\n2. Go to **Integrations > API & Webhooks**\n3. Generate a Personal Access Token\n4. Copy the token",
|
|
5466
|
+
secrets: {
|
|
5467
|
+
CALENDLY_TOKEN: {
|
|
5468
|
+
label: "Personal Access Token",
|
|
5469
|
+
required: true,
|
|
5470
|
+
placeholder: "your-calendly-token"
|
|
5471
|
+
}
|
|
5472
|
+
}
|
|
5473
|
+
}
|
|
5474
|
+
},
|
|
5475
|
+
defaultAuthMethod: "api-token"
|
|
5476
|
+
},
|
|
5416
5477
|
canva: {
|
|
5417
5478
|
label: "Canva",
|
|
5418
5479
|
featureFlag: "canvaConnector" /* CanvaConnector */,
|
|
@@ -5456,6 +5517,24 @@ var CONNECTOR_TYPES_DEF = {
|
|
|
5456
5517
|
}
|
|
5457
5518
|
}
|
|
5458
5519
|
},
|
|
5520
|
+
"cal-com": {
|
|
5521
|
+
label: "Cal.com",
|
|
5522
|
+
helpText: "Connect your Cal.com account to manage scheduling, bookings, and calendar events",
|
|
5523
|
+
authMethods: {
|
|
5524
|
+
"api-token": {
|
|
5525
|
+
label: "API Token",
|
|
5526
|
+
helpText: "1. Log in to [Cal.com](https://app.cal.com)\n2. Go to **Settings** \u2192 **Developer** \u2192 **API Keys**\n3. Click **Create API Key**\n4. Copy the generated key",
|
|
5527
|
+
secrets: {
|
|
5528
|
+
CALCOM_TOKEN: {
|
|
5529
|
+
label: "API Token",
|
|
5530
|
+
required: true,
|
|
5531
|
+
placeholder: "cal_live_xxxxxxxx"
|
|
5532
|
+
}
|
|
5533
|
+
}
|
|
5534
|
+
}
|
|
5535
|
+
},
|
|
5536
|
+
defaultAuthMethod: "api-token"
|
|
5537
|
+
},
|
|
5459
5538
|
xero: {
|
|
5460
5539
|
label: "Xero",
|
|
5461
5540
|
helpText: "Connect your Xero account to access accounting data, invoices, and contacts",
|
|
@@ -6791,6 +6870,23 @@ var CONNECTOR_TYPES_DEF = {
|
|
|
6791
6870
|
}
|
|
6792
6871
|
},
|
|
6793
6872
|
defaultAuthMethod: "api-token"
|
|
6873
|
+
},
|
|
6874
|
+
v0: {
|
|
6875
|
+
label: "v0",
|
|
6876
|
+
helpText: "Connect your v0 account to generate and iterate on React and Next.js UI components with AI",
|
|
6877
|
+
authMethods: {
|
|
6878
|
+
"api-token": {
|
|
6879
|
+
label: "API Token",
|
|
6880
|
+
secrets: {
|
|
6881
|
+
V0_TOKEN: {
|
|
6882
|
+
label: "API Token",
|
|
6883
|
+
required: true,
|
|
6884
|
+
placeholder: "v0-..."
|
|
6885
|
+
}
|
|
6886
|
+
}
|
|
6887
|
+
}
|
|
6888
|
+
},
|
|
6889
|
+
defaultAuthMethod: "api-token"
|
|
6794
6890
|
}
|
|
6795
6891
|
};
|
|
6796
6892
|
var CONNECTOR_TYPES = CONNECTOR_TYPES_DEF;
|
|
@@ -6801,9 +6897,11 @@ var connectorTypeSchema = z22.enum([
|
|
|
6801
6897
|
"axiom",
|
|
6802
6898
|
"airtable",
|
|
6803
6899
|
"asana",
|
|
6900
|
+
"calendly",
|
|
6804
6901
|
"canva",
|
|
6805
6902
|
"clickup",
|
|
6806
6903
|
"cloudflare",
|
|
6904
|
+
"cloudinary",
|
|
6807
6905
|
"close",
|
|
6808
6906
|
"github",
|
|
6809
6907
|
"gmail",
|
|
@@ -6911,7 +7009,10 @@ var connectorTypeSchema = z22.enum([
|
|
|
6911
7009
|
"minio",
|
|
6912
7010
|
"pdforge",
|
|
6913
7011
|
"slack-webhook",
|
|
6914
|
-
"wix"
|
|
7012
|
+
"wix",
|
|
7013
|
+
"cal-com",
|
|
7014
|
+
"v0",
|
|
7015
|
+
"customer-io"
|
|
6915
7016
|
]);
|
|
6916
7017
|
function getConnectorEnvironmentMapping(type2) {
|
|
6917
7018
|
const config = CONNECTOR_TYPES[type2];
|
|
@@ -8000,6 +8101,399 @@ var zeroOrgContract = c28.router({
|
|
|
8000
8101
|
}
|
|
8001
8102
|
});
|
|
8002
8103
|
|
|
8104
|
+
// ../../packages/core/src/contracts/zero-composes.ts
|
|
8105
|
+
import { z as z32 } from "zod";
|
|
8106
|
+
var c29 = initContract();
|
|
8107
|
+
var zeroComposesMainContract = c29.router({
|
|
8108
|
+
getByName: {
|
|
8109
|
+
method: "GET",
|
|
8110
|
+
path: "/api/zero/composes",
|
|
8111
|
+
headers: authHeadersSchema,
|
|
8112
|
+
query: z32.object({
|
|
8113
|
+
name: z32.string().min(1, "Missing name query parameter"),
|
|
8114
|
+
org: z32.string().optional()
|
|
8115
|
+
}),
|
|
8116
|
+
responses: {
|
|
8117
|
+
200: composeResponseSchema,
|
|
8118
|
+
400: apiErrorSchema,
|
|
8119
|
+
401: apiErrorSchema,
|
|
8120
|
+
403: apiErrorSchema
|
|
8121
|
+
},
|
|
8122
|
+
summary: "Get agent compose by name (zero proxy)"
|
|
8123
|
+
}
|
|
8124
|
+
});
|
|
8125
|
+
var zeroComposesByIdContract = c29.router({
|
|
8126
|
+
getById: {
|
|
8127
|
+
method: "GET",
|
|
8128
|
+
path: "/api/zero/composes/:id",
|
|
8129
|
+
headers: authHeadersSchema,
|
|
8130
|
+
pathParams: z32.object({
|
|
8131
|
+
id: z32.string().min(1, "Compose ID is required")
|
|
8132
|
+
}),
|
|
8133
|
+
responses: {
|
|
8134
|
+
200: composeResponseSchema,
|
|
8135
|
+
401: apiErrorSchema,
|
|
8136
|
+
403: apiErrorSchema,
|
|
8137
|
+
404: apiErrorSchema
|
|
8138
|
+
},
|
|
8139
|
+
summary: "Get agent compose by ID (zero proxy)"
|
|
8140
|
+
},
|
|
8141
|
+
delete: {
|
|
8142
|
+
method: "DELETE",
|
|
8143
|
+
path: "/api/zero/composes/:id",
|
|
8144
|
+
headers: authHeadersSchema,
|
|
8145
|
+
pathParams: z32.object({
|
|
8146
|
+
id: z32.string().uuid("Compose ID is required")
|
|
8147
|
+
}),
|
|
8148
|
+
body: c29.noBody(),
|
|
8149
|
+
responses: {
|
|
8150
|
+
204: c29.noBody(),
|
|
8151
|
+
401: apiErrorSchema,
|
|
8152
|
+
403: apiErrorSchema,
|
|
8153
|
+
404: apiErrorSchema,
|
|
8154
|
+
409: apiErrorSchema
|
|
8155
|
+
},
|
|
8156
|
+
summary: "Delete agent compose (zero proxy)"
|
|
8157
|
+
}
|
|
8158
|
+
});
|
|
8159
|
+
var zeroComposesListContract = c29.router({
|
|
8160
|
+
list: {
|
|
8161
|
+
method: "GET",
|
|
8162
|
+
path: "/api/zero/composes/list",
|
|
8163
|
+
headers: authHeadersSchema,
|
|
8164
|
+
query: z32.object({
|
|
8165
|
+
org: z32.string().optional()
|
|
8166
|
+
}),
|
|
8167
|
+
responses: {
|
|
8168
|
+
200: z32.object({
|
|
8169
|
+
composes: z32.array(composeListItemSchema)
|
|
8170
|
+
}),
|
|
8171
|
+
400: apiErrorSchema,
|
|
8172
|
+
401: apiErrorSchema,
|
|
8173
|
+
403: apiErrorSchema
|
|
8174
|
+
},
|
|
8175
|
+
summary: "List all agent composes (zero proxy)"
|
|
8176
|
+
}
|
|
8177
|
+
});
|
|
8178
|
+
|
|
8179
|
+
// ../../packages/core/src/contracts/zero-runs.ts
|
|
8180
|
+
import { z as z33 } from "zod";
|
|
8181
|
+
var zeroRunRequestSchema = unifiedRunRequestSchema.omit({
|
|
8182
|
+
triggerSource: true
|
|
8183
|
+
});
|
|
8184
|
+
var c30 = initContract();
|
|
8185
|
+
var zeroRunsMainContract = c30.router({
|
|
8186
|
+
create: {
|
|
8187
|
+
method: "POST",
|
|
8188
|
+
path: "/api/zero/runs",
|
|
8189
|
+
headers: authHeadersSchema,
|
|
8190
|
+
body: zeroRunRequestSchema,
|
|
8191
|
+
responses: {
|
|
8192
|
+
201: createRunResponseSchema,
|
|
8193
|
+
400: apiErrorSchema,
|
|
8194
|
+
401: apiErrorSchema,
|
|
8195
|
+
403: apiErrorSchema,
|
|
8196
|
+
404: apiErrorSchema
|
|
8197
|
+
},
|
|
8198
|
+
summary: "Create and execute agent run (zero proxy)"
|
|
8199
|
+
}
|
|
8200
|
+
});
|
|
8201
|
+
var zeroRunsByIdContract = c30.router({
|
|
8202
|
+
getById: {
|
|
8203
|
+
method: "GET",
|
|
8204
|
+
path: "/api/zero/runs/:id",
|
|
8205
|
+
headers: authHeadersSchema,
|
|
8206
|
+
pathParams: z33.object({
|
|
8207
|
+
id: z33.string().min(1, "Run ID is required")
|
|
8208
|
+
}),
|
|
8209
|
+
responses: {
|
|
8210
|
+
200: getRunResponseSchema,
|
|
8211
|
+
400: apiErrorSchema,
|
|
8212
|
+
401: apiErrorSchema,
|
|
8213
|
+
404: apiErrorSchema
|
|
8214
|
+
},
|
|
8215
|
+
summary: "Get agent run by ID (zero proxy)"
|
|
8216
|
+
}
|
|
8217
|
+
});
|
|
8218
|
+
var zeroRunsCancelContract = c30.router({
|
|
8219
|
+
cancel: {
|
|
8220
|
+
method: "POST",
|
|
8221
|
+
path: "/api/zero/runs/:id/cancel",
|
|
8222
|
+
headers: authHeadersSchema,
|
|
8223
|
+
pathParams: z33.object({
|
|
8224
|
+
id: z33.string().min(1, "Run ID is required")
|
|
8225
|
+
}),
|
|
8226
|
+
body: z33.undefined(),
|
|
8227
|
+
responses: {
|
|
8228
|
+
200: cancelRunResponseSchema,
|
|
8229
|
+
400: apiErrorSchema,
|
|
8230
|
+
401: apiErrorSchema,
|
|
8231
|
+
403: apiErrorSchema,
|
|
8232
|
+
404: apiErrorSchema
|
|
8233
|
+
},
|
|
8234
|
+
summary: "Cancel a pending or running run (zero proxy)"
|
|
8235
|
+
}
|
|
8236
|
+
});
|
|
8237
|
+
var zeroRunsQueueContract = c30.router({
|
|
8238
|
+
getQueue: {
|
|
8239
|
+
method: "GET",
|
|
8240
|
+
path: "/api/zero/runs/queue",
|
|
8241
|
+
headers: authHeadersSchema,
|
|
8242
|
+
responses: {
|
|
8243
|
+
200: queueResponseSchema,
|
|
8244
|
+
401: apiErrorSchema,
|
|
8245
|
+
403: apiErrorSchema
|
|
8246
|
+
},
|
|
8247
|
+
summary: "Get org run queue status (zero proxy)"
|
|
8248
|
+
}
|
|
8249
|
+
});
|
|
8250
|
+
var zeroRunAgentEventsContract = c30.router({
|
|
8251
|
+
getAgentEvents: {
|
|
8252
|
+
method: "GET",
|
|
8253
|
+
path: "/api/zero/runs/:id/telemetry/agent",
|
|
8254
|
+
headers: authHeadersSchema,
|
|
8255
|
+
pathParams: z33.object({
|
|
8256
|
+
id: z33.string().min(1, "Run ID is required")
|
|
8257
|
+
}),
|
|
8258
|
+
query: z33.object({
|
|
8259
|
+
since: z33.coerce.number().optional(),
|
|
8260
|
+
limit: z33.coerce.number().min(1).max(100).default(5),
|
|
8261
|
+
order: z33.enum(["asc", "desc"]).default("desc")
|
|
8262
|
+
}),
|
|
8263
|
+
responses: {
|
|
8264
|
+
200: agentEventsResponseSchema,
|
|
8265
|
+
401: apiErrorSchema,
|
|
8266
|
+
404: apiErrorSchema
|
|
8267
|
+
},
|
|
8268
|
+
summary: "Get agent events with pagination (zero proxy)"
|
|
8269
|
+
}
|
|
8270
|
+
});
|
|
8271
|
+
|
|
8272
|
+
// ../../packages/core/src/contracts/zero-schedules.ts
|
|
8273
|
+
import { z as z34 } from "zod";
|
|
8274
|
+
var c31 = initContract();
|
|
8275
|
+
var zeroSchedulesMainContract = c31.router({
|
|
8276
|
+
deploy: {
|
|
8277
|
+
method: "POST",
|
|
8278
|
+
path: "/api/zero/schedules",
|
|
8279
|
+
headers: authHeadersSchema,
|
|
8280
|
+
body: deployScheduleRequestSchema,
|
|
8281
|
+
responses: {
|
|
8282
|
+
200: deployScheduleResponseSchema,
|
|
8283
|
+
201: deployScheduleResponseSchema,
|
|
8284
|
+
400: apiErrorSchema,
|
|
8285
|
+
401: apiErrorSchema,
|
|
8286
|
+
403: apiErrorSchema,
|
|
8287
|
+
404: apiErrorSchema
|
|
8288
|
+
},
|
|
8289
|
+
summary: "Deploy schedule (zero proxy)"
|
|
8290
|
+
},
|
|
8291
|
+
list: {
|
|
8292
|
+
method: "GET",
|
|
8293
|
+
path: "/api/zero/schedules",
|
|
8294
|
+
headers: authHeadersSchema,
|
|
8295
|
+
responses: {
|
|
8296
|
+
200: scheduleListResponseSchema,
|
|
8297
|
+
401: apiErrorSchema,
|
|
8298
|
+
403: apiErrorSchema
|
|
8299
|
+
},
|
|
8300
|
+
summary: "List all schedules (zero proxy)"
|
|
8301
|
+
}
|
|
8302
|
+
});
|
|
8303
|
+
var zeroSchedulesByNameContract = c31.router({
|
|
8304
|
+
delete: {
|
|
8305
|
+
method: "DELETE",
|
|
8306
|
+
path: "/api/zero/schedules/:name",
|
|
8307
|
+
headers: authHeadersSchema,
|
|
8308
|
+
pathParams: z34.object({
|
|
8309
|
+
name: z34.string().min(1, "Schedule name required")
|
|
8310
|
+
}),
|
|
8311
|
+
query: z34.object({
|
|
8312
|
+
composeId: z34.string().uuid("Compose ID required")
|
|
8313
|
+
}),
|
|
8314
|
+
responses: {
|
|
8315
|
+
204: c31.noBody(),
|
|
8316
|
+
401: apiErrorSchema,
|
|
8317
|
+
403: apiErrorSchema,
|
|
8318
|
+
404: apiErrorSchema
|
|
8319
|
+
},
|
|
8320
|
+
summary: "Delete schedule (zero proxy)"
|
|
8321
|
+
}
|
|
8322
|
+
});
|
|
8323
|
+
var zeroSchedulesEnableContract = c31.router({
|
|
8324
|
+
enable: {
|
|
8325
|
+
method: "POST",
|
|
8326
|
+
path: "/api/zero/schedules/:name/enable",
|
|
8327
|
+
headers: authHeadersSchema,
|
|
8328
|
+
pathParams: z34.object({
|
|
8329
|
+
name: z34.string().min(1, "Schedule name required")
|
|
8330
|
+
}),
|
|
8331
|
+
body: z34.object({
|
|
8332
|
+
composeId: z34.string().uuid("Compose ID required")
|
|
8333
|
+
}),
|
|
8334
|
+
responses: {
|
|
8335
|
+
200: scheduleResponseSchema,
|
|
8336
|
+
400: apiErrorSchema,
|
|
8337
|
+
401: apiErrorSchema,
|
|
8338
|
+
403: apiErrorSchema,
|
|
8339
|
+
404: apiErrorSchema
|
|
8340
|
+
},
|
|
8341
|
+
summary: "Enable schedule (zero proxy)"
|
|
8342
|
+
},
|
|
8343
|
+
disable: {
|
|
8344
|
+
method: "POST",
|
|
8345
|
+
path: "/api/zero/schedules/:name/disable",
|
|
8346
|
+
headers: authHeadersSchema,
|
|
8347
|
+
pathParams: z34.object({
|
|
8348
|
+
name: z34.string().min(1, "Schedule name required")
|
|
8349
|
+
}),
|
|
8350
|
+
body: z34.object({
|
|
8351
|
+
composeId: z34.string().uuid("Compose ID required")
|
|
8352
|
+
}),
|
|
8353
|
+
responses: {
|
|
8354
|
+
200: scheduleResponseSchema,
|
|
8355
|
+
400: apiErrorSchema,
|
|
8356
|
+
401: apiErrorSchema,
|
|
8357
|
+
403: apiErrorSchema,
|
|
8358
|
+
404: apiErrorSchema
|
|
8359
|
+
},
|
|
8360
|
+
summary: "Disable schedule (zero proxy)"
|
|
8361
|
+
}
|
|
8362
|
+
});
|
|
8363
|
+
|
|
8364
|
+
// ../../packages/core/src/contracts/zero-model-providers.ts
|
|
8365
|
+
import { z as z35 } from "zod";
|
|
8366
|
+
var c32 = initContract();
|
|
8367
|
+
var zeroModelProvidersMainContract = c32.router({
|
|
8368
|
+
list: {
|
|
8369
|
+
method: "GET",
|
|
8370
|
+
path: "/api/zero/model-providers",
|
|
8371
|
+
headers: authHeadersSchema,
|
|
8372
|
+
responses: {
|
|
8373
|
+
200: modelProviderListResponseSchema,
|
|
8374
|
+
401: apiErrorSchema,
|
|
8375
|
+
500: apiErrorSchema
|
|
8376
|
+
},
|
|
8377
|
+
summary: "List org-level model providers"
|
|
8378
|
+
},
|
|
8379
|
+
upsert: {
|
|
8380
|
+
method: "POST",
|
|
8381
|
+
path: "/api/zero/model-providers",
|
|
8382
|
+
headers: authHeadersSchema,
|
|
8383
|
+
body: upsertModelProviderRequestSchema,
|
|
8384
|
+
responses: {
|
|
8385
|
+
200: upsertModelProviderResponseSchema,
|
|
8386
|
+
201: upsertModelProviderResponseSchema,
|
|
8387
|
+
400: apiErrorSchema,
|
|
8388
|
+
401: apiErrorSchema,
|
|
8389
|
+
403: apiErrorSchema,
|
|
8390
|
+
500: apiErrorSchema
|
|
8391
|
+
},
|
|
8392
|
+
summary: "Create or update an org-level model provider (admin only)"
|
|
8393
|
+
}
|
|
8394
|
+
});
|
|
8395
|
+
var zeroModelProvidersByTypeContract = c32.router({
|
|
8396
|
+
delete: {
|
|
8397
|
+
method: "DELETE",
|
|
8398
|
+
path: "/api/zero/model-providers/:type",
|
|
8399
|
+
headers: authHeadersSchema,
|
|
8400
|
+
pathParams: z35.object({
|
|
8401
|
+
type: modelProviderTypeSchema
|
|
8402
|
+
}),
|
|
8403
|
+
responses: {
|
|
8404
|
+
204: c32.noBody(),
|
|
8405
|
+
401: apiErrorSchema,
|
|
8406
|
+
403: apiErrorSchema,
|
|
8407
|
+
404: apiErrorSchema,
|
|
8408
|
+
500: apiErrorSchema
|
|
8409
|
+
},
|
|
8410
|
+
summary: "Delete an org-level model provider (admin only)"
|
|
8411
|
+
}
|
|
8412
|
+
});
|
|
8413
|
+
var zeroModelProvidersDefaultContract = c32.router({
|
|
8414
|
+
setDefault: {
|
|
8415
|
+
method: "POST",
|
|
8416
|
+
path: "/api/zero/model-providers/:type/default",
|
|
8417
|
+
headers: authHeadersSchema,
|
|
8418
|
+
pathParams: z35.object({
|
|
8419
|
+
type: modelProviderTypeSchema
|
|
8420
|
+
}),
|
|
8421
|
+
body: z35.undefined(),
|
|
8422
|
+
responses: {
|
|
8423
|
+
200: modelProviderResponseSchema,
|
|
8424
|
+
401: apiErrorSchema,
|
|
8425
|
+
403: apiErrorSchema,
|
|
8426
|
+
404: apiErrorSchema,
|
|
8427
|
+
500: apiErrorSchema
|
|
8428
|
+
},
|
|
8429
|
+
summary: "Set org-level model provider as default (admin only)"
|
|
8430
|
+
}
|
|
8431
|
+
});
|
|
8432
|
+
|
|
8433
|
+
// ../../packages/core/src/contracts/zero-user-preferences.ts
|
|
8434
|
+
var c33 = initContract();
|
|
8435
|
+
var zeroUserPreferencesContract = c33.router({
|
|
8436
|
+
get: {
|
|
8437
|
+
method: "GET",
|
|
8438
|
+
path: "/api/zero/user-preferences",
|
|
8439
|
+
headers: authHeadersSchema,
|
|
8440
|
+
responses: {
|
|
8441
|
+
200: userPreferencesResponseSchema,
|
|
8442
|
+
401: apiErrorSchema,
|
|
8443
|
+
500: apiErrorSchema
|
|
8444
|
+
},
|
|
8445
|
+
summary: "Get user preferences"
|
|
8446
|
+
},
|
|
8447
|
+
update: {
|
|
8448
|
+
method: "POST",
|
|
8449
|
+
path: "/api/zero/user-preferences",
|
|
8450
|
+
headers: authHeadersSchema,
|
|
8451
|
+
body: updateUserPreferencesRequestSchema,
|
|
8452
|
+
responses: {
|
|
8453
|
+
200: userPreferencesResponseSchema,
|
|
8454
|
+
400: apiErrorSchema,
|
|
8455
|
+
401: apiErrorSchema,
|
|
8456
|
+
500: apiErrorSchema
|
|
8457
|
+
},
|
|
8458
|
+
summary: "Update user preferences"
|
|
8459
|
+
}
|
|
8460
|
+
});
|
|
8461
|
+
|
|
8462
|
+
// ../../packages/core/src/contracts/zero-secrets.ts
|
|
8463
|
+
var c34 = initContract();
|
|
8464
|
+
var zeroSecretsContract = c34.router({
|
|
8465
|
+
set: {
|
|
8466
|
+
method: "POST",
|
|
8467
|
+
path: "/api/zero/secrets",
|
|
8468
|
+
headers: authHeadersSchema,
|
|
8469
|
+
body: setSecretRequestSchema,
|
|
8470
|
+
responses: {
|
|
8471
|
+
200: secretResponseSchema,
|
|
8472
|
+
201: secretResponseSchema,
|
|
8473
|
+
400: apiErrorSchema,
|
|
8474
|
+
401: apiErrorSchema,
|
|
8475
|
+
500: apiErrorSchema
|
|
8476
|
+
},
|
|
8477
|
+
summary: "Create or update a secret"
|
|
8478
|
+
}
|
|
8479
|
+
});
|
|
8480
|
+
var zeroVariablesContract = c34.router({
|
|
8481
|
+
set: {
|
|
8482
|
+
method: "POST",
|
|
8483
|
+
path: "/api/zero/variables",
|
|
8484
|
+
headers: authHeadersSchema,
|
|
8485
|
+
body: setVariableRequestSchema,
|
|
8486
|
+
responses: {
|
|
8487
|
+
200: variableResponseSchema,
|
|
8488
|
+
201: variableResponseSchema,
|
|
8489
|
+
400: apiErrorSchema,
|
|
8490
|
+
401: apiErrorSchema,
|
|
8491
|
+
500: apiErrorSchema
|
|
8492
|
+
},
|
|
8493
|
+
summary: "Create or update a variable"
|
|
8494
|
+
}
|
|
8495
|
+
});
|
|
8496
|
+
|
|
8003
8497
|
// ../../packages/core/src/storage-names.ts
|
|
8004
8498
|
function getInstructionsStorageName(agentName) {
|
|
8005
8499
|
return `agent-instructions@${agentName}`;
|
|
@@ -9051,8 +9545,8 @@ async function resolveSkills(skillUrls) {
|
|
|
9051
9545
|
}
|
|
9052
9546
|
|
|
9053
9547
|
// src/lib/domain/yaml-validator.ts
|
|
9054
|
-
import { z as
|
|
9055
|
-
var cliAgentNameSchema =
|
|
9548
|
+
import { z as z36 } from "zod";
|
|
9549
|
+
var cliAgentNameSchema = z36.string().min(3, "Agent name must be at least 3 characters").max(64, "Agent name must be 64 characters or less").regex(
|
|
9056
9550
|
/^[a-zA-Z0-9]([a-zA-Z0-9-]{0,62}[a-zA-Z0-9])?$/,
|
|
9057
9551
|
"Agent name must start and end with letter or number, and contain only letters, numbers, and hyphens"
|
|
9058
9552
|
);
|
|
@@ -9066,7 +9560,7 @@ var cliAgentDefinitionSchema = agentDefinitionSchema.superRefine(
|
|
|
9066
9560
|
resolveSkillRef(skillRef);
|
|
9067
9561
|
} catch (error) {
|
|
9068
9562
|
ctx.addIssue({
|
|
9069
|
-
code:
|
|
9563
|
+
code: z36.ZodIssueCode.custom,
|
|
9070
9564
|
message: error instanceof Error ? error.message : `Invalid skill reference: ${skillRef}`,
|
|
9071
9565
|
path: ["skills", i]
|
|
9072
9566
|
});
|
|
@@ -9076,15 +9570,15 @@ var cliAgentDefinitionSchema = agentDefinitionSchema.superRefine(
|
|
|
9076
9570
|
}
|
|
9077
9571
|
}
|
|
9078
9572
|
);
|
|
9079
|
-
var cliComposeSchema =
|
|
9080
|
-
version:
|
|
9081
|
-
agents:
|
|
9082
|
-
volumes:
|
|
9573
|
+
var cliComposeSchema = z36.object({
|
|
9574
|
+
version: z36.string().min(1, "Missing config.version"),
|
|
9575
|
+
agents: z36.record(cliAgentNameSchema, cliAgentDefinitionSchema),
|
|
9576
|
+
volumes: z36.record(z36.string(), volumeConfigSchema).optional()
|
|
9083
9577
|
}).superRefine((config, ctx) => {
|
|
9084
9578
|
const agentKeys = Object.keys(config.agents);
|
|
9085
9579
|
if (agentKeys.length === 0) {
|
|
9086
9580
|
ctx.addIssue({
|
|
9087
|
-
code:
|
|
9581
|
+
code: z36.ZodIssueCode.custom,
|
|
9088
9582
|
message: "agents must have at least one agent defined",
|
|
9089
9583
|
path: ["agents"]
|
|
9090
9584
|
});
|
|
@@ -9092,7 +9586,7 @@ var cliComposeSchema = z32.object({
|
|
|
9092
9586
|
}
|
|
9093
9587
|
if (agentKeys.length > 1) {
|
|
9094
9588
|
ctx.addIssue({
|
|
9095
|
-
code:
|
|
9589
|
+
code: z36.ZodIssueCode.custom,
|
|
9096
9590
|
message: "Multiple agents not supported yet. Only one agent allowed.",
|
|
9097
9591
|
path: ["agents"]
|
|
9098
9592
|
});
|
|
@@ -9104,7 +9598,7 @@ var cliComposeSchema = z32.object({
|
|
|
9104
9598
|
if (agentVolumes && agentVolumes.length > 0) {
|
|
9105
9599
|
if (!config.volumes) {
|
|
9106
9600
|
ctx.addIssue({
|
|
9107
|
-
code:
|
|
9601
|
+
code: z36.ZodIssueCode.custom,
|
|
9108
9602
|
message: "Agent references volumes but no volumes section defined. Each volume must have explicit name and version.",
|
|
9109
9603
|
path: ["volumes"]
|
|
9110
9604
|
});
|
|
@@ -9114,7 +9608,7 @@ var cliComposeSchema = z32.object({
|
|
|
9114
9608
|
const parts = volDeclaration.split(":");
|
|
9115
9609
|
if (parts.length !== 2) {
|
|
9116
9610
|
ctx.addIssue({
|
|
9117
|
-
code:
|
|
9611
|
+
code: z36.ZodIssueCode.custom,
|
|
9118
9612
|
message: `Invalid volume declaration: ${volDeclaration}. Expected format: volume-key:/mount/path`,
|
|
9119
9613
|
path: ["agents", agentName, "volumes"]
|
|
9120
9614
|
});
|
|
@@ -9123,7 +9617,7 @@ var cliComposeSchema = z32.object({
|
|
|
9123
9617
|
const volumeKey = parts[0].trim();
|
|
9124
9618
|
if (!config.volumes[volumeKey]) {
|
|
9125
9619
|
ctx.addIssue({
|
|
9126
|
-
code:
|
|
9620
|
+
code: z36.ZodIssueCode.custom,
|
|
9127
9621
|
message: `Volume "${volumeKey}" is not defined in volumes section. Each volume must have explicit name and version.`,
|
|
9128
9622
|
path: ["volumes", volumeKey]
|
|
9129
9623
|
});
|
|
@@ -10322,7 +10816,7 @@ var composeCommand = new Command7().name("compose").description("Create or updat
|
|
|
10322
10816
|
options.autoUpdate = false;
|
|
10323
10817
|
}
|
|
10324
10818
|
if (options.autoUpdate !== false) {
|
|
10325
|
-
await startSilentUpgrade("9.70.
|
|
10819
|
+
await startSilentUpgrade("9.70.2");
|
|
10326
10820
|
}
|
|
10327
10821
|
try {
|
|
10328
10822
|
let result;
|
|
@@ -11147,7 +11641,7 @@ var mainRunCommand = new Command8().name("run").description("Run an agent").argu
|
|
|
11147
11641
|
withErrorHandler(
|
|
11148
11642
|
async (identifier, prompt, options) => {
|
|
11149
11643
|
if (options.autoUpdate !== false) {
|
|
11150
|
-
await startSilentUpgrade("9.70.
|
|
11644
|
+
await startSilentUpgrade("9.70.2");
|
|
11151
11645
|
}
|
|
11152
11646
|
const { org, name, version } = parseIdentifier(identifier);
|
|
11153
11647
|
let composeId;
|
|
@@ -12885,7 +13379,7 @@ var cookAction = new Command35().name("cook").description("Quick start: prepare,
|
|
|
12885
13379
|
withErrorHandler(
|
|
12886
13380
|
async (prompt, options) => {
|
|
12887
13381
|
if (options.autoUpdate !== false) {
|
|
12888
|
-
const shouldExit = await checkAndUpgrade("9.70.
|
|
13382
|
+
const shouldExit = await checkAndUpgrade("9.70.2", prompt);
|
|
12889
13383
|
if (shouldExit) {
|
|
12890
13384
|
process.exit(0);
|
|
12891
13385
|
}
|
|
@@ -15237,7 +15731,7 @@ var listCommand9 = new Command65().name("list").alias("ls").description("List al
|
|
|
15237
15731
|
);
|
|
15238
15732
|
return;
|
|
15239
15733
|
}
|
|
15240
|
-
const nameWidth = Math.max(4, ...data.composes.map((
|
|
15734
|
+
const nameWidth = Math.max(4, ...data.composes.map((c35) => c35.name.length));
|
|
15241
15735
|
const header = ["NAME".padEnd(nameWidth), "VERSION", "UPDATED"].join(
|
|
15242
15736
|
" "
|
|
15243
15737
|
);
|
|
@@ -15838,7 +16332,7 @@ async function gatherFrequency(optionFrequency, existingFrequency) {
|
|
|
15838
16332
|
if (!isInteractive()) {
|
|
15839
16333
|
throw new Error("--frequency is required (daily|weekly|monthly|once|loop)");
|
|
15840
16334
|
}
|
|
15841
|
-
const defaultIndex = existingFrequency ? FREQUENCY_CHOICES.findIndex((
|
|
16335
|
+
const defaultIndex = existingFrequency ? FREQUENCY_CHOICES.findIndex((c35) => c35.value === existingFrequency) : 0;
|
|
15842
16336
|
frequency = await promptSelect(
|
|
15843
16337
|
"Schedule frequency",
|
|
15844
16338
|
FREQUENCY_CHOICES,
|
|
@@ -15863,7 +16357,7 @@ async function gatherDay(frequency, optionDay, existingDay) {
|
|
|
15863
16357
|
throw new Error("--day is required for weekly/monthly");
|
|
15864
16358
|
}
|
|
15865
16359
|
if (frequency === "weekly") {
|
|
15866
|
-
const defaultDayIndex = existingDay !== void 0 ? DAY_OF_WEEK_CHOICES.findIndex((
|
|
16360
|
+
const defaultDayIndex = existingDay !== void 0 ? DAY_OF_WEEK_CHOICES.findIndex((c35) => c35.value === existingDay) : 0;
|
|
15867
16361
|
const day2 = await promptSelect(
|
|
15868
16362
|
"Day of week",
|
|
15869
16363
|
DAY_OF_WEEK_CHOICES,
|
|
@@ -17313,7 +17807,7 @@ import chalk76 from "chalk";
|
|
|
17313
17807
|
var listCommand13 = new Command86().name("list").alias("ls").description("List all connectors and their status").action(
|
|
17314
17808
|
withErrorHandler(async () => {
|
|
17315
17809
|
const result = await listConnectors();
|
|
17316
|
-
const connectedMap = new Map(result.connectors.map((
|
|
17810
|
+
const connectedMap = new Map(result.connectors.map((c35) => [c35.type, c35]));
|
|
17317
17811
|
const allTypesRaw = Object.keys(CONNECTOR_TYPES);
|
|
17318
17812
|
const allTypes = [];
|
|
17319
17813
|
for (const type2 of allTypesRaw) {
|
|
@@ -17874,16 +18368,16 @@ async function handleModelProvider(ctx) {
|
|
|
17874
18368
|
const providerType = await step.prompt(
|
|
17875
18369
|
() => promptSelect(
|
|
17876
18370
|
"Select provider type:",
|
|
17877
|
-
choices.map((
|
|
17878
|
-
title:
|
|
17879
|
-
value:
|
|
18371
|
+
choices.map((c35) => ({
|
|
18372
|
+
title: c35.label,
|
|
18373
|
+
value: c35.type
|
|
17880
18374
|
}))
|
|
17881
18375
|
)
|
|
17882
18376
|
);
|
|
17883
18377
|
if (!providerType) {
|
|
17884
18378
|
process.exit(0);
|
|
17885
18379
|
}
|
|
17886
|
-
const selectedChoice = choices.find((
|
|
18380
|
+
const selectedChoice = choices.find((c35) => c35.type === providerType);
|
|
17887
18381
|
if (selectedChoice?.helpText) {
|
|
17888
18382
|
for (const line of selectedChoice.helpText.split("\n")) {
|
|
17889
18383
|
step.detail(chalk82.dim(line));
|
|
@@ -18237,13 +18731,13 @@ var upgradeCommand = new Command94().name("upgrade").description("Upgrade vm0 CL
|
|
|
18237
18731
|
if (latestVersion === null) {
|
|
18238
18732
|
throw new Error("Could not check for updates. Please try again later.");
|
|
18239
18733
|
}
|
|
18240
|
-
if (latestVersion === "9.70.
|
|
18241
|
-
console.log(chalk86.green(`\u2713 Already up to date (${"9.70.
|
|
18734
|
+
if (latestVersion === "9.70.2") {
|
|
18735
|
+
console.log(chalk86.green(`\u2713 Already up to date (${"9.70.2"})`));
|
|
18242
18736
|
return;
|
|
18243
18737
|
}
|
|
18244
18738
|
console.log(
|
|
18245
18739
|
chalk86.yellow(
|
|
18246
|
-
`Current version: ${"9.70.
|
|
18740
|
+
`Current version: ${"9.70.2"} -> Latest version: ${latestVersion}`
|
|
18247
18741
|
)
|
|
18248
18742
|
);
|
|
18249
18743
|
console.log();
|
|
@@ -18270,7 +18764,7 @@ var upgradeCommand = new Command94().name("upgrade").description("Upgrade vm0 CL
|
|
|
18270
18764
|
const success = await performUpgrade(packageManager);
|
|
18271
18765
|
if (success) {
|
|
18272
18766
|
console.log(
|
|
18273
|
-
chalk86.green(`\u2713 Upgraded from ${"9.70.
|
|
18767
|
+
chalk86.green(`\u2713 Upgraded from ${"9.70.2"} to ${latestVersion}`)
|
|
18274
18768
|
);
|
|
18275
18769
|
return;
|
|
18276
18770
|
}
|
|
@@ -18344,7 +18838,7 @@ var whoamiCommand = new Command95().name("whoami").description("Show current ide
|
|
|
18344
18838
|
|
|
18345
18839
|
// src/index.ts
|
|
18346
18840
|
var program = new Command96();
|
|
18347
|
-
program.name("vm0").description("VM0 CLI - Build and run agents with natural language").version("9.70.
|
|
18841
|
+
program.name("vm0").description("VM0 CLI - Build and run agents with natural language").version("9.70.2");
|
|
18348
18842
|
program.addCommand(authCommand);
|
|
18349
18843
|
program.addCommand(infoCommand);
|
|
18350
18844
|
program.addCommand(composeCommand);
|