replicas-cli 0.3.250 → 0.3.252

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 +83 -19
  2. package/package.json +1 -1
package/dist/index.cjs CHANGED
@@ -16755,7 +16755,7 @@ function codexTurnFromEvent(event) {
16755
16755
  const { turnId, status, error: error51 } = event.payload;
16756
16756
  return typeof turnId === "string" && typeof status === "string" ? { turnId, status, ...typeof error51 === "string" ? { error: error51 } : {} } : null;
16757
16757
  }
16758
- var MERGED_MESSAGE_SEPARATOR, updateChatDisplayNameRequestSchema, createChatRequestSchema, spawnSubagentRequestSchema, messageSubagentRequestSchema, waitSubagentRequestSchema, subagentResponseSchema, integrationErrorNotificationTargetSchema, sendChatMessageRequestSchema, CODEX_ITEM_FIELD_CHECKS, sendChatMessageResponseSchema;
16758
+ var MERGED_MESSAGE_SEPARATOR, updateChatDisplayNameRequestSchema, createChatRequestSchema, spawnSubagentRequestSchema, messageSubagentRequestSchema, waitSubagentRequestSchema, subagentResponseSchema, integrationErrorNotificationTargetSchema, sendChatMessageRequestSchema, CODEX_ITEM_FIELD_CHECKS, sendChatMessageResponseSchema, respondToolInputRequestSchema;
16759
16759
  var init_v1 = __esm({
16760
16760
  "../shared/src/engine/v1.ts"() {
16761
16761
  "use strict";
@@ -16890,6 +16890,10 @@ var init_v1 = __esm({
16890
16890
  chatId: external_exports.string().optional(),
16891
16891
  steered: external_exports.boolean().optional()
16892
16892
  });
16893
+ respondToolInputRequestSchema = external_exports.object({
16894
+ requestId: external_exports.string().min(1),
16895
+ selectionId: external_exports.string().min(1)
16896
+ });
16893
16897
  }
16894
16898
  });
16895
16899
 
