From 4e7aa5a965fabc7a41a5b281dfb8d4050a41e9b0 Mon Sep 17 00:00:00 2001 From: hello-pollux Date: Wed, 2 Sep 2026 16:43:48 +0000 Subject: [PATCH 1/3] bump pi deps to 0.84.4; modelRegistry -> modelRuntime --- bun.lockb | Bin 146875 -> 103643 bytes package.json | 6 +++--- src/createAgentPool.ts | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/bun.lockb b/bun.lockb index 48ace758193d2d9624494e66b3753a6b30b326ea..b79cd09d3a28dc4e52d2e86836cc0daa7e034461 100755 GIT binary patch delta 15295 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

Y{$v~qQ8{h=qXv`# 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 diff --git a/package.json b/package.json index 51ede25..66aee5b 100644 --- a/package.json +++ b/package.json @@ -25,9 +25,9 @@ }, "dependencies": { "@clack/prompts": "^1.3.0", - "@earendil-works/pi-agent-core": "^0.74.1", - "@earendil-works/pi-ai": "^0.79.7", - "@earendil-works/pi-coding-agent": "^0.79.7", + "@earendil-works/pi-agent-core": "0.84.4", + "@earendil-works/pi-ai": "0.84.4", + "@earendil-works/pi-coding-agent": "0.84.4", "discord.js": "^14.16.3", "mdast-util-from-markdown": "^2.0.3", "remark-gfm": "^4.0.1", diff --git a/src/createAgentPool.ts b/src/createAgentPool.ts index 679fde4..b1774a6 100644 --- a/src/createAgentPool.ts +++ b/src/createAgentPool.ts @@ -299,7 +299,7 @@ export function createAgentPool(args: { // match. const sessionModel = defaultProvider && defaultModel - ? services.modelRegistry?.find(defaultProvider, defaultModel) ?? undefined + ? services.modelRuntime?.getModel(defaultProvider, defaultModel) ?? undefined : undefined; const { session } = await createAgentSessionFromServices({ From e6f23f8335ad0c350dc3c1727be1ec4f836c05bc Mon Sep 17 00:00:00 2001 From: hello-pollux Date: Wed, 2 Sep 2026 16:46:09 +0000 Subject: [PATCH 2/3] add timeout-minutes to CI --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4678dd1..5a8cc83 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,6 +12,7 @@ concurrency: jobs: test: runs-on: ubuntu-latest + timeout-minutes: 15 steps: - uses: actions/checkout@v5 - uses: oven-sh/setup-bun@v2 From 13b9cd87112d6ee2213195339287ca52657530b8 Mon Sep 17 00:00:00 2001 From: hello-pollux Date: Wed, 2 Sep 2026 16:54:23 +0000 Subject: [PATCH 3/3] log agent-turn errors to journal + debug channel MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Turn errors (auth 401s, provider 5xx, malformed responses) previously only surfaced as a single terse line in the user channel — nothing in journalctl, nothing in the debug channel. When Pollux hit a 401 today after the pi 0.79→0.84 bump (models.json 'env:VAR' config-value syntax went stale), the only signal was the in-channel 'agent error' text. Now: - installStreamingSender logs to stderr with provider/model tag when a turn stopReason === 'error', so journalctl -u catches it - createDebugLogger posts a copy to the debug channel with the source message linked, matching how tool failures already surface there Co-authored-by: Shelley --- src/agent/installStreamingSender.ts | 11 ++++++++ src/io/createDebugLogger.ts | 42 +++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) diff --git a/src/agent/installStreamingSender.ts b/src/agent/installStreamingSender.ts index b074ef6..beced4d 100644 --- a/src/agent/installStreamingSender.ts +++ b/src/agent/installStreamingSender.ts @@ -83,6 +83,17 @@ export function installStreamingSender(args: { const stopReason = (message as { stopReason?: string }).stopReason; const errorMessage = (message as { errorMessage?: string }).errorMessage; if (stopReason === "error" && errorMessage) { + // Log to journal too — the channel-side "agent error" line is + // easy to miss (no debug-channel copy, no stderr) so operators + // digging into `journalctl -u …` after the fact see nothing. + // Include provider/model for post-mortem: 401/403s here almost + // always trace back to a specific provider's credential or a + // stale models.json format (e.g. the pi 0.79→0.84 config-value + // syntax change). + const provider = (message as { provider?: string }).provider; + const model = (message as { model?: string }).model; + const modelTag = provider || model ? ` [${provider ?? "?"}/${model ?? "?"}]` : ""; + console.error(`[stream] agent turn errored${modelTag}: ${errorMessage}`); sender .sendError(new Error(errorMessage)) .catch((error) => console.error("[stream] sendError failed:", error)); diff --git a/src/io/createDebugLogger.ts b/src/io/createDebugLogger.ts index 0547c79..3084093 100644 --- a/src/io/createDebugLogger.ts +++ b/src/io/createDebugLogger.ts @@ -171,9 +171,51 @@ export function createDebugLogger(args: { const startLog = pendingCompactionStartLog; pendingCompactionStartLog = null; postCompactionEnd(event, startLog); + return; + } + // Surface model-turn errors (auth failures, provider 5xx, malformed + // responses) into the debug channel. The channel-facing `sendError` + // is a single terse line in the *user* channel; without a copy here, + // operators monitoring debug have no signal that anything went wrong. + if (event.type === "turn_end" && isAssistantMessageEnd(event.message)) { + const msg = event.message as { + stopReason?: string; + errorMessage?: string; + provider?: string; + model?: string; + }; + if (msg.stopReason === "error" && msg.errorMessage) { + postTurnError({ + errorMessage: msg.errorMessage, + provider: msg.provider, + model: msg.model, + }).catch((error) => console.error("[debugLogger] turn-error post failed:", error)); + } } }); + async function postTurnError(args: { + errorMessage: string; + provider?: string; + model?: string; + }): Promise { + const channel = await getDebugChannel(); + if (!channel) return; + const link = sourceMessageUrl ?? (await getChannelLink()); + const head = link ? `[agent error](<${link}>)` : "agent error"; + const modelTag = + args.provider || args.model ? ` · ${args.provider ?? "?"}/${args.model ?? "?"}` : ""; + const text = `-# ⚠️ ${head}${modelTag}: ${sanitizeBackticks(args.errorMessage)}`.slice( + 0, + hardCharLimit, + ); + await sendDebugMessage({ + channel, + content: text, + errorContext: "turn-error post failed", + }); + } + async function postCompactionStart(reason: string): Promise { const channel = await getDebugChannel(); if (!channel) return null;