replicas-cli 0.3.118 → 0.3.120

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.
Files changed (2) hide show
  1. package/dist/index.cjs +44 -34
  2. package/package.json +1 -1
package/dist/index.cjs CHANGED
@@ -24001,6 +24001,7 @@ var REPLICAS_MCP_TOOLS = {
24001
24001
  saveChannelPreset: "save_channel_preset",
24002
24002
  deleteChannelPreset: "delete_channel_preset",
24003
24003
  updateChannelSettings: "update_channel_settings",
24004
+ setThreadMuted: "set_thread_muted",
24004
24005
  spawnSubagent: "spawn_subagent",
24005
24006
  messageSubagent: "message_subagent",
24006
24007
  listSubagents: "list_subagents",
@@ -24032,7 +24033,8 @@ var automationUpdateToolInputSchema = automationToolInputSchema.partial().extend
24032
24033
  agent_provider: external_exports.enum(AGENT).nullable().optional(),
24033
24034
  model: external_exports.string().nullable().optional(),
24034
24035
  thinking_level: external_exports.enum(VALID_THINKING_LEVELS).nullable().optional(),
24035
- workspace_size: external_exports.enum(WORKSPACE_SIZES).optional()
24036
+ workspace_size: external_exports.enum(WORKSPACE_SIZES).optional(),
24037
+ scope: external_exports.literal("org").optional().describe("`org` moves a personal automation to the organization so teammates can see and edit it. It cannot be moved back.")
24036
24038
  });
24037
24039
  var chatPath = { id: external_exports.string().describe("Workspace ID"), chat_id: external_exports.string().describe("Chat ID") };
24038
24040
  var { provider, model, thinkingLevel, title, message } = forkChatRequestSchema.shape;
@@ -24048,6 +24050,36 @@ var updateEnvironmentMcpToolInputSchema = external_exports.object({
24048
24050
  ...updateEnvironmentMcpRequestSchema.shape
24049
24051
  });
24050
24052
 
24053
+ // ../shared/src/scout.ts
24054
+ var SCOUT_SOURCE_TYPES = ["slack", "linear"];
24055
+ var SCOUT_PRESET_NAME_MAX_LENGTH = 50;
24056
+ var SCOUT_PRESET_ICONS = [
24057
+ "users",
24058
+ "user",
24059
+ "inbox",
24060
+ "building",
24061
+ "bug",
24062
+ "message-circle",
24063
+ "headphones",
24064
+ "heart",
24065
+ "star",
24066
+ "flag",
24067
+ "zap",
24068
+ "shield",
24069
+ "code",
24070
+ "terminal",
24071
+ "rocket",
24072
+ "wrench",
24073
+ "briefcase",
24074
+ "globe",
24075
+ "book-open",
24076
+ "lightbulb",
24077
+ "target",
24078
+ "bell",
24079
+ "layers",
24080
+ "tag"
24081
+ ];
24082
+
24051
24083
  // ../shared/src/default-skills/replicas-agent/abilities/computer.ts
24052
24084
  var SECTION = `### Computer use (Linux desktop control)
24053
24085
  Drive the workspace's Linux desktop - open a browser, click, type, scroll, screenshot, record - via the \`replicas computer\` CLI. Every Replicas workspace boots with a live H.264 and Opus stream published as an authenticated preview, so a \`Desktop\` tab is always available in the dashboard. Use \`replicas computer info\` to get the viewer URL when you want to share it (e.g. point a user on Slack at the live stream).
@@ -26081,6 +26113,8 @@ replicas automation edit <id> \\
26081
26113
 
26082
26114
  \`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.
26083
26115
 
26116
+ \`replicas automation edit <id> --move-to-org\` turns a personal automation into a shared one the whole team can see. It can't be undone.
26117
+
26084
26118
  \`replicas automation edit <id>\` with no flags drops into interactive mode.
26085
26119
 
26086
26120
  ## Long-running services
@@ -28667,36 +28701,6 @@ var SLASH_COMMANDS = [
28667
28701
  }))
28668
28702
  ];
28669
28703
 
28670
- // ../shared/src/scout.ts
28671
- var SCOUT_SOURCE_TYPES = ["slack", "linear"];
28672
- var SCOUT_PRESET_NAME_MAX_LENGTH = 50;
28673
- var SCOUT_PRESET_ICONS = [
28674
- "users",
28675
- "user",
28676
- "inbox",
28677
- "building",
28678
- "bug",
28679
- "message-circle",
28680
- "headphones",
28681
- "heart",
28682
- "star",
28683
- "flag",
28684
- "zap",
28685
- "shield",
28686
- "code",
28687
- "terminal",
28688
- "rocket",
28689
- "wrench",
28690
- "briefcase",
28691
- "globe",
28692
- "book-open",
28693
- "lightbulb",
28694
- "target",
28695
- "bell",
28696
- "layers",
28697
- "tag"
28698
- ];
28699
-
28700
28704
  // ../shared/src/replicas-config.ts
28701
28705
  var import_yaml2 = __toESM(require_dist());
28702
28706
 
@@ -28725,7 +28729,7 @@ var headlessAgentRequestSchema = external_exports.object({
28725
28729
  });
28726
28730
 
28727
28731
  // ../shared/src/cli-version.ts
28728
- var CLI_VERSION = "0.3.118";
28732
+ var CLI_VERSION = "0.3.120";
28729
28733
 
28730
28734
  // ../shared/src/version.ts
28731
28735
  function compareVersions(v1, v2) {
@@ -28834,6 +28838,11 @@ var scoutSlackRelayRequestSchema = external_exports.object({
28834
28838
  workspace_id: external_exports.string().optional().describe(`Existing workspace id, from \`${REPLICAS_MCP_TOOLS.listWorkspaces}\` or a workspace link in the thread, to bind a thread without a workspace to before relaying. The author must be able to see it. Omit to relay into the thread's own workspace.`),
