Peter Steinberger
cc145407c3
feat: mac node exec policy + remote skills hot reload
2026-01-16 03:45:06 +00:00
Peter Steinberger
728ad7df36
feat!: move msteams to plugin
2026-01-16 02:59:43 +00:00
Peter Steinberger
488447d77f
refactor: harden session store updates
...
Co-authored-by: Tyler Yust <tyler6204@users.noreply.github.com>
2026-01-15 23:41:34 +00:00
Peter Steinberger
f12a7f6c0b
chore: purge DS_Store files
2026-01-15 22:59:16 +00:00
Peter Steinberger
9d28441c41
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
b4f756b6f2
test(cron): rename split suites
2026-01-14 05:40:42 +00:00
Peter Steinberger
b74a102af7
refactor(src): split oversized modules
2026-01-14 01:17:56 +00:00
Peter Steinberger
5bbbae173f
test: fix cron delivery channel expectations
2026-01-13 09:07:13 +00:00
Peter Steinberger
ea979f0669
refactor!: rename chat providers to channels
2026-01-13 08:40:39 +00:00
Peter Steinberger
045cff6d99
Merge pull request #583 from mitschabaude-bot/feat/agent-model-fallbacks
...
Config: per-agent model fallbacks
2026-01-13 06:54:00 +00:00
Gregor's Bot
2dfc1b7aed
Config: support per-agent model fallbacks
2026-01-13 06:50:20 +00:00
George Pickett
4d1a2aa5ac
Thinking: gate xhigh by model
2026-01-13 06:48:26 +00:00
Peter Steinberger
b558308e29
feat: cron ISO at + delete-after-run
2026-01-13 04:55:48 +00:00
meaningfool
a1e507584a
fix: resolve CI failures (test timeout & formatting)
2026-01-13 04:25:41 +00:00
Shadow
6d93369b59
Cron: persist enabled=false patches
...
Closes #205
2026-01-12 22:16:17 -06:00
Peter Steinberger
5106813583
fix: address lint warnings
2026-01-12 23:13:40 +00:00
Peter Steinberger
a624a019fb
fix: restore heartbeat defaults and model listing
2026-01-12 17:17:54 +00:00
Peter Steinberger
ae2d188eef
test: update heartbeat and agent list thresholds
2026-01-12 17:14:04 +00:00
Peter Steinberger
0d7102bc4d
feat: add cron agent binding
2026-01-12 11:07:38 +00:00
Peter Steinberger
30a1fd5dec
Move provider to a plugin-architecture ( #661 )
...
* refactor: introduce provider plugin registry
* refactor: move provider CLI to plugins
* docs: add provider plugin implementation notes
* refactor: shift provider runtime logic into plugins
* refactor: add plugin defaults and summaries
* docs: update provider plugin notes
* feat(commands): add /commands slash list
* Auto-reply: tidy help message
* Auto-reply: fix status command lint
* Tests: align google shared expectations
* Auto-reply: tidy help message
* Auto-reply: fix status command lint
* refactor: move provider routing into plugins
* test: align agent routing expectations
* docs: update provider plugin notes
* refactor: route replies via provider plugins
* docs: note route-reply plugin hooks
* refactor: extend provider plugin contract
* refactor: derive provider status from plugins
* refactor: unify gateway provider control
* refactor: use plugin metadata in auto-reply
* fix: parenthesize cron target selection
* refactor: derive gateway methods from plugins
* refactor: generalize provider logout
* refactor: route provider logout through plugins
* refactor: move WhatsApp web login methods into plugin
* refactor: generalize provider log prefixes
* refactor: centralize default chat provider
* refactor: derive provider lists from registry
* refactor: move provider reload noops into plugins
* refactor: resolve web login provider via alias
* refactor: derive CLI provider options from plugins
* refactor: derive prompt provider list from plugins
* style: apply biome lint fixes
* fix: resolve provider routing edge cases
* docs: update provider plugin refactor notes
* fix(gateway): harden agent provider routing
* refactor: move provider routing into plugins
* refactor: move provider CLI to plugins
* refactor: derive provider lists from registry
* fix: restore slash command parsing
* refactor: align provider ids for schema
* refactor: unify outbound target resolution
* fix: keep outbound labels stable
* feat: add msteams to cron surfaces
* fix: clean up lint build issues
* refactor: localize chat provider alias normalization
* refactor: drive gateway provider lists from plugins
* docs: update provider plugin notes
* style: format message-provider
* fix: avoid provider registry init cycles
* style: sort message-provider imports
* fix: relax provider alias map typing
* refactor: move provider routing into plugins
* refactor: add plugin pairing/config adapters
* refactor: route pairing and provider removal via plugins
* refactor: align auto-reply provider typing
* test: stabilize telegram media mocks
* docs: update provider plugin refactor notes
* refactor: pluginize outbound targets
* refactor: pluginize provider selection
* refactor: generalize text chunk limits
* docs: update provider plugin notes
* refactor: generalize group session/config
* fix: normalize provider id for room detection
* fix: avoid provider init in system prompt
* style: formatting cleanup
* refactor: normalize agent delivery targets
* test: update outbound delivery labels
* chore: fix lint regressions
* refactor: extend provider plugin adapters
* refactor: move elevated/block streaming defaults to plugins
* refactor: defer outbound send deps to plugins
* docs: note plugin-driven streaming/elevated defaults
* refactor: centralize webchat provider constant
* refactor: add provider setup adapters
* refactor: delegate provider add config to plugins
* docs: document plugin-driven provider add
* refactor: add plugin state/binding metadata
* refactor: build agent provider status from plugins
* docs: note plugin-driven agent bindings
* refactor: centralize internal provider constant usage
* fix: normalize WhatsApp targets for groups and E.164 (#631 ) (thanks @imfing)
* refactor: centralize default chat provider
* refactor: centralize WhatsApp target normalization
* refactor: move provider routing into plugins
* refactor: normalize agent delivery targets
* chore: fix lint regressions
* fix: normalize WhatsApp targets for groups and E.164 (#631 ) (thanks @imfing)
* feat: expand provider plugin adapters
* refactor: route auto-reply via provider plugins
* fix: align WhatsApp target normalization
* fix: normalize WhatsApp targets for groups and E.164 (#631 ) (thanks @imfing)
* refactor: centralize WhatsApp target normalization
* feat: add /config chat config updates
* docs: add /config get alias
* feat(commands): add /commands slash list
* refactor: centralize default chat provider
* style: apply biome lint fixes
* chore: fix lint regressions
* fix: clean up whatsapp allowlist typing
* style: format config command helpers
* refactor: pluginize tool threading context
* refactor: normalize session announce targets
* docs: note new plugin threading and announce hooks
* refactor: pluginize message actions
* docs: update provider plugin actions notes
* fix: align provider action adapters
* refactor: centralize webchat checks
* style: format message provider helpers
* refactor: move provider onboarding into adapters
* docs: note onboarding provider adapters
* feat: add msteams onboarding adapter
* style: organize onboarding imports
* fix: normalize msteams allowFrom types
* feat: add plugin text chunk limits
* refactor: use plugin chunk limit fallbacks
* feat: add provider mention stripping hooks
* style: organize provider plugin type imports
* refactor: generalize health snapshots
* refactor: update macOS health snapshot handling
* docs: refresh health snapshot notes
* style: format health snapshot updates
* refactor: drive security warnings via plugins
* docs: note provider security adapter
* style: format provider security adapters
* refactor: centralize provider account defaults
* refactor: type gateway client identity constants
* chore: regen gateway protocol swift
* fix: degrade health on failed provider probe
* refactor: centralize pairing approve hint
* docs: add plugin CLI command references
* refactor: route auth and tool sends through plugins
* docs: expand provider plugin hooks
* refactor: document provider docking touchpoints
* refactor: normalize internal provider defaults
* refactor: streamline outbound delivery wiring
* refactor: make provider onboarding plugin-owned
* refactor: support provider-owned agent tools
* refactor: move telegram draft chunking into telegram module
* refactor: infer provider tool sends via extractToolSend
* fix: repair plugin onboarding imports
* refactor: de-dup outbound target normalization
* style: tidy plugin and agent imports
* refactor: data-drive provider selection line
* fix: satisfy lint after provider plugin rebase
* test: deflake gateway-cli coverage
* style: format gateway-cli coverage test
* refactor(provider-plugins): simplify provider ids
* test(pairing-cli): avoid provider-specific ternary
* style(macos): swiftformat HealthStore
* refactor(sandbox): derive provider tool denylist
* fix(sandbox): avoid plugin init in defaults
* refactor(provider-plugins): centralize provider aliases
* style(test): satisfy biome
* refactor(protocol): v3 providers.status maps
* refactor(ui): adapt to protocol v3
* refactor(macos): adapt to protocol v3
* test: update providers.status v3 fixtures
* refactor(gateway): map provider runtime snapshot
* test(gateway): update reload runtime snapshot
* refactor(whatsapp): normalize heartbeat provider id
* docs(refactor): update provider plugin notes
* style: satisfy biome after rebase
* fix: describe sandboxed elevated in prompt
* feat(gateway): add agent image attachments + live probe
* refactor: derive CLI provider options from plugins
* fix(gateway): harden agent provider routing
* fix(gateway): harden agent provider routing
* refactor: align provider ids for schema
* fix(protocol): keep agent provider string
* fix(gateway): harden agent provider routing
* fix(protocol): keep agent provider string
* refactor: normalize agent delivery targets
* refactor: support provider-owned agent tools
* refactor(config): provider-keyed elevated allowFrom
* style: satisfy biome
* fix(gateway): appease provider narrowing
* style: satisfy biome
* refactor(reply): move group intro hints into plugin
* fix(reply): avoid plugin registry init cycle
* refactor(providers): add lightweight provider dock
* refactor(gateway): use typed client id in connect
* refactor(providers): document docks and avoid init cycles
* refactor(providers): make media limit helper generic
* fix(providers): break plugin registry import cycles
* style: satisfy biome
* refactor(status-all): build providers table from plugins
* refactor(gateway): delegate web login to provider plugin
* refactor(provider): drop web alias
* refactor(provider): lazy-load monitors
* style: satisfy lint/format
* style: format status-all providers table
* style: swiftformat gateway discovery model
* test: make reload plan plugin-driven
* fix: avoid token stringification in status-all
* refactor: make provider IDs explicit in status
* feat: warn on signal/imessage provider runtime errors
* test: cover gateway provider runtime warnings in status
* fix: add runtime kind to provider status issues
* test: cover health degradation on probe failure
* fix: keep routeReply lightweight
* style: organize routeReply imports
* refactor(web): extract auth-store helpers
* refactor(whatsapp): lazy login imports
* refactor(outbound): route replies via plugin outbound
* docs: update provider plugin notes
* style: format provider status issues
* fix: make sandbox scope warning wrap-safe
* refactor: load outbound adapters from provider plugins
* docs: update provider plugin outbound notes
* style(macos): fix swiftformat lint
* docs: changelog for provider plugins
* fix(macos): satisfy swiftformat
* fix(macos): open settings via menu action
* style: format after rebase
* fix(macos): open Settings via menu action
---------
Co-authored-by: LK <luke@kyohere.com>
Co-authored-by: Luke K (pr-0f3t) <2609441+lc0rp@users.noreply.github.com>
Co-authored-by: Xin <xin@imfing.com>
2026-01-11 11:45:25 +00:00
Peter Steinberger
f615cb2857
feat: add CLI backend fallback
2026-01-11 00:55:22 +00:00
Peter Steinberger
cb8d519434
fix: cron wakeMode now waits for heartbeat ( #666 ) (thanks @roshanasingh4)
2026-01-10 18:31:35 +01:00
Roshan Singh
53d5307c1b
fix(cron): wait for heartbeat to complete when wakeMode is "now"
...
Fixes #652
When cron jobs with sessionTarget:"main" have wakeMode:"now",
they were being marked as completed immediately without waiting for the
agent to actually process the system event.
The issue was that requestHeartbeatNow() is fire-and-forget and
doesn't wait for the heartbeat to complete. The job would finish
with durationMs: 0 before the agent had a chance to run.
This fix:
- Adds runHeartbeatOnce to CronServiceDeps
- Wires it up in gateway/server.ts to load config and pass runtime
- Modifies executeJob() to call runHeartbeatOnce when wakeMode:"now"
- Waits for heartbeat to complete and maps status to cron result:
* "ran" → "ok"
* "skipped" → "skipped"
* "failed" → "error"
- Falls back to old behavior for wakeMode:"next-heartbeat" or if
runHeartbeatOnce is not available (backward compatibility)
Benefits:
- Jobs now have accurate durationMs reflecting actual processing time
- Jobs are correctly marked with "error" status if heartbeat fails
- Prevents race condition where job completes before agent runs
[AI-assisted] - Generated with z.ai GLM-4.7
[Tested: Lightly tested - Logic validated with test scenarios, code quality checks passed, integration testing requires live Clawdbot instance]
2026-01-10 18:31:35 +01:00
Peter Steinberger
579598a1ee
refactor: centralize WhatsApp target normalization
2026-01-10 02:39:52 +01:00
Xin
97a216b77a
fix: normalize WhatsApp targets for groups and E.164 ( #631 ) (thanks @imfing)
2026-01-10 02:22:13 +01:00
Peter Steinberger
5ad2dd8be0
fix: centralize verbose overrides and tool stream gating
2026-01-10 00:52:24 +01:00
Peter Steinberger
2f2a18b706
refactor: cron payload migration cleanup ( #621 )
...
* refactor: centralize cron payload migration
* test: stabilize block streaming mocks
* test: adjust chunker fence-close case
2026-01-09 22:56:55 +00:00
Peter Steinberger
4c7f7b9234
fix: migrate cron payload channel alias
2026-01-09 22:20:22 +00:00
Peter Steinberger
865abef566
refactor: centralize model override validation
2026-01-09 20:14:42 +01:00
Peter Steinberger
b53f657485
fix: harden Gmail hook model defaults ( #472 ) (thanks @koala73)
2026-01-09 19:59:45 +01:00
Peter Steinberger
efe793e05d
refactor(test): consolidate temp home + vitest setup
2026-01-09 16:41:05 +01:00
Peter Steinberger
4c164a2464
fix: avoid invalid UTF-16 in truncation ( #567 )
2026-01-09 15:19:49 +01:00
Peter Steinberger
947844117c
feat: wire multi-agent config and routing
...
Co-authored-by: Mark Pors <1078320+pors@users.noreply.github.com>
2026-01-09 12:48:42 +00:00
Onur
c907a16e94
feat(msteams): add MS Teams provider skeleton
...
- Add Microsoft 365 Agents SDK packages (@microsoft/agents-hosting,
@microsoft/agents-hosting-express, @microsoft/agents-hosting-extensions-teams)
- Add MSTeamsConfig type and zod schema
- Create src/msteams/ provider with monitor, token, send, probe
- Wire provider into gateway (server-providers.ts, server.ts)
- Add msteams to all provider type unions (hooks, queue, cron, etc.)
- Update implementation guide with new SDK and progress
2026-01-09 11:05:34 +01:00
Peter Steinberger
d93faa803c
fix: serialize claude cli runs
2026-01-09 04:58:21 +00:00
Peter Steinberger
68a0da8ed8
fix: allow default model outside allowlist
2026-01-09 04:18:30 +00:00
Peter Steinberger
c2217332d8
feat(agent): add claude cli runner
2026-01-09 04:52:37 +01:00
Peter Steinberger
81686f676a
refactor(cron): centralize telegram targets + delivery helpers
2026-01-08 21:36:53 +00:00
Peter Steinberger
897ab9dfe5
test(cron): cover telegram topic delivery ( #478 ) (thanks @nachoiacovino)
2026-01-08 21:13:39 +00:00
Nacho Iacovino
72699ded91
fix(cron): parse :topic: suffix for Telegram topic delivery
...
When cron jobs specify a Telegram topic in the 'to' field like
'-1003420657307:topic:60', the delivery code now correctly parses
this into separate chatId and messageThreadId values.
Previously, the entire string was passed as chatId, causing messages
to fail delivery to forum topics.
2026-01-08 21:12:15 +00:00
Peter Steinberger
964568105e
refactor(telegram): centralize target parsing
2026-01-08 21:38:59 +01:00
Peter Steinberger
ebbb61249b
style(cron): format telegram target tests
2026-01-08 21:23:07 +01:00
Peter Steinberger
86f4f76a83
fix(cron): parse telegram targets with prefixes (thanks @mitschabaude-bot)
2026-01-08 21:23:07 +01:00
Peter Steinberger
7e147bb0ea
feat: add telegram topic delivery for cron
2026-01-08 11:05:28 +00:00
Peter Steinberger
b0b2b73b4e
feat: allow hook model overrides
2026-01-08 09:33:42 +00:00
Emanuel Stadler
ed7f3a2291
Cron: clamp timer to avoid TimeoutOverflowWarning
2026-01-07 19:25:18 +01:00
Peter Steinberger
4284a2f2c5
fix: preserve markdown fences when chunking
2026-01-06 20:23:41 +01:00
Peter Steinberger
f05d785bd9
fix: restore Anthropic token accounting
2026-01-06 18:52:01 +00:00
Peter Steinberger
882bcaf414
feat: multi-agent routing + multi-account providers
2026-01-06 18:33:37 +00:00
Onur
3e167dcaf8
feat(agent): add skipBootstrap config to skip bootstrap file creation ( #292 )
2026-01-06 11:02:51 -06:00