Commit Graph

17 Commits

Author SHA1 Message Date
Peter Steinberger
0b944bc018 refactor(security): harden CommandAuthorized plumbing 2026-01-17 10:19:34 +00:00
Peter Steinberger
f24bf0547f fix: gate image tool and deepgram audio payload 2026-01-17 09:34:40 +00:00
Peter Steinberger
87ebcddc50 fix(security): default-deny command execution 2026-01-17 08:28:09 +00:00
Peter Steinberger
e7f8d047a2 style: run oxfmt 2026-01-17 08:00:05 +00:00
Peter Steinberger
ecd3c2a0ee fix(security): gate slash/control commands 2026-01-17 06:49:34 +00:00
Peter Steinberger
5c8eff7ffa fix: unify inbound sender labels 2026-01-17 05:21:09 +00:00
Peter Steinberger
b5aac83781 fix: finalize inbound contexts 2026-01-17 05:06:39 +00:00
Peter Steinberger
ecaa77313a refactor: normalize inbound context 2026-01-17 04:05:33 +00:00
Peter Steinberger
9b9f2b6ce7 chore: format + regenerate protocol 2026-01-17 03:40:49 +00:00
Peter Steinberger
bc7ed05902 refactor: centralize group sender identity 2026-01-17 03:32:48 +00:00
Peter Steinberger
a3059cb8c2 fix: scope history injection to pending-only 2026-01-16 23:52:42 +00:00
Wilkins
d2b93eed12 fix: truncate skill command descriptions to 100 chars for Discord (#1018)
* fix: truncate skill command descriptions to 100 chars for Discord

Discord slash commands have a 100 character limit for descriptions.
Skill descriptions were not being truncated, causing command registration
to fail with an empty error from the Discord API.

* style: format

* style: format
2026-01-16 10:01:59 -06:00
Peter Steinberger
c93b02d9d2 fix: scope whatsapp self-chat response prefix 2026-01-16 10:54:11 +00:00
Sebastian
19f17a7d1d fix: mutate prefixContext object instead of reassigning for closure correctness 2026-01-14 23:20:19 -05:00
Sebastian
db6c386825 feat: add dynamic template variables to messages.responsePrefix (#923)
Adds support for template variables in `messages.responsePrefix` that
resolve dynamically at runtime with the actual model used (including
after fallback).

Supported variables (case-insensitive):
- {model} - short model name (e.g., "claude-opus-4-5", "gpt-4o")
- {modelFull} - full model identifier (e.g., "anthropic/claude-opus-4-5")
- {provider} - provider name (e.g., "anthropic", "openai")
- {thinkingLevel} or {think} - thinking level ("high", "low", "off")
- {identity.name} or {identityName} - agent identity name

Example: "[{model} | think:{thinkingLevel}]" → "[claude-opus-4-5 | think:high]"

Variables show the actual model used after fallback, not the intended
model. Unresolved variables remain as literal text.

Implementation:
- New module: src/auto-reply/reply/response-prefix-template.ts
- Template interpolation in normalize-reply.ts via context provider
- onModelSelected callback in agent-runner-execution.ts
- Updated all 6 provider message handlers (web, signal, discord,
  telegram, slack, imessage)
- 27 unit tests covering all variables and edge cases
- Documentation in docs/gateway/configuration.md and JSDoc

Fixes #923
2026-01-14 23:05:08 -05: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
b74a102af7 refactor(src): split oversized modules 2026-01-14 01:17:56 +00:00