28835
28839
  message_ts: external_exports.string().optional().describe("Timestamp of the Slack message that led to this relay (the envelope's `message_ts`). Required with `workspace_id`; the server verifies this message and its author.")
28836
28840
  });
28841
+ var scoutSlackSetThreadMutedRequestSchema = external_exports.object({
28842
+ channel_id: slackChannelIdSchema,
28843
+ thread_ts: slackThreadTsSchema,
28844
+ muted: external_exports.boolean().describe("true to mute Replicas in this thread, false to unmute it.")
28845
+ });
28837
28846
  var scoutListWorkspacesRequestSchema = external_exports.object({
28838
28847
  channel_id: slackChannelIdSchema,
28839
28848
  thread_ts: slackThreadTsSchema,
@@ -33599,7 +33608,7 @@ async function automationEditCommand(id, options) {
33599
33608
  model: existing.automation.model
33600
33609
  });
33601
33610
  const body = {};
33602
- const hasOptions = options.name || options.prompt || options.description !== void 0 || workspaceSize || options.enabled !== void 0 || options.prFollowups !== void 0 || options.triggerCron.length > 0 || options.triggerGithub || options.triggerGitlab || options.environment || options.triggerGithubExcludeUsers !== void 0 || options.triggerGitlabExcludeUsers !== void 0 || options.githubChecks !== void 0 || options.addGithubChecks !== 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 || runAt !== void 0 || maxRuns !== void 0 || workspaceTarget !== void 0 || options.background !== void 0;
33611
+ const hasOptions = options.name || options.prompt || options.description !== void 0 || workspaceSize || options.enabled !== void 0 || options.prFollowups !== void 0 || options.triggerCron.length > 0 || options.triggerGithub || options.triggerGitlab || options.environment || options.triggerGithubExcludeUsers !== void 0 || options.triggerGitlabExcludeUsers !== void 0 || options.githubChecks !== void 0 || options.addGithubChecks !== 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 || runAt !== void 0 || maxRuns !== void 0 || workspaceTarget !== void 0 || options.background !== void 0 || options.moveToOrg;
33603
33612
  if (!hasOptions) {
33604
33613
  const nameResponse = await ask({
33605
33614
  type: "text",
@@ -33714,6 +33723,7 @@ async function automationEditCommand(id, options) {
33714
33723
  if (options.fastMode !== void 0) body.fast_mode = options.fastMode;
33715
33724
  if (maxRuns !== void 0) body.max_runs = maxRuns;
33716
33725
  if (options.background !== void 0) body.background = options.background;
33726
+ if (options.moveToOrg) body.scope = "org";
33717
33727
  Object.assign(body, workspaceTarget);
33718
33728
  Object.assign(body, agentSelection);
33719
33729
  }
@@ -34865,7 +34875,7 @@ var automation = program.command("automation").alias("auto").description("Manage
34865
34875
  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));
34866
34876
  automation.command("get <id>").description("Get automation details by ID").action(run(automationGetCommand));
34867
34877
  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")').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")').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 })));
34868
- 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)", collect, []).option("--trigger-cron-timezone <timezone>", "Timezone for cron schedules").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-github-reviewers <users>", "Comma-separated GitHub usernames to fire for (required with pull_request.review_requested)").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("--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).action(run(automationEditCommand));
34878
+ 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)", collect, []).option("--trigger-cron-timezone <timezone>", "Timezone for cron schedules").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-github-reviewers <users>", "Comma-separated GitHub usernames to fire for (required with pull_request.review_requested)").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("--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));
34869
34879
  automation.command("run <id>").description("Manually trigger an automation (cron-triggered automations only)").action(run(automationRunCommand));
34870
34880
  automation.command("delete <id>").description("Delete an automation").option("-f, --force", "Skip confirmation prompt").action(run(automationDeleteCommand));
34871
34881
  automation.command("check <checkRunId>").description("Report this automation run's verdict on one of its GitHub checks").requiredOption("--token <token>", "Ownership token for this check, exactly as given in the prompt").requiredOption("--conclusion <conclusion>", "success or failure").requiredOption("--title <title>", "One-line verdict shown on the check").option("--summary <summary>", "What was checked and why it passed or failed").action(run(automationCheckCommand));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "replicas-cli",
3
- "version": "0.3.118",
3
+ "version": "0.3.120",
4
4
  "description": "CLI for managing Replicas workspaces - SSH into cloud dev environments with automatic port forwarding",
5
5
  "main": "dist/index.cjs",
6
6
  "bin": {