cogpit 3.3.6 → 3.4.1
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/cli-runtime.js +1204 -633
- package/dist/instance-worker.js +221 -20
- package/dist/web/assets/{CogpitBlock-DTcsvTF0.js → CogpitBlock-B7SKhn5k.js} +1 -1
- package/dist/web/assets/{CommandPaletteHost-DnjXwwFv.js → CommandPaletteHost-Dig9sRnN.js} +1 -1
- package/dist/web/assets/{ConfigBrowser-C6-RV3dj.js → ConfigBrowser-C_4UyHta.js} +1 -1
- package/dist/web/assets/{CrewPanel-CdPeA3WX.js → CrewPanel-CyCZndfq.js} +1 -1
- package/dist/web/assets/{HighlightedEditor-ptPSiZXt.js → HighlightedEditor-YAPOkcjz.js} +1 -1
- package/dist/web/assets/{KeyboardShortcutsDialog-CNsqP3xD.js → KeyboardShortcutsDialog-CjA8MBfY.js} +1 -1
- package/dist/web/assets/{MissionHome-CJ8aY60N.js → MissionHome-CK5zZCld.js} +1 -1
- package/dist/web/assets/{MobileFileChanges-xDTu0VVe.js → MobileFileChanges-DyjwWXMW.js} +1 -1
- package/dist/web/assets/PluginsDialog-BHKZ3Esx.js +1 -0
- package/dist/web/assets/{PreviewPanel-CXZkRGUI.js → PreviewPanel-CXOXFWWK.js} +1 -1
- package/dist/web/assets/{ProjectFilesPanel-DxTA4CcL.js → ProjectFilesPanel-CwBgFc0T.js} +1 -1
- package/dist/web/assets/{ProjectSwitcherModal-DVRB-R0l.js → ProjectSwitcherModal-DB-xcVjM.js} +1 -1
- package/dist/web/assets/{TerminalOutput-D_7Mor6c.js → TerminalOutput-BA4pFb8E.js} +1 -1
- package/dist/web/assets/{ThemeSelectorModal-Bhkx5ikh.js → ThemeSelectorModal-B8nIlHO2.js} +1 -1
- package/dist/web/assets/{WorkflowsPanel-Dexz6c1y.js → WorkflowsPanel-BZhR5Ld-.js} +1 -1
- package/dist/web/assets/{WorktreePanel-DS4svy6H.js → WorktreePanel-DYxBPlno.js} +1 -1
- package/dist/web/assets/{edition-ui-D6tmWJW3.js → edition-ui-CXQDiuhB.js} +1 -1
- package/dist/web/assets/{index-BZiOTcnb.js → index-B1Aq64LJ.js} +1 -1
- package/dist/web/assets/{index-DUyWfgZU.js → index-C0oae6L9.js} +1 -1
- package/dist/web/assets/index-D3WV64DU.js +498 -0
- package/dist/web/assets/index-hGMtuUNI.css +1 -0
- package/dist/web/assets/index-utwOdTFc.js +2 -0
- package/dist/web/assets/session-parser.worker-B1_qLRIm.js +31 -0
- package/dist/web/assets/{switch-Bm0VDZET.js → switch-B1AuQGfo.js} +1 -1
- package/dist/web/assets/{vendor-ui-DKYSMrjf.js → vendor-ui-DkzcTXCS.js} +190 -195
- package/dist/web/index.html +3 -3
- package/package.json +3 -2
- package/dist/web/assets/PluginsDialog-U4WQVeyc.js +0 -1
- package/dist/web/assets/index-BKROBJD1.js +0 -1
- package/dist/web/assets/index-C6tWmbrY.css +0 -1
- package/dist/web/assets/index-COB3e1_W.js +0 -496
- package/dist/web/assets/session-parser.worker-DqoBsPjk.js +0 -30
package/dist/instance-worker.js
CHANGED
|
@@ -2595,16 +2595,24 @@ async function readWholeTranscript(filePath, head) {
|
|
|
2595
2595
|
return content.split("\n").filter(Boolean);
|
|
2596
2596
|
}
|
|
2597
2597
|
|
|
2598
|
+
// ../../shared/session/automatedPrompts.ts
|
|
2599
|
+
var CREW_CHAT_DELIVERY_RE = /^Crew chat · ([^\n]+) · message (\d+)(?:\n|$)/;
|
|
2600
|
+
var TASK_WAKEUP_START_RE = /^Delegated task \S+ (?:running|completed|error|cancelled|needs attention)\. Child session: /;
|
|
2601
|
+
function isReaderPrompt(text2) {
|
|
2602
|
+
const trimmed = text2.trim();
|
|
2603
|
+
if (!trimmed) return false;
|
|
2604
|
+
if (CREW_CHAT_DELIVERY_RE.test(trimmed) || TASK_WAKEUP_START_RE.test(trimmed)) return false;
|
|
2605
|
+
return parseAgentEnvelope(trimmed).sender === null;
|
|
2606
|
+
}
|
|
2607
|
+
|
|
2598
2608
|
// ../../shared/contracts/taskWakeup.ts
|
|
2599
|
-
var WAKEUP_START_RE = /^Delegated task \S+ (?:running|completed|error|cancelled|needs attention)\. Child session: /;
|
|
2600
2609
|
function isTaskWakeup(text2) {
|
|
2601
|
-
return
|
|
2610
|
+
return TASK_WAKEUP_START_RE.test(text2.trim());
|
|
2602
2611
|
}
|
|
2603
2612
|
|
|
2604
2613
|
// ../../shared/contracts/crewChat.ts
|
|
2605
|
-
var DELIVERY_SOURCE_RE = /^Crew chat · ([^\n]+) · message (\d+)(?:\n|$)/;
|
|
2606
2614
|
function isCrewChatDelivery(text2) {
|
|
2607
|
-
return
|
|
2615
|
+
return CREW_CHAT_DELIVERY_RE.test(text2.trim());
|
|
2608
2616
|
}
|
|
2609
2617
|
|
|
2610
2618
|
// ../../server/agents/claudeMetadata.ts
|
|
@@ -3071,6 +3079,19 @@ function createAcpStore(home = process.env.COGPIT_ACP_HOME || join3(homedir2(),
|
|
|
3071
3079
|
}
|
|
3072
3080
|
var acpStore = createAcpStore();
|
|
3073
3081
|
|
|
3082
|
+
// ../../server/plugins/skillContext.ts
|
|
3083
|
+
var provider = null;
|
|
3084
|
+
function registerPluginSkills(value) {
|
|
3085
|
+
provider = value;
|
|
3086
|
+
return () => {
|
|
3087
|
+
if (provider === value) provider = null;
|
|
3088
|
+
};
|
|
3089
|
+
}
|
|
3090
|
+
function pluginSkillContext(workspacePath) {
|
|
3091
|
+
const current2 = provider;
|
|
3092
|
+
return current2 ? Promise.resolve().then(() => current2(workspacePath)).catch(() => "") : null;
|
|
3093
|
+
}
|
|
3094
|
+
|
|
3074
3095
|
// ../../server/agents/runtimeTypes.ts
|
|
3075
3096
|
function resolvedApproval({ requestId, toolUseId, toolName }) {
|
|
3076
3097
|
return { requestId, toolUseId, toolName };
|
|
@@ -3247,23 +3268,34 @@ async function send(id, request) {
|
|
|
3247
3268
|
if (sending.has(id)) return { delivery: "busy" };
|
|
3248
3269
|
sending.add(id);
|
|
3249
3270
|
let started = false;
|
|
3271
|
+
let preparation;
|
|
3250
3272
|
try {
|
|
3251
3273
|
const session = await load(id, request);
|
|
3252
3274
|
if (session.running) return { delivery: "busy" };
|
|
3253
3275
|
if (requests >= 64) throw error(429, "ACP request limit reached");
|
|
3254
3276
|
if (request.images?.length && !initialization?.agentCapabilities?.promptCapabilities?.image) throw error(400, "This ACP provider does not accept images");
|
|
3255
3277
|
if (request.effort || request.fastMode || request.ultracode || request.mcpConfig || request.contextWindowTokens || request.permissions?.mode && !["default", "manual", "auto"].includes(request.permissions.mode) || request.permissions?.allowedTools?.length || request.permissions?.disallowedTools?.length) throw error(400, "These settings are not supported by this ACP provider");
|
|
3278
|
+
const abort = new AbortController();
|
|
3279
|
+
preparation = { session, abort };
|
|
3280
|
+
session.preparing = abort;
|
|
3281
|
+
session.running = true;
|
|
3282
|
+
session.terminalWritten = true;
|
|
3256
3283
|
if (request.model) {
|
|
3257
3284
|
const option = session.configOptions?.find((value) => value.category === "model" && value.type === "select");
|
|
3258
3285
|
if (!option || option.type !== "select" || !selectOptions(option).some((value) => value.value === request.model)) throw error(400, "The ACP provider did not offer this model");
|
|
3259
3286
|
const result = await bounded(connection.agent.request("session/set_config_option", { sessionId: session.nativeId, configId: option.id, value: request.model }), 15e3);
|
|
3260
3287
|
session.configOptions = result.configOptions;
|
|
3261
3288
|
}
|
|
3262
|
-
|
|
3289
|
+
if (abort.signal.aborted || sessions2.get(id) !== session || !connection) return { delivery: "busy" };
|
|
3290
|
+
const instructions = await pluginSkillContext(session.cwd);
|
|
3291
|
+
if (abort.signal.aborted || sessions2.get(id) !== session || !connection) return { delivery: "busy" };
|
|
3292
|
+
if (requests >= 64) throw error(429, "ACP request limit reached");
|
|
3293
|
+
session.preparing = void 0;
|
|
3294
|
+
preparation = void 0;
|
|
3263
3295
|
session.terminalWritten = false;
|
|
3264
3296
|
requests++;
|
|
3265
3297
|
append(id, { type: "user", cwd: session.cwd, message: { role: "user", content: request.message ?? "" } });
|
|
3266
|
-
const prompt = [{ type: "text", text: request.message ?? "" }, ...(request.images ?? []).map((image) => ({ type: "image", data: image.data, mimeType: image.mediaType }))];
|
|
3298
|
+
const prompt = [...instructions ? [{ type: "text", text: instructions }] : [], { type: "text", text: request.message ?? "" }, ...(request.images ?? []).map((image) => ({ type: "image", data: image.data, mimeType: image.mediaType }))];
|
|
3267
3299
|
const completion = connection.agent.request("session/prompt", { sessionId: session.nativeId, prompt }).then((response) => {
|
|
3268
3300
|
finishPrompt(id, session, response.stopReason, response.stopReason === "cancelled");
|
|
3269
3301
|
return { isError: response.stopReason === "cancelled", message: response.stopReason };
|
|
@@ -3281,7 +3313,13 @@ async function send(id, request) {
|
|
|
3281
3313
|
started = true;
|
|
3282
3314
|
return { delivery: "started", completion };
|
|
3283
3315
|
} finally {
|
|
3284
|
-
if (!started)
|
|
3316
|
+
if (!started) {
|
|
3317
|
+
if (preparation && preparation.session.preparing === preparation.abort) {
|
|
3318
|
+
preparation.session.preparing = void 0;
|
|
3319
|
+
preparation.session.running = false;
|
|
3320
|
+
}
|
|
3321
|
+
sending.delete(id);
|
|
3322
|
+
}
|
|
3285
3323
|
}
|
|
3286
3324
|
}
|
|
3287
3325
|
function selectOptions(option) {
|
|
@@ -3324,6 +3362,7 @@ var acpRuntime = {
|
|
|
3324
3362
|
send,
|
|
3325
3363
|
async interrupt(id) {
|
|
3326
3364
|
const session = sessions2.get(id);
|
|
3365
|
+
session?.preparing?.abort();
|
|
3327
3366
|
if (!session?.running || !connection) return false;
|
|
3328
3367
|
await connection.agent.notify("session/cancel", { sessionId: session.nativeId });
|
|
3329
3368
|
if (session.completion) await bounded(session.completion, 15e3);
|
|
@@ -3440,6 +3479,52 @@ function appendAssistantText(turn, text2, timestamp) {
|
|
|
3440
3479
|
turn.contentBlocks.push({ kind: "text", text: [text2], timestamp });
|
|
3441
3480
|
}
|
|
3442
3481
|
|
|
3482
|
+
// ../../shared/session/asyncAnswers.ts
|
|
3483
|
+
function promptText(content) {
|
|
3484
|
+
if (content === null) return "";
|
|
3485
|
+
if (typeof content === "string") return content;
|
|
3486
|
+
return content.flatMap((block) => block.type === "text" ? [block.text] : []).join("\n");
|
|
3487
|
+
}
|
|
3488
|
+
function linkAsyncAnswers(turns) {
|
|
3489
|
+
const answers2 = /* @__PURE__ */ new Map();
|
|
3490
|
+
let open6 = [];
|
|
3491
|
+
const answer = (text2) => {
|
|
3492
|
+
if (open6.length === 0 || !isReaderPrompt(text2)) return;
|
|
3493
|
+
for (const id of open6) answers2.set(id, text2.trim());
|
|
3494
|
+
open6 = [];
|
|
3495
|
+
};
|
|
3496
|
+
for (const turn of turns) {
|
|
3497
|
+
answer(promptText(turn.userMessage));
|
|
3498
|
+
for (const block of turn.contentBlocks) {
|
|
3499
|
+
if (block.kind === "queued_prompt") answer(block.content);
|
|
3500
|
+
else if (block.kind === "tool_calls") {
|
|
3501
|
+
for (const call of block.toolCalls) if (call.asyncQuestion) open6.push(call.id);
|
|
3502
|
+
}
|
|
3503
|
+
}
|
|
3504
|
+
}
|
|
3505
|
+
const stale = (call) => call.asyncQuestion === true && call.asyncAnswer !== answers2.get(call.id);
|
|
3506
|
+
const relinked = /* @__PURE__ */ new Map();
|
|
3507
|
+
const relink = (call) => {
|
|
3508
|
+
if (!stale(call)) return call;
|
|
3509
|
+
let next = relinked.get(call);
|
|
3510
|
+
if (!next) {
|
|
3511
|
+
const { asyncAnswer: _previous, ...rest } = call;
|
|
3512
|
+
const reply = answers2.get(call.id);
|
|
3513
|
+
next = reply === void 0 ? rest : { ...rest, asyncAnswer: reply };
|
|
3514
|
+
relinked.set(call, next);
|
|
3515
|
+
}
|
|
3516
|
+
return next;
|
|
3517
|
+
};
|
|
3518
|
+
return turns.map((turn) => {
|
|
3519
|
+
if (!turn.toolCalls.some(stale)) return turn;
|
|
3520
|
+
return {
|
|
3521
|
+
...turn,
|
|
3522
|
+
toolCalls: turn.toolCalls.map(relink),
|
|
3523
|
+
contentBlocks: turn.contentBlocks.map((block) => block.kind === "tool_calls" ? { ...block, toolCalls: block.toolCalls.map(relink) } : block)
|
|
3524
|
+
};
|
|
3525
|
+
});
|
|
3526
|
+
}
|
|
3527
|
+
|
|
3443
3528
|
// ../../shared/session/codex-exec.ts
|
|
3444
3529
|
var JS_SIMPLE_ESCAPES = {
|
|
3445
3530
|
"0": "\0",
|
|
@@ -4288,6 +4373,7 @@ function walkCodexRecords(records, options) {
|
|
|
4288
4373
|
}
|
|
4289
4374
|
let current2 = null;
|
|
4290
4375
|
let currentTurnId = null;
|
|
4376
|
+
let queuedPromptEcho = false;
|
|
4291
4377
|
let currentModel = metadata.model || null;
|
|
4292
4378
|
let lastTurnTimestamp = "";
|
|
4293
4379
|
let pendingCompaction = null;
|
|
@@ -4342,6 +4428,7 @@ function walkCodexRecords(records, options) {
|
|
|
4342
4428
|
recordIndex = index;
|
|
4343
4429
|
const payload = isObject3(record3.payload) ? record3.payload : void 0;
|
|
4344
4430
|
const timestamp = record3.timestamp ?? "";
|
|
4431
|
+
if (record3.type !== "event_msg") queuedPromptEcho = false;
|
|
4345
4432
|
if (record3.type === "compacted") {
|
|
4346
4433
|
current2 = commitTurn(current2);
|
|
4347
4434
|
pendingCompaction = "Conversation compacted";
|
|
@@ -4359,11 +4446,17 @@ function walkCodexRecords(records, options) {
|
|
|
4359
4446
|
continue;
|
|
4360
4447
|
}
|
|
4361
4448
|
if (record3.type === "event_msg" && payload?.type === "user_message" && typeof payload.message === "string") {
|
|
4449
|
+
if (queuedPromptEcho) {
|
|
4450
|
+
queuedPromptEcho = false;
|
|
4451
|
+
continue;
|
|
4452
|
+
}
|
|
4362
4453
|
if (current2 && (current2.assistantText.length > 0 || current2.toolCalls.length > 0 || current2.thinking.length > 0)) {
|
|
4363
4454
|
current2 = commitTurn(current2);
|
|
4364
4455
|
}
|
|
4456
|
+
const opensWindow = !sawTurnStart;
|
|
4365
4457
|
sawTurnStart = true;
|
|
4366
4458
|
current2 ??= createActiveTurn(currentTurnId, timestamp, currentModel);
|
|
4459
|
+
if (opensWindow) current2.opensOnPrompt = true;
|
|
4367
4460
|
const localImages = (Array.isArray(payload.local_images) ? payload.local_images : []).filter(
|
|
4368
4461
|
(p) => typeof p === "string" && p.length > 0
|
|
4369
4462
|
);
|
|
@@ -4478,8 +4571,15 @@ function walkCodexRecords(records, options) {
|
|
|
4478
4571
|
appendAssistantText(current2, extractMessageText(payload, "output_text"), timestamp);
|
|
4479
4572
|
continue;
|
|
4480
4573
|
}
|
|
4481
|
-
if (payload.type === "message" && payload.role === "user"
|
|
4574
|
+
if (payload.type === "message" && payload.role === "user") {
|
|
4482
4575
|
const text2 = normalizePromptText(extractMessageText(payload, "input_text"));
|
|
4576
|
+
if (current2.userMessage !== null || current2.contentBlocks.length > 0) {
|
|
4577
|
+
if (text2) {
|
|
4578
|
+
current2.contentBlocks.push({ kind: "queued_prompt", content: text2, timestamp });
|
|
4579
|
+
queuedPromptEcho = true;
|
|
4580
|
+
}
|
|
4581
|
+
continue;
|
|
4582
|
+
}
|
|
4483
4583
|
const images = extractResponseMessageImages(payload);
|
|
4484
4584
|
const audio = extractResponseMessageAudio(payload);
|
|
4485
4585
|
if (text2 || images.length > 0 || audio.length > 0) {
|
|
@@ -4721,6 +4821,7 @@ function walkCodexRecords(records, options) {
|
|
|
4721
4821
|
}
|
|
4722
4822
|
}
|
|
4723
4823
|
commitTurn(current2);
|
|
4824
|
+
const linkedTurns = linkAsyncAnswers(turns);
|
|
4724
4825
|
return {
|
|
4725
4826
|
turnStartIndices,
|
|
4726
4827
|
sessionId: metadata.sessionId,
|
|
@@ -4730,8 +4831,8 @@ function walkCodexRecords(records, options) {
|
|
|
4730
4831
|
slug: metadata.slug,
|
|
4731
4832
|
name: "",
|
|
4732
4833
|
model: metadata.model,
|
|
4733
|
-
turns,
|
|
4734
|
-
stats: options?.skipStats ? createEmptySessionStats(
|
|
4834
|
+
turns: linkedTurns,
|
|
4835
|
+
stats: options?.skipStats ? createEmptySessionStats(linkedTurns.length) : computeStats(linkedTurns),
|
|
4735
4836
|
rawMessages: options?.skipStats ? [] : records,
|
|
4736
4837
|
branchedFrom: metadata.branchedFrom,
|
|
4737
4838
|
agentKind: "codex"
|
|
@@ -9034,12 +9135,42 @@ var SDKMessageStream = class {
|
|
|
9034
9135
|
return this;
|
|
9035
9136
|
}
|
|
9036
9137
|
};
|
|
9037
|
-
function runQuery(state, prompt, opts) {
|
|
9038
|
-
|
|
9138
|
+
function runQuery(state, prompt, opts, pluginInstructions, preparation) {
|
|
9139
|
+
if (pluginInstructions === void 0) {
|
|
9140
|
+
const loading = pluginSkillContext(state.cwd);
|
|
9141
|
+
if (loading) {
|
|
9142
|
+
const abort = new AbortController();
|
|
9143
|
+
state.abort = abort;
|
|
9144
|
+
state.running = true;
|
|
9145
|
+
state.pluginSkillLoading = true;
|
|
9146
|
+
void loading.then((instructions) => {
|
|
9147
|
+
if (state.abort === abort && !abort.signal.aborted) {
|
|
9148
|
+
state.pluginSkillLoading = false;
|
|
9149
|
+
runQuery(state, prompt, opts, instructions, abort);
|
|
9150
|
+
}
|
|
9151
|
+
}).catch((error2) => {
|
|
9152
|
+
if (state.abort !== abort || abort.signal.aborted) return;
|
|
9153
|
+
state.pluginSkillLoading = false;
|
|
9154
|
+
state.running = false;
|
|
9155
|
+
state.messageStream?.close();
|
|
9156
|
+
state.messageStream = null;
|
|
9157
|
+
abort.abort();
|
|
9158
|
+
const result = { type: "result", is_error: true, result: String(error2) };
|
|
9159
|
+
notifyResultObservers(state, result, true);
|
|
9160
|
+
const callback = state.onResult;
|
|
9161
|
+
state.onResult = null;
|
|
9162
|
+
if (callback) callback(result);
|
|
9163
|
+
else publishError(state.sessionId, result.result);
|
|
9164
|
+
});
|
|
9165
|
+
return;
|
|
9166
|
+
}
|
|
9167
|
+
}
|
|
9168
|
+
state.abort = preparation ?? new AbortController();
|
|
9039
9169
|
state.running = true;
|
|
9040
9170
|
state.backgroundAgents = NO_BACKGROUND_AGENTS;
|
|
9041
9171
|
state.stderr = "";
|
|
9042
9172
|
const queryOpts = buildQueryOptions(state, opts);
|
|
9173
|
+
if (pluginInstructions) queryOpts.systemPrompt = appendToSystemPrompt(queryOpts.systemPrompt, pluginInstructions);
|
|
9043
9174
|
const messageStream = new SDKMessageStream();
|
|
9044
9175
|
const first = buildUserMessage(prompt, opts.images);
|
|
9045
9176
|
inputTurns.set(state, { sent: [first.uuid], completed: 0, taken: null });
|
|
@@ -9429,6 +9560,7 @@ function teardownState(state) {
|
|
|
9429
9560
|
state.activeQuery = null;
|
|
9430
9561
|
}
|
|
9431
9562
|
state.abort?.abort();
|
|
9563
|
+
state.pluginSkillLoading = false;
|
|
9432
9564
|
state.running = false;
|
|
9433
9565
|
state.backgroundAgents = NO_BACKGROUND_AGENTS;
|
|
9434
9566
|
}
|
|
@@ -9441,7 +9573,20 @@ function stopSDKSession(sessionId) {
|
|
|
9441
9573
|
}
|
|
9442
9574
|
async function interruptSDKTurn(sessionId) {
|
|
9443
9575
|
const state = sdkSessions.get(sessionId);
|
|
9444
|
-
if (!state?.running
|
|
9576
|
+
if (!state?.running) return false;
|
|
9577
|
+
if (state.pluginSkillLoading) {
|
|
9578
|
+
state.abort?.abort();
|
|
9579
|
+
state.pluginSkillLoading = false;
|
|
9580
|
+
state.running = false;
|
|
9581
|
+
const result = { type: "result", is_error: true, result: "Turn interrupted" };
|
|
9582
|
+
notifyResultObservers(state, result, true);
|
|
9583
|
+
const callback = state.onResult;
|
|
9584
|
+
state.onResult = null;
|
|
9585
|
+
clear(sessionId);
|
|
9586
|
+
callback?.(result);
|
|
9587
|
+
return true;
|
|
9588
|
+
}
|
|
9589
|
+
if (!state.activeQuery) return false;
|
|
9445
9590
|
await state.activeQuery.interrupt();
|
|
9446
9591
|
return true;
|
|
9447
9592
|
}
|
|
@@ -9639,6 +9784,7 @@ var claudeRuntime = {
|
|
|
9639
9784
|
},
|
|
9640
9785
|
async send(sessionId, req) {
|
|
9641
9786
|
const live = sdkSessions.get(sessionId);
|
|
9787
|
+
if (live?.pluginSkillLoading) return { delivery: "busy" };
|
|
9642
9788
|
if (req.onlyWhileRunning && (!isSDKQueryLive(live) || !live.running)) return { delivery: "busy" };
|
|
9643
9789
|
if (isSDKQueryLive(live)) {
|
|
9644
9790
|
const joinsTurn = live.running;
|
|
@@ -15792,7 +15938,7 @@ import { createInterface as createInterface2 } from "node:readline";
|
|
|
15792
15938
|
var package_default = {
|
|
15793
15939
|
name: "cogpit",
|
|
15794
15940
|
private: true,
|
|
15795
|
-
version: "3.
|
|
15941
|
+
version: "3.4.1",
|
|
15796
15942
|
description: "Control center for Claude Code, OpenAI Codex, and GitHub Copilot CLI sessions",
|
|
15797
15943
|
license: "MIT",
|
|
15798
15944
|
author: {
|
|
@@ -15869,11 +16015,12 @@ var package_default = {
|
|
|
15869
16015
|
"node-pty": "^1.1.0",
|
|
15870
16016
|
"proper-lockfile": "4.1.2",
|
|
15871
16017
|
semver: "7.8.5",
|
|
16018
|
+
"signal-exit": "3.0.7",
|
|
15872
16019
|
"smol-toml": "1.9.0",
|
|
15873
16020
|
"tuf-js": "3.1.0",
|
|
15874
16021
|
"vscode-jsonrpc": "8.2.1",
|
|
15875
16022
|
ws: "^8.21.1",
|
|
15876
|
-
zod: "4.6.
|
|
16023
|
+
zod: "4.6.6"
|
|
15877
16024
|
},
|
|
15878
16025
|
devDependencies: {
|
|
15879
16026
|
"@anthropic-ai/sdk": "^0.112.4",
|
|
@@ -15898,6 +16045,7 @@ var package_default = {
|
|
|
15898
16045
|
"@types/react": "^19.0.2",
|
|
15899
16046
|
"@types/react-dom": "^19.0.2",
|
|
15900
16047
|
"@types/semver": "7.7.1",
|
|
16048
|
+
"@types/signal-exit": "3.0.4",
|
|
15901
16049
|
"@types/ws": "^8.18.1",
|
|
15902
16050
|
"@vitejs/plugin-react": "^4.3.4",
|
|
15903
16051
|
"@vitest/coverage-v8": "^4.1.12",
|
|
@@ -15909,7 +16057,7 @@ var package_default = {
|
|
|
15909
16057
|
clsx: "^2.1.1",
|
|
15910
16058
|
cmdk: "^1.1.1",
|
|
15911
16059
|
"css-tree": "3.2.1",
|
|
15912
|
-
electron: "^
|
|
16060
|
+
electron: "^42.11.16",
|
|
15913
16061
|
"electron-builder": "^26.15.3",
|
|
15914
16062
|
"electron-vite": "5.0.0",
|
|
15915
16063
|
esbuild: "0.25.12",
|
|
@@ -15941,14 +16089,14 @@ var package_default = {
|
|
|
15941
16089
|
"@hono/node-server": "1.19.15",
|
|
15942
16090
|
"@xmldom/xmldom": "0.8.15",
|
|
15943
16091
|
"app-builder-lib": "26.15.3",
|
|
15944
|
-
"body-parser": "2.
|
|
16092
|
+
"body-parser": "2.4.0",
|
|
15945
16093
|
"builder-util-runtime": "9.7.0",
|
|
15946
|
-
"fast-uri": "4.
|
|
16094
|
+
"fast-uri": "4.2.3",
|
|
15947
16095
|
flatted: "3.4.2",
|
|
15948
16096
|
"form-data": "4.0.6",
|
|
15949
16097
|
hono: "4.13.13",
|
|
15950
16098
|
"http-cache-semantics": "4.3.0",
|
|
15951
|
-
"ip-address": "10.7.
|
|
16099
|
+
"ip-address": "10.7.4",
|
|
15952
16100
|
"js-yaml": "4.3.2",
|
|
15953
16101
|
lodash: "4.18.1",
|
|
15954
16102
|
nanoid: "3.3.18",
|
|
@@ -15958,7 +16106,7 @@ var package_default = {
|
|
|
15958
16106
|
"source-map-js": "1.2.2",
|
|
15959
16107
|
tar: "7.5.21",
|
|
15960
16108
|
tmp: "0.2.7",
|
|
15961
|
-
undici: "7.30.
|
|
16109
|
+
undici: "7.30.1"
|
|
15962
16110
|
},
|
|
15963
16111
|
patchedDependencies: {
|
|
15964
16112
|
"electron-vite@5.0.0": "patches/electron-vite@5.0.0.patch"
|
|
@@ -17350,6 +17498,11 @@ async function threadSettings(client2, options, sessionId) {
|
|
|
17350
17498
|
if (tier !== void 0) settings.serviceTier = tier;
|
|
17351
17499
|
const browserConfig = await codexBrowserConfig(client2, options.cwd, sessionId);
|
|
17352
17500
|
const config = { ...browserConfig };
|
|
17501
|
+
const instructions = await pluginSkillContext(options.cwd);
|
|
17502
|
+
if (instructions) {
|
|
17503
|
+
const existing = typeof config.developer_instructions === "string" ? config.developer_instructions : (await client2.call("config/read", { cwd: options.cwd })).config.developer_instructions;
|
|
17504
|
+
config.developer_instructions = [existing, instructions].filter(Boolean).join("\n\n");
|
|
17505
|
+
}
|
|
17353
17506
|
if (options.contextWindowTokens != null) {
|
|
17354
17507
|
config.model_context_window = options.contextWindowTokens;
|
|
17355
17508
|
}
|
|
@@ -18168,6 +18321,12 @@ import {
|
|
|
18168
18321
|
StreamMessageReader,
|
|
18169
18322
|
StreamMessageWriter
|
|
18170
18323
|
} from "vscode-jsonrpc/node.js";
|
|
18324
|
+
async function withPluginSkills(options) {
|
|
18325
|
+
const instructions = await pluginSkillContext(options.workingDirectory ?? process.cwd());
|
|
18326
|
+
if (!instructions) return options;
|
|
18327
|
+
const existing = isRecord(options.systemMessage) ? options.systemMessage : {};
|
|
18328
|
+
return { ...options, systemMessage: { mode: "append", ...existing, content: [typeof existing.content === "string" ? existing.content : "", instructions].filter(Boolean).join("\n\n") } };
|
|
18329
|
+
}
|
|
18171
18330
|
var PROTOCOL_VERSION2 = 3;
|
|
18172
18331
|
var DEFAULT_TRANSPORT_TIMEOUT_MS = 3e4;
|
|
18173
18332
|
var DEFAULT_REQUEST_TIMEOUT_MS2 = 12e4;
|
|
@@ -18417,6 +18576,7 @@ var CopilotRuntime = class {
|
|
|
18417
18576
|
return usage;
|
|
18418
18577
|
}
|
|
18419
18578
|
async createSession(options = {}) {
|
|
18579
|
+
options = await withPluginSkills(options);
|
|
18420
18580
|
const sessionId = options.sessionId ?? randomUUID6();
|
|
18421
18581
|
this.assertSessionAvailable(sessionId);
|
|
18422
18582
|
this.openingSessions.add(sessionId);
|
|
@@ -18439,6 +18599,7 @@ var CopilotRuntime = class {
|
|
|
18439
18599
|
}
|
|
18440
18600
|
}
|
|
18441
18601
|
async resumeSession(sessionId, options = {}) {
|
|
18602
|
+
options = await withPluginSkills(options);
|
|
18442
18603
|
this.assertSessionAvailable(sessionId);
|
|
18443
18604
|
this.openingSessions.add(sessionId);
|
|
18444
18605
|
this.conflictingResumes.delete(sessionId);
|
|
@@ -20013,6 +20174,14 @@ function createInstanceRuntime(instance, dataRoot2) {
|
|
|
20013
20174
|
});
|
|
20014
20175
|
worker.on("message", (message) => {
|
|
20015
20176
|
if (child2 !== worker || !isRecord(message)) return;
|
|
20177
|
+
if (message.type === "plugin-skills" && Number.isSafeInteger(message.requestId) && typeof message.cwd === "string" && message.cwd.length <= 8192) {
|
|
20178
|
+
const requestId = message.requestId;
|
|
20179
|
+
void Promise.resolve(pluginSkillContext(message.cwd)).then((instructions) => {
|
|
20180
|
+
if (child2 === worker && worker.connected) worker.send({ type: "plugin-skills-result", requestId, instructions: instructions ?? "" }, () => {
|
|
20181
|
+
});
|
|
20182
|
+
});
|
|
20183
|
+
return;
|
|
20184
|
+
}
|
|
20016
20185
|
if (message.type === "stream" && typeof message.sessionId === "string" && isRecord(message.event) && watched2.has(message.sessionId)) {
|
|
20017
20186
|
forwardEvent(qualified(message.sessionId), message.event);
|
|
20018
20187
|
return;
|
|
@@ -20208,6 +20377,22 @@ var methods = /* @__PURE__ */ new Set(["start", "send", "interrupt", "stop", "st
|
|
|
20208
20377
|
function send2(message) {
|
|
20209
20378
|
if (process.connected) process.send?.(message);
|
|
20210
20379
|
}
|
|
20380
|
+
var skillRequestId = 0;
|
|
20381
|
+
var skillRequests = /* @__PURE__ */ new Map();
|
|
20382
|
+
var unregisterSkills = registerPluginSkills((cwd) => new Promise((resolve9) => {
|
|
20383
|
+
if (skillRequests.size >= 64) {
|
|
20384
|
+
resolve9("");
|
|
20385
|
+
return;
|
|
20386
|
+
}
|
|
20387
|
+
const requestId = ++skillRequestId;
|
|
20388
|
+
const timer = setTimeout(() => {
|
|
20389
|
+
skillRequests.delete(requestId);
|
|
20390
|
+
resolve9("");
|
|
20391
|
+
}, 5e3);
|
|
20392
|
+
timer.unref();
|
|
20393
|
+
skillRequests.set(requestId, { resolve: resolve9, timer });
|
|
20394
|
+
send2({ type: "plugin-skills", requestId, cwd });
|
|
20395
|
+
}));
|
|
20211
20396
|
function snapshot() {
|
|
20212
20397
|
const ids = runtime.listActive().map((s) => s.sessionId);
|
|
20213
20398
|
return { active: runtime.listActive(), activity: Object.fromEntries(ids.map((id) => [id, runtime.activity(id)])), approvals: runtime.listPendingApprovals(), questions: runtime.listPendingQuestions(), plans: runtime.listPendingPlans?.() ?? [] };
|
|
@@ -20231,6 +20416,15 @@ function publishSnapshot() {
|
|
|
20231
20416
|
var poll = setInterval(publishSnapshot, 300);
|
|
20232
20417
|
poll.unref();
|
|
20233
20418
|
process.on("message", (message) => {
|
|
20419
|
+
if (isRecord(message) && message.type === "plugin-skills-result" && typeof message.requestId === "number") {
|
|
20420
|
+
const request = skillRequests.get(message.requestId);
|
|
20421
|
+
if (request) {
|
|
20422
|
+
clearTimeout(request.timer);
|
|
20423
|
+
skillRequests.delete(message.requestId);
|
|
20424
|
+
request.resolve(typeof message.instructions === "string" && Buffer.byteLength(message.instructions) <= 131072 ? message.instructions : "");
|
|
20425
|
+
}
|
|
20426
|
+
return;
|
|
20427
|
+
}
|
|
20234
20428
|
if (!isRecord(message) || typeof message.id !== "number" || typeof message.method !== "string" || !methods.has(message.method) || !Array.isArray(message.args)) return;
|
|
20235
20429
|
const { id, method, args } = message;
|
|
20236
20430
|
void (async () => {
|
|
@@ -20277,6 +20471,13 @@ process.on("message", (message) => {
|
|
|
20277
20471
|
});
|
|
20278
20472
|
async function close() {
|
|
20279
20473
|
clearInterval(poll);
|
|
20474
|
+
unregisterSkills();
|
|
20475
|
+
for (const request of skillRequests.values()) {
|
|
20476
|
+
clearTimeout(request.timer);
|
|
20477
|
+
request.resolve("");
|
|
20478
|
+
}
|
|
20479
|
+
;
|
|
20480
|
+
skillRequests.clear();
|
|
20280
20481
|
await runtime.shutdown();
|
|
20281
20482
|
process.disconnect?.();
|
|
20282
20483
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{c as qe,j as O,r as ge}from"./vendor-react-gGw_S5I_.js";import{aM as si,aN as fi,aO as ai,aP as pi,R as di,J as xe,B as Ue}from"./index-
|
|
1
|
+
import{c as qe,j as O,r as ge}from"./vendor-react-gGw_S5I_.js";import{aM as si,aN as fi,aO as ai,aP as pi,R as di,J as xe,B as Ue}from"./index-D3WV64DU.js";import{N as Kn,Y as hi}from"./vendor-ui-DkzcTXCS.js";import"./vendor-shiki-DOn6sF-i.js";import"./vendor-markdown-BE1gYnO9.js";function mi(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var U={},Fe={},te={},gn;function ke(){if(gn)return te;gn=1;function t(s){return typeof s>"u"||s===null}function i(s){return typeof s=="object"&&s!==null}function m(s){return Array.isArray(s)?s:t(s)?[]:[s]}function y(s,c){if(c){const A=Object.keys(c);for(let r=0,f=A.length;r<f;r+=1){const C=A[r];s[C]=c[C]}}return s}function p(s,c){let A="";for(let r=0;r<c;r+=1)A+=s;return A}function h(s){return s===0&&Number.NEGATIVE_INFINITY===1/s}return te.isNothing=t,te.isObject=i,te.toArray=m,te.repeat=p,te.isNegativeZero=h,te.extend=y,te}var $e,xn;function Ee(){if(xn)return $e;xn=1;function t(m,y){let p="";const h=m.reason||"(unknown reason)";return m.mark?(m.mark.name&&(p+='in "'+m.mark.name+'" '),p+="("+(m.mark.line+1)+":"+(m.mark.column+1)+")",!y&&m.mark.snippet&&(p+=`
|
|
2
2
|
|
|
3
3
|
`+m.mark.snippet),h+" "+p):h}function i(m,y){Error.call(this),this.name="YAMLException",this.reason=m,this.mark=y,this.message=t(this,!1),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}return i.prototype=Object.create(Error.prototype),i.prototype.constructor=i,i.prototype.toString=function(y){return this.name+": "+t(this,y)},$e=i,$e}var Ge,An;function gi(){if(An)return Ge;An=1;const t=ke();function i(p,h,s,c,A){let r="",f="";const C=Math.floor(A/2)-1;return c-h>C&&(r=" ... ",h=c-C+r.length),s-c>C&&(f=" ...",s=c+C-f.length),{str:r+p.slice(h,s).replace(/\t/g,"→")+f,pos:c-h+r.length}}function m(p,h){return t.repeat(" ",h-p.length)+p}function y(p,h){if(h=Object.create(h||null),!p.buffer)return null;h.maxLength||(h.maxLength=79),typeof h.indent!="number"&&(h.indent=1),typeof h.linesBefore!="number"&&(h.linesBefore=3),typeof h.linesAfter!="number"&&(h.linesAfter=2);const s=/\r?\n|\r|\0/g,c=[0],A=[];let r,f=-1;for(;r=s.exec(p.buffer);)A.push(r.index),c.push(r.index+r[0].length),p.position<=r.index&&f<0&&(f=c.length-2);f<0&&(f=c.length-1);let C="";const L=Math.min(p.line+h.linesAfter,A.length).toString().length,R=h.maxLength-(h.indent+L+3);for(let F=1;F<=h.linesBefore&&!(f-F<0);F++){const H=i(p.buffer,c[f-F],A[f-F],p.position-(c[f]-c[f-F]),R);C=t.repeat(" ",h.indent)+m((p.line-F+1).toString(),L)+" | "+H.str+`
|
|
4
4
|
`+C}const V=i(p.buffer,c[f],A[f],p.position,R);C+=t.repeat(" ",h.indent)+m((p.line+1).toString(),L)+" | "+V.str+`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as ie,j as u,r as M}from"./vendor-react-gGw_S5I_.js";import{af as h,ag as Z,ah as ue,ai as he,aj as ge,ak as fe,al as ve,am as we,an as Ce,ao as Se,ap as je,aq as be,ar as ye,as as xe,at as ee,au as _,av as Pe,aw as Te,ax as Oe,ay as ke,az as Ne,aA as Fe,aB as Ee,U as Ie}from"./index-COB3e1_W.js";import{P as $e,l as Ae,m as te,S as Re,L as De,H as Le,n as He,o as Me,c as ne,G as Be,F as qe,p as Ge,q as Ke,r as ze,s as Ue,t as We,u as pe,v as ae,w as _e,x as Ve,y as Je,K as Xe,E as Qe,z as Ye,A as Ze,B as oe,D as et,I as tt,J as nt}from"./vendor-ui-DKYSMrjf.js";import"./vendor-shiki-DOn6sF-i.js";import"./vendor-markdown-BE1gYnO9.js";function a(t,e,s,c,l,m,d){return{id:t,label:e,icon:c,run:l,shortcut:m,description:d,value:`${e} ${s}`}}function V(...t){return t.filter(e=>e!==!1&&e!==void 0)}function at(t){const e=ie.c(40);let s,c,l,m,d,w,C,r,S,g,b,f,y,N,x;if(e[0]!==t){const $=V(a("home","Go to Mission Control","home overview dashboard",Le,t.onGoHome),a("mission-control",t.showMission?"Exit Mission Control":"Open Mission Control","live sessions blocked waiting answer everything at once",De,t.onToggleMissionControl,h("missionControl")),...(t.extraActions??[]).map(ot),a("new-session","Start a new session","project agent chat create",$e,t.onNewSession,h("newSession")),t.onDuplicateSession&&a("duplicate-session","Duplicate this session","copy fork clone branch thread",Ae,t.onDuplicateSession),t.canFocusComposer&&a("focus-composer","Focus message composer","chat prompt input",te,t.onFocusComposer,h("focusComposer")),t.onFindInConversation&&a("find-in-conversation","Find in conversation","search text transcript turns matches",Re,t.onFindInConversation,h("findInConversation"))),F=(t.projects??[]).slice(0,8).map(n=>a(`project-${n.dirName}`,n.shortName,`${n.path} ${n.dirName} project workspace`,He,()=>{var i;return(i=t.onOpenProject)==null?void 0:i.call(t,n.dirName)},void 0,`${n.path} · ${n.sessionCount} session${n.sessionCount===1?"":"s"}`)),E=(t.recentSessions??[]).slice(0,10).map(n=>{const v=(n.aiTitle||n.name||n.slug||n.lastUserMessage||n.firstUserMessage||n.sessionId).replace(/\s+/g," ").trim().slice(0,160)||n.sessionId,L=[n.projectShortName,n.gitBranch].filter(Boolean).join(" · ");return a(`session-${n.dirName}-${n.fileName}`,v,`${n.projectShortName} ${n.cwd??""} ${n.gitBranch??""} ${n.sessionId} recent thread conversation`,te,()=>{var q;return(q=t.onOpenSession)==null?void 0:q.call(t,n.dirName,n.fileName)},void 0,L)}),A=t.devices??[],I=A.length>1&&t.onSwitchDevice?A.slice(0,Z.length).map((n,i)=>a(`device-${n.id}`,n.isActive?`${n.name} (current)`:`Switch to ${n.name}`,`device machine host remote ${n.id}`,n.isLocal?Me:ne,()=>{var v;return(v=t.onSwitchDevice)==null?void 0:v.call(t,n.id)},h(Z[i]))):[],o=V(a("toggle-sidebar",t.showSidebar?"Hide session sidebar":"Show session sidebar","projects navigation panel",Ue,t.onToggleSidebar,h("toggleSidebar")),t.hasSession&&a("toggle-stats",t.showStats?"Hide session details":"Show session details","stats tokens usage panel",ze,t.onToggleStats,h("toggleStats")),t.onToggleProjectFiles&&a("project-files",t.showProjectFiles?"Close project files":"Open project files","browse edit save workspace source code",Ke,t.onToggleProjectFiles,h("projectFiles")),t.onToggleBrowser&&a("toggle-browser",t.showBrowser?"Hide browser":"Show browser","web page live view browse panel",Ge,t.onToggleBrowser),t.hasFileChanges&&a("toggle-file-changes",t.showFileChanges?"Hide file changes":"Show file changes","diff edits review panel",qe,t.onToggleFileChanges),t.supportsWorktrees&&t.canOpenTerminal&&a("toggle-worktrees",t.showWorktrees?"Hide worktrees":"Show worktrees","git branches panel",Be,t.onToggleWorktrees)),R=V(t.onOpenProjectInEditor&&a("open-project-editor","Open project in editor","code cursor vscode zed workspace",tt,t.onOpenProjectInEditor),t.onRevealProject&&a("reveal-project","Reveal project in file manager","finder explorer folder directory",et,t.onRevealProject),t.onCopyResumeCommand&&a("copy-resume-command","Copy resume command","cli claude codex copilot terminal clipboard continue session",oe,t.onCopyResumeCommand),t.onCopyProjectPath&&a("copy-project-path","Copy project path","workspace directory clipboard",oe,t.onCopyProjectPath),t.onOpenIntegratedTerminal&&a("integrated-terminal","New integrated terminal","embedded shell command line process panel",Ze,t.onOpenIntegratedTerminal,h("newIntegratedTerminal")),t.canOpenTerminal&&a("terminal","Open in system terminal","external shell command line app",Ye,t.onOpenTerminal,h("systemTerminal")),t.onTogglePreview&&a("preview","Toggle development preview","browser localhost dev server website",Qe,t.onTogglePreview,h("preview")),t.onOpenKeyboardShortcuts&&a("keyboard-shortcuts","Customize keyboard shortcuts","keybindings hotkeys settings",Xe,t.onOpenKeyboardShortcuts),t.onOpenConfig&&a("config",t.showConfig?"Close agent configuration":"Open agent configuration","skills commands claude settings files",Je,t.onOpenConfig),a("settings","Open Cogpit settings","preferences network",Ve,t.onOpenSettings),a("theme","Change theme & chat width","appearance light dark oled width narrow wide",_e,t.onOpenTheme,h("themeSelector")),a("expand","Expand all groups","conversation details",ae,t.onExpandAll,h("expandAll")),a("expand-payloads","Expand all tool payloads","raw input result diff conversation details",ae,t.onExpandToolPayloads,h("expandToolPayloads")),a("collapse","Collapse all","conversation groups payloads details",pe,t.onCollapseAll),t.onKillAll&&a("kill-all","Kill all agent processes","stop terminate halt everything runaway",We,t.onKillAll),t.onOpenDevices&&a("manage-devices","Manage devices…","remote machines hub hosts edit rename remove switch",nt,()=>{var n;return(n=t.onOpenDevices)==null?void 0:n.call(t,"manage")}),t.onOpenDevices&&a("add-device","Add device…","remote machine hub host connect pair new",ne,()=>{var n;return(n=t.onOpenDevices)==null?void 0:n.call(t,"add")})),k=[{value:"Navigation",items:$},...E.length>0?[{value:"Recent sessions",items:E}]:[],...F.length>0?[{value:"Projects",items:F}]:[],...I.length>0?[{value:"Devices",items:I}]:[],{value:"View",items:o},{value:"Tools",items:R}],D=function(i){t.onOpenChange(!1),i.run()};l=ve,y=t.open,N=t.onOpenChange,x="Command palette",w="Search for a Cogpit action to run.",C="max-w-xl",c=we,S="Search commands",g=!0,e[16]===Symbol.for("react.memo_cache_sentinel")?(b=u.jsx(Ce,{"aria-label":"Search commands",autoFocus:!0,placeholder:"Search commands..."}),e[16]=b):b=e[16],e[17]!==t.loadingNavigation?(f=t.loadingNavigation&&u.jsxs("div",{className:"motion-enter flex items-center gap-2 px-3 py-2 text-xs text-muted-foreground",role:"status",children:[u.jsx(ue,{className:"size-3.5"}),"Loading projects and sessions..."]}),e[17]=t.loadingNavigation,e[18]=f):f=e[18],s=Se,m="max-h-[min(26rem,60vh)]",e[19]===Symbol.for("react.memo_cache_sentinel")?(d=u.jsx(je,{children:"No matching actions."}),e[19]=d):d=e[19],r=k.map(n=>u.jsx(he,{heading:n.value,children:n.items.map(i=>{const v=i.icon;return u.jsxs(ge,{value:i.value,onSelect:()=>D(i),children:[u.jsx(v,{"aria-hidden":"true"}),u.jsxs("span",{className:"min-w-0 flex-1",children:[u.jsx("span",{className:"block truncate",children:i.label}),i.description&&u.jsx("span",{className:"block truncate text-xs text-muted-foreground",children:i.description})]}),i.shortcut&&u.jsx(fe,{children:i.shortcut})]},i.id)})},n.value)),e[0]=t,e[1]=s,e[2]=c,e[3]=l,e[4]=m,e[5]=d,e[6]=w,e[7]=C,e[8]=r,e[9]=S,e[10]=g,e[11]=b,e[12]=f,e[13]=y,e[14]=N,e[15]=x}else s=e[1],c=e[2],l=e[3],m=e[4],d=e[5],w=e[6],C=e[7],r=e[8],S=e[9],g=e[10],b=e[11],f=e[12],y=e[13],N=e[14],x=e[15];let P;e[20]!==s||e[21]!==m||e[22]!==d||e[23]!==r?(P=u.jsxs(s,{className:m,children:[d,r]}),e[20]=s,e[21]=m,e[22]=d,e[23]=r,e[24]=P):P=e[24];let T;e[25]!==c||e[26]!==P||e[27]!==S||e[28]!==g||e[29]!==b||e[30]!==f?(T=u.jsxs(c,{label:S,loop:g,children:[b,f,P]}),e[25]=c,e[26]=P,e[27]=S,e[28]=g,e[29]=b,e[30]=f,e[31]=T):T=e[31];let O;return e[32]!==l||e[33]!==w||e[34]!==C||e[35]!==T||e[36]!==y||e[37]!==N||e[38]!==x?(O=u.jsx(l,{open:y,onOpenChange:N,title:x,description:w,className:C,children:T}),e[32]=l,e[33]=w,e[34]=C,e[35]=T,e[36]=y,e[37]=N,e[38]=x,e[39]=O):O=e[39],O}function ot(t){return a(t.id,t.label,t.keywords,t.icon,t.onSelect)}async function se(t,e){const s=await Ie(t,{signal:e});if(!s.ok)throw new Error(`Request failed (${s.status})`);const c=await s.json();return Array.isArray(c)?c:[]}function dt(t){var J;const e=ie.c(51);let s,c,l,m,d,w;e[0]!==t?({open:l,currentProjectDirName:s,projectCwd:d,onProcessStarted:c,launchTerminalRequest:w,...m}=t,e[0]=t,e[1]=s,e[2]=c,e[3]=l,e[4]=m,e[5]=d,e[6]=w):(s=e[1],c=e[2],l=e[3],m=e[4],d=e[5],w=e[6]);const C=w===void 0?0:w,r=be();let S;e[7]===Symbol.for("react.memo_cache_sentinel")?(S=[],e[7]=S):S=e[7];const[g,b]=M.useState(S);let f;e[8]===Symbol.for("react.memo_cache_sentinel")?(f=[],e[8]=f):f=e[8];const[y,N]=M.useState(f),[x,P]=M.useState(!1),T=M.useRef(0),O=ye();let $,F;e[9]!==O||e[10]!==l?($=()=>{if(!l)return;const j=new AbortController,B=Te();return P(!0),Promise.allSettled([se("/api/projects",j.signal),se(Oe({limit:"12",perProject:"3"},O),j.signal)]).then(me=>{const[X,Q]=me;if(j.signal.aborted)return;const Y=Q.status==="fulfilled"?Q.value:[];ke(Y,B),b(X.status==="fulfilled"?X.value:[]),N(Y),P(!1)}),()=>j.abort()},F=[l,O],e[9]=O,e[10]=l,e[11]=$,e[12]=F):($=e[11],F=e[12]),M.useEffect($,F);let E;e[13]!==g?(E=xe(g),e[13]=g,e[14]=E):E=e[14];const A=E;let I;e:{if(d){I=d;break e}if(!s){I=null;break e}let j;e[15]!==s||e[16]!==g?(j=((J=g.find(B=>B.dirName===s))==null?void 0:J.path)??null,e[15]=s,e[16]=g,e[17]=j):j=e[17],I=j}const o=I;let R;e[18]!==c||e[19]!==r||e[20]!==o?(R=()=>{if(!o)return;const j=r.spawnTerminal({cwd:o}),B=o.replace(/\/+$/,"").split("/").at(-1)||"Terminal";c({id:j,name:B,type:"terminal",status:"running",source:o})},e[18]=c,e[19]=r,e[20]=o,e[21]=R):R=e[21];const k=R;let D,n;e[22]!==k||e[23]!==C||e[24]!==r.status||e[25]!==o?(n=()=>{C<=T.current||!o||r.status!=="connected"||(T.current=C,k())},D=[k,C,r.status,o],e[22]=k,e[23]=C,e[24]=r.status,e[25]=o,e[26]=D,e[27]=n):(D=e[26],n=e[27]),M.useEffect(n,D);let i;e[28]!==s||e[29]!==o?(i={path:o,dirName:s},e[28]=s,e[29]=o,e[30]=i):i=e[30];const v=i;let L;e[31]!==v?(L=()=>Ne(v),e[31]=v,e[32]=L):L=e[32];const q=L;let G;e[33]!==v?(G=()=>Fe(v),e[33]=v,e[34]=G):G=e[34];const le=G,ce=!ee()&&_("hostFiles"),re=_("hostFiles")&&(!ee()||Pe());let K;e[35]!==o?(K=()=>{o&&Ee(o)},e[35]=o,e[36]=K):K=e[36];const de=K;let H;e[37]!==k||e[38]!==r.status||e[39]!==o?(H=o&&r.status==="connected"&&_("terminal")?k:void 0,e[37]=k,e[38]=r.status,e[39]=o,e[40]=H):H=e[40];const U=o&&re?q:void 0,W=o&&ce?le:void 0,p=o?de:void 0;let z;return e[41]!==x||e[42]!==l||e[43]!==m||e[44]!==y||e[45]!==A||e[46]!==H||e[47]!==U||e[48]!==W||e[49]!==p?(z=u.jsx(at,{...m,open:l,projects:A,recentSessions:y,loadingNavigation:x,onOpenIntegratedTerminal:H,onOpenProjectInEditor:U,onRevealProject:W,onCopyProjectPath:p}),e[41]=x,e[42]=l,e[43]=m,e[44]=y,e[45]=A,e[46]=H,e[47]=U,e[48]=W,e[49]=p,e[50]=z):z=e[50],z}export{dt as CommandPaletteHost};
|
|
1
|
+
import{c as ie,j as u,r as M}from"./vendor-react-gGw_S5I_.js";import{af as h,ag as Z,ah as ue,ai as he,aj as ge,ak as fe,al as ve,am as we,an as Ce,ao as Se,ap as je,aq as be,ar as ye,as as xe,at as ee,au as _,av as Pe,aw as Te,ax as Oe,ay as ke,az as Ne,aA as Fe,aB as Ee,U as Ie}from"./index-D3WV64DU.js";import{P as $e,l as Ae,m as te,S as Re,L as De,H as Le,n as He,o as Me,c as ne,G as Be,F as qe,p as Ge,q as Ke,r as ze,s as Ue,t as We,u as pe,v as ae,w as _e,x as Ve,y as Je,K as Xe,E as Qe,z as Ye,A as Ze,B as oe,D as et,I as tt,J as nt}from"./vendor-ui-DkzcTXCS.js";import"./vendor-shiki-DOn6sF-i.js";import"./vendor-markdown-BE1gYnO9.js";function a(t,e,s,c,l,m,d){return{id:t,label:e,icon:c,run:l,shortcut:m,description:d,value:`${e} ${s}`}}function V(...t){return t.filter(e=>e!==!1&&e!==void 0)}function at(t){const e=ie.c(40);let s,c,l,m,d,w,C,r,S,g,b,f,y,N,x;if(e[0]!==t){const $=V(a("home","Go to Mission Control","home overview dashboard",Le,t.onGoHome),a("mission-control",t.showMission?"Exit Mission Control":"Open Mission Control","live sessions blocked waiting answer everything at once",De,t.onToggleMissionControl,h("missionControl")),...(t.extraActions??[]).map(ot),a("new-session","Start a new session","project agent chat create",$e,t.onNewSession,h("newSession")),t.onDuplicateSession&&a("duplicate-session","Duplicate this session","copy fork clone branch thread",Ae,t.onDuplicateSession),t.canFocusComposer&&a("focus-composer","Focus message composer","chat prompt input",te,t.onFocusComposer,h("focusComposer")),t.onFindInConversation&&a("find-in-conversation","Find in conversation","search text transcript turns matches",Re,t.onFindInConversation,h("findInConversation"))),F=(t.projects??[]).slice(0,8).map(n=>a(`project-${n.dirName}`,n.shortName,`${n.path} ${n.dirName} project workspace`,He,()=>{var i;return(i=t.onOpenProject)==null?void 0:i.call(t,n.dirName)},void 0,`${n.path} · ${n.sessionCount} session${n.sessionCount===1?"":"s"}`)),E=(t.recentSessions??[]).slice(0,10).map(n=>{const v=(n.aiTitle||n.name||n.slug||n.lastUserMessage||n.firstUserMessage||n.sessionId).replace(/\s+/g," ").trim().slice(0,160)||n.sessionId,L=[n.projectShortName,n.gitBranch].filter(Boolean).join(" · ");return a(`session-${n.dirName}-${n.fileName}`,v,`${n.projectShortName} ${n.cwd??""} ${n.gitBranch??""} ${n.sessionId} recent thread conversation`,te,()=>{var q;return(q=t.onOpenSession)==null?void 0:q.call(t,n.dirName,n.fileName)},void 0,L)}),A=t.devices??[],I=A.length>1&&t.onSwitchDevice?A.slice(0,Z.length).map((n,i)=>a(`device-${n.id}`,n.isActive?`${n.name} (current)`:`Switch to ${n.name}`,`device machine host remote ${n.id}`,n.isLocal?Me:ne,()=>{var v;return(v=t.onSwitchDevice)==null?void 0:v.call(t,n.id)},h(Z[i]))):[],o=V(a("toggle-sidebar",t.showSidebar?"Hide session sidebar":"Show session sidebar","projects navigation panel",Ue,t.onToggleSidebar,h("toggleSidebar")),t.hasSession&&a("toggle-stats",t.showStats?"Hide session details":"Show session details","stats tokens usage panel",ze,t.onToggleStats,h("toggleStats")),t.onToggleProjectFiles&&a("project-files",t.showProjectFiles?"Close project files":"Open project files","browse edit save workspace source code",Ke,t.onToggleProjectFiles,h("projectFiles")),t.onToggleBrowser&&a("toggle-browser",t.showBrowser?"Hide browser":"Show browser","web page live view browse panel",Ge,t.onToggleBrowser),t.hasFileChanges&&a("toggle-file-changes",t.showFileChanges?"Hide file changes":"Show file changes","diff edits review panel",qe,t.onToggleFileChanges),t.supportsWorktrees&&t.canOpenTerminal&&a("toggle-worktrees",t.showWorktrees?"Hide worktrees":"Show worktrees","git branches panel",Be,t.onToggleWorktrees)),R=V(t.onOpenProjectInEditor&&a("open-project-editor","Open project in editor","code cursor vscode zed workspace",tt,t.onOpenProjectInEditor),t.onRevealProject&&a("reveal-project","Reveal project in file manager","finder explorer folder directory",et,t.onRevealProject),t.onCopyResumeCommand&&a("copy-resume-command","Copy resume command","cli claude codex copilot terminal clipboard continue session",oe,t.onCopyResumeCommand),t.onCopyProjectPath&&a("copy-project-path","Copy project path","workspace directory clipboard",oe,t.onCopyProjectPath),t.onOpenIntegratedTerminal&&a("integrated-terminal","New integrated terminal","embedded shell command line process panel",Ze,t.onOpenIntegratedTerminal,h("newIntegratedTerminal")),t.canOpenTerminal&&a("terminal","Open in system terminal","external shell command line app",Ye,t.onOpenTerminal,h("systemTerminal")),t.onTogglePreview&&a("preview","Toggle development preview","browser localhost dev server website",Qe,t.onTogglePreview,h("preview")),t.onOpenKeyboardShortcuts&&a("keyboard-shortcuts","Customize keyboard shortcuts","keybindings hotkeys settings",Xe,t.onOpenKeyboardShortcuts),t.onOpenConfig&&a("config",t.showConfig?"Close agent configuration":"Open agent configuration","skills commands claude settings files",Je,t.onOpenConfig),a("settings","Open Cogpit settings","preferences network",Ve,t.onOpenSettings),a("theme","Change theme & chat width","appearance light dark oled width narrow wide",_e,t.onOpenTheme,h("themeSelector")),a("expand","Expand all groups","conversation details",ae,t.onExpandAll,h("expandAll")),a("expand-payloads","Expand all tool payloads","raw input result diff conversation details",ae,t.onExpandToolPayloads,h("expandToolPayloads")),a("collapse","Collapse all","conversation groups payloads details",pe,t.onCollapseAll),t.onKillAll&&a("kill-all","Kill all agent processes","stop terminate halt everything runaway",We,t.onKillAll),t.onOpenDevices&&a("manage-devices","Manage devices…","remote machines hub hosts edit rename remove switch",nt,()=>{var n;return(n=t.onOpenDevices)==null?void 0:n.call(t,"manage")}),t.onOpenDevices&&a("add-device","Add device…","remote machine hub host connect pair new",ne,()=>{var n;return(n=t.onOpenDevices)==null?void 0:n.call(t,"add")})),k=[{value:"Navigation",items:$},...E.length>0?[{value:"Recent sessions",items:E}]:[],...F.length>0?[{value:"Projects",items:F}]:[],...I.length>0?[{value:"Devices",items:I}]:[],{value:"View",items:o},{value:"Tools",items:R}],D=function(i){t.onOpenChange(!1),i.run()};l=ve,y=t.open,N=t.onOpenChange,x="Command palette",w="Search for a Cogpit action to run.",C="max-w-xl",c=we,S="Search commands",g=!0,e[16]===Symbol.for("react.memo_cache_sentinel")?(b=u.jsx(Ce,{"aria-label":"Search commands",autoFocus:!0,placeholder:"Search commands..."}),e[16]=b):b=e[16],e[17]!==t.loadingNavigation?(f=t.loadingNavigation&&u.jsxs("div",{className:"motion-enter flex items-center gap-2 px-3 py-2 text-xs text-muted-foreground",role:"status",children:[u.jsx(ue,{className:"size-3.5"}),"Loading projects and sessions..."]}),e[17]=t.loadingNavigation,e[18]=f):f=e[18],s=Se,m="max-h-[min(26rem,60vh)]",e[19]===Symbol.for("react.memo_cache_sentinel")?(d=u.jsx(je,{children:"No matching actions."}),e[19]=d):d=e[19],r=k.map(n=>u.jsx(he,{heading:n.value,children:n.items.map(i=>{const v=i.icon;return u.jsxs(ge,{value:i.value,onSelect:()=>D(i),children:[u.jsx(v,{"aria-hidden":"true"}),u.jsxs("span",{className:"min-w-0 flex-1",children:[u.jsx("span",{className:"block truncate",children:i.label}),i.description&&u.jsx("span",{className:"block truncate text-xs text-muted-foreground",children:i.description})]}),i.shortcut&&u.jsx(fe,{children:i.shortcut})]},i.id)})},n.value)),e[0]=t,e[1]=s,e[2]=c,e[3]=l,e[4]=m,e[5]=d,e[6]=w,e[7]=C,e[8]=r,e[9]=S,e[10]=g,e[11]=b,e[12]=f,e[13]=y,e[14]=N,e[15]=x}else s=e[1],c=e[2],l=e[3],m=e[4],d=e[5],w=e[6],C=e[7],r=e[8],S=e[9],g=e[10],b=e[11],f=e[12],y=e[13],N=e[14],x=e[15];let P;e[20]!==s||e[21]!==m||e[22]!==d||e[23]!==r?(P=u.jsxs(s,{className:m,children:[d,r]}),e[20]=s,e[21]=m,e[22]=d,e[23]=r,e[24]=P):P=e[24];let T;e[25]!==c||e[26]!==P||e[27]!==S||e[28]!==g||e[29]!==b||e[30]!==f?(T=u.jsxs(c,{label:S,loop:g,children:[b,f,P]}),e[25]=c,e[26]=P,e[27]=S,e[28]=g,e[29]=b,e[30]=f,e[31]=T):T=e[31];let O;return e[32]!==l||e[33]!==w||e[34]!==C||e[35]!==T||e[36]!==y||e[37]!==N||e[38]!==x?(O=u.jsx(l,{open:y,onOpenChange:N,title:x,description:w,className:C,children:T}),e[32]=l,e[33]=w,e[34]=C,e[35]=T,e[36]=y,e[37]=N,e[38]=x,e[39]=O):O=e[39],O}function ot(t){return a(t.id,t.label,t.keywords,t.icon,t.onSelect)}async function se(t,e){const s=await Ie(t,{signal:e});if(!s.ok)throw new Error(`Request failed (${s.status})`);const c=await s.json();return Array.isArray(c)?c:[]}function dt(t){var J;const e=ie.c(51);let s,c,l,m,d,w;e[0]!==t?({open:l,currentProjectDirName:s,projectCwd:d,onProcessStarted:c,launchTerminalRequest:w,...m}=t,e[0]=t,e[1]=s,e[2]=c,e[3]=l,e[4]=m,e[5]=d,e[6]=w):(s=e[1],c=e[2],l=e[3],m=e[4],d=e[5],w=e[6]);const C=w===void 0?0:w,r=be();let S;e[7]===Symbol.for("react.memo_cache_sentinel")?(S=[],e[7]=S):S=e[7];const[g,b]=M.useState(S);let f;e[8]===Symbol.for("react.memo_cache_sentinel")?(f=[],e[8]=f):f=e[8];const[y,N]=M.useState(f),[x,P]=M.useState(!1),T=M.useRef(0),O=ye();let $,F;e[9]!==O||e[10]!==l?($=()=>{if(!l)return;const j=new AbortController,B=Te();return P(!0),Promise.allSettled([se("/api/projects",j.signal),se(Oe({limit:"12",perProject:"3"},O),j.signal)]).then(me=>{const[X,Q]=me;if(j.signal.aborted)return;const Y=Q.status==="fulfilled"?Q.value:[];ke(Y,B),b(X.status==="fulfilled"?X.value:[]),N(Y),P(!1)}),()=>j.abort()},F=[l,O],e[9]=O,e[10]=l,e[11]=$,e[12]=F):($=e[11],F=e[12]),M.useEffect($,F);let E;e[13]!==g?(E=xe(g),e[13]=g,e[14]=E):E=e[14];const A=E;let I;e:{if(d){I=d;break e}if(!s){I=null;break e}let j;e[15]!==s||e[16]!==g?(j=((J=g.find(B=>B.dirName===s))==null?void 0:J.path)??null,e[15]=s,e[16]=g,e[17]=j):j=e[17],I=j}const o=I;let R;e[18]!==c||e[19]!==r||e[20]!==o?(R=()=>{if(!o)return;const j=r.spawnTerminal({cwd:o}),B=o.replace(/\/+$/,"").split("/").at(-1)||"Terminal";c({id:j,name:B,type:"terminal",status:"running",source:o})},e[18]=c,e[19]=r,e[20]=o,e[21]=R):R=e[21];const k=R;let D,n;e[22]!==k||e[23]!==C||e[24]!==r.status||e[25]!==o?(n=()=>{C<=T.current||!o||r.status!=="connected"||(T.current=C,k())},D=[k,C,r.status,o],e[22]=k,e[23]=C,e[24]=r.status,e[25]=o,e[26]=D,e[27]=n):(D=e[26],n=e[27]),M.useEffect(n,D);let i;e[28]!==s||e[29]!==o?(i={path:o,dirName:s},e[28]=s,e[29]=o,e[30]=i):i=e[30];const v=i;let L;e[31]!==v?(L=()=>Ne(v),e[31]=v,e[32]=L):L=e[32];const q=L;let G;e[33]!==v?(G=()=>Fe(v),e[33]=v,e[34]=G):G=e[34];const le=G,ce=!ee()&&_("hostFiles"),re=_("hostFiles")&&(!ee()||Pe());let K;e[35]!==o?(K=()=>{o&&Ee(o)},e[35]=o,e[36]=K):K=e[36];const de=K;let H;e[37]!==k||e[38]!==r.status||e[39]!==o?(H=o&&r.status==="connected"&&_("terminal")?k:void 0,e[37]=k,e[38]=r.status,e[39]=o,e[40]=H):H=e[40];const U=o&&re?q:void 0,W=o&&ce?le:void 0,p=o?de:void 0;let z;return e[41]!==x||e[42]!==l||e[43]!==m||e[44]!==y||e[45]!==A||e[46]!==H||e[47]!==U||e[48]!==W||e[49]!==p?(z=u.jsx(at,{...m,open:l,projects:A,recentSessions:y,loadingNavigation:x,onOpenIntegratedTerminal:H,onOpenProjectInEditor:U,onRevealProject:W,onCopyProjectPath:p}),e[41]=x,e[42]=l,e[43]=m,e[44]=y,e[45]=A,e[46]=H,e[47]=U,e[48]=W,e[49]=p,e[50]=z):z=e[50],z}export{dt as CommandPaletteHost};
|