@symerian/symi 3.1.0 → 3.1.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/build-info.json +3 -3
- package/dist/bundled/boot-md/handler.js +4 -4
- package/dist/bundled/session-memory/handler.js +4 -4
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{chrome-O5GtGEaR.js → chrome-CCtr79A5.js} +4 -4
- package/dist/{chrome-B7_foWil.js → chrome-CLdjGAF1.js} +4 -4
- package/dist/{command-registry-DmjX-MJb.js → command-registry-DtivbkBg.js} +4 -4
- package/dist/{completion-cli-CKczmer5.js → completion-cli-DAtKJGz_.js} +1 -1
- package/dist/{completion-cli-DezSeZQA.js → completion-cli-M9mpw_DS.js} +2 -2
- package/dist/control-ui/js/app.js +34 -2
- package/dist/{deliver-BMg6XjUA.js → deliver-D0zCpBS2.js} +4 -4
- package/dist/{deliver-Cxzii_el.js → deliver-aqjVfua8.js} +4 -4
- package/dist/{doctor-completion-AGw1egU_.js → doctor-completion-BlxU7_DJ.js} +1 -1
- package/dist/{doctor-completion-BCVASe0n.js → doctor-completion-DLx2ecZ2.js} +1 -1
- package/dist/entry.js +1 -1
- package/dist/extensionAPI.js +4 -4
- package/dist/{gateway-cli-CvFiUm5D.js → gateway-cli-BDVuQ5k9.js} +6 -354
- package/dist/{gateway-cli-BZXfKM1n.js → gateway-cli-CjY_Ct2M.js} +6 -354
- package/dist/{glass-ui-ws-CHyGj7GA.js → glass-ui-ws-Bs0VbFCC.js} +1 -1
- package/dist/{glass-ui-ws-BSTHY5PU.js → glass-ui-ws-CLyPSA_9.js} +1 -1
- package/dist/index.js +1 -1
- package/dist/llm-slug-generator.js +4 -4
- package/dist/{manager-BWi2hK4Y.js → manager-3gF-gaOU.js} +1 -1
- package/dist/{manager-BoTf2TBM.js → manager-Do_LVG9R.js} +1 -1
- package/dist/{onboard-BzRDv60Y.js → onboard-lFeJdiGp.js} +1 -1
- package/dist/{onboard-CHrTg-R0.js → onboard-zwQ2t4TE.js} +1 -1
- package/dist/{onboarding-ClbxBHpB.js → onboarding-C0kL3Y5v.js} +1 -1
- package/dist/{onboarding-BGwkx8NB.js → onboarding-CaHVfCVn.js} +1 -1
- package/dist/{onboarding.finalize-D6zND3C7.js → onboarding.finalize-DwXxdw74.js} +3 -3
- package/dist/{onboarding.finalize-BnIBZwze.js → onboarding.finalize-vT6fRWsB.js} +4 -4
- package/dist/{pi-embedded-L-sMlPsa.js → pi-embedded-JU-n_Ppj.js} +10 -10
- package/dist/plugin-sdk/gateway/server-chat.d.ts +47 -0
- package/dist/{program-B8S2KFzC.js → program-C1bTgU2q.js} +2 -2
- package/dist/{program-context-DCb3cVEC.js → program-context-BHvgRRy_.js} +6 -6
- package/dist/{prompt-select-styled-BJ3NsTmX.js → prompt-select-styled--PI8fuuB.js} +1 -1
- package/dist/{prompt-select-styled-ZdXAuRQQ.js → prompt-select-styled-DawD9uin.js} +1 -1
- package/dist/{pw-ai-B9riepO_.js → pw-ai-BlFwd1fC.js} +1 -1
- package/dist/{pw-ai-CYE0188Y.js → pw-ai-Cq1WlDax.js} +1 -1
- package/dist/{register.maintenance-CX4sIokB.js → register.maintenance-D0NfR0wv.js} +5 -5
- package/dist/{register.maintenance-BBxWlFhs.js → register.maintenance-fFzETZM-.js} +4 -4
- package/dist/{register.onboard-UzFm__iV.js → register.onboard-C0eFmAVL.js} +2 -2
- package/dist/{register.onboard-Be8PMN1Z.js → register.onboard-C7aJLoQc.js} +2 -2
- package/dist/{register.setup-w0_6rARS.js → register.setup-CRhnePOD.js} +2 -2
- package/dist/{register.setup-Dq7WlLOL.js → register.setup-XpvVOl8-.js} +2 -2
- package/dist/{register.subclis-Cb1ErrVQ.js → register.subclis-BFq9K0q9.js} +3 -3
- package/dist/{run-main-DmC4wWlp.js → run-main-JPtR4nYb.js} +3 -3
- package/dist/{server-methods-C97G9dYe.js → server-methods-Dj3PCErz.js} +360 -4
- package/dist/{server-methods-DFt60s1H.js → server-methods-RegE5bVx.js} +360 -4
- package/dist/{synthesis-DA7kfAUJ.js → synthesis-CNYpM3bL.js} +4 -4
- package/dist/{synthesis-CPZoVKlB.js → synthesis-CP97tsyU.js} +4 -4
- package/dist/{unified-runner-BdN9pHa8.js → unified-runner-Bjd_KpAr.js} +10 -10
- package/dist/{update-cli-Bg3c9ORr.js → update-cli-DPsa1UFx.js} +5 -5
- package/dist/{update-cli-DZtbV25O.js → update-cli-bgziGI6r.js} +4 -4
- package/package.json +1 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { g as resolveStateDir, t as CONFIG_PATH } from "./paths-Cqn-zk3M.js";
|
|
2
2
|
import { g as resolveUserPath, r as clamp, w as isPlainObject, z as getResolvedLoggerSettings } from "./utils-BwhNP0do.js";
|
|
3
|
-
import {
|
|
3
|
+
import { i as isSilentReplyText, n as SILENT_REPLY_TOKEN } from "./tokens-C8-rnk4H.js";
|
|
4
|
+
import { $ as normalizeCronJobCreate, $n as resolveTtsProviderOrder, A as loadSessionEntry, An as clearSessionQueues, Bt as resolveSendPolicy, C as listTasksInWorkdir, Cn as listSubagentRunsForRequester, D as listAgentsForGateway, Dr as DEFAULT_HEARTBEAT_ACK_MAX_CHARS, Dt as loadProviderUsageSummary, F as ensureOutboundSessionEntry, Hn as resolveUserTimezone, I as resolveOutboundSessionRoute, Jn as isTtsProviderConfigured, Jt as parseVerboseOverride, K as formatDoctorNonInteractiveHint, Kn as getTtsProvider, Kt as applyModelOverrideToSessionEntry, M as resolveGatewaySessionStoreTarget, Mn as abortEmbeddedPiRun, N as resolveSessionModelRef, O as listSessionsFromStore, Pn as waitForEmbeddedPiRunEnd, Qn as resolveTtsPrefsPath, Sn as listDescendantRunsForRequester, T as canonicalizeSpawnedByForAgent, Tn as resolveAgentTimeoutMs, V as normalizePollInput, Xn as resolveTtsAutoMode, Yn as resolveTtsApiKey, Z as writeRestartSentinel, Zn as resolveTtsConfig, _n as isAbortTrigger, _r as getAgentRunContext, _t as applyBrowserProxyPaths, an as prepareAgentRun, b as buildAgentTurnParams, bn as countActiveRunsForSession, br as classifyOutboundMessage, er as setTtsEnabled, et as normalizeCronJobPatch, f as getChannelActivity, g as buildGlassUiProfile, gn as formatZonedTimestamp, ir as OPENAI_TTS_VOICES, j as pruneLegacyStoreKeys, k as loadCombinedSessionStoreForGateway, m as createReplyDispatcher, mn as normalizeGroupActivation, nr as textToSpeech, on as enqueueSystemEvent, pn as BARE_SESSION_RESET_PROMPT, qn as isTtsEnabled, qt as applyVerboseOverride, rr as OPENAI_TTS_MODELS, s as loadSymiPlugins, sn as isSystemEventContextChanged, tr as setTtsProvider, vn as stopSubagentsForRequester, vr as onAgentEvent, vt as persistBrowserProxyFiles, wt as scheduleGatewaySigusr1Restart, x as prepareReplyTurn, y as runUnifiedTurn, yr as registerAgentRunContext, z as resolveOutboundTarget, zt as normalizeSendPolicy } from "./unified-runner-BX17do1W.js";
|
|
4
5
|
import { C as triggerInternalHook, d as getActivePluginRegistry, r as DEFAULT_CHAT_CHANNEL, t as CHANNEL_IDS, x as createInternalHookEvent } from "./registry-DVCe2mTM.js";
|
|
5
6
|
import { f as defaultRuntime, t as createSubsystemLogger } from "./subsystem-C22TrusW.js";
|
|
6
7
|
import { Et as normalizeSecretInput, G as resolveSubagentConfiguredModelSelection, H as resolveDefaultModelForAgent, q as resolveThinkingDefault, z as resolveAllowedModelRef } from "./auth-profiles-BDYmaplg.js";
|
|
@@ -16,7 +17,7 @@ import { f as GATEWAY_CLIENT_CAPS, g as hasGatewayClientCap, i as isGatewayMessa
|
|
|
16
17
|
import { n as listChannelPlugins, r as normalizeChannelId, t as getChannelPlugin } from "./plugins-CVy7TEFI.js";
|
|
17
18
|
import { c as resolveStorePath, n as resolveSessionFilePath, r as resolveSessionFilePathOptions, s as resolveSessionTranscriptsDirForAgent } from "./paths-CdGa1jlU.js";
|
|
18
19
|
import { i as normalizeInputProvenance } from "./input-provenance-iBlnbS1d.js";
|
|
19
|
-
import { a as normalizeElevatedLevel, c as normalizeUsageDisplay, d as supportsXHighThinking, n as formatXHighModelHint, o as normalizeReasoningLevel, s as normalizeThinkLevel, t as formatThinkingLevels } from "./thinking-BTh3b5vY.js";
|
|
20
|
+
import { a as normalizeElevatedLevel, c as normalizeUsageDisplay, d as supportsXHighThinking, l as normalizeVerboseLevel, n as formatXHighModelHint, o as normalizeReasoningLevel, s as normalizeThinkLevel, t as formatThinkingLevels } from "./thinking-BTh3b5vY.js";
|
|
20
21
|
import { h as getGlobalHookRunner, o as normalizeReplyPayloadsForDelivery, t as deliverOutboundPayloads } from "./deliver-CCNTT73z.js";
|
|
21
22
|
import { i as loadSessionUsageTimeSeries, n as loadCostUsageSummary, r as loadSessionCostSummary, t as discoverAllSessions } from "./session-cost-usage-Dsr-Ma1K.js";
|
|
22
23
|
import { n as createBrowserRouteDispatcher } from "./with-timeout-D1RTXHZO.js";
|
|
@@ -39,7 +40,7 @@ import { t as buildChannelAccountSnapshot } from "./status-DSFXGZ2N.js";
|
|
|
39
40
|
import { w as resolveAssistantAvatarUrl } from "./onboard-helpers-ClA4h5_K.js";
|
|
40
41
|
import { o as isNodeCommandAllowed, s as resolveNodeCommandAllowlist } from "./audit-CCWHhR0Z.js";
|
|
41
42
|
import { n as getStatusSummary } from "./status-VrUpaIhD.js";
|
|
42
|
-
import { f as abortHeartbeatRunForSession, s as setHeartbeatsEnabled, u as getLastHeartbeatEvent } from "./health-OGl_XbRn.js";
|
|
43
|
+
import { f as abortHeartbeatRunForSession, l as resolveHeartbeatVisibility, s as setHeartbeatsEnabled, u as getLastHeartbeatEvent } from "./health-OGl_XbRn.js";
|
|
43
44
|
import { m as normalizeUpdateChannel } from "./update-check-g7MoURZH.js";
|
|
44
45
|
import { a as sendApnsAlert, c as parseMessageWithAttachments, i as resolveApnsAuthConfigFromEnv, l as formatForLog, n as normalizeApnsEnvironment, o as sendApnsBackgroundWake, s as normalizeRpcAttachmentsToChatAttachments, t as loadApnsRegistration } from "./push-apns-DlP4T9Pl.js";
|
|
45
46
|
import { i as resolveAgentOutboundTarget, r as resolveAgentDeliveryPlan, t as agentCommand } from "./agent-DKz-M9N_.js";
|
|
@@ -405,6 +406,355 @@ function startGatewayConfigReloader(opts) {
|
|
|
405
406
|
} };
|
|
406
407
|
}
|
|
407
408
|
|
|
409
|
+
//#endregion
|
|
410
|
+
//#region src/gateway/server-chat.ts
|
|
411
|
+
function resolveHeartbeatAckMaxChars() {
|
|
412
|
+
try {
|
|
413
|
+
const cfg = loadConfig();
|
|
414
|
+
return Math.max(0, cfg.agents?.defaults?.heartbeat?.ackMaxChars ?? DEFAULT_HEARTBEAT_ACK_MAX_CHARS);
|
|
415
|
+
} catch {
|
|
416
|
+
return DEFAULT_HEARTBEAT_ACK_MAX_CHARS;
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
function resolveHeartbeatContext(runId, sourceRunId) {
|
|
420
|
+
const primary = getAgentRunContext(runId);
|
|
421
|
+
if (primary?.isHeartbeat) return primary;
|
|
422
|
+
if (sourceRunId && sourceRunId !== runId) {
|
|
423
|
+
const source = getAgentRunContext(sourceRunId);
|
|
424
|
+
if (source?.isHeartbeat) return source;
|
|
425
|
+
}
|
|
426
|
+
return primary;
|
|
427
|
+
}
|
|
428
|
+
/**
|
|
429
|
+
* Check if heartbeat ACK/noise should be hidden from interactive chat surfaces.
|
|
430
|
+
*/
|
|
431
|
+
function shouldHideHeartbeatChatOutput(runId, sourceRunId) {
|
|
432
|
+
if (!resolveHeartbeatContext(runId, sourceRunId)?.isHeartbeat) return false;
|
|
433
|
+
try {
|
|
434
|
+
return !resolveHeartbeatVisibility({
|
|
435
|
+
cfg: loadConfig(),
|
|
436
|
+
channel: "webchat"
|
|
437
|
+
}).showOk;
|
|
438
|
+
} catch {
|
|
439
|
+
return true;
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
function createChatRunRegistry() {
|
|
443
|
+
const chatRunSessions = /* @__PURE__ */ new Map();
|
|
444
|
+
const add = (sessionId, entry) => {
|
|
445
|
+
const queue = chatRunSessions.get(sessionId);
|
|
446
|
+
if (queue) queue.push(entry);
|
|
447
|
+
else chatRunSessions.set(sessionId, [entry]);
|
|
448
|
+
};
|
|
449
|
+
const peek = (sessionId) => chatRunSessions.get(sessionId)?.[0];
|
|
450
|
+
const shift = (sessionId) => {
|
|
451
|
+
const queue = chatRunSessions.get(sessionId);
|
|
452
|
+
if (!queue || queue.length === 0) return;
|
|
453
|
+
const entry = queue.shift();
|
|
454
|
+
if (!queue.length) chatRunSessions.delete(sessionId);
|
|
455
|
+
return entry;
|
|
456
|
+
};
|
|
457
|
+
const remove = (sessionId, clientRunId, sessionKey) => {
|
|
458
|
+
const queue = chatRunSessions.get(sessionId);
|
|
459
|
+
if (!queue || queue.length === 0) return;
|
|
460
|
+
const idx = queue.findIndex((entry) => entry.clientRunId === clientRunId && (sessionKey ? entry.sessionKey === sessionKey : true));
|
|
461
|
+
if (idx < 0) return;
|
|
462
|
+
const [entry] = queue.splice(idx, 1);
|
|
463
|
+
if (!queue.length) chatRunSessions.delete(sessionId);
|
|
464
|
+
return entry;
|
|
465
|
+
};
|
|
466
|
+
const clear = () => {
|
|
467
|
+
chatRunSessions.clear();
|
|
468
|
+
};
|
|
469
|
+
return {
|
|
470
|
+
add,
|
|
471
|
+
peek,
|
|
472
|
+
shift,
|
|
473
|
+
remove,
|
|
474
|
+
clear
|
|
475
|
+
};
|
|
476
|
+
}
|
|
477
|
+
function createChatRunState() {
|
|
478
|
+
const registry = createChatRunRegistry();
|
|
479
|
+
const buffers = /* @__PURE__ */ new Map();
|
|
480
|
+
const deltaSentAt = /* @__PURE__ */ new Map();
|
|
481
|
+
const pendingDeltaText = /* @__PURE__ */ new Map();
|
|
482
|
+
const abortedRuns = /* @__PURE__ */ new Map();
|
|
483
|
+
const clear = () => {
|
|
484
|
+
registry.clear();
|
|
485
|
+
buffers.clear();
|
|
486
|
+
deltaSentAt.clear();
|
|
487
|
+
pendingDeltaText.clear();
|
|
488
|
+
abortedRuns.clear();
|
|
489
|
+
};
|
|
490
|
+
return {
|
|
491
|
+
registry,
|
|
492
|
+
buffers,
|
|
493
|
+
deltaSentAt,
|
|
494
|
+
pendingDeltaText,
|
|
495
|
+
abortedRuns,
|
|
496
|
+
clear
|
|
497
|
+
};
|
|
498
|
+
}
|
|
499
|
+
const TOOL_EVENT_RECIPIENT_TTL_MS = 600 * 1e3;
|
|
500
|
+
const TOOL_EVENT_RECIPIENT_FINAL_GRACE_MS = 30 * 1e3;
|
|
501
|
+
function createToolEventRecipientRegistry() {
|
|
502
|
+
const recipients = /* @__PURE__ */ new Map();
|
|
503
|
+
const prune = () => {
|
|
504
|
+
if (recipients.size === 0) return;
|
|
505
|
+
const now = Date.now();
|
|
506
|
+
for (const [runId, entry] of recipients) if (now >= (entry.finalizedAt ? entry.finalizedAt + TOOL_EVENT_RECIPIENT_FINAL_GRACE_MS : entry.updatedAt + TOOL_EVENT_RECIPIENT_TTL_MS)) recipients.delete(runId);
|
|
507
|
+
};
|
|
508
|
+
const add = (runId, connId) => {
|
|
509
|
+
if (!runId || !connId) return;
|
|
510
|
+
const now = Date.now();
|
|
511
|
+
const existing = recipients.get(runId);
|
|
512
|
+
if (existing) {
|
|
513
|
+
existing.connIds.add(connId);
|
|
514
|
+
existing.updatedAt = now;
|
|
515
|
+
} else recipients.set(runId, {
|
|
516
|
+
connIds: new Set([connId]),
|
|
517
|
+
updatedAt: now
|
|
518
|
+
});
|
|
519
|
+
prune();
|
|
520
|
+
};
|
|
521
|
+
const get = (runId) => {
|
|
522
|
+
const entry = recipients.get(runId);
|
|
523
|
+
if (!entry) return;
|
|
524
|
+
entry.updatedAt = Date.now();
|
|
525
|
+
prune();
|
|
526
|
+
return entry.connIds;
|
|
527
|
+
};
|
|
528
|
+
const markFinal = (runId) => {
|
|
529
|
+
const entry = recipients.get(runId);
|
|
530
|
+
if (!entry) return;
|
|
531
|
+
entry.finalizedAt = Date.now();
|
|
532
|
+
prune();
|
|
533
|
+
};
|
|
534
|
+
return {
|
|
535
|
+
add,
|
|
536
|
+
get,
|
|
537
|
+
markFinal
|
|
538
|
+
};
|
|
539
|
+
}
|
|
540
|
+
function createAgentEventHandler({ broadcast, broadcastToConnIds, nodeSendToSession, agentRunSeq, chatRunState, resolveSessionKeyForRun, clearAgentRunContext, toolEventRecipients }) {
|
|
541
|
+
const emitChatDelta = (sessionKey, clientRunId, sourceRunId, seq, text) => {
|
|
542
|
+
if (isSilentReplyText(text, SILENT_REPLY_TOKEN)) return;
|
|
543
|
+
const prev = chatRunState.buffers.get(clientRunId) ?? "";
|
|
544
|
+
chatRunState.buffers.set(clientRunId, prev + text);
|
|
545
|
+
if (shouldHideHeartbeatChatOutput(clientRunId, sourceRunId)) return;
|
|
546
|
+
const now = Date.now();
|
|
547
|
+
if (now - (chatRunState.deltaSentAt.get(clientRunId) ?? 0) < 150) {
|
|
548
|
+
chatRunState.pendingDeltaText.set(clientRunId, (chatRunState.pendingDeltaText.get(clientRunId) ?? "") + text);
|
|
549
|
+
return;
|
|
550
|
+
}
|
|
551
|
+
const buffered = chatRunState.pendingDeltaText.get(clientRunId) ?? "";
|
|
552
|
+
chatRunState.pendingDeltaText.delete(clientRunId);
|
|
553
|
+
const fullText = buffered + text;
|
|
554
|
+
chatRunState.deltaSentAt.set(clientRunId, now);
|
|
555
|
+
const payload = {
|
|
556
|
+
runId: clientRunId,
|
|
557
|
+
sessionKey,
|
|
558
|
+
seq,
|
|
559
|
+
state: "delta",
|
|
560
|
+
...resolveHeartbeatContext(clientRunId, sourceRunId)?.isHeartbeat ? { isHeartbeat: true } : {},
|
|
561
|
+
message: {
|
|
562
|
+
role: "assistant",
|
|
563
|
+
content: [{
|
|
564
|
+
type: "text",
|
|
565
|
+
text: fullText
|
|
566
|
+
}],
|
|
567
|
+
timestamp: now
|
|
568
|
+
}
|
|
569
|
+
};
|
|
570
|
+
broadcast("chat", payload, { dropIfSlow: true });
|
|
571
|
+
nodeSendToSession(sessionKey, "chat", payload);
|
|
572
|
+
};
|
|
573
|
+
const emitChatFinal = (sessionKey, clientRunId, sourceRunId, seq, jobState, error) => {
|
|
574
|
+
const remainingDelta = chatRunState.pendingDeltaText.get(clientRunId);
|
|
575
|
+
if (remainingDelta && !shouldHideHeartbeatChatOutput(clientRunId, sourceRunId)) {
|
|
576
|
+
const flushPayload = {
|
|
577
|
+
runId: clientRunId,
|
|
578
|
+
sessionKey,
|
|
579
|
+
seq,
|
|
580
|
+
state: "delta",
|
|
581
|
+
...resolveHeartbeatContext(clientRunId, sourceRunId)?.isHeartbeat ? { isHeartbeat: true } : {},
|
|
582
|
+
message: {
|
|
583
|
+
role: "assistant",
|
|
584
|
+
content: [{
|
|
585
|
+
type: "text",
|
|
586
|
+
text: remainingDelta
|
|
587
|
+
}],
|
|
588
|
+
timestamp: Date.now()
|
|
589
|
+
}
|
|
590
|
+
};
|
|
591
|
+
broadcast("chat", flushPayload);
|
|
592
|
+
nodeSendToSession(sessionKey, "chat", flushPayload);
|
|
593
|
+
}
|
|
594
|
+
chatRunState.pendingDeltaText.delete(clientRunId);
|
|
595
|
+
const bufferedText = chatRunState.buffers.get(clientRunId)?.trim() ?? "";
|
|
596
|
+
const heartbeatCtx = resolveHeartbeatContext(clientRunId, sourceRunId);
|
|
597
|
+
const isHeartbeatRun = !!heartbeatCtx?.isHeartbeat;
|
|
598
|
+
const heartbeatHidden = isHeartbeatRun && shouldHideHeartbeatChatOutput(clientRunId, sourceRunId);
|
|
599
|
+
const filterResult = isHeartbeatRun && !heartbeatHidden ? {
|
|
600
|
+
action: "deliver",
|
|
601
|
+
output: bufferedText,
|
|
602
|
+
reason: "deliver"
|
|
603
|
+
} : classifyOutboundMessage(bufferedText, {
|
|
604
|
+
isHeartbeat: heartbeatHidden,
|
|
605
|
+
heartbeatAckMaxChars: resolveHeartbeatAckMaxChars()
|
|
606
|
+
});
|
|
607
|
+
const text = filterResult.output.trim();
|
|
608
|
+
const shouldSuppressSilent = filterResult.action === "drop";
|
|
609
|
+
chatRunState.buffers.delete(clientRunId);
|
|
610
|
+
chatRunState.deltaSentAt.delete(clientRunId);
|
|
611
|
+
if (jobState === "done") {
|
|
612
|
+
const payload = {
|
|
613
|
+
runId: clientRunId,
|
|
614
|
+
sessionKey,
|
|
615
|
+
seq,
|
|
616
|
+
state: "final",
|
|
617
|
+
activeSubagentCount: countActiveRunsForSession(sessionKey),
|
|
618
|
+
...heartbeatCtx?.isHeartbeat ? { isHeartbeat: true } : {},
|
|
619
|
+
message: text && !shouldSuppressSilent ? {
|
|
620
|
+
role: "assistant",
|
|
621
|
+
content: [{
|
|
622
|
+
type: "text",
|
|
623
|
+
text
|
|
624
|
+
}],
|
|
625
|
+
timestamp: Date.now()
|
|
626
|
+
} : void 0
|
|
627
|
+
};
|
|
628
|
+
broadcast("chat", payload);
|
|
629
|
+
nodeSendToSession(sessionKey, "chat", payload);
|
|
630
|
+
return;
|
|
631
|
+
}
|
|
632
|
+
const payload = {
|
|
633
|
+
runId: clientRunId,
|
|
634
|
+
sessionKey,
|
|
635
|
+
seq,
|
|
636
|
+
state: "error",
|
|
637
|
+
errorMessage: error ? formatForLog(error) : void 0,
|
|
638
|
+
...heartbeatCtx?.isHeartbeat ? { isHeartbeat: true } : {}
|
|
639
|
+
};
|
|
640
|
+
broadcast("chat", payload);
|
|
641
|
+
nodeSendToSession(sessionKey, "chat", payload);
|
|
642
|
+
};
|
|
643
|
+
const resolveToolVerboseLevel = (runId, sessionKey) => {
|
|
644
|
+
const runVerbose = normalizeVerboseLevel(getAgentRunContext(runId)?.verboseLevel);
|
|
645
|
+
if (runVerbose) return runVerbose;
|
|
646
|
+
if (!sessionKey) return "off";
|
|
647
|
+
try {
|
|
648
|
+
const { cfg, entry } = loadSessionEntry(sessionKey);
|
|
649
|
+
const sessionVerbose = normalizeVerboseLevel(entry?.verboseLevel);
|
|
650
|
+
if (sessionVerbose) return sessionVerbose;
|
|
651
|
+
return normalizeVerboseLevel(cfg.agents?.defaults?.verboseDefault) ?? "off";
|
|
652
|
+
} catch {
|
|
653
|
+
return "off";
|
|
654
|
+
}
|
|
655
|
+
};
|
|
656
|
+
return (evt) => {
|
|
657
|
+
const chatLink = chatRunState.registry.peek(evt.runId);
|
|
658
|
+
const eventSessionKey = typeof evt.sessionKey === "string" && evt.sessionKey.trim() ? evt.sessionKey : void 0;
|
|
659
|
+
const sessionKey = chatLink?.sessionKey ?? eventSessionKey ?? resolveSessionKeyForRun(evt.runId);
|
|
660
|
+
if (sessionKey?.startsWith("temp:")) return;
|
|
661
|
+
const clientRunId = chatLink?.clientRunId ?? evt.runId;
|
|
662
|
+
const eventRunId = chatLink?.clientRunId ?? evt.runId;
|
|
663
|
+
const eventForClients = chatLink ? {
|
|
664
|
+
...evt,
|
|
665
|
+
runId: eventRunId
|
|
666
|
+
} : evt;
|
|
667
|
+
const isAborted = chatRunState.abortedRuns.has(clientRunId) || chatRunState.abortedRuns.has(evt.runId);
|
|
668
|
+
const heartbeatAgentCtx = resolveHeartbeatContext(clientRunId, evt.runId);
|
|
669
|
+
const agentPayload = {
|
|
670
|
+
...eventForClients,
|
|
671
|
+
...sessionKey ? { sessionKey } : {},
|
|
672
|
+
...heartbeatAgentCtx?.isHeartbeat ? { isHeartbeat: true } : {}
|
|
673
|
+
};
|
|
674
|
+
const last = agentRunSeq.get(evt.runId) ?? 0;
|
|
675
|
+
const isToolEvent = evt.stream === "tool";
|
|
676
|
+
const toolVerbose = isToolEvent ? resolveToolVerboseLevel(evt.runId, sessionKey) : "off";
|
|
677
|
+
const toolPayload = isToolEvent && toolVerbose !== "full" ? (() => {
|
|
678
|
+
const data = evt.data ? { ...evt.data } : {};
|
|
679
|
+
delete data.result;
|
|
680
|
+
delete data.partialResult;
|
|
681
|
+
return sessionKey ? {
|
|
682
|
+
...eventForClients,
|
|
683
|
+
sessionKey,
|
|
684
|
+
data
|
|
685
|
+
} : {
|
|
686
|
+
...eventForClients,
|
|
687
|
+
data
|
|
688
|
+
};
|
|
689
|
+
})() : agentPayload;
|
|
690
|
+
if (evt.seq !== last + 1) broadcast("agent", {
|
|
691
|
+
runId: eventRunId,
|
|
692
|
+
stream: "error",
|
|
693
|
+
ts: Date.now(),
|
|
694
|
+
sessionKey,
|
|
695
|
+
...heartbeatAgentCtx?.isHeartbeat ? { isHeartbeat: true } : {},
|
|
696
|
+
data: {
|
|
697
|
+
reason: "seq gap",
|
|
698
|
+
expected: last + 1,
|
|
699
|
+
received: evt.seq
|
|
700
|
+
}
|
|
701
|
+
});
|
|
702
|
+
agentRunSeq.set(evt.runId, evt.seq);
|
|
703
|
+
if (isToolEvent) {
|
|
704
|
+
const recipients = toolEventRecipients.get(evt.runId);
|
|
705
|
+
if (recipients && recipients.size > 0) broadcastToConnIds("agent", toolPayload, recipients);
|
|
706
|
+
} else broadcast("agent", agentPayload);
|
|
707
|
+
const lifecyclePhase = evt.stream === "lifecycle" && typeof evt.data?.phase === "string" ? evt.data.phase : null;
|
|
708
|
+
if (lifecyclePhase === "start" && sessionKey && !isAborted) {
|
|
709
|
+
if (!resolveHeartbeatContext(clientRunId, evt.runId)?.isHeartbeat) broadcast("chat", {
|
|
710
|
+
runId: clientRunId,
|
|
711
|
+
sessionKey,
|
|
712
|
+
seq: evt.seq,
|
|
713
|
+
state: "thinking"
|
|
714
|
+
});
|
|
715
|
+
}
|
|
716
|
+
if (lifecyclePhase && sessionKey && sessionKey.includes(":subagent:")) {
|
|
717
|
+
if (lifecyclePhase === "start") broadcast("subagent", {
|
|
718
|
+
phase: "started",
|
|
719
|
+
sessionKey,
|
|
720
|
+
runId: clientRunId
|
|
721
|
+
});
|
|
722
|
+
else if (lifecyclePhase === "end" || lifecyclePhase === "error") broadcast("subagent", {
|
|
723
|
+
phase: "completed",
|
|
724
|
+
sessionKey,
|
|
725
|
+
runId: clientRunId
|
|
726
|
+
});
|
|
727
|
+
}
|
|
728
|
+
if (sessionKey) {
|
|
729
|
+
if (!isToolEvent || toolVerbose !== "off") nodeSendToSession(sessionKey, "agent", isToolEvent ? toolPayload : agentPayload);
|
|
730
|
+
if (!isAborted && evt.stream === "assistant" && typeof evt.data?.text === "string") {
|
|
731
|
+
const deltaText = typeof evt.data?.delta === "string" && evt.data.delta ? evt.data.delta : evt.data.text;
|
|
732
|
+
emitChatDelta(sessionKey, clientRunId, evt.runId, evt.seq, deltaText);
|
|
733
|
+
} else if (!isAborted && (lifecyclePhase === "end" || lifecyclePhase === "error")) if (chatLink) {
|
|
734
|
+
const finished = chatRunState.registry.shift(evt.runId);
|
|
735
|
+
if (!finished) {
|
|
736
|
+
clearAgentRunContext(evt.runId);
|
|
737
|
+
return;
|
|
738
|
+
}
|
|
739
|
+
emitChatFinal(finished.sessionKey, finished.clientRunId, evt.runId, evt.seq, lifecyclePhase === "error" ? "error" : "done", evt.data?.error);
|
|
740
|
+
} else emitChatFinal(sessionKey, eventRunId, evt.runId, evt.seq, lifecyclePhase === "error" ? "error" : "done", evt.data?.error);
|
|
741
|
+
else if (isAborted && (lifecyclePhase === "end" || lifecyclePhase === "error")) {
|
|
742
|
+
chatRunState.abortedRuns.delete(clientRunId);
|
|
743
|
+
chatRunState.abortedRuns.delete(evt.runId);
|
|
744
|
+
chatRunState.buffers.delete(clientRunId);
|
|
745
|
+
chatRunState.deltaSentAt.delete(clientRunId);
|
|
746
|
+
if (chatLink) chatRunState.registry.remove(evt.runId, clientRunId, sessionKey);
|
|
747
|
+
}
|
|
748
|
+
}
|
|
749
|
+
if (lifecyclePhase === "end" || lifecyclePhase === "error") {
|
|
750
|
+
toolEventRecipients.markFinal(evt.runId);
|
|
751
|
+
clearAgentRunContext(evt.runId);
|
|
752
|
+
agentRunSeq.delete(evt.runId);
|
|
753
|
+
agentRunSeq.delete(clientRunId);
|
|
754
|
+
}
|
|
755
|
+
};
|
|
756
|
+
}
|
|
757
|
+
|
|
408
758
|
//#endregion
|
|
409
759
|
//#region src/cron/run-log.ts
|
|
410
760
|
function resolveCronRunLogPath(params) {
|
|
@@ -498,12 +848,14 @@ function resolveChatRunExpiresAtMs(params) {
|
|
|
498
848
|
}
|
|
499
849
|
function broadcastChatAborted(ops, params) {
|
|
500
850
|
const { runId, sessionKey, stopReason, partialText } = params;
|
|
851
|
+
const heartbeatCtx = resolveHeartbeatContext(runId);
|
|
501
852
|
const payload = {
|
|
502
853
|
runId,
|
|
503
854
|
sessionKey,
|
|
504
855
|
seq: (ops.agentRunSeq.get(runId) ?? 0) + 1,
|
|
505
856
|
state: "aborted",
|
|
506
857
|
stopReason,
|
|
858
|
+
...heartbeatCtx?.isHeartbeat ? { isHeartbeat: true } : {},
|
|
507
859
|
message: partialText ? {
|
|
508
860
|
role: "assistant",
|
|
509
861
|
content: [{
|
|
@@ -4112,11 +4464,13 @@ function nextChatSeq(context, runId) {
|
|
|
4112
4464
|
}
|
|
4113
4465
|
function broadcastChatFinal(params) {
|
|
4114
4466
|
const seq = nextChatSeq({ agentRunSeq: params.context.agentRunSeq }, params.runId);
|
|
4467
|
+
const heartbeatCtx = resolveHeartbeatContext(params.runId);
|
|
4115
4468
|
const payload = {
|
|
4116
4469
|
runId: params.runId,
|
|
4117
4470
|
sessionKey: params.sessionKey,
|
|
4118
4471
|
seq,
|
|
4119
4472
|
state: "final",
|
|
4473
|
+
...heartbeatCtx?.isHeartbeat ? { isHeartbeat: true } : {},
|
|
4120
4474
|
message: params.message
|
|
4121
4475
|
};
|
|
4122
4476
|
params.context.broadcast("chat", payload);
|
|
@@ -4125,11 +4479,13 @@ function broadcastChatFinal(params) {
|
|
|
4125
4479
|
}
|
|
4126
4480
|
function broadcastChatError(params) {
|
|
4127
4481
|
const seq = nextChatSeq({ agentRunSeq: params.context.agentRunSeq }, params.runId);
|
|
4482
|
+
const heartbeatCtx = resolveHeartbeatContext(params.runId);
|
|
4128
4483
|
const payload = {
|
|
4129
4484
|
runId: params.runId,
|
|
4130
4485
|
sessionKey: params.sessionKey,
|
|
4131
4486
|
seq,
|
|
4132
4487
|
state: "error",
|
|
4488
|
+
...heartbeatCtx?.isHeartbeat ? { isHeartbeat: true } : {},
|
|
4133
4489
|
errorMessage: params.errorMessage
|
|
4134
4490
|
};
|
|
4135
4491
|
params.context.broadcast("chat", payload);
|
|
@@ -9603,4 +9959,4 @@ async function handleGatewayRequest(opts) {
|
|
|
9603
9959
|
}
|
|
9604
9960
|
|
|
9605
9961
|
//#endregion
|
|
9606
|
-
export {
|
|
9962
|
+
export { createAgentEventHandler as C, startGatewayConfigReloader as E, resolveCronRunLogPath as S, createToolEventRecipientRegistry as T, MAX_PAYLOAD_BYTES as _, loadFavoritesSet as a, abortChatRunById as b, resolveAssistantIdentity as c, formatError as d, loadVoiceWakeConfig as f, MAX_BUFFERED_BYTES as g, HEALTH_REFRESH_INTERVAL_MS as h, safeParseJson as i, listSystemPresence as l, DEDUPE_TTL_MS as m, handleGatewayRequest as n, reconcileFavorites as o, DEDUPE_MAX as p, broadcastPresenceSnapshot as r, DEFAULT_ASSISTANT_IDENTITY as s, coreGatewayHandlers as t, upsertPresence as u, TICK_INTERVAL_MS as v, createChatRunState as w, appendCronRunLog as x, getHandshakeTimeoutMs as y };
|
|
@@ -6,23 +6,23 @@ import "./model-selection-Db-B-8sm.js";
|
|
|
6
6
|
import "./reply-prefix-B6WGfnYO.js";
|
|
7
7
|
import "./github-copilot-token-BbsJ0Qbo.js";
|
|
8
8
|
import "./local-roots-DiVkgHyh.js";
|
|
9
|
-
import { n as runAgentTurn } from "./pi-embedded-
|
|
9
|
+
import { n as runAgentTurn } from "./pi-embedded-JU-n_Ppj.js";
|
|
10
10
|
import "./plugins-DeOy6s9S.js";
|
|
11
11
|
import "./replies-Cts6obnK.js";
|
|
12
|
-
import "./deliver-
|
|
12
|
+
import "./deliver-aqjVfua8.js";
|
|
13
13
|
import "./diagnostic-C7jt1JBa.js";
|
|
14
14
|
import "./diagnostic-session-state-CXCbqRxw.js";
|
|
15
15
|
import "./pi-model-discovery-nax5dXRY.js";
|
|
16
16
|
import "./chunk-BnsgQig0.js";
|
|
17
17
|
import "./ssrf-BgA_8lbe.js";
|
|
18
18
|
import "./manifest-registry-BR6dqMhM.js";
|
|
19
|
-
import "./chrome-
|
|
19
|
+
import "./chrome-CLdjGAF1.js";
|
|
20
20
|
import "./skills-WL4YwE78.js";
|
|
21
21
|
import "./redact-BwxC4l65.js";
|
|
22
22
|
import "./errors-DqtQ6JQT.js";
|
|
23
23
|
import "./thinking-Dr6k_PRi.js";
|
|
24
24
|
import "./paths-BsT3BvfH.js";
|
|
25
|
-
import "./manager-
|
|
25
|
+
import "./manager-3gF-gaOU.js";
|
|
26
26
|
import "./sqlite-DREkk00W.js";
|
|
27
27
|
import "./markdown-tables-CHPuKRmT.js";
|
|
28
28
|
import "./commands-registry-Js1bXBH7.js";
|
|
@@ -4,14 +4,14 @@ import "./agent-scope-fkprx0cO.js";
|
|
|
4
4
|
import { t as createSubsystemLogger } from "./subsystem-B0nl039t.js";
|
|
5
5
|
import "./workspace-C3O07_sB.js";
|
|
6
6
|
import "./tokens-Cf12qNDy.js";
|
|
7
|
-
import { t as runAgentTurn } from "./unified-runner-
|
|
7
|
+
import { t as runAgentTurn } from "./unified-runner-Bjd_KpAr.js";
|
|
8
8
|
import "./auth-profiles-CWc_Dn2r.js";
|
|
9
9
|
import "./github-copilot-token-BUd9oA8x.js";
|
|
10
10
|
import "./boolean-B8-BqKGQ.js";
|
|
11
|
-
import "./deliver-
|
|
11
|
+
import "./deliver-D0zCpBS2.js";
|
|
12
12
|
import "./ssrf-CY_-n5zv.js";
|
|
13
13
|
import "./manifest-registry-k-LNmNet.js";
|
|
14
|
-
import "./chrome-
|
|
14
|
+
import "./chrome-CCtr79A5.js";
|
|
15
15
|
import "./frontmatter-B5iYTsZP.js";
|
|
16
16
|
import "./skills-DRWbxzQd.js";
|
|
17
17
|
import "./redact-DPnDWsnT.js";
|
|
@@ -27,7 +27,7 @@ import "./diagnostic-session-state-BkfiP_y6.js";
|
|
|
27
27
|
import "./pi-auth-json-CgM-a3Wc.js";
|
|
28
28
|
import "./pi-model-discovery-BnZgJecJ.js";
|
|
29
29
|
import "./reply-prefix-D6FmBp9l.js";
|
|
30
|
-
import "./manager-
|
|
30
|
+
import "./manager-Do_LVG9R.js";
|
|
31
31
|
import "./sqlite-D9BEt91E.js";
|
|
32
32
|
import "./markdown-tables-DKggd2Pz.js";
|
|
33
33
|
import "./commands-registry-DKlZ_8Ms.js";
|
|
@@ -9,10 +9,10 @@ import { i as isSilentReplyText, n as SILENT_REPLY_TOKEN, r as SYMIPULSE_TOKEN,
|
|
|
9
9
|
import { $ as DEFAULT_MODEL, A as resolveThinkingDefault, B as requireApiKey, C as normalizeModelRef$1, D as resolveDefaultModelForAgent, E as resolveConfiguredModelRef, F as resolveImplicitProviders, G as normalizeSecretInput, H as resolveEnvApiKey, I as OLLAMA_NATIVE_BASE_URL, J as resolveShellEnvFallbackTimeoutMs, K as getShellPathFromLoginShell, L as createOllamaStreamFn, M as normalizeProviders, N as resolveImplicitBedrockProvider, O as resolveModelRefFromString, P as resolveImplicitCopilotProvider, Q as DEFAULT_CONTEXT_TOKENS, R as getApiKeyForModel, S as modelKey, U as resolveModelAuthMode, V as resolveApiKeyForProvider, Z as isTruthyEnvValue, _ as buildAllowedModelSet, a as markAuthProfileFailure, b as findNormalizedProviderValue, c as dedupeProfileIds, d as ensureAuthProfileStore, et as DEFAULT_PROVIDER, f as resolveAuthStorePathForDisplay, i as isProfileInCooldown, j as normalizeGoogleModelId, k as resolveSubagentSpawnModelSelection, l as listProfilesForProvider, m as withFileLock$1, n as resolveAuthProfileOrder, nt as resolveCliName, o as markAuthProfileUsed, p as resolveSymiAgentDir, r as getSoonestCooldownExpiry, rt as resolveAuthProfileDisplayLabel, s as resolveApiKeyForProfile, tt as formatCliCommand, u as markAuthProfileGood, v as buildConfiguredAllowlistKeys, w as normalizeProviderId, y as buildModelAliasIndex, z as getCustomProviderApiKey } from "./auth-profiles-CWc_Dn2r.js";
|
|
10
10
|
import { a as saveJsonFile, i as loadJsonFile } from "./github-copilot-token-BUd9oA8x.js";
|
|
11
11
|
import { t as parseBooleanValue$1 } from "./boolean-B8-BqKGQ.js";
|
|
12
|
-
import { $ as resolveSandboxContext, $t as resolveBrowserControlAuth, A as isGoogleModelApi, At as resolveSessionResetPolicy, B as isCompactionFailureError, Bt as resolveGroupSessionKey, C as sanitizeImageBlocks, Ct as INPUT_PROVENANCE_KIND_VALUES, D as extractToolResultId, Dt as resolveSessionKey, E as extractToolCallsFromAssistant, Et as normalizeInputProvenance, F as formatRawAssistantErrorForUi, Ft as canonicalizeMainSessionAlias, G as isRateLimitAssistantError, Gt as resolveBrowserConfig, H as isFailoverAssistantError, Ht as resolveSessionLockMaxHoldFromTimeout, I as getApiErrorPayloadFingerprint, J as isTransientHttpError, Jt as saveMediaBuffer, K as isRawApiErrorPayload, Kt as resolveProfile, L as isAuthAssistantError, M as classifyFailoverReason, Mt as resolveThreadFlag, N as formatAssistantErrorText, Nt as DEFAULT_RESET_TRIGGERS, O as downgradeOpenAIReasoningBlocks, Ot as evaluateSessionFreshness, P as formatBillingErrorMessage, Pt as resolveFreshSessionTotalTokens, Q as ensureSandboxWorkspaceForSession, Qt as ensureBrowserControlAuth, R as isBillingAssistantError, Rt as resolveMainSessionKey, S as sanitizeSessionMessagesImages, St as extractToolCallNames, T as resolveImageSanitizationLimits, Tt as hasInterSessionUserProvenance, U as isFailoverErrorMessage, Ut as createBrowserRouteContext, V as isContextOverflowError, Vt as acquireSessionWriteLock, W as isLikelyContextOverflowError, Wt as registerBrowserRoutes, X as parseImageSizeError, Xt as resolveExistingPathsWithinRoot, Y as parseImageDimensionError, Yt as DEFAULT_UPLOAD_DIR, Z as sanitizeUserFacingText, Zt as getBridgeAuthForPort, _ as validateAnthropicTurns, _t as normalizeSessionDeliveryFields, an as mergeAlsoAllowPolicy, at as loadSessionStore, b as isMessagingToolDuplicateNormalized, bt as capArrayByJsonBytes, c as normalizeChannelTargetInput, cn as stripPluginOnlyAllowlist, ct as updateLastRoute, d as parseReplyDirectives, dn as buildBootstrapContextFiles, dt as isCacheEnabled, en as applyOwnerOnlyToolPolicy, et as resolveSandboxRuntimeStatus, f as MEDIA_TOKEN_RE, fn as ensureSessionHeader, ft as resolveCacheTtlMs$1, g as initializeGlobalHookRunner, gt as normalizeDeliveryContext, h as getGlobalHookRunner, hn as sanitizeGoogleTurnOrdering, ht as mergeDeliveryContext, in as expandToolGroups, it as resolveAndPersistSessionFile, j as BILLING_ERROR_USER_MESSAGE, jt as resolveSessionResetType, k as isAntigravityClaude, kt as resolveChannelResetConfig, l as normalizeTargetForProvider, ln as compileGlobPatterns, lt as updateSessionStore, m as parseInlineDirectives$1, mn as resolveBootstrapTotalMaxChars, mt as deliveryContextKey, nn as collectExplicitAllowlist, o as normalizeReplyPayloadsForDelivery, on as normalizeToolName$1, ot as readSessionUpdatedAt, p as splitMediaFromOutput, pn as resolveBootstrapMaxChars, pt as deliveryContextFromSession, q as isTimeoutErrorMessage, qt as getMediaDir, rn as expandPolicyWithPluginGroups, rt as appendAssistantMessageToSessionTranscript, s as buildTargetResolverSignature, sn as resolveToolProfilePolicy, st as recordSessionMetaFromInbound, t as deliverOutboundPayloads, tn as buildPluginToolGroups, tt as extractDeliveryInfo, u as throwIfAborted, un as matchesAnyGlobPattern, ut as updateSessionStoreEntry, v as validateGeminiTurns, w as sanitizeToolResultImages, wt as applyInputProvenanceToUserMessage, x as normalizeTextForComparison, xt as countToolResults, y as pickFallbackThinkingLevel, yt as archiveSessionTranscripts, z as isCloudCodeAssistFormatError, zt as deriveSessionMetaPatch } from "./deliver-
|
|
12
|
+
import { $ as resolveSandboxContext, $t as resolveBrowserControlAuth, A as isGoogleModelApi, At as resolveSessionResetPolicy, B as isCompactionFailureError, Bt as resolveGroupSessionKey, C as sanitizeImageBlocks, Ct as INPUT_PROVENANCE_KIND_VALUES, D as extractToolResultId, Dt as resolveSessionKey, E as extractToolCallsFromAssistant, Et as normalizeInputProvenance, F as formatRawAssistantErrorForUi, Ft as canonicalizeMainSessionAlias, G as isRateLimitAssistantError, Gt as resolveBrowserConfig, H as isFailoverAssistantError, Ht as resolveSessionLockMaxHoldFromTimeout, I as getApiErrorPayloadFingerprint, J as isTransientHttpError, Jt as saveMediaBuffer, K as isRawApiErrorPayload, Kt as resolveProfile, L as isAuthAssistantError, M as classifyFailoverReason, Mt as resolveThreadFlag, N as formatAssistantErrorText, Nt as DEFAULT_RESET_TRIGGERS, O as downgradeOpenAIReasoningBlocks, Ot as evaluateSessionFreshness, P as formatBillingErrorMessage, Pt as resolveFreshSessionTotalTokens, Q as ensureSandboxWorkspaceForSession, Qt as ensureBrowserControlAuth, R as isBillingAssistantError, Rt as resolveMainSessionKey, S as sanitizeSessionMessagesImages, St as extractToolCallNames, T as resolveImageSanitizationLimits, Tt as hasInterSessionUserProvenance, U as isFailoverErrorMessage, Ut as createBrowserRouteContext, V as isContextOverflowError, Vt as acquireSessionWriteLock, W as isLikelyContextOverflowError, Wt as registerBrowserRoutes, X as parseImageSizeError, Xt as resolveExistingPathsWithinRoot, Y as parseImageDimensionError, Yt as DEFAULT_UPLOAD_DIR, Z as sanitizeUserFacingText, Zt as getBridgeAuthForPort, _ as validateAnthropicTurns, _t as normalizeSessionDeliveryFields, an as mergeAlsoAllowPolicy, at as loadSessionStore, b as isMessagingToolDuplicateNormalized, bt as capArrayByJsonBytes, c as normalizeChannelTargetInput, cn as stripPluginOnlyAllowlist, ct as updateLastRoute, d as parseReplyDirectives, dn as buildBootstrapContextFiles, dt as isCacheEnabled, en as applyOwnerOnlyToolPolicy, et as resolveSandboxRuntimeStatus, f as MEDIA_TOKEN_RE, fn as ensureSessionHeader, ft as resolveCacheTtlMs$1, g as initializeGlobalHookRunner, gt as normalizeDeliveryContext, h as getGlobalHookRunner, hn as sanitizeGoogleTurnOrdering, ht as mergeDeliveryContext, in as expandToolGroups, it as resolveAndPersistSessionFile, j as BILLING_ERROR_USER_MESSAGE, jt as resolveSessionResetType, k as isAntigravityClaude, kt as resolveChannelResetConfig, l as normalizeTargetForProvider, ln as compileGlobPatterns, lt as updateSessionStore, m as parseInlineDirectives$1, mn as resolveBootstrapTotalMaxChars, mt as deliveryContextKey, nn as collectExplicitAllowlist, o as normalizeReplyPayloadsForDelivery, on as normalizeToolName$1, ot as readSessionUpdatedAt, p as splitMediaFromOutput, pn as resolveBootstrapMaxChars, pt as deliveryContextFromSession, q as isTimeoutErrorMessage, qt as getMediaDir, rn as expandPolicyWithPluginGroups, rt as appendAssistantMessageToSessionTranscript, s as buildTargetResolverSignature, sn as resolveToolProfilePolicy, st as recordSessionMetaFromInbound, t as deliverOutboundPayloads, tn as buildPluginToolGroups, tt as extractDeliveryInfo, u as throwIfAborted, un as matchesAnyGlobPattern, ut as updateSessionStoreEntry, v as validateGeminiTurns, w as sanitizeToolResultImages, wt as applyInputProvenanceToUserMessage, x as normalizeTextForComparison, xt as countToolResults, y as pickFallbackThinkingLevel, yt as archiveSessionTranscripts, z as isCloudCodeAssistFormatError, zt as deriveSessionMetaPatch } from "./deliver-D0zCpBS2.js";
|
|
13
13
|
import { C as unsetConfigValueAtPath, S as setConfigValueAtPath, T as VERSION, _ as resetConfigOverrides, b as getConfigValueAtPath, c as loadConfig, d as writeConfigFile, f as validateConfigObjectWithPlugins, g as getConfigOverrides, h as validateJsonSchemaValue, i as isBlockedHostnameOrIp, l as readConfigFileSnapshot, m as parseDurationMs, o as normalizeHostname, t as SsrFBlockedError, u as resolveConfigSnapshotHash, v as setConfigOverride, w as DEFAULT_SUBAGENT_MAX_SPAWN_DEPTH, x as parseConfigPath, y as unsetConfigOverride } from "./ssrf-CY_-n5zv.js";
|
|
14
14
|
import { a as applyTestPluginDefaults, c as resolveMemorySlotDecision, d as isDangerousHostEnvVarName, i as safeStatSync, n as discoverSymiPlugins, o as normalizePluginsConfig, r as isPathInside, s as resolveEnableState, t as loadPluginManifestRegistry, u as isPathInsideWithRealpath } from "./manifest-registry-k-LNmNet.js";
|
|
15
|
-
import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-
|
|
15
|
+
import { C as rawDataToString, O as DEFAULT_AI_SNAPSHOT_MAX_CHARS, T as isSecureWebSocketUrl, x as ensureChromeExtensionRelayServer } from "./chrome-CCtr79A5.js";
|
|
16
16
|
import { l as parseFrontmatterBlock } from "./frontmatter-B5iYTsZP.js";
|
|
17
17
|
import { c as assertSandboxPath, d as resolveSandboxedMediaSource, f as applySkillEnvOverrides, i as resolveSkillsPromptForRun, l as resolveSandboxInputPath, n as buildWorkspaceSkillSnapshot, p as applySkillEnvOverridesFromSnapshot, r as loadWorkspaceSkillEntries, s as assertMediaNotDataUrl } from "./skills-DRWbxzQd.js";
|
|
18
18
|
import { n as redactToolDetail } from "./redact-DPnDWsnT.js";
|
|
@@ -31,7 +31,7 @@ import { n as getDiagnosticSessionState } from "./diagnostic-session-state-BkfiP
|
|
|
31
31
|
import { t as ensurePiAuthJsonFromAuthProfiles } from "./pi-auth-json-CgM-a3Wc.js";
|
|
32
32
|
import { n as discoverModels, t as discoverAuthStorage } from "./pi-model-discovery-BnZgJecJ.js";
|
|
33
33
|
import { a as resolveEffectiveMessagesConfig, i as resolveAckReaction, o as resolveHumanDelayConfig, r as resolveResponsePrefixTemplate, t as createReplyPrefixOptions } from "./reply-prefix-D6FmBp9l.js";
|
|
34
|
-
import { a as parseGeminiAuth, c as resolveMemorySearchConfig, i as resolveOllamaBaseUrl, n as retryAsync, o as collectProviderApiKeysForExecution, r as probeOllamaEmbeddingModels, s as executeWithApiKeyRotation } from "./manager-
|
|
34
|
+
import { a as parseGeminiAuth, c as resolveMemorySearchConfig, i as resolveOllamaBaseUrl, n as retryAsync, o as collectProviderApiKeysForExecution, r as probeOllamaEmbeddingModels, s as executeWithApiKeyRotation } from "./manager-Do_LVG9R.js";
|
|
35
35
|
import { c as normalizeExtraMemoryPaths, f as runTasksWithConcurrency, s as listMemoryFiles } from "./internal-DhqYabcE.js";
|
|
36
36
|
import { n as resolveMarkdownTableMode } from "./markdown-tables-DKggd2Pz.js";
|
|
37
37
|
import { a as shouldHandleTextCommands, c as resolveNativeCommandsEnabled, i as normalizeCommandBody, l as resolveNativeSkillsEnabled, n as listChatCommands, o as isCommandFlagEnabled, r as listChatCommandsForConfig, s as isRestartEnabled } from "./commands-registry-DKlZ_8Ms.js";
|
|
@@ -54,7 +54,7 @@ import crypto, { X509Certificate, createHash, createHmac, randomBytes, randomUUI
|
|
|
54
54
|
import { complete, completeSimple, createAssistantMessageEventStream, streamSimple } from "@mariozechner/pi-ai";
|
|
55
55
|
import AjvPkg from "ajv";
|
|
56
56
|
import { CURRENT_SESSION_VERSION, DefaultResourceLoader, SessionManager, SettingsManager, codingTools, createAgentSession, createEditTool, createReadTool, createWriteTool, estimateTokens, generateSummary, readTool } from "@mariozechner/pi-coding-agent";
|
|
57
|
-
import { WebSocket
|
|
57
|
+
import { WebSocket } from "ws";
|
|
58
58
|
import { Buffer as Buffer$1 } from "node:buffer";
|
|
59
59
|
import { EdgeTTS } from "node-edge-tts";
|
|
60
60
|
import { createJiti } from "jiti";
|
|
@@ -3663,7 +3663,7 @@ async function getMemorySearchManager(params) {
|
|
|
3663
3663
|
const wrapper = new FallbackMemoryManager({
|
|
3664
3664
|
primary,
|
|
3665
3665
|
fallbackFactory: async () => {
|
|
3666
|
-
const { MemoryIndexManager } = await import("./manager-
|
|
3666
|
+
const { MemoryIndexManager } = await import("./manager-Do_LVG9R.js").then((n) => n.t);
|
|
3667
3667
|
return await MemoryIndexManager.get(params);
|
|
3668
3668
|
}
|
|
3669
3669
|
}, () => QMD_MANAGER_CACHE.delete(cacheKey));
|
|
@@ -3676,7 +3676,7 @@ async function getMemorySearchManager(params) {
|
|
|
3676
3676
|
}
|
|
3677
3677
|
}
|
|
3678
3678
|
try {
|
|
3679
|
-
const { MemoryIndexManager } = await import("./manager-
|
|
3679
|
+
const { MemoryIndexManager } = await import("./manager-Do_LVG9R.js").then((n) => n.t);
|
|
3680
3680
|
return { manager: await MemoryIndexManager.get(params) };
|
|
3681
3681
|
} catch (err) {
|
|
3682
3682
|
return {
|
|
@@ -8827,7 +8827,7 @@ var GatewayClient = class {
|
|
|
8827
8827
|
if (fingerprint !== expected) return /* @__PURE__ */ new Error("gateway tls fingerprint mismatch");
|
|
8828
8828
|
});
|
|
8829
8829
|
}
|
|
8830
|
-
this.ws = new WebSocket
|
|
8830
|
+
this.ws = new WebSocket(url, wsOptions);
|
|
8831
8831
|
this.ws.on("open", () => {
|
|
8832
8832
|
if (url.startsWith("wss://") && this.opts.tlsFingerprint) {
|
|
8833
8833
|
const tlsError = this.validateTlsFingerprint();
|
|
@@ -9046,7 +9046,7 @@ var GatewayClient = class {
|
|
|
9046
9046
|
return null;
|
|
9047
9047
|
}
|
|
9048
9048
|
async request(method, params, opts) {
|
|
9049
|
-
if (!this.ws || this.ws.readyState !== WebSocket
|
|
9049
|
+
if (!this.ws || this.ws.readyState !== WebSocket.OPEN) throw new Error("gateway not connected");
|
|
9050
9050
|
const id = randomUUID();
|
|
9051
9051
|
const frame = {
|
|
9052
9052
|
type: "req",
|
|
@@ -9978,7 +9978,7 @@ async function routeReply(params) {
|
|
|
9978
9978
|
const resolvedReplyToId = replyToId ?? (channelId === "slack" && threadId != null && threadId !== "" ? String(threadId) : void 0);
|
|
9979
9979
|
const resolvedThreadId = channelId === "slack" ? null : threadId ?? null;
|
|
9980
9980
|
try {
|
|
9981
|
-
const { deliverOutboundPayloads } = await import("./deliver-
|
|
9981
|
+
const { deliverOutboundPayloads } = await import("./deliver-D0zCpBS2.js").then((n) => n.n);
|
|
9982
9982
|
return {
|
|
9983
9983
|
ok: true,
|
|
9984
9984
|
messageId: (await deliverOutboundPayloads({
|
|
@@ -43242,7 +43242,7 @@ async function deliverSessionMaintenanceWarning(params) {
|
|
|
43242
43242
|
return;
|
|
43243
43243
|
}
|
|
43244
43244
|
try {
|
|
43245
|
-
const { deliverOutboundPayloads } = await import("./deliver-
|
|
43245
|
+
const { deliverOutboundPayloads } = await import("./deliver-D0zCpBS2.js").then((n) => n.n);
|
|
43246
43246
|
await deliverOutboundPayloads({
|
|
43247
43247
|
cfg: params.cfg,
|
|
43248
43248
|
channel,
|
|
@@ -88,10 +88,10 @@ import "./npm-registry-spec-EUQu1qjD.js";
|
|
|
88
88
|
import "./skill-scanner-Cvwk4mLV.js";
|
|
89
89
|
import "./installs-Bn3xUHko.js";
|
|
90
90
|
import "./channels-status-issues-CGx5YsbN.js";
|
|
91
|
-
import "./register.subclis-
|
|
92
|
-
import "./command-registry-
|
|
91
|
+
import "./register.subclis-BFq9K0q9.js";
|
|
92
|
+
import "./command-registry-DtivbkBg.js";
|
|
93
93
|
import "./program-context-CTkBT0K5.js";
|
|
94
|
-
import { r as installCompletion } from "./completion-cli-
|
|
94
|
+
import { r as installCompletion } from "./completion-cli-M9mpw_DS.js";
|
|
95
95
|
import "./daemon-runtime-Bt9_ZcwQ.js";
|
|
96
96
|
import { r as parseSemver } from "./runtime-guard-DaaVdMT6.js";
|
|
97
97
|
import "./onboard-helpers-CilvN36L.js";
|
|
@@ -113,8 +113,8 @@ import { n as updateNpmInstalledPlugins, t as syncPluginsForUpdateChannel } from
|
|
|
113
113
|
import "./doctor-config-flow-ClsCvpwI.js";
|
|
114
114
|
import "./systemd-linger-CMctWXke.js";
|
|
115
115
|
import "./health-format-t8t9hXjC.js";
|
|
116
|
-
import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled
|
|
117
|
-
import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-
|
|
116
|
+
import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled--PI8fuuB.js";
|
|
117
|
+
import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-DLx2ecZ2.js";
|
|
118
118
|
import { spawn, spawnSync } from "node:child_process";
|
|
119
119
|
import os from "node:os";
|
|
120
120
|
import path from "node:path";
|
|
@@ -82,7 +82,7 @@ import "./replies-DSaEOCgv.js";
|
|
|
82
82
|
import "./pi-tools.policy-Cm2mPWWM.js";
|
|
83
83
|
import "./run-reply-turn-CrfZuxxN.js";
|
|
84
84
|
import { r as parseSemver } from "./runtime-guard-Ci00bPHY.js";
|
|
85
|
-
import "./program-context-
|
|
85
|
+
import "./program-context-BHvgRRy_.js";
|
|
86
86
|
import "./catalog-ByDe_tgJ.js";
|
|
87
87
|
import "./skills-status-DW5xDDyW.js";
|
|
88
88
|
import { n as inheritOptionFromParent } from "./command-options-BFvvecvU.js";
|
|
@@ -94,7 +94,7 @@ import "./npm-registry-spec-sOqVp2uO.js";
|
|
|
94
94
|
import "./skill-scanner-Bb0TIl4W.js";
|
|
95
95
|
import "./installs-BDkKnnYE.js";
|
|
96
96
|
import "./channels-status-issues-CtII6GDY.js";
|
|
97
|
-
import { r as installCompletion } from "./completion-cli-
|
|
97
|
+
import { r as installCompletion } from "./completion-cli-DAtKJGz_.js";
|
|
98
98
|
import "./daemon-runtime-bdvJvhh0.js";
|
|
99
99
|
import "./onboard-helpers-ClA4h5_K.js";
|
|
100
100
|
import "./systemd-C73gWrPp.js";
|
|
@@ -115,8 +115,8 @@ import { n as updateNpmInstalledPlugins, t as syncPluginsForUpdateChannel } from
|
|
|
115
115
|
import "./doctor-config-flow-Brr2nZj7.js";
|
|
116
116
|
import "./systemd-linger-FUCumCk_.js";
|
|
117
117
|
import "./health-format-Cj8doEON.js";
|
|
118
|
-
import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-
|
|
119
|
-
import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-
|
|
118
|
+
import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-DawD9uin.js";
|
|
119
|
+
import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-BlxU7_DJ.js";
|
|
120
120
|
import os from "node:os";
|
|
121
121
|
import path from "node:path";
|
|
122
122
|
import fs from "node:fs/promises";
|