@cargo-ai/cli 1.0.51 → 1.0.53

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.
@@ -30,14 +30,14 @@ Examples:
30
30
  $ cargo-ai ai mcp-server create --name "My Server"
31
31
  $ cargo-ai ai mcp-server create --name "My Server" \\
32
32
  --actions '[{"slug":"my-action","kind":"tool","name":null,"description":null,"isBulkAllowed":false,"config":{}}]' \\
33
- --resources '[{"kind":"model","slug":"my-resource","name":"My Resource","description":null,"integrationSlug":"hubspot","modelUuid":null,"filter":null,"selectedColumnSlugs":null,"limit":null,"prompt":null,"isReadOnly":true}]'
33
+ --resources '[{"kind":"model","slug":"my-resource","name":"My Resource","description":null,"integrationSlug":"hubspot","modelUuid":null,"filter":null,"selectedColumnSlugs":null,"limit":null,"isReadOnly":true}]'
34
34
 
35
35
  Action object shape:
36
36
  { "slug": string, "kind": "tool", "name": string | null, "description": string | null, "isBulkAllowed": boolean, "config": object }
37
37
 
38
38
  Resource object shapes:
39
- Model: { "kind": "model", "slug": string, "name": string, "description": string | null, "integrationSlug": string, "modelUuid": string | null, "filter": object | null, "selectedColumnSlugs": string[] | null, "limit": number | null, "prompt": string | null, "isReadOnly": boolean }
40
- File: { "kind": "file", "slug": string, "name": string, "description": string | null, "items": [{"kind":"file","fileUuid": string}], "prompt": string | null }`)
39
+ Model: { "kind": "model", "slug": string, "name": string, "description": string | null, "integrationSlug": string, "modelUuid": string | null, "filter": object | null, "selectedColumnSlugs": string[] | null, "limit": number | null, "isReadOnly": boolean }
40
+ File: { "kind": "file", "slug": string, "name": string, "description": string | null, "items": [{"kind":"file","fileUuid": string}] }`)
41
41
  .action(async (opts) => {
42
42
  const api = getApi();
43
43
  const result = await handleApiCall(() => api.ai.mcpServer.create({
@@ -71,11 +71,11 @@ export function registerReleaseCommands(parent, getApi) {
71
71
  .addHelpText("after", `
72
72
  Examples:
73
73
  $ cargo-ai ai release update-draft --agent-uuid <uuid> \\
74
- --resources '[{"kind":"model","slug":"my-resource","name":"My Resource","description":null,"integrationSlug":"hubspot","modelUuid":null,"filter":null,"selectedColumnSlugs":null,"limit":null,"prompt":null,"isReadOnly":true}]'
74
+ --resources '[{"kind":"model","slug":"my-resource","name":"My Resource","description":null,"integrationSlug":"hubspot","modelUuid":null,"filter":null,"selectedColumnSlugs":null,"limit":null,"isReadOnly":true}]'
75
75
 
76
76
  Resource object shapes:
77
- Model: { "kind": "model", "slug": string, "name": string, "description": string | null, "integrationSlug": string, "modelUuid": string | null, "filter": object | null, "selectedColumnSlugs": string[] | null, "limit": number | null, "prompt": string | null, "isReadOnly": boolean }
78
- File: { "kind": "file", "slug": string, "name": string, "description": string | null, "items": [{"kind":"file","fileUuid": string}], "prompt": string | null }
77
+ Model: { "kind": "model", "slug": string, "name": string, "description": string | null, "integrationSlug": string, "modelUuid": string | null, "filter": object | null, "selectedColumnSlugs": string[] | null, "limit": number | null, "isReadOnly": boolean }
78
+ File: { "kind": "file", "slug": string, "name": string, "description": string | null, "items": [{"kind":"file","fileUuid": string}] }
79
79
 
80
80
  Set "isReadOnly": false on a model resource to grant the agent write tools (insert/update/upsert/delete/custom columns).`)
81
81
  .action(async (opts) => {
@@ -1 +1 @@
1
- {"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../../src/commands/connection/action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AA+CxC,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,MAAM,GAAG,GAChB,IAAI,CAuHN"}
1
+ {"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../../src/commands/connection/action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AA+CxC,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,MAAM,GAAG,GAChB,IAAI,CAwHN"}
@@ -34,7 +34,7 @@ Examples:
34
34
  const { integrations } = await handleApiCall(() => api.connection.integration.list({
35
35
  hasActions: true,
36
36
  category: opts.category,
37
- slug: opts.integration,
37
+ slugs: opts.integration !== undefined ? [opts.integration] : undefined,
38
38
  }));
39
39
  const terms = queryTerms
40
40
  .flatMap((term) => term.split(/\s+/))
@@ -1 +1 @@
1
- {"version":3,"file":"integration.d.ts","sourceRoot":"","sources":["../../../src/commands/connection/integration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAGxC,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,MAAM,GAAG,GAChB,IAAI,CA2FN"}
1
+ {"version":3,"file":"integration.d.ts","sourceRoot":"","sources":["../../../src/commands/connection/integration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAGxC,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,MAAM,GAAG,GAChB,IAAI,CAoGN"}
@@ -7,7 +7,7 @@ export function registerIntegrationCommands(parent, getApi) {
7
7
  .command("list")
8
8
  .description("List all integrations")
9
9
  .option("--category <category>", "Filter by category (string)")
10
- .option("--slug <slug>", "Filter by integration slug (string)")
10
+ .option("--slugs <list>", "Filter by integration slugs (comma-separated strings)")
11
11
  .option("--search <search>", "Search by name, case-insensitive (string)")
12
12
  .option("--has-actions <bool>", 'Filter by presence of actions (string: "true" or "false")')
13
13
  .option("--has-extractors <bool>", 'Filter by presence of extractors (string: "true" or "false")')
@@ -15,7 +15,12 @@ export function registerIntegrationCommands(parent, getApi) {
15
15
  const api = getApi();
16
16
  const result = await handleApiCall(() => api.connection.integration.list({
17
17
  category: opts.category,
18
- slug: opts.slug,
18
+ slugs: opts.slugs !== undefined
19
+ ? opts.slugs
20
+ .split(",")
21
+ .map((slug) => slug.trim())
22
+ .filter((slug) => slug.length > 0)
23
+ : undefined,
19
24
  search: opts.search,
20
25
  hasActions: opts.hasActions === "true"
21
26
  ? true
@@ -12,7 +12,7 @@ export function registerBatchCommands(parent, getApi) {
12
12
  .option("--parent-batch-uuid <uuid>", "Filter by parent batch UUID (string)")
13
13
  .option("--parent-run-uuid <uuid>", "Filter by parent run UUID (string)")
14
14
  .option("--parent-node-uuid <uuid>", "Filter by parent node UUID (string)")
15
- .option("--statuses <list>", "Filter by statuses (comma-separated: pending,running,finished,failed,cancelled)")
15
+ .option("--statuses <list>", "Filter by statuses (comma-separated: pending,syncing,skipped,querying,running,success,cancelling,error,cancelled)")
16
16
  .option("--has-runs", "Only return batches that have runs (boolean flag)")
17
17
  .option("--is-skipped", "Only return skipped batches (boolean flag)")
18
18
  .option("--is-finished", "Only return finished batches (boolean flag)")
@@ -1 +1 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/commands/orchestration/run.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAexC,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,GAAG,IAAI,CAsnB5E"}
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/commands/orchestration/run.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAexC,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,GAAG,IAAI,CA+nB5E"}
@@ -10,7 +10,7 @@ export function registerRunCommands(parent, getApi) {
10
10
  .requiredOption("--workflow-uuid <uuid>", "Workflow UUID (string, required)")
11
11
  .option("--batch-uuid <uuid>", "Filter by batch UUID (string)")
12
12
  .option("--release-uuid <uuid>", "Filter by release UUID (string)")
13
- .option("--statuses <list>", "Filter by statuses (comma-separated: pending,running,finished,failed,cancelled)")
13
+ .option("--statuses <list>", "Filter by statuses (comma-separated: idle,pending,running,success,error,cancelling,cancelled,skipped)")
14
14
  .option("--parent-batch-uuid <uuid>", "Filter by parent batch UUID (string)")
15
15
  .option("--parent-uuid <uuid>", "Filter by parent run UUID (string)")
16
16
  .option("--parent-node-uuid <uuid>", "Filter by parent node UUID (string)")
@@ -144,7 +144,7 @@ Examples:
144
144
  .requiredOption("--workflow-uuid <uuid>", "Workflow UUID (string, required)")
145
145
  .option("--batch-uuid <uuid>", "Filter by batch UUID (string)")
146
146
  .option("--release-uuid <uuid>", "Filter by release UUID (string)")
147
- .option("--statuses <list>", "Filter by statuses (comma-separated: pending,running,finished,failed,cancelled)")
147
+ .option("--statuses <list>", "Filter by statuses (comma-separated: idle,pending,running,success,error,cancelling,cancelled,skipped)")
148
148
  .option("--parent-batch-uuid <uuid>", "Filter by parent batch UUID (string)")
149
149
  .option("--parent-uuid <uuid>", "Filter by parent run UUID (string)")
150
150
  .option("--parent-node-uuid <uuid>", "Filter by parent node UUID (string)")
@@ -189,9 +189,10 @@ Examples:
189
189
  .command("download")
190
190
  .description("Download run results as JSON")
191
191
  .requiredOption("--workflow-uuid <uuid>", "Workflow UUID (string, required)")
192
+ .option("--uuids <list>", "Only these run UUIDs (comma-separated). Use to export a known set of runs.")
192
193
  .option("--batch-uuid <uuid>", "Filter by batch UUID (string)")
193
194
  .option("--release-uuid <uuid>", "Filter by release UUID (string)")
194
- .option("--statuses <list>", "Filter by statuses (comma-separated: pending,running,finished,failed,cancelled)")
195
+ .option("--statuses <list>", "Filter by statuses (comma-separated: idle,pending,running,success,error,cancelling,cancelled,skipped)")
195
196
  .option("--parent-batch-uuid <uuid>", "Filter by parent batch UUID (string)")
196
197
  .option("--parent-uuid <uuid>", "Filter by parent run UUID (string)")
197
198
  .option("--parent-node-uuid <uuid>", "Filter by parent node UUID (string)")
@@ -209,6 +210,9 @@ Examples:
209
210
  const api = getApi();
210
211
  const result = await handleApiCall(() => api.orchestration.run.download({
211
212
  workflowUuid: opts.workflowUuid,
213
+ uuids: opts.uuids !== undefined
214
+ ? opts.uuids.split(",").map((uuid) => uuid.trim())
215
+ : undefined,
212
216
  batchUuid: opts.batchUuid,
213
217
  releaseUuid: opts.releaseUuid,
214
218
  statuses: opts.statuses !== undefined
@@ -240,7 +244,7 @@ Examples:
240
244
  .option("--format <format>", "Export format: csv | json (default: csv)", "csv")
241
245
  .option("--batch-uuid <uuid>", "Filter by batch UUID (string)")
242
246
  .option("--release-uuid <uuid>", "Filter by release UUID (string)")
243
- .option("--statuses <list>", "Filter by statuses (comma-separated: pending,running,finished,failed,cancelled)")
247
+ .option("--statuses <list>", "Filter by statuses (comma-separated: idle,pending,running,success,error,cancelling,cancelled,skipped)")
244
248
  .option("--parent-batch-uuid <uuid>", "Filter by parent batch UUID (string)")
245
249
  .option("--parent-uuid <uuid>", "Filter by parent run UUID (string)")
246
250
  .option("--parent-node-uuid <uuid>", "Filter by parent node UUID (string)")
@@ -1 +1 @@
1
- {"version":3,"file":"column.d.ts","sourceRoot":"","sources":["../../../src/commands/storage/column.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAGxC,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,MAAM,GAAG,GAChB,IAAI,CAiIN"}
1
+ {"version":3,"file":"column.d.ts","sourceRoot":"","sources":["../../../src/commands/storage/column.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAGxC,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,MAAM,GAAG,GAChB,IAAI,CAsLN"}
@@ -92,4 +92,39 @@ export function registerColumnCommands(parent, getApi) {
92
92
  }));
93
93
  outputJson(result);
94
94
  });
95
+ column
96
+ .command("insert-custom-values")
97
+ .description("Set custom column values on a single record")
98
+ .requiredOption("--model-uuid <uuid>", "Model UUID")
99
+ .requiredOption("--id <id>", "Record ID")
100
+ .requiredOption("--data <json>", 'Custom column values as a JSON object, e.g. {"ai_fit_score":82}')
101
+ .addHelpText("after", `
102
+ Example:
103
+ $ cargo-ai storage column insert-custom-values --model-uuid 550e8400-... --id rec_1 --data '{"ai_fit_score":82}'`)
104
+ .action(async (opts) => {
105
+ const api = getApi();
106
+ await handleApiCall(() => api.storage.column.insertCustomValues({
107
+ modelUuid: opts.modelUuid,
108
+ id: opts.id,
109
+ data: parseJson(opts.data, "--data"),
110
+ }));
111
+ outputJson({ ok: true });
112
+ });
113
+ column
114
+ .command("insert-custom-values-bulk")
115
+ .description("Set custom column values on multiple records")
116
+ .requiredOption("--model-uuid <uuid>", "Model UUID")
117
+ .requiredOption("--records <json>", 'JSON array of entries: [{ "id": "rec_1", "data": { "ai_fit_score": 82 } }, ...]')
118
+ .addHelpText("after", `
119
+ Example:
120
+ $ cargo-ai storage column insert-custom-values-bulk --model-uuid 550e8400-... \\
121
+ --records '[{"id":"rec_1","data":{"ai_fit_score":82}}]'`)
122
+ .action(async (opts) => {
123
+ const api = getApi();
124
+ await handleApiCall(() => api.storage.column.insertCustomValuesBulk({
125
+ modelUuid: opts.modelUuid,
126
+ records: parseJson(opts.records, "--records"),
127
+ }));
128
+ outputJson({ ok: true });
129
+ });
95
130
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cargo-ai/cli",
3
- "version": "1.0.51",
3
+ "version": "1.0.53",
4
4
  "private": false,
5
5
  "license": "UNLICENSED",
6
6
  "homepage": "https://getcargo.ai",
@@ -59,10 +59,10 @@
59
59
  "format:check": "prettier --check ."
60
60
  },
61
61
  "dependencies": {
62
- "@cargo-ai/api": "^1.0.59",
62
+ "@cargo-ai/api": "^1.0.60",
63
63
  "@cargo-ai/app-sdk": "^1.0.6",
64
- "@cargo-ai/cdk": "^1.0.43",
65
- "@cargo-ai/types": "^1.0.56",
64
+ "@cargo-ai/cdk": "^1.0.44",
65
+ "@cargo-ai/types": "^1.0.57",
66
66
  "@cargo-ai/worker-sdk": "^1.0.12",
67
67
  "@modelcontextprotocol/sdk": "1.29.0",
68
68
  "commander": "^12.1.0",