Jonathan Jing
84fa7e2baa
fix(mattermost): parse status code before matching generic '429' text
...
- Fix isRetryableError: check 'mattermost api 429' status code BEFORE
generic '429' text match to avoid false positives
- Error messages containing '429' in detail (e.g., 'Invalid ID: 4294967295')
are no longer incorrectly treated as rate limiting
- Add test for 400 error containing '429' text to verify no false retry
2026-03-17 16:45:42 +00:00
Jonathan Jing
ead65cf04c
fix(mattermost): fix port number false positives and timeout test
...
- Fix isRetryableError: use 'mattermost api NNN' prefix pattern instead of
\b\d{3}\b to avoid matching port numbers (e.g., :443) and IP octets
- Fix timeout test: properly verify AbortController aborts the fetch by
listening to the abort event on the signal
- Add test for port 443 connection errors to verify no false 4xx classification
- Update error messages in tests to use 'Mattermost API NNN' format
2026-03-17 16:45:42 +00:00
Jonathan Jing
b63c1379d1
fix(mattermost): add dmChannelRetry to MattermostAccountConfig type
...
Add missing dmChannelRetry field to TypeScript type definition in types.ts
to match the Zod schema in config-schema.ts. Fixes type checking error
when accessing account.config.dmChannelRetry.
2026-03-17 16:45:42 +00:00
Jonathan Jing
4e6080d476
fix(mattermost): address Greptile review - isRetryableError ordering and jitter
...
- Fix isRetryableError: check 5xx BEFORE 4xx to prevent misclassification
when 5xx error detail contains 4xx substring (e.g., '503: upstream 404')
- Fix jitter: use proportional jitter (full-jitter pattern) instead of
hardcoded 1000ms. Jitter is now 0-100% of exponential delay
- Update tests to reflect new jitter behavior
- Add test for 5xx with 4xx substring in error message
2026-03-17 16:45:42 +00:00
Jonathan Jing
be0e870d94
fix(mattermost): address review feedback for DM retry logic
...
- Fix timeoutMs: pass AbortSignal to createMattermostDirectChannel and fetch
- Fix isRetryableError false positives: check for explicit 4xx status codes
before falling back to network pattern matching
- Fix onRetry callback: preserve user's callback while adding logging
- Add Zod schema refinement: validate initialDelayMs <= maxDelayMs
- Add tests for 4xx false positive cases and AbortSignal propagation
2026-03-17 16:45:42 +00:00
Jonathan Jing
1fb94b5460
feat(mattermost): add retry logic and timeout handling for DM channel creation
...
Adds exponential backoff retry mechanism for Mattermost DM channel creation
to handle transient failures (429, 5xx, network errors).
Changes:
- Add createMattermostDirectChannelWithRetry() with configurable retry options
- Support maxRetries, initialDelayMs, maxDelayMs, timeoutMs parameters
- Add dmChannelRetry config option to Mattermost account schema
- Allow per-send override via dmRetryOptions in MattermostSendOpts
- Add comprehensive tests for retry logic and error handling
- Retry on: 429 rate limits, 5xx server errors, network/transient errors
- Don't retry on: 4xx client errors (except 429)
Fixes the gap identified in PR #29925 where initial DM channel creation
failures had no retry mechanism.
2026-03-17 16:45:42 +00:00
Menglin Li
7b61b025ff
fix(compaction): break safeguard cancel loop for sessions with no summarizable messages ( #41981 ) ( #42215 )
...
Merged via squash.
Prepared head SHA: 7ce6bd834e
Co-authored-by: lml2468 <39320777+lml2468@users.noreply.github.com >
Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com >
Reviewed-by: @jalehman
2026-03-17 09:44:31 -07:00
Peter Steinberger
829ea70519
fix: remove duplicate setup helper imports
2026-03-17 09:38:21 -07:00
Peter Steinberger
4b125762f6
refactor: clean extension api boundaries
2026-03-17 09:38:21 -07:00
Peter Steinberger
a724bbce1a
feat: add bundled Chutes extension ( #49136 )
...
* refactor: generalize bundled provider discovery seams
* feat: land chutes extension via plugin-owned auth (#41416 ) (thanks @Veightor)
2026-03-17 09:35:21 -07:00
Bob
ea15819ecf
ACP: harden startup and move configured routing behind plugin seams ( #48197 )
...
* ACPX: keep plugin-local runtime installs out of dist
* Gateway: harden ACP startup and service PATH
* ACP: reinitialize error-state configured bindings
* ACP: classify pre-turn runtime failures as session init failures
* Plugins: move configured ACP routing behind channel seams
* Telegram tests: align startup probe assertions after rebase
* Discord: harden ACP configured binding recovery
* ACP: recover Discord bindings after stale runtime exits
* ACPX: replace dead sessions during ensure
* Discord: harden ACP binding recovery
* Discord: fix review follow-ups
* ACP bindings: load channel snapshots across workspaces
* ACP bindings: cache snapshot channel plugin resolution
* Experiments: add ACP pluginification holy grail plan
* Experiments: rename ACP pluginification plan doc
* Experiments: drop old ACP pluginification doc path
* ACP: move configured bindings behind plugin services
* Experiments: update bindings capability architecture plan
* Bindings: isolate configured binding routing and targets
* Discord tests: fix runtime env helper path
* Tests: fix channel binding CI regressions
* Tests: normalize ACP workspace assertion on Windows
* Bindings: isolate configured binding registry
* Bindings: finish configured binding cleanup
* Bindings: finish generic cleanup
* Bindings: align runtime approval callbacks
* ACP: delete residual bindings barrel
* Bindings: restore legacy compatibility
* Revert "Bindings: restore legacy compatibility"
This reverts commit ac2ed68fa2426ecc874d68278c71c71ad363fcfe.
* Tests: drop ACP route legacy helper names
* Discord/ACP: fix binding regressions
---------
Co-authored-by: Onur <2453968+osolmaz@users.noreply.github.com >
2026-03-17 17:27:52 +01:00
Kwest OG
8139f83175
fix(telegram): persist sticky IPv4 fallback across polling restarts ( fixes #48177 ) ( #48282 )
...
* fix(telegram): persist sticky IPv4 fallback across polling restarts (fixes #48177 )
Hoist resolveTelegramTransport() out of createTelegramBot() so the
transport (and its sticky IPv4 fallback state) persists across polling
restarts. Previously, each polling restart created a new transport with
stickyIpv4FallbackEnabled=false, causing repeated IPv6 timeouts on
hosts with unstable IPv6 connectivity.
Changes:
- bot.ts: accept optional telegramTransport in TelegramBotOptions
- monitor.ts: resolve transport once before polling loop
- polling-session.ts: pass transport through to bot creation
AI-assisted (Claude Sonnet 4). Tested: tsc --noEmit clean.
* Update extensions/telegram/src/polling-session.ts
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
* style: fix oxfmt formatting in bot.ts
* test: cover telegram transport reuse across restarts
* fix: preserve telegram sticky IPv4 fallback across polling restarts (#48282 ) (thanks @yassinebkr)
---------
Co-authored-by: Yassine <yassinebkr@users.noreply.github.com >
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Co-authored-by: Ayaan Zaidi <hi@obviy.us >
2026-03-17 21:56:12 +05:30
Peter Steinberger
39a8dab0da
refactor: dedupe plugin lazy runtime helpers
2026-03-17 09:24:22 -07:00
Peter Steinberger
9f8cf7f71a
test: stabilize full gate
2026-03-17 16:21:59 +00:00
Peter Steinberger
63c5932e84
test: flatten twitch send mocks
2026-03-17 16:21:58 +00:00
Peter Steinberger
9b22bd41d8
test: inline bluebubbles action mocks
2026-03-17 16:21:58 +00:00
Peter Steinberger
df76e0f44b
test: harden CI-sensitive test suites
2026-03-17 16:21:57 +00:00
Peter Steinberger
ebee4e2210
fix(tlon): defer DM cite expansion until after auth
2026-03-17 09:08:20 -07:00
Peter Steinberger
e1b0e74e78
refactor: align telegram test support with plugin runtime seam
2026-03-17 09:07:05 -07:00
Peter Steinberger
795f1f438b
refactor: expose lazy runtime helper to plugins
2026-03-17 08:37:11 -07:00
Josh Lehman
1399ca5fcb
fix(plugins): forward plugin subagent overrides ( #48277 )
...
Merged via squash.
Prepared head SHA: ffa45893e0
Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com >
Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com >
Reviewed-by: @jalehman
2026-03-17 07:20:27 -07:00
huntharo
8448f48cc5
tests(feishu): inject client runtime seam
2026-03-17 09:46:58 -04:00
huntharo
3e8bf845cb
tests(feishu): mock conversation runtime seam
2026-03-17 09:46:58 -04:00
huntharo
a413da9cca
tests(google): inject oauth credential fs stubs
2026-03-17 09:46:58 -04:00
huntharo
4234d9b42c
tests: fix googlechat outbound partial mock
2026-03-17 09:46:58 -04:00
Peter Steinberger
6bf07b5075
fix(ci): restore local check suite
2026-03-17 08:14:03 +00:00
Peter Steinberger
ce486292a1
test: fix discord provider helper import
2026-03-17 01:05:09 -07:00
Peter Steinberger
f9588da3e0
refactor: split plugin testing seam from bundled extension helpers
2026-03-17 01:05:09 -07:00
Peter Steinberger
ec1b80809d
refactor: remove remaining extension core imports
2026-03-17 00:59:46 -07:00
Peter Steinberger
9648e7fecb
refactor: consolidate lazy runtime surfaces
2026-03-17 00:59:20 -07:00
Peter Steinberger
449127b474
fix: restore full gate
2026-03-17 07:47:28 +00:00
Vincent Koc
1eb810a5e3
Telegram: fix named-account DM topic session keys ( #48773 )
2026-03-17 00:41:44 -07:00
Peter Steinberger
e56e4923bd
refactor(hook-tests): share subagent hook helpers
2026-03-17 07:23:44 +00:00
Peter Steinberger
214c7a481c
refactor(feishu-tests): share card action event builders
2026-03-17 07:23:44 +00:00
Peter Steinberger
769332c1a7
refactor(nextcloud-tests): share inbound authz setup
2026-03-17 07:23:44 +00:00
Peter Steinberger
e1ca5d9cc4
refactor(telegram-tests): share webhook settlement helper
2026-03-17 07:23:43 +00:00
Peter Steinberger
e184cd97cc
refactor(telegram-tests): share native command helpers
2026-03-17 07:23:43 +00:00
Peter Steinberger
d28cb8d821
refactor(tests): share setup wizard prompter
2026-03-17 07:23:43 +00:00
Peter Steinberger
cc35627c8f
fix: harden telegram and loader contracts
2026-03-17 07:17:33 +00:00
Peter Steinberger
6f795fd60e
refactor: dedupe bundled plugin entrypoints
2026-03-17 00:14:12 -07:00
Peter Steinberger
5fb7a1363f
fix: stabilize full gate
2026-03-17 07:06:25 +00:00
Peter Steinberger
73ca53ee02
fix: remove discord setup rebase marker
2026-03-17 00:01:17 -07:00
Peter Steinberger
3dec814fda
refactor: bundle lazy runtime surfaces
2026-03-17 00:00:45 -07:00
Peter Steinberger
42c8c3c983
fix: resolve rebase type fallout in channel setup seams
2026-03-16 23:54:37 -07:00
Peter Steinberger
c1e5697889
style: fix rebase formatting drift
2026-03-16 23:52:41 -07:00
Peter Steinberger
f6868b7e42
refactor: dedupe channel entrypoints and test bridges
2026-03-16 23:52:23 -07:00
Peter Steinberger
38a6415a70
build: tighten lazy runtime boundaries
2026-03-16 23:24:17 -07:00
Peter Steinberger
520d753b27
refactor(usage): share legacy pi auth token lookup
2026-03-17 06:24:01 +00:00
Peter Steinberger
54419a826b
refactor(slack): reuse shared action adapter
2026-03-17 06:24:01 +00:00
Peter Steinberger
c974adf10d
refactor(providers): reuse simple api-key catalog helper
2026-03-17 06:24:01 +00:00