replicas-cli 0.2.341 → 0.2.343
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/dist/index.mjs +127 -16
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -7721,6 +7721,7 @@ var AGENT_MODELS = {
|
|
|
7721
7721
|
"gpt-5-mini",
|
|
7722
7722
|
"gemini-3.1-pro",
|
|
7723
7723
|
"gemini-3-flash",
|
|
7724
|
+
"grok-4.5",
|
|
7724
7725
|
"grok-4.3",
|
|
7725
7726
|
CLAUDE_HAIKU_4_5_MODEL,
|
|
7726
7727
|
"kimi-k2.5"
|
|
@@ -7758,6 +7759,7 @@ var MODEL_LABELS = {
|
|
|
7758
7759
|
[CLAUDE_HAIKU_4_5_MODEL]: "Haiku 4.5",
|
|
7759
7760
|
"gemini-3.1-pro": "Gemini 3.1 Pro",
|
|
7760
7761
|
"gemini-3-flash": "Gemini 3 Flash",
|
|
7762
|
+
"grok-4.5": "Grok 4.5",
|
|
7761
7763
|
"grok-4.3": "Grok 4.3",
|
|
7762
7764
|
"kimi-k2.5": "Kimi K2.5"
|
|
7763
7765
|
};
|
|
@@ -9268,6 +9270,7 @@ In agent mode the CLI hides commands that don't make sense for in-workspace agen
|
|
|
9268
9270
|
| "Make an automation that runs every weekday at 9am" | \`replicas automation create\` (interactive) or \`--trigger-cron "0 9 * * 1-5"\` |
|
|
9269
9271
|
| "Make an automation that runs when a PR opens on \`acme/web\`" | \`replicas automation create ... --trigger-github pull_request.opened --trigger-github-repos acme/web\` |
|
|
9270
9272
|
| "Make an automation that runs when an MR opens on \`acme/web\`" | \`replicas automation create ... --trigger-gitlab merge_request.opened --trigger-gitlab-repos acme/web\` |
|
|
9273
|
+
| "Ignore Dependabot for this PR automation" | \`replicas automation edit <id> --trigger-github-exclude-users 'dependabot[bot]'\` |
|
|
9271
9274
|
| "What repos are connected?" | \`replicas repos\` |
|
|
9272
9275
|
| "Set up a \`replicas.json\` in this repo" | \`replicas init\` (\`-y\` for YAML) |
|
|
9273
9276
|
|
|
@@ -9354,13 +9357,15 @@ replicas automation create "Review my PRs" \\
|
|
|
9354
9357
|
--prompt "Leave a code review on this PR" \\
|
|
9355
9358
|
--environment <env-name-or-id> \\
|
|
9356
9359
|
--trigger-github pull_request.opened \\
|
|
9357
|
-
--trigger-github-repos acme/web,acme/api
|
|
9360
|
+
--trigger-github-repos acme/web,acme/api \\
|
|
9361
|
+
--trigger-github-exclude-users 'dependabot[bot],renovate[bot]'
|
|
9358
9362
|
|
|
9359
9363
|
replicas automation create "Review my MRs" \\
|
|
9360
9364
|
--prompt "Leave a code review on this MR" \\
|
|
9361
9365
|
--environment <env-name-or-id> \\
|
|
9362
9366
|
--trigger-gitlab merge_request.opened \\
|
|
9363
|
-
--trigger-gitlab-repos acme/web,acme/api
|
|
9367
|
+
--trigger-gitlab-repos acme/web,acme/api \\
|
|
9368
|
+
--trigger-gitlab-exclude-users 'bot-user'
|
|
9364
9369
|
|
|
9365
9370
|
# Disable on creation
|
|
9366
9371
|
replicas automation create ... --disabled
|
|
@@ -9384,6 +9389,8 @@ replicas automation edit <id> \\
|
|
|
9384
9389
|
--trigger-cron "0 4 * * *" # replaces existing triggers
|
|
9385
9390
|
\`\`\`
|
|
9386
9391
|
|
|
9392
|
+
\`replicas automation edit <id> --trigger-github-exclude-users "dependabot[bot],renovate[bot]"\` updates existing GitHub triggers without replacing the rest of the trigger list. The GitLab equivalent is \`--trigger-gitlab-exclude-users\`. Passing an empty string (for example, \`--trigger-github-exclude-users ""\`) clears existing exclusions for that code host. Passing \`--trigger-github\` or \`--trigger-gitlab\` still replaces triggers, and the matching exclude flag is applied to the replacement trigger.
|
|
9393
|
+
|
|
9387
9394
|
\`replicas automation edit <id>\` with no flags drops into interactive mode.
|
|
9388
9395
|
|
|
9389
9396
|
## Repositories
|
|
@@ -9558,6 +9565,27 @@ var REPLICAS_AGENT_ABILITIES = Object.keys(
|
|
|
9558
9565
|
);
|
|
9559
9566
|
|
|
9560
9567
|
// ../shared/src/routes/preferences.ts
|
|
9568
|
+
var EMPTY_AGENT_DEFAULT_SETTINGS = {
|
|
9569
|
+
agent_provider: null,
|
|
9570
|
+
model: null,
|
|
9571
|
+
thinking_level: null,
|
|
9572
|
+
goal_mode: null,
|
|
9573
|
+
fast_mode: null
|
|
9574
|
+
};
|
|
9575
|
+
var DEFAULT_USER_PREFERENCES = {
|
|
9576
|
+
default_agent: "codex",
|
|
9577
|
+
default_model: null,
|
|
9578
|
+
cursor_models: null,
|
|
9579
|
+
close_workspace_on_pr_close: true,
|
|
9580
|
+
default_environment_id: null,
|
|
9581
|
+
respond_to_ci_workflows: true,
|
|
9582
|
+
respond_to_ci_checks: true,
|
|
9583
|
+
respond_to_human_pr_reviews: false,
|
|
9584
|
+
pr_user_attribution: false,
|
|
9585
|
+
auto_draft_prs: false,
|
|
9586
|
+
default_fast_mode: false,
|
|
9587
|
+
agent_defaults: { ...EMPTY_AGENT_DEFAULT_SETTINGS }
|
|
9588
|
+
};
|
|
9561
9589
|
var DEFAULT_REPLICAS_AGENT_ABILITIES = Object.fromEntries(
|
|
9562
9590
|
REPLICAS_AGENT_ABILITIES.map((key) => [key, true])
|
|
9563
9591
|
);
|
|
@@ -9597,7 +9625,7 @@ var HOOK_EXEC_MAX_BUFFER_BYTES = 10 * 1024 * 1024;
|
|
|
9597
9625
|
var REPLICAS_CONFIG_FILENAMES = ["replicas.json", "replicas.yaml", "replicas.yml"];
|
|
9598
9626
|
|
|
9599
9627
|
// ../shared/src/cli-version.ts
|
|
9600
|
-
var CLI_VERSION = "0.2.
|
|
9628
|
+
var CLI_VERSION = "0.2.343";
|
|
9601
9629
|
|
|
9602
9630
|
// ../shared/src/engine/environment.ts
|
|
9603
9631
|
var DESKTOP_NOVNC_PORT = 6080;
|
|
@@ -13637,6 +13665,20 @@ function parseWorkspaceLifecyclePolicyOption(value) {
|
|
|
13637
13665
|
console.log(chalk18.gray(`Valid options: ${VALID_LIFECYCLE_POLICIES.join(", ")}`));
|
|
13638
13666
|
process.exit(1);
|
|
13639
13667
|
}
|
|
13668
|
+
function parseExcludedActorsOption(value) {
|
|
13669
|
+
if (value === void 0) return void 0;
|
|
13670
|
+
const actors = value.split(",").map((actor) => actor.trim()).filter(Boolean);
|
|
13671
|
+
return actors.length > 0 ? actors : void 0;
|
|
13672
|
+
}
|
|
13673
|
+
function withExcludedActors(config2, excludedActors) {
|
|
13674
|
+
const next = { ...config2 };
|
|
13675
|
+
if (excludedActors?.length) {
|
|
13676
|
+
next.excluded_actors = excludedActors;
|
|
13677
|
+
} else {
|
|
13678
|
+
delete next.excluded_actors;
|
|
13679
|
+
}
|
|
13680
|
+
return next;
|
|
13681
|
+
}
|
|
13640
13682
|
function parseAutomationLifecycleOptions(options) {
|
|
13641
13683
|
if (options.sleepWhenDone && options.lifecycle && options.lifecycle !== "sleep_when_done") {
|
|
13642
13684
|
console.log(chalk18.red("--sleep-when-done cannot be combined with a different --lifecycle value"));
|
|
@@ -13665,13 +13707,19 @@ function formatTrigger(trigger) {
|
|
|
13665
13707
|
}
|
|
13666
13708
|
if (trigger.type === "github") {
|
|
13667
13709
|
const config2 = trigger.config;
|
|
13668
|
-
const
|
|
13669
|
-
|
|
13710
|
+
const details = [
|
|
13711
|
+
config2.repository_ids?.length ? `${config2.repository_ids.length} repo${config2.repository_ids.length > 1 ? "s" : ""} filtered` : null,
|
|
13712
|
+
config2.excluded_actors?.length ? `exclude: ${config2.excluded_actors.join(", ")}` : null
|
|
13713
|
+
].filter(Boolean);
|
|
13714
|
+
return `github: ${config2.event}${details.length > 0 ? ` (${details.join(", ")})` : ""}`;
|
|
13670
13715
|
}
|
|
13671
13716
|
if (trigger.type === "gitlab") {
|
|
13672
13717
|
const config2 = trigger.config;
|
|
13673
|
-
const
|
|
13674
|
-
|
|
13718
|
+
const details = [
|
|
13719
|
+
config2.repository_ids?.length ? `${config2.repository_ids.length} project${config2.repository_ids.length > 1 ? "s" : ""} filtered` : null,
|
|
13720
|
+
config2.excluded_actors?.length ? `exclude: ${config2.excluded_actors.join(", ")}` : null
|
|
13721
|
+
].filter(Boolean);
|
|
13722
|
+
return `gitlab: ${config2.event}${details.length > 0 ? ` (${details.join(", ")})` : ""}`;
|
|
13675
13723
|
}
|
|
13676
13724
|
return `${trigger.type}`;
|
|
13677
13725
|
}
|
|
@@ -13886,11 +13934,18 @@ async function promptForTriggers(repositories) {
|
|
|
13886
13934
|
triggerRepoIds = filterResponse.repos;
|
|
13887
13935
|
}
|
|
13888
13936
|
}
|
|
13937
|
+
const excludedActorsResponse = await prompts4({
|
|
13938
|
+
type: "text",
|
|
13939
|
+
name: "excludedActors",
|
|
13940
|
+
message: "Exclude GitHub users (comma-separated, optional):"
|
|
13941
|
+
});
|
|
13942
|
+
const excludedActors = parseExcludedActorsOption(excludedActorsResponse.excludedActors);
|
|
13889
13943
|
triggers.push({
|
|
13890
13944
|
type: "github",
|
|
13891
13945
|
config: {
|
|
13892
13946
|
event: eventResponse.event,
|
|
13893
|
-
...triggerRepoIds ? { repository_ids: triggerRepoIds } : {}
|
|
13947
|
+
...triggerRepoIds ? { repository_ids: triggerRepoIds } : {},
|
|
13948
|
+
...excludedActors ? { excluded_actors: excludedActors } : {}
|
|
13894
13949
|
}
|
|
13895
13950
|
});
|
|
13896
13951
|
} else if (typeResponse.type === "gitlab") {
|
|
@@ -13914,11 +13969,18 @@ async function promptForTriggers(repositories) {
|
|
|
13914
13969
|
triggerRepoIds = filterResponse.repos;
|
|
13915
13970
|
}
|
|
13916
13971
|
}
|
|
13972
|
+
const excludedActorsResponse = await prompts4({
|
|
13973
|
+
type: "text",
|
|
13974
|
+
name: "excludedActors",
|
|
13975
|
+
message: "Exclude GitLab users (comma-separated, optional):"
|
|
13976
|
+
});
|
|
13977
|
+
const excludedActors = parseExcludedActorsOption(excludedActorsResponse.excludedActors);
|
|
13917
13978
|
triggers.push({
|
|
13918
13979
|
type: "gitlab",
|
|
13919
13980
|
config: {
|
|
13920
13981
|
event: eventResponse.event,
|
|
13921
|
-
...triggerRepoIds ? { repository_ids: triggerRepoIds } : {}
|
|
13982
|
+
...triggerRepoIds ? { repository_ids: triggerRepoIds } : {},
|
|
13983
|
+
...excludedActors ? { excluded_actors: excludedActors } : {}
|
|
13922
13984
|
}
|
|
13923
13985
|
});
|
|
13924
13986
|
}
|
|
@@ -13946,6 +14008,14 @@ async function automationCreateCommand(name, options) {
|
|
|
13946
14008
|
process.exit(1);
|
|
13947
14009
|
}
|
|
13948
14010
|
}
|
|
14011
|
+
if (options.triggerGithubExcludeUsers !== void 0 && !options.triggerGithub) {
|
|
14012
|
+
console.log(chalk18.red("--trigger-github-exclude-users requires --trigger-github"));
|
|
14013
|
+
process.exit(1);
|
|
14014
|
+
}
|
|
14015
|
+
if (options.triggerGitlabExcludeUsers !== void 0 && !options.triggerGitlab) {
|
|
14016
|
+
console.log(chalk18.red("--trigger-gitlab-exclude-users requires --trigger-gitlab"));
|
|
14017
|
+
process.exit(1);
|
|
14018
|
+
}
|
|
13949
14019
|
const agentSelection = applyAgentSelection(
|
|
13950
14020
|
{
|
|
13951
14021
|
agent_provider: parseAgentProviderOption(options.agentProvider),
|
|
@@ -14024,21 +14094,25 @@ async function automationCreateCommand(name, options) {
|
|
|
14024
14094
|
}
|
|
14025
14095
|
if (options.triggerGithub) {
|
|
14026
14096
|
const githubRepoIds = resolveTriggerRepositoryIds(repositories, options.triggerGithubRepos, "github");
|
|
14097
|
+
const githubExcludedActors = parseExcludedActorsOption(options.triggerGithubExcludeUsers);
|
|
14027
14098
|
triggers.push({
|
|
14028
14099
|
type: "github",
|
|
14029
14100
|
config: {
|
|
14030
14101
|
event: options.triggerGithub,
|
|
14031
|
-
...githubRepoIds ? { repository_ids: githubRepoIds } : {}
|
|
14102
|
+
...githubRepoIds ? { repository_ids: githubRepoIds } : {},
|
|
14103
|
+
...githubExcludedActors ? { excluded_actors: githubExcludedActors } : {}
|
|
14032
14104
|
}
|
|
14033
14105
|
});
|
|
14034
14106
|
}
|
|
14035
14107
|
if (options.triggerGitlab) {
|
|
14036
14108
|
const gitlabRepoIds = resolveTriggerRepositoryIds(repositories, options.triggerGitlabRepos, "gitlab");
|
|
14109
|
+
const gitlabExcludedActors = parseExcludedActorsOption(options.triggerGitlabExcludeUsers);
|
|
14037
14110
|
triggers.push({
|
|
14038
14111
|
type: "gitlab",
|
|
14039
14112
|
config: {
|
|
14040
14113
|
event: options.triggerGitlab,
|
|
14041
|
-
...gitlabRepoIds ? { repository_ids: gitlabRepoIds } : {}
|
|
14114
|
+
...gitlabRepoIds ? { repository_ids: gitlabRepoIds } : {},
|
|
14115
|
+
...gitlabExcludedActors ? { excluded_actors: gitlabExcludedActors } : {}
|
|
14042
14116
|
}
|
|
14043
14117
|
});
|
|
14044
14118
|
}
|
|
@@ -14106,6 +14180,15 @@ async function automationEditCommand(id, options) {
|
|
|
14106
14180
|
process.exit(1);
|
|
14107
14181
|
}
|
|
14108
14182
|
}
|
|
14183
|
+
const replacingTriggers = Boolean(options.triggerCron || options.triggerGithub || options.triggerGitlab);
|
|
14184
|
+
if (replacingTriggers && options.triggerGithubExcludeUsers !== void 0 && !options.triggerGithub) {
|
|
14185
|
+
console.log(chalk18.red("--trigger-github-exclude-users requires --trigger-github when replacing triggers"));
|
|
14186
|
+
process.exit(1);
|
|
14187
|
+
}
|
|
14188
|
+
if (replacingTriggers && options.triggerGitlabExcludeUsers !== void 0 && !options.triggerGitlab) {
|
|
14189
|
+
console.log(chalk18.red("--trigger-gitlab-exclude-users requires --trigger-gitlab when replacing triggers"));
|
|
14190
|
+
process.exit(1);
|
|
14191
|
+
}
|
|
14109
14192
|
const parsedAgent = {
|
|
14110
14193
|
agent_provider: parseAgentProviderOption(options.agentProvider),
|
|
14111
14194
|
model: parseModelOption(options.model),
|
|
@@ -14123,7 +14206,7 @@ async function automationEditCommand(id, options) {
|
|
|
14123
14206
|
model: existing.automation.model
|
|
14124
14207
|
});
|
|
14125
14208
|
const body = {};
|
|
14126
|
-
const hasOptions = options.name || options.prompt || options.enabled !== void 0 || options.prFollowups !== void 0 || options.triggerCron || options.triggerGithub || options.triggerGitlab || options.environment || options.lifecycle || options.sleepWhenDone || options.autoStopMinutes || options.agentProvider !== void 0 || options.model !== void 0 || options.thinkingLevel !== void 0 || options.planMode !== void 0 || options.goalMode !== void 0 || options.fastMode !== void 0;
|
|
14209
|
+
const hasOptions = options.name || options.prompt || options.enabled !== void 0 || options.prFollowups !== void 0 || options.triggerCron || options.triggerGithub || options.triggerGitlab || options.environment || options.triggerGithubExcludeUsers !== void 0 || options.triggerGitlabExcludeUsers !== void 0 || options.lifecycle || options.sleepWhenDone || options.autoStopMinutes || options.agentProvider !== void 0 || options.model !== void 0 || options.thinkingLevel !== void 0 || options.planMode !== void 0 || options.goalMode !== void 0 || options.fastMode !== void 0;
|
|
14127
14210
|
if (!hasOptions) {
|
|
14128
14211
|
const nameResponse = await prompts4({
|
|
14129
14212
|
type: "text",
|
|
@@ -14201,11 +14284,13 @@ async function automationEditCommand(id, options) {
|
|
|
14201
14284
|
options.triggerGithubRepos,
|
|
14202
14285
|
"github"
|
|
14203
14286
|
);
|
|
14287
|
+
const githubExcludedActors = parseExcludedActorsOption(options.triggerGithubExcludeUsers);
|
|
14204
14288
|
triggers.push({
|
|
14205
14289
|
type: "github",
|
|
14206
14290
|
config: {
|
|
14207
14291
|
event: options.triggerGithub,
|
|
14208
|
-
...githubRepoIds ? { repository_ids: githubRepoIds } : {}
|
|
14292
|
+
...githubRepoIds ? { repository_ids: githubRepoIds } : {},
|
|
14293
|
+
...githubExcludedActors ? { excluded_actors: githubExcludedActors } : {}
|
|
14209
14294
|
}
|
|
14210
14295
|
});
|
|
14211
14296
|
}
|
|
@@ -14216,15 +14301,41 @@ async function automationEditCommand(id, options) {
|
|
|
14216
14301
|
options.triggerGitlabRepos,
|
|
14217
14302
|
"gitlab"
|
|
14218
14303
|
);
|
|
14304
|
+
const gitlabExcludedActors = parseExcludedActorsOption(options.triggerGitlabExcludeUsers);
|
|
14219
14305
|
triggers.push({
|
|
14220
14306
|
type: "gitlab",
|
|
14221
14307
|
config: {
|
|
14222
14308
|
event: options.triggerGitlab,
|
|
14223
|
-
...gitlabRepoIds ? { repository_ids: gitlabRepoIds } : {}
|
|
14309
|
+
...gitlabRepoIds ? { repository_ids: gitlabRepoIds } : {},
|
|
14310
|
+
...gitlabExcludedActors ? { excluded_actors: gitlabExcludedActors } : {}
|
|
14224
14311
|
}
|
|
14225
14312
|
});
|
|
14226
14313
|
}
|
|
14227
14314
|
body.triggers = triggers;
|
|
14315
|
+
} else if (options.triggerGithubExcludeUsers !== void 0 || options.triggerGitlabExcludeUsers !== void 0) {
|
|
14316
|
+
const githubExcludedActors = parseExcludedActorsOption(options.triggerGithubExcludeUsers);
|
|
14317
|
+
const gitlabExcludedActors = parseExcludedActorsOption(options.triggerGitlabExcludeUsers);
|
|
14318
|
+
let matchedGithub = options.triggerGithubExcludeUsers === void 0;
|
|
14319
|
+
let matchedGitlab = options.triggerGitlabExcludeUsers === void 0;
|
|
14320
|
+
body.triggers = existing.automation.triggers.map((trigger) => {
|
|
14321
|
+
if (trigger.type === "github" && options.triggerGithubExcludeUsers !== void 0) {
|
|
14322
|
+
matchedGithub = true;
|
|
14323
|
+
return { ...trigger, config: withExcludedActors(trigger.config, githubExcludedActors) };
|
|
14324
|
+
}
|
|
14325
|
+
if (trigger.type === "gitlab" && options.triggerGitlabExcludeUsers !== void 0) {
|
|
14326
|
+
matchedGitlab = true;
|
|
14327
|
+
return { ...trigger, config: withExcludedActors(trigger.config, gitlabExcludedActors) };
|
|
14328
|
+
}
|
|
14329
|
+
return trigger;
|
|
14330
|
+
});
|
|
14331
|
+
if (!matchedGithub) {
|
|
14332
|
+
console.log(chalk18.red("No existing GitHub trigger found. Pass --trigger-github to create one."));
|
|
14333
|
+
process.exit(1);
|
|
14334
|
+
}
|
|
14335
|
+
if (!matchedGitlab) {
|
|
14336
|
+
console.log(chalk18.red("No existing GitLab trigger found. Pass --trigger-gitlab to create one."));
|
|
14337
|
+
process.exit(1);
|
|
14338
|
+
}
|
|
14228
14339
|
}
|
|
14229
14340
|
if (options.environment) {
|
|
14230
14341
|
const envResp = await orgAuthenticatedFetch("/v1/environments");
|
|
@@ -20220,7 +20331,7 @@ automation.command("get <id>").description("Get automation details by ID").actio
|
|
|
20220
20331
|
process.exit(1);
|
|
20221
20332
|
}
|
|
20222
20333
|
});
|
|
20223
|
-
automation.command("create [name]").description("Create a new automation").option("-p, --prompt <prompt>", "Prompt for the automation").option("-e, --environment <environment>", "Environment name or ID").option("--trigger-cron <schedule>", 'Cron schedule expression (e.g. "0 9 * * 1-5")').option("--trigger-cron-timezone <timezone>", "Timezone for cron trigger (default: UTC)").option("--trigger-github <event>", 'GitHub event (e.g. "pull_request.opened")').option("--trigger-github-repos <repos>", "Comma-separated repo names to filter GitHub trigger").option("--trigger-gitlab <event>", 'GitLab event (e.g. "merge_request.opened")').option("--trigger-gitlab-repos <repos>", "Comma-separated repo names to filter GitLab trigger").option("--lifecycle <policy>", "Workspace lifecycle: archive_when_done, sleep_when_done, delete_after_inactivity, default").option("--sleep-when-done", "Sleep automation workspaces as soon as the agent finishes").option("--auto-stop-minutes <minutes>", "Inactivity timeout in minutes (3-1440, requires --lifecycle default or delete_after_inactivity)").option("--pr-followups", "Allow follow-up actions on matching PRs").option("--agent-provider <provider>", 'Coding agent to use: claude, codex, cursor, relay (or "none" to inherit org default)').option("--model <model>", 'Model identifier (must be valid for --agent-provider; pass "none" to clear)').option("--thinking-level <level>", 'Thinking/reasoning level: low, medium, high, max (or "none" to clear)').option("--plan-mode", "Run automation messages in plan mode").option("--goal-mode", "Set automation messages as Codex goals").option("--fast-mode", "Run automation messages in fast mode").option("--personal", "Create a personal automation owned by the authenticated user").option("--disabled", "Create in disabled state").action(async (name, options) => {
|
|
20334
|
+
automation.command("create [name]").description("Create a new automation").option("-p, --prompt <prompt>", "Prompt for the automation").option("-e, --environment <environment>", "Environment name or ID").option("--trigger-cron <schedule>", 'Cron schedule expression (e.g. "0 9 * * 1-5")').option("--trigger-cron-timezone <timezone>", "Timezone for cron trigger (default: UTC)").option("--trigger-github <event>", 'GitHub event (e.g. "pull_request.opened")').option("--trigger-github-repos <repos>", "Comma-separated repo names to filter GitHub trigger").option("--trigger-github-exclude-users <users>", "Comma-separated GitHub usernames to exclude from triggering (pass empty string to clear the list)").option("--trigger-gitlab <event>", 'GitLab event (e.g. "merge_request.opened")').option("--trigger-gitlab-repos <repos>", "Comma-separated repo names to filter GitLab trigger").option("--trigger-gitlab-exclude-users <users>", "Comma-separated GitLab usernames to exclude from triggering (pass empty string to clear the list)").option("--lifecycle <policy>", "Workspace lifecycle: archive_when_done, sleep_when_done, delete_after_inactivity, default").option("--sleep-when-done", "Sleep automation workspaces as soon as the agent finishes").option("--auto-stop-minutes <minutes>", "Inactivity timeout in minutes (3-1440, requires --lifecycle default or delete_after_inactivity)").option("--pr-followups", "Allow follow-up actions on matching PRs").option("--agent-provider <provider>", 'Coding agent to use: claude, codex, cursor, relay (or "none" to inherit org default)').option("--model <model>", 'Model identifier (must be valid for --agent-provider; pass "none" to clear)').option("--thinking-level <level>", 'Thinking/reasoning level: low, medium, high, max (or "none" to clear)').option("--plan-mode", "Run automation messages in plan mode").option("--goal-mode", "Set automation messages as Codex goals").option("--fast-mode", "Run automation messages in fast mode").option("--personal", "Create a personal automation owned by the authenticated user").option("--disabled", "Create in disabled state").action(async (name, options) => {
|
|
20224
20335
|
try {
|
|
20225
20336
|
await automationCreateCommand(name, {
|
|
20226
20337
|
...options,
|
|
@@ -20235,7 +20346,7 @@ automation.command("create [name]").description("Create a new automation").optio
|
|
|
20235
20346
|
process.exit(1);
|
|
20236
20347
|
}
|
|
20237
20348
|
});
|
|
20238
|
-
automation.command("edit <id>").description("Edit an existing automation").option("-n, --name <name>", "New name").option("-p, --prompt <prompt>", "New prompt").option("-e, --enabled <enabled>", "Enable or disable (true/false)").option("--trigger-cron <schedule>", "Set cron schedule (replaces existing triggers)").option("--trigger-cron-timezone <timezone>", "Timezone for cron trigger").option("--trigger-github <event>", "Set GitHub event (replaces existing triggers)").option("--trigger-github-repos <repos>", "Comma-separated repo names to filter GitHub trigger").option("--trigger-gitlab <event>", "Set GitLab event (replaces existing triggers)").option("--trigger-gitlab-repos <repos>", "Comma-separated repo names to filter GitLab trigger").option("--environment <environment>", "Environment name or ID").option("--lifecycle <policy>", "Workspace lifecycle: archive_when_done, sleep_when_done, delete_after_inactivity, default").option("--sleep-when-done", "Sleep automation workspaces as soon as the agent finishes").option("--auto-stop-minutes <minutes>", "Inactivity timeout in minutes (3-1440, requires --lifecycle default or delete_after_inactivity)").option("--pr-followups <enabled>", "Allow follow-up actions on matching PRs (true/false)", parseBooleanOption).option("--agent-provider <provider>", 'Coding agent to use: claude, codex, cursor, relay (or "none" to inherit org default)').option("--model <model>", 'Model identifier (must be valid for --agent-provider; pass "none" to clear)').option("--thinking-level <level>", 'Thinking/reasoning level: low, medium, high, max (or "none" to clear)').option("--plan-mode <enabled>", "Run automation messages in plan mode (true/false)", parseBooleanOption).option("--goal-mode <enabled>", "Set automation messages as Codex goals (true/false)", parseBooleanOption).option("--fast-mode <enabled>", "Run automation messages in fast mode (true/false)", parseBooleanOption).action(async (id, options) => {
|
|
20349
|
+
automation.command("edit <id>").description("Edit an existing automation").option("-n, --name <name>", "New name").option("-p, --prompt <prompt>", "New prompt").option("-e, --enabled <enabled>", "Enable or disable (true/false)").option("--trigger-cron <schedule>", "Set cron schedule (replaces existing triggers)").option("--trigger-cron-timezone <timezone>", "Timezone for cron trigger").option("--trigger-github <event>", "Set GitHub event (replaces existing triggers)").option("--trigger-github-repos <repos>", "Comma-separated repo names to filter GitHub trigger").option("--trigger-github-exclude-users <users>", "Comma-separated GitHub usernames to exclude from triggering (pass empty string to clear the list)").option("--trigger-gitlab <event>", "Set GitLab event (replaces existing triggers)").option("--trigger-gitlab-repos <repos>", "Comma-separated repo names to filter GitLab trigger").option("--trigger-gitlab-exclude-users <users>", "Comma-separated GitLab usernames to exclude from triggering (pass empty string to clear the list)").option("--environment <environment>", "Environment name or ID").option("--lifecycle <policy>", "Workspace lifecycle: archive_when_done, sleep_when_done, delete_after_inactivity, default").option("--sleep-when-done", "Sleep automation workspaces as soon as the agent finishes").option("--auto-stop-minutes <minutes>", "Inactivity timeout in minutes (3-1440, requires --lifecycle default or delete_after_inactivity)").option("--pr-followups <enabled>", "Allow follow-up actions on matching PRs (true/false)", parseBooleanOption).option("--agent-provider <provider>", 'Coding agent to use: claude, codex, cursor, relay (or "none" to inherit org default)').option("--model <model>", 'Model identifier (must be valid for --agent-provider; pass "none" to clear)').option("--thinking-level <level>", 'Thinking/reasoning level: low, medium, high, max (or "none" to clear)').option("--plan-mode <enabled>", "Run automation messages in plan mode (true/false)", parseBooleanOption).option("--goal-mode <enabled>", "Set automation messages as Codex goals (true/false)", parseBooleanOption).option("--fast-mode <enabled>", "Run automation messages in fast mode (true/false)", parseBooleanOption).action(async (id, options) => {
|
|
20239
20350
|
try {
|
|
20240
20351
|
await automationEditCommand(id, options);
|
|
20241
20352
|
} catch (error) {
|