replicas-cli 0.3.26 → 0.3.28
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 +102 -52
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -22927,6 +22927,7 @@ function toSnakeCaseKeys(value) {
|
|
|
22927
22927
|
}
|
|
22928
22928
|
|
|
22929
22929
|
// ../shared/src/engine/v1.ts
|
|
22930
|
+
var MERGED_MESSAGE_SEPARATOR = "\n\n<!-- replicas:merged -->\n\n";
|
|
22930
22931
|
var updateChatDisplayNameRequestSchema = external_exports.object({
|
|
22931
22932
|
displayName: external_exports.string().trim().min(1).max(100)
|
|
22932
22933
|
});
|
|
@@ -23675,27 +23676,6 @@ var SUBAGENT_MCP_TOOLS = {
|
|
|
23675
23676
|
};
|
|
23676
23677
|
var SUBAGENT_MCP_TOOL_NAMES = Object.values(SUBAGENT_MCP_TOOLS);
|
|
23677
23678
|
|
|
23678
|
-
// ../shared/src/frontmatter.ts
|
|
23679
|
-
var import_yaml = __toESM(require_dist());
|
|
23680
|
-
|
|
23681
|
-
// ../shared/src/learned-skills.ts
|
|
23682
|
-
var LEARNED_SKILLS_ROOT = `${SANDBOX_PATHS.REPLICAS_DIR}/learned-skills`;
|
|
23683
|
-
var LEARNED_SKILLS_MANIFEST_PATH = `${LEARNED_SKILLS_ROOT}/manifest.json`;
|
|
23684
|
-
var learnedSkillsManifestSchema = external_exports.object({
|
|
23685
|
-
skills: external_exports.array(external_exports.object({ name: external_exports.string(), sha256: external_exports.string() }))
|
|
23686
|
-
});
|
|
23687
|
-
var dreamVerdictChecksSchema = external_exports.object({
|
|
23688
|
-
repeatable: external_exports.boolean(),
|
|
23689
|
-
realInstruction: external_exports.boolean(),
|
|
23690
|
-
noContradiction: external_exports.boolean(),
|
|
23691
|
-
formatExact: external_exports.boolean(),
|
|
23692
|
-
humanOnly: external_exports.boolean(),
|
|
23693
|
-
actionable: external_exports.boolean(),
|
|
23694
|
-
durable: external_exports.boolean()
|
|
23695
|
-
});
|
|
23696
|
-
var DREAM_VERDICT_CHECKS = dreamVerdictChecksSchema.keyof().options;
|
|
23697
|
-
var dreamVerdictSchema = dreamVerdictChecksSchema.extend({ approve: external_exports.boolean(), reason: external_exports.string() });
|
|
23698
|
-
|
|
23699
23679
|
// ../shared/src/uuid.ts
|
|
23700
23680
|
var UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
23701
23681
|
|
|
@@ -26041,7 +26021,8 @@ var REPLICAS_MCP_TOOLS = {
|
|
|
26041
26021
|
messageSubagent: "message_subagent",
|
|
26042
26022
|
listSubagents: "list_subagents",
|
|
26043
26023
|
readSubagent: "read_subagent",
|
|
26044
|
-
archiveSubagent: "archive_subagent"
|
|
26024
|
+
archiveSubagent: "archive_subagent",
|
|
26025
|
+
waitForSubagents: "wait_for_subagents"
|
|
26045
26026
|
};
|
|
26046
26027
|
var automationToolInputSchema = external_exports.object({
|
|
26047
26028
|
name: external_exports.string().describe("Short automation name."),
|
|
@@ -26081,31 +26062,6 @@ var updateEnvironmentMcpToolInputSchema = external_exports.object({
|
|
|
26081
26062
|
...updateEnvironmentMcpRequestSchema.shape
|
|
26082
26063
|
});
|
|
26083
26064
|
|
|
26084
|
-
// ../shared/src/user-message-matching.ts
|
|
26085
|
-
function parseTimestampMs(timestamp) {
|
|
26086
|
-
const value = typeof timestamp === "number" ? timestamp : Date.parse(timestamp);
|
|
26087
|
-
return Number.isFinite(value) ? value : 0;
|
|
26088
|
-
}
|
|
26089
|
-
function areUserMessagesWithinMatchWindow(a, b) {
|
|
26090
|
-
return a.content === b.content && Math.abs(parseTimestampMs(a.timestamp) - parseTimestampMs(b.timestamp)) <= USER_MESSAGE_MATCH_GRACE_PERIOD_MS;
|
|
26091
|
-
}
|
|
26092
|
-
|
|
26093
|
-
// ../shared/src/display-message/steps.ts
|
|
26094
|
-
var SUBAGENT_STEPS = {
|
|
26095
|
-
[SUBAGENT_MCP_TOOLS.messageAgent]: { icon: "message", live: "Messaging", done: "Messaged" },
|
|
26096
|
-
[SUBAGENT_MCP_TOOLS.waitAgent]: { icon: "clock", live: "Waiting for", done: "Waited for" },
|
|
26097
|
-
[SUBAGENT_MCP_TOOLS.getAgent]: { icon: "search", live: "Checking", done: "Checked" },
|
|
26098
|
-
[SUBAGENT_MCP_TOOLS.deleteAgent]: { icon: "trash", live: "Deleting", done: "Deleted" },
|
|
26099
|
-
[SUBAGENT_MCP_TOOLS.getProviders]: { icon: "list", live: "Listing available providers", done: "Listed available providers" }
|
|
26100
|
-
};
|
|
26101
|
-
var MULTITASK_TOOL_ACTIONS = {
|
|
26102
|
-
[REPLICAS_MCP_TOOLS.spawnSubagent]: "spawn",
|
|
26103
|
-
[REPLICAS_MCP_TOOLS.messageSubagent]: "send",
|
|
26104
|
-
[REPLICAS_MCP_TOOLS.listSubagents]: "list",
|
|
26105
|
-
[REPLICAS_MCP_TOOLS.readSubagent]: "read",
|
|
26106
|
-
[REPLICAS_MCP_TOOLS.archiveSubagent]: "archive"
|
|
26107
|
-
};
|
|
26108
|
-
|
|
26109
26065
|
// ../shared/src/routes/preferences.ts
|
|
26110
26066
|
var EMPTY_AGENT_DEFAULT_SETTINGS = {
|
|
26111
26067
|
agent_provider: null,
|
|
@@ -26172,6 +26128,95 @@ function removeReplicasInstructions(text2) {
|
|
|
26172
26128
|
}
|
|
26173
26129
|
var MULTITASK_INSTRUCTIONS_BLOCK = new RegExp(`\\s*<${MULTITASK_INSTRUCTIONS_TAG}>\\n([\\s\\S]*?)\\n</${MULTITASK_INSTRUCTIONS_TAG}>`);
|
|
26174
26130
|
|
|
26131
|
+
// ../shared/src/multitask-events.ts
|
|
26132
|
+
var MULTITASK_EVENT_KINDS = ["finished", "ready", "needs_attention", "merged", "closed", "archived"];
|
|
26133
|
+
var MULTITASK_EVENT_TYPE = "multitask-event";
|
|
26134
|
+
var multitaskEventSchema = external_exports.object({
|
|
26135
|
+
id: external_exports.string(),
|
|
26136
|
+
at: external_exports.string(),
|
|
26137
|
+
kind: external_exports.enum(MULTITASK_EVENT_KINDS),
|
|
26138
|
+
agentId: external_exports.string(),
|
|
26139
|
+
agentName: external_exports.string(),
|
|
26140
|
+
summary: external_exports.string(),
|
|
26141
|
+
detail: external_exports.string().optional(),
|
|
26142
|
+
// Already shown as a row when it happened, so the delivered message does not show it again.
|
|
26143
|
+
noticed: external_exports.boolean().optional()
|
|
26144
|
+
});
|
|
26145
|
+
var TAG = "multitask_event";
|
|
26146
|
+
var BLOCK = new RegExp(`<${TAG}((?:\\s+\\w+="[^"]*")*)>\\n?([\\s\\S]*?)\\n?</${TAG}>`, "g");
|
|
26147
|
+
var ATTRIBUTE = /(\w+)="([^"]*)"/g;
|
|
26148
|
+
var unescapeAttribute = (value) => value.replace(/</g, "<").replace(/"/g, '"').replace(/&/g, "&");
|
|
26149
|
+
function extractMultitaskEvents(text2) {
|
|
26150
|
+
return [...text2.matchAll(BLOCK)].flatMap((match) => {
|
|
26151
|
+
const attributes = Object.fromEntries([...match[1].matchAll(ATTRIBUTE)].map(([, key, value]) => [key, unescapeAttribute(value)]));
|
|
26152
|
+
const kind = MULTITASK_EVENT_KINDS.find((candidate) => candidate === attributes.kind);
|
|
26153
|
+
if (!kind || !attributes.id || !attributes.agent_id) return [];
|
|
26154
|
+
const [summary, ...rest] = match[2].replaceAll(`<\\/${TAG}`, `</${TAG}`).split("\n\n");
|
|
26155
|
+
const detail = rest.join("\n\n").trim();
|
|
26156
|
+
return [{
|
|
26157
|
+
id: attributes.id,
|
|
26158
|
+
at: attributes.at ?? "",
|
|
26159
|
+
kind,
|
|
26160
|
+
agentId: attributes.agent_id,
|
|
26161
|
+
agentName: attributes.agent ?? "subagent",
|
|
26162
|
+
summary: summary.trim(),
|
|
26163
|
+
...detail ? { detail } : {},
|
|
26164
|
+
...attributes.noticed === "true" ? { noticed: true } : {}
|
|
26165
|
+
}];
|
|
26166
|
+
});
|
|
26167
|
+
}
|
|
26168
|
+
function parseMultitaskEvents(text2) {
|
|
26169
|
+
const events = extractMultitaskEvents(text2);
|
|
26170
|
+
return events.length > 0 && text2.replace(BLOCK, "").replaceAll(MERGED_MESSAGE_SEPARATOR.trim(), "").trim() === "" ? events : null;
|
|
26171
|
+
}
|
|
26172
|
+
|
|
26173
|
+
// ../shared/src/frontmatter.ts
|
|
26174
|
+
var import_yaml = __toESM(require_dist());
|
|
26175
|
+
|
|
26176
|
+
// ../shared/src/learned-skills.ts
|
|
26177
|
+
var LEARNED_SKILLS_ROOT = `${SANDBOX_PATHS.REPLICAS_DIR}/learned-skills`;
|
|
26178
|
+
var LEARNED_SKILLS_MANIFEST_PATH = `${LEARNED_SKILLS_ROOT}/manifest.json`;
|
|
26179
|
+
var learnedSkillsManifestSchema = external_exports.object({
|
|
26180
|
+
skills: external_exports.array(external_exports.object({ name: external_exports.string(), sha256: external_exports.string() }))
|
|
26181
|
+
});
|
|
26182
|
+
var dreamVerdictChecksSchema = external_exports.object({
|
|
26183
|
+
repeatable: external_exports.boolean(),
|
|
26184
|
+
realInstruction: external_exports.boolean(),
|
|
26185
|
+
noContradiction: external_exports.boolean(),
|
|
26186
|
+
formatExact: external_exports.boolean(),
|
|
26187
|
+
humanOnly: external_exports.boolean(),
|
|
26188
|
+
actionable: external_exports.boolean(),
|
|
26189
|
+
durable: external_exports.boolean()
|
|
26190
|
+
});
|
|
26191
|
+
var DREAM_VERDICT_CHECKS = dreamVerdictChecksSchema.keyof().options;
|
|
26192
|
+
var dreamVerdictSchema = dreamVerdictChecksSchema.extend({ approve: external_exports.boolean(), reason: external_exports.string() });
|
|
26193
|
+
|
|
26194
|
+
// ../shared/src/user-message-matching.ts
|
|
26195
|
+
function parseTimestampMs(timestamp) {
|
|
26196
|
+
const value = typeof timestamp === "number" ? timestamp : Date.parse(timestamp);
|
|
26197
|
+
return Number.isFinite(value) ? value : 0;
|
|
26198
|
+
}
|
|
26199
|
+
function areUserMessagesWithinMatchWindow(a, b) {
|
|
26200
|
+
return a.content === b.content && Math.abs(parseTimestampMs(a.timestamp) - parseTimestampMs(b.timestamp)) <= USER_MESSAGE_MATCH_GRACE_PERIOD_MS;
|
|
26201
|
+
}
|
|
26202
|
+
|
|
26203
|
+
// ../shared/src/display-message/steps.ts
|
|
26204
|
+
var SUBAGENT_STEPS = {
|
|
26205
|
+
[SUBAGENT_MCP_TOOLS.messageAgent]: { icon: "message", live: "Messaging", done: "Messaged" },
|
|
26206
|
+
[SUBAGENT_MCP_TOOLS.waitAgent]: { icon: "clock", live: "Waiting for", done: "Waited for" },
|
|
26207
|
+
[SUBAGENT_MCP_TOOLS.getAgent]: { icon: "search", live: "Checking", done: "Checked" },
|
|
26208
|
+
[SUBAGENT_MCP_TOOLS.deleteAgent]: { icon: "trash", live: "Deleting", done: "Deleted" },
|
|
26209
|
+
[SUBAGENT_MCP_TOOLS.getProviders]: { icon: "list", live: "Listing available providers", done: "Listed available providers" }
|
|
26210
|
+
};
|
|
26211
|
+
var MULTITASK_TOOL_ACTIONS = {
|
|
26212
|
+
[REPLICAS_MCP_TOOLS.spawnSubagent]: "spawn",
|
|
26213
|
+
[REPLICAS_MCP_TOOLS.messageSubagent]: "send",
|
|
26214
|
+
[REPLICAS_MCP_TOOLS.listSubagents]: "list",
|
|
26215
|
+
[REPLICAS_MCP_TOOLS.readSubagent]: "read",
|
|
26216
|
+
[REPLICAS_MCP_TOOLS.archiveSubagent]: "archive",
|
|
26217
|
+
[REPLICAS_MCP_TOOLS.waitForSubagents]: "wait"
|
|
26218
|
+
};
|
|
26219
|
+
|
|
26175
26220
|
// ../shared/src/user-message-attachments.ts
|
|
26176
26221
|
var ATTACHMENT_PLACEHOLDER_REGEX = /^\[\d+ (?:(?:images?|files?)(?: and \d+ files?)? attached|(?:image )?attachments?)\]$/;
|
|
26177
26222
|
var WALKTHROUGH_NOTE_REGEX = /(?:^|\n\n)<replicas_walkthrough path="([^"\n]+)" duration_seconds="(\d+)" audio="(true|false)">\n[^<]*\n<\/replicas_walkthrough>$/;
|
|
@@ -28025,6 +28070,11 @@ function applyInterruptions(messages, events) {
|
|
|
28025
28070
|
function applyEngineNotices(messages, events) {
|
|
28026
28071
|
const notices = [];
|
|
28027
28072
|
events.forEach((event, index) => {
|
|
28073
|
+
if (event.type === MULTITASK_EVENT_TYPE) {
|
|
28074
|
+
const parsed = typeof event.payload.text === "string" ? parseMultitaskEvents(event.payload.text) : null;
|
|
28075
|
+
if (parsed) notices.push({ id: `multitask-event-${event.timestamp}-${index}`, type: "multitask_event", events: parsed, timestamp: event.timestamp });
|
|
28076
|
+
return;
|
|
28077
|
+
}
|
|
28028
28078
|
if (event.type === CHAT_MESSAGE_REJECTED_EVENT_TYPE) {
|
|
28029
28079
|
notices.push({
|
|
28030
28080
|
id: `message-rejected-${event.timestamp}-${index}`,
|
|
@@ -28380,7 +28430,7 @@ var headlessAgentRequestSchema = external_exports.object({
|
|
|
28380
28430
|
});
|
|
28381
28431
|
|
|
28382
28432
|
// ../shared/src/cli-version.ts
|
|
28383
|
-
var CLI_VERSION = "0.3.
|
|
28433
|
+
var CLI_VERSION = "0.3.28";
|
|
28384
28434
|
|
|
28385
28435
|
// ../shared/src/version.ts
|
|
28386
28436
|
function compareVersions(v1, v2) {
|
|
@@ -29209,7 +29259,7 @@ async function authenticatedFetch(url2, options) {
|
|
|
29209
29259
|
|
|
29210
29260
|
// src/lib/output.ts
|
|
29211
29261
|
var import_chalk = __toESM(require("chalk"));
|
|
29212
|
-
var
|
|
29262
|
+
var import_prompts5 = __toESM(require("prompts"));
|
|
29213
29263
|
var jsonMode = false;
|
|
29214
29264
|
function enableJsonMode() {
|
|
29215
29265
|
jsonMode = true;
|
|
@@ -29238,7 +29288,7 @@ async function ask(question) {
|
|
|
29238
29288
|
if (!isInteractive()) {
|
|
29239
29289
|
throw new Error(`Missing input (${String(question.message).trim()}) and no interactive terminal to ask for it. Pass it as an option; see --help.`);
|
|
29240
29290
|
}
|
|
29241
|
-
return (0,
|
|
29291
|
+
return (0, import_prompts5.default)(question);
|
|
29242
29292
|
}
|
|
29243
29293
|
|
|
29244
29294
|
// src/lib/organization.ts
|
|
@@ -29931,7 +29981,7 @@ var import_chalk9 = __toESM(require("chalk"));
|
|
|
29931
29981
|
|
|
29932
29982
|
// src/lib/command-utils.ts
|
|
29933
29983
|
var import_chalk7 = __toESM(require("chalk"));
|
|
29934
|
-
var
|
|
29984
|
+
var import_prompts6 = __toESM(require("prompts"));
|
|
29935
29985
|
function formatDate(dateString) {
|
|
29936
29986
|
return new Date(dateString).toLocaleString();
|
|
29937
29987
|
}
|
|
@@ -29952,7 +30002,7 @@ function parseKeyValuePairs(pairs) {
|
|
|
29952
30002
|
}
|
|
29953
30003
|
async function confirmAction(message2) {
|
|
29954
30004
|
if (!isInteractive()) throw new Error(`${message2} Pass -f to confirm without a terminal.`);
|
|
29955
|
-
const { confirm } = await (0,
|
|
30005
|
+
const { confirm } = await (0, import_prompts6.default)({ type: "confirm", name: "confirm", message: message2, initial: false });
|
|
29956
30006
|
if (!confirm) console.log(import_chalk7.default.yellow("\nCancelled."));
|
|
29957
30007
|
return Boolean(confirm);
|
|
29958
30008
|
}
|