@vm0/cli 9.217.0 → 9.217.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/{agent-ERBSWLZY.js → agent-YIH6PNEM.js} +5 -5
- package/{automation-W6KYCENX.js → automation-RHOPNL6S.js} +3 -3
- package/{banking-PPUSVFJQ.js → banking-67Z3D7VX.js} +3 -3
- package/{chat-3R5ABJIF.js → chat-JFH77LJN.js} +3 -3
- package/{chunk-O76AI2N5.js → chunk-3TPITAUC.js} +16 -4
- package/chunk-3TPITAUC.js.map +1 -0
- package/{chunk-G6N7QXRB.js → chunk-5ACVESXC.js} +3 -3
- package/{chunk-TKAJDWGT.js → chunk-BEGJBHUZ.js} +181 -32
- package/chunk-BEGJBHUZ.js.map +1 -0
- package/{chunk-B4YVYCNP.js → chunk-O7VY3HZA.js} +1914 -220
- package/chunk-O7VY3HZA.js.map +1 -0
- package/{chunk-B5PHHGBT.js → chunk-PVH3TQIR.js} +2 -2
- package/{chunk-66CRY7ZE.js → chunk-R3NUHZCC.js} +14 -3
- package/chunk-R3NUHZCC.js.map +1 -0
- package/{chunk-QUGHDCZQ.js → chunk-SP47PTXZ.js} +2 -2
- package/{chunk-FRP4XOHX.js → chunk-SWMSXE2M.js} +2 -2
- package/{chunk-FRP4XOHX.js.map → chunk-SWMSXE2M.js.map} +1 -1
- package/{chunk-CGGDMYJR.js → chunk-VNVOZD2I.js} +3 -3
- package/{chunk-HBSUM372.js → chunk-W5UJSC2D.js} +2 -2
- package/{computer-use-XVETFRXU.js → computer-use-P5UAAMVN.js} +2 -2
- package/{connector-5Q3B37PN.js → connector-HRHGA3XE.js} +4 -4
- package/{credit-KNBDBYJB.js → credit-UT6Q25VJ.js} +3 -3
- package/{developer-support-RSGBOGAF.js → developer-support-3HHCKM45.js} +3 -3
- package/{doctor-5WYECMCQ.js → doctor-YU4GKA27.js} +40 -7
- package/doctor-YU4GKA27.js.map +1 -0
- package/{generate-JAHTJGHR.js → generate-W254VELF.js} +5 -5
- package/{github-VE2A52PI.js → github-3YIFBVQV.js} +3 -3
- package/{goal-ZEQ2CC5O.js → goal-MRW5CDN4.js} +3 -3
- package/{host-TRFD623R.js → host-BHNFCI5J.js} +3 -3
- package/index.js +19 -19
- package/{logs-LU7Z663V.js → logs-QQIFBCG3.js} +8 -8
- package/{maps-BRFCMUY7.js → maps-I5NQSD3Z.js} +3 -3
- package/{model-KEMRYJ2I.js → model-5VPLHVX3.js} +4 -4
- package/{model-provider-RCMELAX6.js → model-provider-KVBRO7X4.js} +4 -4
- package/{org-GDC6DUTT.js → org-LBPKUI3W.js} +3 -3
- package/package.json +1 -1
- package/pexels.generated-EZDZCJII.js +83 -0
- package/pexels.generated-EZDZCJII.js.map +1 -0
- package/pexels.generated-T3VRPCPZ.js +40 -0
- package/pexels.generated-T3VRPCPZ.js.map +1 -0
- package/{phone-AP75IXA4.js → phone-EBS46537.js} +3 -3
- package/{preference-XKLJQO3H.js → preference-A2YLGHAU.js} +3 -3
- package/{resource-T6UPZ5Y6.js → resource-4OPD76TQ.js} +4 -4
- package/{search-ILDCIRYL.js → search-LUFMFZHW.js} +8 -8
- package/{secret-AVR2GOHR.js → secret-PHSWDBTL.js} +4 -4
- package/{slack-KFPHHQKL.js → slack-WROLRIGJ.js} +3 -3
- package/{telegram-APEI4GYU.js → telegram-FVXVX7SF.js} +3 -3
- package/{variable-H5N6QKDJ.js → variable-6ZVNRGVM.js} +3 -3
- package/{web-3EUABPMX.js → web-JOPIPAG5.js} +2 -2
- package/{whoami-LHX2USZO.js → whoami-BHW4HAW3.js} +5 -5
- package/{workflow-ML33WY2M.js → workflow-QUC64IOK.js} +4 -24
- package/workflow-QUC64IOK.js.map +1 -0
- package/{youtube.generated-LWJKXV2G.js → youtube.generated-JPSZAIXX.js} +5 -5
- package/youtube.generated-JPSZAIXX.js.map +1 -0
- package/{youtube.generated-OW2TE3JG.js → youtube.generated-WVCRGH3X.js} +2 -2
- package/youtube.generated-WVCRGH3X.js.map +1 -0
- package/zero.js +31 -31
- package/chunk-66CRY7ZE.js.map +0 -1
- package/chunk-B4YVYCNP.js.map +0 -1
- package/chunk-O76AI2N5.js.map +0 -1
- package/chunk-TKAJDWGT.js.map +0 -1
- package/doctor-5WYECMCQ.js.map +0 -1
- package/workflow-ML33WY2M.js.map +0 -1
- package/youtube.generated-LWJKXV2G.js.map +0 -1
- package/youtube.generated-OW2TE3JG.js.map +0 -1
- /package/{agent-ERBSWLZY.js.map → agent-YIH6PNEM.js.map} +0 -0
- /package/{automation-W6KYCENX.js.map → automation-RHOPNL6S.js.map} +0 -0
- /package/{banking-PPUSVFJQ.js.map → banking-67Z3D7VX.js.map} +0 -0
- /package/{chat-3R5ABJIF.js.map → chat-JFH77LJN.js.map} +0 -0
- /package/{chunk-G6N7QXRB.js.map → chunk-5ACVESXC.js.map} +0 -0
- /package/{chunk-B5PHHGBT.js.map → chunk-PVH3TQIR.js.map} +0 -0
- /package/{chunk-QUGHDCZQ.js.map → chunk-SP47PTXZ.js.map} +0 -0
- /package/{chunk-CGGDMYJR.js.map → chunk-VNVOZD2I.js.map} +0 -0
- /package/{chunk-HBSUM372.js.map → chunk-W5UJSC2D.js.map} +0 -0
- /package/{computer-use-XVETFRXU.js.map → computer-use-P5UAAMVN.js.map} +0 -0
- /package/{connector-5Q3B37PN.js.map → connector-HRHGA3XE.js.map} +0 -0
- /package/{credit-KNBDBYJB.js.map → credit-UT6Q25VJ.js.map} +0 -0
- /package/{developer-support-RSGBOGAF.js.map → developer-support-3HHCKM45.js.map} +0 -0
- /package/{generate-JAHTJGHR.js.map → generate-W254VELF.js.map} +0 -0
- /package/{github-VE2A52PI.js.map → github-3YIFBVQV.js.map} +0 -0
- /package/{goal-ZEQ2CC5O.js.map → goal-MRW5CDN4.js.map} +0 -0
- /package/{host-TRFD623R.js.map → host-BHNFCI5J.js.map} +0 -0
- /package/{logs-LU7Z663V.js.map → logs-QQIFBCG3.js.map} +0 -0
- /package/{maps-BRFCMUY7.js.map → maps-I5NQSD3Z.js.map} +0 -0
- /package/{model-KEMRYJ2I.js.map → model-5VPLHVX3.js.map} +0 -0
- /package/{model-provider-RCMELAX6.js.map → model-provider-KVBRO7X4.js.map} +0 -0
- /package/{org-GDC6DUTT.js.map → org-LBPKUI3W.js.map} +0 -0
- /package/{phone-AP75IXA4.js.map → phone-EBS46537.js.map} +0 -0
- /package/{preference-XKLJQO3H.js.map → preference-A2YLGHAU.js.map} +0 -0
- /package/{resource-T6UPZ5Y6.js.map → resource-4OPD76TQ.js.map} +0 -0
- /package/{search-ILDCIRYL.js.map → search-LUFMFZHW.js.map} +0 -0
- /package/{secret-AVR2GOHR.js.map → secret-PHSWDBTL.js.map} +0 -0
- /package/{slack-KFPHHQKL.js.map → slack-WROLRIGJ.js.map} +0 -0
- /package/{telegram-APEI4GYU.js.map → telegram-FVXVX7SF.js.map} +0 -0
- /package/{variable-H5N6QKDJ.js.map → variable-6ZVNRGVM.js.map} +0 -0
- /package/{web-3EUABPMX.js.map → web-JOPIPAG5.js.map} +0 -0
- /package/{whoami-LHX2USZO.js.map → whoami-BHW4HAW3.js.map} +0 -0
|
@@ -5,12 +5,12 @@ import {
|
|
|
5
5
|
isInteractive,
|
|
6
6
|
promptConfirm
|
|
7
7
|
} from "./chunk-JFY6GK7Y.js";
|
|
8
|
+
import "./chunk-LTDQISD7.js";
|
|
8
9
|
import {
|
|
9
10
|
deleteZeroVariable,
|
|
10
11
|
listZeroVariables,
|
|
11
12
|
setZeroVariable
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-LTDQISD7.js";
|
|
13
|
+
} from "./chunk-BEGJBHUZ.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-6ZVNRGVM.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire as __createRequire } from "node:module";
|
|
3
3
|
const require = __createRequire(import.meta.url);
|
|
4
|
-
import "./chunk-TKAJDWGT.js";
|
|
5
4
|
import "./chunk-LTDQISD7.js";
|
|
5
|
+
import "./chunk-BEGJBHUZ.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-JOPIPAG5.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-SP47PTXZ.js";
|
|
8
8
|
import {
|
|
9
9
|
permissionGrantsToFirewallPolicies
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-R3NUHZCC.js";
|
|
11
|
+
import "./chunk-LTDQISD7.js";
|
|
11
12
|
import {
|
|
12
13
|
getZeroAgentUserConnectors,
|
|
13
14
|
listZeroConnectors,
|
|
14
15
|
listZeroUserPermissionGrants
|
|
15
|
-
} from "./chunk-
|
|
16
|
-
import "./chunk-LTDQISD7.js";
|
|
16
|
+
} from "./chunk-BEGJBHUZ.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-BHW4HAW3.js.map
|
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
isInteractive,
|
|
13
13
|
promptConfirm
|
|
14
14
|
} from "./chunk-JFY6GK7Y.js";
|
|
15
|
+
import "./chunk-LTDQISD7.js";
|
|
15
16
|
import {
|
|
16
17
|
copyWorkflow,
|
|
17
18
|
createWorkflow,
|
|
@@ -24,11 +25,9 @@ import {
|
|
|
24
25
|
getWorkflowTrigger,
|
|
25
26
|
listWorkflowTriggers,
|
|
26
27
|
listWorkflows,
|
|
27
|
-
runWorkflow,
|
|
28
28
|
updateWorkflow,
|
|
29
29
|
updateWorkflowTrigger
|
|
30
|
-
} from "./chunk-
|
|
31
|
-
import "./chunk-LTDQISD7.js";
|
|
30
|
+
} from "./chunk-BEGJBHUZ.js";
|
|
32
31
|
import {
|
|
33
32
|
withErrorHandler
|
|
34
33
|
} from "./chunk-3F4RFLPX.js";
|
|
@@ -391,24 +390,6 @@ Examples:
|
|
|
391
390
|
)
|
|
392
391
|
);
|
|
393
392
|
|
|
394
|
-
// src/commands/zero/workflow/run.ts
|
|
395
|
-
init_esm_shims();
|
|
396
|
-
var runCommand = new Command().name("run").description("Run a workflow once in a new chat thread").argument("<workflowId>", "Workflow ID").addHelpText(
|
|
397
|
-
"after",
|
|
398
|
-
`
|
|
399
|
-
Examples:
|
|
400
|
-
zero workflow run <workflow-id>`
|
|
401
|
-
).action(
|
|
402
|
-
withErrorHandler(async (workflowId) => {
|
|
403
|
-
const result = await runWorkflow(workflowId);
|
|
404
|
-
console.log(source_default.green("\u2713 Workflow run started"));
|
|
405
|
-
console.log(` Run ID: ${result.runId}`);
|
|
406
|
-
console.log(` Chat Thread: ${result.chatThreadId}`);
|
|
407
|
-
console.log();
|
|
408
|
-
console.log(`Stream logs: zero logs ${result.runId}`);
|
|
409
|
-
})
|
|
410
|
-
);
|
|
411
|
-
|
|
412
393
|
// src/commands/zero/workflow/trigger/index.ts
|
|
413
394
|
init_esm_shims();
|
|
414
395
|
|
|
@@ -1417,7 +1398,7 @@ Examples:
|
|
|
1417
1398
|
);
|
|
1418
1399
|
|
|
1419
1400
|
// src/commands/zero/workflow/index.ts
|
|
1420
|
-
var zeroWorkflowCommand = new Command("workflow").description("Manage workflows").addCommand(createCommand).addCommand(editCommand).addCommand(viewCommand).addCommand(listCommand).addCommand(deleteCommand).addCommand(copyCommand).addCommand(
|
|
1401
|
+
var zeroWorkflowCommand = new Command("workflow").description("Manage workflows").addCommand(createCommand).addCommand(editCommand).addCommand(viewCommand).addCommand(listCommand).addCommand(deleteCommand).addCommand(copyCommand).addCommand(triggerCommand).addHelpText(
|
|
1421
1402
|
"after",
|
|
1422
1403
|
`
|
|
1423
1404
|
Examples:
|
|
@@ -1426,11 +1407,10 @@ Examples:
|
|
|
1426
1407
|
View workflow content: zero workflow view <workflow-id>
|
|
1427
1408
|
Update workflow content: zero workflow edit <workflow-id> --instruction "New steps"
|
|
1428
1409
|
Copy onto another agent: zero workflow copy <workflow-id> --to-agent <agent-id>
|
|
1429
|
-
Run a workflow once: zero workflow run <workflow-id>
|
|
1430
1410
|
Manage triggers: zero workflow trigger --help
|
|
1431
1411
|
Delete a workflow: zero workflow delete <workflow-id> -y`
|
|
1432
1412
|
);
|
|
1433
1413
|
export {
|
|
1434
1414
|
zeroWorkflowCommand
|
|
1435
1415
|
};
|
|
1436
|
-
//# sourceMappingURL=workflow-
|
|
1416
|
+
//# sourceMappingURL=workflow-QUC64IOK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/zero/workflow/index.ts","../src/commands/zero/workflow/create.ts","../src/lib/skill-directory.ts","../src/commands/zero/workflow/format.ts","../src/commands/zero/workflow/edit.ts","../src/commands/zero/workflow/view.ts","../src/commands/zero/workflow/list.ts","../src/commands/zero/workflow/delete.ts","../src/commands/zero/workflow/copy.ts","../src/commands/zero/workflow/trigger/index.ts","../src/commands/zero/workflow/trigger/display.ts","../src/commands/zero/workflow/trigger/gmail-config.ts"],"sourcesContent":["import { Command } from \"commander\";\nimport { createCommand } from \"./create\";\nimport { editCommand } from \"./edit\";\nimport { viewCommand } from \"./view\";\nimport { listCommand } from \"./list\";\nimport { deleteCommand } from \"./delete\";\nimport { copyCommand } from \"./copy\";\nimport { triggerCommand } from \"./trigger\";\n\nexport const zeroWorkflowCommand = new Command(\"workflow\")\n .description(\"Manage workflows\")\n .addCommand(createCommand)\n .addCommand(editCommand)\n .addCommand(viewCommand)\n .addCommand(listCommand)\n .addCommand(deleteCommand)\n .addCommand(copyCommand)\n .addCommand(triggerCommand)\n .addHelpText(\n \"after\",\n `\nExamples:\n Create under an agent: zero workflow create my-workflow --agent <agent-id> --instruction \"Do things\"\n List workflows: zero workflow list\n View workflow content: zero workflow view <workflow-id>\n Update workflow content: zero workflow edit <workflow-id> --instruction \"New steps\"\n Copy onto another agent: zero workflow copy <workflow-id> --to-agent <agent-id>\n Manage triggers: zero workflow trigger --help\n Delete a workflow: zero workflow delete <workflow-id> -y`,\n );\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { readFileSync } from \"node:fs\";\nimport { createWorkflow } from \"../../../lib/api\";\nimport { withErrorHandler } from \"../../../lib/command\";\nimport { readSupplementaryFiles } from \"../../../lib/skill-directory\";\nimport { formatWorkflowAgentName } from \"./format\";\n\nexport const createCommand = new Command()\n .name(\"create\")\n .description(\"Create a workflow under an agent\")\n .argument(\"<name>\", \"Workflow name (lowercase alphanumeric with hyphens)\")\n .option(\n \"--agent <id>\",\n \"Agent ID to host the workflow (defaults to ZERO_AGENT_ID)\",\n )\n .option(\"--instruction <text>\", \"Workflow instruction text\")\n .option(\n \"--instruction-file <path>\",\n \"Path to a file containing the instruction\",\n )\n .option(\n \"--dir <path>\",\n \"Path to a directory of supplementary files (SKILL.md is not allowed)\",\n )\n .option(\"--display-name <name>\", \"Workflow display name\")\n .option(\"--description <text>\", \"Workflow description\")\n .option(\"--public\", \"Create as an org-public workflow\")\n .addHelpText(\n \"after\",\n `\nExamples:\n zero workflow create my-workflow --agent <agent-id> --instruction \"Summarize the inbox\"\n zero workflow create my-workflow --instruction-file ./instruction.md\n zero workflow create my-workflow --instruction \"Do things\" --dir ./workflows/my-workflow/files/\n zero workflow create shared-workflow --instruction \"Shared logic\" --public\n\nNotes:\n - A workflow belongs to exactly one agent; provide --agent or set ZERO_AGENT_ID\n - SKILL.md is synthesized from (name, description, instruction); do not include it\n - --dir uploads supplementary files only; any SKILL.md is rejected\n - New workflows are private by default\n - Copy a workflow onto another agent: zero workflow copy <workflow-id> --to-agent <agent-id>`,\n )\n .action(\n withErrorHandler(\n async (\n name: string,\n options: {\n agent?: string;\n instruction?: string;\n instructionFile?: string;\n dir?: string;\n displayName?: string;\n description?: string;\n public?: boolean;\n },\n ) => {\n const agentId = options.agent ?? process.env.ZERO_AGENT_ID;\n if (!agentId) {\n console.error(chalk.red(\"✗ --agent is required\"));\n console.error(\n chalk.dim(\n \" Provide --agent <agent-id> or run inside an agent sandbox (ZERO_AGENT_ID)\",\n ),\n );\n process.exit(1);\n }\n\n if (options.instruction && options.instructionFile) {\n console.error(\n chalk.red(\"✗ Use either --instruction or --instruction-file\"),\n );\n console.error(chalk.dim(\" Provide only one instruction source\"));\n process.exit(1);\n }\n\n const instruction = options.instructionFile\n ? readFileSync(options.instructionFile, \"utf-8\")\n : options.instruction;\n\n const files = options.dir\n ? readSupplementaryFiles(options.dir)\n : undefined;\n\n const workflow = await createWorkflow({\n agentId,\n chatThreadId: process.env.ZERO_CHAT_THREAD_ID || undefined,\n name,\n instruction,\n files,\n displayName: options.displayName,\n description: options.description,\n visibility: options.public ? \"public\" : undefined,\n });\n\n console.log(chalk.green(`✓ Workflow \"${workflow.name}\" created`));\n console.log(` ID: ${workflow.id}`);\n console.log(` Name: ${workflow.name}`);\n console.log(` Agent Name: ${formatWorkflowAgentName(workflow)}`);\n console.log(` Agent ID: ${workflow.agentId}`);\n console.log(` Visibility: ${workflow.visibility}`);\n if (files) {\n console.log(` Files: ${files.length} file(s)`);\n }\n if (workflow.displayName) {\n console.log(` Display Name: ${workflow.displayName}`);\n }\n if (workflow.description) {\n console.log(` Description: ${workflow.description}`);\n }\n console.log();\n console.log(\n `Copy onto another agent: zero workflow copy ${workflow.id} --to-agent <agent-id>`,\n );\n },\n ),\n );\n","import { readFileSync, readdirSync } from \"node:fs\";\nimport { join } from \"node:path\";\n\nconst IGNORED_NAMES = new Set([\"node_modules\", \".git\", \".DS_Store\"]);\n\n/**\n * Recursively read all supplementary files from a directory.\n *\n * Skips hidden files (starting with .), node_modules, and .git.\n * Rejects SKILL.md: it is synthesized server-side from the workflow's\n * (name, description, instruction) and must not be uploaded.\n */\nexport function readSupplementaryFiles(\n dirPath: string,\n): Array<{ path: string; content: string }> {\n const files: Array<{ path: string; content: string }> = [];\n\n function walk(dir: string, prefix: string) {\n const entries = readdirSync(dir, { withFileTypes: true });\n for (const entry of entries) {\n if (entry.name.startsWith(\".\") || IGNORED_NAMES.has(entry.name)) continue;\n\n const relPath = prefix ? `${prefix}/${entry.name}` : entry.name;\n if (entry.isDirectory()) {\n walk(join(dir, entry.name), relPath);\n } else {\n if (relPath === \"SKILL.md\") {\n throw new Error(\n \"SKILL.md is reserved and generated automatically; remove it from the directory\",\n );\n }\n files.push({\n path: relPath,\n content: readFileSync(join(dir, entry.name), \"utf-8\"),\n });\n }\n }\n }\n\n walk(dirPath, \"\");\n\n return files;\n}\n","import type { ZeroWorkflowSummary } from \"@vm0/api-contracts/contracts/zero-workflows\";\n\ntype WorkflowAgentFields = Pick<\n ZeroWorkflowSummary,\n \"agentDisplayName\" | \"agentName\" | \"agentId\"\n>;\n\nexport function formatWorkflowAgentName(workflow: WorkflowAgentFields): string {\n return workflow.agentDisplayName ?? workflow.agentName ?? \"-\";\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { readFileSync } from \"node:fs\";\nimport { updateWorkflow } from \"../../../lib/api\";\nimport { withErrorHandler } from \"../../../lib/command\";\nimport { readSupplementaryFiles } from \"../../../lib/skill-directory\";\n\nexport const editCommand = new Command()\n .name(\"edit\")\n .description(\"Update a workflow's instruction, files, or metadata\")\n .argument(\"<workflowId>\", \"Workflow ID\")\n .option(\"--instruction <text>\", \"New instruction text\")\n .option(\n \"--instruction-file <path>\",\n \"Path to a file containing the instruction\",\n )\n .option(\n \"--dir <path>\",\n \"Path to a directory of supplementary files (SKILL.md is not allowed)\",\n )\n .option(\"--display-name <name>\", \"New display name\")\n .option(\"--description <text>\", \"New description\")\n .addHelpText(\n \"after\",\n `\nExamples:\n zero workflow edit <workflow-id> --instruction \"New steps\"\n zero workflow edit <workflow-id> --instruction-file ./instruction.md\n zero workflow edit <workflow-id> --dir ./workflows/my-workflow/files/\n zero workflow edit <workflow-id> --display-name \"My Workflow\" --description \"Does things\"\n\nNotes:\n - SKILL.md is synthesized automatically; --dir uploads supplementary files only\n - At least one of --instruction, --instruction-file, --dir, --display-name, or --description is required`,\n )\n .action(\n withErrorHandler(\n async (\n workflowId: string,\n options: {\n instruction?: string;\n instructionFile?: string;\n dir?: string;\n displayName?: string;\n description?: string;\n },\n ) => {\n if (options.instruction && options.instructionFile) {\n console.error(\n chalk.red(\"✗ Use either --instruction or --instruction-file\"),\n );\n console.error(chalk.dim(\" Provide only one instruction source\"));\n process.exit(1);\n }\n\n const instruction = options.instructionFile\n ? readFileSync(options.instructionFile, \"utf-8\")\n : options.instruction;\n\n const files = options.dir\n ? readSupplementaryFiles(options.dir)\n : undefined;\n\n if (\n instruction === undefined &&\n files === undefined &&\n options.displayName === undefined &&\n options.description === undefined\n ) {\n console.error(chalk.red(\"✗ Nothing to update\"));\n console.error(\n chalk.dim(\n \" Provide --instruction, --instruction-file, --dir, --display-name, or --description\",\n ),\n );\n process.exit(1);\n }\n\n const workflow = await updateWorkflow(workflowId, {\n instruction,\n files,\n displayName: options.displayName,\n description: options.description,\n });\n\n console.log(chalk.green(`✓ Workflow \"${workflow.name}\" updated`));\n if (instruction !== undefined) {\n console.log(` Instruction: updated`);\n }\n if (files) {\n console.log(` Files: ${files.length} file(s)`);\n }\n if (options.displayName !== undefined) {\n console.log(` Display Name: ${workflow.displayName ?? \"-\"}`);\n }\n if (options.description !== undefined) {\n console.log(` Description: ${workflow.description ?? \"-\"}`);\n }\n },\n ),\n );\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { getWorkflow } from \"../../../lib/api\";\nimport { withErrorHandler } from \"../../../lib/command\";\nimport { formatWorkflowAgentName } from \"./format\";\n\nexport const viewCommand = new Command()\n .name(\"view\")\n .description(\"View a workflow\")\n .argument(\"<workflowId>\", \"Workflow ID\")\n .addHelpText(\n \"after\",\n `\nExamples:\n zero workflow view <workflow-id>`,\n )\n .action(\n withErrorHandler(async (workflowId: string) => {\n const workflow = await getWorkflow(workflowId);\n\n console.log(chalk.bold(workflow.name));\n if (workflow.displayName) console.log(chalk.dim(workflow.displayName));\n console.log();\n console.log(`ID: ${workflow.id}`);\n console.log(`Name: ${workflow.name}`);\n console.log(`Visibility: ${workflow.visibility}`);\n console.log(`Agent Name: ${formatWorkflowAgentName(workflow)}`);\n console.log(`Agent ID: ${workflow.agentId}`);\n if (workflow.displayName)\n console.log(`Display Name: ${workflow.displayName}`);\n if (workflow.description)\n console.log(`Description: ${workflow.description}`);\n\n if (workflow.files && workflow.files.length > 0) {\n console.log();\n console.log(chalk.dim(\"── Files ──\"));\n for (const f of workflow.files) {\n console.log(` ${f.path} (${f.size} bytes)`);\n }\n }\n\n console.log();\n if (workflow.instruction) {\n console.log(chalk.dim(\"── Instruction ──\"));\n console.log(workflow.instruction);\n } else {\n console.log(chalk.dim(\"No instruction\"));\n }\n }),\n );\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { listWorkflows } from \"../../../lib/api\";\nimport { withErrorHandler } from \"../../../lib/command\";\nimport { formatWorkflowAgentName } from \"./format\";\n\nexport const listCommand = new Command()\n .name(\"list\")\n .alias(\"ls\")\n .description(\"List visible workflows, optionally scoped to one agent\")\n .option(\"--agent <id>\", \"Only list workflows hosted by this agent\")\n .addHelpText(\n \"after\",\n `\nExamples:\n zero workflow list\n zero workflow list --agent <agent-id>`,\n )\n .action(\n withErrorHandler(async (options: { agent?: string }) => {\n const workflows = await listWorkflows({ agentId: options.agent });\n\n if (workflows.length === 0) {\n console.log(chalk.dim(\"No workflows found\"));\n console.log(\n chalk.dim(\n \" Create one with: zero workflow create <name> --agent <agent-id> --instruction <text>\",\n ),\n );\n return;\n }\n\n const idWidth = Math.max(\n 2,\n ...workflows.map((s) => {\n return s.id.length;\n }),\n );\n const nameWidth = Math.max(\n 4,\n ...workflows.map((s) => {\n return s.name.length;\n }),\n );\n const agentWidth = Math.max(\n 10,\n ...workflows.map((s) => {\n return formatWorkflowAgentName(s).length;\n }),\n );\n const agentIdWidth = Math.max(\n 8,\n ...workflows.map((s) => {\n return s.agentId.length;\n }),\n );\n\n const header = [\n \"ID\".padEnd(idWidth),\n \"NAME\".padEnd(nameWidth),\n \"VISIBILITY\".padEnd(10),\n \"AGENT NAME\".padEnd(agentWidth),\n \"AGENT ID\".padEnd(agentIdWidth),\n \"DESCRIPTION\",\n ].join(\" \");\n console.log(chalk.dim(header));\n\n for (const workflow of workflows) {\n const row = [\n workflow.id.padEnd(idWidth),\n workflow.name.padEnd(nameWidth),\n workflow.visibility.padEnd(10),\n formatWorkflowAgentName(workflow).padEnd(agentWidth),\n workflow.agentId.padEnd(agentIdWidth),\n workflow.description ?? \"-\",\n ].join(\" \");\n console.log(row);\n }\n }),\n );\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { deleteWorkflow, getWorkflow } from \"../../../lib/api\";\nimport { isInteractive, promptConfirm } from \"../../../lib/utils/prompt-utils\";\nimport { withErrorHandler } from \"../../../lib/command\";\n\nexport const deleteCommand = new Command()\n .name(\"delete\")\n .alias(\"rm\")\n .description(\"Delete a workflow\")\n .argument(\"<workflowId>\", \"Workflow ID\")\n .option(\"-y, --yes\", \"Skip confirmation prompt\")\n .addHelpText(\n \"after\",\n `\nExamples:\n zero workflow delete <workflow-id>\n zero workflow delete <workflow-id> -y\n\nNotes:\n - Use -y to skip confirmation in non-interactive mode`,\n )\n .action(\n withErrorHandler(async (workflowId: string, options: { yes?: boolean }) => {\n const workflow = await getWorkflow(workflowId);\n\n if (!options.yes) {\n if (!isInteractive()) {\n throw new Error(\"--yes flag is required in non-interactive mode\");\n }\n const confirmed = await promptConfirm(\n `Delete workflow '${workflow.name}'?`,\n false,\n );\n if (!confirmed) {\n console.log(chalk.dim(\"Cancelled\"));\n return;\n }\n }\n\n await deleteWorkflow(workflowId);\n console.log(chalk.green(`✓ Workflow \"${workflow.name}\" deleted`));\n }),\n );\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { copyWorkflow } from \"../../../lib/api\";\nimport { withErrorHandler } from \"../../../lib/command\";\nimport { formatWorkflowAgentName } from \"./format\";\n\nexport const copyCommand = new Command()\n .name(\"copy\")\n .description(\"Copy (fork) a workflow onto another agent\")\n .argument(\"<workflowId>\", \"Workflow ID to copy\")\n .requiredOption(\"--to-agent <agent-id>\", \"Target agent ID\")\n .addHelpText(\n \"after\",\n `\nExamples:\n zero workflow copy <workflow-id> --to-agent <agent-id>`,\n )\n .action(\n withErrorHandler(\n async (workflowId: string, options: { toAgent: string }) => {\n const workflow = await copyWorkflow(workflowId, options.toAgent);\n\n console.log(chalk.green(`✓ Workflow \"${workflow.name}\" copied`));\n console.log(` ID: ${workflow.id}`);\n console.log(` Agent Name: ${formatWorkflowAgentName(workflow)}`);\n console.log(` Agent ID: ${workflow.agentId}`);\n console.log();\n console.log(`View it: zero workflow view ${workflow.id}`);\n },\n ),\n );\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport type {\n GithubLabelAppliedSubjectFilter,\n ZeroWorkflowSchedule,\n ZeroWorkflowTriggerCreateRequest,\n ZeroWorkflowTriggerSummary,\n ZeroWorkflowTriggerUpdateRequest,\n} from \"@vm0/api-contracts/contracts/zero-workflows\";\nimport {\n createWorkflowTrigger,\n deleteWorkflowTrigger,\n disableWorkflowTrigger,\n enableWorkflowTrigger,\n getWorkflowTrigger,\n listWorkflowTriggers,\n listWorkflows,\n updateWorkflowTrigger,\n} from \"../../../../lib/api\";\nimport { withErrorHandler } from \"../../../../lib/command\";\nimport { parseDurationSeconds } from \"../../automation/duration\";\nimport {\n printWorkflowTriggerDetails,\n printWorkflowTriggersTable,\n} from \"./display\";\nimport {\n buildGmailLabelAppliedEventConfig,\n buildGmailNewMessageEventConfig,\n hasGmailLabelOption,\n hasGmailTriggerOptions,\n type GmailTriggerOptions,\n} from \"./gmail-config\";\n\ninterface AddOptions extends GmailTriggerOptions {\n readonly expr?: string;\n readonly at?: string;\n readonly every?: string;\n readonly timezone?: string;\n readonly agent?: string;\n readonly subject?: string;\n readonly actor?: string;\n readonly calendarId?: string;\n}\n\ninterface UpdateOptions extends GmailTriggerOptions {\n readonly expr?: string;\n readonly at?: string;\n readonly every?: string;\n readonly timezone?: string;\n readonly subject?: string;\n readonly actor?: string;\n}\n\ninterface WorkflowRefOptions {\n readonly agent?: string;\n}\n\nconst UUID_RE =\n /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\nconst SCHEDULE_KINDS = [\"cron\", \"once\", \"loop\"] as const;\nconst EVENT_KINDS = [\n \"gmail-new-message\",\n \"gmail-label-applied\",\n \"github-label-applied\",\n \"google-calendar-event-created\",\n \"webhook\",\n] as const;\nconst TRIGGER_KINDS = [...SCHEDULE_KINDS, ...EVENT_KINDS] as const;\nconst EXACTLY_ONE_FLAG_MESSAGE =\n \"Provide exactly one of --expr (cron), --at (once), --every (loop), Gmail match options, --label, --subject, or --actor\";\n\nfunction addGmailTriggerOptions(command: Command): Command {\n return command\n .option(\n \"--config <path>\",\n \"Path to a Gmail new message trigger config JSON\",\n )\n .option(\"--label <name>\", \"Label name for label-applied triggers\")\n .option(\"--from-contains <text>\", \"Require the From header to contain text\")\n .option(\n \"--from-not-contains <text>\",\n \"Require the From header not to contain text\",\n )\n .option(\n \"--subject-contains <text>\",\n \"Require the Subject header to contain text\",\n )\n .option(\n \"--subject-not-contains <text>\",\n \"Require the Subject header not to contain text\",\n )\n .option(\n \"--body-contains <text>\",\n \"Require the message body to contain text\",\n )\n .option(\n \"--body-not-contains <text>\",\n \"Require the message body not to contain text\",\n )\n .option(\"--to-contains <text>\", \"Require the To header to contain text\")\n .option(\n \"--to-not-contains <text>\",\n \"Require the To header not to contain text\",\n )\n .option(\"--cc-contains <text>\", \"Require the Cc header to contain text\")\n .option(\n \"--cc-not-contains <text>\",\n \"Require the Cc header not to contain text\",\n );\n}\n\nfunction addGithubTriggerOptions(command: Command): Command {\n return command\n .option(\n \"--subject <subject>\",\n \"GitHub subject filter for github-label-applied: both | issues | pull-requests\",\n )\n .option(\n \"--actor <actor>\",\n \"GitHub actor filter for github-label-applied: me | anyone\",\n );\n}\n\nfunction timezoneOrUtc(timezone: string | undefined): string {\n return timezone ?? \"UTC\";\n}\n\nfunction assertValidTimezone(timezone: string): void {\n new Intl.DateTimeFormat(\"en-US\", { timeZone: timezone });\n}\n\nfunction hasExplicitOffset(value: string): boolean {\n return /(?:Z|[+-]\\d{2}:?\\d{2})$/i.test(value);\n}\n\nfunction parseLocalDateTime(value: string): {\n readonly year: number;\n readonly month: number;\n readonly day: number;\n readonly hour: number;\n readonly minute: number;\n readonly second: number;\n readonly millisecond: number;\n} {\n const match = value.match(\n /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2})(?::(\\d{2})(?:\\.(\\d{1,3}))?)?$/,\n );\n if (!match) {\n throw new Error(\n `Invalid at time: \"${value}\". Use ISO datetime, e.g. 2026-06-10T09:00 or 2026-06-10T09:00:00Z`,\n );\n }\n return {\n year: Number(match[1]),\n month: Number(match[2]),\n day: Number(match[3]),\n hour: Number(match[4]),\n minute: Number(match[5]),\n second: match[6] ? Number(match[6]) : 0,\n millisecond: match[7] ? Number(match[7].padEnd(3, \"0\")) : 0,\n };\n}\n\nfunction zonedParts(instant: Date, timezone: string) {\n const parts = new Intl.DateTimeFormat(\"en-US\", {\n timeZone: timezone,\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n hourCycle: \"h23\",\n }).formatToParts(instant);\n const values = new Map<string, string>();\n for (const part of parts) {\n if (part.type !== \"literal\") {\n values.set(part.type, part.value);\n }\n }\n return {\n year: Number(values.get(\"year\")),\n month: Number(values.get(\"month\")),\n day: Number(values.get(\"day\")),\n hour: Number(values.get(\"hour\")),\n minute: Number(values.get(\"minute\")),\n second: Number(values.get(\"second\")),\n };\n}\n\nfunction wallTimeToUtcIso(value: string, timezone: string): string {\n assertValidTimezone(timezone);\n if (hasExplicitOffset(value)) {\n const instant = new Date(value);\n if (Number.isNaN(instant.getTime())) {\n throw new Error(`Invalid at time: \"${value}\"`);\n }\n return instant.toISOString();\n }\n\n const target = parseLocalDateTime(value);\n const targetUtc = Date.UTC(\n target.year,\n target.month - 1,\n target.day,\n target.hour,\n target.minute,\n target.second,\n target.millisecond,\n );\n let guess = targetUtc;\n for (let i = 0; i < 3; i++) {\n const parts = zonedParts(new Date(guess), timezone);\n const renderedUtc = Date.UTC(\n parts.year,\n parts.month - 1,\n parts.day,\n parts.hour,\n parts.minute,\n parts.second,\n target.millisecond,\n );\n guess += targetUtc - renderedUtc;\n }\n\n const result = new Date(guess);\n const rendered = zonedParts(result, timezone);\n if (\n rendered.year !== target.year ||\n rendered.month !== target.month ||\n rendered.day !== target.day ||\n rendered.hour !== target.hour ||\n rendered.minute !== target.minute ||\n rendered.second !== target.second\n ) {\n throw new Error(\n `Invalid at time for ${timezone}: \"${value}\". The local time does not exist`,\n );\n }\n return result.toISOString();\n}\n\nfunction buildSchedule(\n kind: string,\n options: UpdateOptions,\n): ZeroWorkflowSchedule {\n switch (kind) {\n case \"cron\":\n if (!options.expr) {\n throw new Error(\n 'cron triggers require --expr (e.g. --expr \"0 9 * * *\")',\n );\n }\n return {\n type: \"cron\",\n cronExpression: options.expr,\n timezone: timezoneOrUtc(options.timezone),\n };\n case \"once\": {\n if (!options.at) {\n throw new Error(\n 'once triggers require --at (e.g. --at \"2026-06-10T09:00\")',\n );\n }\n const timezone = timezoneOrUtc(options.timezone);\n return {\n type: \"once\",\n atTime: wallTimeToUtcIso(options.at, timezone),\n timezone,\n };\n }\n case \"loop\":\n if (!options.every) {\n throw new Error(\"loop triggers require --every (e.g. --every 15m)\");\n }\n return {\n type: \"loop\",\n intervalSeconds: parseDurationSeconds(options.every),\n };\n default:\n throw new Error(\n `Unknown trigger kind: \"${kind}\". Use one of: ${TRIGGER_KINDS.join(\", \")}`,\n );\n }\n}\n\nfunction hasScheduleAddOptions(options: AddOptions): boolean {\n return (\n options.expr !== undefined ||\n options.at !== undefined ||\n options.every !== undefined ||\n options.timezone !== undefined\n );\n}\n\nfunction hasGithubTriggerOptions(options: AddOptions | UpdateOptions): boolean {\n return options.subject !== undefined || options.actor !== undefined;\n}\n\nfunction hasCalendarTriggerOptions(options: AddOptions): boolean {\n return options.calendarId !== undefined;\n}\n\nfunction hasEventAddOptions(options: AddOptions): boolean {\n return (\n hasGmailTriggerOptions(options) ||\n hasGmailLabelOption(options) ||\n hasGithubTriggerOptions(options) ||\n hasCalendarTriggerOptions(options)\n );\n}\n\nfunction assertNoScheduleAddOptions(options: AddOptions): void {\n if (hasScheduleAddOptions(options)) {\n throw new Error(\n \"--expr, --at, --every, and --timezone only apply to schedule triggers\",\n );\n }\n}\n\nfunction assertNoGithubTriggerOptions(\n options: AddOptions,\n message = \"GitHub trigger flags only apply to GitHub event triggers\",\n): void {\n if (hasGithubTriggerOptions(options)) {\n throw new Error(message);\n }\n}\n\nfunction assertNoCalendarTriggerOptions(options: AddOptions): void {\n if (hasCalendarTriggerOptions(options)) {\n throw new Error(\n \"Google Calendar trigger flags only apply to Google Calendar event triggers\",\n );\n }\n}\n\nfunction scheduleUpdateFlagCount(options: UpdateOptions): number {\n return [options.expr, options.at, options.every].filter((value) => {\n return value !== undefined;\n }).length;\n}\n\nfunction hasScheduleUpdateOptions(options: UpdateOptions): boolean {\n return scheduleUpdateFlagCount(options) > 0 || options.timezone !== undefined;\n}\n\nfunction parseGithubSubject(\n value: string | undefined,\n fallback: GithubLabelAppliedSubjectFilter = \"both\",\n): GithubLabelAppliedSubjectFilter {\n if (value === undefined) {\n return fallback;\n }\n switch (value) {\n case \"both\":\n case \"issues\":\n return value;\n case \"pull-requests\":\n return \"pull_requests\";\n default:\n throw new Error(\n `Invalid --subject \"${value}\". Use one of: both, issues, pull-requests`,\n );\n }\n}\n\nfunction parseGithubActor(\n value: string | undefined,\n fallback: \"me\" | \"anyone\" = \"me\",\n): \"me\" | \"anyone\" {\n if (value === undefined) {\n return fallback;\n }\n if (value === \"me\" || value === \"anyone\") {\n return value;\n }\n throw new Error(`Invalid --actor \"${value}\". Use one of: me, anyone`);\n}\n\nfunction buildGithubLabelAppliedEventConfig(\n options: AddOptions | UpdateOptions,\n existing?: Extract<\n ZeroWorkflowTriggerSummary,\n { readonly kind: \"event\"; readonly eventType: \"github-label-applied\" }\n >,\n) {\n const labelName = options.label?.trim() ?? existing?.eventConfig.labelName;\n if (!labelName) {\n throw new Error(\n 'github-label-applied triggers require --label \"Label name\"',\n );\n }\n\n return {\n provider: \"github\" as const,\n event: \"label_applied\" as const,\n labelName,\n filters: {\n subject: parseGithubSubject(\n options.subject,\n existing?.eventConfig.filters.subject ?? \"both\",\n ),\n actor: {\n type: parseGithubActor(\n options.actor,\n existing?.eventConfig.filters.actor.type ?? \"me\",\n ),\n },\n },\n };\n}\n\nfunction buildGmailNewMessageCreateRequest(\n options: AddOptions,\n): ZeroWorkflowTriggerCreateRequest {\n assertNoScheduleAddOptions(options);\n if (hasGmailLabelOption(options)) {\n throw new Error(\"--label only applies to label-applied event triggers\");\n }\n assertNoGithubTriggerOptions(options);\n assertNoCalendarTriggerOptions(options);\n return {\n kind: \"event\",\n eventType: \"gmail-new-message\",\n eventConfig: buildGmailNewMessageEventConfig(options),\n };\n}\n\nfunction buildGmailLabelAppliedCreateRequest(\n options: AddOptions,\n): ZeroWorkflowTriggerCreateRequest {\n assertNoScheduleAddOptions(options);\n if (hasGmailTriggerOptions(options)) {\n throw new Error(\n \"Gmail match flags and --config only apply to gmail-new-message triggers\",\n );\n }\n assertNoGithubTriggerOptions(options);\n assertNoCalendarTriggerOptions(options);\n return {\n kind: \"event\",\n eventType: \"gmail-label-applied\",\n eventConfig: buildGmailLabelAppliedEventConfig(options),\n };\n}\n\nfunction buildGithubLabelAppliedCreateRequest(\n options: AddOptions,\n): ZeroWorkflowTriggerCreateRequest {\n assertNoScheduleAddOptions(options);\n if (hasGmailTriggerOptions(options)) {\n throw new Error(\n \"Gmail match flags and --config only apply to Gmail event triggers\",\n );\n }\n assertNoCalendarTriggerOptions(options);\n return {\n kind: \"event\",\n eventType: \"github-label-applied\",\n eventConfig: buildGithubLabelAppliedEventConfig(options),\n };\n}\n\nfunction buildGoogleCalendarEventCreatedCreateRequest(\n options: AddOptions,\n): ZeroWorkflowTriggerCreateRequest {\n assertNoScheduleAddOptions(options);\n if (\n hasGmailTriggerOptions(options) ||\n hasGmailLabelOption(options) ||\n hasGithubTriggerOptions(options)\n ) {\n throw new Error(\n \"Gmail and GitHub trigger flags only apply to their event triggers\",\n );\n }\n return {\n kind: \"event\",\n eventType: \"google-calendar-event-created\",\n eventConfig: {\n provider: \"google-calendar\",\n event: \"event_created\",\n calendarId: options.calendarId?.trim() || \"primary\",\n },\n };\n}\n\nfunction buildWebhookCreateRequest(\n options: AddOptions,\n): ZeroWorkflowTriggerCreateRequest {\n assertNoScheduleAddOptions(options);\n if (hasEventAddOptions(options)) {\n throw new Error(\"Event trigger flags only apply to event triggers\");\n }\n return {\n kind: \"event\",\n eventType: \"webhook-received\",\n eventConfig: {\n provider: \"webhook\",\n event: \"received\",\n auth: { mode: \"hmac-sha256\" },\n },\n };\n}\n\nfunction buildScheduleCreateRequest(\n kind: string,\n options: AddOptions,\n): ZeroWorkflowTriggerCreateRequest {\n if (hasEventAddOptions(options)) {\n throw new Error(\"Event trigger flags only apply to event triggers\");\n }\n return { schedule: buildSchedule(kind, options) };\n}\n\nfunction buildCreateRequest(\n kind: string,\n options: AddOptions,\n): ZeroWorkflowTriggerCreateRequest {\n switch (kind) {\n case \"gmail-new-message\":\n return buildGmailNewMessageCreateRequest(options);\n case \"gmail-label-applied\":\n return buildGmailLabelAppliedCreateRequest(options);\n case \"github-label-applied\":\n return buildGithubLabelAppliedCreateRequest(options);\n case \"google-calendar-event-created\":\n return buildGoogleCalendarEventCreatedCreateRequest(options);\n case \"webhook\":\n return buildWebhookCreateRequest(options);\n default:\n return buildScheduleCreateRequest(kind, options);\n }\n}\n\nfunction buildEventUpdate(\n options: UpdateOptions,\n existing: Extract<ZeroWorkflowTriggerSummary, { readonly kind: \"event\" }>,\n): ZeroWorkflowTriggerUpdateRequest {\n const hasGmailOptions = hasGmailTriggerOptions(options);\n const hasLabelOption = hasGmailLabelOption(options);\n const hasGithubOptions = hasGithubTriggerOptions(options);\n\n if (existing.eventType === \"google-calendar-event-created\") {\n throw new Error(\"Google Calendar event triggers cannot be updated\");\n }\n\n if (existing.eventType === \"github-label-applied\") {\n if (hasGmailOptions) {\n throw new Error(\"Gmail match flags only apply to Gmail event triggers\");\n }\n if (!hasLabelOption && !hasGithubOptions) {\n throw new Error(\n \"Provide --label, --subject, or --actor for github-label-applied triggers\",\n );\n }\n return {\n eventConfig: buildGithubLabelAppliedEventConfig(options, existing),\n };\n }\n\n if (hasGithubOptions) {\n throw new Error(\"GitHub trigger flags only apply to GitHub event triggers\");\n }\n\n if (existing.eventType === \"gmail-label-applied\") {\n if (!hasLabelOption || hasGmailOptions) {\n throw new Error(\"Use --label for gmail-label-applied triggers\");\n }\n return { eventConfig: buildGmailLabelAppliedEventConfig(options) };\n }\n\n if (!hasGmailOptions || hasLabelOption) {\n throw new Error(\"Use Gmail match options for gmail-new-message triggers\");\n }\n return { eventConfig: buildGmailNewMessageEventConfig(options) };\n}\n\nfunction buildScheduleUpdate(\n options: UpdateOptions,\n): ZeroWorkflowTriggerUpdateRequest {\n const hasGmailOptions = hasGmailTriggerOptions(options);\n const hasLabelOption = hasGmailLabelOption(options);\n if (hasGmailOptions || hasLabelOption) {\n throw new Error(\"Gmail trigger flags only apply to Gmail event triggers\");\n }\n const flagCount = scheduleUpdateFlagCount(options);\n if (flagCount !== 1) {\n throw new Error(EXACTLY_ONE_FLAG_MESSAGE);\n }\n if (options.timezone && !options.expr && !options.at) {\n throw new Error(\"--timezone only applies to --expr and --at\");\n }\n if (options.expr) {\n return { schedule: buildSchedule(\"cron\", options) };\n }\n if (options.at) {\n return { schedule: buildSchedule(\"once\", options) };\n }\n return { schedule: buildSchedule(\"loop\", options) };\n}\n\nfunction buildUpdate(\n options: UpdateOptions,\n existing: ZeroWorkflowTriggerSummary,\n): ZeroWorkflowTriggerUpdateRequest {\n const hasEventOptions =\n hasGmailTriggerOptions(options) ||\n hasGmailLabelOption(options) ||\n hasGithubTriggerOptions(options);\n if (hasScheduleUpdateOptions(options) && hasEventOptions) {\n throw new Error(\"Use either schedule flags or event trigger options\");\n }\n if (hasGmailTriggerOptions(options) && hasGmailLabelOption(options)) {\n throw new Error(\"Use either Gmail match options or --label\");\n }\n\n if (existing.kind === \"event\") {\n if (hasScheduleUpdateOptions(options)) {\n throw new Error(\"Schedule flags only apply to schedule triggers\");\n }\n return buildEventUpdate(options, existing);\n }\n\n if (hasGithubTriggerOptions(options)) {\n throw new Error(\"GitHub trigger flags only apply to GitHub event triggers\");\n }\n return buildScheduleUpdate(options);\n}\n\nasync function resolveWorkflowId(\n ref: string,\n options: WorkflowRefOptions,\n): Promise<string> {\n if (UUID_RE.test(ref)) {\n return ref;\n }\n\n const agentId = options.agent ?? process.env.ZERO_AGENT_ID;\n const workflows = await listWorkflows(agentId ? { agentId } : {});\n const matches = workflows.filter((workflow) => {\n return workflow.name === ref;\n });\n if (matches.length === 0) {\n const hint = agentId\n ? ` under agent \"${agentId}\"`\n : \". Provide --agent <agent-id> or use the workflow ID\";\n throw new Error(`Workflow not found: \"${ref}\"${hint}`);\n }\n if (matches.length > 1) {\n throw new Error(\n `Ambiguous workflow name: \"${ref}\". Provide --agent <agent-id> or use the workflow ID`,\n );\n }\n return matches[0]!.id;\n}\n\nconst addCommand = addGithubTriggerOptions(\n addGmailTriggerOptions(\n new Command()\n .name(\"add\")\n .description(\"Add a trigger to a workflow\")\n .argument(\"<workflow>\", \"Workflow ID or name\")\n .argument(\"<kind>\", `Trigger type: ${TRIGGER_KINDS.join(\" | \")}`)\n .option(\"--expr <expression>\", 'Cron expression for kind \"cron\"')\n .option(\"--at <iso-time>\", 'Fire time for kind \"once\"')\n .option(\n \"--every <duration>\",\n 'Interval for kind \"loop\" (e.g. 15m, 1h, 90s)',\n )\n .option(\n \"-z, --timezone <tz>\",\n \"IANA timezone for cron/once (default: UTC)\",\n ),\n ),\n)\n .option(\n \"--calendar-id <id>\",\n \"Google Calendar ID for google-calendar-event-created (default: primary)\",\n )\n .option(\"--agent <id>\", \"Agent ID for resolving a workflow name\")\n .addHelpText(\n \"after\",\n `\nExamples:\n zero workflow trigger add tell-a-joke cron --expr \"0 9 * * *\" -z Asia/Shanghai\n zero workflow trigger add tell-a-joke once --at \"2026-06-10T09:00\" -z Asia/Shanghai\n zero workflow trigger add tell-a-joke loop --every 15m\n zero workflow trigger add triage gmail-new-message --from-contains \"@example.com\"\n zero workflow trigger add triage gmail-new-message --config ./gmail-trigger.json\n zero workflow trigger add triage gmail-label-applied --label \"Support\"\n zero workflow trigger add triage github-label-applied --label \"triage\" --subject both --actor me\n zero workflow trigger add triage google-calendar-event-created\n zero workflow trigger add triage webhook\n\nNotes:\n - Workflow names resolve under --agent, then ZERO_AGENT_ID, then all visible workflows\n - Gmail triggers match all inbound messages when no text match rules are provided\n - GitHub label triggers require the GitHub App installation in the workspace\n - Webhook triggers print the signing secret only once after creation\n - Use the workflow ID when a name is ambiguous`,\n )\n .action(\n withErrorHandler(\n async (workflowRef: string, kind: string, options: AddOptions) => {\n if (\n options.timezone &&\n kind !== \"cron\" &&\n kind !== \"once\" &&\n kind !== \"gmail-new-message\"\n ) {\n throw new Error(\"--timezone only applies to cron and once triggers\");\n }\n const workflowId = await resolveWorkflowId(workflowRef, options);\n const body = buildCreateRequest(kind, options);\n const trigger = await createWorkflowTrigger(workflowId, body);\n\n console.log(\n chalk.green(`✓ Trigger added to workflow \"${workflowRef}\"`),\n );\n printWorkflowTriggerDetails(trigger, { workflowRef });\n },\n ),\n );\n\nconst updateCommand = addGithubTriggerOptions(\n addGmailTriggerOptions(\n new Command()\n .name(\"update\")\n .description(\n \"Replace a workflow trigger's schedule or Gmail match config\",\n )\n .argument(\"<trigger>\", \"Workflow trigger ID\")\n .option(\"--expr <expression>\", 'New cron schedule (e.g. \"0 9 * * *\")')\n .option(\"--at <iso-time>\", 'New one-time fire (e.g. \"2026-06-10T09:00\")')\n .option(\"--every <duration>\", \"New loop interval (e.g. 15m, 1h, 90s)\")\n .option(\"-z, --timezone <tz>\", \"IANA timezone for --expr / --at\"),\n ),\n)\n .addHelpText(\n \"after\",\n `\nExamples:\n zero workflow trigger update 22222222-2222-4222-8222-222222222222 --expr \"0 9 * * *\" -z Asia/Shanghai\n zero workflow trigger update 22222222-2222-4222-8222-222222222222 --at \"2026-06-10T09:00\" -z UTC\n zero workflow trigger update 22222222-2222-4222-8222-222222222222 --every 10m\n zero workflow trigger update 22222222-2222-4222-8222-222222222222 --from-contains \"@example.com\"\n zero workflow trigger update 22222222-2222-4222-8222-222222222222 --config ./gmail-trigger.json\n zero workflow trigger update 22222222-2222-4222-8222-222222222222 --label \"Support\"\n zero workflow trigger update 22222222-2222-4222-8222-222222222222 --actor anyone`,\n )\n .action(\n withErrorHandler(async (id: string, options: UpdateOptions) => {\n const existing = await getWorkflowTrigger(id);\n const trigger = await updateWorkflowTrigger(\n id,\n buildUpdate(options, existing),\n );\n\n console.log(chalk.green(`✓ Trigger ${trigger.id} updated`));\n printWorkflowTriggerDetails(trigger);\n }),\n );\n\nconst listCommand = new Command()\n .name(\"list\")\n .alias(\"ls\")\n .description(\"List a workflow's triggers\")\n .argument(\"<workflow>\", \"Workflow ID or name\")\n .option(\"--agent <id>\", \"Agent ID for resolving a workflow name\")\n .addHelpText(\n \"after\",\n `\nExamples:\n zero workflow trigger list tell-a-joke\n zero workflow trigger list tell-a-joke --agent <agent-id>`,\n )\n .action(\n withErrorHandler(\n async (workflowRef: string, options: WorkflowRefOptions) => {\n const workflowId = await resolveWorkflowId(workflowRef, options);\n const triggers = await listWorkflowTriggers(workflowId);\n\n if (triggers.length === 0) {\n console.log(chalk.dim(\"No triggers\"));\n console.log(\n chalk.dim(\n ` Add one with: zero workflow trigger add ${workflowRef} cron --expr \"0 9 * * *\"`,\n ),\n );\n return;\n }\n\n printWorkflowTriggersTable(triggers);\n },\n ),\n );\n\nconst showCommand = new Command()\n .name(\"show\")\n .description(\"Show a workflow trigger\")\n .argument(\"<trigger>\", \"Workflow trigger ID\")\n .action(\n withErrorHandler(async (id: string) => {\n const trigger = await getWorkflowTrigger(id);\n printWorkflowTriggerDetails(trigger);\n }),\n );\n\nconst rmCommand = new Command()\n .name(\"rm\")\n .alias(\"remove\")\n .description(\"Remove a workflow trigger\")\n .argument(\"<trigger>\", \"Workflow trigger ID\")\n .action(\n withErrorHandler(async (id: string) => {\n await deleteWorkflowTrigger(id);\n console.log(chalk.green(`✓ Trigger ${id} removed`));\n }),\n );\n\nconst enableCommand = new Command()\n .name(\"enable\")\n .description(\"Enable a workflow trigger\")\n .argument(\"<trigger>\", \"Workflow trigger ID\")\n .action(\n withErrorHandler(async (id: string) => {\n const trigger = await enableWorkflowTrigger(id);\n console.log(chalk.green(`✓ Trigger ${trigger.id} enabled`));\n }),\n );\n\nconst disableCommand = new Command()\n .name(\"disable\")\n .description(\"Disable a workflow trigger\")\n .argument(\"<trigger>\", \"Workflow trigger ID\")\n .action(\n withErrorHandler(async (id: string) => {\n const trigger = await disableWorkflowTrigger(id);\n console.log(chalk.green(`✓ Trigger ${trigger.id} disabled`));\n }),\n );\n\nexport const triggerCommand = new Command()\n .name(\"trigger\")\n .description(\"Manage a workflow's triggers\")\n .addCommand(addCommand)\n .addCommand(updateCommand)\n .addCommand(listCommand)\n .addCommand(showCommand)\n .addCommand(rmCommand)\n .addCommand(enableCommand)\n .addCommand(disableCommand)\n .addHelpText(\n \"after\",\n `\nExamples:\n Add a trigger: zero workflow trigger add <workflow> cron --expr \"0 9 * * *\"\n Add a webhook: zero workflow trigger add <workflow> webhook\n Update a schedule: zero workflow trigger update <trigger-id> --every 10m\n List triggers: zero workflow trigger list <workflow>\n Inspect a trigger: zero workflow trigger show <trigger-id>\n Pause one trigger: zero workflow trigger disable <trigger-id>`,\n );\n","import chalk from \"chalk\";\nimport type {\n GmailNewMessageEventConfig,\n ZeroWorkflowTriggerSummary,\n} from \"@vm0/api-contracts/contracts/zero-workflows\";\nimport { formatRelativeTime } from \"../../../../lib/domain/schedule-utils\";\nimport { formatDurationSeconds } from \"../../automation/duration\";\n\ntype GmailMatchRules = NonNullable<GmailNewMessageEventConfig[\"match\"]>;\ntype GmailTextMatcher = NonNullable<GmailMatchRules[\"from\"]>;\ntype GmailTextField = \"from\" | \"subject\" | \"body\" | \"to\" | \"cc\";\n\nconst GMAIL_TEXT_FIELDS: readonly GmailTextField[] = [\n \"from\",\n \"subject\",\n \"body\",\n \"to\",\n \"cc\",\n];\n\ntype WorkflowWebhookTriggerSummary = Extract<\n ZeroWorkflowTriggerSummary,\n { readonly kind: \"event\"; readonly eventType: \"webhook-received\" }\n>;\n\nfunction isWebhookTrigger(\n trigger: ZeroWorkflowTriggerSummary,\n): trigger is WorkflowWebhookTriggerSummary {\n return trigger.kind === \"event\" && trigger.eventType === \"webhook-received\";\n}\n\nfunction quote(value: string): string {\n return `\"${value}\"`;\n}\n\nfunction quoteList(values: readonly string[]): string {\n return values.map(quote).join(\", \");\n}\n\nfunction textMatcherParts(\n field: GmailTextField,\n matcher: GmailTextMatcher,\n): string[] {\n const parts: string[] = [];\n if (matcher.contains) {\n parts.push(`${field} contains ${quote(matcher.contains)}`);\n }\n if (matcher.containsAny) {\n parts.push(`${field} contains any of ${quoteList(matcher.containsAny)}`);\n }\n if (matcher.doesNotContain) {\n parts.push(`${field} does not contain ${quote(matcher.doesNotContain)}`);\n }\n if (matcher.doesNotContainAny) {\n parts.push(\n `${field} does not contain any of ${quoteList(matcher.doesNotContainAny)}`,\n );\n }\n return parts;\n}\n\nfunction formatGmailMatchSummary(config: GmailNewMessageEventConfig): string {\n const match = config.match;\n if (!match) {\n return \"all inbound messages\";\n }\n\n const parts: string[] = [];\n for (const field of GMAIL_TEXT_FIELDS) {\n const matcher = match[field];\n if (matcher) {\n parts.push(...textMatcherParts(field, matcher));\n }\n }\n return parts.length > 0 ? parts.join(\"; \") : \"all inbound messages\";\n}\n\nfunction formatGithubSubject(subject: string): string {\n if (subject === \"pull_requests\") {\n return \"pull requests\";\n }\n return subject;\n}\n\nfunction formatWorkflowTriggerEntry(\n trigger: ZeroWorkflowTriggerSummary,\n): string {\n if (trigger.kind === \"event\" && trigger.eventType === \"gmail-new-message\") {\n return `Gmail new message: ${formatGmailMatchSummary(trigger.eventConfig)}`;\n }\n if (trigger.kind === \"event\" && trigger.eventType === \"gmail-label-applied\") {\n return `Gmail label applied: ${quote(trigger.eventConfig.labelName)}`;\n }\n if (\n trigger.kind === \"event\" &&\n trigger.eventType === \"github-label-applied\"\n ) {\n return `GitHub label applied: ${quote(trigger.eventConfig.labelName)} (${formatGithubSubject(\n trigger.eventConfig.filters.subject,\n )}, actor ${trigger.eventConfig.filters.actor.type})`;\n }\n if (\n trigger.kind === \"event\" &&\n trigger.eventType === \"google-calendar-event-created\"\n ) {\n return `Google Calendar event created: ${trigger.eventConfig.calendarId}`;\n }\n if (isWebhookTrigger(trigger)) {\n return `Webhook: ${trigger.webhookUrl}`;\n }\n\n const { schedule } = trigger;\n switch (schedule.type) {\n case \"cron\":\n return `${schedule.cronExpression} (${schedule.timezone})`;\n case \"once\":\n return `at ${schedule.atTime} (${schedule.timezone})`;\n case \"loop\":\n return `every ${formatDurationSeconds(schedule.intervalSeconds)}`;\n }\n}\n\nfunction formatRunTime(value: string | null): string {\n return value ? formatRelativeTime(value) : chalk.dim(\"-\");\n}\n\nfunction signedCurlExample(trigger: WorkflowWebhookTriggerSummary): string {\n const secret = trigger.webhookSecret ?? \"<signing-secret>\";\n return [\n `BODY='{\"hello\":\"world\"}'`,\n \"TIMESTAMP=$(date +%s)\",\n `SIGNATURE=$(printf \"%s.%s\" \"$TIMESTAMP\" \"$BODY\" | openssl dgst -sha256 -hmac \"${secret}\" -hex | awk '{print $2}')`,\n `curl -X POST \"${trigger.webhookUrl}\" \\\\`,\n ' -H \"Content-Type: application/json\" \\\\',\n ' -H \"X-VM0-Timestamp: $TIMESTAMP\" \\\\',\n ' -H \"X-VM0-Signature: $SIGNATURE\" \\\\',\n ' --data \"$BODY\"',\n ].join(\"\\n\");\n}\n\nexport function printWorkflowTriggersTable(\n triggers: readonly ZeroWorkflowTriggerSummary[],\n): void {\n const idWidth = Math.max(\n 2,\n ...triggers.map((trigger) => {\n return trigger.id.length;\n }),\n );\n const scheduleWidth = Math.max(\n 7,\n ...triggers.map((trigger) => {\n return formatWorkflowTriggerEntry(trigger).length;\n }),\n );\n\n console.log(\n chalk.dim(\n [\n \"ID\".padEnd(idWidth),\n \"STATUS\".padEnd(8),\n \"TRIGGER\".padEnd(scheduleWidth),\n \"NEXT RUN\",\n ].join(\" \"),\n ),\n );\n\n for (const trigger of triggers) {\n const status = trigger.enabled\n ? chalk.green(\"enabled\")\n : chalk.yellow(\"disabled\");\n console.log(\n [\n trigger.id.padEnd(idWidth),\n status.padEnd(8 + (trigger.enabled ? 0 : 2)),\n formatWorkflowTriggerEntry(trigger).padEnd(scheduleWidth),\n formatRunTime(trigger.nextRunAt),\n ].join(\" \"),\n );\n }\n}\n\nexport function printWorkflowTriggerDetails(\n trigger: ZeroWorkflowTriggerSummary,\n options?: { readonly workflowRef?: string },\n): void {\n const status = trigger.enabled\n ? chalk.green(\"enabled\")\n : chalk.yellow(\"disabled\");\n\n console.log(`${\"Kind:\".padEnd(14)}${trigger.kind}`);\n console.log(`${\"ID:\".padEnd(14)}${trigger.id}`);\n if (options?.workflowRef) {\n console.log(`${\"Workflow:\".padEnd(14)}${options.workflowRef}`);\n }\n console.log(`${\"Status:\".padEnd(14)}${status}`);\n console.log(\n `${\"Trigger:\".padEnd(14)}${\n trigger.kind === \"event\"\n ? trigger.eventType === \"gmail-new-message\"\n ? \"Gmail new message\"\n : trigger.eventType === \"gmail-label-applied\"\n ? \"Gmail label applied\"\n : trigger.eventType === \"github-label-applied\"\n ? \"GitHub label applied\"\n : trigger.eventType === \"google-calendar-event-created\"\n ? \"Google Calendar event created\"\n : \"Webhook\"\n : formatWorkflowTriggerEntry(trigger)\n }`,\n );\n if (trigger.kind === \"event\" && trigger.eventType === \"gmail-new-message\") {\n console.log(\n `${\"Match:\".padEnd(14)}${formatGmailMatchSummary(trigger.eventConfig)}`,\n );\n }\n if (trigger.kind === \"event\" && trigger.eventType === \"gmail-label-applied\") {\n console.log(`${\"Label:\".padEnd(14)}${trigger.eventConfig.labelName}`);\n }\n if (\n trigger.kind === \"event\" &&\n trigger.eventType === \"github-label-applied\"\n ) {\n console.log(`${\"Label:\".padEnd(14)}${trigger.eventConfig.labelName}`);\n console.log(\n `${\"Subject:\".padEnd(14)}${formatGithubSubject(\n trigger.eventConfig.filters.subject,\n )}`,\n );\n console.log(\n `${\"Actor:\".padEnd(14)}${trigger.eventConfig.filters.actor.type}`,\n );\n }\n if (\n trigger.kind === \"event\" &&\n trigger.eventType === \"google-calendar-event-created\"\n ) {\n console.log(`${\"Calendar:\".padEnd(14)}${trigger.eventConfig.calendarId}`);\n }\n if (isWebhookTrigger(trigger)) {\n console.log(`${\"Webhook URL:\".padEnd(14)}${trigger.webhookUrl}`);\n console.log(\n `${\"Secret:\".padEnd(14)}${chalk.dim(`ends with ${trigger.secretLastFour}`)}`,\n );\n console.log(\n `${\"Last received:\".padEnd(14)}${formatRunTime(trigger.lastReceivedAt)}`,\n );\n if (trigger.webhookSecret) {\n console.log(\n `${\"Signing key:\".padEnd(14)}${trigger.webhookSecret} ${chalk.dim(\n \"(shown only once)\",\n )}`,\n );\n console.log(\"\");\n console.log(chalk.bold(\"Signed curl example:\"));\n console.log(signedCurlExample(trigger));\n }\n }\n console.log(`${\"Owner:\".padEnd(14)}${trigger.ownerUserId}`);\n console.log(\n `${\"Chat thread:\".padEnd(14)}${trigger.chatThreadId ?? chalk.dim(\"-\")}`,\n );\n console.log(`${\"Next run:\".padEnd(14)}${formatRunTime(trigger.nextRunAt)}`);\n console.log(`${\"Last run:\".padEnd(14)}${formatRunTime(trigger.lastRunAt)}`);\n}\n","import { readFileSync } from \"node:fs\";\nimport type {\n GmailLabelAppliedEventConfig,\n GmailNewMessageEventConfig,\n} from \"@vm0/api-contracts/contracts/zero-workflows\";\n\ntype GmailMatchRules = NonNullable<GmailNewMessageEventConfig[\"match\"]>;\ntype GmailTextMatcher = NonNullable<GmailMatchRules[\"from\"]>;\ntype GmailTextField = \"from\" | \"subject\" | \"body\" | \"to\" | \"cc\";\n\nexport interface GmailTriggerOptions {\n readonly config?: string;\n readonly label?: string;\n readonly fromContains?: string;\n readonly fromNotContains?: string;\n readonly subjectContains?: string;\n readonly subjectNotContains?: string;\n readonly bodyContains?: string;\n readonly bodyNotContains?: string;\n readonly toContains?: string;\n readonly toNotContains?: string;\n readonly ccContains?: string;\n readonly ccNotContains?: string;\n}\n\ninterface TextFlagSpec {\n readonly field: GmailTextField;\n readonly contains?: string;\n readonly doesNotContain?: string;\n}\n\nconst TEXT_FIELD_LABELS: Record<GmailTextField, string> = {\n from: \"from\",\n subject: \"subject\",\n body: \"body\",\n to: \"to\",\n cc: \"cc\",\n};\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction textFieldFromKey(key: string): GmailTextField | null {\n switch (key) {\n case \"from\":\n case \"subject\":\n case \"body\":\n case \"to\":\n case \"cc\":\n return key;\n default:\n return null;\n }\n}\n\nfunction formatFieldName(field: GmailTextField): string {\n return TEXT_FIELD_LABELS[field];\n}\n\nfunction parseNonEmptyString(value: unknown, path: string): string {\n if (typeof value !== \"string\" || value.length === 0) {\n throw new Error(`${path} must be a non-empty string`);\n }\n return value;\n}\n\nfunction parseNonEmptyStringArray(value: unknown, path: string): string[] {\n if (!Array.isArray(value) || value.length === 0) {\n throw new Error(`${path} must be a non-empty string array`);\n }\n return value.map((item, index) => {\n return parseNonEmptyString(item, `${path}[${index}]`);\n });\n}\n\nfunction parseTextMatcher(\n field: GmailTextField,\n value: unknown,\n): GmailTextMatcher {\n if (!isRecord(value)) {\n throw new Error(`${formatFieldName(field)} must be an object`);\n }\n\n const matcher: {\n contains?: string;\n containsAny?: string[];\n doesNotContain?: string;\n doesNotContainAny?: string[];\n } = {};\n\n for (const key of Object.keys(value)) {\n switch (key) {\n case \"contains\":\n matcher.contains = parseNonEmptyString(\n value[key],\n `${formatFieldName(field)}.contains`,\n );\n break;\n case \"containsAny\":\n matcher.containsAny = parseNonEmptyStringArray(\n value[key],\n `${formatFieldName(field)}.containsAny`,\n );\n break;\n case \"doesNotContain\":\n matcher.doesNotContain = parseNonEmptyString(\n value[key],\n `${formatFieldName(field)}.doesNotContain`,\n );\n break;\n case \"doesNotContainAny\":\n matcher.doesNotContainAny = parseNonEmptyStringArray(\n value[key],\n `${formatFieldName(field)}.doesNotContainAny`,\n );\n break;\n default:\n throw new Error(\n `Unsupported Gmail trigger text matcher \"${key}\" for ${formatFieldName(field)}`,\n );\n }\n }\n\n if (\n matcher.contains === undefined &&\n matcher.containsAny === undefined &&\n matcher.doesNotContain === undefined &&\n matcher.doesNotContainAny === undefined\n ) {\n throw new Error(\n `${formatFieldName(field)} must include at least one text matcher`,\n );\n }\n\n return matcher;\n}\n\nfunction parseMatch(value: unknown): GmailMatchRules | undefined {\n if (value === undefined) {\n return undefined;\n }\n if (!isRecord(value)) {\n throw new Error(\"match must be an object\");\n }\n\n const match: GmailMatchRules = {};\n for (const key of Object.keys(value)) {\n const field = textFieldFromKey(key);\n if (field === null) {\n throw new Error(\n `Unsupported Gmail trigger match field \"${key}\". Supported fields: from, subject, body, to, cc`,\n );\n }\n match[field] = parseTextMatcher(field, value[key]);\n }\n\n return Object.keys(match).length > 0 ? match : undefined;\n}\n\nfunction readConfigMatch(path: string): GmailMatchRules | undefined {\n let parsed: unknown;\n try {\n parsed = JSON.parse(readFileSync(path, \"utf-8\"));\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n throw new Error(\n `Failed to read Gmail trigger config \"${path}\": ${message}`,\n );\n }\n\n if (!isRecord(parsed)) {\n throw new Error(\"Gmail trigger config must be a JSON object\");\n }\n\n for (const key of Object.keys(parsed)) {\n if (key !== \"match\") {\n throw new Error(\n `Unsupported Gmail trigger config field \"${key}\". Use a top-level match object`,\n );\n }\n }\n\n return parseMatch(parsed.match);\n}\n\nfunction textFlagSpecs(options: GmailTriggerOptions): readonly TextFlagSpec[] {\n return [\n {\n field: \"from\",\n contains: options.fromContains,\n doesNotContain: options.fromNotContains,\n },\n {\n field: \"subject\",\n contains: options.subjectContains,\n doesNotContain: options.subjectNotContains,\n },\n {\n field: \"body\",\n contains: options.bodyContains,\n doesNotContain: options.bodyNotContains,\n },\n {\n field: \"to\",\n contains: options.toContains,\n doesNotContain: options.toNotContains,\n },\n {\n field: \"cc\",\n contains: options.ccContains,\n doesNotContain: options.ccNotContains,\n },\n ];\n}\n\nexport function hasGmailTriggerOptions(options: GmailTriggerOptions): boolean {\n return (\n options.config !== undefined ||\n textFlagSpecs(options).some((spec) => {\n return spec.contains !== undefined || spec.doesNotContain !== undefined;\n })\n );\n}\n\nexport function hasGmailLabelOption(options: GmailTriggerOptions): boolean {\n return options.label !== undefined;\n}\n\nfunction buildMatchFromFlags(\n options: GmailTriggerOptions,\n): GmailMatchRules | undefined {\n const match: GmailMatchRules = {};\n for (const spec of textFlagSpecs(options)) {\n const matcher: { contains?: string; doesNotContain?: string } = {};\n if (spec.contains !== undefined) {\n if (spec.contains.length === 0) {\n throw new Error(\n `${formatFieldName(spec.field)} contains must be non-empty`,\n );\n }\n matcher.contains = spec.contains;\n }\n if (spec.doesNotContain !== undefined) {\n if (spec.doesNotContain.length === 0) {\n throw new Error(\n `${formatFieldName(spec.field)} doesNotContain must be non-empty`,\n );\n }\n matcher.doesNotContain = spec.doesNotContain;\n }\n if (\n matcher.contains !== undefined ||\n matcher.doesNotContain !== undefined\n ) {\n match[spec.field] = matcher;\n }\n }\n return Object.keys(match).length > 0 ? match : undefined;\n}\n\nexport function buildGmailNewMessageEventConfig(\n options: GmailTriggerOptions,\n): GmailNewMessageEventConfig {\n if (\n options.config !== undefined &&\n textFlagSpecs(options).some((spec) => {\n return spec.contains !== undefined || spec.doesNotContain !== undefined;\n })\n ) {\n throw new Error(\"Use either --config or Gmail text match flags, not both\");\n }\n\n const match =\n options.config !== undefined\n ? readConfigMatch(options.config)\n : buildMatchFromFlags(options);\n\n return match\n ? { provider: \"gmail\", event: \"new_message\", match }\n : { provider: \"gmail\", event: \"new_message\" };\n}\n\nexport function buildGmailLabelAppliedEventConfig(\n options: GmailTriggerOptions,\n): GmailLabelAppliedEventConfig {\n const labelName = options.label?.trim();\n if (!labelName) {\n throw new Error(\n 'gmail-label-applied triggers require --label \"Label name\"',\n );\n }\n return { provider: \"gmail\", event: \"label_applied\", labelName };\n}\n"],"mappings":"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","names":["readFileSync","readFileSync","readFileSync","readFileSync","readFileSync","listCommand"]}
|
|
@@ -78,10 +78,6 @@ var firewallRoutingMetadata = {
|
|
|
78
78
|
"permissionName": "comment-threads.write",
|
|
79
79
|
"rule": "POST /v3/commentThreads"
|
|
80
80
|
},
|
|
81
|
-
{
|
|
82
|
-
"permissionName": "comment-threads.write",
|
|
83
|
-
"rule": "PUT /v3/commentThreads"
|
|
84
|
-
},
|
|
85
81
|
{
|
|
86
82
|
"permissionName": "comments.delete",
|
|
87
83
|
"rule": "DELETE /v3/comments"
|
|
@@ -330,6 +326,10 @@ var firewallRoutingMetadata = {
|
|
|
330
326
|
"permissionName": "videos.read",
|
|
331
327
|
"rule": "GET /v3/videos"
|
|
332
328
|
},
|
|
329
|
+
{
|
|
330
|
+
"permissionName": "videos.read",
|
|
331
|
+
"rule": "GET /v3/videos:batchGetStats"
|
|
332
|
+
},
|
|
333
333
|
{
|
|
334
334
|
"permissionName": "videos.report-abuse",
|
|
335
335
|
"rule": "POST /v3/videos/reportAbuse"
|
|
@@ -459,4 +459,4 @@ var firewallRoutingMetadata = {
|
|
|
459
459
|
export {
|
|
460
460
|
firewallRoutingMetadata
|
|
461
461
|
};
|
|
462
|
-
//# sourceMappingURL=youtube.generated-
|
|
462
|
+
//# sourceMappingURL=youtube.generated-JPSZAIXX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../packages/connectors/src/firewall-metadata/routing-details/youtube.generated.ts"],"sourcesContent":["// Auto-generated by @vm0/firewalls-generator.\n// Regenerate: cd turbo && pnpm -F @vm0/firewalls-generator generate\n//\n// DO NOT EDIT THIS FILE MANUALLY.\nimport type { FirewallRoutingMetadata } from \"../types\";\n\nexport const firewallRoutingMetadata = {\n \"type\": \"youtube\",\n \"label\": \"YouTube\",\n \"apis\": [\n {\n \"base\": \"https://youtube.googleapis.com/youtube\",\n \"routes\": [\n {\n \"permissionName\": \"abuse-reports.create\",\n \"rule\": \"POST /v3/abuseReports\"\n },\n {\n \"permissionName\": \"activities.read\",\n \"rule\": \"GET /v3/activities\"\n },\n {\n \"permissionName\": \"captions.delete\",\n \"rule\": \"DELETE /v3/captions\"\n },\n {\n \"permissionName\": \"captions.download\",\n \"rule\": \"GET /v3/captions/{id}\"\n },\n {\n \"permissionName\": \"captions.read\",\n \"rule\": \"GET /v3/captions\"\n },\n {\n \"permissionName\": \"captions.write\",\n \"rule\": \"POST /v3/captions\"\n },\n {\n \"permissionName\": \"captions.write\",\n \"rule\": \"PUT /v3/captions\"\n },\n {\n \"permissionName\": \"channel-banners.upload\",\n \"rule\": \"POST /v3/channelBanners/insert\"\n },\n {\n \"permissionName\": \"channel-sections.delete\",\n \"rule\": \"DELETE /v3/channelSections\"\n },\n {\n \"permissionName\": \"channel-sections.read\",\n \"rule\": \"GET /v3/channelSections\"\n },\n {\n \"permissionName\": \"channel-sections.write\",\n \"rule\": \"POST /v3/channelSections\"\n },\n {\n \"permissionName\": \"channel-sections.write\",\n \"rule\": \"PUT /v3/channelSections\"\n },\n {\n \"permissionName\": \"channels.read\",\n \"rule\": \"GET /v3/channels\"\n },\n {\n \"permissionName\": \"channels.write\",\n \"rule\": \"PUT /v3/channels\"\n },\n {\n \"permissionName\": \"comment-threads.read\",\n \"rule\": \"GET /v3/commentThreads\"\n },\n {\n \"permissionName\": \"comment-threads.write\",\n \"rule\": \"POST /v3/commentThreads\"\n },\n {\n \"permissionName\": \"comments.delete\",\n \"rule\": \"DELETE /v3/comments\"\n },\n {\n \"permissionName\": \"comments.moderate\",\n \"rule\": \"POST /v3/comments/markAsSpam\"\n },\n {\n \"permissionName\": \"comments.moderate\",\n \"rule\": \"POST /v3/comments/setModerationStatus\"\n },\n {\n \"permissionName\": \"comments.read\",\n \"rule\": \"GET /v3/comments\"\n },\n {\n \"permissionName\": \"comments.write\",\n \"rule\": \"POST /v3/comments\"\n },\n {\n \"permissionName\": \"comments.write\",\n \"rule\": \"PUT /v3/comments\"\n },\n {\n \"permissionName\": \"i18n-languages.read\",\n \"rule\": \"GET /v3/i18nLanguages\"\n },\n {\n \"permissionName\": \"i18n-regions.read\",\n \"rule\": \"GET /v3/i18nRegions\"\n },\n {\n \"permissionName\": \"live-broadcasts.control\",\n \"rule\": \"POST /v3/liveBroadcasts/bind\"\n },\n {\n \"permissionName\": \"live-broadcasts.control\",\n \"rule\": \"POST /v3/liveBroadcasts/cuepoint\"\n },\n {\n \"permissionName\": \"live-broadcasts.control\",\n \"rule\": \"POST /v3/liveBroadcasts/transition\"\n },\n {\n \"permissionName\": \"live-broadcasts.create\",\n \"rule\": \"POST /v3/liveBroadcasts\"\n },\n {\n \"permissionName\": \"live-broadcasts.delete\",\n \"rule\": \"DELETE /v3/liveBroadcasts\"\n },\n {\n \"permissionName\": \"live-broadcasts.read\",\n \"rule\": \"GET /v3/liveBroadcasts\"\n },\n {\n \"permissionName\": \"live-broadcasts.write\",\n \"rule\": \"PUT /v3/liveBroadcasts\"\n },\n {\n \"permissionName\": \"live-chat-bans.write\",\n \"rule\": \"POST /v3/liveChat/bans\"\n },\n {\n \"permissionName\": \"live-chat-bans.write\",\n \"rule\": \"DELETE /v3/liveChat/bans\"\n },\n {\n \"permissionName\": \"live-chat-messages.delete\",\n \"rule\": \"DELETE /v3/liveChat/messages\"\n },\n {\n \"permissionName\": \"live-chat-messages.read\",\n \"rule\": \"GET /v3/liveChat/messages\"\n },\n {\n \"permissionName\": \"live-chat-messages.read\",\n \"rule\": \"GET /v3/liveChat/messages/stream\"\n },\n {\n \"permissionName\": \"live-chat-messages.write\",\n \"rule\": \"POST /v3/liveChat/messages\"\n },\n {\n \"permissionName\": \"live-chat-messages.write\",\n \"rule\": \"POST /v3/liveChat/messages/transition\"\n },\n {\n \"permissionName\": \"live-chat-moderators.read\",\n \"rule\": \"GET /v3/liveChat/moderators\"\n },\n {\n \"permissionName\": \"live-chat-moderators.write\",\n \"rule\": \"POST /v3/liveChat/moderators\"\n },\n {\n \"permissionName\": \"live-chat-moderators.write\",\n \"rule\": \"DELETE /v3/liveChat/moderators\"\n },\n {\n \"permissionName\": \"live-streams.create\",\n \"rule\": \"POST /v3/liveStreams\"\n },\n {\n \"permissionName\": \"live-streams.delete\",\n \"rule\": \"DELETE /v3/liveStreams\"\n },\n {\n \"permissionName\": \"live-streams.read\",\n \"rule\": \"GET /v3/liveStreams\"\n },\n {\n \"permissionName\": \"live-streams.write\",\n \"rule\": \"PUT /v3/liveStreams\"\n },\n {\n \"permissionName\": \"members.read\",\n \"rule\": \"GET /v3/members\"\n },\n {\n \"permissionName\": \"membership-levels.read\",\n \"rule\": \"GET /v3/membershipsLevels\"\n },\n {\n \"permissionName\": \"playlist-images.delete\",\n \"rule\": \"DELETE /v3/playlistImages\"\n },\n {\n \"permissionName\": \"playlist-images.read\",\n \"rule\": \"GET /v3/playlistImages\"\n },\n {\n \"permissionName\": \"playlist-images.write\",\n \"rule\": \"POST /v3/playlistImages\"\n },\n {\n \"permissionName\": \"playlist-images.write\",\n \"rule\": \"PUT /v3/playlistImages\"\n },\n {\n \"permissionName\": \"playlist-items.delete\",\n \"rule\": \"DELETE /v3/playlistItems\"\n },\n {\n \"permissionName\": \"playlist-items.read\",\n \"rule\": \"GET /v3/playlistItems\"\n },\n {\n \"permissionName\": \"playlist-items.write\",\n \"rule\": \"POST /v3/playlistItems\"\n },\n {\n \"permissionName\": \"playlist-items.write\",\n \"rule\": \"PUT /v3/playlistItems\"\n },\n {\n \"permissionName\": \"playlists.delete\",\n \"rule\": \"DELETE /v3/playlists\"\n },\n {\n \"permissionName\": \"playlists.read\",\n \"rule\": \"GET /v3/playlists\"\n },\n {\n \"permissionName\": \"playlists.write\",\n \"rule\": \"POST /v3/playlists\"\n },\n {\n \"permissionName\": \"playlists.write\",\n \"rule\": \"PUT /v3/playlists\"\n },\n {\n \"permissionName\": \"search.read\",\n \"rule\": \"GET /v3/search\"\n },\n {\n \"permissionName\": \"subscriptions.delete\",\n \"rule\": \"DELETE /v3/subscriptions\"\n },\n {\n \"permissionName\": \"subscriptions.read\",\n \"rule\": \"GET /v3/subscriptions\"\n },\n {\n \"permissionName\": \"subscriptions.write\",\n \"rule\": \"POST /v3/subscriptions\"\n },\n {\n \"permissionName\": \"super-chat-events.read\",\n \"rule\": \"GET /v3/superChatEvents\"\n },\n {\n \"permissionName\": \"tests.create\",\n \"rule\": \"POST /v3/tests\"\n },\n {\n \"permissionName\": \"third-party-links.delete\",\n \"rule\": \"DELETE /v3/thirdPartyLinks\"\n },\n {\n \"permissionName\": \"third-party-links.read\",\n \"rule\": \"GET /v3/thirdPartyLinks\"\n },\n {\n \"permissionName\": \"third-party-links.write\",\n \"rule\": \"POST /v3/thirdPartyLinks\"\n },\n {\n \"permissionName\": \"third-party-links.write\",\n \"rule\": \"PUT /v3/thirdPartyLinks\"\n },\n {\n \"permissionName\": \"thumbnails.set\",\n \"rule\": \"POST /v3/thumbnails/set\"\n },\n {\n \"permissionName\": \"video-abuse-report-reasons.read\",\n \"rule\": \"GET /v3/videoAbuseReportReasons\"\n },\n {\n \"permissionName\": \"video-categories.read\",\n \"rule\": \"GET /v3/videoCategories\"\n },\n {\n \"permissionName\": \"video-trainability.read\",\n \"rule\": \"GET /v3/videoTrainability\"\n },\n {\n \"permissionName\": \"videos.create\",\n \"rule\": \"POST /v3/videos\"\n },\n {\n \"permissionName\": \"videos.delete\",\n \"rule\": \"DELETE /v3/videos\"\n },\n {\n \"permissionName\": \"videos.rate\",\n \"rule\": \"POST /v3/videos/rate\"\n },\n {\n \"permissionName\": \"videos.rating.read\",\n \"rule\": \"GET /v3/videos/getRating\"\n },\n {\n \"permissionName\": \"videos.read\",\n \"rule\": \"GET /v3/videos\"\n },\n {\n \"permissionName\": \"videos.read\",\n \"rule\": \"GET /v3/videos:batchGetStats\"\n },\n {\n \"permissionName\": \"videos.report-abuse\",\n \"rule\": \"POST /v3/videos/reportAbuse\"\n },\n {\n \"permissionName\": \"videos.write\",\n \"rule\": \"PUT /v3/videos\"\n },\n {\n \"permissionName\": \"watermarks.delete\",\n \"rule\": \"POST /v3/watermarks/unset\"\n },\n {\n \"permissionName\": \"watermarks.set\",\n \"rule\": \"POST /v3/watermarks/set\"\n }\n ]\n },\n {\n \"base\": \"https://youtube.googleapis.com/upload/youtube\",\n \"routes\": [\n {\n \"permissionName\": \"captions.write\",\n \"rule\": \"POST /v3/captions\"\n },\n {\n \"permissionName\": \"captions.write\",\n \"rule\": \"PUT /v3/captions\"\n },\n {\n \"permissionName\": \"channel-banners.upload\",\n \"rule\": \"POST /v3/channelBanners/insert\"\n },\n {\n \"permissionName\": \"channel-banners.upload\",\n \"rule\": \"PUT /v3/channelBanners/insert\"\n },\n {\n \"permissionName\": \"playlist-images.write\",\n \"rule\": \"POST /v3/playlistImages\"\n },\n {\n \"permissionName\": \"playlist-images.write\",\n \"rule\": \"PUT /v3/playlistImages\"\n },\n {\n \"permissionName\": \"thumbnails.set\",\n \"rule\": \"POST /v3/thumbnails/set\"\n },\n {\n \"permissionName\": \"thumbnails.set\",\n \"rule\": \"PUT /v3/thumbnails/set\"\n },\n {\n \"permissionName\": \"videos.create\",\n \"rule\": \"POST /v3/videos\"\n },\n {\n \"permissionName\": \"videos.create\",\n \"rule\": \"PUT /v3/videos\"\n },\n {\n \"permissionName\": \"watermarks.set\",\n \"rule\": \"POST /v3/watermarks/set\"\n },\n {\n \"permissionName\": \"watermarks.set\",\n \"rule\": \"PUT /v3/watermarks/set\"\n }\n ]\n },\n {\n \"base\": \"https://youtube.googleapis.com/resumable/upload/youtube\",\n \"routes\": [\n {\n \"permissionName\": \"captions.write\",\n \"rule\": \"POST /v3/captions\"\n },\n {\n \"permissionName\": \"captions.write\",\n \"rule\": \"PUT /v3/captions\"\n },\n {\n \"permissionName\": \"channel-banners.upload\",\n \"rule\": \"POST /v3/channelBanners/insert\"\n },\n {\n \"permissionName\": \"channel-banners.upload\",\n \"rule\": \"PUT /v3/channelBanners/insert\"\n },\n {\n \"permissionName\": \"playlist-images.write\",\n \"rule\": \"POST /v3/playlistImages\"\n },\n {\n \"permissionName\": \"playlist-images.write\",\n \"rule\": \"PUT /v3/playlistImages\"\n },\n {\n \"permissionName\": \"thumbnails.set\",\n \"rule\": \"POST /v3/thumbnails/set\"\n },\n {\n \"permissionName\": \"thumbnails.set\",\n \"rule\": \"PUT /v3/thumbnails/set\"\n },\n {\n \"permissionName\": \"videos.create\",\n \"rule\": \"POST /v3/videos\"\n },\n {\n \"permissionName\": \"videos.create\",\n \"rule\": \"PUT /v3/videos\"\n },\n {\n \"permissionName\": \"watermarks.set\",\n \"rule\": \"POST /v3/watermarks/set\"\n },\n {\n \"permissionName\": \"watermarks.set\",\n \"rule\": \"PUT /v3/watermarks/set\"\n }\n ]\n }\n ]\n} as const satisfies FirewallRoutingMetadata;\n"],"mappings":";;;;;;;;AAAA;AAMO,IAAM,0BAA0B;AAAA,EACrC,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,QAAQ;AAAA,IACN;AAAA,MACE,QAAQ;AAAA,MACR,UAAU;AAAA,QACR;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,QAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,kBAAkB;AAAA,UAClB,Q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","names":[]}
|
|
@@ -66,7 +66,7 @@ var firewallPermissionMetadata = {
|
|
|
66
66
|
},
|
|
67
67
|
{
|
|
68
68
|
"name": "comment-threads.write",
|
|
69
|
-
"description": "Create
|
|
69
|
+
"description": "Create YouTube comment threads."
|
|
70
70
|
},
|
|
71
71
|
{
|
|
72
72
|
"name": "comments.delete",
|
|
@@ -406,4 +406,4 @@ var firewallPermissionMetadata = {
|
|
|
406
406
|
export {
|
|
407
407
|
firewallPermissionMetadata
|
|
408
408
|
};
|
|
409
|
-
//# sourceMappingURL=youtube.generated-
|
|
409
|
+
//# sourceMappingURL=youtube.generated-WVCRGH3X.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../packages/connectors/src/firewall-metadata/permission-details/youtube.generated.ts"],"sourcesContent":["// Auto-generated by @vm0/firewalls-generator.\n// Regenerate: cd turbo && pnpm -F @vm0/firewalls-generator generate\n//\n// DO NOT EDIT THIS FILE MANUALLY.\nimport type { FirewallPermissionDetailMetadata } from \"../types\";\n\nexport const firewallPermissionMetadata = {\n \"type\": \"youtube\",\n \"label\": \"YouTube\",\n \"permissionCount\": 68,\n \"permissions\": [\n {\n \"name\": \"abuse-reports.create\",\n \"description\": \"Create YouTube abuse reports.\"\n },\n {\n \"name\": \"activities.read\",\n \"description\": \"Read YouTube channel activities.\"\n },\n {\n \"name\": \"captions.delete\",\n \"description\": \"Delete YouTube captions.\"\n },\n {\n \"name\": \"captions.download\",\n \"description\": \"Download YouTube captions.\"\n },\n {\n \"name\": \"captions.read\",\n \"description\": \"Read YouTube captions.\"\n },\n {\n \"name\": \"captions.write\",\n \"description\": \"Create and update YouTube captions.\"\n },\n {\n \"name\": \"channel-banners.upload\",\n \"description\": \"Upload YouTube channel banners.\"\n },\n {\n \"name\": \"channel-sections.delete\",\n \"description\": \"Delete YouTube channel sections.\"\n },\n {\n \"name\": \"channel-sections.read\",\n \"description\": \"Read YouTube channel sections.\"\n },\n {\n \"name\": \"channel-sections.write\",\n \"description\": \"Create and update YouTube channel sections.\"\n },\n {\n \"name\": \"channels.read\",\n \"description\": \"Read YouTube channels.\"\n },\n {\n \"name\": \"channels.write\",\n \"description\": \"Update YouTube channels.\"\n },\n {\n \"name\": \"comment-threads.read\",\n \"description\": \"Read YouTube comment threads.\"\n },\n {\n \"name\": \"comment-threads.write\",\n \"description\": \"Create YouTube comment threads.\"\n },\n {\n \"name\": \"comments.delete\",\n \"description\": \"Delete YouTube comments.\"\n },\n {\n \"name\": \"comments.moderate\",\n \"description\": \"Moderate YouTube comments.\"\n },\n {\n \"name\": \"comments.read\",\n \"description\": \"Read YouTube comments.\"\n },\n {\n \"name\": \"comments.write\",\n \"description\": \"Create and update YouTube comments.\"\n },\n {\n \"name\": \"i18n-languages.read\",\n \"description\": \"Read YouTube supported interface languages.\"\n },\n {\n \"name\": \"i18n-regions.read\",\n \"description\": \"Read YouTube supported regions.\"\n },\n {\n \"name\": \"live-broadcasts.control\",\n \"description\": \"Bind, cue, and transition YouTube live broadcasts.\"\n },\n {\n \"name\": \"live-broadcasts.create\",\n \"description\": \"Create YouTube live broadcasts.\"\n },\n {\n \"name\": \"live-broadcasts.delete\",\n \"description\": \"Delete YouTube live broadcasts.\"\n },\n {\n \"name\": \"live-broadcasts.read\",\n \"description\": \"Read YouTube live broadcasts.\"\n },\n {\n \"name\": \"live-broadcasts.write\",\n \"description\": \"Update YouTube live broadcasts.\"\n },\n {\n \"name\": \"live-chat-bans.write\",\n \"description\": \"Create and delete YouTube live chat bans.\"\n },\n {\n \"name\": \"live-chat-messages.delete\",\n \"description\": \"Delete YouTube live chat messages.\"\n },\n {\n \"name\": \"live-chat-messages.read\",\n \"description\": \"Read YouTube live chat messages.\"\n },\n {\n \"name\": \"live-chat-messages.write\",\n \"description\": \"Create and transition YouTube live chat messages.\"\n },\n {\n \"name\": \"live-chat-moderators.read\",\n \"description\": \"Read YouTube live chat moderators.\"\n },\n {\n \"name\": \"live-chat-moderators.write\",\n \"description\": \"Create and delete YouTube live chat moderators.\"\n },\n {\n \"name\": \"live-streams.create\",\n \"description\": \"Create YouTube live streams.\"\n },\n {\n \"name\": \"live-streams.delete\",\n \"description\": \"Delete YouTube live streams.\"\n },\n {\n \"name\": \"live-streams.read\",\n \"description\": \"Read YouTube live streams.\"\n },\n {\n \"name\": \"live-streams.write\",\n \"description\": \"Update YouTube live streams.\"\n },\n {\n \"name\": \"members.read\",\n \"description\": \"Read YouTube channel members.\"\n },\n {\n \"name\": \"membership-levels.read\",\n \"description\": \"Read YouTube channel membership levels.\"\n },\n {\n \"name\": \"playlist-images.delete\",\n \"description\": \"Delete YouTube playlist images.\"\n },\n {\n \"name\": \"playlist-images.read\",\n \"description\": \"Read YouTube playlist images.\"\n },\n {\n \"name\": \"playlist-images.write\",\n \"description\": \"Create and update YouTube playlist images.\"\n },\n {\n \"name\": \"playlist-items.delete\",\n \"description\": \"Delete YouTube playlist items.\"\n },\n {\n \"name\": \"playlist-items.read\",\n \"description\": \"Read YouTube playlist items.\"\n },\n {\n \"name\": \"playlist-items.write\",\n \"description\": \"Create and update YouTube playlist items.\"\n },\n {\n \"name\": \"playlists.delete\",\n \"description\": \"Delete YouTube playlists.\"\n },\n {\n \"name\": \"playlists.read\",\n \"description\": \"Read YouTube playlists.\"\n },\n {\n \"name\": \"playlists.write\",\n \"description\": \"Create and update YouTube playlists.\"\n },\n {\n \"name\": \"search.read\",\n \"description\": \"Search YouTube resources.\"\n },\n {\n \"name\": \"subscriptions.delete\",\n \"description\": \"Delete YouTube subscriptions.\"\n },\n {\n \"name\": \"subscriptions.read\",\n \"description\": \"Read YouTube subscriptions.\"\n },\n {\n \"name\": \"subscriptions.write\",\n \"description\": \"Create YouTube subscriptions.\"\n },\n {\n \"name\": \"super-chat-events.read\",\n \"description\": \"Read YouTube Super Chat events.\"\n },\n {\n \"name\": \"tests.create\",\n \"description\": \"Create YouTube API test resources.\"\n },\n {\n \"name\": \"third-party-links.delete\",\n \"description\": \"Delete YouTube third-party links.\"\n },\n {\n \"name\": \"third-party-links.read\",\n \"description\": \"Read YouTube third-party links.\"\n },\n {\n \"name\": \"third-party-links.write\",\n \"description\": \"Create and update YouTube third-party links.\"\n },\n {\n \"name\": \"thumbnails.set\",\n \"description\": \"Set YouTube video thumbnails.\"\n },\n {\n \"name\": \"video-abuse-report-reasons.read\",\n \"description\": \"Read YouTube video abuse report reasons.\"\n },\n {\n \"name\": \"video-categories.read\",\n \"description\": \"Read YouTube video categories.\"\n },\n {\n \"name\": \"video-trainability.read\",\n \"description\": \"Read YouTube video trainability state.\"\n },\n {\n \"name\": \"videos.create\",\n \"description\": \"Upload YouTube videos.\"\n },\n {\n \"name\": \"videos.delete\",\n \"description\": \"Delete YouTube videos.\"\n },\n {\n \"name\": \"videos.rate\",\n \"description\": \"Rate YouTube videos.\"\n },\n {\n \"name\": \"videos.rating.read\",\n \"description\": \"Read YouTube video ratings.\"\n },\n {\n \"name\": \"videos.read\",\n \"description\": \"Read YouTube videos.\"\n },\n {\n \"name\": \"videos.report-abuse\",\n \"description\": \"Report YouTube video abuse.\"\n },\n {\n \"name\": \"videos.write\",\n \"description\": \"Update YouTube videos.\"\n },\n {\n \"name\": \"watermarks.delete\",\n \"description\": \"Remove YouTube channel watermarks.\"\n },\n {\n \"name\": \"watermarks.set\",\n \"description\": \"Set YouTube channel watermarks.\"\n }\n ],\n \"categories\": {\n \"categories\": {\n \"abuse-reports.create\": \"Videos\",\n \"activities.read\": \"Channels\",\n \"captions.delete\": \"Comments & Captions\",\n \"captions.download\": \"Comments & Captions\",\n \"captions.read\": \"Comments & Captions\",\n \"captions.write\": \"Comments & Captions\",\n \"channel-banners.upload\": \"Channels\",\n \"channel-sections.delete\": \"Channels\",\n \"channel-sections.read\": \"Channels\",\n \"channel-sections.write\": \"Channels\",\n \"channels.read\": \"Channels\",\n \"channels.write\": \"Channels\",\n \"comment-threads.read\": \"Comments & Captions\",\n \"comment-threads.write\": \"Comments & Captions\",\n \"comments.delete\": \"Comments & Captions\",\n \"comments.moderate\": \"Comments & Captions\",\n \"comments.read\": \"Comments & Captions\",\n \"comments.write\": \"Comments & Captions\",\n \"i18n-languages.read\": \"Discovery\",\n \"i18n-regions.read\": \"Discovery\",\n \"live-broadcasts.control\": \"Live Streaming\",\n \"live-broadcasts.create\": \"Live Streaming\",\n \"live-broadcasts.delete\": \"Live Streaming\",\n \"live-broadcasts.read\": \"Live Streaming\",\n \"live-broadcasts.write\": \"Live Streaming\",\n \"live-chat-bans.write\": \"Live Chat\",\n \"live-chat-messages.delete\": \"Live Chat\",\n \"live-chat-messages.read\": \"Live Chat\",\n \"live-chat-messages.write\": \"Live Chat\",\n \"live-chat-moderators.read\": \"Live Chat\",\n \"live-chat-moderators.write\": \"Live Chat\",\n \"live-streams.create\": \"Live Streaming\",\n \"live-streams.delete\": \"Live Streaming\",\n \"live-streams.read\": \"Live Streaming\",\n \"live-streams.write\": \"Live Streaming\",\n \"members.read\": \"Memberships & Monetization\",\n \"membership-levels.read\": \"Memberships & Monetization\",\n \"playlist-images.delete\": \"Playlists\",\n \"playlist-images.read\": \"Playlists\",\n \"playlist-images.write\": \"Playlists\",\n \"playlist-items.delete\": \"Playlists\",\n \"playlist-items.read\": \"Playlists\",\n \"playlist-items.write\": \"Playlists\",\n \"playlists.delete\": \"Playlists\",\n \"playlists.read\": \"Playlists\",\n \"playlists.write\": \"Playlists\",\n \"search.read\": \"Discovery\",\n \"subscriptions.delete\": \"Subscriptions\",\n \"subscriptions.read\": \"Subscriptions\",\n \"subscriptions.write\": \"Subscriptions\",\n \"super-chat-events.read\": \"Memberships & Monetization\",\n \"tests.create\": \"Tests\",\n \"third-party-links.delete\": \"Third Party Links\",\n \"third-party-links.read\": \"Third Party Links\",\n \"third-party-links.write\": \"Third Party Links\",\n \"thumbnails.set\": \"Videos\",\n \"video-abuse-report-reasons.read\": \"Videos\",\n \"video-categories.read\": \"Videos\",\n \"video-trainability.read\": \"Videos\",\n \"videos.create\": \"Videos\",\n \"videos.delete\": \"Videos\",\n \"videos.rate\": \"Videos\",\n \"videos.rating.read\": \"Videos\",\n \"videos.read\": \"Videos\",\n \"videos.report-abuse\": \"Videos\",\n \"videos.write\": \"Videos\",\n \"watermarks.delete\": \"Videos\",\n \"watermarks.set\": \"Videos\"\n },\n \"displayOrder\": [\n \"Channels\",\n \"Videos\",\n \"Comments & Captions\",\n \"Playlists\",\n \"Live Streaming\",\n \"Live Chat\",\n \"Subscriptions\",\n \"Memberships & Monetization\",\n \"Discovery\",\n \"Third Party Links\",\n \"Tests\"\n ]\n },\n \"defaultPolicy\": {\n \"permissionDefault\": \"deny\",\n \"permissionOverrides\": {\n \"allow\": [\n \"activities.read\",\n \"captions.download\",\n \"captions.read\",\n \"channel-sections.read\",\n \"channels.read\",\n \"comment-threads.read\",\n \"comments.read\",\n \"i18n-languages.read\",\n \"i18n-regions.read\",\n \"live-broadcasts.read\",\n \"live-chat-messages.read\",\n \"live-chat-moderators.read\",\n \"live-streams.read\",\n \"playlist-images.read\",\n \"playlist-items.read\",\n \"playlists.read\",\n \"search.read\",\n \"subscriptions.read\",\n \"super-chat-events.read\",\n \"video-abuse-report-reasons.read\",\n \"video-categories.read\",\n \"video-trainability.read\",\n \"videos.rating.read\",\n \"videos.read\"\n ]\n },\n \"unknownPolicy\": \"deny\"\n }\n} as const satisfies FirewallPermissionDetailMetadata;\n"],"mappings":";;;;;;;;AAAA;AAMO,IAAM,6BAA6B;AAAA,EACxC,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,mBAAmB;AAAA,EACnB,eAAe;AAAA,IACb;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,eAAe;AAAA,IACjB;AAAA,EACF;AAAA,EACA,cAAc;AAAA,IACZ,cAAc;AAAA,MACZ,wBAAwB;AAAA,MACxB,mBAAmB;AAAA,MACnB,mBAAmB;AAAA,MACnB,qBAAqB;AAAA,MACrB,iBAAiB;AAAA,MACjB,kBAAkB;AAAA,MAClB,0BAA0B;AAAA,MAC1B,2BAA2B;AAAA,MAC3B,yBAAyB;AAAA,MACzB,0BAA0B;AAAA,MAC1B,iBAAiB;AAAA,MACjB,kBAAkB;AAAA,MAClB,wBAAwB;AAAA,MACxB,yBAAyB;AAAA,MACzB,mBAAmB;AAAA,MACnB,qBAAqB;AAAA,MACrB,iBAAiB;AAAA,MACjB,kBAAkB;AAAA,MAClB,uBAAuB;AAAA,MACvB,qBAAqB;AAAA,MACrB,2BAA2B;AAAA,MAC3B,0BAA0B;AAAA,MAC1B,0BAA0B;AAAA,MAC1B,wBAAwB;AAAA,MACxB,yBAAyB;AAAA,MACzB,wBAAwB;AAAA,MACxB,6BAA6B;AAAA,MAC7B,2BAA2B;AAAA,MAC3B,4BAA4B;AAAA,MAC5B,6BAA6B;AAAA,MAC7B,8BAA8B;AAAA,MAC9B,uBAAuB;AAAA,MACvB,uBAAuB;AAAA,MACvB,qBAAqB;AAAA,MACrB,sBAAsB;AAAA,MACtB,gBAAgB;AAAA,MAChB,0BAA0B;AAAA,MAC1B,0BAA0B;AAAA,MAC1B,wBAAwB;AAAA,MACxB,yBAAyB;AAAA,MACzB,yBAAyB;AAAA,MACzB,uBAAuB;AAAA,MACvB,wBAAwB;AAAA,MACxB,oBAAoB;AAAA,MACpB,kBAAkB;AAAA,MAClB,mBAAmB;AAAA,MACnB,eAAe;AAAA,MACf,wBAAwB;AAAA,MACxB,sBAAsB;AAAA,MACtB,uBAAuB;AAAA,MACvB,0BAA0B;AAAA,MAC1B,gBAAgB;AAAA,MAChB,4BAA4B;AAAA,MAC5B,0BAA0B;AAAA,MAC1B,2BAA2B;AAAA,MAC3B,kBAAkB;AAAA,MAClB,mCAAmC;AAAA,MACnC,yBAAyB;AAAA,MACzB,2BAA2B;AAAA,MAC3B,iBAAiB;AAAA,MACjB,iBAAiB;AAAA,MACjB,eAAe;AAAA,MACf,sBAAsB;AAAA,MACtB,eAAe;AAAA,MACf,uBAAuB;AAAA,MACvB,gBAAgB;AAAA,MAChB,qBAAqB;AAAA,MACrB,kBAAkB;AAAA,IACpB;AAAA,IACA,gBAAgB;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,qBAAqB;AAAA,IACrB,uBAAuB;AAAA,MACrB,SAAS;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,EACnB;AACF;","names":[]}
|