replicas-cli 0.3.138 → 0.3.140

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 +15 -13
  2. package/package.json +1 -1
package/dist/index.cjs CHANGED
@@ -26286,10 +26286,10 @@ var SESSION_HISTORY_ABILITY = {
26286
26286
  };
26287
26287
 
26288
26288
  // ../shared/src/slack-response-style.ts
26289
- var SLACK_CONCISE_REPLY_SHAPE = "short and easy to read. Lead with a concise, easy-to-skim answer; add depth when asked. Each send is a deliberate message, not an automatic split of a long answer. Simple requests need only a short answer or, where the surrounding instructions allow it, a fitting reaction. Use common, everyday words, simple sentences, and contractions where they sound natural. Avoid jargon, corporate language, and formal words when a plain word works. Start with what happened or what works now, then add only the context, limits, or next step people need. Cut repetition and play-by-play, but keep anything important. Put long logs and file-by-file recaps in the pull request or workspace unless the user asks for them";
26289
+ var SLACK_CONCISE_REPLY_SHAPE = 'short and easy to read. Lead with a concise, easy-to-skim answer; add depth when asked. Each send is a deliberate message, not an automatic split of a long answer. Simple requests need only a short answer or, where the surrounding instructions allow it, a fitting reaction. Use common, everyday words, simple sentences, and contractions where they sound natural. Avoid jargon, corporate language, and formal words when a plain word works. Start with what happened or what works now, then add only the context, limits, or next step people need. Cut repetition and play-by-play, but keep anything important. Put long logs and file-by-file recaps in the pull request or workspace unless the user asks for them. Never use em dashes; use a comma, period, colon, or parentheses. Skip filler openers ("Great question", "Good catch", "Happy to help"), stock AI words ("delve", "leverage", "seamless", "robust"), closing offers ("Let me know if you need anything else"), and a closing line that restates the answer';
26290
26290
  var SLACK_QUOTE_REPLY_GUIDANCE = "Use a short Slack blockquote (`> quoted text`) only when answering a specific earlier message or when the reply would otherwise have an unclear referent. Quote only the relevant line; do not quote the latest message by default, repeat the full request, or add a blockquote when the reply is already unambiguous. Escape the leading `<` in raw Slack mention and control markup such as `<@U\u2026>` and `<!channel>` as `&lt;` before quoting so it cannot notify anyone.";
26291
26291
  var SLACK_BLOCK_KIT_GUIDANCE = "Use Block Kit whenever structure or a link would make the message faster to scan or use. Before composing a structured message, read Slack's live [block catalog](https://docs.slack.dev/reference/block-kit/blocks) and the linked schema for each block you plan to use; do not rely on memory for which blocks exist or their fields. You have broad leeway to use display-only blocks and `actions` with URL buttons, but do not add controls that require an interaction callback. Keep simple replies as plain text, do not add decorative UI or repeat content across blocks, and always keep `text` as a concise, complete fallback for notifications and accessibility.";
26292
- var SLACK_PR_BUTTON_GUIDANCE = 'The first time you share a given pull request or merge request link in a thread \u2014 the message announcing you opened it \u2014 attach a button for it: send `blocks` alongside `text` \u2014 a `section` block holding your message as `mrkdwn`, then an `actions` block with one element per newly shared link, `{"type": "button", "style": "primary", "text": {"type": "plain_text", "text": "View PR"}, "url": "<pr url>", "action_id": "view_pr"}`. Later messages about a pull request you already linked in this thread keep the link in the sentence and get no button, and never re-post a button for a link someone already has. Label it "View MR" for GitLab, and if there are several give each button a unique `action_id` and name its repository in the label ("View PR \xB7 web"). Always keep `text` populated with the same message \u2014 Slack uses it for notifications and fallback \u2014 and keep the link in the sentence too.';
26292
+ var SLACK_PR_BUTTON_GUIDANCE = 'The first time you share a given pull request or merge request link in a thread (the message announcing you opened it), attach a button for it: send `blocks` alongside `text`, with a `section` block holding your message as `mrkdwn`, then an `actions` block with one element per newly shared link, `{"type": "button", "style": "primary", "text": {"type": "plain_text", "text": "View PR"}, "url": "<pr url>", "action_id": "view_pr"}`. Later messages about a pull request you already linked in this thread keep the link in the sentence and get no button, and never re-post a button for a link someone already has. Label it "View MR" for GitLab, and if there are several give each button a unique `action_id` and name its repository in the label ("View PR \xB7 web"). Always keep `text` populated with the same message, since Slack uses it for notifications and fallback, and keep the link in the sentence too.';
26293
26293
 