@@ -16954,6 +16958,7 @@ var init_github = __esm({
16954
16958
  events: [
16955
16959
  { id: "pull_request.opened", label: "PR opened", parameters: [REPO_FILTER_PARAM, EXCLUDED_ACTORS_PARAM, GROUP_PR_EVENTS_PARAM] },
16956
16960
  { id: "pull_request.synchronize", label: "PR updated (new commits)", parameters: [REPO_FILTER_PARAM, EXCLUDED_ACTORS_PARAM, GROUP_PR_EVENTS_PARAM] },
16961
+ { id: "pull_request.ready_for_review", label: "PR marked ready for review", parameters: [REPO_FILTER_PARAM, EXCLUDED_ACTORS_PARAM, GROUP_PR_EVENTS_PARAM] },
16957
16962
  { id: REVIEW_REQUESTED_EVENT, label: "PR review requested", parameters: [REVIEWER_LOGINS_PARAM, REPO_FILTER_PARAM, EXCLUDED_ACTORS_PARAM] },
16958
16963
  { id: "pull_request.merged", label: "PR merged", parameters: [REPO_FILTER_PARAM, EXCLUDED_ACTORS_PARAM] },
16959
16964
  { id: "pull_request.closed", label: "PR closed", parameters: [REPO_FILTER_PARAM, EXCLUDED_ACTORS_PARAM] },
@@ -17385,6 +17390,65 @@ var init_scout = __esm({
17385
17390
  }
17386
17391
  });
17387
17392
 
17393
+ // ../shared/src/workspace-attention.ts
17394
+ var WORKSPACE_ATTENTION_REASONS, CHAT_ATTENTION_REASONS;
17395
+ var init_workspace_attention = __esm({
17396
+ "../shared/src/workspace-attention.ts"() {
17397
+ "use strict";
17398
+ WORKSPACE_ATTENTION_REASONS = ["question", "plan", "variables", "blocked", "setup"];
17399
+ CHAT_ATTENTION_REASONS = ["question", "blocked"];
17400
+ }
17401
+ });
17402
+
17403
+ // ../shared/src/routes/push.ts
17404
+ var registerPushDeviceRequestSchema, PUSH_HOLD_MINUTES, recordPushActivityRequestSchema, PUSH_NOTIFICATION_KINDS, pushQuestionSchema, pushNotificationDataSchema, registerLiveActivityRequestSchema;
17405
+ var init_push = __esm({
17406
+ "../shared/src/routes/push.ts"() {
17407
+ "use strict";
17408
+ init_zod();
17409
+ init_workspace_attention();
17410
+ registerPushDeviceRequestSchema = external_exports.discriminatedUnion("platform", [
17411
+ external_exports.object({
17412
+ platform: external_exports.literal("ios"),
17413
+ token: external_exports.string().regex(/^[0-9a-f]{64,200}$/i),
17414
+ appId: external_exports.string().min(1).max(255),
17415
+ apnsEnvironment: external_exports.enum(["sandbox", "production"])
17416
+ }),
17417
+ external_exports.object({
17418
+ platform: external_exports.literal("android"),
17419
+ token: external_exports.string().min(1).max(4096),
17420
+ appId: external_exports.string().min(1).max(255)
17421
+ })
17422
+ ]);
17423
+ PUSH_HOLD_MINUTES = 5;
17424
+ recordPushActivityRequestSchema = external_exports.object({
17425
+ organizationId: external_exports.string().uuid(),
17426
+ /** Seconds since the last keyboard or mouse input on this computer. A phone leaves it out: it only reports what it has open. */
17427
+ idleSeconds: external_exports.number().min(0).optional(),
17428
+ seenWorkspaceIds: external_exports.array(external_exports.string().uuid()).max(20)
17429
+ });
17430
+ PUSH_NOTIFICATION_KINDS = [...WORKSPACE_ATTENTION_REASONS, "finished", "pull_request"];
17431
+ pushQuestionSchema = external_exports.object({ id: external_exports.string().max(64), options: external_exports.array(external_exports.object({ id: external_exports.string().max(64), label: external_exports.string().min(1).max(60) })).min(1).max(4) });
17432
+ pushNotificationDataSchema = external_exports.object({
17433
+ organizationId: external_exports.string(),
17434
+ workspaceId: external_exports.string(),
17435
+ chatId: external_exports.string().nullable(),
17436
+ kind: external_exports.enum(PUSH_NOTIFICATION_KINDS),
17437
+ completedAt: external_exports.string(),
17438
+ pullRequestUrl: external_exports.string().optional(),
17439
+ toolRequestId: external_exports.string().optional(),
17440
+ question: pushQuestionSchema.optional()
17441
+ });
17442
+ registerLiveActivityRequestSchema = external_exports.object({
17443
+ deviceId: external_exports.string().uuid(),
17444
+ workspaceId: external_exports.string().uuid(),
17445
+ chatId: external_exports.string().min(1).max(100),
17446
+ /** The iOS activity's push token. Android leaves it out and gets FCM data messages on the device token. */
17447
+ pushToken: external_exports.string().regex(/^[0-9a-f]{64,400}$/i).optional()
17448
+ });
17449
+ }
17450
+ });
17451
+
17388
17452
  // ../shared/src/default-skills/replicas-agent/abilities/computer.ts
17389
17453
  var SECTION, REFERENCE, COMPUTER_ABILITY;
17390
17454
  var init_computer = __esm({
@@ -17988,7 +18052,7 @@ Trigger shapes:
17988
18052
  { "type": "cron", "config": { "schedule": "0 9 * * 1-5", "timezone": "UTC" } }
17989
18053
  \`\`\`
17990
18054
 
17991
- GitHub events: \`pull_request.opened\`, \`pull_request.synchronize\`, \`pull_request.review_requested\` (requires a \`reviewer_logins\` list of GitHub usernames), \`pull_request.merged\`, \`pull_request.closed\`. GitLab events: \`merge_request.opened\`, \`merge_request.updated\`, \`merge_request.merged\`, \`merge_request.closed\`. Use one trigger type family per automation and pick the code host the repositories actually live on.
18055
+ GitHub events: \`pull_request.opened\`, \`pull_request.synchronize\`, \`pull_request.ready_for_review\`, \`pull_request.review_requested\` (requires a \`reviewer_logins\` list of GitHub usernames), \`pull_request.merged\`, \`pull_request.closed\`. GitLab events: \`merge_request.opened\`, \`merge_request.updated\`, \`merge_request.merged\`, \`merge_request.closed\`. Use one trigger type family per automation and pick the code host the repositories actually live on.
17992
18056
 
17993
18057
  Test the hooks before proposing them: run the drafted warm hook and start hook scripts in this workspace (from \`~/workspaces\`) and fix the earliest failure until both exit 0 on a second run.
17994
18058
 
@@ -20269,11 +20333,12 @@ function defaultReplicasAgentAbilities() {
20269
20333
  function hasAllReplicasAgentAbilities(abilities) {
20270
20334
  return REPLICAS_AGENT_ABILITIES.every((key) => typeof abilities[key] === "boolean");
20271
20335
  }
20272
- var EMPTY_AGENT_DEFAULT_SETTINGS, DEFAULT_SUBAGENT_MCP_PROVIDERS, ALERT_SOUND_FAMILIES, ALERT_SOUNDS, DEFAULT_USER_PREFERENCES, DEFAULT_DEFAULT_SKILLS;
20336
+ var EMPTY_AGENT_DEFAULT_SETTINGS, DEFAULT_SUBAGENT_MCP_PROVIDERS, ALERT_SOUND_FAMILIES, ALERT_SOUNDS, PUSH_WHEN_ACTIVE_COPY, DEFAULT_USER_PREFERENCES, DEFAULT_DEFAULT_SKILLS;
20273
20337
  var init_preferences = __esm({
20274
20338
  "../shared/src/routes/preferences.ts"() {
20275
20339
  "use strict";
20276
20340
  init_agent();
20341
+ init_push();
20277
20342
  init_registry();
20278
20343
  EMPTY_AGENT_DEFAULT_SETTINGS = {
20279
20344
  agent_provider: null,
@@ -20288,6 +20353,11 @@ var init_preferences = __esm({
20288
20353
  wood: ["ready", "pluck", "knock", "bloom", "steps"]
20289
20354
  };
20290
20355
  ALERT_SOUNDS = [...ALERT_SOUND_FAMILIES.glass, ...ALERT_SOUND_FAMILIES.wood];
20356
+ PUSH_WHEN_ACTIVE_COPY = {
20357
+ wait: `Wait ${PUSH_HOLD_MINUTES} minutes`,
20358
+ skip: "Don\u2019t send",
20359
+ send: "Send right away"
20360
+ };
20291
20361
  DEFAULT_USER_PREFERENCES = {
20292
20362
  default_agent: null,
20293
20363
  default_model: null,
@@ -20327,7 +20397,8 @@ var init_preferences = __esm({
20327
20397
  alert_sound: null,
20328
20398
  workspace_alerts: {},
20329
20399
  automation_alerts: {},
20330
- push_types: { needs_you: true, finished: true, pull_requests: true, automations: true, usage_limit: true }
20400
+ push_types: { needs_you: true, finished: true, pull_requests: true, automations: true, usage_limit: true },
20401
+ push_when_active: "wait"
20331
20402
  };
20332
20403
  DEFAULT_DEFAULT_SKILLS = {
20333
20404
  replicas_agent: {
@@ -20889,6 +20960,9 @@ function upsertDisplayMessage(messages, message2) {
20889
20960
  else messages[index] = message2;
20890
20961
  return message2;
20891
20962
  }
20963
+ function isToolInputQuestion(value) {
20964
+ return isRecord(value) && typeof value.id === "string" && typeof value.prompt === "string" && typeof value.multiSelect === "boolean" && Array.isArray(value.options) && value.options.every((option) => isRecord(option) && typeof option.id === "string" && typeof option.label === "string");
20965
+ }
20892
20966
  function applyToolInputEvent(event, messages, provider2, state, questionFilter) {
20893
20967
  if (event.type === "replicas-tool-input-request" && typeof event.payload.toolUseId === "string" && typeof event.payload.requestId === "string" && (Array.isArray(event.payload.options) || Array.isArray(event.payload.questions))) {
20894
20968
  const previous = state.resolutions.get(event.payload.toolUseId);
@@ -29660,9 +29734,6 @@ var init_opencode_parser = __esm({
29660
29734
  });
29661
29735
 
29662
29736
  // ../shared/src/display-message/parsers/muse-parser.ts
29663
- function isToolInputQuestion(value) {
29664
- return isRecord(value) && typeof value.id === "string" && typeof value.prompt === "string" && typeof value.multiSelect === "boolean" && Array.isArray(value.options) && value.options.every((option) => isRecord(option) && typeof option.id === "string" && typeof option.label === "string");
29665
- }
29666
29737
  function parseMuseEvents(events) {
29667
29738
  const messages = [];
29668
29739
  const deltas = /* @__PURE__ */ new Map();
@@ -31455,7 +31526,7 @@ var CLI_VERSION;
31455
31526
  var init_cli_version = __esm({
31456
31527
  "../shared/src/cli-version.ts"() {
31457
31528
  "use strict";
31458
- CLI_VERSION = "0.3.250";
31529
+ CLI_VERSION = "0.3.252";
31459
31530
  }
31460
31531
  });
31461
31532
 
@@ -32251,15 +32322,6 @@ var init_client_state = __esm({
32251
32322
  }
32252
32323
  });
32253
32324
 
32254
- // ../shared/src/workspace-attention.ts
32255
- var WORKSPACE_ATTENTION_REASONS;
32256
- var init_workspace_attention = __esm({
32257
- "../shared/src/workspace-attention.ts"() {
32258
- "use strict";
32259
- WORKSPACE_ATTENTION_REASONS = ["question", "blocked"];
32260
- }
32261
- });
32262
-
32263
32325
  // ../shared/src/routes/workspace-events.ts
32264
32326
  var workspaceTurnCompletionSchema, workspaceChangedEventSchema;
32265
32327
  var init_workspace_events = __esm({
@@ -32273,7 +32335,7 @@ var init_workspace_events = __esm({
32273
32335
  completedAt: external_exports.string(),
32274
32336
  processing: external_exports.boolean().optional(),
32275
32337
  pullRequestFeedback: external_exports.boolean().optional(),
32276
- attention: external_exports.object({ reason: external_exports.enum(WORKSPACE_ATTENTION_REASONS), userId: external_exports.string() }).optional()
32338
+ attention: external_exports.object({ reason: external_exports.enum(CHAT_ATTENTION_REASONS), userId: external_exports.string() }).optional()
32277
32339
  });
32278
32340
  workspaceChangedEventSchema = external_exports.discriminatedUnion("type", [
32279
32341
  external_exports.object({
@@ -32318,7 +32380,8 @@ var init_workspace_events = __esm({
32318
32380
  workspaceId: external_exports.string(),
32319
32381
  subagent: external_exports.object({ id: external_exports.string(), name: external_exports.string(), prUrl: external_exports.string().nullable() }),
32320
32382
  ts: external_exports.string()
32321
- })
32383
+ }),
32384
+ external_exports.object({ type: external_exports.literal("needs-you.changed"), workspaceId: external_exports.string().nullable(), ts: external_exports.string() })
32322
32385
  ]);
32323
32386
  }
32324
32387
  });
@@ -42169,6 +42232,7 @@ var init_src = __esm({
42169
42232
  init_mothership();
42170
42233
  init_workspace_events();
42171
42234
  init_presence();
42235
+ init_push();
42172
42236
  init_voice();
42173
42237
  init_workspace_deferred_messages();
42174
42238
  init_workspace_wait();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "replicas-cli",
3
- "version": "0.3.250",
3
+ "version": "0.3.252",
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": {