Peter Steinberger
b534dfa3e0
fix(slack,web): harden thread hints and monitor tuning
2026-02-22 22:06:01 +00:00
Peter Steinberger
d116bcfb14
refactor(runtime): consolidate followup, gateway, and provider dedupe paths
2026-02-22 14:08:51 +00:00
Frank Yang
1051f42f96
fix(stability): patch regex retries and timeout abort handling
2026-02-22 10:59:34 +01:00
Peter Steinberger
4f7032fbd9
test(utils): share temp-dir helper across cli and web tests
2026-02-22 07:44:57 +00:00
Peter Steinberger
4a2ff03f49
test: dedupe channel/web cases and tighten gateway e2e waits
2026-02-21 23:02:44 +00:00
Peter Steinberger
0bd9f0d4ac
fix: enforce strict allowlist across pairing stores ( #23017 )
2026-02-22 00:00:23 +01:00
Peter Steinberger
42e181dd4b
test(web): dedupe inbound cfg fixtures and cover reply/from formatting
2026-02-21 21:40:39 +00:00
Peter Steinberger
dc7ec65c8f
test(web): dedupe mention assertions and cover diagnostics helpers
2026-02-21 21:40:39 +00:00
Peter Steinberger
626d8e9f62
test(web): dedupe temp dir setup in web auto-reply utils tests
2026-02-21 21:40:38 +00:00
Peter Steinberger
a1cb700a05
test: dedupe and optimize test suites
2026-02-19 15:19:38 +00:00
Peter Steinberger
1d71c21aac
test(web): dedupe media-failure setup in deliver reply tests
2026-02-19 07:27:47 +00:00
Peter Steinberger
b8b43175c5
style: align formatting with oxfmt 0.33
2026-02-18 01:34:35 +00:00
Peter Steinberger
31f9be126c
style: run oxfmt and fix gate failures
2026-02-18 01:29:02 +00:00
cpojer
97c8f4999e
chore: Fix types in tests 27/N.
2026-02-17 14:31:55 +09:00
cpojer
d0cb8c19b2
chore: wtf.
2026-02-17 13:36:48 +09:00
Sebastian
ed11e93cf2
chore(format)
2026-02-16 23:20:16 -05:00
cpojer
262b7a157a
chore: chore: Fix types in tests 12/N.
2026-02-17 11:22:49 +09:00
cpojer
90ef2d6bdf
chore: Update formatting.
2026-02-17 09:18:40 +09:00
Peter Steinberger
a177f7b9fe
refactor(tests): dedupe slack telegram and web monitor setup
2026-02-16 17:06:40 +00:00
Peter Steinberger
93ca0ed54f
refactor(channels): dedupe transport and gateway test scaffolds
2026-02-16 14:59:31 +00:00
Peter Steinberger
52ddaed795
test: remove redundant elide exact-limit case
2026-02-16 08:03:02 +00:00
Vignesh Natarajan
6957354d48
fix (telegram/whatsapp): use account-scoped pairing allowlists
2026-02-15 19:10:06 -08:00
Peter Steinberger
74294a4653
perf(test): consolidate web auto-reply suites
2026-02-15 23:14:42 +00:00
Mr. Guy
e927fd1e35
fix: allow agent workspace directories in media local roots ( #17136 )
...
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: 7545ef1e19
Co-authored-by: MisterGuy420 <255743668+MisterGuy420@users.noreply.github.com >
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com >
Reviewed-by: @gumadeiras
2026-02-15 10:53:45 -05:00
Peter Steinberger
10e6d926bc
refactor(web): dedupe group gating history capture
2026-02-15 05:36:39 +00:00
Peter Steinberger
12c37a9a3a
test(web): cover deliver reply media kinds
2026-02-15 05:35:12 +00:00
Peter Steinberger
4295ff785f
refactor(web): dedupe heartbeat ok sender
2026-02-15 05:33:59 +00:00
Peter Steinberger
1b8dd2e504
perf(web): consolidate heartbeat runner tests
2026-02-15 05:31:58 +00:00
Peter Steinberger
c2deba3b56
test(web): extend crypto error util coverage
2026-02-15 05:29:12 +00:00
Peter Steinberger
164c1a3b5c
test(web): cover heartbeat runner branches
2026-02-15 05:28:06 +00:00
Peter Steinberger
758fbc2fcc
test(web): consolidate deliver reply retry coverage
2026-02-15 05:04:22 +00:00
Peter Steinberger
21082f7e3a
test(web): cover web reply delivery
2026-02-15 05:01:46 +00:00
Peter Steinberger
6c38ffc277
test(web): cover auto-reply util
2026-02-15 04:44:59 +00:00
Peter Steinberger
511ba938fb
refactor(heartbeat): share reply payload picker
2026-02-15 04:37:52 +00:00
Peter Steinberger
9eb749b0a6
test(web): stabilize processMessage inbound contract cleanup
2026-02-15 00:26:41 +00:00
Peter Steinberger
a6fda4ae8e
test(web): stabilize processMessage inbound contract cleanup
2026-02-15 00:26:41 +00:00
Peter Steinberger
a2b6a064f7
test: fix processMessage contract test lint
2026-02-14 23:16:37 +00:00
Peter Steinberger
fb1d8f8361
perf(test): consolidate web auto-reply suites
2026-02-14 23:16:37 +00:00
Peter Steinberger
5fd1822c7c
fix(web): remove leaked SIGINT handler when keepAlive=false
2026-02-14 23:16:37 +00:00
Ajay Rajnikanth
e24d023080
fix(whatsapp): convert Markdown bold/strikethrough to WhatsApp formatting ( #14285 )
...
* fix(whatsapp): convert Markdown bold/strikethrough to WhatsApp formatting
* refactor: Move `escapeRegExp` utility function to `utils.js`.
---------
Co-authored-by: Luna AI <luna@coredirection.ai >
2026-02-11 23:09:02 -06:00
Tak Hoffman
d2c2f4185b
Heartbeat: inject cron-style current time into prompts ( #13733 )
...
* Heartbeat: inject cron-style current time into prompts
* Tests: fix type for web heartbeat timestamp test
* Infra: inline heartbeat current-time injection
2026-02-10 18:58:45 -06:00
Peter Steinberger
53273b490b
fix(auto-reply): prevent sender spoofing in group prompts
2026-02-10 00:44:38 -06:00
juanpablodlc
8d96955e19
fix(routing): make bindings dynamic by calling loadConfig() per-message ( #11372 )
2026-02-09 00:34:55 -06:00
max
223eee0a20
refactor: unify peer kind to ChatType, rename dm to direct ( #11881 )
...
* fix: use .js extension for ESM imports of RoutePeerKind
The imports incorrectly used .ts extension which doesn't resolve
with moduleResolution: NodeNext. Changed to .js and added 'type'
import modifier.
* fix tsconfig
* refactor: unify peer kind to ChatType, rename dm to direct
- Replace RoutePeerKind with ChatType throughout codebase
- Change 'dm' literal values to 'direct' in routing/session keys
- Keep backward compat: normalizeChatType accepts 'dm' -> 'direct'
- Add ChatType export to plugin-sdk, deprecate RoutePeerKind
- Update session key parsing to accept both 'dm' and 'direct' markers
- Update all channel monitors and extensions to use ChatType
BREAKING CHANGE: Session keys now use 'direct' instead of 'dm'.
Existing 'dm' keys still work via backward compat layer.
* fix tests
* test: update session key expectations for dmdirect migration
- Fix test expectations to expect :direct: in generated output
- Add explicit backward compat test for normalizeChatType('dm')
- Keep input test data with :dm: keys to verify backward compat
* fix: accept legacy 'dm' in session key parsing for backward compat
getDmHistoryLimitFromSessionKey now accepts both :dm: and :direct:
to ensure old session keys continue to work correctly.
* test: add explicit backward compat tests for dmdirect migration
- session-key.test.ts: verify both :dm: and :direct: keys are valid
- getDmHistoryLimitFromSessionKey: verify both formats work
* feat: backward compat for resetByType.dm config key
* test: skip unix-path Nix tests on Windows
2026-02-09 09:20:52 +09:00
max
a1123dd9be
Centralize date/time formatting utilities ( #11831 )
2026-02-08 04:53:31 -08:00
mudrii
5d82c82313
feat: per-channel responsePrefix override ( #9001 )
...
* feat: per-channel responsePrefix override
Add responsePrefix field to all channel config types and Zod schemas,
enabling per-channel and per-account outbound response prefix overrides.
Resolution cascade (most specific wins):
L1: channels.<ch>.accounts.<id>.responsePrefix
L2: channels.<ch>.responsePrefix
L3: (reserved for channels.defaults)
L4: messages.responsePrefix (existing global)
Semantics:
- undefined -> inherit from parent level
- empty string -> explicitly no prefix (stops cascade)
- "auto" -> derive [identity.name] from routed agent
Changes:
- Core logic: resolveResponsePrefix() in identity.ts accepts
optional channel/accountId and walks the cascade
- resolveEffectiveMessagesConfig() passes channel context through
- Types: responsePrefix added to WhatsApp, Telegram, Discord, Slack,
Signal, iMessage, Google Chat, MS Teams, Feishu, BlueBubbles configs
- Zod schemas: responsePrefix added for config validation
- All channel handlers wired: telegram, discord, slack, signal,
imessage, line, heartbeat runner, route-reply, native commands
- 23 new tests covering backward compat, channel/account levels,
full cascade, auto keyword, empty string stops, unknown fallthrough
Fully backward compatible - no existing config is affected.
Fixes #8857
* fix: address CI lint + review feedback
- Replace Record<string, any> with proper typed helpers (no-explicit-any)
- Add curly braces to single-line if returns (eslint curly)
- Fix JSDoc: 'Per-channel' → 'channel/account' on shared config types
- Extract getChannelConfig() helper for type-safe dynamic key access
* fix: finish responsePrefix overrides (#9001 ) (thanks @mudrii)
* fix: normalize prefix wiring and types (#9001 ) (thanks @mudrii)
---------
Co-authored-by: Gustavo Madeira Santana <gumadeiras@gmail.com >
2026-02-04 16:16:34 -05:00
cpojer
6b0d6e2540
chore: We have a sleep at home. The sleep at home:
2026-02-02 21:44:02 +09:00
cpojer
935a0e5708
chore: Enable typescript/no-explicit-any rule.
2026-02-02 16:18:09 +09:00
cpojer
f06dd8df06
chore: Enable "experimentalSortImports" in Oxfmt and reformat all imorts.
2026-02-01 10:03:47 +09:00
cpojer
5ceff756e1
chore: Enable "curly" rule to avoid single-statement if confusion/errors.
2026-01-31 16:19:20 +09:00