Byungsker
709dc671e4
fix(session): archive old transcript on daily/scheduled reset to prevent orphaned files ( #35493 )
...
Merged via squash.
Prepared head SHA: 0d95549d75
Co-authored-by: byungsker <72309817+byungsker@users.noreply.github.com >
Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com >
Reviewed-by: @jalehman
2026-03-05 11:52:23 -08:00
Bob
6a705a37f2
ACP: add persistent Discord channel and Telegram topic bindings ( #34873 )
...
* docs: add ACP persistent binding experiment plan
* docs: align ACP persistent binding spec to channel-local config
* docs: scope Telegram ACP bindings to forum topics only
* docs: lock bound /new and /reset behavior to in-place ACP reset
* ACP: add persistent discord/telegram conversation bindings
* ACP: fix persistent binding reuse and discord thread parent context
* docs: document channel-specific persistent ACP bindings
* ACP: split persistent bindings and share conversation id helpers
* ACP: defer configured binding init until preflight passes
* ACP: fix discord thread parent fallback and explicit disable inheritance
* ACP: keep bound /new and /reset in-place
* ACP: honor configured bindings in native command flows
* ACP: avoid configured fallback after runtime bind failure
* docs: refine ACP bindings experiment config examples
* acp: cut over to typed top-level persistent bindings
* ACP bindings: harden reset recovery and native command auth
* Docs: add ACP bound command auth proposal
* Tests: normalize i18n registry zh-CN assertion encoding
* ACP bindings: address review findings for reset and fallback routing
* ACP reset: gate hooks on success and preserve /new arguments
* ACP bindings: fix auth and binding-priority review findings
* Telegram ACP: gate ensure on auth and accepted messages
* ACP bindings: fix session-key precedence and unavailable handling
* ACP reset/native commands: honor fallback targets and abort on bootstrap failure
* Config schema: validate ACP binding channel and Telegram topic IDs
* Discord ACP: apply configured DM bindings to native commands
* ACP reset tails: dispatch through ACP after command handling
* ACP tails/native reset auth: fix target dispatch and restore full auth
* ACP reset detection: fallback to active ACP keys for DM contexts
* Tests: type runTurn mock input in ACP dispatch test
* ACP: dedup binding route bootstrap and reset target resolution
* reply: align ACP reset hooks with bound session key
* docs: replace personal discord ids with placeholders
* fix: add changelog entry for ACP persistent bindings (#34873 ) (thanks @dutifulbob)
---------
Co-authored-by: Onur <2453968+osolmaz@users.noreply.github.com >
2026-03-05 09:38:12 +01:00
Isis Anisoptera
432e0222dd
fix: restore auto-reply system events timeline ( #34794 ) (thanks @anisoptera) ( #34794 )
...
Co-authored-by: Ayaan Zaidi <zaidi@uplause.io >
2026-03-05 07:56:14 +05:30
Tak Hoffman
7f2708a8c3
fix(routing): unify session delivery invariants for duplicate suppression ( #33786 )
...
* Routing: unify session delivery invariants
* Routing: address PR review feedback
* Routing: tighten topic and session-scope suppression
* fix(chat): inherit routes for per-account channel-peer sessions
2026-03-03 21:40:38 -06:00
Peter Steinberger
6b85ec3022
docs: tighten subscription guidance and update MiniMax M2.5 refs
2026-03-03 00:02:37 +00:00
Peter Steinberger
3beb1b9da9
test: speed up heavy suites with shared fixtures
2026-03-02 21:58:35 +00:00
Peter Steinberger
5b8f492a48
fix(security): harden spoofed system marker handling
2026-03-02 06:19:16 +00:00
Peter Steinberger
6fc0787bf0
chore(deps): bump workspace dependencies
2026-03-02 04:22:33 +00:00
Peter Steinberger
072e1e9e38
test(session): cover internal route without external fallback
2026-03-02 03:33:12 +00:00
graysurf
95db5bb5e8
fix(session): preserve external lastTo routing for internal turns
2026-03-02 03:33:12 +00:00
Peter Steinberger
412eabc42b
fix(session): retire stale dm main route after dmScope migration ( #31010 )
2026-03-02 00:33:54 +00:00
Peter Steinberger
d729ab2150
fix(session): harden usage accounting and memory flush recovery
2026-03-02 00:07:29 +00:00
joshavant
67e9554645
test(session): normalize parent fork parentSession path assertion
2026-02-26 14:47:22 +00:00
Peter Steinberger
04870a5528
test(session): make fork parent path assertion cross-platform
2026-02-26 05:12:51 +01:00
Peter Steinberger
eb73e87f18
fix(session): prevent silent overflow on parent thread forks ( #26912 )
...
Lands #26912 from @markshields-tl with configurable session.parentForkMaxTokens and docs/tests/changelog updates.
Co-authored-by: Mark Shields <239231357+markshields-tl@users.noreply.github.com >
2026-02-25 23:54:02 +00:00
Peter Steinberger
445c7a65e6
test: simplify session reset and rawbody coverage
2026-02-23 18:19:23 +00:00
Peter Steinberger
b81bce703c
test: streamline trigger and session coverage
2026-02-23 17:52:23 +00:00
Peter Steinberger
19046e0cfc
fix(webchat): preserve session labels across /new resets ( #23755 )
...
Co-authored-by: ThunderStormer <16649514+ThunderStormer@users.noreply.github.com >
2026-02-22 21:37:19 +01:00
Peter Steinberger
8a83ca54a1
fix(webchat): preserve session channel routing on internal turns ( #23258 )
...
Co-authored-by: binary64 <1680627+binary64@users.noreply.github.com >
2026-02-22 21:37:18 +01:00
Vincent Koc
5e73f33448
fix(slack): keep thread session fork/history context after first turn ( #23843 )
...
* Slack thread sessions: keep forking and history context after first turn
* Update CHANGELOG.md
2026-02-22 14:39:00 -05:00
Vignesh Natarajan
aab20e58d7
Sessions: persist prompt-token totals without usage
2026-02-21 23:37:42 -08:00
Gustavo Madeira Santana
0e1aa77928
chore(tsgo/format): fix CI errors
2026-02-21 17:51:56 -05:00
Peter Steinberger
52ddb6ae18
test: streamline auto-reply and tts suites
2026-02-21 21:44:01 +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
03e6acd051
chore: Fix types in tests 28/N.
2026-02-17 14:32:18 +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
Sebastian
68634468f5
chore(format): fix test import order
2026-02-16 22:18:03 -05:00
Sebastian
def0254169
test(session): cover stale threadId fallback
2026-02-16 22:08:51 -05:00
cpojer
90ef2d6bdf
chore: Update formatting.
2026-02-17 09:18:40 +09:00
j2h4u
5f821ed067
fix(session): prevent stale threadId leaking into non-thread sessions
...
When a user interacts with the bot inside a DM topic (thread), the
session persists `lastThreadId`. If the user later sends a message
from the main DM (no topic), `ctx.MessageThreadId` is undefined and
the `||` fallback picks up the stale persisted value — causing the
bot to reply into the old topic instead of the main conversation.
Only fall back to `baseEntry.lastThreadId` for thread sessions where
the fallback is meaningful (e.g. consecutive messages in the same
thread). Non-thread sessions now correctly leave threadId unset.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-16 23:51:12 +01:00
Peter Steinberger
53ec78319d
perf(test): consolidate session suites
2026-02-15 23:14:42 +00:00
Peter Steinberger
8fdde0429e
perf(auto-reply): avoid skill scans for inline directives
2026-02-15 19:29:27 +00:00
Peter Steinberger
d75bcc27f9
refactor(test): dedupe session reset policy setup
2026-02-15 00:45:10 +00:00
Peter Steinberger
5a6fc20bd7
perf(test): reuse temp roots in session suites
2026-02-14 23:51:47 +00:00
Peter Steinberger
5daaab3692
perf(test): slim raw-body directive integration
2026-02-14 20:12:27 +00: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
cpojer
f06dd8df06
chore: Enable "experimentalSortImports" in Oxfmt and reformat all imorts.
2026-02-01 10:03:47 +09:00
Peter Steinberger
9a7160786a
refactor: rename to openclaw
2026-01-30 03:16:21 +01:00
Peter Steinberger
6d16a658e5
refactor: rename clawdbot to moltbot with legacy compat
2026-01-27 12:21:02 +00:00
Peter Steinberger
4b6cdd1d3c
fix: normalize session keys and outbound mirroring
2026-01-24 11:57:11 +00:00
Echo
c415ccaed5
feat(sessions): add channelIdleMinutes config for per-channel session idle durations ( #1353 )
...
* feat(sessions): add channelIdleMinutes config for per-channel session idle durations
Add new `channelIdleMinutes` config option to allow different session idle
timeouts per channel. For example, Discord sessions can now be configured
to last 7 days (10080 minutes) while other channels use shorter defaults.
Config example:
sessions:
channelIdleMinutes:
discord: 10080 # 7 days
The channel-specific idle is passed as idleMinutesOverride to the existing
resolveSessionResetPolicy, integrating cleanly with the new reset policy
architecture.
* fix
* feat: add per-channel session reset overrides (#1353 ) (thanks @cash-echo-bot)
---------
Co-authored-by: Cash Williams <cashwilliams@gmail.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-01-21 19:10:31 +00:00
Doug von Kohorn
528524e4c7
fix(session): preserve command argument casing
2026-01-20 12:53:45 +01:00
Peter Steinberger
f86b24c511
refactor(session): centralize thread reset detection
...
Co-authored-by: Austin Mudd <austinm911@gmail.com >
2026-01-18 06:55:04 +00:00
Peter Steinberger
367826f6e4
feat(session): add daily reset policy
...
Co-authored-by: Austin Mudd <austinm911@gmail.com >
2026-01-18 06:37:37 +00:00
Peter Steinberger
c379191f80
chore: migrate to oxlint and oxfmt
...
Co-authored-by: Christoph Nakazawa <christoph.pojer@gmail.com >
2026-01-14 15:02:19 +00:00
Peter Steinberger
e3cd431551
fix(auto-reply): RawBody commands + locked session updates ( #643 )
2026-01-10 17:32:31 +01:00
Peter Steinberger
b2de667b11
fix: persist topic session files
2026-01-07 22:56:50 +00:00
Peter Steinberger
0d021391a9
fix: scope thread sessions and discord starter fetch
2026-01-07 19:42:50 +01:00