replicas-cli 0.3.274 → 0.3.276
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.cjs +69 -51
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -16938,6 +16938,62 @@ var init_pr_footer = __esm({
|
|
|
16938
16938
|
}
|
|
16939
16939
|
});
|
|
16940
16940
|
|
|
16941
|
+
// ../shared/src/routes/linear.ts
|
|
16942
|
+
var linearSessionMetadataSchema, LINEAR_WORKFLOW_STATE_TYPES;
|
|
16943
|
+
var init_linear = __esm({
|
|
16944
|
+
"../shared/src/routes/linear.ts"() {
|
|
16945
|
+
"use strict";
|
|
16946
|
+
init_zod();
|
|
16947
|
+
init_agent();
|
|
16948
|
+
linearSessionMetadataSchema = external_exports.object({
|
|
16949
|
+
via_mothership: external_exports.boolean().optional(),
|
|
16950
|
+
attached: external_exports.boolean().optional(),
|
|
16951
|
+
issue_id: external_exports.string(),
|
|
16952
|
+
issue_identifier: external_exports.string(),
|
|
16953
|
+
issue_title: external_exports.string(),
|
|
16954
|
+
issue_description: external_exports.string(),
|
|
16955
|
+
issue_url: external_exports.string(),
|
|
16956
|
+
comment_id: external_exports.string(),
|
|
16957
|
+
comment_body: external_exports.string(),
|
|
16958
|
+
triggered_by_id: external_exports.string().optional(),
|
|
16959
|
+
triggered_by_name: external_exports.string().optional(),
|
|
16960
|
+
triggered_by_email: external_exports.string().optional(),
|
|
16961
|
+
linear_workspace_id: external_exports.string().optional(),
|
|
16962
|
+
creator_id: external_exports.string().optional(),
|
|
16963
|
+
creator_name: external_exports.string().optional(),
|
|
16964
|
+
creator_email: external_exports.string().optional(),
|
|
16965
|
+
assignee_id: external_exports.string().optional(),
|
|
16966
|
+
assignee_name: external_exports.string().optional(),
|
|
16967
|
+
assignee_email: external_exports.string().optional(),
|
|
16968
|
+
issue_state: external_exports.string().optional(),
|
|
16969
|
+
parent_issue: external_exports.object({
|
|
16970
|
+
id: external_exports.string(),
|
|
16971
|
+
identifier: external_exports.string(),
|
|
16972
|
+
title: external_exports.string(),
|
|
16973
|
+
description: external_exports.string().nullable()
|
|
16974
|
+
}).optional(),
|
|
16975
|
+
workspace: external_exports.object({
|
|
16976
|
+
id: external_exports.string(),
|
|
16977
|
+
coding_agent: external_exports.custom((value) => typeof value === "string" && isValidAgentProvider(value)),
|
|
16978
|
+
task_description: external_exports.string(),
|
|
16979
|
+
created_at: external_exports.string()
|
|
16980
|
+
}).optional()
|
|
16981
|
+
});
|
|
16982
|
+
LINEAR_WORKFLOW_STATE_TYPES = ["triage", "backlog", "unstarted", "started", "completed", "canceled", "duplicate"];
|
|
16983
|
+
}
|
|
16984
|
+
});
|
|
16985
|
+
|
|
16986
|
+
// ../shared/src/automations/linear/index.ts
|
|
16987
|
+
var LINEAR_ISSUE_STATE_CHANGED_EVENT, LINEAR_STATE_TYPES;
|
|
16988
|
+
var init_linear2 = __esm({
|
|
16989
|
+
"../shared/src/automations/linear/index.ts"() {
|
|
16990
|
+
"use strict";
|
|
16991
|
+
init_linear();
|
|
16992
|
+
LINEAR_ISSUE_STATE_CHANGED_EVENT = "issue.state_changed";
|
|
16993
|
+
LINEAR_STATE_TYPES = LINEAR_WORKFLOW_STATE_TYPES.filter((type) => type !== "duplicate");
|
|
16994
|
+
}
|
|
16995
|
+
});
|
|
16996
|
+
|
|
16941
16997
|
// ../shared/src/uuid.ts
|
|
16942
16998
|
var UUID_RE;
|
|
16943
16999
|
var init_uuid = __esm({
|
|
@@ -16999,13 +17055,14 @@ function getReviewerLoginsError(event, logins) {
|
|
|
16999
17055
|
if (isReviewRequested === !!logins?.some((login) => login.trim().replace(/^@+/, ""))) return null;
|
|
17000
17056
|
return isReviewRequested ? "The PR review requested trigger needs at least one GitHub username" : "Requested reviewers only apply to the PR review requested trigger";
|
|
17001
17057
|
}
|
|
17002
|
-
var repositoryTriggerConfigSchema, cronTriggerSchema, githubTriggerSchema, gitlabTriggerSchema, automationTriggerSchema;
|
|
17058
|
+
var repositoryTriggerConfigSchema, cronTriggerSchema, githubTriggerSchema, gitlabTriggerSchema, linearTriggerConfigSchema, automationTriggerSchema;
|
|
17003
17059
|
var init_trigger_schemas = __esm({
|
|
17004
17060
|
"../shared/src/automations/trigger-schemas.ts"() {
|
|
17005
17061
|
"use strict";
|
|
17006
17062
|
init_zod();
|
|
17007
17063
|
init_uuid();
|
|
17008
17064
|
init_github();
|
|
17065
|
+
init_linear2();
|
|
17009
17066
|
repositoryTriggerConfigSchema = external_exports.object({
|
|
17010
17067
|
event: external_exports.string(),
|
|
17011
17068
|
repository_ids: external_exports.array(external_exports.string().regex(UUID_RE, "must be a repository id")).optional(),
|
|
@@ -17022,12 +17079,14 @@ var init_trigger_schemas = __esm({
|
|
|
17022
17079
|
})
|
|
17023
17080
|
});
|
|
17024
17081
|
gitlabTriggerSchema = external_exports.object({ type: external_exports.literal("gitlab"), config: repositoryTriggerConfigSchema });
|
|
17082
|
+
linearTriggerConfigSchema = external_exports.object({ event: external_exports.string(), team_ids: external_exports.array(external_exports.string()).optional(), state_types: external_exports.array(external_exports.enum(LINEAR_STATE_TYPES)).optional() });
|
|
17025
17083
|
automationTriggerSchema = external_exports.discriminatedUnion("type", [
|
|
17026
17084
|
cronTriggerSchema,
|
|
17027
17085
|
githubTriggerSchema,
|
|
17028
17086
|
gitlabTriggerSchema,
|
|
17029
17087
|
external_exports.object({ type: external_exports.literal("slack"), config: external_exports.object({ event: external_exports.string(), channel_ids: external_exports.array(external_exports.string()).optional(), group_thread_replies: external_exports.boolean().optional() }) }),
|
|
17030
17088
|
external_exports.object({ type: external_exports.literal("sentry"), config: external_exports.object({ event: external_exports.string(), project_slugs: external_exports.array(external_exports.string()).optional(), min_level: external_exports.string().optional() }) }),
|
|
17089
|
+
external_exports.object({ type: external_exports.literal("linear"), config: linearTriggerConfigSchema }),
|
|
17031
17090
|
external_exports.object({ type: external_exports.literal("custom"), config: external_exports.object({}) })
|
|
17032
17091
|
]);
|
|
17033
17092
|
}
|
|
@@ -17301,6 +17360,7 @@ var init_replicas_mcp = __esm({
|
|
|
17301
17360
|
"use strict";
|
|
17302
17361
|
init_zod();
|
|
17303
17362
|
init_agent();
|
|
17363
|
+
init_linear2();
|
|
17304
17364
|
init_trigger_schemas();
|
|
17305
17365
|
init_types5();
|
|
17306
17366
|
init_chat_fork();
|
|
@@ -17358,7 +17418,7 @@ var init_replicas_mcp = __esm({
|
|
|
17358
17418
|
prompt: external_exports.string().describe("Prompt each automation run starts with."),
|
|
17359
17419
|
environment_id: external_exports.string().describe(`Environment id from \`${REPLICAS_MCP_TOOLS.listEnvironments}\`.`),
|
|
17360
17420
|
triggers: external_exports.array(automationTriggerSchema).min(1).describe(
|
|
17361
|
-
|
|
17421
|
+
`One or more triggers. Cron: \`{ "type": "cron", "config": { "schedule": "0 9 * * 1", "timezone": "America/New_York" } }\`. GitHub: \`{ "type": "github", "config": { "event": "pull_request.opened", "repository_ids": ["<repository uuid>"] } }\`. Linear: \`{ "type": "linear", "config": { "event": "${LINEAR_ISSUE_STATE_CHANGED_EVENT}", "state_types": ["completed"] } }\`.`
|
|
17362
17422
|
),
|
|
17363
17423
|
description: external_exports.string().optional().describe("One-line summary shown in the dashboard."),
|
|
17364
17424
|
plan_mode: external_exports.boolean().optional(),
|
|
@@ -18664,7 +18724,7 @@ replicas gpu delete
|
|
|
18664
18724
|
|
|
18665
18725
|
// ../shared/src/default-skills/replicas-agent/abilities/linear.ts
|
|
18666
18726
|
var SECTION7, REFERENCE7, LINEAR_ABILITY;
|
|
18667
|
-
var
|
|
18727
|
+
var init_linear3 = __esm({
|
|
18668
18728
|
"../shared/src/default-skills/replicas-agent/abilities/linear.ts"() {
|
|
18669
18729
|
"use strict";
|
|
18670
18730
|
SECTION7 = `### Linear
|
|
@@ -20334,7 +20394,7 @@ var init_registry = __esm({
|
|
|
20334
20394
|
init_github2();
|
|
20335
20395
|
init_gitlab();
|
|
20336
20396
|
init_gpu();
|
|
20337
|
-
|
|
20397
|
+
init_linear3();
|
|
20338
20398
|
init_media();
|
|
20339
20399
|
init_previews();
|
|
20340
20400
|
init_plugins();
|
|
@@ -31631,7 +31691,7 @@ var CLI_VERSION;
|
|
|
31631
31691
|
var init_cli_version = __esm({
|
|
31632
31692
|
"../shared/src/cli-version.ts"() {
|
|
31633
31693
|
"use strict";
|
|
31634
|
-
CLI_VERSION = "0.3.
|
|
31694
|
+
CLI_VERSION = "0.3.276";
|
|
31635
31695
|
}
|
|
31636
31696
|
});
|
|
31637
31697
|
|
|
@@ -31861,50 +31921,6 @@ var init_external_accounts = __esm({
|
|
|
31861
31921
|
}
|
|
31862
31922
|
});
|
|
31863
31923
|
|
|
31864
|
-
// ../shared/src/routes/linear.ts
|
|
31865
|
-
var linearSessionMetadataSchema;
|
|
31866
|
-
var init_linear2 = __esm({
|
|
31867
|
-
"../shared/src/routes/linear.ts"() {
|
|
31868
|
-
"use strict";
|
|
31869
|
-
init_zod();
|
|
31870
|
-
init_agent();
|
|
31871
|
-
linearSessionMetadataSchema = external_exports.object({
|
|
31872
|
-
via_mothership: external_exports.boolean().optional(),
|
|
31873
|
-
attached: external_exports.boolean().optional(),
|
|
31874
|
-
issue_id: external_exports.string(),
|
|
31875
|
-
issue_identifier: external_exports.string(),
|
|
31876
|
-
issue_title: external_exports.string(),
|
|
31877
|
-
issue_description: external_exports.string(),
|
|
31878
|
-
issue_url: external_exports.string(),
|
|
31879
|
-
comment_id: external_exports.string(),
|
|
31880
|
-
comment_body: external_exports.string(),
|
|
31881
|
-
triggered_by_id: external_exports.string().optional(),
|
|
31882
|
-
triggered_by_name: external_exports.string().optional(),
|
|
31883
|
-
triggered_by_email: external_exports.string().optional(),
|
|
31884
|
-
linear_workspace_id: external_exports.string().optional(),
|
|
31885
|
-
creator_id: external_exports.string().optional(),
|
|
31886
|
-
creator_name: external_exports.string().optional(),
|
|
31887
|
-
creator_email: external_exports.string().optional(),
|
|
31888
|
-
assignee_id: external_exports.string().optional(),
|
|
31889
|
-
assignee_name: external_exports.string().optional(),
|
|
31890
|
-
assignee_email: external_exports.string().optional(),
|
|
31891
|
-
issue_state: external_exports.string().optional(),
|
|
31892
|
-
parent_issue: external_exports.object({
|
|
31893
|
-
id: external_exports.string(),
|
|
31894
|
-
identifier: external_exports.string(),
|
|
31895
|
-
title: external_exports.string(),
|
|
31896
|
-
description: external_exports.string().nullable()
|
|
31897
|
-
}).optional(),
|
|
31898
|
-
workspace: external_exports.object({
|
|
31899
|
-
id: external_exports.string(),
|
|
31900
|
-
coding_agent: external_exports.custom((value) => typeof value === "string" && isValidAgentProvider(value)),
|
|
31901
|
-
task_description: external_exports.string(),
|
|
31902
|
-
created_at: external_exports.string()
|
|
31903
|
-
}).optional()
|
|
31904
|
-
});
|
|
31905
|
-
}
|
|
31906
|
-
});
|
|
31907
|
-
|
|
31908
31924
|
// ../shared/src/routes/slack.ts
|
|
31909
31925
|
var init_slack2 = __esm({
|
|
31910
31926
|
"../shared/src/routes/slack.ts"() {
|
|
@@ -41927,6 +41943,7 @@ var init_registry2 = __esm({
|
|
|
41927
41943
|
init_gitlab3();
|
|
41928
41944
|
init_slack3();
|
|
41929
41945
|
init_sentry3();
|
|
41946
|
+
init_linear2();
|
|
41930
41947
|
init_custom();
|
|
41931
41948
|
}
|
|
41932
41949
|
});
|
|
@@ -41946,6 +41963,7 @@ var init_automations = __esm({
|
|
|
41946
41963
|
init_cron();
|
|
41947
41964
|
init_slack3();
|
|
41948
41965
|
init_sentry3();
|
|
41966
|
+
init_linear2();
|
|
41949
41967
|
init_custom();
|
|
41950
41968
|
init_trigger_schemas();
|
|
41951
41969
|
}
|
|
@@ -42363,7 +42381,7 @@ var init_src = __esm({
|
|
|
42363
42381
|
init_gitlab2();
|
|
42364
42382
|
init_integrations();
|
|
42365
42383
|
init_external_accounts();
|
|
42366
|
-
|
|
42384
|
+
init_linear();
|
|
42367
42385
|
init_slack2();
|
|
42368
42386
|
init_scout2();
|
|
42369
42387
|
init_plugins2();
|
|
@@ -48754,7 +48772,7 @@ var init_src2 = __esm({
|
|
|
48754
48772
|
credentials.command("remove <service>").description("Remove stored credentials for a service (also claude, codex, muse subscriptions)").option("-o, --org", "Organization credentials instead of personal").action(run(credentialsRemoveCommand));
|
|
48755
48773
|
credentials.command("usage").description("Show how much of each connected Claude and ChatGPT subscription's 5-hour and weekly limits is used (personal and organization by default)").addOption(new import_commander.Option("-o, --org", "Only organization subscriptions").conflicts("user")).option("-u, --user", "Only your personal subscriptions").action(run(credentialsUsageCommand));
|
|
48756
48774
|
automation = program.command("automation").alias("auto").description("Manage automations");
|
|
48757
|
-
automation.command("list").description("List all automations").option("-p, --page <page>", "Page number").option("-l, --limit <limit>", "Number of items per page").option("--owner <owner>", "Ownership filter: org, user, all").option("--trigger-type <type>", "Only automations with a trigger of this type (cron, github, gitlab, slack, sentry, custom)").option("--enabled <enabled>", "Only enabled or disabled automations (true/false)").option("--search <search>", "Case-insensitive substring match on the name").option("--background <background>", "Only background (true) or main-list (false) automations").action(run(automationListCommand));
|
|
48775
|
+
automation.command("list").description("List all automations").option("-p, --page <page>", "Page number").option("-l, --limit <limit>", "Number of items per page").option("--owner <owner>", "Ownership filter: org, user, all").option("--trigger-type <type>", "Only automations with a trigger of this type (cron, github, gitlab, slack, sentry, linear, custom)").option("--enabled <enabled>", "Only enabled or disabled automations (true/false)").option("--search <search>", "Case-insensitive substring match on the name").option("--background <background>", "Only background (true) or main-list (false) automations").action(run(automationListCommand));
|
|
48758
48776
|
automation.command("get <id>").description("Get automation details by ID").action(run(automationGetCommand));
|
|
48759
48777
|
automation.command("create [name]").description("Create a new automation").option("-p, --prompt <prompt>", "Prompt for the automation").option("-d, --description <description>", "Description shown with the automation").option("-e, --environment <environment>", "Environment name or ID").option("--size <size>", "Size of workspaces runs create (not a reused existing one): small (default), large, ultra").option("--trigger-cron <schedule>", 'Cron schedule expression, e.g. "0 9 * * 1-5" (repeatable)', collect, []).option("--trigger-cron-timezone <timezone>", "Timezone for cron schedules (default: UTC)").option("--trigger-github <event>", 'GitHub event, e.g. "pull_request.opened" (repeatable)', collect, []).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-github-reviewers <users>", "Comma-separated GitHub usernames to fire for (required with pull_request.review_requested)").option("--trigger-gitlab <event>", 'GitLab event, e.g. "merge_request.opened" (repeatable)', collect, []).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("--github-checks <names>", "Comma-separated GitHub check names to create on matching PRs (requires a PR opened/updated trigger)").option("--lifecycle <policy>", "Workspace lifecycle: delete_when_done (default for new automations), sleep_when_done, archive_when_done, 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)").option("--pr-followups", "Allow follow-up actions on matching PRs").option("--agent-provider <provider>", 'Coding agent to use: claude, codex, cursor (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, xhigh, max (or "none" to clear)').option("--plan-mode", "Run automation messages in plan mode").option("--goal-mode", "Set automation messages as goals").option("--fast-mode", "Run automation messages in fast mode").option("--personal", "Create a personal automation owned by the authenticated user").option("--in <duration>", "Run once after this long, e.g. 30m, 2h, 3d, 1w (inside a workspace, defaults --workspace to current)").option("--at <datetime>", "Run once at this ISO-8601 time with timezone, e.g. 2026-10-08T09:00:00-07:00").option("--max-runs <n>", 'Delete the automation after this many runs ("none" for unlimited)').option("--workspace <target>", "Where runs go: new (default, new workspace each run), reuse (one workspace created on the first run), current (this workspace), or a workspace ID").option("--background", "Keep it out of the main automations list (for offhand follow-ups)").option("--disabled", "Create in disabled state").action(run((name, options) => automationCreateCommand(name, { ...options, enabled: !options.disabled })));
|
|
48760
48778
|
automation.command("edit <id>").description("Edit an existing automation").option("-n, --name <name>", "New name").option("-p, --prompt <prompt>", "New prompt").option("-d, --description <description>", "New description (pass empty string to clear)").option("--size <size>", "Size of workspaces runs create (not a reused existing one): small, large, ultra").option("--enabled <enabled>", "Enable or disable (true/false)").option("--trigger-cron <schedule>", "Set cron schedule (repeatable; replaces existing triggers unless --keep-triggers)", collect, []).option("--trigger-cron-timezone <timezone>", "Timezone for cron schedules").option("--trigger-github <event>", "Set GitHub event (repeatable; replaces existing triggers unless --keep-triggers)", collect, []).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-github-reviewers <users>", "Comma-separated GitHub usernames to fire for (required with pull_request.review_requested)").option("--trigger-gitlab <event>", "Set GitLab event (repeatable; replaces existing triggers unless --keep-triggers)", collect, []).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("--keep-triggers", "Add the --trigger-cron, --trigger-github, --trigger-gitlab, --in or --at triggers to the existing ones instead of replacing them").option("--github-checks <names>", "Comma-separated GitHub check names to create on matching PRs (replaces the current list; pass empty string to remove them)").option("--add-github-checks <names>", "Comma-separated GitHub check names to add, keeping the ones already configured").option("--environment <environment>", "Environment name or ID").option("--lifecycle <policy>", "Workspace lifecycle: delete_when_done (default for new automations), sleep_when_done, archive_when_done, 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)").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 (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, xhigh, 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 goals (true/false)", parseBooleanOption).option("--fast-mode <enabled>", "Run automation messages in fast mode (true/false)", parseBooleanOption).option("--in <duration>", "Replace triggers with a one-time run after this long, e.g. 30m, 2h, 3d, 1w").option("--at <datetime>", "Replace triggers with a one-time run at this ISO-8601 time with timezone").option("--max-runs <n>", 'Delete the automation after this many runs in total ("none" for unlimited)').option("--workspace <target>", "Where runs go: new, reuse, current, or a workspace ID").option("--background <enabled>", "Keep it out of the main automations list (true/false)", parseBooleanOption).option("--move-to-org", "Move a personal automation to the organization so teammates can see and edit it (cannot be undone)").action(run(automationEditCommand));
|