Commit Graph

19174 Commits

Author SHA1 Message Date
Peter Steinberger 5da5551a5c fix(qa): verify paired Ollama nodes over the gateway (#115644) 2026-07-29 02:18:16 -04:00
Peter Steinberger 1b9481012b fix(active-memory): share one recall per run across retries (#115627)
* fix(active-memory): share one recall per run across retries

Register in-flight recalls per ctx.runId so overlapping or changed-prompt
attempts join a single execution, and gate replacement recalls on settled
timeout cleanup. Entries clear on agent_end. Fixes #106957.

* fix(active-memory): evict rejected recall entries

* test(active-memory): clarify run result retention

* test(active-memory): complete recall result fixture
2026-07-29 02:16:59 -04:00
Peter Steinberger 921b0e1dda feat(openai): support GA realtime over ChatGPT OAuth (#115623) 2026-07-29 02:14:23 -04:00
ToToKr ac09e35bd3 fix(signal): reject malformed base64 attachment data (#114883)
signalRpcRequest returns the JSON-RPC result via a bare cast, so getAttachment data reaches Buffer.from unvalidated. Node drops out-of-alphabet characters instead of throwing, so a damaged payload was silently written to disk as a corrupted attachment. Canonicalize after the existing size guard and fail with the attachment id instead.
2026-07-29 02:11:40 -04:00
Peter Steinberger 032defb172 fix(nodes): cancel paired local inference when callers disconnect (#115624) 2026-07-29 02:00:22 -04:00
Peter Steinberger 26aa0f5e59 fix(googlechat): surface failed replies without duplicate sends (#115638)
* fix(googlechat): surface reply send failures instead of silently dropping chunks

Co-Authored-By: Claude <noreply@anthropic.com>

* test(googlechat): narrow regex match index for noUncheckedIndexedAccess

* fix(googlechat): isolate outbound delivery status reporting

---------

Co-authored-by: wangmiao0668000666 <wang.miao86@xydigit.com>
Co-authored-by: Claude <noreply@anthropic.com>
2026-07-29 02:00:06 -04:00
Peter Steinberger fed427a50e fix(codex): scope ephemeral runs to physical session bindings (#115601)
* fix(codex): scope ephemeral session bindings

* test(codex): normalize startup assertion errors
2026-07-29 01:56:46 -04:00
Peter Steinberger 23db233bb5 fix(msteams): recognize provider-prefixed target ids (#115609)
* fix(msteams): recognize provider-prefixed target ids

* style(msteams): format explicit target regression matrix
2026-07-29 01:51:48 -04:00
Alix-007 520e9fe1dd fix(openrouter): skip malformed video catalog rows (#111637) 2026-07-29 01:40:15 -04:00
Peter Steinberger 5157340862 fix(browser): avoid colliding extension relay ports (#115592) 2026-07-29 01:40:06 -04:00
Kevin Lin 310396f1e1 fix(codex): enable configured apps in service sessions (#115433)
* fix(codex): attest configured plugin apps before turns

* fix(codex): tighten plugin thread config

* fix(codex): expose account app admission wrapper
2026-07-28 22:39:20 -07:00
Peter Steinberger a24c1ceb3a fix(channels): release inbound debounce at admission (#115603)
Track full dispatch completion separately for error handling and shutdown drain while allowing same-session follow-ups to steer active runs. Fixes #113180.

Co-authored-by: Taksh <takshkothari09@gmail.com>
2026-07-29 01:38:15 -04:00
Peter Steinberger 98a066c90e fix(agents): project llama.cpp-safe tool schemas (#115598)
Co-authored-by: Jithin Mohandas <mohandasjithin@gmail.com>
2026-07-29 01:33:32 -04:00
guanbear 48b3a28edc fix(signal): escape real newlines in inbound verbose-log preview (#114881)
* fix(signal): escape real newlines in inbound verbose-log preview

The inbound preview regex matched the literal two-character sequence
backslash-n instead of the actual LF control character, so multi-line
message bodies kept real newlines and split the single-line log record.
Align Signal with the six sibling channels that use replace(/\n/g, "\\n").

Adds a focused test that mocks shouldLogVerbose and asserts the logged
preview stays single-line for an LF-separated body.

* chore: retrigger CI to clear stale checks

* fix(signal): escape all inbound log line breaks

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-29 01:31:58 -04:00
Alex Knight be24db5f72 fix(auth): reuse Claude CLI logins natively and stop forwarding expired OAuth tokens (#115134)
* fix(auth): refresh selected Claude CLI profiles

* fix(auth): run imported Claude CLI logins as verified native passthrough

* fix(auth): satisfy CLI auth failure exhaustiveness

* docs: remove PR changelog entry

---------

Co-authored-by: Alex Knight <15041791+amknight@users.noreply.github.com>
2026-07-29 01:30:07 -04:00
Peter Steinberger 1084f6dda8 fix(memory): preserve Unicode in short-term promotion (#115591)
Use the existing surrogate-safe helpers at the dreaming lead and heading boundaries. Preserve contributor investigations in #107882 and #107910.

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-29 01:29:43 -04:00
Peter Steinberger eb966621c9 fix(feishu): accept valid empty inbound message bodies (#115583) 2026-07-29 01:26:23 -04:00
Peter Steinberger 1e82025a54 refactor(ollama): unify local model onboarding (#115543)
* refactor(ollama): unify local model onboarding

* fix(ollama): remove obsolete setup max-lines exemption
2026-07-29 01:24:58 -04:00
Peter Steinberger 7031390652 fix(whatsapp): prevent replies from suppressing other chats (#115574)
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-29 01:18:02 -04:00
Peter Steinberger ad36646ed1 fix(gateway): reconnect nodes after transient socket failures (#115539)
* fix(gateway): reconnect nodes after transient socket failures

* fix(browser): refresh bundled gateway reconnect runtime

* fix(gateway): preserve callback-owned reconnect state
2026-07-29 01:15:26 -04:00
Dallin Romney 781744e125 fix(qa): run profile scenarios on every eligible channel (#115540)
* fix(qa): resolve channels for portable live scenarios

* fix(qa): expand profile scenarios across eligible channels
2026-07-29 13:14:37 +08:00
juyaohuidt 3bb04a551d fix(discord): reject malformed PluralKit envelopes (#111712)
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-29 01:06:53 -04:00
Dallin Romney 96ea0fbf56 improve(qa): align Telegram coverage with startup behavior (#113527)
* test(telegram): align coverage with startup behavior

* fix(qa): register Slack MPIM coverage
2026-07-29 12:59:42 +08:00
Pavan Kumar Gondhi 75ee9b81ba fix(discord): preserve trusted requester checks (#115260) 2026-07-29 12:59:25 +08:00
Peter Steinberger 087f996874 fix(ollama): enforce one paired-node inference deadline (#115558) 2026-07-29 00:59:16 -04:00
Peter Steinberger f1f8434db3 fix(doctor): honor Slack channel allowlists before plugin load (#115563)
Publish the existing Slack route-based doctor capabilities in channel metadata so cold doctor scans no longer falsely report dropped messages or recommend schema-invalid sender allowlists. Add metadata-only discovery regression. Fixes #110489; thanks @ari-hjunk for the report.
2026-07-29 00:55:54 -04:00
wahaha1223 0245f2c601 fix(irc): hide tool traces from inbound replies (#109012)
* fix(irc): hide tool traces from inbound replies

* test(irc): type async reply dispatch mock

* test(irc): type reply sender mock

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-29 00:55:12 -04:00
Peter Steinberger dbe645a08f fix(matrix): prevent private reasoning from reaching rooms (#99412) (#115553) 2026-07-29 00:55:07 -04:00
clawSean 8982d47a55 fix(imessage): apply canonical outbound sanitizer (#101430)
Co-authored-by: clawSean <260045960+clawSean@users.noreply.github.com>
2026-07-29 00:54:53 -04:00
Leon-SK668 530d44c7a7 fix(discord): preserve Unicode model picker buckets (#109514) 2026-07-29 00:41:46 -04:00
黄云龙 5dbe0fa7e3 fix(telegram): break long HTML chunks on word boundaries, not mid-word (#104473)
* fix(telegram): break long HTML chunks on word boundaries

* test(telegram): cover word-safe HTML chunk boundaries
2026-07-29 00:38:36 -04:00
Peter Steinberger 90fca5aadb fix(browser): cancel in-flight status probes (#115534) 2026-07-29 00:35:55 -04:00
joshavant 913abfcb1f fix(msteams): prevent hook-bypassing previews 2026-07-28 23:34:51 -05:00
LKL-ZREO 7f89561259 fix(qqbot): restore one-time and recurring reminders (#115488)
* fix(qqbot): pass canonical cron add params

* docs(qqbot): use canonical reminder timestamps

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-29 00:29:43 -04:00
Peter Steinberger 4e651a43f4 fix(compaction): apply host transcript byte guard to codex sessions (#115192) (#115514)
Co-authored-by: pcpilot-dev <pcpilot-dev@users.noreply.github.com>
2026-07-29 00:23:44 -04:00
Peter Steinberger dd5b9c8c04 fix(slack): prevent duplicate MPIM mention replies (#115528)
* fix(slack): make MPIM app mentions type-safe

Resolve typeless app mentions through explicit metadata, the scoped event cache, then conversations.info so modern C-prefixed MPIMs cannot be misclassified by event ordering. Add a real Slack QA scenario that requires one reply and cleans up its temporary MPIM.

Co-authored-by: moeealii <75953662+moeealii@users.noreply.github.com>

* fix(slack): type unresolved mention metadata

* fix(slack): satisfy MPIM type contracts

---------

Co-authored-by: moeealii <75953662+moeealii@users.noreply.github.com>
2026-07-29 00:23:06 -04:00
joshavant a6d58f0e6d fix(codex): attest safe Node network options 2026-07-28 23:22:52 -05:00
Rune🪨 9c118dd38f fix(discord): skip PluralKit lookup for non-webhooks (#111617)
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-29 00:17:36 -04:00
Peter Steinberger e59e7b82cf fix(microsoft-foundry): preserve GPT token limits (#115542) 2026-07-29 00:14:31 -04:00
Peter Steinberger 88ff9e9181 fix(whatsapp): preserve context when a quoted reply is unavailable (#115517) 2026-07-29 00:05:08 -04:00
Peter Steinberger 430c293ee0 refactor: remove duplicate provider and runtime code (#115529)
* refactor: remove duplicated runtime and provider code

* refactor: exclude unrelated browser test cleanup

* refactor: preserve canonical subagent cleanup ordering
2026-07-29 00:04:52 -04:00
Peter Steinberger 232613fdd9 fix(feishu): preserve intentionally silent block replies (#115530) 2026-07-28 23:59:50 -04:00
Peter Steinberger 8e75df55d7 fix(imessage): explain unsupported private status probes (#115074) (#115526) 2026-07-28 23:55:53 -04:00
Peter Steinberger d41a56fca1 feat(memory): isolate curated entries by project (#115438)
* feat(memory): scope recall to active projects

* feat(memory): preserve project scope in promotion

* docs(memory): explain project-scoped recall

* fix(memory): chunk curated files per entry

* refactor(memory): narrow project scope internals

* fix(memory): exclude annotations from concept tags

* fix(memory): tighten project isolation boundaries

* fix(memory): preserve project path casing

* fix(memory): prioritize project bootstrap candidates

* docs: refresh memory architecture map

* test(memory): cover project scope schema repair

* fix(memory): complete project isolation paths

* fix(memory): close project ranking checks

* fix(memory): reinitialize search provider before ranking

* fix(memory): tolerate missing bootstrap paths
2026-07-28 23:55:49 -04:00
Arseniy Palagin ede8fe33df fix(telegram): surface draft stream delivery failures at warn level (#111065)
* fix(telegram): surface draft stream delivery failures at warn level

createTelegramDraftController wired the draft stream's warn callback to
logVerbose, so preview send/edit/cleanup failures ("telegram stream
preview failed: ...", "telegram stream preview cleanup failed: ...")
were only emitted when verbose logging was enabled. In the default
configuration a dying preview/draft stream left no operator-visible
trace: the bot just went quiet, especially in progress stream mode
where the activity window is the only delivery surface.

Route the warn callback through the telegram subsystem logger
(telegram/draft-stream) at warn level with lane, chatId, and threadId
context so draft delivery failures show up in default logs. The
verbose log callback is unchanged.

Co-authored-by: Claude <noreply@anthropic.com>

* test(telegram): simplify draft warning logger proof

Co-authored-by: Arseniy Palagin <valeradzigurda3@gmail.com>

* fix(telegram): emit draft terminal delivery diagnostics

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d1bd0f71-7638-463a-958d-d5b3e2da1047

* fix(telegram): keep draft visibility change scoped

Remove the diagnostic expansion so this contributor PR remains focused on its original warn-level logging repair.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: d1bd0f71-7638-463a-958d-d5b3e2da1047

---------

Co-authored-by: Arseniy Palagin <valeradzigurda3@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
Co-authored-by: Gio Della-Libera <giodl73@gmail.com>
Copilot-Session: d1bd0f71-7638-463a-958d-d5b3e2da1047
2026-07-28 23:36:19 -04:00
moeealii e2a76333d8 fix(slack): resolve conversation type for app_mention in C-prefixed group DMs (#115468)
app_mention events carry no channel_type, and modern Slack group DMs
(mpims) use C-prefixed channel ids, so prefix inference classifies them
as channels. Mentions in group DMs then bypass the handler's im/mpim
dedupe guard and are processed down the channel path — misrouting
replies, and double-handling alongside message.mpim when dm.groupEnabled
is on.

Confirm against the event-carried type cache and, on a miss, the cached
conversations.info lookup before treating a channel_type-less mention as
a channel mention. Only an authoritative "mpim" answer changes behavior;
a C-prefixed id can never be an im.

Fixes #115463

Co-authored-by: moeealii <>
2026-07-28 23:23:49 -04:00
Peter Steinberger d5567ed61e fix: prevent duplicate agent turns and slow Codex harness runs (#115474)
* fix(agents): deduplicate turns and speed up Codex harnesses

* test(agents): keep keyed transcript fixtures type-safe

* fix(codex): simplify linear native skill traversal

* fix(agents): preserve admitted SQLite turns during orphan repair

* test: split session user idempotency regressions
2026-07-28 22:56:12 -04:00
Vito Cappello 33dae97b81 fix(agents): restore subagent completion delivery on CLI runtimes (#115422)
* fix(agents): deliver tool-free CLI completions

* fix(agents): enforce empty Gemini CLI tool caps

* refactor(agents): remove ineffective Gemini admin settings

* fix(agents): block inherited Gemini MCP servers

* fix(agents): enforce Gemini MCP cap via argv

---------

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>
Co-authored-by: Patrick Erichsen <patrick.a.erichsen@gmail.com>
2026-07-28 21:07:02 -05:00
Peter Steinberger c092ec437c refactor: remove duplicate runtime and plugin paths (#115483) 2026-07-28 22:06:04 -04:00
Shakker f6bd2b6518 fix: scope subagent handoff to direct tools (#115466) 2026-07-29 02:22:09 +01:00