replicas-cli 0.3.311 → 0.3.313
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.
- package/dist/index.cjs +40 -12
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -17044,8 +17044,14 @@ var init_design_tokens = __esm({
|
|
|
17044
17044
|
destructive: "#ef4444",
|
|
17045
17045
|
destructiveText: "#ff6f63",
|
|
17046
17046
|
destructiveForeground: "#ffffff",
|
|
17047
|
+
destructiveSoft: "#dc262636",
|
|
17047
17048
|
warning: "#f59e0b",
|
|
17048
17049
|
warningText: "#facc15",
|
|
17050
|
+
warningSoft: "#facc151a",
|
|
17051
|
+
working: "#0ea5e9",
|
|
17052
|
+
workingText: "#7dd3fc",
|
|
17053
|
+
workingForeground: "#111111",
|
|
17054
|
+
workingSoft: "#7dd3fc1a",
|
|
17049
17055
|
...plain
|
|
17050
17056
|
};
|
|
17051
17057
|
DESIGN_COLORS = {
|
|
@@ -17068,8 +17074,14 @@ var init_design_tokens = __esm({
|
|
|
17068
17074
|
destructive: "#dc2626",
|
|
17069
17075
|
destructiveText: "#b2000f",
|
|
17070
17076
|
destructiveForeground: "#ffffff",
|
|
17077
|
+
destructiveSoft: "#dc262614",
|
|
17071
17078
|
warning: "#92400e",
|
|
17072
17079
|
warningText: "#825100",
|
|
17080
|
+
warningSoft: "#facc1540",
|
|
17081
|
+
working: "#0369a1",
|
|
17082
|
+
workingText: "#075985",
|
|
17083
|
+
workingForeground: "#ffffff",
|
|
17084
|
+
workingSoft: "#0284c71a",
|
|
17073
17085
|
...plain
|
|
17074
17086
|
}
|
|
17075
17087
|
};
|
|
@@ -20770,7 +20782,7 @@ function removeTag(text4, tag) {
|
|
|
20770
20782
|
function stripReplicasInstructionBlock(text4) {
|
|
20771
20783
|
return removeTag(text4, REPLICAS_INSTRUCTIONS_TAG);
|
|
20772
20784
|
}
|
|
20773
|
-
var REPLICAS_INSTRUCTIONS_TAG, MOTHERSHIP_INSTRUCTIONS_TAG, BOARD_RULES, MOTHERSHIP_INSTRUCTIONS_BLOCK, T, SCOUT_LINEAR_RULES, SCOUT_MUTED_RULES, SCOUT_PRIOR_UNTAGGED_RULES, SCOUT_JOINED_RULES, SCOUT_REACTION_RULES;
|
|
20785
|
+
var REPLICAS_INSTRUCTIONS_TAG, MOTHERSHIP_INSTRUCTIONS_TAG, BOARD_ANSWER_NOTE, BOARD_RULES, MOTHERSHIP_INSTRUCTIONS_BLOCK, T, SCOUT_LINEAR_RULES, SCOUT_MUTED_RULES, SCOUT_PRIOR_UNTAGGED_RULES, SCOUT_JOINED_RULES, SCOUT_REACTION_RULES;
|
|
20774
20786
|
var init_prompts = __esm({
|
|
20775
20787
|
"../shared/src/prompts.ts"() {
|
|
20776
20788
|
"use strict";
|
|
@@ -20787,9 +20799,10 @@ var init_prompts = __esm({
|
|
|
20787
20799
|
init_slack_response_style();
|
|
20788
20800
|
REPLICAS_INSTRUCTIONS_TAG = "replicas_instructions";
|
|
20789
20801
|
MOTHERSHIP_INSTRUCTIONS_TAG = "multitask_instructions";
|
|
20802
|
+
BOARD_ANSWER_NOTE = "The user answered on the board.";
|
|
20790
20803
|
BOARD_RULES = `- The board, a live status page you keep with \`${REPLICAS_MCP_TOOLS.updateBoard}\` in the Ships pane beside this chat, is the user's one view of the work: keep it covering every ship, pull request, deploy, blocker and ask. Show ships, pull requests and Linear tickets as ship, pr and linear blocks, which stay current on their own, instead of describing their status. Start with sections Needs you, Ready to review, Working, Shipping and Done, and add blocks and buttons whenever they help the user act.
|
|
20791
20804
|
- A ship with open pull requests is not done when it sends \`finished\`: Replicas fixes their CI failures and review comments automatically, then sends \`ready\` or \`needs_attention\`. On \`needs_attention\`, direct the ship, or put the decision to the user if it needs one.
|
|
20792
|
-
- On every ship event
|
|
20805
|
+
- On every ship event and every answer the user gives on the board (marked "${BOARD_ANSWER_NOTE}"), act with tools on the answer or on any work the event unblocks, such as starting the next task once a pull request merges, update the board, and end your turn with no text at all. Never write an acknowledgement such as "Noted.", even if earlier turns did.
|
|
20793
20806
|
- The chat is like texting an assistant: the user sees only your last message of each turn, never your tool calls or earlier text. Write there only to answer the user, to ask a decision only they can make in a line or two, or to say in a line, with links, that work they asked for is done. Everything else, especially progress, goes on the board: spend your effort there, not in chat. Put each decision on the board too, as a choice when it has clear options, and ask it in chat once. Never restate the board in chat: no status tables, per-ship lists or summaries of what ships did.
|
|
20794
20807
|
- When the user picks a choice or clicks a button that messages or merges, Replicas removes that item from the board for you. Add it back, or a new item, only if the user is still needed.
|
|
20795
20808
|
`;
|
|
@@ -20819,10 +20832,12 @@ function parseMessageOrigin(raw) {
|
|
|
20819
20832
|
}
|
|
20820
20833
|
if (typeof name === "string") return { kind: "workspace", id: workspace[2], name, body: stripReplicasInstructionBlock(raw.slice(workspace[0].length)) };
|
|
20821
20834
|
}
|
|
20835
|
+
const board = raw.match(BOARD_ANSWER);
|
|
20836
|
+
if (board) return { kind: "board", body: stripReplicasInstructionBlock(raw.slice(board[0].length)) };
|
|
20822
20837
|
const automation2 = raw.match(SCHEDULED_FOLLOW_UP);
|
|
20823
20838
|
return automation2 ? { kind: "automation", id: automation2[2], name: automation2[1].trim(), body: stripReplicasInstructionBlock(raw.slice(automation2[0].length)) } : null;
|
|
20824
20839
|
}
|
|
20825
|
-
var UUID, WORKSPACE_SENDER, SCHEDULED_NOTE, SCHEDULED_FOLLOW_UP;
|
|
20840
|
+
var UUID, WORKSPACE_SENDER, BOARD_ANSWER, SCHEDULED_NOTE, SCHEDULED_FOLLOW_UP;
|
|
20826
20841
|
var init_message_origin = __esm({
|
|
20827
20842
|
"../shared/src/message-origin.ts"() {
|
|
20828
20843
|
"use strict";
|
|
@@ -20830,6 +20845,7 @@ var init_message_origin = __esm({
|
|
|
20830
20845
|
init_uuid();
|
|
20831
20846
|
UUID = UUID_RE.source.slice(1, -1);
|
|
20832
20847
|
WORKSPACE_SENDER = new RegExp(String.raw`^\s*<${REPLICAS_INSTRUCTIONS_TAG}>\nFrom the workspace ("(?:[^"\\\n]|\\.)*") \((${UUID})\)\.\n</${REPLICAS_INSTRUCTIONS_TAG}>`);
|
|
20848
|
+
BOARD_ANSWER = new RegExp(String.raw`^\s*(?:<${REPLICAS_INSTRUCTIONS_TAG}>\nFrom [^\n]*\n</${REPLICAS_INSTRUCTIONS_TAG}>\s*)?<${REPLICAS_INSTRUCTIONS_TAG}>\n${BOARD_ANSWER_NOTE.replace(/\./g, "\\.")}\n</${REPLICAS_INSTRUCTIONS_TAG}>`);
|
|
20833
20849
|
SCHEDULED_NOTE = "This is a message you or a teammate scheduled earlier, delivered into this workspace.";
|
|
20834
20850
|
SCHEDULED_FOLLOW_UP = new RegExp(String.raw`^\s*\*\*Scheduled follow-up: ([^\n]+)\*\*\n\nThe automation "[^\n]*" \((${UUID})\) fired at \S+\. ${SCHEDULED_NOTE.replace(/\./g, "\\.")}`);
|
|
20835
20851
|
}
|
|
@@ -28961,6 +28977,23 @@ var init_learned_skills = __esm({
|
|
|
28961
28977
|
}
|
|
28962
28978
|
});
|
|
28963
28979
|
|
|
28980
|
+
// ../shared/src/terminal.ts
|
|
28981
|
+
var init_terminal = __esm({
|
|
28982
|
+
"../shared/src/terminal.ts"() {
|
|
28983
|
+
"use strict";
|
|
28984
|
+
}
|
|
28985
|
+
});
|
|
28986
|
+
|
|
28987
|
+
// ../shared/src/workspace-target.ts
|
|
28988
|
+
var init_workspace_target = __esm({
|
|
28989
|
+
"../shared/src/workspace-target.ts"() {
|
|
28990
|
+
"use strict";
|
|
28991
|
+
init_urls();
|
|
28992
|
+
init_terminal();
|
|
28993
|
+
init_uuid();
|
|
28994
|
+
}
|
|
28995
|
+
});
|
|
28996
|
+
|
|
28964
28997
|
// ../shared/src/user-message-matching.ts
|
|
28965
28998
|
function parseTimestampMs(timestamp) {
|
|
28966
28999
|
if (typeof timestamp === "number") return Number.isFinite(timestamp) ? timestamp : 0;
|
|
@@ -29008,6 +29041,7 @@ var init_steps = __esm({
|
|
|
29008
29041
|
init_replicas_mcp();
|
|
29009
29042
|
init_type_guards();
|
|
29010
29043
|
init_uuid();
|
|
29044
|
+
init_workspace_target();
|
|
29011
29045
|
init_shell_commands();
|
|
29012
29046
|
init_subagent_mcp();
|
|
29013
29047
|
init_format2();
|
|
@@ -31887,13 +31921,6 @@ var init_organizations = __esm({
|
|
|
31887
31921
|
}
|
|
31888
31922
|
});
|
|
31889
31923
|
|
|
31890
|
-
// ../shared/src/terminal.ts
|
|
31891
|
-
var init_terminal = __esm({
|
|
31892
|
-
"../shared/src/terminal.ts"() {
|
|
31893
|
-
"use strict";
|
|
31894
|
-
}
|
|
31895
|
-
});
|
|
31896
|
-
|
|
31897
31924
|
// ../shared/src/headless-agent.ts
|
|
31898
31925
|
var headlessAgentRequestSchema;
|
|
31899
31926
|
var init_headless_agent = __esm({
|
|
@@ -31951,7 +31978,7 @@ var CLI_VERSION;
|
|
|
31951
31978
|
var init_cli_version = __esm({
|
|
31952
31979
|
"../shared/src/cli-version.ts"() {
|
|
31953
31980
|
"use strict";
|
|
31954
|
-
CLI_VERSION = "0.3.
|
|
31981
|
+
CLI_VERSION = "0.3.313";
|
|
31955
31982
|
}
|
|
31956
31983
|
});
|
|
31957
31984
|
|
|
@@ -42580,7 +42607,7 @@ var init_mothership_board = __esm({
|
|
|
42580
42607
|
"use strict";
|
|
42581
42608
|
init_zod();
|
|
42582
42609
|
init_urls();
|
|
42583
|
-
MOTHERSHIP_BOARD_TONES = ["neutral", "needs_you", "warning", "success", "danger"];
|
|
42610
|
+
MOTHERSHIP_BOARD_TONES = ["neutral", "needs_you", "warning", "success", "danger", "working"];
|
|
42584
42611
|
label = (max) => external_exports.string().trim().min(1).max(max);
|
|
42585
42612
|
tone = external_exports.enum(MOTHERSHIP_BOARD_TONES);
|
|
42586
42613
|
blockId = external_exports.string().regex(/^[\w.:-]{1,64}$/, "Use 1-64 letters, digits, _, -, . or :");
|
|
@@ -42872,6 +42899,7 @@ var init_src = __esm({
|
|
|
42872
42899
|
init_api_casing();
|
|
42873
42900
|
init_websocket_liveness();
|
|
42874
42901
|
init_mothership_board();
|
|
42902
|
+
init_workspace_target();
|
|
42875
42903
|
}
|
|
42876
42904
|
});
|
|
42877
42905
|
|