@codexhost/cli-darwin-arm64 0.18.0-beta.3 → 0.18.0-beta.4
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/README.md +1 -1
- package/app/codexhost-distribution.json +1 -1
- package/app/console-server.mjs +9 -4
- package/app/console-web.js +9 -4
- package/app/desktop-controller.mjs +9 -4
- package/app/host-runtime.mjs +4751 -2746
- package/app/plugins/antigravity/plugin.mjs +9 -4
- package/app/plugins/claude-code/plugin.mjs +129 -58
- package/app/plugins/codebuddy/plugin.mjs +9 -4
- package/app/plugins/codex-usage/plugin.mjs +9 -4
- package/app/plugins/copilot/plugin.mjs +9 -4
- package/app/plugins/cursor-cli/plugin.mjs +9 -4
- package/app/plugins/deepseek-harness/plugin.mjs +9 -4
- package/app/plugins/devin/plugin.mjs +9 -4
- package/app/plugins/grok/plugin.mjs +9 -4
- package/app/plugins/hermes/plugin.mjs +9 -4
- package/app/plugins/kimi-code/plugin.mjs +9 -4
- package/app/plugins/kiro-cli/plugin.mjs +9 -4
- package/app/plugins/omp/plugin.mjs +9 -4
- package/app/plugins/opencode/plugin.mjs +9 -4
- package/app/plugins/pi/plugin.mjs +9 -4
- package/app/plugins/qoder/plugin.mjs +9 -4
- package/app/plugins/qoder-cn/plugin.mjs +9 -4
- package/app/plugins/qwen-code/plugin.mjs +9 -4
- package/app/plugins/workbuddy/plugin.mjs +9 -4
- package/app/plugins/zcode/plugin.mjs +9 -4
- package/app/renderer-extension.js +9 -4
- package/app/web/assets/{index-aKvkfNJN.js → index-D1dOzBMI.js} +2 -2
- package/app/web/codexhost-settings.js +9 -4
- package/app/web/index.html +1 -1
- package/app/web/plugins/deepseek-ai__dsh-api-gateway/client.js +1 -1
- package/app/web/plugins/deepseek-ai__dsh-api-remotes/client.js +1 -1
- package/app/web/plugins/deepseek-ai__dsh-api-session-controller/client.js +3 -3
- package/app/web/plugins/deepseek-ai__dsh-client-connection/client.js +1 -1
- package/app/web/plugins/deepseek-ai__dsh-client-ui-codexhost/client.js +63 -63
- package/app/web/plugins/deepseek-ai__dsh-client-ui-conversation/client.js +8 -8
- package/app/web/plugins/deepseek-ai__dsh-client-ui-layout/client.js +2 -2
- package/app/web/plugins/deepseek-ai__dsh-client-ui-settings/client.js +1 -1
- package/app/web/plugins/deepseek-ai__dsh-client-ui-settings-general/client.js +2 -2
- package/app/web/plugins/deepseek-ai__dsh-client-ui-sidebar/client.js +2 -2
- package/app/web/plugins/deepseek-ai__dsh-client-ui-tool/client.js +1 -1
- package/app/web/plugins/deepseek-ai__dsh-client-ui-workspace/client.js +8 -12
- package/app/web/plugins.json +4 -0
- package/app/web-modules/server.mjs +374 -154
- package/bin/codexhost +0 -0
- package/libexec/codexhost-shim +0 -0
- package/libexec/codexhost-updater +0 -0
- package/package.json +1 -1
|
@@ -15686,13 +15686,18 @@ var clientChannelResponseSchema = external_exports.object({
|
|
|
15686
15686
|
});
|
|
15687
15687
|
|
|
15688
15688
|
// ../../shared-contracts/dist/thread-catalog.js
|
|
15689
|
-
var threadCatalogReadParamsSchema = external_exports.object({
|
|
15689
|
+
var threadCatalogReadParamsSchema = external_exports.object({
|
|
15690
|
+
includeArchived: external_exports.boolean().optional(),
|
|
15691
|
+
/** Absent means first page; null means this branch is exhausted. Native cursors only. */
|
|
15692
|
+
officialCursor: external_exports.object({ live: external_exports.string().nullable(), archived: external_exports.string().nullable().optional() }).strict().optional()
|
|
15693
|
+
}).strict();
|
|
15690
15694
|
var threadCatalogReadResultSchema = external_exports.object({
|
|
15691
15695
|
threads: external_exports.array(jsonObjectSchema),
|
|
15692
15696
|
ownership: external_exports.array(threadOwnershipSchema),
|
|
15693
15697
|
/** Known archived IDs, including visible local external records even when their rows are
|
|
15694
|
-
* excluded. Native archived IDs
|
|
15695
|
-
archivedThreadIds: external_exports.array(hostThreadIdSchema)
|
|
15698
|
+
* excluded. Native archived IDs describe only the returned page, never a complete set. */
|
|
15699
|
+
archivedThreadIds: external_exports.array(hostThreadIdSchema),
|
|
15700
|
+
officialCursor: external_exports.object({ live: external_exports.string().nullable(), archived: external_exports.string().nullable().optional() }).strict().optional()
|
|
15696
15701
|
}).strict();
|
|
15697
15702
|
|
|
15698
15703
|
// ../../shared-contracts/dist/voice.js
|
|
@@ -15907,7 +15912,7 @@ var idleReleaseSettingsSchema = external_exports.strictObject({
|
|
|
15907
15912
|
});
|
|
15908
15913
|
var DEFAULT_IDLE_RELEASE_SETTINGS = Object.freeze({
|
|
15909
15914
|
enabled: false,
|
|
15910
|
-
timeoutMinutes:
|
|
15915
|
+
timeoutMinutes: 10
|
|
15911
15916
|
});
|
|
15912
15917
|
|
|
15913
15918
|
// ../../shared-contracts/dist/harness-preferences.js
|
|
@@ -15280,13 +15280,18 @@ var clientChannelResponseSchema = external_exports.object({
|
|
|
15280
15280
|
});
|
|
15281
15281
|
|
|
15282
15282
|
// ../../shared-contracts/dist/thread-catalog.js
|
|
15283
|
-
var threadCatalogReadParamsSchema = external_exports.object({
|
|
15283
|
+
var threadCatalogReadParamsSchema = external_exports.object({
|
|
15284
|
+
includeArchived: external_exports.boolean().optional(),
|
|
15285
|
+
/** Absent means first page; null means this branch is exhausted. Native cursors only. */
|
|
15286
|
+
officialCursor: external_exports.object({ live: external_exports.string().nullable(), archived: external_exports.string().nullable().optional() }).strict().optional()
|
|
15287
|
+
}).strict();
|
|
15284
15288
|
var threadCatalogReadResultSchema = external_exports.object({
|
|
15285
15289
|
threads: external_exports.array(jsonObjectSchema),
|
|
15286
15290
|
ownership: external_exports.array(threadOwnershipSchema),
|
|
15287
15291
|
/** Known archived IDs, including visible local external records even when their rows are
|
|
15288
|
-
* excluded. Native archived IDs
|
|
15289
|
-
archivedThreadIds: external_exports.array(hostThreadIdSchema)
|
|
15292
|
+
* excluded. Native archived IDs describe only the returned page, never a complete set. */
|
|
15293
|
+
archivedThreadIds: external_exports.array(hostThreadIdSchema),
|
|
15294
|
+
officialCursor: external_exports.object({ live: external_exports.string().nullable(), archived: external_exports.string().nullable().optional() }).strict().optional()
|
|
15290
15295
|
}).strict();
|
|
15291
15296
|
|
|
15292
15297
|
// ../../shared-contracts/dist/voice.js
|
|
@@ -15501,7 +15506,7 @@ var idleReleaseSettingsSchema = external_exports.strictObject({
|
|
|
15501
15506
|
});
|
|
15502
15507
|
var DEFAULT_IDLE_RELEASE_SETTINGS = Object.freeze({
|
|
15503
15508
|
enabled: false,
|
|
15504
|
-
timeoutMinutes:
|
|
15509
|
+
timeoutMinutes: 10
|
|
15505
15510
|
});
|
|
15506
15511
|
|
|
15507
15512
|
// ../../shared-contracts/dist/harness-preferences.js
|
|
@@ -55961,9 +55966,24 @@ function claudeTranscriptItemId(nativeTurnKey, kind, ordinal) {
|
|
|
55961
55966
|
return hostItemIdSchema.parse(`claude-item-v2-${nativeTurnKey}-${kind}-${ordinal}`);
|
|
55962
55967
|
}
|
|
55963
55968
|
|
|
55969
|
+
// dist/claude-queued-command.js
|
|
55970
|
+
function isRecord8(value) {
|
|
55971
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
55972
|
+
}
|
|
55973
|
+
function readClaudeQueuedCommand(value, sessionId) {
|
|
55974
|
+
const attachment = value.attachment;
|
|
55975
|
+
if (value.type !== "attachment" || !isRecord8(attachment) || attachment.type !== "queued_command" || attachment.commandMode !== "prompt" || !isRecord8(attachment.origin) || attachment.origin.kind !== "human" || attachment.humanTurn === false || attachment.isMeta === true || attachment.isSynthetic === true || value.isMeta === true || value.isSynthetic === true || value.isSidechain === true || isRecord8(value.origin) && value.origin.kind !== "human" || typeof value.parent_tool_use_id === "string" && value.parent_tool_use_id.length > 0 || value.sessionId !== void 0 && value.sessionId !== sessionId || value.session_id !== sessionId) {
|
|
55976
|
+
return null;
|
|
55977
|
+
}
|
|
55978
|
+
if (typeof value.uuid !== "string" || value.uuid.length === 0 || typeof attachment.source_uuid !== "string" || attachment.source_uuid.length === 0 || typeof attachment.prompt !== "string" || attachment.prompt.length === 0) {
|
|
55979
|
+
throw new Error("Claude queued human input has an invalid identity or text prompt");
|
|
55980
|
+
}
|
|
55981
|
+
return { uuid: value.uuid, sourceUuid: attachment.source_uuid, prompt: attachment.prompt };
|
|
55982
|
+
}
|
|
55983
|
+
|
|
55964
55984
|
// dist/claude-history.js
|
|
55965
55985
|
var claudeCodeHarnessId = harnessIdSchema.parse("claude-code");
|
|
55966
|
-
function
|
|
55986
|
+
function isRecord9(value) {
|
|
55967
55987
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
55968
55988
|
}
|
|
55969
55989
|
function textParts(value) {
|
|
@@ -55971,12 +55991,12 @@ function textParts(value) {
|
|
|
55971
55991
|
return value.length > 0 ? [value] : [];
|
|
55972
55992
|
if (!Array.isArray(value))
|
|
55973
55993
|
return [];
|
|
55974
|
-
return value.flatMap((part) =>
|
|
55994
|
+
return value.flatMap((part) => isRecord9(part) && part.type === "text" && typeof part.text === "string" ? [part.text] : []);
|
|
55975
55995
|
}
|
|
55976
55996
|
function thinkingParts(value) {
|
|
55977
55997
|
if (!Array.isArray(value))
|
|
55978
55998
|
return [];
|
|
55979
|
-
return value.flatMap((part) =>
|
|
55999
|
+
return value.flatMap((part) => isRecord9(part) && part.type === "thinking" && typeof part.thinking === "string" ? [part.thinking] : []);
|
|
55980
56000
|
}
|
|
55981
56001
|
var localCommandRecordPattern = /^\s*<(local-command-(?:stdout|caveat))>[\s\S]*<\/\1>\s*$/u;
|
|
55982
56002
|
var taskNotificationRecordPattern = /^\s*<task-notification>[\s\S]*<\/task-notification>\s*$/u;
|
|
@@ -56026,7 +56046,7 @@ function localCommandStdoutText(text2) {
|
|
|
56026
56046
|
return match[1] ?? "";
|
|
56027
56047
|
}
|
|
56028
56048
|
function isTaskNotificationOrigin(value) {
|
|
56029
|
-
return
|
|
56049
|
+
return isRecord9(value.origin) && value.origin.kind === "task-notification";
|
|
56030
56050
|
}
|
|
56031
56051
|
function visibleUserTextParts(message) {
|
|
56032
56052
|
if (message.type !== "user" || message.syntheticUser)
|
|
@@ -56037,13 +56057,13 @@ function visibleUserTextParts(message) {
|
|
|
56037
56057
|
return parts.filter((part) => !isLocalCommandRecord(part) && !isTaskNotificationRecord(part));
|
|
56038
56058
|
}
|
|
56039
56059
|
function isInterruptionRecord(value, promptId) {
|
|
56040
|
-
if (value.type !== "user" || promptId === null || value.promptId !== promptId || value.promptSource !== void 0 || !
|
|
56060
|
+
if (value.type !== "user" || promptId === null || value.promptId !== promptId || value.promptSource !== void 0 || !isRecord9(value.message))
|
|
56041
56061
|
return false;
|
|
56042
56062
|
const content = value.message.content;
|
|
56043
56063
|
if (!Array.isArray(content) || content.length !== 1)
|
|
56044
56064
|
return false;
|
|
56045
56065
|
const part = content[0];
|
|
56046
|
-
return
|
|
56066
|
+
return isRecord9(part) && part.type === "text" && (part.text === "[Request interrupted by user]" || part.text === "[Request interrupted by user for tool use]");
|
|
56047
56067
|
}
|
|
56048
56068
|
function conversationMessages(values, sessionId) {
|
|
56049
56069
|
const messages = [];
|
|
@@ -56054,11 +56074,31 @@ function conversationMessages(values, sessionId) {
|
|
|
56054
56074
|
const sends = /* @__PURE__ */ new Map();
|
|
56055
56075
|
let pendingNotification = false;
|
|
56056
56076
|
for (const value of values) {
|
|
56057
|
-
if (!
|
|
56077
|
+
if (!isRecord9(value))
|
|
56058
56078
|
throw new Error("Claude history contains a malformed message");
|
|
56059
56079
|
if (value.type === "system")
|
|
56060
56080
|
continue;
|
|
56061
|
-
if (value.type
|
|
56081
|
+
if (value.type === "attachment") {
|
|
56082
|
+
const queued = readClaudeQueuedCommand(value, sessionId);
|
|
56083
|
+
if (!queued)
|
|
56084
|
+
continue;
|
|
56085
|
+
if (ids.has(queued.uuid))
|
|
56086
|
+
throw new Error("Claude history contains duplicate message IDs");
|
|
56087
|
+
ids.add(queued.uuid);
|
|
56088
|
+
messages.push({
|
|
56089
|
+
type: "steering",
|
|
56090
|
+
uuid: queued.uuid,
|
|
56091
|
+
sourceUuid: queued.sourceUuid,
|
|
56092
|
+
message: { role: "user", content: queued.prompt },
|
|
56093
|
+
failed: false,
|
|
56094
|
+
nested: false,
|
|
56095
|
+
syntheticUser: false,
|
|
56096
|
+
interrupted: false,
|
|
56097
|
+
startsTurn: false
|
|
56098
|
+
});
|
|
56099
|
+
continue;
|
|
56100
|
+
}
|
|
56101
|
+
if (value.type !== "user" && value.type !== "assistant" || typeof value.uuid !== "string" || value.uuid.length === 0 || value.session_id !== sessionId || !isRecord9(value.message) || value.message.role !== value.type) {
|
|
56062
56102
|
throw new Error("Claude history contains an invalid message identity");
|
|
56063
56103
|
}
|
|
56064
56104
|
if (ids.has(value.uuid))
|
|
@@ -56074,6 +56114,7 @@ function conversationMessages(values, sessionId) {
|
|
|
56074
56114
|
nested: typeof value.parent_tool_use_id === "string" && value.parent_tool_use_id.length > 0,
|
|
56075
56115
|
interrupted,
|
|
56076
56116
|
startsTurn: false,
|
|
56117
|
+
...isRecord9(value.forkedFrom) && typeof value.forkedFrom.messageUuid === "string" ? { forkSourceUuid: value.forkedFrom.messageUuid } : {},
|
|
56077
56118
|
syntheticUser: value.type === "user" && (interrupted || value.isSynthetic === true || value.isMeta === true || isTaskNotificationOrigin(value) || value.toolUseResult !== void 0 && value.toolUseResult !== null)
|
|
56078
56119
|
};
|
|
56079
56120
|
const notification = message.type === "user" && !message.nested && (isTaskNotificationOrigin(value) || textParts(message.message.content).some(isTaskNotificationRecord));
|
|
@@ -56120,7 +56161,21 @@ function conversationMessages(values, sessionId) {
|
|
|
56120
56161
|
promptId = typeof value.promptId === "string" && value.promptId.length > 0 ? value.promptId : null;
|
|
56121
56162
|
}
|
|
56122
56163
|
}
|
|
56123
|
-
|
|
56164
|
+
const userIds = new Set(messages.flatMap((message) => isHumanUser(message) ? [message.uuid, ...message.forkSourceUuid ? [message.forkSourceUuid] : []] : []));
|
|
56165
|
+
const delivered = /* @__PURE__ */ new Map();
|
|
56166
|
+
return messages.filter((message) => {
|
|
56167
|
+
if (message.type !== "steering")
|
|
56168
|
+
return true;
|
|
56169
|
+
const id2 = message.sourceUuid;
|
|
56170
|
+
if (userIds.has(id2))
|
|
56171
|
+
return false;
|
|
56172
|
+
const prompt = message.message.content;
|
|
56173
|
+
const previous = delivered.get(id2);
|
|
56174
|
+
if (previous !== void 0 && previous !== prompt)
|
|
56175
|
+
throw new Error("Claude queued input UUID refers to different prompts");
|
|
56176
|
+
delivered.set(id2, prompt);
|
|
56177
|
+
return previous === void 0;
|
|
56178
|
+
});
|
|
56124
56179
|
}
|
|
56125
56180
|
function isHumanUser(message) {
|
|
56126
56181
|
return visibleUserTextParts(message).length > 0;
|
|
@@ -56172,6 +56227,8 @@ function mapClaudeSnapshot(values, sessionId) {
|
|
|
56172
56227
|
for (let index = 0; index < messages.length; ) {
|
|
56173
56228
|
const user = messages[index];
|
|
56174
56229
|
if (!user || !user.startsTurn) {
|
|
56230
|
+
if (user?.type === "steering")
|
|
56231
|
+
throw new Error("Claude queued input has no native Turn anchor");
|
|
56175
56232
|
index += 1;
|
|
56176
56233
|
continue;
|
|
56177
56234
|
}
|
|
@@ -56181,7 +56238,9 @@ function mapClaudeSnapshot(values, sessionId) {
|
|
|
56181
56238
|
const turnMessages = messages.slice(index, end);
|
|
56182
56239
|
const outcome = turnOutcome(turnMessages);
|
|
56183
56240
|
const results = toolResultBlocks(turnMessages);
|
|
56184
|
-
const
|
|
56241
|
+
const checkpointIndex = turnMessages.findLastIndex(({ type, interrupted, nested }) => !nested && (type === "assistant" || interrupted));
|
|
56242
|
+
const lastSteering = turnMessages.findLastIndex(({ type }) => type === "steering");
|
|
56243
|
+
const checkpointMessage = checkpointIndex > lastSteering ? turnMessages[checkpointIndex] : void 0;
|
|
56185
56244
|
let agentMessageOrdinal = 0;
|
|
56186
56245
|
let reasoningOrdinal = 0;
|
|
56187
56246
|
let toolOrdinal = 0;
|
|
@@ -56205,6 +56264,18 @@ function mapClaudeSnapshot(values, sessionId) {
|
|
|
56205
56264
|
text: displayedUserText(text2)
|
|
56206
56265
|
})),
|
|
56207
56266
|
items: turnMessages.flatMap((message) => {
|
|
56267
|
+
if (message.type === "steering") {
|
|
56268
|
+
return [
|
|
56269
|
+
{
|
|
56270
|
+
item: {
|
|
56271
|
+
type: "userMessage",
|
|
56272
|
+
itemId: hostItemIdSchema.parse(message.uuid),
|
|
56273
|
+
input: [{ type: "text", text: message.message.content }]
|
|
56274
|
+
},
|
|
56275
|
+
outcome: { status: "succeeded" }
|
|
56276
|
+
}
|
|
56277
|
+
];
|
|
56278
|
+
}
|
|
56208
56279
|
if (message.type === "user") {
|
|
56209
56280
|
const recapOutput = visibleUserTextParts(user).some((text3) => isNamedCommandEnvelope(text3, recapCommandNamePattern)) ? textParts(message.message.content).map(localCommandStdoutText).find((text3) => text3 !== null && text3.length > 0) : void 0;
|
|
56210
56281
|
if (!recapOutput)
|
|
@@ -56242,7 +56313,7 @@ function mapClaudeSnapshot(values, sessionId) {
|
|
|
56242
56313
|
let projectedReasoning = false;
|
|
56243
56314
|
let projectedText = false;
|
|
56244
56315
|
for (const [blockIndex, block] of content.entries()) {
|
|
56245
|
-
if (!
|
|
56316
|
+
if (!isRecord9(block))
|
|
56246
56317
|
continue;
|
|
56247
56318
|
if (block.type === "thinking" && !projectedReasoning && reasoning.length > 0) {
|
|
56248
56319
|
items.push({
|
|
@@ -56286,7 +56357,7 @@ function mapClaudeSnapshot(values, sessionId) {
|
|
|
56286
56357
|
}
|
|
56287
56358
|
} : { status: "succeeded" };
|
|
56288
56359
|
const itemId = toolItem !== null ? claudeTranscriptItemId(user.uuid, "tool", toolItem) : hostItemIdSchema.parse(`claude-item-v1-${message.uuid}-tool-${blockIndex}`);
|
|
56289
|
-
if (block.name === "Bash" &&
|
|
56360
|
+
if (block.name === "Bash" && isRecord9(block.input) && typeof block.input.command === "string") {
|
|
56290
56361
|
items.push({
|
|
56291
56362
|
item: {
|
|
56292
56363
|
type: "commandExecution",
|
|
@@ -56324,7 +56395,7 @@ function toolResultBlocks(messages) {
|
|
|
56324
56395
|
if (message.type !== "user" || !Array.isArray(message.message.content))
|
|
56325
56396
|
continue;
|
|
56326
56397
|
for (const block of message.message.content) {
|
|
56327
|
-
if (
|
|
56398
|
+
if (isRecord9(block) && block.type === "tool_result" && typeof block.tool_use_id === "string") {
|
|
56328
56399
|
results.set(block.tool_use_id, block);
|
|
56329
56400
|
}
|
|
56330
56401
|
}
|
|
@@ -56339,7 +56410,7 @@ function toolResultOutput(block) {
|
|
|
56339
56410
|
}
|
|
56340
56411
|
function resultSubagentId(value, block) {
|
|
56341
56412
|
const nativeResult = value.tool_use_result;
|
|
56342
|
-
if (
|
|
56413
|
+
if (isRecord9(nativeResult)) {
|
|
56343
56414
|
const structured = nativeResult.agentId ?? nativeResult.agent_id ?? nativeResult.task_id;
|
|
56344
56415
|
if (typeof structured === "string" && structured.length > 0)
|
|
56345
56416
|
return structured;
|
|
@@ -56350,13 +56421,13 @@ function resultSubagentId(value, block) {
|
|
|
56350
56421
|
function subagentPrompt2(values, nativeSubagentId2) {
|
|
56351
56422
|
const toolUses = /* @__PURE__ */ new Map();
|
|
56352
56423
|
for (const value of values) {
|
|
56353
|
-
if (!
|
|
56424
|
+
if (!isRecord9(value) || !isRecord9(value.message) || !Array.isArray(value.message.content)) {
|
|
56354
56425
|
continue;
|
|
56355
56426
|
}
|
|
56356
56427
|
for (const block of value.message.content) {
|
|
56357
|
-
if (!
|
|
56428
|
+
if (!isRecord9(block))
|
|
56358
56429
|
continue;
|
|
56359
|
-
if (block.type === "tool_use" && typeof block.id === "string" && (block.name === "Agent" || block.name === "Task") &&
|
|
56430
|
+
if (block.type === "tool_use" && typeof block.id === "string" && (block.name === "Agent" || block.name === "Task") && isRecord9(block.input) && typeof block.input.prompt === "string" && block.input.prompt.length > 0) {
|
|
56360
56431
|
toolUses.set(block.id, block.input.prompt);
|
|
56361
56432
|
continue;
|
|
56362
56433
|
}
|
|
@@ -56370,7 +56441,7 @@ function subagentPrompt2(values, nativeSubagentId2) {
|
|
|
56370
56441
|
return void 0;
|
|
56371
56442
|
}
|
|
56372
56443
|
function mapClaudeSubagentSnapshot(values, parentSessionId, nativeSubagentId2, parentValues = []) {
|
|
56373
|
-
const messages = conversationMessages(values.map((value) =>
|
|
56444
|
+
const messages = conversationMessages(values.map((value) => isRecord9(value) ? { ...value, session_id: parentSessionId } : value), parentSessionId);
|
|
56374
56445
|
const turns = [];
|
|
56375
56446
|
for (let index = 0; index < messages.length; ) {
|
|
56376
56447
|
const first = messages[index];
|
|
@@ -56401,7 +56472,7 @@ function mapClaudeSubagentSnapshot(values, parentSessionId, nativeSubagentId2, p
|
|
|
56401
56472
|
const content = Array.isArray(message.message.content) ? message.message.content : [{ type: "text", text: message.message.content }];
|
|
56402
56473
|
for (let blockIndex = 0; blockIndex < content.length; blockIndex += 1) {
|
|
56403
56474
|
const block = content[blockIndex];
|
|
56404
|
-
if (!
|
|
56475
|
+
if (!isRecord9(block))
|
|
56405
56476
|
continue;
|
|
56406
56477
|
const itemId = hostItemIdSchema.parse(`claude-subagent-item-v2-${nativeSubagentId2}-${message.uuid}-${blockIndex}`);
|
|
56407
56478
|
if (block.type === "thinking" && typeof block.thinking === "string") {
|
|
@@ -56438,7 +56509,7 @@ function mapClaudeSubagentSnapshot(values, parentSessionId, nativeSubagentId2, p
|
|
|
56438
56509
|
retryable: false
|
|
56439
56510
|
}
|
|
56440
56511
|
} : { status: "succeeded" };
|
|
56441
|
-
if (block.name === "Bash" &&
|
|
56512
|
+
if (block.name === "Bash" && isRecord9(block.input) && typeof block.input.command === "string") {
|
|
56442
56513
|
items.push({
|
|
56443
56514
|
item: {
|
|
56444
56515
|
type: "commandExecution",
|
|
@@ -56704,7 +56775,7 @@ async function findClaudeTranscript(input) {
|
|
|
56704
56775
|
}
|
|
56705
56776
|
return null;
|
|
56706
56777
|
}
|
|
56707
|
-
function
|
|
56778
|
+
function isRecord10(value) {
|
|
56708
56779
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
56709
56780
|
}
|
|
56710
56781
|
async function readClaudeTranscript(input) {
|
|
@@ -56722,7 +56793,7 @@ async function readClaudeTranscript(input) {
|
|
|
56722
56793
|
} catch {
|
|
56723
56794
|
continue;
|
|
56724
56795
|
}
|
|
56725
|
-
if (!
|
|
56796
|
+
if (!isRecord10(entry) || entry.type !== "user" && entry.type !== "assistant" && entry.type !== "attachment" || typeof entry.uuid !== "string" || entry.type !== "attachment" && !isRecord10(entry.message)) {
|
|
56726
56797
|
continue;
|
|
56727
56798
|
}
|
|
56728
56799
|
messages.set(entry.uuid, { ...entry, session_id: input.sessionId });
|
|
@@ -56731,7 +56802,7 @@ async function readClaudeTranscript(input) {
|
|
|
56731
56802
|
}
|
|
56732
56803
|
|
|
56733
56804
|
// dist/claude-fork-references.js
|
|
56734
|
-
function
|
|
56805
|
+
function isRecord11(value) {
|
|
56735
56806
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
56736
56807
|
}
|
|
56737
56808
|
function parseEntry(line) {
|
|
@@ -56739,7 +56810,7 @@ function parseEntry(line) {
|
|
|
56739
56810
|
return null;
|
|
56740
56811
|
try {
|
|
56741
56812
|
const entry = JSON.parse(line);
|
|
56742
|
-
return
|
|
56813
|
+
return isRecord11(entry) ? entry : null;
|
|
56743
56814
|
} catch {
|
|
56744
56815
|
return null;
|
|
56745
56816
|
}
|
|
@@ -56748,7 +56819,7 @@ function remapSameAs(value, copies) {
|
|
|
56748
56819
|
if (Array.isArray(value)) {
|
|
56749
56820
|
return value.reduce((count4, item) => count4 + remapSameAs(item, copies), 0);
|
|
56750
56821
|
}
|
|
56751
|
-
if (!
|
|
56822
|
+
if (!isRecord11(value))
|
|
56752
56823
|
return 0;
|
|
56753
56824
|
let count3 = 0;
|
|
56754
56825
|
for (const [key, child] of Object.entries(value)) {
|
|
@@ -56774,7 +56845,7 @@ async function remapForkedSessionReferences(input) {
|
|
|
56774
56845
|
const copies = /* @__PURE__ */ new Map();
|
|
56775
56846
|
for (const entry of entries) {
|
|
56776
56847
|
const source = entry?.forkedFrom;
|
|
56777
|
-
if (typeof entry?.uuid === "string" &&
|
|
56848
|
+
if (typeof entry?.uuid === "string" && isRecord11(source) && typeof source.messageUuid === "string") {
|
|
56778
56849
|
copies.set(source.messageUuid, entry.uuid);
|
|
56779
56850
|
}
|
|
56780
56851
|
}
|
|
@@ -57409,17 +57480,17 @@ function rejectAfter(milliseconds, message) {
|
|
|
57409
57480
|
function processExited(child) {
|
|
57410
57481
|
return child.exitCode !== null || child.signalCode !== null;
|
|
57411
57482
|
}
|
|
57412
|
-
function
|
|
57483
|
+
function isRecord12(value) {
|
|
57413
57484
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
57414
57485
|
}
|
|
57415
57486
|
function permissionModeFromMessage(value) {
|
|
57416
|
-
if (!
|
|
57487
|
+
if (!isRecord12(value) || value.type !== "system" || value.subtype !== "init" && value.subtype !== "status" || !("permissionMode" in value) || value.permissionMode === void 0) {
|
|
57417
57488
|
return void 0;
|
|
57418
57489
|
}
|
|
57419
57490
|
return isClaudePermissionMode(value.permissionMode) ? value.permissionMode : void 0;
|
|
57420
57491
|
}
|
|
57421
57492
|
function parseContextUsage(value) {
|
|
57422
|
-
if (!
|
|
57493
|
+
if (!isRecord12(value))
|
|
57423
57494
|
throw new Error("Claude SDK context Usage is invalid");
|
|
57424
57495
|
const usedTokens = value.totalTokens;
|
|
57425
57496
|
const maxTokens = value.maxTokens;
|
|
@@ -57436,7 +57507,7 @@ function parseQuestions(input) {
|
|
|
57436
57507
|
const questions = [];
|
|
57437
57508
|
const questionTexts = /* @__PURE__ */ new Set();
|
|
57438
57509
|
for (const value of input.questions) {
|
|
57439
|
-
if (!
|
|
57510
|
+
if (!isRecord12(value))
|
|
57440
57511
|
return null;
|
|
57441
57512
|
const question = value.question;
|
|
57442
57513
|
const header = value.header;
|
|
@@ -57447,7 +57518,7 @@ function parseQuestions(input) {
|
|
|
57447
57518
|
const labels = /* @__PURE__ */ new Set();
|
|
57448
57519
|
const options = [];
|
|
57449
57520
|
for (const option2 of value.options) {
|
|
57450
|
-
if (!
|
|
57521
|
+
if (!isRecord12(option2) || typeof option2.label !== "string" || option2.label.length === 0 || labels.has(option2.label) || typeof option2.description !== "string") {
|
|
57451
57522
|
return null;
|
|
57452
57523
|
}
|
|
57453
57524
|
labels.add(option2.label);
|
|
@@ -57489,7 +57560,7 @@ function permissionUpdateDestination(value) {
|
|
|
57489
57560
|
return void 0;
|
|
57490
57561
|
}
|
|
57491
57562
|
function isPermissionUpdate(value) {
|
|
57492
|
-
if (!
|
|
57563
|
+
if (!isRecord12(value) || !permissionUpdateDestination(value.destination))
|
|
57493
57564
|
return false;
|
|
57494
57565
|
if (value.type === "setMode") {
|
|
57495
57566
|
return typeof value.mode === "string" && PERMISSION_MODES.has(value.mode);
|
|
@@ -57498,7 +57569,7 @@ function isPermissionUpdate(value) {
|
|
|
57498
57569
|
return Array.isArray(value.directories) && value.directories.every((directory) => typeof directory === "string");
|
|
57499
57570
|
}
|
|
57500
57571
|
if (value.type === "addRules" || value.type === "replaceRules" || value.type === "removeRules") {
|
|
57501
|
-
return typeof value.behavior === "string" && PERMISSION_BEHAVIORS.has(value.behavior) && Array.isArray(value.rules) && value.rules.every((rule) =>
|
|
57572
|
+
return typeof value.behavior === "string" && PERMISSION_BEHAVIORS.has(value.behavior) && Array.isArray(value.rules) && value.rules.every((rule) => isRecord12(rule) && typeof rule.toolName === "string" && (rule.ruleContent === void 0 || typeof rule.ruleContent === "string"));
|
|
57502
57573
|
}
|
|
57503
57574
|
return false;
|
|
57504
57575
|
}
|
|
@@ -57752,15 +57823,15 @@ var ClaudeSdkTransport = class {
|
|
|
57752
57823
|
return this.#idleLive && this.#idleHandler !== null;
|
|
57753
57824
|
}
|
|
57754
57825
|
#observeRootToolCalls(message) {
|
|
57755
|
-
if (!
|
|
57826
|
+
if (!isRecord12(message) || message.parent_tool_use_id != null)
|
|
57756
57827
|
return;
|
|
57757
57828
|
if (message.type !== "assistant" && message.type !== "user")
|
|
57758
57829
|
return;
|
|
57759
57830
|
const body = message.message;
|
|
57760
|
-
if (!
|
|
57831
|
+
if (!isRecord12(body) || !Array.isArray(body.content))
|
|
57761
57832
|
return;
|
|
57762
57833
|
for (const block of body.content) {
|
|
57763
|
-
if (!
|
|
57834
|
+
if (!isRecord12(block))
|
|
57764
57835
|
continue;
|
|
57765
57836
|
if (message.type === "assistant" && block.type === "tool_use" && typeof block.id === "string") {
|
|
57766
57837
|
this.#rootToolCalls.add(block.id);
|
|
@@ -57770,12 +57841,12 @@ var ClaudeSdkTransport = class {
|
|
|
57770
57841
|
}
|
|
57771
57842
|
}
|
|
57772
57843
|
#observeNativeCapabilities(message) {
|
|
57773
|
-
if (!
|
|
57844
|
+
if (!isRecord12(message) || message.type !== "system" || message.subtype !== "init")
|
|
57774
57845
|
return;
|
|
57775
57846
|
this.#nativeSteer = Array.isArray(message.capabilities) && message.capabilities.includes("msg_lifecycle_v1");
|
|
57776
57847
|
}
|
|
57777
57848
|
#observeSlashCommands(message) {
|
|
57778
|
-
if (!
|
|
57849
|
+
if (!isRecord12(message) || message.type !== "system")
|
|
57779
57850
|
return;
|
|
57780
57851
|
if (message.subtype === "init" && Array.isArray(message.skills)) {
|
|
57781
57852
|
this.#skillNames = new Set(message.skills.filter((name) => typeof name === "string"));
|
|
@@ -58272,7 +58343,7 @@ var ClaudeSdkTransport = class {
|
|
|
58272
58343
|
* without `started` means no native turn takes it over.
|
|
58273
58344
|
*/
|
|
58274
58345
|
#observeSteer(message) {
|
|
58275
|
-
if (this.#pendingSteers.size === 0 && this.#steerTakeovers.size === 0 || !
|
|
58346
|
+
if (this.#pendingSteers.size === 0 && this.#steerTakeovers.size === 0 || !isRecord12(message) || message.type !== "command_lifecycle") {
|
|
58276
58347
|
return;
|
|
58277
58348
|
}
|
|
58278
58349
|
if (typeof message.command_uuid !== "string" || message.command_uuid.length === 0)
|
|
@@ -58286,10 +58357,10 @@ var ClaudeSdkTransport = class {
|
|
|
58286
58357
|
}
|
|
58287
58358
|
}
|
|
58288
58359
|
#observeBackgroundTasks(message) {
|
|
58289
|
-
if (!
|
|
58360
|
+
if (!isRecord12(message) || message.type !== "system")
|
|
58290
58361
|
return;
|
|
58291
58362
|
if (message.subtype === "background_tasks_changed" && Array.isArray(message.tasks)) {
|
|
58292
|
-
this.#backgroundTasks = new Set(message.tasks.flatMap((task) =>
|
|
58363
|
+
this.#backgroundTasks = new Set(message.tasks.flatMap((task) => isRecord12(task) && typeof task.task_id === "string" ? [task.task_id] : []));
|
|
58293
58364
|
} else if (message.subtype === "task_started" && typeof message.task_id === "string") {
|
|
58294
58365
|
this.#backgroundTasks.add(message.task_id);
|
|
58295
58366
|
} else if (message.subtype === "task_notification" && typeof message.task_id === "string" && ["completed", "failed", "stopped"].includes(String(message.status))) {
|
|
@@ -58305,7 +58376,7 @@ var ClaudeSdkTransport = class {
|
|
|
58305
58376
|
}
|
|
58306
58377
|
/** Remembers Workflow agent labels so their approvals can name the agent asking. */
|
|
58307
58378
|
#observeWorkflowAgents(message) {
|
|
58308
|
-
if (!
|
|
58379
|
+
if (!isRecord12(message) || message.type !== "system" || message.subtype !== "task_progress") {
|
|
58309
58380
|
return;
|
|
58310
58381
|
}
|
|
58311
58382
|
for (const agent of parseClaudeWorkflowAgents(message.workflow_progress) ?? []) {
|
|
@@ -58370,7 +58441,7 @@ var ClaudeSdkTransport = class {
|
|
|
58370
58441
|
userMessageId: null,
|
|
58371
58442
|
live: false
|
|
58372
58443
|
});
|
|
58373
|
-
if (autonomous.userMessageId === null &&
|
|
58444
|
+
if (autonomous.userMessageId === null && isRecord12(message) && message.type === "user" && (message.parent_tool_use_id === null || message.parent_tool_use_id === void 0) && typeof message.uuid === "string" && message.uuid.length > 0) {
|
|
58374
58445
|
autonomous.userMessageId = message.uuid;
|
|
58375
58446
|
}
|
|
58376
58447
|
const interpreted = autonomous.accumulator.consume(message);
|
|
@@ -58900,11 +58971,11 @@ var ClaudeWorkflowLifecycle = class {
|
|
|
58900
58971
|
};
|
|
58901
58972
|
|
|
58902
58973
|
// dist/task-tracker.js
|
|
58903
|
-
function
|
|
58974
|
+
function isRecord13(value) {
|
|
58904
58975
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
58905
58976
|
}
|
|
58906
58977
|
function stringField(value, keys) {
|
|
58907
|
-
if (!
|
|
58978
|
+
if (!isRecord13(value))
|
|
58908
58979
|
return void 0;
|
|
58909
58980
|
for (const key of keys) {
|
|
58910
58981
|
const field2 = value[key];
|
|
@@ -58939,7 +59010,7 @@ var ClaudeTaskTracker = class {
|
|
|
58939
59010
|
};
|
|
58940
59011
|
}
|
|
58941
59012
|
#create(args, result) {
|
|
58942
|
-
if (!
|
|
59013
|
+
if (!isRecord13(result) || !isRecord13(result.task))
|
|
58943
59014
|
return;
|
|
58944
59015
|
const id2 = stringField(result.task, ["id"]);
|
|
58945
59016
|
const subject = stringField(args, ["subject"]) ?? stringField(result.task, ["subject"]);
|
|
@@ -58957,7 +59028,7 @@ var ClaudeTaskTracker = class {
|
|
|
58957
59028
|
const id2 = stringField(args, ["taskId", "id", "task_id"]);
|
|
58958
59029
|
if (!id2)
|
|
58959
59030
|
return;
|
|
58960
|
-
const status =
|
|
59031
|
+
const status = isRecord13(args) ? taskStatus2(args.status) : void 0;
|
|
58961
59032
|
if (status === "deleted") {
|
|
58962
59033
|
this.#tasks.delete(id2);
|
|
58963
59034
|
return;
|
|
@@ -58975,13 +59046,13 @@ var ClaudeTaskTracker = class {
|
|
|
58975
59046
|
});
|
|
58976
59047
|
}
|
|
58977
59048
|
#replace(result) {
|
|
58978
|
-
if (!
|
|
59049
|
+
if (!isRecord13(result) || !Array.isArray(result.tasks))
|
|
58979
59050
|
return;
|
|
58980
59051
|
const next = /* @__PURE__ */ new Map();
|
|
58981
59052
|
for (const value of result.tasks) {
|
|
58982
59053
|
const id2 = stringField(value, ["id"]);
|
|
58983
59054
|
const subject = stringField(value, ["subject"]);
|
|
58984
|
-
const status =
|
|
59055
|
+
const status = isRecord13(value) ? taskStatus2(value.status) : void 0;
|
|
58985
59056
|
if (!id2 || !subject || !status || status === "deleted")
|
|
58986
59057
|
continue;
|
|
58987
59058
|
const existing = this.#tasks.get(id2);
|
|
@@ -59148,11 +59219,11 @@ var ClaudeBackgroundCommandItems = class {
|
|
|
59148
59219
|
};
|
|
59149
59220
|
|
|
59150
59221
|
// dist/tool-lifecycle.js
|
|
59151
|
-
function
|
|
59222
|
+
function isRecord14(value) {
|
|
59152
59223
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
59153
59224
|
}
|
|
59154
59225
|
function stringField2(value, key) {
|
|
59155
|
-
return
|
|
59226
|
+
return isRecord14(value) && typeof value[key] === "string" ? value[key] : void 0;
|
|
59156
59227
|
}
|
|
59157
59228
|
function toolFailure(toolName) {
|
|
59158
59229
|
return {
|
|
@@ -59419,7 +59490,7 @@ var CONTEXT_USAGE_TTL_MS = 1e4;
|
|
|
59419
59490
|
var CONTEXT_USAGE_FAILURE_COOLDOWN_MS = 5e3;
|
|
59420
59491
|
var REQUEST_USAGE_RETRY_DELAYS_MS = [0, 100, 250, 500, 1e3];
|
|
59421
59492
|
var DEFAULT_CONTINUATION_QUIESCENCE_MS = 2e3;
|
|
59422
|
-
function
|
|
59493
|
+
function isRecord15(value) {
|
|
59423
59494
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
59424
59495
|
}
|
|
59425
59496
|
function safeNonNegativeInteger2(value) {
|
|
@@ -59428,7 +59499,7 @@ function safeNonNegativeInteger2(value) {
|
|
|
59428
59499
|
function transcriptRequestUsage(messages, messageId) {
|
|
59429
59500
|
for (let index = messages.length - 1; index >= 0; index -= 1) {
|
|
59430
59501
|
const entry = messages[index];
|
|
59431
|
-
if (!
|
|
59502
|
+
if (!isRecord15(entry) || entry.type !== "assistant" || entry.parent_tool_use_id !== null && entry.parent_tool_use_id !== void 0 || !isRecord15(entry.message) || entry.message.id !== messageId || !isRecord15(entry.message.usage)) {
|
|
59432
59503
|
continue;
|
|
59433
59504
|
}
|
|
59434
59505
|
const inputTokens = entry.message.usage.input_tokens;
|
|
@@ -59745,7 +59816,7 @@ var ClaudeHarnessSession = class {
|
|
|
59745
59816
|
cwd: this.#cwd,
|
|
59746
59817
|
sessionId: this.#sessionId
|
|
59747
59818
|
}) ?? [];
|
|
59748
|
-
const ids = new Set(messages.flatMap((message) =>
|
|
59819
|
+
const ids = new Set(messages.flatMap((message) => isRecord15(message) && typeof message.uuid === "string" ? [message.uuid] : []));
|
|
59749
59820
|
if (this.#unpersistedMessageIds.every((id2) => ids.has(id2))) {
|
|
59750
59821
|
this.#unpersistedMessageIds = [];
|
|
59751
59822
|
break;
|
|
@@ -15756,13 +15756,18 @@ var clientChannelResponseSchema = external_exports.object({
|
|
|
15756
15756
|
});
|
|
15757
15757
|
|
|
15758
15758
|
// ../../shared-contracts/dist/thread-catalog.js
|
|
15759
|
-
var threadCatalogReadParamsSchema = external_exports.object({
|
|
15759
|
+
var threadCatalogReadParamsSchema = external_exports.object({
|
|
15760
|
+
includeArchived: external_exports.boolean().optional(),
|
|
15761
|
+
/** Absent means first page; null means this branch is exhausted. Native cursors only. */
|
|
15762
|
+
officialCursor: external_exports.object({ live: external_exports.string().nullable(), archived: external_exports.string().nullable().optional() }).strict().optional()
|
|
15763
|
+
}).strict();
|
|
15760
15764
|
var threadCatalogReadResultSchema = external_exports.object({
|
|
15761
15765
|
threads: external_exports.array(jsonObjectSchema),
|
|
15762
15766
|
ownership: external_exports.array(threadOwnershipSchema),
|
|
15763
15767
|
/** Known archived IDs, including visible local external records even when their rows are
|
|
15764
|
-
* excluded. Native archived IDs
|
|
15765
|
-
archivedThreadIds: external_exports.array(hostThreadIdSchema)
|
|
15768
|
+
* excluded. Native archived IDs describe only the returned page, never a complete set. */
|
|
15769
|
+
archivedThreadIds: external_exports.array(hostThreadIdSchema),
|
|
15770
|
+
officialCursor: external_exports.object({ live: external_exports.string().nullable(), archived: external_exports.string().nullable().optional() }).strict().optional()
|
|
15766
15771
|
}).strict();
|
|
15767
15772
|
|
|
15768
15773
|
// ../../shared-contracts/dist/voice.js
|
|
@@ -15977,7 +15982,7 @@ var idleReleaseSettingsSchema = external_exports.strictObject({
|
|
|
15977
15982
|
});
|
|
15978
15983
|
var DEFAULT_IDLE_RELEASE_SETTINGS = Object.freeze({
|
|
15979
15984
|
enabled: false,
|
|
15980
|
-
timeoutMinutes:
|
|
15985
|
+
timeoutMinutes: 10
|
|
15981
15986
|
});
|
|
15982
15987
|
|
|
15983
15988
|
// ../../shared-contracts/dist/harness-preferences.js
|
|
@@ -15274,13 +15274,18 @@ var clientChannelResponseSchema = external_exports.object({
|
|
|
15274
15274
|
});
|
|
15275
15275
|
|
|
15276
15276
|
// ../../shared-contracts/dist/thread-catalog.js
|
|
15277
|
-
var threadCatalogReadParamsSchema = external_exports.object({
|
|
15277
|
+
var threadCatalogReadParamsSchema = external_exports.object({
|
|
15278
|
+
includeArchived: external_exports.boolean().optional(),
|
|
15279
|
+
/** Absent means first page; null means this branch is exhausted. Native cursors only. */
|
|
15280
|
+
officialCursor: external_exports.object({ live: external_exports.string().nullable(), archived: external_exports.string().nullable().optional() }).strict().optional()
|
|
15281
|
+
}).strict();
|
|
15278
15282
|
var threadCatalogReadResultSchema = external_exports.object({
|
|
15279
15283
|
threads: external_exports.array(jsonObjectSchema),
|
|
15280
15284
|
ownership: external_exports.array(threadOwnershipSchema),
|
|
15281
15285
|
/** Known archived IDs, including visible local external records even when their rows are
|
|
15282
|
-
* excluded. Native archived IDs
|
|
15283
|
-
archivedThreadIds: external_exports.array(hostThreadIdSchema)
|
|
15286
|
+
* excluded. Native archived IDs describe only the returned page, never a complete set. */
|
|
15287
|
+
archivedThreadIds: external_exports.array(hostThreadIdSchema),
|
|
15288
|
+
officialCursor: external_exports.object({ live: external_exports.string().nullable(), archived: external_exports.string().nullable().optional() }).strict().optional()
|
|
15284
15289
|
}).strict();
|
|
15285
15290
|
|
|
15286
15291
|
// ../../shared-contracts/dist/voice.js
|
|
@@ -15495,7 +15500,7 @@ var idleReleaseSettingsSchema = external_exports.strictObject({
|
|
|
15495
15500
|
});
|
|
15496
15501
|
var DEFAULT_IDLE_RELEASE_SETTINGS = Object.freeze({
|
|
15497
15502
|
enabled: false,
|
|
15498
|
-
timeoutMinutes:
|
|
15503
|
+
timeoutMinutes: 10
|
|
15499
15504
|
});
|
|
15500
15505
|
|
|
15501
15506
|
// ../../shared-contracts/dist/harness-preferences.js
|