replicas-cli 0.3.317 → 0.3.319

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 +126 -122
  2. package/package.json +1 -1
package/dist/index.cjs CHANGED
@@ -17006,7 +17006,8 @@ var init_v1 = __esm({
17006
17006
  });
17007
17007
  respondToolInputRequestSchema = external_exports.object({
17008
17008
  requestId: external_exports.string().min(1),
17009
- selectionId: external_exports.string().min(1)
17009
+ selectionId: external_exports.string().min(1),
17010
+ source: external_exports.enum(CLIENT_MESSAGE_SOURCES).optional()
17010
17011
  });
17011
17012
  }
17012
17013
  });
@@ -17825,7 +17826,8 @@ var init_push = __esm({
17825
17826
  organizationId: external_exports.string().uuid(),
17826
17827
  /** Seconds since the last keyboard or mouse input on this computer. A phone leaves it out: it only reports what it has open. */
17827
17828
  idleSeconds: external_exports.number().min(0).optional(),
17828
- seenWorkspaceIds: external_exports.array(external_exports.string().uuid()).max(20)
17829
+ seenWorkspaceIds: external_exports.array(external_exports.string().uuid()).max(20),
17830
+ seenChats: external_exports.array(external_exports.object({ workspaceId: external_exports.string().uuid(), chatId: external_exports.string().min(1).max(100) })).max(20).optional()
17829
17831
  });
17830
17832
  PUSH_NOTIFICATION_KINDS = [...WORKSPACE_ATTENTION_REASONS, "finished"];
17831
17833
  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) });
