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
4d8106eece
docs(security): clarify wildcard Control UI origins
2026-03-17 09:36:51 -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
c94beb03b2
docs(image-generation): document implicit tool enablement
2026-03-17 09:23:35 -07:00
Peter Steinberger
0aff1c7630
feat(agents): infer image generation defaults
2026-03-17 09:23:35 -07:00
Peter Steinberger
9f8cf7f71a
test: stabilize full gate
2026-03-17 16:21:59 +00:00
Peter Steinberger
647fb9cc3e
test: merge update cli channel cases
2026-03-17 16:21:59 +00:00
Peter Steinberger
58313fcd05
test: merge update cli restart behavior cases
2026-03-17 16:21:59 +00:00
Peter Steinberger
e3d021163c
test: merge action media root cases
2026-03-17 16:21:59 +00:00
Peter Steinberger
31d739fda2
test: merge update cli validation cases
2026-03-17 16:21:59 +00:00
Peter Steinberger
c672635413
test: merge update cli outcome cases
2026-03-17 16:21:59 +00:00
Peter Steinberger
9e29511316
test: merge update cli dry run cases
2026-03-17 16:21:59 +00:00
Peter Steinberger
4a95e6529f
test: merge slack validation cases
2026-03-17 16:21:59 +00:00
Peter Steinberger
6646ca61cc
test: merge audit channel command hygiene cases
2026-03-17 16:21:59 +00:00
Peter Steinberger
63997aec23
test: merge audit trust exposure cases
2026-03-17 16:21:59 +00:00
Peter Steinberger
141d73ddf4
test: merge audit dangerous flag cases
2026-03-17 16:21:59 +00:00
Peter Steinberger
58c26ad706
test: merge audit code safety cases
2026-03-17 16:21:59 +00:00
Peter Steinberger
ef53926542
test: merge audit install metadata cases
2026-03-17 16:21:59 +00:00
Peter Steinberger
7866655176
test: merge audit allowCommands cases
2026-03-17 16:21:59 +00:00
Peter Steinberger
9e087f66be
test: merge audit browser sandbox cases
2026-03-17 16:21:59 +00:00
Peter Steinberger
9b7aafa141
test: merge audit sandbox docker config cases
2026-03-17 16:21:59 +00:00
Peter Steinberger
23a3211c29
test: merge audit discord allowlist cases
2026-03-17 16:21:59 +00:00
Peter Steinberger
c1733d700d
test: merge audit sandbox docker danger cases
2026-03-17 16:21:59 +00:00
Peter Steinberger
610d836151
test: merge audit gateway auth guardrail cases
2026-03-17 16:21:59 +00:00
Peter Steinberger
8cfcce0849
test: merge audit resolved inspection cases
2026-03-17 16:21:59 +00:00
Peter Steinberger
789730d1a3
test: merge telegram reaction id cases
2026-03-17 16:21:59 +00:00
Peter Steinberger
50c8569786
test: merge discord reaction id resolution cases
2026-03-17 16:21:59 +00:00
Peter Steinberger
c4b866855a
test: merge signal reaction mapping cases
2026-03-17 16:21:59 +00:00
Peter Steinberger
253ec7452f
test: merge discord action listing cases
2026-03-17 16:21:59 +00:00
Peter Steinberger
64c1fc098a
test: merge command owner show gating cases
2026-03-17 16:21:59 +00:00
Peter Steinberger
37df574da0
test: merge update cli service refresh behavior
2026-03-17 16:21:59 +00:00
Peter Steinberger
59eaeaccfe
test: merge command allowlist add cases
2026-03-17 16:21:59 +00:00
Peter Steinberger
7c24aab954
test: merge command config write denial cases
2026-03-17 16:21:59 +00:00
Peter Steinberger
060654e947
test: merge command hook cases
2026-03-17 16:21:59 +00:00
Peter Steinberger
48a9aa152c
test: merge command approval scope cases
2026-03-17 16:21:59 +00:00
Peter Steinberger
580e00d91b
test: merge command gateway config permission cases
2026-03-17 16:21:59 +00:00
Peter Steinberger
3be44b1044
test: merge update status output cases
2026-03-17 16:21:59 +00:00
Peter Steinberger
5a5a66d63d
test: merge command owner gating cases
2026-03-17 16:21:59 +00:00
Peter Steinberger
f9408e57d2
test: merge slack action mapping cases
2026-03-17 16:21:59 +00:00