@symerian/symi 2.6.2 → 2.6.3
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/{agents-qLMWAYwU.js → agents-Dm0V9Z2G.js} +4 -4
- package/dist/{agents.config-BmdFH4J5.js → agents.config-DP0CLvIA.js} +1 -1
- package/dist/{agents.config-BfjAwFCr.js → agents.config-WdkJjM2-.js} +1 -1
- package/dist/{audio-preflight-BVaaZWkg.js → audio-preflight-DHTaS5U1.js} +4 -4
- package/dist/{auth-choice-D1u_GPfQ.js → auth-choice-B9OnYICm.js} +1 -1
- package/dist/{auth-choice-zFq3WRQ0.js → auth-choice-CXHi61T5.js} +1 -1
- package/dist/{banner-DpH44qlJ.js → banner-ToxTMzfL.js} +1 -1
- package/dist/build-info.json +3 -3
- package/dist/bundled/boot-md/handler.js +6 -6
- package/dist/bundled/session-memory/handler.js +6 -6
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{channel-options-C8tKm8re.js → channel-options-CsGrHsjP.js} +1 -1
- package/dist/{channel-options-0iOfzVR3.js → channel-options-Jl8AKRLD.js} +1 -1
- package/dist/{channel-web-DYinYBz4.js → channel-web-qFGaLytG.js} +1 -1
- package/dist/{channels-cli-93tLT17t.js → channels-cli-BFyOmW-R.js} +4 -4
- package/dist/{channels-cli-C8HgSMTH.js → channels-cli-DQTl2Pk5.js} +4 -4
- package/dist/{chrome-DkaXoP36.js → chrome-DYZwl5Gv.js} +7 -7
- package/dist/{cli-BYJyRW2M.js → cli-B4biLt2z.js} +1 -1
- package/dist/{cli-DapZXGSB.js → cli-DQw_LEew.js} +1 -1
- package/dist/{command-registry-9EhYc6da.js → command-registry-D1OePePk.js} +9 -9
- package/dist/{completion-cli-BFZv3K5D.js → completion-cli-CI-0hC_u.js} +2 -2
- package/dist/{completion-cli-CCeQlMlC.js → completion-cli-DW8a1WYc.js} +1 -1
- package/dist/{config-cli-Dv2mtIeM.js → config-cli-CpiluXlO.js} +1 -1
- package/dist/{config-cli-DbWMIBUz.js → config-cli-DHXt5cQZ.js} +1 -1
- package/dist/{configure-CVQf2UJE.js → configure-CmVnpTNi.js} +3 -3
- package/dist/{configure-B8zV6Hxj.js → configure-Ha9cu8Bu.js} +3 -3
- package/dist/{deliver-C46-vyqg.js → deliver-dODxSv3b.js} +1 -1
- package/dist/{doctor-completion-BunqvoqZ.js → doctor-completion-CRNCOXcf.js} +1 -1
- package/dist/{doctor-completion-CLeX1kaN.js → doctor-completion-ve-JPlmN.js} +1 -1
- package/dist/entry.js +1 -1
- package/dist/extensionAPI.js +1 -1
- package/dist/{gateway-cli-Co-tp-WC.js → gateway-cli-BPsbjmUI.js} +9 -9
- package/dist/{gateway-cli-DMey_29a.js → gateway-cli-Cc7N8N_E.js} +9 -9
- package/dist/{glass-ui-ws-CKb1jTZR.js → glass-ui-ws-1O1O2xC6.js} +7 -7
- package/dist/{glass-ui-ws-C4O227UO.js → glass-ui-ws-CKwLnOwl.js} +7 -7
- package/dist/{health-CDGOsNeD.js → health-DTRWmRB8.js} +1 -1
- package/dist/{health-CM1asUG8.js → health-tYyUNVp5.js} +1 -1
- package/dist/{hooks-cli-DFKB3Z6X.js → hooks-cli-Cp81vqRc.js} +2 -2
- package/dist/{hooks-cli-Tx0TzSju.js → hooks-cli-eC03ywfG.js} +2 -2
- package/dist/{image-CuzFLQWC.js → image-CXu8W39c.js} +1 -1
- package/dist/index.js +6 -6
- package/dist/llm-slug-generator.js +6 -6
- package/dist/{models-CiqHYwje.js → models-CuhnCX2U.js} +2 -2
- package/dist/{models-cli-B4ATSsNS.js → models-cli-BzwGQUdn.js} +3 -3
- package/dist/{models-cli-B-b-gBKG.js → models-cli-CFr_ZP5y.js} +2 -2
- package/dist/{onboard-B_ECX48L.js → onboard-B2g2Q6dd.js} +2 -2
- package/dist/{onboard-DcnGZKZX.js → onboard-CcB6pmEy.js} +2 -2
- package/dist/{onboard-channels-pfSGhg_C.js → onboard-channels-CWd17q6h.js} +1 -1
- package/dist/{onboard-channels-FFQPpuEN.js → onboard-channels-DmRBC7VN.js} +1 -1
- package/dist/{onboarding-jhZxQcZ3.js → onboarding-DMqlt_p6.js} +3 -3
- package/dist/{onboarding-BU14cspo.js → onboarding-DwvQIqR8.js} +3 -3
- package/dist/{onboarding.finalize-ByZT4dF5.js → onboarding.finalize-BUSzTwhM.js} +5 -5
- package/dist/{onboarding.finalize-B8oOMfHc.js → onboarding.finalize-lJmZSE4C.js} +6 -6
- package/dist/{pi-embedded-BY9AnmoP.js → pi-embedded-CT2JDfQr.js} +147 -141
- package/dist/{pi-embedded-helpers-CfqDGQ9J.js → pi-embedded-helpers-pubKo8HQ.js} +4 -4
- package/dist/{plugin-registry-DXWJkJX6.js → plugin-registry-DZdPnpP_.js} +1 -1
- package/dist/{plugin-registry-CNf1_8hj.js → plugin-registry-vW2V1yCi.js} +1 -1
- package/dist/plugin-sdk/{channel-web-DZQQ0mzN.js → channel-web-38aqDKeT.js} +1 -1
- package/dist/plugin-sdk/index.js +2 -2
- package/dist/plugin-sdk/{reply-DvZeyOVA.js → reply-BjJZjZRr.js} +143 -137
- package/dist/plugin-sdk/{web-BCsJFuQu.js → web-BgKYnau3.js} +2 -2
- package/dist/{plugins-cli-BiedlZMy.js → plugins-cli-BTq9c2hZ.js} +2 -2
- package/dist/{plugins-cli-C9TYM40P.js → plugins-cli-DkAx9r3h.js} +2 -2
- package/dist/{program-bnWda72r.js → program-DZx9PtyT.js} +7 -7
- package/dist/{program-context-CY1jWc5A.js → program-context-DyfuToE1.js} +17 -17
- package/dist/{prompt-select-styled-B_lFTtqp.js → prompt-select-styled-CifWTOoY.js} +4 -4
- package/dist/{prompt-select-styled-BEnZY8wI.js → prompt-select-styled-DNbD3v3G.js} +4 -4
- package/dist/{provider-auth-helpers-DApJuzBd.js → provider-auth-helpers-BPIIDTwA.js} +1 -1
- package/dist/{provider-auth-helpers-DcNKxc7D.js → provider-auth-helpers-BzySaUp5.js} +1 -1
- package/dist/{push-apns-CKKHlj6j.js → push-apns-DbpeXPGR.js} +1 -1
- package/dist/{push-apns-DA7UMNQH.js → push-apns-IdD-dKZm.js} +1 -1
- package/dist/{pw-ai-m0mj2KWK.js → pw-ai-B5asscAD.js} +1 -1
- package/dist/{register.agent-ulu0VmOg.js → register.agent-CfFcSvM1.js} +6 -6
- package/dist/{register.agent-8lxVlmzQ.js → register.agent-TFUcxDGN.js} +5 -5
- package/dist/{register.configure-rq0h5r3X.js → register.configure-BwRTNCws.js} +6 -6
- package/dist/{register.configure-45--Sly1.js → register.configure-D3BJejOC.js} +6 -6
- package/dist/{register.maintenance-DyEJx7NY.js → register.maintenance-B5350ddh.js} +7 -7
- package/dist/{register.maintenance-CXbxRtWI.js → register.maintenance-DkdVYwbj.js} +8 -8
- package/dist/{register.message-CiN_pt6K.js → register.message-DTopCPGC.js} +2 -2
- package/dist/{register.message-C7Yh1uky.js → register.message-FbCBAfJO.js} +2 -2
- package/dist/{register.onboard-e_2hc2Rm.js → register.onboard-DITZn8dx.js} +4 -4
- package/dist/{register.onboard-BWaRkbei.js → register.onboard-GSv5xyA3.js} +4 -4
- package/dist/{register.setup-BIIFHtF7.js → register.setup-BI6lILMU.js} +4 -4
- package/dist/{register.setup-zwh90Vn-.js → register.setup-BuOeoBk0.js} +4 -4
- package/dist/{register.status-health-sessions-D6t5maEr.js → register.status-health-sessions-C1RhWKxN.js} +3 -3
- package/dist/{register.status-health-sessions-O-sVAFHE.js → register.status-health-sessions-EK4_odLb.js} +3 -3
- package/dist/{register.subclis-DOiZocR6.js → register.subclis-Bn_Mr_Wa.js} +9 -9
- package/dist/{reply-05js8eGB.js → reply-BGSd_cMI.js} +138 -132
- package/dist/{run-main-u-Eyc8Wm.js → run-main-Bu9IAm9E.js} +14 -14
- package/dist/{runner-CU9l0uJh.js → runner-WAG0M5s9.js} +1 -1
- package/dist/{server-methods-Dds-iEoY.js → server-methods-dxn6-zQz.js} +7 -7
- package/dist/{server-methods-Bvl1xubo.js → server-methods-tA9lkIQT.js} +7 -7
- package/dist/{server-node-events-Qp-gJMET.js → server-node-events-6jcJSpXA.js} +2 -2
- package/dist/{server-node-events-qGqpsPxm.js → server-node-events-CzcTGD9T.js} +2 -2
- package/dist/{status-BRSo-LY3.js → status-8176C-aV.js} +2 -2
- package/dist/{status-BqQ9mm64.js → status-CcQSl2sN.js} +1 -1
- package/dist/{status-BATOXGRi.js → status-DGKT6HnE.js} +2 -2
- package/dist/{status-CfYa1Q9K.js → status-DmPOSk-A.js} +1 -1
- package/dist/{subagent-registry-lbDgDwLy.js → subagent-registry-DqFKNTCX.js} +141 -135
- package/dist/{unified-runner-B4ICXRlg.js → unified-runner-BbanUEmo.js} +166 -160
- package/dist/{update-cli-BOaP4XyQ.js → update-cli-FMcGr7MA.js} +8 -8
- package/dist/{update-cli-R8-SSkbS.js → update-cli-YCXB_6jz.js} +7 -7
- package/dist/{update-runner-CWJ4pC1b.js → update-runner-C8OkrKjW.js} +1 -1
- package/dist/{update-runner-B8UmqtLI.js → update-runner-DMP1rCS1.js} +1 -1
- package/dist/{web-CQH9fSkH.js → web-BsS1ia0M.js} +6 -6
- package/dist/{web-CSrDbJJ7.js → web-CQ2F1f3a.js} +1 -1
- package/dist/{web-BWybtnEa.js → web-DoRGusTq.js} +2 -2
- package/dist/{web-DBFW0ejP.js → web-LUMjboLF.js} +1 -1
- package/package.json +1 -1
|
@@ -3448,7 +3448,7 @@ function resolveMemoryBackendConfig(params) {
|
|
|
3448
3448
|
|
|
3449
3449
|
//#endregion
|
|
3450
3450
|
//#region src/memory/search-manager.ts
|
|
3451
|
-
const log$
|
|
3451
|
+
const log$10 = createSubsystemLogger("memory");
|
|
3452
3452
|
const QMD_MANAGER_CACHE = /* @__PURE__ */ new Map();
|
|
3453
3453
|
async function getMemorySearchManager(params) {
|
|
3454
3454
|
const resolved = resolveMemoryBackendConfig(params);
|
|
@@ -3481,7 +3481,7 @@ async function getMemorySearchManager(params) {
|
|
|
3481
3481
|
}
|
|
3482
3482
|
} catch (err) {
|
|
3483
3483
|
const message = err instanceof Error ? err.message : String(err);
|
|
3484
|
-
log$
|
|
3484
|
+
log$10.warn(`qmd memory unavailable; falling back to builtin: ${message}`);
|
|
3485
3485
|
}
|
|
3486
3486
|
}
|
|
3487
3487
|
try {
|
|
@@ -3508,7 +3508,7 @@ var FallbackMemoryManager = class {
|
|
|
3508
3508
|
} catch (err) {
|
|
3509
3509
|
this.primaryFailed = true;
|
|
3510
3510
|
this.lastError = err instanceof Error ? err.message : String(err);
|
|
3511
|
-
log$
|
|
3511
|
+
log$10.warn(`qmd memory failed; switching to builtin index: ${this.lastError}`);
|
|
3512
3512
|
await this.deps.primary.close?.().catch(() => {});
|
|
3513
3513
|
this.evictCacheEntry();
|
|
3514
3514
|
}
|
|
@@ -3588,12 +3588,12 @@ var FallbackMemoryManager = class {
|
|
|
3588
3588
|
try {
|
|
3589
3589
|
fallback = await this.deps.fallbackFactory();
|
|
3590
3590
|
if (!fallback) {
|
|
3591
|
-
log$
|
|
3591
|
+
log$10.warn("memory fallback requested but builtin index is unavailable");
|
|
3592
3592
|
return null;
|
|
3593
3593
|
}
|
|
3594
3594
|
} catch (err) {
|
|
3595
3595
|
const message = err instanceof Error ? err.message : String(err);
|
|
3596
|
-
log$
|
|
3596
|
+
log$10.warn(`memory fallback unavailable: ${message}`);
|
|
3597
3597
|
return null;
|
|
3598
3598
|
}
|
|
3599
3599
|
this.fallback = fallback;
|
|
@@ -17253,7 +17253,7 @@ function createRunRegistry(options) {
|
|
|
17253
17253
|
|
|
17254
17254
|
//#endregion
|
|
17255
17255
|
//#region src/process/supervisor/supervisor.ts
|
|
17256
|
-
const log$
|
|
17256
|
+
const log$9 = createSubsystemLogger("process/supervisor");
|
|
17257
17257
|
function clampTimeout(value) {
|
|
17258
17258
|
if (typeof value !== "number" || !Number.isFinite(value) || value <= 0) return;
|
|
17259
17259
|
return Math.max(1, Math.floor(value));
|
|
@@ -17439,7 +17439,7 @@ function createProcessSupervisor() {
|
|
|
17439
17439
|
exitCode: null,
|
|
17440
17440
|
exitSignal: null
|
|
17441
17441
|
});
|
|
17442
|
-
log$
|
|
17442
|
+
log$9.warn(`spawn failed: runId=${runId} reason=${String(err)}`);
|
|
17443
17443
|
throw err;
|
|
17444
17444
|
}
|
|
17445
17445
|
};
|
|
@@ -34770,7 +34770,7 @@ function createNodesTool(options) {
|
|
|
34770
34770
|
|
|
34771
34771
|
//#endregion
|
|
34772
34772
|
//#region src/gateway/session-utils.ts
|
|
34773
|
-
const log$
|
|
34773
|
+
const log$8 = createSubsystemLogger("session-utils");
|
|
34774
34774
|
const AVATAR_MAX_BYTES = 2 * 1024 * 1024;
|
|
34775
34775
|
function isStorePathTemplate(store) {
|
|
34776
34776
|
return typeof store === "string" && store.includes("{agentId}");
|
|
@@ -35633,7 +35633,7 @@ async function resolveAnnounceTarget(params) {
|
|
|
35633
35633
|
|
|
35634
35634
|
//#endregion
|
|
35635
35635
|
//#region src/agents/tools/sessions-send-tool.a2a.ts
|
|
35636
|
-
const log$
|
|
35636
|
+
const log$7 = createSubsystemLogger("agents/sessions-send");
|
|
35637
35637
|
async function runSessionsSendA2AFlow(params) {
|
|
35638
35638
|
const runContextId = params.waitRunId ?? "unknown";
|
|
35639
35639
|
try {
|
|
@@ -35724,7 +35724,7 @@ async function runSessionsSendA2AFlow(params) {
|
|
|
35724
35724
|
timeoutMs: 1e4
|
|
35725
35725
|
});
|
|
35726
35726
|
} catch (err) {
|
|
35727
|
-
log$
|
|
35727
|
+
log$7.warn("sessions_send announce delivery failed", {
|
|
35728
35728
|
runId: runContextId,
|
|
35729
35729
|
channel: announceTarget.channel,
|
|
35730
35730
|
to: announceTarget.to,
|
|
@@ -35732,7 +35732,7 @@ async function runSessionsSendA2AFlow(params) {
|
|
|
35732
35732
|
});
|
|
35733
35733
|
}
|
|
35734
35734
|
} catch (err) {
|
|
35735
|
-
log$
|
|
35735
|
+
log$7.warn("sessions_send announce flow failed", {
|
|
35736
35736
|
runId: runContextId,
|
|
35737
35737
|
error: formatErrorMessage(err)
|
|
35738
35738
|
});
|
|
@@ -38762,7 +38762,7 @@ function resolveRunWorkspaceDir(params) {
|
|
|
38762
38762
|
|
|
38763
38763
|
//#endregion
|
|
38764
38764
|
//#region src/agents/cli-runner.ts
|
|
38765
|
-
const log$
|
|
38765
|
+
const log$6 = createSubsystemLogger("agent/claude-cli");
|
|
38766
38766
|
async function runCliAgent(params) {
|
|
38767
38767
|
const started = Date.now();
|
|
38768
38768
|
const workspaceResolution = resolveRunWorkspaceDir({
|
|
@@ -38775,7 +38775,7 @@ async function runCliAgent(params) {
|
|
|
38775
38775
|
const redactedSessionId = redactRunIdentifier(params.sessionId);
|
|
38776
38776
|
const redactedSessionKey = redactRunIdentifier(params.sessionKey);
|
|
38777
38777
|
const redactedWorkspace = redactRunIdentifier(resolvedWorkspace);
|
|
38778
|
-
if (workspaceResolution.usedFallback) log$
|
|
38778
|
+
if (workspaceResolution.usedFallback) log$6.warn(`[workspace-fallback] caller=runCliAgent reason=${workspaceResolution.fallbackReason} run=${params.runId} session=${redactedSessionId} sessionKey=${redactedSessionKey} agent=${workspaceResolution.agentId} workspace=${redactedWorkspace}`);
|
|
38779
38779
|
const workspaceDir = resolvedWorkspace;
|
|
38780
38780
|
const backendResolved = resolveCliBackendConfig(params.provider, params.config);
|
|
38781
38781
|
if (!backendResolved) throw new Error(`Unknown CLI backend: ${params.provider}`);
|
|
@@ -38792,7 +38792,7 @@ async function runCliAgent(params) {
|
|
|
38792
38792
|
sessionId: params.sessionId,
|
|
38793
38793
|
warn: makeBootstrapWarn({
|
|
38794
38794
|
sessionLabel,
|
|
38795
|
-
warn: (message) => log$
|
|
38795
|
+
warn: (message) => log$6.warn(message)
|
|
38796
38796
|
})
|
|
38797
38797
|
});
|
|
38798
38798
|
const { defaultAgentId, sessionAgentId } = resolveSessionAgentIds({
|
|
@@ -38858,7 +38858,7 @@ async function runCliAgent(params) {
|
|
|
38858
38858
|
const queueKey = backend.serialize ?? true ? backendResolved.id : `${backendResolved.id}:${params.runId}`;
|
|
38859
38859
|
try {
|
|
38860
38860
|
const output = await enqueueCliRun(queueKey, async () => {
|
|
38861
|
-
log$
|
|
38861
|
+
log$6.info(`cli exec: provider=${params.provider} model=${normalizedModel} promptChars=${params.prompt.length}`);
|
|
38862
38862
|
const logOutputText = isTruthyEnvValue(process.env.SYMI_CLAUDE_CLI_LOG_OUTPUT);
|
|
38863
38863
|
if (logOutputText) {
|
|
38864
38864
|
const logArgs = [];
|
|
@@ -38891,7 +38891,7 @@ async function runCliAgent(params) {
|
|
|
38891
38891
|
const promptIndex = logArgs.indexOf(argsPrompt);
|
|
38892
38892
|
if (promptIndex >= 0) logArgs[promptIndex] = `<prompt:${argsPrompt.length} chars>`;
|
|
38893
38893
|
}
|
|
38894
|
-
log$
|
|
38894
|
+
log$6.info(`cli argv: ${backend.command} ${logArgs.join(" ")}`);
|
|
38895
38895
|
}
|
|
38896
38896
|
const env = (() => {
|
|
38897
38897
|
const next = {
|
|
@@ -38929,17 +38929,17 @@ async function runCliAgent(params) {
|
|
|
38929
38929
|
const stdout = result.stdout.trim();
|
|
38930
38930
|
const stderr = result.stderr.trim();
|
|
38931
38931
|
if (logOutputText) {
|
|
38932
|
-
if (stdout) log$
|
|
38933
|
-
if (stderr) log$
|
|
38932
|
+
if (stdout) log$6.info(`cli stdout:\n${stdout}`);
|
|
38933
|
+
if (stderr) log$6.info(`cli stderr:\n${stderr}`);
|
|
38934
38934
|
}
|
|
38935
38935
|
if (shouldLogVerbose()) {
|
|
38936
|
-
if (stdout) log$
|
|
38937
|
-
if (stderr) log$
|
|
38936
|
+
if (stdout) log$6.debug(`cli stdout:\n${stdout}`);
|
|
38937
|
+
if (stderr) log$6.debug(`cli stderr:\n${stderr}`);
|
|
38938
38938
|
}
|
|
38939
38939
|
if (result.exitCode !== 0 || result.reason !== "exit") {
|
|
38940
38940
|
if (result.reason === "no-output-timeout" || result.noOutputTimedOut) {
|
|
38941
38941
|
const timeoutReason = `CLI produced no output for ${Math.round(noOutputTimeoutMs / 1e3)}s and was terminated.`;
|
|
38942
|
-
log$
|
|
38942
|
+
log$6.warn(`cli watchdog timeout: provider=${params.provider} model=${modelId} session=${cliSessionIdToSend ?? params.sessionId} noOutputTimeoutMs=${noOutputTimeoutMs} pid=${managedRun.pid ?? "unknown"}`);
|
|
38943
38943
|
throw new FailoverError(timeoutReason, {
|
|
38944
38944
|
reason: "timeout",
|
|
38945
38945
|
provider: params.provider,
|
|
@@ -39258,7 +39258,7 @@ function resolveEmbeddedSessionLane(key) {
|
|
|
39258
39258
|
|
|
39259
39259
|
//#endregion
|
|
39260
39260
|
//#region src/agents/pi-embedded-runner/logger.ts
|
|
39261
|
-
const log$
|
|
39261
|
+
const log$5 = createSubsystemLogger("agent/embedded");
|
|
39262
39262
|
|
|
39263
39263
|
//#endregion
|
|
39264
39264
|
//#region src/utils/safe-json.ts
|
|
@@ -39304,7 +39304,7 @@ function getQueuedFileWriter(writers, filePath) {
|
|
|
39304
39304
|
//#endregion
|
|
39305
39305
|
//#region src/agents/anthropic-payload-log.ts
|
|
39306
39306
|
const writers$1 = /* @__PURE__ */ new Map();
|
|
39307
|
-
const log$
|
|
39307
|
+
const log$4 = createSubsystemLogger("agent/anthropic-payload");
|
|
39308
39308
|
function resolvePayloadLogConfig(env) {
|
|
39309
39309
|
const enabled = parseBooleanValue$1(env.SYMI_ANTHROPIC_PAYLOAD_LOG) ?? false;
|
|
39310
39310
|
const fileOverride = env.SYMI_ANTHROPIC_PAYLOAD_LOG_FILE?.trim();
|
|
@@ -39394,13 +39394,13 @@ function createAnthropicPayloadLogger(params) {
|
|
|
39394
39394
|
usage,
|
|
39395
39395
|
error: errorMessage
|
|
39396
39396
|
});
|
|
39397
|
-
log$
|
|
39397
|
+
log$4.info("anthropic usage", {
|
|
39398
39398
|
runId: params.runId,
|
|
39399
39399
|
sessionId: params.sessionId,
|
|
39400
39400
|
usage
|
|
39401
39401
|
});
|
|
39402
39402
|
};
|
|
39403
|
-
log$
|
|
39403
|
+
log$4.info("anthropic payload logger enabled", { filePath: writer.filePath });
|
|
39404
39404
|
return {
|
|
39405
39405
|
enabled: true,
|
|
39406
39406
|
wrapStreamFn,
|
|
@@ -41492,7 +41492,7 @@ function createEmbeddedPiSessionEventHandler(ctx) {
|
|
|
41492
41492
|
//#region src/agents/pi-embedded-subscribe.ts
|
|
41493
41493
|
const THINKING_TAG_SCAN_RE = /<\s*(\/?)\s*(?:think(?:ing)?|thought|antthinking)\s*>/gi;
|
|
41494
41494
|
const FINAL_TAG_SCAN_RE = /<\s*(\/?)\s*final\s*>/gi;
|
|
41495
|
-
const log$
|
|
41495
|
+
const log$3 = createSubsystemLogger("agent/embedded");
|
|
41496
41496
|
function subscribeEmbeddedPiSession(params) {
|
|
41497
41497
|
const reasoningMode = params.reasoningMode ?? "off";
|
|
41498
41498
|
const useMarkdown = (params.toolResultFormat ?? "markdown") === "markdown";
|
|
@@ -41649,7 +41649,7 @@ function subscribeEmbeddedPiSession(params) {
|
|
|
41649
41649
|
state.compactionRetryReject = reject;
|
|
41650
41650
|
});
|
|
41651
41651
|
state.compactionRetryPromise.catch((err) => {
|
|
41652
|
-
log$
|
|
41652
|
+
log$3.debug(`compaction promise rejected (no waiter): ${String(err)}`);
|
|
41653
41653
|
});
|
|
41654
41654
|
}
|
|
41655
41655
|
};
|
|
@@ -41801,7 +41801,7 @@ function subscribeEmbeddedPiSession(params) {
|
|
|
41801
41801
|
if (!chunk) return;
|
|
41802
41802
|
if (chunk === state.lastBlockReplyText) return;
|
|
41803
41803
|
if (isMessagingToolDuplicateNormalized(normalizeTextForComparison(chunk), messagingToolSentTextsNormalized)) {
|
|
41804
|
-
log$
|
|
41804
|
+
log$3.debug(`Skipping block reply - already sent via messaging tool: ${chunk.slice(0, 50)}...`);
|
|
41805
41805
|
return;
|
|
41806
41806
|
}
|
|
41807
41807
|
if (shouldSkipAssistantText(chunk)) return;
|
|
@@ -41879,7 +41879,7 @@ function subscribeEmbeddedPiSession(params) {
|
|
|
41879
41879
|
const ctx = {
|
|
41880
41880
|
params,
|
|
41881
41881
|
state,
|
|
41882
|
-
log: log$
|
|
41882
|
+
log: log$3,
|
|
41883
41883
|
blockChunking,
|
|
41884
41884
|
blockChunker,
|
|
41885
41885
|
hookRunner: params.hookRunner,
|
|
@@ -41912,7 +41912,7 @@ function subscribeEmbeddedPiSession(params) {
|
|
|
41912
41912
|
if (state.unsubscribed) return;
|
|
41913
41913
|
state.unsubscribed = true;
|
|
41914
41914
|
if (state.compactionRetryPromise) {
|
|
41915
|
-
log$
|
|
41915
|
+
log$3.debug(`unsubscribe: rejecting compaction wait runId=${params.runId}`);
|
|
41916
41916
|
const reject = state.compactionRetryReject;
|
|
41917
41917
|
state.compactionRetryResolve = void 0;
|
|
41918
41918
|
state.compactionRetryReject = void 0;
|
|
@@ -41922,11 +41922,11 @@ function subscribeEmbeddedPiSession(params) {
|
|
|
41922
41922
|
reject?.(abortErr);
|
|
41923
41923
|
}
|
|
41924
41924
|
if (params.session.isCompacting) {
|
|
41925
|
-
log$
|
|
41925
|
+
log$3.debug(`unsubscribe: aborting in-flight compaction runId=${params.runId}`);
|
|
41926
41926
|
try {
|
|
41927
41927
|
params.session.abortCompaction();
|
|
41928
41928
|
} catch (err) {
|
|
41929
|
-
log$
|
|
41929
|
+
log$3.warn(`unsubscribe: compaction abort failed runId=${params.runId} err=${String(err)}`);
|
|
41930
41930
|
}
|
|
41931
41931
|
}
|
|
41932
41932
|
sessionUnsubscribe();
|
|
@@ -41975,7 +41975,7 @@ function subscribeEmbeddedPiSession(params) {
|
|
|
41975
41975
|
|
|
41976
41976
|
//#endregion
|
|
41977
41977
|
//#region src/agents/pi-tools.before-tool-call.ts
|
|
41978
|
-
const log$
|
|
41978
|
+
const log$2 = createSubsystemLogger("agents/tools");
|
|
41979
41979
|
const BEFORE_TOOL_CALL_WRAPPED = Symbol("beforeToolCallWrapped");
|
|
41980
41980
|
const adjustedParamsByToolCallId = /* @__PURE__ */ new Map();
|
|
41981
41981
|
const MAX_TRACKED_ADJUSTED_PARAMS = 1024;
|
|
@@ -42009,7 +42009,7 @@ async function recordLoopOutcome(args) {
|
|
|
42009
42009
|
config: args.ctx.loopDetection
|
|
42010
42010
|
});
|
|
42011
42011
|
} catch (err) {
|
|
42012
|
-
log$
|
|
42012
|
+
log$2.warn(`tool loop outcome tracking failed: tool=${args.toolName} error=${String(err)}`);
|
|
42013
42013
|
}
|
|
42014
42014
|
}
|
|
42015
42015
|
async function runBeforeToolCallHook(args) {
|
|
@@ -42026,7 +42026,7 @@ async function runBeforeToolCallHook(args) {
|
|
|
42026
42026
|
const loopResult = detectToolCallLoop(sessionState, toolName, params, args.ctx.loopDetection);
|
|
42027
42027
|
if (loopResult.stuck) {
|
|
42028
42028
|
if (loopResult.level === "critical") {
|
|
42029
|
-
log$
|
|
42029
|
+
log$2.error(`Blocking ${toolName} due to critical loop: ${loopResult.message}`);
|
|
42030
42030
|
logToolLoopAction({
|
|
42031
42031
|
sessionKey: args.ctx.sessionKey,
|
|
42032
42032
|
sessionId: args.ctx?.agentId,
|
|
@@ -42043,7 +42043,7 @@ async function runBeforeToolCallHook(args) {
|
|
|
42043
42043
|
reason: loopResult.message
|
|
42044
42044
|
};
|
|
42045
42045
|
} else if (shouldEmitLoopWarning(sessionState, loopResult.warningKey ?? `${loopResult.detector}:${toolName}`, loopResult.count)) {
|
|
42046
|
-
log$
|
|
42046
|
+
log$2.warn(`Loop warning for ${toolName}: ${loopResult.message}`);
|
|
42047
42047
|
logToolLoopAction({
|
|
42048
42048
|
sessionKey: args.ctx.sessionKey,
|
|
42049
42049
|
sessionId: args.ctx?.agentId,
|
|
@@ -42093,7 +42093,7 @@ async function runBeforeToolCallHook(args) {
|
|
|
42093
42093
|
}
|
|
42094
42094
|
} catch (err) {
|
|
42095
42095
|
const toolCallId = args.toolCallId ? ` toolCallId=${args.toolCallId}` : "";
|
|
42096
|
-
log$
|
|
42096
|
+
log$2.warn(`before_tool_call hook failed: tool=${toolName}${toolCallId} error=${String(err)}`);
|
|
42097
42097
|
}
|
|
42098
42098
|
return {
|
|
42099
42099
|
blocked: false,
|
|
@@ -42337,6 +42337,7 @@ function validateShellCommand(command) {
|
|
|
42337
42337
|
|
|
42338
42338
|
//#endregion
|
|
42339
42339
|
//#region src/agents/pi-tools.validate-wrapper.ts
|
|
42340
|
+
const log$1 = createSubsystemLogger("agents/tool-validate");
|
|
42340
42341
|
const EXEC_TOOL_NAMES = new Set(["exec", "bash"]);
|
|
42341
42342
|
const FILE_TOOL_NAMES = new Set([
|
|
42342
42343
|
"write",
|
|
@@ -42395,13 +42396,22 @@ function wrapToolWithArgValidation(tool) {
|
|
|
42395
42396
|
execute(toolCallId, params, ...rest) {
|
|
42396
42397
|
if (isExecTool) {
|
|
42397
42398
|
const command = params.command ?? params.cmd;
|
|
42398
|
-
if (typeof command !== "string")
|
|
42399
|
+
if (typeof command !== "string") {
|
|
42400
|
+
log$1.debug(`[validate] exec called without string command: keys=${Object.keys(params).join(",")}`);
|
|
42401
|
+
return originalExecute.call(tool, toolCallId, params, ...rest);
|
|
42402
|
+
}
|
|
42399
42403
|
const result = validateShellCommand(command);
|
|
42400
|
-
if (!result.valid)
|
|
42401
|
-
|
|
42402
|
-
|
|
42403
|
-
|
|
42404
|
-
|
|
42404
|
+
if (!result.valid) {
|
|
42405
|
+
log$1.warn(`[validate] exec command rejected: reason=${result.reason} raw=${command.slice(0, 100)}`);
|
|
42406
|
+
return Promise.resolve({ output: `Error: ${result.reason}. The command appears to contain model control tokens. Please provide a clean shell command without any <|, |>, or XML-like tags. Only valid shell syntax is accepted.` });
|
|
42407
|
+
}
|
|
42408
|
+
if (result.cleaned !== command) {
|
|
42409
|
+
log$1.debug(`[validate] exec command cleaned: raw=${command.slice(0, 80)} → cleaned=${result.cleaned.slice(0, 80)}`);
|
|
42410
|
+
return originalExecute.call(tool, toolCallId, {
|
|
42411
|
+
...params,
|
|
42412
|
+
command: result.cleaned
|
|
42413
|
+
}, ...rest);
|
|
42414
|
+
}
|
|
42405
42415
|
return originalExecute.call(tool, toolCallId, params, ...rest);
|
|
42406
42416
|
}
|
|
42407
42417
|
const pathKey = FILE_PATH_KEYS.find((k) => typeof params[k] === "string");
|
|
@@ -42772,7 +42782,7 @@ async function truncateOversizedToolResultsInSession(params) {
|
|
|
42772
42782
|
const textLength = getToolResultTextLength(msg);
|
|
42773
42783
|
if (textLength > maxChars) {
|
|
42774
42784
|
oversizedIndices.push(i);
|
|
42775
|
-
log$
|
|
42785
|
+
log$5.info(`[tool-result-truncation] Found oversized tool result: entry=${entry.id} chars=${textLength} maxChars=${maxChars} sessionKey=${params.sessionKey ?? params.sessionId ?? "unknown"}`);
|
|
42776
42786
|
}
|
|
42777
42787
|
}
|
|
42778
42788
|
if (oversizedIndices.length === 0) return {
|
|
@@ -42794,7 +42804,7 @@ async function truncateOversizedToolResultsInSession(params) {
|
|
|
42794
42804
|
message = truncateToolResultMessage(message, maxChars);
|
|
42795
42805
|
truncatedCount++;
|
|
42796
42806
|
const newLength = getToolResultTextLength(message);
|
|
42797
|
-
log$
|
|
42807
|
+
log$5.info(`[tool-result-truncation] Truncated tool result: originalEntry=${entry.id} newChars=${newLength} sessionKey=${params.sessionKey ?? params.sessionId ?? "unknown"}`);
|
|
42798
42808
|
}
|
|
42799
42809
|
sessionManager.appendMessage(message);
|
|
42800
42810
|
} else if (entry.type === "compaction") sessionManager.appendCompaction(entry.summary, entry.firstKeptEntryId, entry.tokensBefore, entry.details, entry.fromHook);
|
|
@@ -42808,14 +42818,14 @@ async function truncateOversizedToolResultsInSession(params) {
|
|
|
42808
42818
|
if (entry.name) sessionManager.appendSessionInfo(entry.name);
|
|
42809
42819
|
}
|
|
42810
42820
|
}
|
|
42811
|
-
log$
|
|
42821
|
+
log$5.info(`[tool-result-truncation] Truncated ${truncatedCount} tool result(s) in session (contextWindow=${contextWindowTokens} maxChars=${maxChars}) sessionKey=${params.sessionKey ?? params.sessionId ?? "unknown"}`);
|
|
42812
42822
|
return {
|
|
42813
42823
|
truncated: true,
|
|
42814
42824
|
truncatedCount
|
|
42815
42825
|
};
|
|
42816
42826
|
} catch (err) {
|
|
42817
42827
|
const errMsg = err instanceof Error ? err.message : String(err);
|
|
42818
|
-
log$
|
|
42828
|
+
log$5.warn(`[tool-result-truncation] Failed to truncate: ${errMsg}`);
|
|
42819
42829
|
return {
|
|
42820
42830
|
truncated: false,
|
|
42821
42831
|
truncatedCount: 0,
|
|
@@ -44473,7 +44483,7 @@ function resolveAnthropicBetas(extraParams, provider, modelId) {
|
|
|
44473
44483
|
for (const beta of configured) if (typeof beta === "string" && beta.trim()) betas.add(beta.trim());
|
|
44474
44484
|
}
|
|
44475
44485
|
if (extraParams?.context1m === true) if (isAnthropic1MModel(modelId)) betas.add(ANTHROPIC_CONTEXT_1M_BETA);
|
|
44476
|
-
else log$
|
|
44486
|
+
else log$5.warn(`ignoring context1m for non-opus/sonnet model: ${provider}/${modelId}`);
|
|
44477
44487
|
return betas.size > 0 ? [...betas] : void 0;
|
|
44478
44488
|
}
|
|
44479
44489
|
function mergeAnthropicBetaHeader(headers, betas) {
|
|
@@ -45084,14 +45094,14 @@ function logToolSchemasForGoogle(params) {
|
|
|
45084
45094
|
if (params.provider !== "google-antigravity" && params.provider !== "google-gemini-cli") return;
|
|
45085
45095
|
const toolNames = params.tools.map((tool, index) => `${index}:${tool.name}`);
|
|
45086
45096
|
const tools = sanitizeToolsForGoogle(params);
|
|
45087
|
-
log$
|
|
45097
|
+
log$5.info("google tool schema snapshot", {
|
|
45088
45098
|
provider: params.provider,
|
|
45089
45099
|
toolCount: tools.length,
|
|
45090
45100
|
tools: toolNames
|
|
45091
45101
|
});
|
|
45092
45102
|
for (const [index, tool] of tools.entries()) {
|
|
45093
45103
|
const violations = findUnsupportedSchemaKeywords(tool.parameters, `${tool.name}.parameters`);
|
|
45094
|
-
if (violations.length > 0) log$
|
|
45104
|
+
if (violations.length > 0) log$5.warn("google tool schema has unsupported keywords", {
|
|
45095
45105
|
index,
|
|
45096
45106
|
tool: tool.name,
|
|
45097
45107
|
violations: violations.slice(0, 12),
|
|
@@ -45103,7 +45113,7 @@ const compactionFailureEmitter = new EventEmitter();
|
|
|
45103
45113
|
registerUnhandledRejectionHandler((reason) => {
|
|
45104
45114
|
const message = describeUnknownError(reason);
|
|
45105
45115
|
if (!isCompactionFailureError(message)) return false;
|
|
45106
|
-
log$
|
|
45116
|
+
log$5.error(`Auto-compaction failed (unhandled): ${message}`);
|
|
45107
45117
|
compactionFailureEmitter.emit("failure", message);
|
|
45108
45118
|
return true;
|
|
45109
45119
|
});
|
|
@@ -45155,7 +45165,7 @@ function applyGoogleTurnOrderingFix(params) {
|
|
|
45155
45165
|
const sanitized = sanitizeGoogleTurnOrdering(params.messages);
|
|
45156
45166
|
const didPrepend = sanitized !== params.messages;
|
|
45157
45167
|
if (didPrepend && !hasGoogleTurnOrderingMarker(params.sessionManager)) {
|
|
45158
|
-
(params.warn ?? ((message) => log$
|
|
45168
|
+
(params.warn ?? ((message) => log$5.warn(message)))(`google turn ordering fixup: prepended user bootstrap (sessionId=${params.sessionId})`);
|
|
45159
45169
|
markGoogleTurnOrderingMarker(params.sessionManager);
|
|
45160
45170
|
}
|
|
45161
45171
|
return {
|
|
@@ -45763,7 +45773,7 @@ function isImageExtension(filePath) {
|
|
|
45763
45773
|
}
|
|
45764
45774
|
async function sanitizeImagesWithLog(images, label, imageSanitization) {
|
|
45765
45775
|
const { images: sanitized, dropped } = await sanitizeImageBlocks(images, label, imageSanitization);
|
|
45766
|
-
if (dropped > 0) log$
|
|
45776
|
+
if (dropped > 0) log$5.warn(`Native image: dropped ${dropped} image(s) after sanitization (${label}).`);
|
|
45767
45777
|
return sanitized;
|
|
45768
45778
|
}
|
|
45769
45779
|
/**
|
|
@@ -45838,7 +45848,7 @@ async function loadImageFromRef(ref, workspaceDir, options) {
|
|
|
45838
45848
|
try {
|
|
45839
45849
|
let targetPath = ref.resolved;
|
|
45840
45850
|
if (ref.type === "url") {
|
|
45841
|
-
log$
|
|
45851
|
+
log$5.debug(`Native image: rejecting remote URL (local-only): ${ref.resolved}`);
|
|
45842
45852
|
return null;
|
|
45843
45853
|
}
|
|
45844
45854
|
if (ref.type === "path") {
|
|
@@ -45848,7 +45858,7 @@ async function loadImageFromRef(ref, workspaceDir, options) {
|
|
|
45848
45858
|
cwd: options.sandbox.root
|
|
45849
45859
|
}).hostPath;
|
|
45850
45860
|
} catch (err) {
|
|
45851
|
-
log$
|
|
45861
|
+
log$5.debug(`Native image: sandbox validation failed for ${ref.resolved}: ${err instanceof Error ? err.message : String(err)}`);
|
|
45852
45862
|
return null;
|
|
45853
45863
|
}
|
|
45854
45864
|
else if (!path.isAbsolute(targetPath)) targetPath = path.resolve(workspaceDir, targetPath);
|
|
@@ -45862,7 +45872,7 @@ async function loadImageFromRef(ref, workspaceDir, options) {
|
|
|
45862
45872
|
})
|
|
45863
45873
|
}) : await loadWebMedia(targetPath, options?.maxBytes);
|
|
45864
45874
|
if (media.kind !== "image") {
|
|
45865
|
-
log$
|
|
45875
|
+
log$5.debug(`Native image: not an image file: ${targetPath} (got ${media.kind})`);
|
|
45866
45876
|
return null;
|
|
45867
45877
|
}
|
|
45868
45878
|
const mimeType = media.contentType ?? "image/jpeg";
|
|
@@ -45872,7 +45882,7 @@ async function loadImageFromRef(ref, workspaceDir, options) {
|
|
|
45872
45882
|
mimeType
|
|
45873
45883
|
};
|
|
45874
45884
|
} catch (err) {
|
|
45875
|
-
log$
|
|
45885
|
+
log$5.debug(`Native image: failed to load ${ref.resolved}: ${err instanceof Error ? err.message : String(err)}`);
|
|
45876
45886
|
return null;
|
|
45877
45887
|
}
|
|
45878
45888
|
}
|
|
@@ -45971,7 +45981,7 @@ async function detectAndLoadPromptImages(params) {
|
|
|
45971
45981
|
loadedCount: 0,
|
|
45972
45982
|
skippedCount: 0
|
|
45973
45983
|
};
|
|
45974
|
-
log$
|
|
45984
|
+
log$5.debug(`Native image: detected ${allRefs.length} image refs (${promptRefs.length} in prompt, ${uniqueHistoryRefs.length} in history)`);
|
|
45975
45985
|
const promptImages = [...params.existingImages ?? []];
|
|
45976
45986
|
const historyImagesByIndex = /* @__PURE__ */ new Map();
|
|
45977
45987
|
let loadedCount = 0;
|
|
@@ -45988,7 +45998,7 @@ async function detectAndLoadPromptImages(params) {
|
|
|
45988
45998
|
else historyImagesByIndex.set(ref.messageIndex, [image]);
|
|
45989
45999
|
} else promptImages.push(image);
|
|
45990
46000
|
loadedCount++;
|
|
45991
|
-
log$
|
|
46001
|
+
log$5.debug(`Native image: loaded ${ref.type} ${ref.resolved}`);
|
|
45992
46002
|
} else skippedCount++;
|
|
45993
46003
|
}
|
|
45994
46004
|
const imageSanitization = { maxDimensionPx: params.maxDimensionPx };
|
|
@@ -46084,7 +46094,7 @@ async function runEmbeddedAttempt(params) {
|
|
|
46084
46094
|
const resolvedWorkspace = resolveUserPath(params.workspaceDir);
|
|
46085
46095
|
const prevCwd = process.cwd();
|
|
46086
46096
|
const runAbortController = new AbortController();
|
|
46087
|
-
log$
|
|
46097
|
+
log$5.debug(`embedded run start: runId=${params.runId} sessionId=${params.sessionId} provider=${params.provider} model=${params.modelId} thinking=${params.thinkLevel} messageChannel=${params.messageChannel ?? params.messageProvider ?? "unknown"}`);
|
|
46088
46098
|
await fs$1.mkdir(resolvedWorkspace, { recursive: true });
|
|
46089
46099
|
const sandboxSessionKey = params.sessionKey?.trim() || params.sessionId;
|
|
46090
46100
|
const sandbox = await resolveSandboxContext({
|
|
@@ -46120,7 +46130,7 @@ async function runEmbeddedAttempt(params) {
|
|
|
46120
46130
|
sessionId: params.sessionId,
|
|
46121
46131
|
warn: makeBootstrapWarn({
|
|
46122
46132
|
sessionLabel,
|
|
46123
|
-
warn: (message) => log$
|
|
46133
|
+
warn: (message) => log$5.warn(message)
|
|
46124
46134
|
})
|
|
46125
46135
|
});
|
|
46126
46136
|
const workspaceNotes = hookAdjustedBootstrapFiles.some((file) => file.name === DEFAULT_BOOTSTRAP_FILENAME && !file.missing) ? ["Reminder: commit your changes in this workspace after edits."] : void 0;
|
|
@@ -46319,7 +46329,7 @@ async function runEmbeddedAttempt(params) {
|
|
|
46319
46329
|
try {
|
|
46320
46330
|
await repairSessionFileIfNeeded({
|
|
46321
46331
|
sessionFile: params.sessionFile,
|
|
46322
|
-
warn: (message) => log$
|
|
46332
|
+
warn: (message) => log$5.warn(message)
|
|
46323
46333
|
});
|
|
46324
46334
|
const hadSessionFile = await fs$1.stat(params.sessionFile).then(() => true).catch(() => false);
|
|
46325
46335
|
const transcriptPolicy = resolveTranscriptPolicy({
|
|
@@ -46328,7 +46338,7 @@ async function runEmbeddedAttempt(params) {
|
|
|
46328
46338
|
modelId: params.modelId
|
|
46329
46339
|
});
|
|
46330
46340
|
const versionCheck = await handleSessionVersion(params.sessionFile);
|
|
46331
|
-
if (versionCheck.archived) log$
|
|
46341
|
+
if (versionCheck.archived) log$5.warn(`session archived: created by ${versionCheck.poisonVersion}, known corruption range → ${versionCheck.archivePath}`);
|
|
46332
46342
|
await prewarmSessionFile(params.sessionFile);
|
|
46333
46343
|
sessionManager = guardSessionManager(SessionManager.open(params.sessionFile), {
|
|
46334
46344
|
agentId: sessionAgentId,
|
|
@@ -46583,7 +46593,6 @@ async function runEmbeddedAttempt(params) {
|
|
|
46583
46593
|
const TOOL_ERROR_ABORT_THRESHOLD = 5;
|
|
46584
46594
|
const TOOL_ERROR_WARN_THRESHOLD = 3;
|
|
46585
46595
|
let consecutiveToolErrors = 0;
|
|
46586
|
-
let lastErrorToolName = "";
|
|
46587
46596
|
const subscription = subscribeEmbeddedPiSession({
|
|
46588
46597
|
session: activeSession,
|
|
46589
46598
|
runId: params.runId,
|
|
@@ -46607,26 +46616,23 @@ async function runEmbeddedAttempt(params) {
|
|
|
46607
46616
|
params.onAgentEvent?.(evt);
|
|
46608
46617
|
if (evt.stream === "tool" && !aborted) {
|
|
46609
46618
|
const phase = typeof evt.data?.phase === "string" ? evt.data.phase : "";
|
|
46610
|
-
const toolName = typeof evt.data?.name === "string" ? evt.data.name : "";
|
|
46611
46619
|
const isError = evt.data?.isError === true;
|
|
46612
|
-
if (phase === "result"
|
|
46613
|
-
if (isError
|
|
46614
|
-
else
|
|
46615
|
-
consecutiveToolErrors = 1;
|
|
46616
|
-
lastErrorToolName = toolName;
|
|
46617
|
-
} else {
|
|
46618
|
-
consecutiveToolErrors = 0;
|
|
46619
|
-
lastErrorToolName = "";
|
|
46620
|
-
}
|
|
46620
|
+
if (phase === "result") {
|
|
46621
|
+
if (isError) consecutiveToolErrors++;
|
|
46622
|
+
else consecutiveToolErrors = 0;
|
|
46621
46623
|
if (consecutiveToolErrors >= TOOL_ERROR_ABORT_THRESHOLD) {
|
|
46622
|
-
|
|
46623
|
-
|
|
46624
|
-
|
|
46624
|
+
const toolName = typeof evt.data?.name === "string" ? evt.data.name : "unknown";
|
|
46625
|
+
log$5.error(`Agent-loop circuit breaker: ${consecutiveToolErrors} consecutive tool errors (last: ${toolName}). Aborting run ${params.runId}.`);
|
|
46626
|
+
abortRun(false, /* @__PURE__ */ new Error(`${consecutiveToolErrors} consecutive tool errors. The model may be generating corrupted tool arguments. Run aborted to prevent infinite loop.`));
|
|
46627
|
+
} else if (consecutiveToolErrors === TOOL_ERROR_WARN_THRESHOLD) {
|
|
46628
|
+
const toolName = typeof evt.data?.name === "string" ? evt.data.name : "unknown";
|
|
46629
|
+
log$5.warn(`Agent-loop tool error warning: ${consecutiveToolErrors} consecutive failures (last: ${toolName}). runId=${params.runId}`);
|
|
46630
|
+
}
|
|
46625
46631
|
}
|
|
46626
46632
|
}
|
|
46627
46633
|
if (evt.stream === "assistant" && typeof evt.data?.text === "string" && !aborted) {
|
|
46628
46634
|
streamMonitor.onChunk(evt.data.text);
|
|
46629
|
-
if (streamMonitor.shouldStop()) log$
|
|
46635
|
+
if (streamMonitor.shouldStop()) log$5.debug(`stream monitor detection (log-only, no abort): runId=${params.runId} reason=${streamMonitor.getStopReason()}`);
|
|
46630
46636
|
}
|
|
46631
46637
|
},
|
|
46632
46638
|
enforceFinalTag: params.enforceFinalTag,
|
|
@@ -46646,7 +46652,7 @@ async function runEmbeddedAttempt(params) {
|
|
|
46646
46652
|
let abortWarnTimer;
|
|
46647
46653
|
const isProbeSession = params.sessionId?.startsWith("probe-") ?? false;
|
|
46648
46654
|
const abortTimer = setTimeout(() => {
|
|
46649
|
-
if (!isProbeSession) log$
|
|
46655
|
+
if (!isProbeSession) log$5.warn(`embedded run timeout: runId=${params.runId} sessionId=${params.sessionId} timeoutMs=${params.timeoutMs}`);
|
|
46650
46656
|
if (shouldFlagCompactionTimeout({
|
|
46651
46657
|
isTimeout: true,
|
|
46652
46658
|
isCompactionPendingOrRetrying: subscription.isCompacting(),
|
|
@@ -46655,7 +46661,7 @@ async function runEmbeddedAttempt(params) {
|
|
|
46655
46661
|
abortRun(true);
|
|
46656
46662
|
if (!abortWarnTimer) abortWarnTimer = setTimeout(() => {
|
|
46657
46663
|
if (!activeSession.isStreaming) return;
|
|
46658
|
-
if (!isProbeSession) log$
|
|
46664
|
+
if (!isProbeSession) log$5.warn(`embedded run abort still streaming: runId=${params.runId} sessionId=${params.sessionId}`);
|
|
46659
46665
|
}, 1e4);
|
|
46660
46666
|
}, Math.max(1, params.timeoutMs));
|
|
46661
46667
|
armSymipulseTimer = () => {
|
|
@@ -46663,7 +46669,7 @@ async function runEmbeddedAttempt(params) {
|
|
|
46663
46669
|
clearSymipulseTimer();
|
|
46664
46670
|
symipulseTimer = setTimeout(() => {
|
|
46665
46671
|
if (aborted) return;
|
|
46666
|
-
if (!isProbeSession) log$
|
|
46672
|
+
if (!isProbeSession) log$5.warn(`symipulse timeout: runId=${params.runId} sessionId=${params.sessionId} symipulseMs=${symipulseMs} (no activity)`);
|
|
46667
46673
|
if (shouldFlagCompactionTimeout({
|
|
46668
46674
|
isTimeout: true,
|
|
46669
46675
|
isCompactionPendingOrRetrying: subscription.isCompacting(),
|
|
@@ -46707,13 +46713,13 @@ async function runEmbeddedAttempt(params) {
|
|
|
46707
46713
|
prompt: params.prompt,
|
|
46708
46714
|
messages: activeSession.messages
|
|
46709
46715
|
}, hookCtx).catch((hookErr) => {
|
|
46710
|
-
log$
|
|
46716
|
+
log$5.warn(`before_prompt_build hook failed: ${String(hookErr)}`);
|
|
46711
46717
|
}) : void 0;
|
|
46712
46718
|
const legacyResult = hookRunner?.hasHooks("before_agent_start") ? await hookRunner.runBeforeAgentStart({
|
|
46713
46719
|
prompt: params.prompt,
|
|
46714
46720
|
messages: activeSession.messages
|
|
46715
46721
|
}, hookCtx).catch((hookErr) => {
|
|
46716
|
-
log$
|
|
46722
|
+
log$5.warn(`before_agent_start hook (legacy prompt build path) failed: ${String(hookErr)}`);
|
|
46717
46723
|
}) : void 0;
|
|
46718
46724
|
const hookResult = {
|
|
46719
46725
|
systemPrompt: promptBuildResult?.systemPrompt ?? legacyResult?.systemPrompt,
|
|
@@ -46721,7 +46727,7 @@ async function runEmbeddedAttempt(params) {
|
|
|
46721
46727
|
};
|
|
46722
46728
|
if (hookResult?.prependContext) {
|
|
46723
46729
|
effectivePrompt = `${hookResult.prependContext}\n\n${params.prompt}`;
|
|
46724
|
-
log$
|
|
46730
|
+
log$5.debug(`hooks: prepended context to prompt (${hookResult.prependContext.length} chars)`);
|
|
46725
46731
|
}
|
|
46726
46732
|
{
|
|
46727
46733
|
const autoRecallAgentId = normalizeAgentId(params.sessionKey);
|
|
@@ -46738,11 +46744,11 @@ async function runEmbeddedAttempt(params) {
|
|
|
46738
46744
|
if (recallResults.length > 0) {
|
|
46739
46745
|
const recallBlock = `<memory_context>\nThe following memory snippets were automatically retrieved as relevant context:\n\n${recallResults.map((r) => `[${r.path}#L${r.startLine}-L${r.endLine}]\n${r.snippet}`).join("\n---\n")}\n</memory_context>`;
|
|
46740
46746
|
effectivePrompt = `${recallBlock}\n\n${effectivePrompt}`;
|
|
46741
|
-
log$
|
|
46747
|
+
log$5.debug(`auto-recall: injected ${recallResults.length} snippets (${recallBlock.length} chars)`);
|
|
46742
46748
|
}
|
|
46743
46749
|
}
|
|
46744
46750
|
} catch (recallErr) {
|
|
46745
|
-
log$
|
|
46751
|
+
log$5.debug(`auto-recall: skipped (${String(recallErr)})`);
|
|
46746
46752
|
}
|
|
46747
46753
|
}
|
|
46748
46754
|
{
|
|
@@ -46754,10 +46760,10 @@ async function runEmbeddedAttempt(params) {
|
|
|
46754
46760
|
if (planResult.enter) {
|
|
46755
46761
|
if (planResult.stripped != null) effectivePrompt = planResult.stripped;
|
|
46756
46762
|
effectivePrompt = `${PLAN_MODE_SYSTEM_PROMPT}\n\n${effectivePrompt}`;
|
|
46757
|
-
log$
|
|
46763
|
+
log$5.info(`plan-mode: activated (${planResult.reason}) for runId=${params.runId}`);
|
|
46758
46764
|
} else if (planResult.stripped != null) effectivePrompt = planResult.stripped;
|
|
46759
46765
|
}
|
|
46760
|
-
log$
|
|
46766
|
+
log$5.debug(`embedded run prompt start: runId=${params.runId} sessionId=${params.sessionId}`);
|
|
46761
46767
|
cacheTrace?.recordStage("prompt:before", {
|
|
46762
46768
|
prompt: effectivePrompt,
|
|
46763
46769
|
messages: activeSession.messages
|
|
@@ -46769,7 +46775,7 @@ async function runEmbeddedAttempt(params) {
|
|
|
46769
46775
|
const sessionContext = sessionManager.buildSessionContext();
|
|
46770
46776
|
const sanitizedOrphan = transcriptPolicy.sanitizeThinkingSignatures ? sanitizeAntigravityThinkingBlocks(sessionContext.messages) : sessionContext.messages;
|
|
46771
46777
|
activeSession.agent.replaceMessages(sanitizedOrphan);
|
|
46772
|
-
log$
|
|
46778
|
+
log$5.warn(`Removed orphaned user message to prevent consecutive user turns. runId=${params.runId} sessionId=${params.sessionId}`);
|
|
46773
46779
|
}
|
|
46774
46780
|
try {
|
|
46775
46781
|
const imageResult = await detectAndLoadPromptImages({
|
|
@@ -46791,12 +46797,12 @@ async function runEmbeddedAttempt(params) {
|
|
|
46791
46797
|
messages: activeSession.messages,
|
|
46792
46798
|
note: `images: prompt=${imageResult.images.length} history=${imageResult.historyImagesByIndex.size}`
|
|
46793
46799
|
});
|
|
46794
|
-
if (log$
|
|
46800
|
+
if (log$5.isEnabled("debug")) {
|
|
46795
46801
|
const msgCount = activeSession.messages.length;
|
|
46796
46802
|
const systemLen = systemPromptText?.length ?? 0;
|
|
46797
46803
|
const promptLen = effectivePrompt.length;
|
|
46798
46804
|
const sessionSummary = summarizeSessionContext(activeSession.messages);
|
|
46799
|
-
log$
|
|
46805
|
+
log$5.debug(`[context-diag] pre-prompt: sessionKey=${params.sessionKey ?? params.sessionId} messages=${msgCount} roleCounts=${sessionSummary.roleCounts} historyTextChars=${sessionSummary.totalTextChars} maxMessageTextChars=${sessionSummary.maxMessageTextChars} historyImageBlocks=${sessionSummary.totalImageBlocks} systemPromptChars=${systemLen} promptChars=${promptLen} promptImages=${imageResult.images.length} historyImageMessages=${imageResult.historyImagesByIndex.size} provider=${params.provider}/${params.modelId} sessionFile=${params.sessionFile}`);
|
|
46800
46806
|
}
|
|
46801
46807
|
if (hookRunner?.hasHooks("llm_input")) hookRunner.runLlmInput({
|
|
46802
46808
|
runId: params.runId,
|
|
@@ -46814,7 +46820,7 @@ async function runEmbeddedAttempt(params) {
|
|
|
46814
46820
|
workspaceDir: params.workspaceDir,
|
|
46815
46821
|
messageProvider: params.messageProvider ?? void 0
|
|
46816
46822
|
}).catch((err) => {
|
|
46817
|
-
log$
|
|
46823
|
+
log$5.warn(`llm_input hook failed: ${String(err)}`);
|
|
46818
46824
|
});
|
|
46819
46825
|
if (imageResult.images.length > 0) await abortable(activeSession.prompt(effectivePrompt, { images: imageResult.images }));
|
|
46820
46826
|
else await abortable(activeSession.prompt(effectivePrompt));
|
|
@@ -46822,7 +46828,7 @@ async function runEmbeddedAttempt(params) {
|
|
|
46822
46828
|
promptError = err;
|
|
46823
46829
|
promptErrorSource = "prompt";
|
|
46824
46830
|
} finally {
|
|
46825
|
-
log$
|
|
46831
|
+
log$5.debug(`embedded run prompt end: runId=${params.runId} sessionId=${params.sessionId} durationMs=${Date.now() - promptStartedAt}`);
|
|
46826
46832
|
}
|
|
46827
46833
|
const wasCompactingBefore = activeSession.isCompacting;
|
|
46828
46834
|
const snapshot = activeSession.messages.slice();
|
|
@@ -46837,7 +46843,7 @@ async function runEmbeddedAttempt(params) {
|
|
|
46837
46843
|
promptError = err;
|
|
46838
46844
|
promptErrorSource = "compaction";
|
|
46839
46845
|
}
|
|
46840
|
-
if (!isProbeSession) log$
|
|
46846
|
+
if (!isProbeSession) log$5.debug(`compaction wait aborted: runId=${params.runId} sessionId=${params.sessionId}`);
|
|
46841
46847
|
} else throw err;
|
|
46842
46848
|
}
|
|
46843
46849
|
if (!timedOutDuringCompaction) {
|
|
@@ -46855,7 +46861,7 @@ async function runEmbeddedAttempt(params) {
|
|
|
46855
46861
|
currentSessionId: activeSession.sessionId
|
|
46856
46862
|
});
|
|
46857
46863
|
if (timedOutDuringCompaction) {
|
|
46858
|
-
if (!isProbeSession) log$
|
|
46864
|
+
if (!isProbeSession) log$5.warn(`using ${snapshotSelection.source} snapshot: timed out during compaction runId=${params.runId} sessionId=${params.sessionId}`);
|
|
46859
46865
|
}
|
|
46860
46866
|
messagesSnapshot = snapshotSelection.messagesSnapshot;
|
|
46861
46867
|
sessionIdUsed = snapshotSelection.sessionIdUsed;
|
|
@@ -46870,7 +46876,7 @@ async function runEmbeddedAttempt(params) {
|
|
|
46870
46876
|
error: describeUnknownError(promptError)
|
|
46871
46877
|
});
|
|
46872
46878
|
} catch (entryErr) {
|
|
46873
|
-
log$
|
|
46879
|
+
log$5.warn(`failed to persist prompt error entry: ${String(entryErr)}`);
|
|
46874
46880
|
}
|
|
46875
46881
|
cacheTrace?.recordStage("session:after", {
|
|
46876
46882
|
messages: messagesSnapshot,
|
|
@@ -46889,17 +46895,17 @@ async function runEmbeddedAttempt(params) {
|
|
|
46889
46895
|
workspaceDir: params.workspaceDir,
|
|
46890
46896
|
messageProvider: params.messageProvider ?? void 0
|
|
46891
46897
|
}).catch((err) => {
|
|
46892
|
-
log$
|
|
46898
|
+
log$5.warn(`agent_end hook failed: ${err}`);
|
|
46893
46899
|
});
|
|
46894
46900
|
} finally {
|
|
46895
46901
|
clearTimeout(abortTimer);
|
|
46896
46902
|
clearSymipulseTimer();
|
|
46897
46903
|
if (abortWarnTimer) clearTimeout(abortWarnTimer);
|
|
46898
|
-
if (!isProbeSession && (aborted || timedOut) && !timedOutDuringCompaction) log$
|
|
46904
|
+
if (!isProbeSession && (aborted || timedOut) && !timedOutDuringCompaction) log$5.debug(`run cleanup: runId=${params.runId} sessionId=${params.sessionId} aborted=${aborted} timedOut=${timedOut}`);
|
|
46899
46905
|
try {
|
|
46900
46906
|
unsubscribe();
|
|
46901
46907
|
} catch (err) {
|
|
46902
|
-
log$
|
|
46908
|
+
log$5.error(`CRITICAL: unsubscribe failed, possible resource leak: runId=${params.runId} ${String(err)}`);
|
|
46903
46909
|
}
|
|
46904
46910
|
clearActiveEmbeddedRun(params.sessionId, queueHandle, params.sessionKey);
|
|
46905
46911
|
params.abortSignal?.removeEventListener?.("abort", onAbort);
|
|
@@ -46924,7 +46930,7 @@ async function runEmbeddedAttempt(params) {
|
|
|
46924
46930
|
workspaceDir: params.workspaceDir,
|
|
46925
46931
|
messageProvider: params.messageProvider ?? void 0
|
|
46926
46932
|
}).catch((err) => {
|
|
46927
|
-
log$
|
|
46933
|
+
log$5.warn(`llm_output hook failed: ${String(err)}`);
|
|
46928
46934
|
});
|
|
46929
46935
|
return {
|
|
46930
46936
|
aborted,
|
|
@@ -47185,7 +47191,7 @@ async function runEmbeddedPiAgent(params) {
|
|
|
47185
47191
|
const redactedSessionId = redactRunIdentifier(params.sessionId);
|
|
47186
47192
|
const redactedSessionKey = redactRunIdentifier(params.sessionKey);
|
|
47187
47193
|
const redactedWorkspace = redactRunIdentifier(resolvedWorkspace);
|
|
47188
|
-
if (workspaceResolution.usedFallback) log$
|
|
47194
|
+
if (workspaceResolution.usedFallback) log$5.warn(`[workspace-fallback] caller=runEmbeddedPiAgent reason=${workspaceResolution.fallbackReason} run=${params.runId} session=${redactedSessionId} sessionKey=${redactedSessionKey} agent=${workspaceResolution.agentId} workspace=${redactedWorkspace}`);
|
|
47189
47195
|
const prevCwd = process.cwd();
|
|
47190
47196
|
let provider = (params.provider ?? DEFAULT_PROVIDER).trim() || DEFAULT_PROVIDER;
|
|
47191
47197
|
let modelId = (params.model ?? DEFAULT_MODEL).trim() || DEFAULT_MODEL;
|
|
@@ -47204,7 +47210,7 @@ async function runEmbeddedPiAgent(params) {
|
|
|
47204
47210
|
if (hookRunner?.hasHooks("before_model_resolve")) try {
|
|
47205
47211
|
modelResolveOverride = await hookRunner.runBeforeModelResolve({ prompt: params.prompt }, hookCtx);
|
|
47206
47212
|
} catch (hookErr) {
|
|
47207
|
-
log$
|
|
47213
|
+
log$5.warn(`before_model_resolve hook failed: ${String(hookErr)}`);
|
|
47208
47214
|
}
|
|
47209
47215
|
if (hookRunner?.hasHooks("before_agent_start")) try {
|
|
47210
47216
|
const legacyResult = await hookRunner.runBeforeAgentStart({ prompt: params.prompt }, hookCtx);
|
|
@@ -47213,15 +47219,15 @@ async function runEmbeddedPiAgent(params) {
|
|
|
47213
47219
|
modelOverride: modelResolveOverride?.modelOverride ?? legacyResult?.modelOverride
|
|
47214
47220
|
};
|
|
47215
47221
|
} catch (hookErr) {
|
|
47216
|
-
log$
|
|
47222
|
+
log$5.warn(`before_agent_start hook (legacy model resolve path) failed: ${String(hookErr)}`);
|
|
47217
47223
|
}
|
|
47218
47224
|
if (modelResolveOverride?.providerOverride) {
|
|
47219
47225
|
provider = modelResolveOverride.providerOverride;
|
|
47220
|
-
log$
|
|
47226
|
+
log$5.info(`[hooks] provider overridden to ${provider}`);
|
|
47221
47227
|
}
|
|
47222
47228
|
if (modelResolveOverride?.modelOverride) {
|
|
47223
47229
|
modelId = modelResolveOverride.modelOverride;
|
|
47224
|
-
log$
|
|
47230
|
+
log$5.info(`[hooks] model overridden to ${modelId}`);
|
|
47225
47231
|
}
|
|
47226
47232
|
const { model, error, authStorage, modelRegistry } = resolveModel(provider, modelId, agentDir, params.config);
|
|
47227
47233
|
if (!model) throw new FailoverError(error ?? `Unknown model: ${provider}/${modelId}`, {
|
|
@@ -47241,9 +47247,9 @@ async function runEmbeddedPiAgent(params) {
|
|
|
47241
47247
|
warnBelowTokens: CONTEXT_WINDOW_WARN_BELOW_TOKENS,
|
|
47242
47248
|
hardMinTokens: CONTEXT_WINDOW_HARD_MIN_TOKENS
|
|
47243
47249
|
});
|
|
47244
|
-
if (ctxGuard.shouldWarn) log$
|
|
47250
|
+
if (ctxGuard.shouldWarn) log$5.warn(`low context window: ${provider}/${modelId} ctx=${ctxGuard.tokens} (warn<${CONTEXT_WINDOW_WARN_BELOW_TOKENS}) source=${ctxGuard.source}`);
|
|
47245
47251
|
if (ctxGuard.shouldBlock) {
|
|
47246
|
-
log$
|
|
47252
|
+
log$5.error(`blocked model (context window too small): ${provider}/${modelId} ctx=${ctxGuard.tokens} (min=${CONTEXT_WINDOW_HARD_MIN_TOKENS}) source=${ctxGuard.source}`);
|
|
47247
47253
|
throw new FailoverError(`Model context window too small (${ctxGuard.tokens} tokens). Minimum is ${CONTEXT_WINDOW_HARD_MIN_TOKENS}.`, {
|
|
47248
47254
|
reason: "unknown",
|
|
47249
47255
|
provider,
|
|
@@ -47373,7 +47379,7 @@ async function runEmbeddedPiAgent(params) {
|
|
|
47373
47379
|
while (true) {
|
|
47374
47380
|
if (runLoopIterations >= MAX_RUN_LOOP_ITERATIONS) {
|
|
47375
47381
|
const message = `Exceeded retry limit after ${runLoopIterations} attempts (max=${MAX_RUN_LOOP_ITERATIONS}).`;
|
|
47376
|
-
log$
|
|
47382
|
+
log$5.error(`[run-retry-limit] sessionKey=${params.sessionKey ?? params.sessionId} provider=${provider}/${modelId} attempts=${runLoopIterations} maxAttempts=${MAX_RUN_LOOP_ITERATIONS}`);
|
|
47377
47383
|
return {
|
|
47378
47384
|
payloads: [{
|
|
47379
47385
|
text: "Request failed after repeated internal retries. Please try again, or use /new to start a fresh session.",
|
|
@@ -47494,18 +47500,18 @@ async function runEmbeddedPiAgent(params) {
|
|
|
47494
47500
|
const overflowDiagId = createCompactionDiagId$1();
|
|
47495
47501
|
const errorText = contextOverflowError.text;
|
|
47496
47502
|
const msgCount = attempt.messagesSnapshot?.length ?? 0;
|
|
47497
|
-
log$
|
|
47503
|
+
log$5.warn(`[context-overflow-diag] sessionKey=${params.sessionKey ?? params.sessionId} provider=${provider}/${modelId} source=${contextOverflowError.source} messages=${msgCount} sessionFile=${params.sessionFile} diagId=${overflowDiagId} compactionAttempts=${overflowCompactionAttempts} error=${errorText.slice(0, 200)}`);
|
|
47498
47504
|
const isCompactionFailure = isCompactionFailureError(errorText);
|
|
47499
47505
|
const hadAttemptLevelCompaction = attemptCompactionCount > 0;
|
|
47500
47506
|
if (!isCompactionFailure && hadAttemptLevelCompaction && overflowCompactionAttempts < MAX_OVERFLOW_COMPACTION_ATTEMPTS) {
|
|
47501
47507
|
overflowCompactionAttempts++;
|
|
47502
|
-
log$
|
|
47508
|
+
log$5.warn(`context overflow persisted after in-attempt compaction (attempt ${overflowCompactionAttempts}/${MAX_OVERFLOW_COMPACTION_ATTEMPTS}); retrying prompt without additional compaction for ${provider}/${modelId}`);
|
|
47503
47509
|
continue;
|
|
47504
47510
|
}
|
|
47505
47511
|
if (!isCompactionFailure && !hadAttemptLevelCompaction && overflowCompactionAttempts < MAX_OVERFLOW_COMPACTION_ATTEMPTS) {
|
|
47506
|
-
if (log$
|
|
47512
|
+
if (log$5.isEnabled("debug")) log$5.debug(`[compaction-diag] decision diagId=${overflowDiagId} branch=compact isCompactionFailure=${isCompactionFailure} hasOversizedToolResults=unknown attempt=${overflowCompactionAttempts + 1} maxAttempts=${MAX_OVERFLOW_COMPACTION_ATTEMPTS}`);
|
|
47507
47513
|
overflowCompactionAttempts++;
|
|
47508
|
-
log$
|
|
47514
|
+
log$5.warn(`context overflow detected (attempt ${overflowCompactionAttempts}/${MAX_OVERFLOW_COMPACTION_ATTEMPTS}); attempting auto-compaction for ${provider}/${modelId}`);
|
|
47509
47515
|
const compactResult = await compactEmbeddedPiSessionDirect({
|
|
47510
47516
|
sessionId: params.sessionId,
|
|
47511
47517
|
sessionKey: params.sessionKey,
|
|
@@ -47534,10 +47540,10 @@ async function runEmbeddedPiAgent(params) {
|
|
|
47534
47540
|
});
|
|
47535
47541
|
if (compactResult.compacted) {
|
|
47536
47542
|
autoCompactionCount += 1;
|
|
47537
|
-
log$
|
|
47543
|
+
log$5.info(`auto-compaction succeeded for ${provider}/${modelId}; retrying prompt`);
|
|
47538
47544
|
continue;
|
|
47539
47545
|
}
|
|
47540
|
-
log$
|
|
47546
|
+
log$5.warn(`auto-compaction failed for ${provider}/${modelId}: ${compactResult.reason ?? "nothing to compact"}`);
|
|
47541
47547
|
}
|
|
47542
47548
|
if (!toolResultTruncationAttempted) {
|
|
47543
47549
|
const contextWindowTokens = ctxInfo.tokens;
|
|
@@ -47546,9 +47552,9 @@ async function runEmbeddedPiAgent(params) {
|
|
|
47546
47552
|
contextWindowTokens
|
|
47547
47553
|
}) : false;
|
|
47548
47554
|
if (hasOversized) {
|
|
47549
|
-
if (log$
|
|
47555
|
+
if (log$5.isEnabled("debug")) log$5.debug(`[compaction-diag] decision diagId=${overflowDiagId} branch=truncate_tool_results isCompactionFailure=${isCompactionFailure} hasOversizedToolResults=${hasOversized} attempt=${overflowCompactionAttempts} maxAttempts=${MAX_OVERFLOW_COMPACTION_ATTEMPTS}`);
|
|
47550
47556
|
toolResultTruncationAttempted = true;
|
|
47551
|
-
log$
|
|
47557
|
+
log$5.warn(`[context-overflow-recovery] Attempting tool result truncation for ${provider}/${modelId} (contextWindow=${contextWindowTokens} tokens)`);
|
|
47552
47558
|
const truncResult = await truncateOversizedToolResultsInSession({
|
|
47553
47559
|
sessionFile: params.sessionFile,
|
|
47554
47560
|
contextWindowTokens,
|
|
@@ -47556,13 +47562,13 @@ async function runEmbeddedPiAgent(params) {
|
|
|
47556
47562
|
sessionKey: params.sessionKey
|
|
47557
47563
|
});
|
|
47558
47564
|
if (truncResult.truncated) {
|
|
47559
|
-
log$
|
|
47565
|
+
log$5.info(`[context-overflow-recovery] Truncated ${truncResult.truncatedCount} tool result(s); retrying prompt`);
|
|
47560
47566
|
continue;
|
|
47561
47567
|
}
|
|
47562
|
-
log$
|
|
47563
|
-
} else if (log$
|
|
47568
|
+
log$5.warn(`[context-overflow-recovery] Tool result truncation did not help: ${truncResult.reason ?? "unknown"}`);
|
|
47569
|
+
} else if (log$5.isEnabled("debug")) log$5.debug(`[compaction-diag] decision diagId=${overflowDiagId} branch=give_up isCompactionFailure=${isCompactionFailure} hasOversizedToolResults=${hasOversized} attempt=${overflowCompactionAttempts} maxAttempts=${MAX_OVERFLOW_COMPACTION_ATTEMPTS}`);
|
|
47564
47570
|
}
|
|
47565
|
-
if ((isCompactionFailure || overflowCompactionAttempts >= MAX_OVERFLOW_COMPACTION_ATTEMPTS || toolResultTruncationAttempted) && log$
|
|
47571
|
+
if ((isCompactionFailure || overflowCompactionAttempts >= MAX_OVERFLOW_COMPACTION_ATTEMPTS || toolResultTruncationAttempted) && log$5.isEnabled("debug")) log$5.debug(`[compaction-diag] decision diagId=${overflowDiagId} branch=give_up isCompactionFailure=${isCompactionFailure} hasOversizedToolResults=unknown attempt=${overflowCompactionAttempts} maxAttempts=${MAX_OVERFLOW_COMPACTION_ATTEMPTS}`);
|
|
47566
47572
|
const kind = isCompactionFailure ? "compaction_failure" : "context_overflow";
|
|
47567
47573
|
return {
|
|
47568
47574
|
payloads: [{
|
|
@@ -47643,7 +47649,7 @@ async function runEmbeddedPiAgent(params) {
|
|
|
47643
47649
|
attempted: attemptedThinking
|
|
47644
47650
|
});
|
|
47645
47651
|
if (fallbackThinking) {
|
|
47646
|
-
log$
|
|
47652
|
+
log$5.warn(`unsupported thinking level for ${provider}/${modelId}; retrying with ${fallbackThinking}`);
|
|
47647
47653
|
thinkLevel = fallbackThinking;
|
|
47648
47654
|
continue;
|
|
47649
47655
|
}
|
|
@@ -47661,7 +47667,7 @@ async function runEmbeddedPiAgent(params) {
|
|
|
47661
47667
|
attempted: attemptedThinking
|
|
47662
47668
|
});
|
|
47663
47669
|
if (fallbackThinking && !aborted) {
|
|
47664
|
-
log$
|
|
47670
|
+
log$5.warn(`unsupported thinking level for ${provider}/${modelId}; retrying with ${fallbackThinking}`);
|
|
47665
47671
|
thinkLevel = fallbackThinking;
|
|
47666
47672
|
continue;
|
|
47667
47673
|
}
|
|
@@ -47678,7 +47684,7 @@ async function runEmbeddedPiAgent(params) {
|
|
|
47678
47684
|
imageDimensionError.contentIndex !== void 0 ? `content=${imageDimensionError.contentIndex}` : null,
|
|
47679
47685
|
imageDimensionError.maxDimensionPx !== void 0 ? `limit=${imageDimensionError.maxDimensionPx}px` : null
|
|
47680
47686
|
].filter(Boolean).join(" ");
|
|
47681
|
-
log$
|
|
47687
|
+
log$5.warn(`Profile ${lastProfileId} rejected image payload${details ? ` (${details})` : ""}.`);
|
|
47682
47688
|
}
|
|
47683
47689
|
const isLocalOllamaTimeout = timedOut && model.api === "ollama";
|
|
47684
47690
|
if (!aborted && failoverFailure || timedOut && !timedOutDuringCompaction && !isLocalOllamaTimeout) {
|
|
@@ -47690,8 +47696,8 @@ async function runEmbeddedPiAgent(params) {
|
|
|
47690
47696
|
cfg: params.config,
|
|
47691
47697
|
agentDir: params.agentDir
|
|
47692
47698
|
});
|
|
47693
|
-
if (timedOut && !isProbeSession) log$
|
|
47694
|
-
if (cloudCodeAssistFormatError) log$
|
|
47699
|
+
if (timedOut && !isProbeSession) log$5.warn(`Profile ${lastProfileId} timed out (possible rate limit). Trying next account...`);
|
|
47700
|
+
if (cloudCodeAssistFormatError) log$5.warn(`Profile ${lastProfileId} hit Cloud Code Assist format error. Tool calls will be sanitized on retry.`);
|
|
47695
47701
|
}
|
|
47696
47702
|
if (await advanceAuthProfile()) continue;
|
|
47697
47703
|
if (fallbackConfigured) {
|
|
@@ -47757,7 +47763,7 @@ async function runEmbeddedPiAgent(params) {
|
|
|
47757
47763
|
const hasCodeBlocks = attempt.assistantTexts.some((text) => /```[\s\S]*?```/.test(text));
|
|
47758
47764
|
if (hasCodeToolUsage || hasCodeBlocks) {
|
|
47759
47765
|
verificationPassCompleted = true;
|
|
47760
|
-
log$
|
|
47766
|
+
log$5.debug(`[verification] starting verification pass: runId=${params.runId} sessionId=${params.sessionId} trigger=${hasCodeToolUsage ? "tool_usage" : "code_blocks"}`);
|
|
47761
47767
|
const verificationPrompt = "Review your response against the original user request. Check: (1) Did you address every requirement? (2) Did you include tests if requested? (3) Did you run and verify the code works? If you missed anything, fix it now. If everything looks correct, briefly confirm.";
|
|
47762
47768
|
try {
|
|
47763
47769
|
const verifyAttempt = await runEmbeddedAttempt({
|
|
@@ -47843,10 +47849,10 @@ async function runEmbeddedPiAgent(params) {
|
|
|
47843
47849
|
payloads.length = 0;
|
|
47844
47850
|
payloads.push(...verifyPayloads);
|
|
47845
47851
|
}
|
|
47846
|
-
log$
|
|
47847
|
-
} else log$
|
|
47852
|
+
log$5.debug(`[verification] verification produced corrections: runId=${params.runId} tools=${verifyAttempt.toolMetas.length} texts=${verifyAttempt.assistantTexts.length}`);
|
|
47853
|
+
} else log$5.debug(`[verification] verification confirmed original response: runId=${params.runId}`);
|
|
47848
47854
|
} catch (verifyErr) {
|
|
47849
|
-
log$
|
|
47855
|
+
log$5.warn(`[verification] verification pass failed, keeping original response: runId=${params.runId} error=${String(verifyErr)}`);
|
|
47850
47856
|
}
|
|
47851
47857
|
}
|
|
47852
47858
|
}
|
|
@@ -47867,7 +47873,7 @@ async function runEmbeddedPiAgent(params) {
|
|
|
47867
47873
|
messagingToolSentTargets: attempt.messagingToolSentTargets,
|
|
47868
47874
|
successfulCronAdds: attempt.successfulCronAdds
|
|
47869
47875
|
};
|
|
47870
|
-
log$
|
|
47876
|
+
log$5.debug(`embedded run done: runId=${params.runId} sessionId=${params.sessionId} durationMs=${Date.now() - started} aborted=${aborted}`);
|
|
47871
47877
|
if (lastProfileId) {
|
|
47872
47878
|
await markAuthProfileGood({
|
|
47873
47879
|
store: authStore,
|
|
@@ -60588,7 +60594,7 @@ function isVoiceChannelType(type) {
|
|
|
60588
60594
|
function createDefaultDeps() {
|
|
60589
60595
|
return {
|
|
60590
60596
|
sendMessageWhatsApp: async (...args) => {
|
|
60591
|
-
const { sendMessageWhatsApp } = await import("./web-
|
|
60597
|
+
const { sendMessageWhatsApp } = await import("./web-LUMjboLF.js");
|
|
60592
60598
|
return await sendMessageWhatsApp(...args);
|
|
60593
60599
|
},
|
|
60594
60600
|
sendMessageTelegram: async (...args) => {
|
|
@@ -75868,7 +75874,7 @@ function loadWebLoginQr() {
|
|
|
75868
75874
|
return webLoginQrPromise;
|
|
75869
75875
|
}
|
|
75870
75876
|
function loadWebChannel() {
|
|
75871
|
-
webChannelPromise ??= import("./web-
|
|
75877
|
+
webChannelPromise ??= import("./web-LUMjboLF.js");
|
|
75872
75878
|
return webChannelPromise;
|
|
75873
75879
|
}
|
|
75874
75880
|
function loadWhatsAppActions() {
|
|
@@ -78224,7 +78230,7 @@ async function compactEmbeddedPiSessionDirect(params) {
|
|
|
78224
78230
|
const provider = (params.provider ?? DEFAULT_PROVIDER).trim() || DEFAULT_PROVIDER;
|
|
78225
78231
|
const modelId = (params.model ?? DEFAULT_MODEL).trim() || DEFAULT_MODEL;
|
|
78226
78232
|
const fail = (reason) => {
|
|
78227
|
-
log$
|
|
78233
|
+
log$5.warn(`[compaction-diag] end runId=${runId} sessionKey=${params.sessionKey ?? params.sessionId} diagId=${diagId} trigger=${trigger} provider=${provider}/${modelId} attempt=${attempt} maxAttempts=${maxAttempts} outcome=failed reason=${classifyCompactionReason(reason)} durationMs=${Date.now() - startedAt}`);
|
|
78228
78234
|
return {
|
|
78229
78235
|
ok: false,
|
|
78230
78236
|
compacted: false,
|
|
@@ -78292,7 +78298,7 @@ async function compactEmbeddedPiSessionDirect(params) {
|
|
|
78292
78298
|
sessionId: params.sessionId,
|
|
78293
78299
|
warn: makeBootstrapWarn({
|
|
78294
78300
|
sessionLabel,
|
|
78295
|
-
warn: (message) => log$
|
|
78301
|
+
warn: (message) => log$5.warn(message)
|
|
78296
78302
|
})
|
|
78297
78303
|
});
|
|
78298
78304
|
const runAbortController = new AbortController();
|
|
@@ -78432,7 +78438,7 @@ async function compactEmbeddedPiSessionDirect(params) {
|
|
|
78432
78438
|
try {
|
|
78433
78439
|
await repairSessionFileIfNeeded({
|
|
78434
78440
|
sessionFile: params.sessionFile,
|
|
78435
|
-
warn: (message) => log$
|
|
78441
|
+
warn: (message) => log$5.warn(message)
|
|
78436
78442
|
});
|
|
78437
78443
|
await prewarmSessionFile(params.sessionFile);
|
|
78438
78444
|
const transcriptPolicy = resolveTranscriptPolicy({
|
|
@@ -78517,13 +78523,13 @@ async function compactEmbeddedPiSessionDirect(params) {
|
|
|
78517
78523
|
messages: preCompactionMessages,
|
|
78518
78524
|
sessionFile: params.sessionFile
|
|
78519
78525
|
}, hookCtx).catch((hookErr) => {
|
|
78520
|
-
log$
|
|
78526
|
+
log$5.warn(`before_compaction hook failed: ${String(hookErr)}`);
|
|
78521
78527
|
});
|
|
78522
|
-
const diagEnabled = log$
|
|
78528
|
+
const diagEnabled = log$5.isEnabled("debug");
|
|
78523
78529
|
const preMetrics = diagEnabled ? summarizeCompactionMessages(session.messages) : void 0;
|
|
78524
78530
|
if (diagEnabled && preMetrics) {
|
|
78525
|
-
log$
|
|
78526
|
-
log$
|
|
78531
|
+
log$5.debug(`[compaction-diag] start runId=${runId} sessionKey=${params.sessionKey ?? params.sessionId} diagId=${diagId} trigger=${trigger} provider=${provider}/${modelId} attempt=${attempt} maxAttempts=${maxAttempts} pre.messages=${preMetrics.messages} pre.historyTextChars=${preMetrics.historyTextChars} pre.toolResultChars=${preMetrics.toolResultChars} pre.estTokens=${preMetrics.estTokens ?? "unknown"}`);
|
|
78532
|
+
log$5.debug(`[compaction-diag] contributors diagId=${diagId} top=${JSON.stringify(preMetrics.contributors)}`);
|
|
78527
78533
|
}
|
|
78528
78534
|
const compactStartedAt = Date.now();
|
|
78529
78535
|
const result = await compactWithSafetyTimeout(() => session.compact(params.customInstructions));
|
|
@@ -78541,10 +78547,10 @@ async function compactEmbeddedPiSessionDirect(params) {
|
|
|
78541
78547
|
compactedCount: limited.length - session.messages.length,
|
|
78542
78548
|
sessionFile: params.sessionFile
|
|
78543
78549
|
}, hookCtx).catch((hookErr) => {
|
|
78544
|
-
log$
|
|
78550
|
+
log$5.warn(`after_compaction hook failed: ${hookErr}`);
|
|
78545
78551
|
});
|
|
78546
78552
|
const postMetrics = diagEnabled ? summarizeCompactionMessages(session.messages) : void 0;
|
|
78547
|
-
if (diagEnabled && preMetrics && postMetrics) log$
|
|
78553
|
+
if (diagEnabled && preMetrics && postMetrics) log$5.debug(`[compaction-diag] end runId=${runId} sessionKey=${params.sessionKey ?? params.sessionId} diagId=${diagId} trigger=${trigger} provider=${provider}/${modelId} attempt=${attempt} maxAttempts=${maxAttempts} outcome=compacted reason=none durationMs=${Date.now() - compactStartedAt} retrying=false post.messages=${postMetrics.messages} post.historyTextChars=${postMetrics.historyTextChars} post.toolResultChars=${postMetrics.toolResultChars} post.estTokens=${postMetrics.estTokens ?? "unknown"} delta.messages=${postMetrics.messages - preMetrics.messages} delta.historyTextChars=${postMetrics.historyTextChars - preMetrics.historyTextChars} delta.toolResultChars=${postMetrics.toolResultChars - preMetrics.toolResultChars} delta.estTokens=${typeof preMetrics.estTokens === "number" && typeof postMetrics.estTokens === "number" ? postMetrics.estTokens - preMetrics.estTokens : "unknown"}`);
|
|
78548
78554
|
return {
|
|
78549
78555
|
ok: true,
|
|
78550
78556
|
compacted: true,
|