replicas-cli 0.2.342 → 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 +125 -16
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -9270,6 +9270,7 @@ In agent mode the CLI hides commands that don't make sense for in-workspace agen
|
|
|
9270
9270
|
| "Make an automation that runs every weekday at 9am" | \`replicas automation create\` (interactive) or \`--trigger-cron "0 9 * * 1-5"\` |
|
|
9271
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\` |
|
|
9272
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]'\` |
|
|
9273
9274
|
| "What repos are connected?" | \`replicas repos\` |
|
|
9274
9275
|
| "Set up a \`replicas.json\` in this repo" | \`replicas init\` (\`-y\` for YAML) |
|
|
9275
9276
|
|
|
@@ -9356,13 +9357,15 @@ replicas automation create "Review my PRs" \\
|
|
|
9356
9357
|
--prompt "Leave a code review on this PR" \\
|
|
9357
9358
|
--environment <env-name-or-id> \\
|
|
9358
9359
|
--trigger-github pull_request.opened \\
|
|
9359
|
-
--trigger-github-repos acme/web,acme/api
|
|
9360
|
+
--trigger-github-repos acme/web,acme/api \\
|
|
9361
|
+
--trigger-github-exclude-users 'dependabot[bot],renovate[bot]'
|
|
9360
9362
|
|
|
9361
9363
|
replicas automation create "Review my MRs" \\
|
|
9362
9364
|
--prompt "Leave a code review on this MR" \\
|
|
9363
9365
|
--environment <env-name-or-id> \\
|
|
9364
9366
|
--trigger-gitlab merge_request.opened \\
|
|
9365
|
-
--trigger-gitlab-repos acme/web,acme/api
|
|
9367
|
+
--trigger-gitlab-repos acme/web,acme/api \\
|
|
9368
|
+
--trigger-gitlab-exclude-users 'bot-user'
|
|
9366
9369
|
|
|
9367
9370
|
# Disable on creation
|
|
9368
9371
|
replicas automation create ... --disabled
|
|
@@ -9386,6 +9389,8 @@ replicas automation edit <id> \\
|
|
|
9386
9389
|
--trigger-cron "0 4 * * *" # replaces existing triggers
|
|
9387
9390
|
\`\`\`
|
|
9388
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
|
+
|
|
9389
9394
|
\`replicas automation edit <id>\` with no flags drops into interactive mode.
|
|
9390
9395
|
|
|
9391
9396
|
## Repositories
|
|
@@ -9560,6 +9565,27 @@ var REPLICAS_AGENT_ABILITIES = Object.keys(
|
|
|
9560
9565
|
);
|
|
9561
9566
|
|
|
9562
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
|
+
};
|
|
9563
9589
|
var DEFAULT_REPLICAS_AGENT_ABILITIES = Object.fromEntries(
|
|
9564
9590
|
REPLICAS_AGENT_ABILITIES.map((key) => [key, true])
|
|
9565
9591
|
);
|
|
@@ -9599,7 +9625,7 @@ var HOOK_EXEC_MAX_BUFFER_BYTES = 10 * 1024 * 1024;
|
|
|
9599
9625
|
var REPLICAS_CONFIG_FILENAMES = ["replicas.json", "replicas.yaml", "replicas.yml"];
|
|
9600
9626
|
|
|
9601
9627
|
// ../shared/src/cli-version.ts
|
|
9602
|
-
var CLI_VERSION = "0.2.
|
|
9628
|
+
var CLI_VERSION = "0.2.343";
|
|
9603
9629
|
|
|
9604
9630
|
// ../shared/src/engine/environment.ts
|
|
9605
9631
|
var DESKTOP_NOVNC_PORT = 6080;
|
|
@@ -13639,6 +13665,20 @@ function parseWorkspaceLifecyclePolicyOption(value) {
|
|
|
13639
13665
|
console.log(chalk18.gray(`Valid options: ${VALID_LIFECYCLE_POLICIES.join(", ")}`));
|
|
13640
13666
|
process.exit(1);
|
|
13641
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
|
+
}
|
|
13642
13682
|
function parseAutomationLifecycleOptions(options) {
|
|
13643
13683
|
if (options.sleepWhenDone && options.lifecycle && options.lifecycle !== "sleep_when_done") {
|
|
13644
13684
|
console.log(chalk18.red("--sleep-when-done cannot be combined with a different --lifecycle value"));
|
|
@@ -13667,13 +13707,19 @@ function formatTrigger(trigger) {
|
|
|
13667
13707
|
}
|
|
13668
13708
|
if (trigger.type === "github") {
|
|
13669
13709
|
const config2 = trigger.config;
|
|
13670
|
-
const
|
|
13671
|
-
|
|
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(", ")})` : ""}`;
|
|
13672
13715
|
}
|
|
13673
13716
|
if (trigger.type === "gitlab") {
|
|
13674
13717
|
const config2 = trigger.config;
|
|
13675
|
-
const
|
|
13676
|
-
|
|
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(", ")})` : ""}`;
|
|
13677
13723
|
}
|
|
13678
13724
|
return `${trigger.type}`;
|
|
13679
13725
|
}
|
|
@@ -13888,11 +13934,18 @@ async function promptForTriggers(repositories) {
|
|
|
13888
13934
|
triggerRepoIds = filterResponse.repos;
|
|
13889
13935
|
}
|
|
13890
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);
|
|
13891
13943
|
triggers.push({
|
|
13892
13944
|
type: "github",
|
|
13893
13945
|
config: {
|
|
13894
13946
|
event: eventResponse.event,
|
|
13895
|
-
...triggerRepoIds ? { repository_ids: triggerRepoIds } : {}
|
|
13947
|
+
...triggerRepoIds ? { repository_ids: triggerRepoIds } : {},
|
|
13948
|
+
...excludedActors ? { excluded_actors: excludedActors } : {}
|
|
13896
13949
|
}
|
|
13897
13950
|
});
|
|
13898
13951
|
} else if (typeResponse.type === "gitlab") {
|
|
@@ -13916,11 +13969,18 @@ async function promptForTriggers(repositories) {
|
|
|
13916
13969
|
triggerRepoIds = filterResponse.repos;
|
|
13917
13970
|
}
|
|
13918
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);
|
|
13919
13978
|
triggers.push({
|
|
13920
13979
|
type: "gitlab",
|
|
13921
13980
|
config: {
|
|
13922
13981
|
event: eventResponse.event,
|
|
13923
|
-
...triggerRepoIds ? { repository_ids: triggerRepoIds } : {}
|
|
13982
|
+
...triggerRepoIds ? { repository_ids: triggerRepoIds } : {},
|
|
13983
|
+
...excludedActors ? { excluded_actors: excludedActors } : {}
|
|
13924
13984
|
}
|
|
13925
13985
|
});
|
|
13926
13986
|
}
|
|
@@ -13948,6 +14008,14 @@ async function automationCreateCommand(name, options) {
|
|
|
13948
14008
|
process.exit(1);
|
|
13949
14009
|
}
|
|
13950
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
|
+
}
|
|
13951
14019
|
const agentSelection = applyAgentSelection(
|
|
13952
14020
|
{
|
|
13953
14021
|
agent_provider: parseAgentProviderOption(options.agentProvider),
|
|
@@ -14026,21 +14094,25 @@ async function automationCreateCommand(name, options) {
|
|
|
14026
14094
|
}
|
|
14027
14095
|
if (options.triggerGithub) {
|
|
14028
14096
|
const githubRepoIds = resolveTriggerRepositoryIds(repositories, options.triggerGithubRepos, "github");
|
|
14097
|
+
const githubExcludedActors = parseExcludedActorsOption(options.triggerGithubExcludeUsers);
|
|
14029
14098
|
triggers.push({
|
|
14030
14099
|
type: "github",
|
|
14031
14100
|
config: {
|
|
14032
14101
|
event: options.triggerGithub,
|
|
14033
|
-
...githubRepoIds ? { repository_ids: githubRepoIds } : {}
|
|
14102
|
+
...githubRepoIds ? { repository_ids: githubRepoIds } : {},
|
|
14103
|
+
...githubExcludedActors ? { excluded_actors: githubExcludedActors } : {}
|
|
14034
14104
|
}
|
|
14035
14105
|
});
|
|
14036
14106
|
}
|
|
14037
14107
|
if (options.triggerGitlab) {
|
|
14038
14108
|
const gitlabRepoIds = resolveTriggerRepositoryIds(repositories, options.triggerGitlabRepos, "gitlab");
|
|
14109
|
+
const gitlabExcludedActors = parseExcludedActorsOption(options.triggerGitlabExcludeUsers);
|
|
14039
14110
|
triggers.push({
|
|
14040
14111
|
type: "gitlab",
|
|
14041
14112
|
config: {
|
|
14042
14113
|
event: options.triggerGitlab,
|
|
14043
|
-
...gitlabRepoIds ? { repository_ids: gitlabRepoIds } : {}
|
|
14114
|
+
...gitlabRepoIds ? { repository_ids: gitlabRepoIds } : {},
|
|
14115
|
+
...gitlabExcludedActors ? { excluded_actors: gitlabExcludedActors } : {}
|
|
14044
14116
|
}
|
|
14045
14117
|
});
|
|
14046
14118
|
}
|
|
@@ -14108,6 +14180,15 @@ async function automationEditCommand(id, options) {
|
|
|
14108
14180
|
process.exit(1);
|
|
14109
14181
|
}
|
|
14110
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
|
+
}
|
|
14111
14192
|
const parsedAgent = {
|
|
14112
14193
|
agent_provider: parseAgentProviderOption(options.agentProvider),
|
|
14113
14194
|
model: parseModelOption(options.model),
|
|
@@ -14125,7 +14206,7 @@ async function automationEditCommand(id, options) {
|
|
|
14125
14206
|
model: existing.automation.model
|
|
14126
14207
|
});
|
|
14127
14208
|
const body = {};
|
|
14128
|
-
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;
|
|
14129
14210
|
if (!hasOptions) {
|
|
14130
14211
|
const nameResponse = await prompts4({
|
|
14131
14212
|
type: "text",
|
|
@@ -14203,11 +14284,13 @@ async function automationEditCommand(id, options) {
|
|
|
14203
14284
|
options.triggerGithubRepos,
|
|
14204
14285
|
"github"
|
|
14205
14286
|
);
|
|
14287
|
+
const githubExcludedActors = parseExcludedActorsOption(options.triggerGithubExcludeUsers);
|
|
14206
14288
|
triggers.push({
|
|
14207
14289
|
type: "github",
|
|
14208
14290
|
config: {
|
|
14209
14291
|
event: options.triggerGithub,
|
|
14210
|
-
...githubRepoIds ? { repository_ids: githubRepoIds } : {}
|
|
14292
|
+
...githubRepoIds ? { repository_ids: githubRepoIds } : {},
|
|
14293
|
+
...githubExcludedActors ? { excluded_actors: githubExcludedActors } : {}
|
|
14211
14294
|
}
|
|
14212
14295
|
});
|
|
14213
14296
|
}
|
|
@@ -14218,15 +14301,41 @@ async function automationEditCommand(id, options) {
|
|
|
14218
14301
|
options.triggerGitlabRepos,
|
|
14219
14302
|
"gitlab"
|
|
14220
14303
|
);
|
|
14304
|
+
const gitlabExcludedActors = parseExcludedActorsOption(options.triggerGitlabExcludeUsers);
|
|
14221
14305
|
triggers.push({
|
|
14222
14306
|
type: "gitlab",
|
|
14223
14307
|
config: {
|
|
14224
14308
|
event: options.triggerGitlab,
|
|
14225
|
-
...gitlabRepoIds ? { repository_ids: gitlabRepoIds } : {}
|
|
14309
|
+
...gitlabRepoIds ? { repository_ids: gitlabRepoIds } : {},
|
|
14310
|
+
...gitlabExcludedActors ? { excluded_actors: gitlabExcludedActors } : {}
|
|
14226
14311
|
}
|
|
14227
14312
|
});
|
|
14228
14313
|
}
|
|
14229
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
|
+
}
|
|
14230
14339
|
}
|
|
14231
14340
|
if (options.environment) {
|
|
14232
14341
|
const envResp = await orgAuthenticatedFetch("/v1/environments");
|
|
@@ -20222,7 +20331,7 @@ automation.command("get <id>").description("Get automation details by ID").actio
|
|
|
20222
20331
|
process.exit(1);
|
|
20223
20332
|
}
|
|
20224
20333
|
});
|
|
20225
|
-
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) => {
|
|
20226
20335
|
try {
|
|
20227
20336
|
await automationCreateCommand(name, {
|
|
20228
20337
|
...options,
|
|
@@ -20237,7 +20346,7 @@ automation.command("create [name]").description("Create a new automation").optio
|
|
|
20237
20346
|
process.exit(1);
|
|
20238
20347
|
}
|
|
20239
20348
|
});
|
|
20240
|
-
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) => {
|
|
20241
20350
|
try {
|
|
20242
20351
|
await automationEditCommand(id, options);
|
|
20243
20352
|
} catch (error) {
|