replicas-cli 0.2.256 → 0.2.257
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.mjs +70 -4
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -7575,6 +7575,26 @@ function getProviderDisplayName(provider) {
|
|
|
7575
7575
|
}
|
|
7576
7576
|
|
|
7577
7577
|
// ../shared/src/event.ts
|
|
7578
|
+
var CLAUDE_PARTIAL_MESSAGE_EVENT_TYPE = "claude-partial-message";
|
|
7579
|
+
function coerceClaudePartialMessagePayload(payload) {
|
|
7580
|
+
const streamId = payload.streamId;
|
|
7581
|
+
if (typeof streamId !== "string" || !streamId) return null;
|
|
7582
|
+
const parentToolUseId = payload.parent_tool_use_id;
|
|
7583
|
+
const text = typeof payload.text === "string" && payload.text ? payload.text : void 0;
|
|
7584
|
+
const thinking = typeof payload.thinking === "string" && payload.thinking ? payload.thinking : void 0;
|
|
7585
|
+
if (!text && !thinking) return null;
|
|
7586
|
+
return {
|
|
7587
|
+
streamId,
|
|
7588
|
+
parent_tool_use_id: typeof parentToolUseId === "string" ? parentToolUseId : null,
|
|
7589
|
+
...text ? { text } : {},
|
|
7590
|
+
...thinking ? { thinking } : {},
|
|
7591
|
+
status: payload.status === "completed" ? "completed" : "in_progress"
|
|
7592
|
+
};
|
|
7593
|
+
}
|
|
7594
|
+
function getClaudePartialMessageStreamId(event) {
|
|
7595
|
+
if (event.type !== CLAUDE_PARTIAL_MESSAGE_EVENT_TYPE) return null;
|
|
7596
|
+
return typeof event.payload.streamId === "string" && event.payload.streamId ? event.payload.streamId : null;
|
|
7597
|
+
}
|
|
7578
7598
|
var USER_MESSAGE_ID_PAYLOAD_KEY = "replicasMessageId";
|
|
7579
7599
|
var CODEX_ASP_ITEM_ID_PAYLOAD_KEY = "codexAspItemId";
|
|
7580
7600
|
var CODEX_QUOTA_STATUS_EVENT_TYPE = "codex-quota-status";
|
|
@@ -9216,7 +9236,7 @@ var HOOK_EXEC_MAX_BUFFER_BYTES = 10 * 1024 * 1024;
|
|
|
9216
9236
|
var REPLICAS_CONFIG_FILENAMES = ["replicas.json", "replicas.yaml", "replicas.yml"];
|
|
9217
9237
|
|
|
9218
9238
|
// ../shared/src/cli-version.ts
|
|
9219
|
-
var CLI_VERSION = "0.2.
|
|
9239
|
+
var CLI_VERSION = "0.2.257";
|
|
9220
9240
|
|
|
9221
9241
|
// ../shared/src/engine/environment.ts
|
|
9222
9242
|
var DESKTOP_NOVNC_PORT = 6080;
|
|
@@ -9874,6 +9894,8 @@ function parseClaudeEvents(events, parentToolUseId) {
|
|
|
9874
9894
|
});
|
|
9875
9895
|
const toolCallMap = /* @__PURE__ */ new Map();
|
|
9876
9896
|
const taskMessageMap = /* @__PURE__ */ new Map();
|
|
9897
|
+
const partialIndexes = /* @__PURE__ */ new Map();
|
|
9898
|
+
const completedPartialStreamIds = /* @__PURE__ */ new Set();
|
|
9877
9899
|
const taskAccumulator = new TaskAccumulator();
|
|
9878
9900
|
const taskSnapshot = () => taskAccumulator.getTasks().map((task) => ({
|
|
9879
9901
|
text: task.subject,
|
|
@@ -9881,6 +9903,34 @@ function parseClaudeEvents(events, parentToolUseId) {
|
|
|
9881
9903
|
itemStatus: task.status
|
|
9882
9904
|
}));
|
|
9883
9905
|
filteredEvents.forEach((event) => {
|
|
9906
|
+
if (event.type === CLAUDE_PARTIAL_MESSAGE_EVENT_TYPE) {
|
|
9907
|
+
const payload = coerceClaudePartialMessagePayload(event.payload);
|
|
9908
|
+
if (!payload) return;
|
|
9909
|
+
const existing = partialIndexes.get(payload.streamId) ?? {};
|
|
9910
|
+
if (payload.thinking) {
|
|
9911
|
+
const reasoningMessage = {
|
|
9912
|
+
id: `reasoning-partial:${payload.streamId}`,
|
|
9913
|
+
type: "reasoning",
|
|
9914
|
+
content: payload.thinking,
|
|
9915
|
+
status: payload.status,
|
|
9916
|
+
timestamp: event.timestamp
|
|
9917
|
+
};
|
|
9918
|
+
if (existing.reasoning !== void 0) messages[existing.reasoning] = reasoningMessage;
|
|
9919
|
+
else existing.reasoning = messages.push(reasoningMessage) - 1;
|
|
9920
|
+
}
|
|
9921
|
+
if (payload.text) {
|
|
9922
|
+
const agentMessage = {
|
|
9923
|
+
id: `agent-partial:${payload.streamId}`,
|
|
9924
|
+
type: "agent",
|
|
9925
|
+
content: payload.text,
|
|
9926
|
+
timestamp: event.timestamp
|
|
9927
|
+
};
|
|
9928
|
+
if (existing.agent !== void 0) messages[existing.agent] = agentMessage;
|
|
9929
|
+
else existing.agent = messages.push(agentMessage) - 1;
|
|
9930
|
+
}
|
|
9931
|
+
partialIndexes.set(payload.streamId, existing);
|
|
9932
|
+
return;
|
|
9933
|
+
}
|
|
9884
9934
|
if (event.type === "claude-user") {
|
|
9885
9935
|
const content = normalizeContentBlocks(event.payload.message?.content);
|
|
9886
9936
|
const toolResult = content.find((c) => c.type === "tool_result");
|
|
@@ -9916,6 +9966,10 @@ function parseClaudeEvents(events, parentToolUseId) {
|
|
|
9916
9966
|
}
|
|
9917
9967
|
}
|
|
9918
9968
|
if (event.type === "claude-assistant") {
|
|
9969
|
+
const messageId = event.payload.message?.id;
|
|
9970
|
+
if (typeof messageId === "string" && messageId) {
|
|
9971
|
+
completedPartialStreamIds.add(messageId);
|
|
9972
|
+
}
|
|
9919
9973
|
const contentBlocks = normalizeContentBlocks(event.payload.message?.content);
|
|
9920
9974
|
contentBlocks.forEach((block) => {
|
|
9921
9975
|
if (block.type === "text" && block.text) {
|
|
@@ -10205,7 +10259,11 @@ function parseClaudeEvents(events, parentToolUseId) {
|
|
|
10205
10259
|
}
|
|
10206
10260
|
}
|
|
10207
10261
|
});
|
|
10208
|
-
return messages;
|
|
10262
|
+
if (partialIndexes.size === 0 || completedPartialStreamIds.size === 0) return messages;
|
|
10263
|
+
return messages.filter((message) => {
|
|
10264
|
+
const prefix = ["reasoning-partial:", "agent-partial:"].find((p) => message.id.startsWith(p));
|
|
10265
|
+
return !prefix || !completedPartialStreamIds.has(message.id.slice(prefix.length));
|
|
10266
|
+
});
|
|
10209
10267
|
}
|
|
10210
10268
|
|
|
10211
10269
|
// ../shared/src/agent-event-utils.ts
|
|
@@ -14217,6 +14275,10 @@ function patchChat(chats, chatId, patch) {
|
|
|
14217
14275
|
return changed ? next.sort((a, b) => b.updatedAt.localeCompare(a.updatedAt)) : chats;
|
|
14218
14276
|
}
|
|
14219
14277
|
function getEventSignature(value) {
|
|
14278
|
+
const streamId = getClaudePartialMessageStreamId(value);
|
|
14279
|
+
if (streamId) {
|
|
14280
|
+
return `${CLAUDE_PARTIAL_MESSAGE_EVENT_TYPE}:${streamId}`;
|
|
14281
|
+
}
|
|
14220
14282
|
const normalize = (input) => {
|
|
14221
14283
|
if (Array.isArray(input)) return input.map(normalize);
|
|
14222
14284
|
if (input && typeof input === "object") {
|
|
@@ -14373,8 +14435,12 @@ function useWorkspaceEvents(workspaceId, enabled = true) {
|
|
|
14373
14435
|
if (!current) {
|
|
14374
14436
|
return { thread_id: null, events: [event.payload.event] };
|
|
14375
14437
|
}
|
|
14376
|
-
const
|
|
14377
|
-
if (
|
|
14438
|
+
const existingIndex = current.events.findIndex((e) => getEventSignature(e) === incomingSignature);
|
|
14439
|
+
if (existingIndex !== -1) {
|
|
14440
|
+
const events = current.events.slice();
|
|
14441
|
+
events[existingIndex] = event.payload.event;
|
|
14442
|
+
return { ...current, events };
|
|
14443
|
+
}
|
|
14378
14444
|
return { ...current, events: [...current.events, event.payload.event] };
|
|
14379
14445
|
}
|
|
14380
14446
|
);
|