@@ -20739,6 +20741,7 @@ var init_preferences = __esm({
20739
20741
  appshot_destination: "automatic",
20740
20742
  appshot_sound: true,
20741
20743
  mothership_tour_seen: false,
20744
+ mothership_board_opened: false,
20742
20745
  follow_up_mode: "steer",
20743
20746
  memory_enabled: null,
20744
20747
  subagent_mcp_enabled: null,
@@ -28995,6 +28998,126 @@ var init_workspace_target = __esm({
28995
28998
  }
28996
28999
  });
28997
29000
 
29001
+ // ../shared/src/mothership-board.ts
29002
+ var MOTHERSHIP_BOARD_TONES, label, tone, blockId, httpsUrl, prUrl, linearIdentifier, action, text3, badge, pr, ship, linear, button, steps, inline, row, blockTypes, blockSchemas, block, MOTHERSHIP_BOARD_CONTAINER_TYPES, mothershipBoardBlocksSchema, mothershipBoardOperationsSchema, mothershipBoardItemRefSchema, LINEAR_ISSUE_SUMMARIES_MAX, linearIssueSummariesRequestSchema;
29003
+ var init_mothership_board = __esm({
29004
+ "../shared/src/mothership-board.ts"() {
29005
+ "use strict";
29006
+ init_zod();
29007
+ init_urls();
29008
+ MOTHERSHIP_BOARD_TONES = ["neutral", "needs_you", "warning", "success", "danger", "working"];
29009
+ label = (max) => external_exports.string().trim().min(1).max(max);
29010
+ tone = external_exports.enum(MOTHERSHIP_BOARD_TONES);
29011
+ blockId = external_exports.string().regex(/^[\w.:-]{1,64}$/, "Use 1-64 letters, digits, _, -, . or :");
29012
+ httpsUrl = external_exports.url({ protocol: /^https$/, error: "Must be an https URL" });
29013
+ prUrl = httpsUrl.refine((url2) => parseCodeHostPrUrl(url2) !== null, "Must be a GitHub pull request or GitLab merge request URL");
29014
+ linearIdentifier = external_exports.string().regex(/^[A-Za-z][A-Za-z0-9]{0,9}-\d{1,7}$/, "Use a Linear identifier such as REP-123");
29015
+ action = external_exports.discriminatedUnion("type", [
29016
+ external_exports.object({ type: external_exports.literal("open_ship"), workspace_id: external_exports.uuid() }),
29017
+ external_exports.object({ type: external_exports.literal("message_ship"), workspace_id: external_exports.uuid(), message: label(4e3) }),
29018
+ external_exports.object({ type: external_exports.literal("open_pr"), url: prUrl }),
29019
+ external_exports.object({ type: external_exports.literal("merge_pr"), url: prUrl }),
29020
+ external_exports.object({ type: external_exports.literal("message_mothership"), message: label(4e3) }),
29021
+ external_exports.object({ type: external_exports.literal("open_link"), url: httpsUrl })
29022
+ ]);
29023
+ text3 = external_exports.object({ type: external_exports.literal("text"), id: blockId.optional(), text: label(2e3) });
29024
+ badge = external_exports.object({ type: external_exports.literal("badge"), id: blockId.optional(), label: label(40), tone: tone.optional() });
29025
+ pr = external_exports.object({ type: external_exports.literal("pr"), id: blockId.optional(), url: prUrl });
29026
+ ship = external_exports.object({ type: external_exports.literal("ship"), id: blockId.optional(), workspace_id: external_exports.uuid() });
29027
+ linear = external_exports.object({ type: external_exports.literal("linear"), id: blockId.optional(), identifier: linearIdentifier });
29028
+ button = external_exports.object({ type: external_exports.literal("button"), id: blockId.optional(), label: label(60), action, variant: external_exports.enum(["primary", "outline", "warning", "destructive"]).optional(), resolves: blockId.optional() });
29029
+ steps = external_exports.object({
29030
+ type: external_exports.literal("steps"),
29031
+ id: blockId.optional(),
29032
+ steps: external_exports.array(external_exports.object({ label: label(30), state: external_exports.enum(["done", "current", "pending", "failed"]) })).min(1).max(8)
29033
+ });
29034
+ inline = external_exports.discriminatedUnion("type", [text3, badge, pr, ship, linear, button, steps]);
29035
+ row = external_exports.object({ type: external_exports.literal("row"), id: blockId.optional(), cells: external_exports.array(external_exports.union([label(500), inline])).min(1).max(6) });
29036
+ blockTypes = {
29037
+ text: text3,
29038
+ badge,
29039
+ pr,
29040
+ ship,
29041
+ linear,
29042
+ button,
29043
+ steps,
29044
+ stat: external_exports.object({ type: external_exports.literal("stat"), id: blockId.optional(), label: label(40), value: label(40), tone: tone.optional() }),
29045
+ divider: external_exports.object({ type: external_exports.literal("divider"), id: blockId.optional() }),
29046
+ updated_at: external_exports.object({ type: external_exports.literal("updated_at"), id: blockId.optional() }),
29047
+ choice: external_exports.object({
29048
+ type: external_exports.literal("choice"),
29049
+ id: blockId.optional(),
29050
+ question: label(500),
29051
+ options: external_exports.array(external_exports.object({ label: label(60), message: label(2e3).optional() })).min(2).max(6),
29052
+ resolves: blockId.optional()
29053
+ }),
29054
+ button_group: external_exports.object({ type: external_exports.literal("button_group"), id: blockId.optional(), children: external_exports.array(button).min(1).max(8) }),
29055
+ table: external_exports.object({ type: external_exports.literal("table"), id: blockId.optional(), columns: external_exports.array(label(40)).min(1).max(6), children: external_exports.array(row).max(100) }),
29056
+ callout: external_exports.object({
29057
+ type: external_exports.literal("callout"),
29058
+ id: blockId.optional(),
29059
+ tone,
29060
+ title: label(120).optional(),
29061
+ get children() {
29062
+ return external_exports.array(block).max(20).optional();
29063
+ }
29064
+ }),
29065
+ list: external_exports.object({
29066
+ type: external_exports.literal("list"),
29067
+ id: blockId.optional(),
29068
+ ordered: external_exports.boolean().optional(),
29069
+ get children() {
29070
+ return external_exports.array(block).max(100);
29071
+ }
29072
+ }),
29073
+ section: external_exports.object({
29074
+ type: external_exports.literal("section"),
29075
+ id: blockId.optional(),
29076
+ title: label(120),
29077
+ tone: tone.optional(),
29078
+ collapsed: external_exports.boolean().optional(),
29079
+ get children() {
29080
+ return external_exports.array(block).max(100);
29081
+ }
29082
+ })
29083
+ };
29084
+ blockSchemas = [text3, ...Object.values(blockTypes).filter((schema) => schema !== text3)];
29085
+ block = external_exports.discriminatedUnion("type", blockSchemas);
29086
+ MOTHERSHIP_BOARD_CONTAINER_TYPES = Object.entries(blockTypes).filter(([, schema]) => "children" in schema.shape).map(([type]) => type);
29087
+ mothershipBoardBlocksSchema = external_exports.array(block).max(100).superRefine((blocks, ctx) => {
29088
+ const seen = /* @__PURE__ */ new Set();
29089
+ const visit = (node, path10) => {
29090
+ if (typeof node === "string") return;
29091
+ if (node.id) {
29092
+ if (seen.has(node.id)) ctx.addIssue({ code: "custom", path: [...path10, "id"], message: `Duplicate block id "${node.id}"` });
29093
+ seen.add(node.id);
29094
+ }
29095
+ if (node.type === "table") {
29096
+ node.children.forEach((child, index) => {
29097
+ if (child.cells.length > node.columns.length) ctx.addIssue({ code: "custom", path: [...path10, "children", index, "cells"], message: `Row has ${child.cells.length} cells but the table has ${node.columns.length} columns` });
29098
+ });
29099
+ }
29100
+ if (node.type === "row") node.cells.forEach((cell, index) => visit(cell, [...path10, "cells", index]));
29101
+ else if ("children" in node) node.children?.forEach((child, index) => visit(child, [...path10, "children", index]));
29102
+ };
29103
+ blocks.forEach((node, index) => visit(node, [index]));
29104
+ });
29105
+ mothershipBoardOperationsSchema = external_exports.array(external_exports.discriminatedUnion("op", [
29106
+ external_exports.object({ op: external_exports.literal("replace"), blocks: external_exports.array(block) }),
29107
+ external_exports.object({
29108
+ op: external_exports.literal("upsert"),
29109
+ block: external_exports.discriminatedUnion("type", [row, ...blockSchemas]).refine((value) => Boolean(value.id), { message: "Give the block an id", path: ["id"] }),
29110
+ parent_id: blockId.optional(),
29111
+ position: external_exports.number().int().min(0).optional()
29112
+ }),
29113
+ external_exports.object({ op: external_exports.literal("remove"), id: blockId })
29114
+ ])).min(1).max(50);
29115
+ mothershipBoardItemRefSchema = external_exports.object({ mothershipId: external_exports.uuid(), block, occurrence: external_exports.number().int().min(0).optional() });
29116
+ LINEAR_ISSUE_SUMMARIES_MAX = 50;
29117
+ linearIssueSummariesRequestSchema = external_exports.object({ identifiers: external_exports.array(linearIdentifier).min(1).max(LINEAR_ISSUE_SUMMARIES_MAX) });
29118
+ }
29119
+ });
29120
+
28998
29121
  // ../shared/src/user-message-matching.ts
28999
29122
  function parseTimestampMs(timestamp) {
29000
29123
  if (typeof timestamp === "number") return Number.isFinite(timestamp) ? timestamp : 0;
@@ -29050,6 +29173,7 @@ var init_steps = __esm({
29050
29173
  init_utils();
29051
29174
  init_subagent_tools();
29052
29175
  init_tool_call();
29176
+ init_mothership_board();
29053
29177
  init_turns();
29054
29178
  SUBAGENT_STEPS = {
29055
29179
  [SUBAGENT_MCP_TOOLS.messageAgent]: { icon: "message", live: "Messaging", done: "Messaged" },
@@ -42610,126 +42734,6 @@ var init_websocket_liveness = __esm({
42610
42734
  }
42611
42735
  });
42612
42736
 
42613
- // ../shared/src/mothership-board.ts
42614
- var MOTHERSHIP_BOARD_TONES, label, tone, blockId, httpsUrl, prUrl, linearIdentifier, action, text3, badge, pr, ship, linear, button, steps, inline, row, blockTypes, blockSchemas, block, MOTHERSHIP_BOARD_CONTAINER_TYPES, mothershipBoardBlocksSchema, mothershipBoardOperationsSchema, mothershipBoardItemRefSchema, LINEAR_ISSUE_SUMMARIES_MAX, linearIssueSummariesRequestSchema;
42615
- var init_mothership_board = __esm({
42616
- "../shared/src/mothership-board.ts"() {
42617
- "use strict";
42618
- init_zod();
42619
- init_urls();
42620
- MOTHERSHIP_BOARD_TONES = ["neutral", "needs_you", "warning", "success", "danger", "working"];
42621
- label = (max) => external_exports.string().trim().min(1).max(max);
42622
- tone = external_exports.enum(MOTHERSHIP_BOARD_TONES);
42623
- blockId = external_exports.string().regex(/^[\w.:-]{1,64}$/, "Use 1-64 letters, digits, _, -, . or :");
42624
- httpsUrl = external_exports.url({ protocol: /^https$/, error: "Must be an https URL" });
42625
- prUrl = httpsUrl.refine((url2) => parseCodeHostPrUrl(url2) !== null, "Must be a GitHub pull request or GitLab merge request URL");
42626
- linearIdentifier = external_exports.string().regex(/^[A-Za-z][A-Za-z0-9]{0,9}-\d{1,7}$/, "Use a Linear identifier such as REP-123");
42627
- action = external_exports.discriminatedUnion("type", [
42628
- external_exports.object({ type: external_exports.literal("open_ship"), workspace_id: external_exports.uuid() }),
42629
- external_exports.object({ type: external_exports.literal("message_ship"), workspace_id: external_exports.uuid(), message: label(4e3) }),
42630
- external_exports.object({ type: external_exports.literal("open_pr"), url: prUrl }),
42631
- external_exports.object({ type: external_exports.literal("merge_pr"), url: prUrl }),
42632
- external_exports.object({ type: external_exports.literal("message_mothership"), message: label(4e3) }),
42633
- external_exports.object({ type: external_exports.literal("open_link"), url: httpsUrl })
42634
- ]);
42635
- text3 = external_exports.object({ type: external_exports.literal("text"), id: blockId.optional(), text: label(2e3) });
42636
- badge = external_exports.object({ type: external_exports.literal("badge"), id: blockId.optional(), label: label(40), tone: tone.optional() });
42637
- pr = external_exports.object({ type: external_exports.literal("pr"), id: blockId.optional(), url: prUrl });
42638
- ship = external_exports.object({ type: external_exports.literal("ship"), id: blockId.optional(), workspace_id: external_exports.uuid() });
42639
- linear = external_exports.object({ type: external_exports.literal("linear"), id: blockId.optional(), identifier: linearIdentifier });
42640
- button = external_exports.object({ type: external_exports.literal("button"), id: blockId.optional(), label: label(60), action, variant: external_exports.enum(["primary", "outline", "warning", "destructive"]).optional(), resolves: blockId.optional() });
42641
- steps = external_exports.object({
42642
- type: external_exports.literal("steps"),
42643
- id: blockId.optional(),
42644
- steps: external_exports.array(external_exports.object({ label: label(30), state: external_exports.enum(["done", "current", "pending", "failed"]) })).min(1).max(8)
42645
- });
42646
- inline = external_exports.discriminatedUnion("type", [text3, badge, pr, ship, linear, button, steps]);
42647
- row = external_exports.object({ type: external_exports.literal("row"), id: blockId.optional(), cells: external_exports.array(external_exports.union([label(500), inline])).min(1).max(6) });
42648
- blockTypes = {
42649
- text: text3,
42650
- badge,
42651
- pr,
42652
- ship,
42653
- linear,
42654
- button,
42655
- steps,
42656
- stat: external_exports.object({ type: external_exports.literal("stat"), id: blockId.optional(), label: label(40), value: label(40), tone: tone.optional() }),
42657
- divider: external_exports.object({ type: external_exports.literal("divider"), id: blockId.optional() }),
42658
- updated_at: external_exports.object({ type: external_exports.literal("updated_at"), id: blockId.optional() }),
42659
- choice: external_exports.object({
42660
- type: external_exports.literal("choice"),
42661
- id: blockId.optional(),
42662
- question: label(500),
42663
- options: external_exports.array(external_exports.object({ label: label(60), message: label(2e3).optional() })).min(2).max(6),
42664
- resolves: blockId.optional()
42665
- }),
42666
- button_group: external_exports.object({ type: external_exports.literal("button_group"), id: blockId.optional(), children: external_exports.array(button).min(1).max(8) }),
42667
- table: external_exports.object({ type: external_exports.literal("table"), id: blockId.optional(), columns: external_exports.array(label(40)).min(1).max(6), children: external_exports.array(row).max(100) }),
42668
- callout: external_exports.object({
42669
- type: external_exports.literal("callout"),
42670
- id: blockId.optional(),
42671
- tone,
42672
- title: label(120).optional(),
42673
- get children() {
42674
- return external_exports.array(block).max(20).optional();
42675
- }
42676
- }),
42677
- list: external_exports.object({
42678
- type: external_exports.literal("list"),
42679
- id: blockId.optional(),
42680
- ordered: external_exports.boolean().optional(),
42681
- get children() {
42682
- return external_exports.array(block).max(100);
42683
- }
42684
- }),
42685
- section: external_exports.object({
42686
- type: external_exports.literal("section"),
42687
- id: blockId.optional(),
42688
- title: label(120),
42689
- tone: tone.optional(),
42690
- collapsed: external_exports.boolean().optional(),
42691
- get children() {
42692
- return external_exports.array(block).max(100);
42693
- }
42694
- })
42695
- };
42696
- blockSchemas = [text3, ...Object.values(blockTypes).filter((schema) => schema !== text3)];
42697
- block = external_exports.discriminatedUnion("type", blockSchemas);
42698
- MOTHERSHIP_BOARD_CONTAINER_TYPES = Object.entries(blockTypes).filter(([, schema]) => "children" in schema.shape).map(([type]) => type);
42699
- mothershipBoardBlocksSchema = external_exports.array(block).max(100).superRefine((blocks, ctx) => {
42700
- const seen = /* @__PURE__ */ new Set();
42701
- const visit = (node, path10) => {
42702
- if (typeof node === "string") return;
42703
- if (node.id) {
42704
- if (seen.has(node.id)) ctx.addIssue({ code: "custom", path: [...path10, "id"], message: `Duplicate block id "${node.id}"` });
42705
- seen.add(node.id);
42706
- }
42707
- if (node.type === "table") {
42708
- node.children.forEach((child, index) => {
42709
- if (child.cells.length > node.columns.length) ctx.addIssue({ code: "custom", path: [...path10, "children", index, "cells"], message: `Row has ${child.cells.length} cells but the table has ${node.columns.length} columns` });
42710
- });
42711
- }
42712
- if (node.type === "row") node.cells.forEach((cell, index) => visit(cell, [...path10, "cells", index]));
42713
- else if ("children" in node) node.children?.forEach((child, index) => visit(child, [...path10, "children", index]));
42714
- };
42715
- blocks.forEach((node, index) => visit(node, [index]));
42716
- });
42717
- mothershipBoardOperationsSchema = external_exports.array(external_exports.discriminatedUnion("op", [
42718
- external_exports.object({ op: external_exports.literal("replace"), blocks: external_exports.array(block) }),
42719
- external_exports.object({
42720
- op: external_exports.literal("upsert"),
42721
- block: external_exports.discriminatedUnion("type", [row, ...blockSchemas]).refine((value) => Boolean(value.id), { message: "Give the block an id", path: ["id"] }),
42722
- parent_id: blockId.optional(),
42723
- position: external_exports.number().int().min(0).optional()
42724
- }),
42725
- external_exports.object({ op: external_exports.literal("remove"), id: blockId })
42726
- ])).min(1).max(50);
42727
- mothershipBoardItemRefSchema = external_exports.object({ mothershipId: external_exports.uuid(), block, occurrence: external_exports.number().int().min(0).optional() });
42728
- LINEAR_ISSUE_SUMMARIES_MAX = 50;
42729
- linearIssueSummariesRequestSchema = external_exports.object({ identifiers: external_exports.array(linearIdentifier).min(1).max(LINEAR_ISSUE_SUMMARIES_MAX) });
42730
- }
42731
- });
42732
-
42733
42737
  // ../shared/src/index.ts
42734
42738
  var init_src = __esm({
42735
42739
  "../shared/src/index.ts"() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "replicas-cli",
3
- "version": "0.3.317",
3
+ "version": "0.3.319",
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": {