@vm0/cli 9.219.0 → 9.220.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/{agent-4SQZDYYN.js → agent-7NASKRN2.js} +4 -4
- package/{automation-WPG4IYVE.js → automation-DL2TSVCY.js} +21 -11
- package/automation-DL2TSVCY.js.map +1 -0
- package/{banking-S7GOP6WI.js → banking-7766P2VA.js} +2 -2
- package/{chat-6E34QZHI.js → chat-7Y3GRRQU.js} +2 -2
- package/{chunk-NUCGXUQW.js → chunk-2WLLGU5G.js} +2 -2
- package/{chunk-UQBJX5J5.js → chunk-BDVHHGRQ.js} +7 -7
- package/{chunk-O5WIIYWN.js → chunk-CYWNKBCJ.js} +2 -2
- package/{chunk-B33JIZI2.js → chunk-EIORAGIM.js} +3 -3
- package/chunk-H63W4KQL.js +160 -0
- package/chunk-H63W4KQL.js.map +1 -0
- package/{chunk-7DWLR3AY.js → chunk-IP5MKNYO.js} +9 -7
- package/{chunk-7DWLR3AY.js.map → chunk-IP5MKNYO.js.map} +1 -1
- package/{chunk-RYGMBENC.js → chunk-JJNOLW3F.js} +2 -2
- package/{chunk-Q47FRJVT.js → chunk-MES7TURQ.js} +51 -182
- package/chunk-MES7TURQ.js.map +1 -0
- package/{chunk-C3NCF7AC.js → chunk-PHLVIRTN.js} +56 -29
- package/chunk-PHLVIRTN.js.map +1 -0
- package/{chunk-PTXI3X6L.js → chunk-QCBHUHCP.js} +2 -2
- package/clerk.generated-ERU55NQP.js +402 -0
- package/clerk.generated-ERU55NQP.js.map +1 -0
- package/{computer-use-P5NZISFJ.js → computer-use-DFWKRS5C.js} +2 -2
- package/{connector-BF7GN5KJ.js → connector-XXMPNPPI.js} +3 -3
- package/{credit-MUMH2AFQ.js → credit-EXQA2ZKH.js} +2 -2
- package/{developer-support-YRODRFDP.js → developer-support-HV2KNBFK.js} +2 -2
- package/{doctor-SYQVWI4X.js → doctor-B3XKCTAQ.js} +5 -5
- package/dropbox.generated-ZZKEVL5X.js +140 -0
- package/dropbox.generated-ZZKEVL5X.js.map +1 -0
- package/{generate-SOTMY5L2.js → generate-76KZOWWD.js} +3 -3
- package/{github-M5QMAGUR.js → github-R33X2DZP.js} +2 -2
- package/{goal-UCWUNBDX.js → goal-6EHEH3W6.js} +2 -2
- package/{host-FBIUSQM5.js → host-QJVQWPTD.js} +2 -2
- package/index.js +20 -18
- package/index.js.map +1 -1
- package/{logs-2WS7C3NG.js → logs-TP25S725.js} +13 -11
- package/{logs-2WS7C3NG.js.map → logs-TP25S725.js.map} +1 -1
- package/{maps-F6HS3TX3.js → maps-GGAFUIRJ.js} +2 -2
- package/{model-WVSFDOUB.js → model-B3IPEBEY.js} +3 -3
- package/{model-provider-RW5KSE2A.js → model-provider-3AKAPHTA.js} +3 -3
- package/{org-HG7QC6H2.js → org-LCUQ4U3K.js} +2 -2
- package/package.json +1 -1
- package/{phone-Y53A3YR6.js → phone-3PZOGXP5.js} +2 -2
- package/{preference-PDDNKSID.js → preference-7BNRZYGT.js} +2 -2
- package/{resource-4RXH7SID.js → resource-FYGZW3VK.js} +2 -2
- package/{schedule-XUGLVIVF.js → schedule-MTI5OP23.js} +2 -2
- package/schedule-MTI5OP23.js.map +1 -0
- package/{search-NRX5C4BZ.js → search-G5335REW.js} +10 -8
- package/{search-NRX5C4BZ.js.map → search-G5335REW.js.map} +1 -1
- package/{secret-G6ZROM3S.js → secret-DPVN2UF2.js} +3 -3
- package/sentry.generated-Y3V3MFG5.js +112 -0
- package/sentry.generated-Y3V3MFG5.js.map +1 -0
- package/{slack-UE7PHE5Q.js → slack-T7G7IOD7.js} +2 -2
- package/strava.generated-FDURULCZ.js +76 -0
- package/strava.generated-FDURULCZ.js.map +1 -0
- package/{telegram-FMO5JNQL.js → telegram-AIUOTF4A.js} +2 -2
- package/{variable-3QU5KSPD.js → variable-UNXSGRUU.js} +2 -2
- package/{web-NUS7HONQ.js → web-NX3LRDTP.js} +2 -2
- package/{whoami-BVBVPCEX.js → whoami-W6ZRUGTN.js} +4 -4
- package/{workflow-KFXYP54E.js → workflow-F2YOTCAJ.js} +135 -95
- package/workflow-F2YOTCAJ.js.map +1 -0
- package/xero.generated-NPSQE6GC.js +164 -0
- package/xero.generated-NPSQE6GC.js.map +1 -0
- package/zero.js +32 -32
- package/automation-WPG4IYVE.js.map +0 -1
- package/chunk-C3NCF7AC.js.map +0 -1
- package/chunk-Q47FRJVT.js.map +0 -1
- package/clerk.generated-CUIJPEBA.js +0 -335
- package/clerk.generated-CUIJPEBA.js.map +0 -1
- package/dropbox.generated-SM45XNZI.js +0 -111
- package/dropbox.generated-SM45XNZI.js.map +0 -1
- package/schedule-XUGLVIVF.js.map +0 -1
- package/sentry.generated-TQZTJGQ4.js +0 -90
- package/sentry.generated-TQZTJGQ4.js.map +0 -1
- package/strava.generated-FK4SMYR7.js +0 -63
- package/strava.generated-FK4SMYR7.js.map +0 -1
- package/workflow-KFXYP54E.js.map +0 -1
- package/xero.generated-UVAXXS6Q.js +0 -129
- package/xero.generated-UVAXXS6Q.js.map +0 -1
- /package/{agent-4SQZDYYN.js.map → agent-7NASKRN2.js.map} +0 -0
- /package/{banking-S7GOP6WI.js.map → banking-7766P2VA.js.map} +0 -0
- /package/{chat-6E34QZHI.js.map → chat-7Y3GRRQU.js.map} +0 -0
- /package/{chunk-NUCGXUQW.js.map → chunk-2WLLGU5G.js.map} +0 -0
- /package/{chunk-UQBJX5J5.js.map → chunk-BDVHHGRQ.js.map} +0 -0
- /package/{chunk-O5WIIYWN.js.map → chunk-CYWNKBCJ.js.map} +0 -0
- /package/{chunk-B33JIZI2.js.map → chunk-EIORAGIM.js.map} +0 -0
- /package/{chunk-RYGMBENC.js.map → chunk-JJNOLW3F.js.map} +0 -0
- /package/{chunk-PTXI3X6L.js.map → chunk-QCBHUHCP.js.map} +0 -0
- /package/{computer-use-P5NZISFJ.js.map → computer-use-DFWKRS5C.js.map} +0 -0
- /package/{connector-BF7GN5KJ.js.map → connector-XXMPNPPI.js.map} +0 -0
- /package/{credit-MUMH2AFQ.js.map → credit-EXQA2ZKH.js.map} +0 -0
- /package/{developer-support-YRODRFDP.js.map → developer-support-HV2KNBFK.js.map} +0 -0
- /package/{doctor-SYQVWI4X.js.map → doctor-B3XKCTAQ.js.map} +0 -0
- /package/{generate-SOTMY5L2.js.map → generate-76KZOWWD.js.map} +0 -0
- /package/{github-M5QMAGUR.js.map → github-R33X2DZP.js.map} +0 -0
- /package/{goal-UCWUNBDX.js.map → goal-6EHEH3W6.js.map} +0 -0
- /package/{host-FBIUSQM5.js.map → host-QJVQWPTD.js.map} +0 -0
- /package/{maps-F6HS3TX3.js.map → maps-GGAFUIRJ.js.map} +0 -0
- /package/{model-WVSFDOUB.js.map → model-B3IPEBEY.js.map} +0 -0
- /package/{model-provider-RW5KSE2A.js.map → model-provider-3AKAPHTA.js.map} +0 -0
- /package/{org-HG7QC6H2.js.map → org-LCUQ4U3K.js.map} +0 -0
- /package/{phone-Y53A3YR6.js.map → phone-3PZOGXP5.js.map} +0 -0
- /package/{preference-PDDNKSID.js.map → preference-7BNRZYGT.js.map} +0 -0
- /package/{resource-4RXH7SID.js.map → resource-FYGZW3VK.js.map} +0 -0
- /package/{secret-G6ZROM3S.js.map → secret-DPVN2UF2.js.map} +0 -0
- /package/{slack-UE7PHE5Q.js.map → slack-T7G7IOD7.js.map} +0 -0
- /package/{telegram-FMO5JNQL.js.map → telegram-AIUOTF4A.js.map} +0 -0
- /package/{variable-3QU5KSPD.js.map → variable-UNXSGRUU.js.map} +0 -0
- /package/{web-NUS7HONQ.js.map → web-NX3LRDTP.js.map} +0 -0
- /package/{whoami-BVBVPCEX.js.map → whoami-W6ZRUGTN.js.map} +0 -0
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
deleteZeroVariable,
|
|
11
11
|
listZeroVariables,
|
|
12
12
|
setZeroVariable
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-PHLVIRTN.js";
|
|
14
14
|
import {
|
|
15
15
|
withErrorHandler
|
|
16
16
|
} from "./chunk-3F4RFLPX.js";
|
|
@@ -117,4 +117,4 @@ var zeroVariableCommand = new Command().name("variable").description("Read or wr
|
|
|
117
117
|
export {
|
|
118
118
|
zeroVariableCommand
|
|
119
119
|
};
|
|
120
|
-
//# sourceMappingURL=variable-
|
|
120
|
+
//# sourceMappingURL=variable-UNXSGRUU.js.map
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { createRequire as __createRequire } from "node:module";
|
|
3
3
|
const require = __createRequire(import.meta.url);
|
|
4
4
|
import "./chunk-LTDQISD7.js";
|
|
5
|
-
import "./chunk-
|
|
5
|
+
import "./chunk-PHLVIRTN.js";
|
|
6
6
|
import {
|
|
7
7
|
downloadWebFile,
|
|
8
8
|
uploadWebFile,
|
|
@@ -106,4 +106,4 @@ Examples:
|
|
|
106
106
|
export {
|
|
107
107
|
zeroWebCommand
|
|
108
108
|
};
|
|
109
|
-
//# sourceMappingURL=web-
|
|
109
|
+
//# sourceMappingURL=web-NX3LRDTP.js.map
|
|
@@ -4,16 +4,16 @@ const require = __createRequire(import.meta.url);
|
|
|
4
4
|
import {
|
|
5
5
|
loadConnectorPermissionInfos,
|
|
6
6
|
policyIcon
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-2WLLGU5G.js";
|
|
8
8
|
import {
|
|
9
9
|
permissionGrantsToFirewallPolicies
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-BDVHHGRQ.js";
|
|
11
11
|
import "./chunk-LTDQISD7.js";
|
|
12
12
|
import {
|
|
13
13
|
getZeroAgentUserConnectors,
|
|
14
14
|
listZeroConnectors,
|
|
15
15
|
listZeroUserPermissionGrants
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-PHLVIRTN.js";
|
|
17
17
|
import {
|
|
18
18
|
getActiveOrg,
|
|
19
19
|
getApiUrl,
|
|
@@ -192,4 +192,4 @@ Notes:
|
|
|
192
192
|
export {
|
|
193
193
|
zeroWhoamiCommand
|
|
194
194
|
};
|
|
195
|
-
//# sourceMappingURL=whoami-
|
|
195
|
+
//# sourceMappingURL=whoami-W6ZRUGTN.js.map
|
|
@@ -27,7 +27,7 @@ import {
|
|
|
27
27
|
listWorkflows,
|
|
28
28
|
updateWorkflow,
|
|
29
29
|
updateWorkflowTrigger
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-PHLVIRTN.js";
|
|
31
31
|
import {
|
|
32
32
|
withErrorHandler
|
|
33
33
|
} from "./chunk-3F4RFLPX.js";
|
|
@@ -169,7 +169,56 @@ Notes:
|
|
|
169
169
|
// src/commands/zero/workflow/edit.ts
|
|
170
170
|
init_esm_shims();
|
|
171
171
|
import { readFileSync as readFileSync3 } from "fs";
|
|
172
|
-
|
|
172
|
+
|
|
173
|
+
// src/commands/zero/workflow/resolve-workflow-ref.ts
|
|
174
|
+
init_esm_shims();
|
|
175
|
+
var UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
176
|
+
var WORKFLOW_NAME_RE = /^[a-z0-9][a-z0-9-]*[a-z0-9]$/;
|
|
177
|
+
function isWorkflowName(ref) {
|
|
178
|
+
return ref.length >= 2 && ref.length <= 64 && WORKFLOW_NAME_RE.test(ref);
|
|
179
|
+
}
|
|
180
|
+
async function resolveWorkflowRef(ref, options) {
|
|
181
|
+
if (UUID_RE.test(ref)) {
|
|
182
|
+
return ref;
|
|
183
|
+
}
|
|
184
|
+
if (!isWorkflowName(ref)) {
|
|
185
|
+
throw new Error(
|
|
186
|
+
`Invalid workflow ref: "${ref}". Use a workflow ID or a slug name like "tell-a-joke"`
|
|
187
|
+
);
|
|
188
|
+
}
|
|
189
|
+
const agentId = options.agent ?? process.env.ZERO_AGENT_ID;
|
|
190
|
+
if (!agentId) {
|
|
191
|
+
throw new Error(
|
|
192
|
+
"Workflow name refs require an agent scope. Pass --agent <agent-id>, set ZERO_AGENT_ID, or use a workflow ID"
|
|
193
|
+
);
|
|
194
|
+
}
|
|
195
|
+
if (!UUID_RE.test(agentId)) {
|
|
196
|
+
throw new Error(
|
|
197
|
+
`Invalid agent ID: "${agentId}". Pass an agent UUID for --agent or use a workflow ID`
|
|
198
|
+
);
|
|
199
|
+
}
|
|
200
|
+
const workflows = await listWorkflows({ agentId });
|
|
201
|
+
const matches = workflows.filter((workflow) => {
|
|
202
|
+
return workflow.name === ref;
|
|
203
|
+
});
|
|
204
|
+
if (matches.length === 0) {
|
|
205
|
+
throw new Error(
|
|
206
|
+
`Workflow not found: "${ref}" under agent "${agentId}". Check the name and agent, or use the workflow ID`
|
|
207
|
+
);
|
|
208
|
+
}
|
|
209
|
+
const winners = matches.filter((workflow) => {
|
|
210
|
+
return workflow.shadowedBy == null;
|
|
211
|
+
});
|
|
212
|
+
if (winners.length !== 1) {
|
|
213
|
+
throw new Error(
|
|
214
|
+
`Workflow name "${ref}" did not resolve to exactly one runtime winner under agent "${agentId}". Use the workflow ID`
|
|
215
|
+
);
|
|
216
|
+
}
|
|
217
|
+
return winners[0].id;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
// src/commands/zero/workflow/edit.ts
|
|
221
|
+
var editCommand = new Command().name("edit").description("Update a workflow's instruction, files, or metadata").argument("<workflow>", "Workflow ID or name").option("--agent <id>", "Agent ID for resolving workflow names").option("--instruction <text>", "New instruction text").option(
|
|
173
222
|
"--instruction-file <path>",
|
|
174
223
|
"Path to a file containing the instruction"
|
|
175
224
|
).option(
|
|
@@ -179,6 +228,7 @@ var editCommand = new Command().name("edit").description("Update a workflow's in
|
|
|
179
228
|
"after",
|
|
180
229
|
`
|
|
181
230
|
Examples:
|
|
231
|
+
zero workflow edit tell-a-joke --agent <agent-id> --instruction "New steps"
|
|
182
232
|
zero workflow edit <workflow-id> --instruction "New steps"
|
|
183
233
|
zero workflow edit <workflow-id> --instruction-file ./instruction.md
|
|
184
234
|
zero workflow edit <workflow-id> --dir ./workflows/my-workflow/files/
|
|
@@ -189,7 +239,7 @@ Notes:
|
|
|
189
239
|
- At least one of --instruction, --instruction-file, --dir, --display-name, or --description is required`
|
|
190
240
|
).action(
|
|
191
241
|
withErrorHandler(
|
|
192
|
-
async (
|
|
242
|
+
async (workflowRef, options) => {
|
|
193
243
|
if (options.instruction && options.instructionFile) {
|
|
194
244
|
console.error(
|
|
195
245
|
source_default.red("\u2717 Use either --instruction or --instruction-file")
|
|
@@ -208,6 +258,7 @@ Notes:
|
|
|
208
258
|
);
|
|
209
259
|
process.exit(1);
|
|
210
260
|
}
|
|
261
|
+
const workflowId = await resolveWorkflowRef(workflowRef, options);
|
|
211
262
|
const workflow = await updateWorkflow(workflowId, {
|
|
212
263
|
instruction,
|
|
213
264
|
files,
|
|
@@ -233,41 +284,45 @@ Notes:
|
|
|
233
284
|
|
|
234
285
|
// src/commands/zero/workflow/view.ts
|
|
235
286
|
init_esm_shims();
|
|
236
|
-
var viewCommand = new Command().name("view").description("View a workflow").argument("<
|
|
287
|
+
var viewCommand = new Command().name("view").description("View a workflow").argument("<workflow>", "Workflow ID or name").option("--agent <id>", "Agent ID for resolving workflow names").addHelpText(
|
|
237
288
|
"after",
|
|
238
289
|
`
|
|
239
290
|
Examples:
|
|
291
|
+
zero workflow view tell-a-joke --agent <agent-id>
|
|
240
292
|
zero workflow view <workflow-id>`
|
|
241
293
|
).action(
|
|
242
|
-
withErrorHandler(
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
console.log(`Name: ${workflow.name}`);
|
|
249
|
-
console.log(`Visibility: ${workflow.visibility}`);
|
|
250
|
-
console.log(`Agent Name: ${formatWorkflowAgentName(workflow)}`);
|
|
251
|
-
console.log(`Agent ID: ${workflow.agentId}`);
|
|
252
|
-
if (workflow.displayName)
|
|
253
|
-
console.log(`Display Name: ${workflow.displayName}`);
|
|
254
|
-
if (workflow.description)
|
|
255
|
-
console.log(`Description: ${workflow.description}`);
|
|
256
|
-
if (workflow.files && workflow.files.length > 0) {
|
|
294
|
+
withErrorHandler(
|
|
295
|
+
async (workflowRef, options) => {
|
|
296
|
+
const workflowId = await resolveWorkflowRef(workflowRef, options);
|
|
297
|
+
const workflow = await getWorkflow(workflowId);
|
|
298
|
+
console.log(source_default.bold(workflow.name));
|
|
299
|
+
if (workflow.displayName) console.log(source_default.dim(workflow.displayName));
|
|
257
300
|
console.log();
|
|
258
|
-
console.log(
|
|
259
|
-
|
|
260
|
-
|
|
301
|
+
console.log(`ID: ${workflow.id}`);
|
|
302
|
+
console.log(`Name: ${workflow.name}`);
|
|
303
|
+
console.log(`Visibility: ${workflow.visibility}`);
|
|
304
|
+
console.log(`Agent Name: ${formatWorkflowAgentName(workflow)}`);
|
|
305
|
+
console.log(`Agent ID: ${workflow.agentId}`);
|
|
306
|
+
if (workflow.displayName)
|
|
307
|
+
console.log(`Display Name: ${workflow.displayName}`);
|
|
308
|
+
if (workflow.description)
|
|
309
|
+
console.log(`Description: ${workflow.description}`);
|
|
310
|
+
if (workflow.files && workflow.files.length > 0) {
|
|
311
|
+
console.log();
|
|
312
|
+
console.log(source_default.dim("\u2500\u2500 Files \u2500\u2500"));
|
|
313
|
+
for (const f of workflow.files) {
|
|
314
|
+
console.log(` ${f.path} (${f.size} bytes)`);
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
console.log();
|
|
318
|
+
if (workflow.instruction) {
|
|
319
|
+
console.log(source_default.dim("\u2500\u2500 Instruction \u2500\u2500"));
|
|
320
|
+
console.log(workflow.instruction);
|
|
321
|
+
} else {
|
|
322
|
+
console.log(source_default.dim("No instruction"));
|
|
261
323
|
}
|
|
262
324
|
}
|
|
263
|
-
|
|
264
|
-
if (workflow.instruction) {
|
|
265
|
-
console.log(source_default.dim("\u2500\u2500 Instruction \u2500\u2500"));
|
|
266
|
-
console.log(workflow.instruction);
|
|
267
|
-
} else {
|
|
268
|
-
console.log(source_default.dim("No instruction"));
|
|
269
|
-
}
|
|
270
|
-
})
|
|
325
|
+
)
|
|
271
326
|
);
|
|
272
327
|
|
|
273
328
|
// src/commands/zero/workflow/list.ts
|
|
@@ -339,46 +394,52 @@ Examples:
|
|
|
339
394
|
|
|
340
395
|
// src/commands/zero/workflow/delete.ts
|
|
341
396
|
init_esm_shims();
|
|
342
|
-
var deleteCommand = new Command().name("delete").alias("rm").description("Delete a workflow").argument("<
|
|
397
|
+
var deleteCommand = new Command().name("delete").alias("rm").description("Delete a workflow").argument("<workflow>", "Workflow ID or name").option("--agent <id>", "Agent ID for resolving workflow names").option("-y, --yes", "Skip confirmation prompt").addHelpText(
|
|
343
398
|
"after",
|
|
344
399
|
`
|
|
345
400
|
Examples:
|
|
401
|
+
zero workflow delete tell-a-joke --agent <agent-id> -y
|
|
346
402
|
zero workflow delete <workflow-id>
|
|
347
403
|
zero workflow delete <workflow-id> -y
|
|
348
404
|
|
|
349
405
|
Notes:
|
|
350
406
|
- Use -y to skip confirmation in non-interactive mode`
|
|
351
407
|
).action(
|
|
352
|
-
withErrorHandler(
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
408
|
+
withErrorHandler(
|
|
409
|
+
async (workflowRef, options) => {
|
|
410
|
+
const workflowId = await resolveWorkflowRef(workflowRef, options);
|
|
411
|
+
const workflow = await getWorkflow(workflowId);
|
|
412
|
+
if (!options.yes) {
|
|
413
|
+
if (!isInteractive()) {
|
|
414
|
+
throw new Error("--yes flag is required in non-interactive mode");
|
|
415
|
+
}
|
|
416
|
+
const confirmed = await promptConfirm(
|
|
417
|
+
`Delete workflow '${workflow.name}'?`,
|
|
418
|
+
false
|
|
419
|
+
);
|
|
420
|
+
if (!confirmed) {
|
|
421
|
+
console.log(source_default.dim("Cancelled"));
|
|
422
|
+
return;
|
|
423
|
+
}
|
|
365
424
|
}
|
|
425
|
+
await deleteWorkflow(workflowId);
|
|
426
|
+
console.log(source_default.green(`\u2713 Workflow "${workflow.name}" deleted`));
|
|
366
427
|
}
|
|
367
|
-
|
|
368
|
-
console.log(source_default.green(`\u2713 Workflow "${workflow.name}" deleted`));
|
|
369
|
-
})
|
|
428
|
+
)
|
|
370
429
|
);
|
|
371
430
|
|
|
372
431
|
// src/commands/zero/workflow/copy.ts
|
|
373
432
|
init_esm_shims();
|
|
374
|
-
var copyCommand = new Command().name("copy").description("Copy (fork) a workflow onto another agent").argument("<
|
|
433
|
+
var copyCommand = new Command().name("copy").description("Copy (fork) a workflow onto another agent").argument("<workflow>", "Workflow ID or name to copy").option("--agent <id>", "Agent ID for resolving workflow names").requiredOption("--to-agent <agent-id>", "Target agent ID").addHelpText(
|
|
375
434
|
"after",
|
|
376
435
|
`
|
|
377
436
|
Examples:
|
|
378
|
-
zero workflow copy <
|
|
437
|
+
zero workflow copy tell-a-joke --agent <source-agent-id> --to-agent <target-agent-id>
|
|
438
|
+
zero workflow copy <workflow-id> --to-agent <target-agent-id>`
|
|
379
439
|
).action(
|
|
380
440
|
withErrorHandler(
|
|
381
|
-
async (
|
|
441
|
+
async (workflowRef, options) => {
|
|
442
|
+
const workflowId = await resolveWorkflowRef(workflowRef, options);
|
|
382
443
|
const workflow = await copyWorkflow(workflowId, options.toAgent);
|
|
383
444
|
console.log(source_default.green(`\u2713 Workflow "${workflow.name}" copied`));
|
|
384
445
|
console.log(` ID: ${workflow.id}`);
|
|
@@ -826,7 +887,6 @@ function buildGmailLabelAppliedEventConfig(options) {
|
|
|
826
887
|
}
|
|
827
888
|
|
|
828
889
|
// src/commands/zero/workflow/trigger/index.ts
|
|
829
|
-
var UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
830
890
|
var SCHEDULE_KINDS = ["cron", "once", "loop"];
|
|
831
891
|
var EVENT_KINDS = [
|
|
832
892
|
"gmail-new-message",
|
|
@@ -1297,26 +1357,6 @@ function buildUpdate(options, existing) {
|
|
|
1297
1357
|
}
|
|
1298
1358
|
return buildScheduleUpdate(options);
|
|
1299
1359
|
}
|
|
1300
|
-
async function resolveWorkflowId(ref, options) {
|
|
1301
|
-
if (UUID_RE.test(ref)) {
|
|
1302
|
-
return ref;
|
|
1303
|
-
}
|
|
1304
|
-
const agentId = options.agent ?? process.env.ZERO_AGENT_ID;
|
|
1305
|
-
const workflows = await listWorkflows(agentId ? { agentId } : {});
|
|
1306
|
-
const matches = workflows.filter((workflow) => {
|
|
1307
|
-
return workflow.name === ref;
|
|
1308
|
-
});
|
|
1309
|
-
if (matches.length === 0) {
|
|
1310
|
-
const hint = agentId ? ` under agent "${agentId}"` : ". Provide --agent <agent-id> or use the workflow ID";
|
|
1311
|
-
throw new Error(`Workflow not found: "${ref}"${hint}`);
|
|
1312
|
-
}
|
|
1313
|
-
if (matches.length > 1) {
|
|
1314
|
-
throw new Error(
|
|
1315
|
-
`Ambiguous workflow name: "${ref}". Provide --agent <agent-id> or use the workflow ID`
|
|
1316
|
-
);
|
|
1317
|
-
}
|
|
1318
|
-
return matches[0].id;
|
|
1319
|
-
}
|
|
1320
1360
|
var addCommand = addGithubTriggerOptions(
|
|
1321
1361
|
addGmailTriggerOptions(
|
|
1322
1362
|
new Command().name("add").description("Add a trigger to a workflow").argument("<workflow>", "Workflow ID or name").argument("<kind>", `Trigger type: ${TRIGGER_KINDS.join(" | ")}`).option("--expr <expression>", 'Cron expression for kind "cron"').option("--at <iso-time>", 'Fire time for kind "once"').option(
|
|
@@ -1334,20 +1374,20 @@ var addCommand = addGithubTriggerOptions(
|
|
|
1334
1374
|
"after",
|
|
1335
1375
|
`
|
|
1336
1376
|
Examples:
|
|
1337
|
-
zero workflow trigger add tell-a-joke cron --expr "0 9 * * *" -z Asia/Shanghai
|
|
1338
|
-
zero workflow trigger add tell-a-joke once --at "2026-06-10T09:00" -z Asia/Shanghai
|
|
1339
|
-
zero workflow trigger add tell-a-joke loop --every 15m
|
|
1340
|
-
zero workflow trigger add triage gmail-new-message --from-contains "@example.com"
|
|
1341
|
-
zero workflow trigger add triage gmail-new-message --config ./gmail-trigger.json
|
|
1342
|
-
zero workflow trigger add triage gmail-label-applied --label "Support"
|
|
1343
|
-
zero workflow trigger add triage github-label-applied --label "triage" --subject both --actor me
|
|
1344
|
-
zero workflow trigger add triage google-calendar-event-created
|
|
1345
|
-
zero workflow trigger add triage google-calendar-event-updated
|
|
1346
|
-
zero workflow trigger add triage google-calendar-event-cancelled
|
|
1347
|
-
zero workflow trigger add triage webhook
|
|
1377
|
+
zero workflow trigger add tell-a-joke --agent <agent-id> cron --expr "0 9 * * *" -z Asia/Shanghai
|
|
1378
|
+
zero workflow trigger add tell-a-joke --agent <agent-id> once --at "2026-06-10T09:00" -z Asia/Shanghai
|
|
1379
|
+
zero workflow trigger add tell-a-joke --agent <agent-id> loop --every 15m
|
|
1380
|
+
zero workflow trigger add triage --agent <agent-id> gmail-new-message --from-contains "@example.com"
|
|
1381
|
+
zero workflow trigger add triage --agent <agent-id> gmail-new-message --config ./gmail-trigger.json
|
|
1382
|
+
zero workflow trigger add triage --agent <agent-id> gmail-label-applied --label "Support"
|
|
1383
|
+
zero workflow trigger add triage --agent <agent-id> github-label-applied --label "triage" --subject both --actor me
|
|
1384
|
+
zero workflow trigger add triage --agent <agent-id> google-calendar-event-created
|
|
1385
|
+
zero workflow trigger add triage --agent <agent-id> google-calendar-event-updated
|
|
1386
|
+
zero workflow trigger add triage --agent <agent-id> google-calendar-event-cancelled
|
|
1387
|
+
zero workflow trigger add triage --agent <agent-id> webhook
|
|
1348
1388
|
|
|
1349
1389
|
Notes:
|
|
1350
|
-
- Workflow names resolve under --agent, then ZERO_AGENT_ID
|
|
1390
|
+
- Workflow names resolve under --agent, then ZERO_AGENT_ID
|
|
1351
1391
|
- Gmail triggers match all inbound messages when no text match rules are provided
|
|
1352
1392
|
- GitHub label triggers require the GitHub App installation in the workspace
|
|
1353
1393
|
- Webhook triggers print the signing secret only once after creation
|
|
@@ -1358,7 +1398,7 @@ Notes:
|
|
|
1358
1398
|
if (options.timezone && kind !== "cron" && kind !== "once" && kind !== "gmail-new-message") {
|
|
1359
1399
|
throw new Error("--timezone only applies to cron and once triggers");
|
|
1360
1400
|
}
|
|
1361
|
-
const workflowId = await
|
|
1401
|
+
const workflowId = await resolveWorkflowRef(workflowRef, options);
|
|
1362
1402
|
const body = buildCreateRequest(kind, options);
|
|
1363
1403
|
const trigger = await createWorkflowTrigger(workflowId, body);
|
|
1364
1404
|
console.log(
|
|
@@ -1400,12 +1440,12 @@ var listCommand2 = new Command().name("list").alias("ls").description("List a wo
|
|
|
1400
1440
|
"after",
|
|
1401
1441
|
`
|
|
1402
1442
|
Examples:
|
|
1403
|
-
zero workflow trigger list tell-a-joke
|
|
1404
|
-
zero workflow trigger list
|
|
1443
|
+
zero workflow trigger list tell-a-joke --agent <agent-id>
|
|
1444
|
+
zero workflow trigger list <workflow-id>`
|
|
1405
1445
|
).action(
|
|
1406
1446
|
withErrorHandler(
|
|
1407
1447
|
async (workflowRef, options) => {
|
|
1408
|
-
const workflowId = await
|
|
1448
|
+
const workflowId = await resolveWorkflowRef(workflowRef, options);
|
|
1409
1449
|
const triggers = await listWorkflowTriggers(workflowId);
|
|
1410
1450
|
if (triggers.length === 0) {
|
|
1411
1451
|
console.log(source_default.dim("No triggers"));
|
|
@@ -1448,10 +1488,10 @@ var triggerCommand = new Command().name("trigger").description("Manage a workflo
|
|
|
1448
1488
|
"after",
|
|
1449
1489
|
`
|
|
1450
1490
|
Examples:
|
|
1451
|
-
Add a trigger: zero workflow trigger add <workflow> cron --expr "0 9 * * *"
|
|
1452
|
-
Add a webhook: zero workflow trigger add <workflow> webhook
|
|
1491
|
+
Add a trigger: zero workflow trigger add <workflow-id> cron --expr "0 9 * * *"
|
|
1492
|
+
Add a webhook: zero workflow trigger add <workflow-id> webhook
|
|
1453
1493
|
Update a schedule: zero workflow trigger update <trigger-id> --every 10m
|
|
1454
|
-
List triggers: zero workflow trigger list <workflow>
|
|
1494
|
+
List triggers: zero workflow trigger list <workflow-id>
|
|
1455
1495
|
Inspect a trigger: zero workflow trigger show <trigger-id>
|
|
1456
1496
|
Pause one trigger: zero workflow trigger disable <trigger-id>`
|
|
1457
1497
|
);
|
|
@@ -1463,13 +1503,13 @@ var zeroWorkflowCommand = new Command("workflow").description("Manage workflows"
|
|
|
1463
1503
|
Examples:
|
|
1464
1504
|
Create under an agent: zero workflow create my-workflow --agent <agent-id> --instruction "Do things"
|
|
1465
1505
|
List workflows: zero workflow list
|
|
1466
|
-
View workflow content: zero workflow view <workflow-id>
|
|
1467
|
-
Update workflow content: zero workflow edit <workflow-id> --instruction "New steps"
|
|
1468
|
-
Copy onto another agent: zero workflow copy <workflow-id> --to-agent <agent-id>
|
|
1506
|
+
View workflow content: zero workflow view <workflow> --agent <agent-id>
|
|
1507
|
+
Update workflow content: zero workflow edit <workflow> --agent <agent-id> --instruction "New steps"
|
|
1508
|
+
Copy onto another agent: zero workflow copy <workflow> --agent <source-agent-id> --to-agent <target-agent-id>
|
|
1469
1509
|
Manage triggers: zero workflow trigger --help
|
|
1470
|
-
Delete a workflow: zero workflow delete <workflow-id> -y`
|
|
1510
|
+
Delete a workflow: zero workflow delete <workflow> --agent <agent-id> -y`
|
|
1471
1511
|
);
|
|
1472
1512
|
export {
|
|
1473
1513
|
zeroWorkflowCommand
|
|
1474
1514
|
};
|
|
1475
|
-
//# sourceMappingURL=workflow-
|
|
1515
|
+
//# sourceMappingURL=workflow-F2YOTCAJ.js.map
|