replicas-cli 0.2.255 → 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 +72 -13
- 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;
|
|
@@ -9253,7 +9273,7 @@ function normalizeClaudeModel(model) {
|
|
|
9253
9273
|
}
|
|
9254
9274
|
var AGENT_MODELS = {
|
|
9255
9275
|
claude: [CLAUDE_OPUS_1M_MODEL, CLAUDE_FABLE_5_MODEL, "sonnet", "haiku"],
|
|
9256
|
-
codex: [DEFAULT_CODEX_MODEL, "gpt-5.4", "gpt-5.4-mini", "gpt-5.3-codex", "gpt-5.
|
|
9276
|
+
codex: [DEFAULT_CODEX_MODEL, "gpt-5.4", "gpt-5.4-mini", "gpt-5.3-codex", "gpt-5.2"],
|
|
9257
9277
|
relay: [CLAUDE_OPUS_1M_MODEL, CLAUDE_FABLE_5_MODEL, "sonnet"]
|
|
9258
9278
|
};
|
|
9259
9279
|
var MODEL_LABELS = {
|
|
@@ -9267,14 +9287,7 @@ var MODEL_LABELS = {
|
|
|
9267
9287
|
"gpt-5.4": "GPT-5.4",
|
|
9268
9288
|
"gpt-5.4-mini": "GPT-5.4 Mini",
|
|
9269
9289
|
"gpt-5.3-codex": "GPT-5.3 Codex",
|
|
9270
|
-
"gpt-5.
|
|
9271
|
-
"gpt-5.2-codex": "GPT-5.2 Codex",
|
|
9272
|
-
"gpt-5.2": "GPT-5.2",
|
|
9273
|
-
"gpt-5.1-codex-max": "GPT-5.1 Codex Max",
|
|
9274
|
-
"gpt-5.1-codex": "GPT-5.1 Codex",
|
|
9275
|
-
"gpt-5.1": "GPT-5.1",
|
|
9276
|
-
"gpt-5-codex": "GPT-5 Codex",
|
|
9277
|
-
"gpt-5": "GPT-5"
|
|
9290
|
+
"gpt-5.2": "GPT-5.2"
|
|
9278
9291
|
};
|
|
9279
9292
|
var CANVAS_KIND_BY_EXTENSION = {
|
|
9280
9293
|
".md": { kind: "markdown", mimeType: "text/markdown; charset=utf-8" },
|
|
@@ -9881,6 +9894,8 @@ function parseClaudeEvents(events, parentToolUseId) {
|
|
|
9881
9894
|
});
|
|
9882
9895
|
const toolCallMap = /* @__PURE__ */ new Map();
|
|
9883
9896
|
const taskMessageMap = /* @__PURE__ */ new Map();
|
|
9897
|
+
const partialIndexes = /* @__PURE__ */ new Map();
|
|
9898
|
+
const completedPartialStreamIds = /* @__PURE__ */ new Set();
|
|
9884
9899
|
const taskAccumulator = new TaskAccumulator();
|
|
9885
9900
|
const taskSnapshot = () => taskAccumulator.getTasks().map((task) => ({
|
|
9886
9901
|
text: task.subject,
|
|
@@ -9888,6 +9903,34 @@ function parseClaudeEvents(events, parentToolUseId) {
|
|
|
9888
9903
|
itemStatus: task.status
|
|
9889
9904
|
}));
|
|
9890
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
|
+
}
|
|
9891
9934
|
if (event.type === "claude-user") {
|
|
9892
9935
|
const content = normalizeContentBlocks(event.payload.message?.content);
|
|
9893
9936
|
const toolResult = content.find((c) => c.type === "tool_result");
|
|
@@ -9923,6 +9966,10 @@ function parseClaudeEvents(events, parentToolUseId) {
|
|
|
9923
9966
|
}
|
|
9924
9967
|
}
|
|
9925
9968
|
if (event.type === "claude-assistant") {
|
|
9969
|
+
const messageId = event.payload.message?.id;
|
|
9970
|
+
if (typeof messageId === "string" && messageId) {
|
|
9971
|
+
completedPartialStreamIds.add(messageId);
|
|
9972
|
+
}
|
|
9926
9973
|
const contentBlocks = normalizeContentBlocks(event.payload.message?.content);
|
|
9927
9974
|
contentBlocks.forEach((block) => {
|
|
9928
9975
|
if (block.type === "text" && block.text) {
|
|
@@ -10212,7 +10259,11 @@ function parseClaudeEvents(events, parentToolUseId) {
|
|
|
10212
10259
|
}
|
|
10213
10260
|
}
|
|
10214
10261
|
});
|
|
10215
|
-
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
|
+
});
|
|
10216
10267
|
}
|
|
10217
10268
|
|
|
10218
10269
|
// ../shared/src/agent-event-utils.ts
|
|
@@ -14224,6 +14275,10 @@ function patchChat(chats, chatId, patch) {
|
|
|
14224
14275
|
return changed ? next.sort((a, b) => b.updatedAt.localeCompare(a.updatedAt)) : chats;
|
|
14225
14276
|
}
|
|
14226
14277
|
function getEventSignature(value) {
|
|
14278
|
+
const streamId = getClaudePartialMessageStreamId(value);
|
|
14279
|
+
if (streamId) {
|
|
14280
|
+
return `${CLAUDE_PARTIAL_MESSAGE_EVENT_TYPE}:${streamId}`;
|
|
14281
|
+
}
|
|
14227
14282
|
const normalize = (input) => {
|
|
14228
14283
|
if (Array.isArray(input)) return input.map(normalize);
|
|
14229
14284
|
if (input && typeof input === "object") {
|
|
@@ -14380,8 +14435,12 @@ function useWorkspaceEvents(workspaceId, enabled = true) {
|
|
|
14380
14435
|
if (!current) {
|
|
14381
14436
|
return { thread_id: null, events: [event.payload.event] };
|
|
14382
14437
|
}
|
|
14383
|
-
const
|
|
14384
|
-
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
|
+
}
|
|
14385
14444
|
return { ...current, events: [...current.events, event.payload.event] };
|
|
14386
14445
|
}
|
|
14387
14446
|
);
|