26294
26294
  // ../shared/src/default-skills/replicas-agent/abilities/slack.ts
26295
26295
  var SECTION14 = `### Slack
@@ -29023,7 +29023,7 @@ var headlessAgentRequestSchema = external_exports.object({
29023
29023
  });
29024
29024
 
29025
29025
  // ../shared/src/cli-version.ts
29026
- var CLI_VERSION = "0.3.138";
29026
+ var CLI_VERSION = "0.3.140";
29027
29027
 
29028
29028
  // ../shared/src/version.ts
29029
29029
  function compareVersions(v1, v2) {
@@ -35667,16 +35667,18 @@ ${VISUAL_PAGE_RULES}`).action(run(visualizeCommand));
35667
35667
  media.command("share <mediaId>").description("Rotate an image's public forge URL, or create one for video or audio media").action(run(mediaShareCommand));
35668
35668
  media.command("revoke <mediaId>").description("Revoke the public forge URL for uploaded media").action(run(mediaRevokeCommand));
35669
35669
  media.command("delete <mediaId>").description("Permanently delete media uploaded by this workspace").action(run(mediaDeleteCommand));
35670
- const gpu = program.command("gpu").description("Run commands on cloud GPU sandboxes (billed at cost to your organization)");
35671
- const addCreateOptions = (command) => command.option("-g, --gpu <type>", `GPU type with an optional count: ${GPU_TYPES.join(", ")}, e.g. H100:2 (default ${DEFAULT_GPU_TYPE})`).option("-i, --image <image>", `Public registry image (default ${DEFAULT_GPU_IMAGE})`).option("-t, --timeout <duration>", "Maximum lifetime, e.g. 90m or 4h (default 1h, max 24h)").option("--idle-timeout <duration>", "Stop after this long with no running command (default 10m, max 1h)").option("-p, --port <port>", "Expose a container port as a public HTTPS URL (repeatable)", collect, []).option("-e, --env <KEY=value>", "Environment variable for the sandbox (repeatable)", collect, []);
35672
- addCreateOptions(gpu.command("create")).description("Start a GPU sandbox and wait until it is running").option("--no-wait", "Return while the sandbox is still starting").action(run(gpuCreateCommand));
35673
- gpu.command("list").description("List the running GPU sandboxes of this workspace").action(run(gpuListCommand));
35674
- gpu.command("exec [command...]").description("Run a shell command in a GPU sandbox and stream its output: replicas gpu exec -- python train.py").option("-s, --sandbox <id>", "Sandbox ID (defaults to the only running sandbox)").option("-w, --workdir <dir>", `Working directory (default ${COMPUTE_SANDBOX_WORKDIR})`).option("-e, --env <KEY=value>", "Environment variable for the command (repeatable)", collect, []).option("-d, --detach", 'Run in the background and print a job ID for "replicas gpu logs"').action(run(gpuExecCommand));
35675
- gpu.command("logs <jobId>").description("Print the output of a detached job").option("-s, --sandbox <id>", "Sandbox ID (defaults to the only running sandbox)").option("-f, --follow", "Stream until the job exits and exit with its code").action(run(gpuLogsCommand));
35676
- gpu.command("push [local] [remote]").description(`Copy a local file or directory into a GPU sandbox (default . to ${COMPUTE_SANDBOX_WORKDIR}); git repositories honor .gitignore`).option("-s, --sandbox <id>", "Sandbox ID (defaults to the only running sandbox)").action(run(gpuPushCommand));
35677
- gpu.command("pull <remote> [local]").description("Copy a file or directory out of a GPU sandbox into a local directory (default .)").option("-s, --sandbox <id>", "Sandbox ID (defaults to the only running sandbox)").action(run(gpuPullCommand));
35678
- addCreateOptions(gpu.command("run [command...]")).description("Start a GPU sandbox, copy the current directory in, run a command, then stop it: replicas gpu run --gpu H100 -- python train.py").option("--pull <path>", `Copy a path (relative to ${COMPUTE_SANDBOX_WORKDIR}) back into the current directory afterwards (repeatable)`, collect, []).option("--keep", "Keep the sandbox running afterwards").action(run(gpuRunCommand));
35679
- gpu.command("delete [id]").description("Stop a GPU sandbox").option("-s, --sandbox <id>", "Sandbox ID (defaults to the only running sandbox)").action(run(gpuDeleteCommand));
35670
+ if (!process.env.REPLICAS_GPU_DISABLED) {
35671
+ const gpu = program.command("gpu").description("Run commands on cloud GPU sandboxes (billed at cost to your organization)");
35672
+ const addCreateOptions = (command) => command.option("-g, --gpu <type>", `GPU type with an optional count: ${GPU_TYPES.join(", ")}, e.g. H100:2 (default ${DEFAULT_GPU_TYPE})`).option("-i, --image <image>", `Public registry image (default ${DEFAULT_GPU_IMAGE})`).option("-t, --timeout <duration>", "Maximum lifetime, e.g. 90m or 4h (default 1h, max 24h)").option("--idle-timeout <duration>", "Stop after this long with no running command (default 10m, max 1h)").option("-p, --port <port>", "Expose a container port as a public HTTPS URL (repeatable)", collect, []).option("-e, --env <KEY=value>", "Environment variable for the sandbox (repeatable)", collect, []);
35673
+ addCreateOptions(gpu.command("create")).description("Start a GPU sandbox and wait until it is running").option("--no-wait", "Return while the sandbox is still starting").action(run(gpuCreateCommand));
35674
+ gpu.command("list").description("List the running GPU sandboxes of this workspace").action(run(gpuListCommand));
35675
+ gpu.command("exec [command...]").description("Run a shell command in a GPU sandbox and stream its output: replicas gpu exec -- python train.py").option("-s, --sandbox <id>", "Sandbox ID (defaults to the only running sandbox)").option("-w, --workdir <dir>", `Working directory (default ${COMPUTE_SANDBOX_WORKDIR})`).option("-e, --env <KEY=value>", "Environment variable for the command (repeatable)", collect, []).option("-d, --detach", 'Run in the background and print a job ID for "replicas gpu logs"').action(run(gpuExecCommand));
35676
+ gpu.command("logs <jobId>").description("Print the output of a detached job").option("-s, --sandbox <id>", "Sandbox ID (defaults to the only running sandbox)").option("-f, --follow", "Stream until the job exits and exit with its code").action(run(gpuLogsCommand));
35677
+ gpu.command("push [local] [remote]").description(`Copy a local file or directory into a GPU sandbox (default . to ${COMPUTE_SANDBOX_WORKDIR}); git repositories honor .gitignore`).option("-s, --sandbox <id>", "Sandbox ID (defaults to the only running sandbox)").action(run(gpuPushCommand));
35678
+ gpu.command("pull <remote> [local]").description("Copy a file or directory out of a GPU sandbox into a local directory (default .)").option("-s, --sandbox <id>", "Sandbox ID (defaults to the only running sandbox)").action(run(gpuPullCommand));
35679
+ addCreateOptions(gpu.command("run [command...]")).description("Start a GPU sandbox, copy the current directory in, run a command, then stop it: replicas gpu run --gpu H100 -- python train.py").option("--pull <path>", `Copy a path (relative to ${COMPUTE_SANDBOX_WORKDIR}) back into the current directory afterwards (repeatable)`, collect, []).option("--keep", "Keep the sandbox running afterwards").action(run(gpuRunCommand));
35680
+ gpu.command("delete [id]").description("Stop a GPU sandbox").option("-s, --sandbox <id>", "Sandbox ID (defaults to the only running sandbox)").action(run(gpuDeleteCommand));
35681
+ }
35680
35682
  program.command("history").description("Read past session history").command("transcript <name>").description("Download the full transcript of a session in INDEX.md and print its path").action(run(historyTranscriptCommand));
35681
35683
  skills.command("suggest <file>").description("Suggest saving a SKILL.md as an organization skill; the user reviews it before it is saved").requiredOption("--title <text>", 'Short title shown to the user, e.g. "Always use Conventional Commits"').action(run(skillsSuggestCommand));
35682
35684
  program.command("computer").description("Drive the workspace Linux desktop through replicas-computer");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "replicas-cli",
3
- "version": "0.3.138",
3
+ "version": "0.3.140",
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": {