replicas-cli 0.3.292 → 0.3.294

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 -9
  2. package/package.json +1 -1
package/dist/index.cjs CHANGED
@@ -17407,6 +17407,7 @@ var init_replicas_mcp = __esm({
17407
17407
  claimSettingsOffer: "claim_settings_offer",
17408
17408
  setThreadMuted: "set_thread_muted",
17409
17409
  setSlackConnectMuted: "set_slack_connect_muted",
17410
+ setSlackConnectDefaults: "set_slack_connect_defaults",
17410
17411
  spawnSubagent: "spawn_subagent",
17411
17412
  messageSubagent: "message_subagent",
17412
17413
  listSubagents: "list_subagents",
@@ -17487,7 +17488,7 @@ var init_scout = __esm({
17487
17488
  SCOUT_PROACTIVITY_LEVELS = ["tagged", "conservative", "balanced", "proactive"];
17488
17489
  SCOUT_PRESET_NAME_MAX_LENGTH = 50;
17489
17490
  SCOUT_CHANNEL_SETTINGS_OFFERS = ["proactivity", "raise_proactivity", "instructions"];
17490
- SCOUT_SETTINGS_OFFERS = [...SCOUT_CHANNEL_SETTINGS_OFFERS, "organization_proactivity"];
17491
+ SCOUT_SETTINGS_OFFERS = [...SCOUT_CHANNEL_SETTINGS_OFFERS, "organization_proactivity", "raise_organization_proactivity"];
17491
17492
  SCOUT_PRESET_ICONS = [
17492
17493
  "users",
17493
17494
  "user",
@@ -20571,8 +20572,8 @@ var init_prompts = __esm({
20571
20572
  MOTHERSHIP_INSTRUCTIONS_BLOCK = new RegExp(`\\s*<${MOTHERSHIP_INSTRUCTIONS_TAG}>\\n([\\s\\S]*?)\\n</${MOTHERSHIP_INSTRUCTIONS_TAG}>`);
20572
20573
  SCOUT_ADAPTIVE_SETTINGS_PROMPT = `### Adapting to each channel
20573
20574
  There is no settings page: people change how you behave by telling you, and you suggest a change when it would clearly help. The envelope carries the channel's \`proactivity\` and \`offers\`, the offers you may still make in this channel (${SCOUT_CHANNEL_SETTINGS_OFFERS.map((offer) => `\`${offer}\``).join(", ")}); \`offers=none\` means make none. Offer only what \`offers\` lists, at most one per message. Claim an offer with \`${REPLICAS_MCP_TOOLS.claimSettingsOffer}\` right before posting it, and post it only when the claim succeeds. When someone declines ("no", "it's fine", "leave it"), record it with \`declined: true\` and drop it; never repeat an ignored offer. When they accept, apply it with the settings tools using the accepting message as confirmation, then confirm what changed in one short line.
20574
- - **Frustration.** When someone is clearly annoyed that you replied or acted unasked ("wtf why did replicas respond", "stop", "not you", "nobody asked", or \`event=reaction:\u2026\`, a thumbs-down or similar on a reply you posted unasked), claim \`proactivity\` and post one short apology that offers to lower this channel exactly one step. From Balanced or High, offer Low: "Sorry for jumping in. Want me to only reply here when someone mentions me by name?" From Low, offer Mentions only: "Sorry for jumping in. Want me to only reply here when someone @mentions me?" On a yes, set the level you offered, nothing lower. Do nothing else in that thread. When the claim answers \`offer: organization\`, people were frustrated in several channels, so offer the same for every channel instead; when \`requester_is_admin\` is false, say an organization admin can change it for every channel and offer this channel. A thumbs-down on a reply someone asked for is about the answer, not about speaking up, so leave it. An explicit "stop replying in this thread" is still a thread mute.
20575
- - **Having to tag you.** When \`directed=true\` and the same person's untagged message just before in this thread asked you something you didn't act on, so they had to @mention you, answer as usual, then claim \`raise_proactivity\` and end the reply with one line asking whether to pick up messages like that without a tag next time. They may have meant that message for someone else, so ask, never assume. Offer exactly one step up: from Mentions only, where an untagged reply never reaches you, "Want me to pick up messages here that name me, without an @mention? @mention me with your answer."; from Low, "Want me to pick up questions and requests here without a tag next time?"; from Balanced, "Want me to jump in on questions and requests here without being asked?" On a yes, raise this channel to that level only; if the server refuses because they aren't an admin, say an organization admin can raise it.
20575
+ - **Frustration.** When someone is clearly annoyed that you replied or acted unasked ("wtf why did replicas respond", "stop", "not you", "nobody asked", or \`event=reaction:\u2026\`, a thumbs-down or similar on a reply you posted unasked), claim \`proactivity\` and post one short apology that offers to lower this channel exactly one step. From Balanced or High, offer Low: "Sorry for jumping in. Want me to only reply here when someone mentions me by name?" From Low, offer Mentions only: "Sorry for jumping in. Want me to only reply here when someone @mentions me?" On a yes, set the level you offered, nothing lower. Do nothing else in that thread. When the claim answers \`offer: organization\`, people were frustrated in several channels, so offer to set every channel's default to \`organization_target\` instead; when \`requester_is_admin\` is false, say an organization admin can change it for every channel and offer this channel. A thumbs-down on a reply someone asked for is about the answer, not about speaking up, so leave it. An explicit "stop replying in this thread" is still a thread mute.
20576
+ - **Having to tag you.** \`prior_untagged_ignored=<ts>\` means the untagged message with that \`ts\`, just before this ping in this thread or channel, never reached you: the channel's level or the untagged check held it back. When this ping points back at it ("do the above", "^", "can you do this", "see above", a quote of it, "why didn't you pick this up") and it was a question or request for you, it was really meant for you: do what it asked, then claim \`raise_proactivity\` and end your reply with one line offering to pick up messages like that without a tag next time. Read the message first (\`conversations.replies\` in a thread, \`conversations.history\` at the top level). Make no offer when this ping is its own fresh request, or when that message was chatter or meant for someone else. Offer exactly one step up: from Mentions only, "Want me to pick up messages here that name me, without an @mention? @mention me with your answer."; from Low, "Want me to pick up requests like that here without a tag next time? I can raise this channel to Balanced."; from Balanced, "Want me to jump in on requests like that here without being asked? I can raise this channel to High." When the claim answers \`offer: organization\`, people had to tag you in several channels, so offer to raise every channel's default to \`organization_target\` instead, and say channels with their own level keep it. Mention an admin only when the claim answers \`needs_admin: true\`: then say an organization admin can make that change, and for \`offer: organization\` offer this channel instead. On a yes, raise to that level only.
20576
20577
  - **Channel instructions.** On \`event=joined\` (you were just added to the channel; reply in that envelope's thread), or when you act in a channel for the first time, and the channel's name or purpose points to a clear role (#triage, #bugs, #incidents, #support, #customer-*, a customer's shared channel), claim \`instructions\` and offer one concrete behavior in one line, such as "This looks like an incident channel. Want me to triage new reports here, check for duplicates, and post findings in the thread?" On \`event=joined\` without a clear role, do nothing at all. Make the same kind of offer when you notice you keep handling messages here the same way, or that the channel clearly belongs to a Mothership (offer to send its actionable messages to that Mothership by name). On a yes, save it as the channel's instructions, or as its preset when one fits exactly.
20577
20578
  - **Tip.** When the envelope has \`tip=true\`, this is the first time someone pinged you in this channel, so end the reply you post with one more line: "_Tip: tell me how you want me to act in this channel._" It is shown once per channel, so never add it otherwise.
20578
20579
  - **Slack agent defaults.** To change the agent, model, thinking level, goal mode or fast mode used for tasks started from Slack ("use Codex for Slack tasks"), call \`${REPLICAS_MCP_TOOLS.setSlackAgentDefaults}\`; only an organization admin can.
@@ -31720,7 +31721,7 @@ var CLI_VERSION;
31720
31721
  var init_cli_version = __esm({
31721
31722
  "../shared/src/cli-version.ts"() {
31722
31723
  "use strict";
31723
- CLI_VERSION = "0.3.292";
31724
+ CLI_VERSION = "0.3.293";
31724
31725
  }
31725
31726
  });
31726
31727
 
@@ -31957,7 +31958,7 @@ var init_slack2 = __esm({
31957
31958
  });
31958
31959
 
31959
31960
  // ../shared/src/routes/scout.ts
31960
- var SCOUT_LINEAR_ACTIONS, scoutLinearSessionIntentRequestSchema, scoutLinearStartRequestSchema, slackChannelIdSchema, slackThreadTsSchema, scoutSlackSpawnRequestSchema, scoutSlackSpawnInNewThreadRequestSchema, scoutSlackRelayRequestSchema, scoutSlackSetThreadMutedRequestSchema, scoutListWorkspacesRequestSchema, scoutSlackConfirmationSchema, scoutAutomationToolInputSchema, scoutSaveChannelPresetToolInputSchema, scoutUpdateChannelSettingsToolInputSchema, scoutSetSlackConnectMutedToolInputSchema, scoutSetOrganizationProactivityToolInputSchema, scoutDeleteChannelPresetToolInputSchema, RESET_TO_DEFAULT, resettable, scoutSetSlackAgentDefaultsToolInputSchema, scoutClaimSettingsOfferToolInputSchema;
31961
+ var SCOUT_LINEAR_ACTIONS, scoutLinearSessionIntentRequestSchema, scoutLinearStartRequestSchema, slackChannelIdSchema, slackThreadTsSchema, scoutSlackSpawnRequestSchema, scoutSlackSpawnInNewThreadRequestSchema, scoutSlackRelayRequestSchema, scoutSlackSetThreadMutedRequestSchema, scoutListWorkspacesRequestSchema, scoutSlackConfirmationSchema, scoutAutomationToolInputSchema, scoutSaveChannelPresetToolInputSchema, scoutUpdateChannelSettingsToolInputSchema, scoutSetSlackConnectMutedToolInputSchema, scoutSetSlackConnectDefaultsToolInputSchema, scoutSetOrganizationProactivityToolInputSchema, scoutDeleteChannelPresetToolInputSchema, RESET_TO_DEFAULT, resettable, scoutSetSlackAgentDefaultsToolInputSchema, scoutClaimSettingsOfferToolInputSchema;
31961
31962
  var init_scout2 = __esm({
31962
31963
  "../shared/src/routes/scout.ts"() {
31963
31964
  "use strict";
@@ -32034,13 +32035,18 @@ var init_scout2 = __esm({
32034
32035
  preset_id: external_exports.string().nullable().optional().describe("Preset to assign; `null` removes the preset. Omit to keep it."),
32035
32036
  instructions: external_exports.string().nullable().optional().describe("Complete channel-specific instructions, applied after the preset; replaces the existing text. `null` clears them. Omit to keep them."),
32036
32037
  proactivity: external_exports.enum([...SCOUT_PROACTIVITY_LEVELS, "organization"]).optional().describe("Slack only: this channel's or group DM's own level, overriding the organization's here alone. `organization` makes it follow the organization's level again. Omit to keep it. 1:1 DMs are always addressed to Replicas, so they take no level."),
32037
- muted: external_exports.enum(["on", "off", "default"]).optional().describe(`Slack only, organization admins only: \`on\` mutes Replicas in this channel, \`off\` unmutes it here, \`default\` follows the Slack Connect default from \`${REPLICAS_MCP_TOOLS.setSlackConnectMuted}\`. Omit to keep it.`)
32038
+ muted: external_exports.enum(["on", "off", "default"]).optional().describe(`Slack only, organization admins only: \`on\` mutes Replicas in this channel, \`off\` unmutes it here, \`default\` follows the Slack Connect default from \`${REPLICAS_MCP_TOOLS.setSlackConnectDefaults}\`. Omit to keep it.`)
32038
32039
  });
32039
32040
  scoutSetSlackConnectMutedToolInputSchema = scoutSlackConfirmationSchema.extend({
32040
32041
  muted: external_exports.boolean().describe("`true` mutes Replicas in every Slack Connect channel without its own setting; `false` lets them follow their levels again.")
32041
32042
  });
32043
+ scoutSetSlackConnectDefaultsToolInputSchema = scoutSetSlackConnectMutedToolInputSchema.partial({ muted: true }).extend({
32044
+ preset_id: external_exports.string().optional().describe("Preset for every Slack Connect channel without its own preset or instructions; an empty string removes it. Omit to keep it."),
32045
+ instructions: external_exports.string().optional().describe("Complete default instructions, applied after that preset; replaces the existing text. An empty string clears them. Omit to keep them."),
32046
+ proactivity: external_exports.enum([...SCOUT_PROACTIVITY_LEVELS, "default"]).optional().describe("Level for every Slack Connect channel without its own level. `default` returns them to `tagged`. Omit to keep it.")
32047
+ });
32042
32048
  scoutSetOrganizationProactivityToolInputSchema = scoutSlackConfirmationSchema.extend({
32043
- proactivity: external_exports.enum(SCOUT_PROACTIVITY_LEVELS).describe("The level every Slack channel and group DM follows unless it has its own. Slack Connect channels without their own level stay `tagged`.")
32049
+ proactivity: external_exports.enum(SCOUT_PROACTIVITY_LEVELS).describe(`The level every Slack channel and group DM follows unless it has its own. Slack Connect channels without their own level follow the shared-channel default from \`${REPLICAS_MCP_TOOLS.setSlackConnectDefaults}\` instead.`)
32044
32050
  });
32045
32051
  scoutDeleteChannelPresetToolInputSchema = scoutSlackConfirmationSchema.extend({
32046
32052
  preset_id: external_exports.string().describe(`Id of the preset to delete, from \`${REPLICAS_MCP_TOOLS.listChannelSettings}\`.`)
@@ -32056,8 +32062,8 @@ var init_scout2 = __esm({
32056
32062
  });
32057
32063
  scoutClaimSettingsOfferToolInputSchema = external_exports.object({
32058
32064
  channel_id: slackChannelIdSchema,
32059
- kind: external_exports.enum(SCOUT_SETTINGS_OFFERS).describe("`proactivity`: offering a lower level after frustration. `raise_proactivity`: offering a higher level after someone had to @mention you. `instructions`: offering channel instructions or a preset. `organization_proactivity`: offering to lower the workspace default; only decline it, the server claims it for you."),
32060
- user_id: external_exports.string().optional().describe("The envelope's `user_id`. Required for `proactivity`, so the server can say whether they are an organization admin."),
32065
+ kind: external_exports.enum(SCOUT_SETTINGS_OFFERS).describe("`proactivity`: offering a lower level after frustration. `raise_proactivity`: offering a higher level after someone had to @mention you. `instructions`: offering channel instructions or a preset. `organization_proactivity` and `raise_organization_proactivity`: offering to lower or raise the workspace default; only decline them, the server claims them for you."),
32066
+ user_id: external_exports.string().optional().describe("The envelope's `user_id`. Required for `proactivity` and `raise_proactivity`, so the server can say whether they are an organization admin."),
32061
32067
  declined: external_exports.boolean().optional().describe("true when the person declined an offer you already made, so it is not made again.")
32062
32068
  });
32063
32069
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "replicas-cli",
3
- "version": "0.3.292",
3
+ "version": "0.3.294",
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": {