Commit Graph

4124 Commits

Author SHA1 Message Date
Peter Steinberger
ea165b6fac fix: fall back to non-PTY exec 2026-01-23 06:27:26 +00:00
Peter Steinberger
12700696f8 test: trim plugin + telegram test setup 2026-01-23 06:22:09 +00:00
Peter Steinberger
9c5a339d0e test(memory): speed up batch coverage 2026-01-23 06:22:09 +00:00
Peter Steinberger
35e20753e7 test(agents): merge sessions_spawn group announce coverage 2026-01-23 06:22:09 +00:00
Peter Steinberger
e2a98bc69c test(commands): streamline onboarding tests 2026-01-23 06:22:09 +00:00
Peter Steinberger
9513dec35f test(gateway): consolidate server suites for speed 2026-01-23 06:22:09 +00:00
ganghyun kim
d72a8a5cd6 fix: clarify Discord onboarding hint (#1487)
Thanks @kyleok.

Co-authored-by: Ganghyun Kim <58307870+kyleok@users.noreply.github.com>
2026-01-23 06:11:41 +00:00
Peter Steinberger
cf2d0645fb fix: always skip browser opens in tests 2026-01-23 06:00:21 +00:00
Peter Steinberger
389cafd078 fix: extend gateway chat test timeout on windows 2026-01-23 05:55:35 +00:00
Peter Steinberger
a9b0f99d48 fix: gateway summary lookup + test browser opens 2026-01-23 05:54:51 +00:00
Peter Steinberger
436cb68861 test: add media auto-detect coverage 2026-01-23 05:47:13 +00:00
Peter Steinberger
09933a74cc feat: improve media auto-detect 2026-01-23 05:47:09 +00:00
Peter Steinberger
a1878d0d3c feat: add slack replyToModeByChatType overrides 2026-01-23 05:38:28 +00:00
Stefan Galescu
aa3972d93d feat(slack): add dm-specific replyToMode configuration (#1442)
Adds support for separate replyToMode settings for DMs vs channels:

- Add channels.slack.dm.replyToMode for DM-specific threading
- Keep channels.slack.replyToMode as default for channels
- Add resolveSlackReplyToMode helper to centralize logic
- Pass chatType through threading resolution chain

Usage:
```json5
{
  channels: {
    slack: {
      replyToMode: "off",     // channels
      dm: {
        replyToMode: "all"    // DMs always thread
      }
    }
  }
}
```

When dm.replyToMode is set, DMs use that mode; channels use the
top-level replyToMode. Backward compatible when not configured.
2026-01-23 05:13:23 +00:00
Travis Irby
f653b57aee hydrate files from thread root message on replies
When replying to a Slack thread, files attached to the root message were
  not being fetched. The existing `resolveSlackThreadStarter()` fetched the
  root message text via `conversations.replies` but ignored the `files[]`
  array in the response.

  Changes:
  - Add `files` to `SlackThreadStarter` type and extract from API response
  - Download thread starter files when the reply message has no attachments
  - Add verbose log for thread starter file hydration

  Fixes issue where asking about a PDF in a thread reply would fail because
  the model never received the file content from the root message.
2026-01-23 05:10:36 +00:00
Neo
e1f68407fb fix: follow soul.md more closely (#1434)
* Agents: honor SOUL.md persona guidance

* fix: harden SOUL.md detection (#1434) (thanks @neooriginal)

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-01-23 05:00:13 +00:00
Tak hoffman
bf4a5b3987 CLI: fix Windows gateway startup 2026-01-23 04:47:01 +00:00
Peter Steinberger
aada663f26 feat: refine onboarding hatch flow 2026-01-23 04:32:23 +00:00
Peter Steinberger
1fce0abe13 test: speed up gateway suite setup 2026-01-23 04:28:02 +00:00
Rodrigo Uroz
b5bf4716c7 fix: read Slack thread replies for message reads (#1450) (#1450)
Co-authored-by: Peter Steinberger <steipete@gmail.com>
Co-authored-by: Rodrigo Uroz <rodrigouroz@users.noreply.github.com>
2026-01-23 04:17:45 +00:00
Peter Steinberger
fc24be2173 refactor: add config logging helpers 2026-01-23 04:16:39 +00:00
Peter Steinberger
04bc47cb9a fix: put plugin descriptions under source 2026-01-23 04:02:42 +00:00
Peter Steinberger
a93fbf4af0 refactor: centralize config update logging 2026-01-23 04:01:26 +00:00
Peter Steinberger
3ad48d3786 fix: prefer ~ for home paths in output 2026-01-23 03:44:31 +00:00
Peter Steinberger
c23ecdc487 docs: add changelog entry for #1432 2026-01-23 03:31:42 +00:00
Peter Steinberger
7a745840e1 fix: honor user-pinned profiles and search ranking 2026-01-23 03:28:47 +00:00
Tobias Bischoff
ad554a8fd2 perf(tui): optimize searchable select list filtering
- Add regex caching to avoid creating new RegExp objects on each render
- Optimize smartFilter to use single array with tier-based scoring
- Replace non-existent fuzzyFilter import with local fuzzyFilterLower
- Reduces from 4 array allocations and 4 sorts to 1 array and 1 sort

Fixes pre-existing bug where fuzzyFilter was imported from pi-tui but not exported.
2026-01-23 03:28:18 +00:00
Tobias Bischoff
e6f9333275 fix(auth): skip auth profiles in cooldown during selection and rotation
Auth profiles in cooldown (due to rate limiting) were being attempted,
causing unnecessary retries and delays. This fix ensures:

1. Initial profile selection skips profiles in cooldown
2. Profile rotation (after failures) skips cooldown profiles
3. Clear error message when all profiles are unavailable

Tests added:
- Skips profiles in cooldown during initial selection
- Skips profiles in cooldown when rotating after failure

Fixes #1316
2026-01-23 03:28:18 +00:00
Peter Steinberger
8f0de26e26 fix: honor gateway env token for doctor/security
Co-authored-by: azade-c <azade-c@users.noreply.github.com>
2026-01-23 03:16:52 +00:00
Peter Steinberger
975ec0015c fix: normalize Windows exec allowlist paths 2026-01-23 03:11:41 +00:00
Peter Steinberger
6228985f9d test: speed up test suite 2026-01-23 02:55:38 +00:00
Peter Steinberger
486dd8e071 fix: treat copilot oauth tokens as non-expiring 2026-01-23 02:51:33 +00:00
Peter Steinberger
86c40e5dca fix: set Copilot user agent header 2026-01-23 02:51:33 +00:00
Peter Steinberger
b69e70668d fix: improve GitHub Copilot integration 2026-01-23 02:51:33 +00:00
Peter Steinberger
8e702290f2 fix: honor send path/filePath inputs (#1444) (thanks @hopyky) 2026-01-23 02:27:47 +00:00
Peter Steinberger
04122e4440 test: speed up test suite 2026-01-23 02:22:02 +00:00
Peter Steinberger
7851ce8582 Merge pull request #1444 from hopyky/fix-message-path-parameter
Fix: Support path and filePath parameters in message send action
2026-01-23 02:10:54 +00:00
Peter Steinberger
ce39823185 fix: resolve heartbeat sender and Slack thread_ts 2026-01-23 02:05:34 +00:00
Peter Steinberger
cc34fe86e9 docs: note transcript hygiene sync 2026-01-23 01:38:05 +00:00
Peter Steinberger
6cad20222c refactor: remove transcript sanitize extension 2026-01-23 01:34:33 +00:00
Peter Steinberger
ea95941c40 docs: add transcript hygiene reference 2026-01-23 01:34:21 +00:00
Peter Steinberger
d0c88955d1 Merge pull request #1472 from czekaj/fix/logs-follow-spinner
fix: suppress spinner in logs --follow mode
2026-01-23 01:29:30 +00:00
Peter Steinberger
3b9dfac62f fix: harden Mattermost plugin gating (#1428) (thanks @damoahdominic) 2026-01-23 01:23:23 +00:00
Peter Steinberger
2576cb47c1 fix: improve tool summaries 2026-01-23 01:00:24 +00:00
Lucas Czekaj
8b3a573ccf fix: suppress spinner in logs --follow mode
The progress spinner was being shown for each gateway RPC call during
log tailing, causing repeated spinner frames (◇ │) to appear every
polling interval.

Add a `progress` option to `callGatewayFromCli` and disable the spinner
during follow mode polling to keep output clean.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 16:58:42 -08:00
Peter Steinberger
deb6581c08 feat: add OpenProse plugin skills 2026-01-23 00:49:40 +00:00
Peter Steinberger
828d3f140b fix: gate transcript sanitization by provider 2026-01-23 00:42:45 +00:00
Peter Steinberger
b5c7918620 Merge pull request #1428 from bestparents/feat/mattermost-channel
feat: add Mattermost channel support
2026-01-23 00:24:47 +00:00
Peter Steinberger
2e76f35026 fix: allow chained exec allowlists
Co-authored-by: Lucas Czekaj <1464539+czekaj@users.noreply.github.com>
2026-01-23 00:11:58 +00:00
Peter Steinberger
3dc404530d Merge pull request #1440 from robbyczgw-cla/fix/token-count-after-compaction
fix: update token count display after compaction
2026-01-23 00:10:46 +00:00
Peter Steinberger
497597a302 fix: skip tool id sanitization for openai responses 2026-01-22 23:51:59 +00:00
Peter Steinberger
206fcb6412 refactor: centralize control ui avatar helpers 2026-01-22 23:41:36 +00:00
Peter Steinberger
eaf9cfed3c fix: tui local shell consent UX (#1463)
- add local shell runner + denial notice + tests
- docs: describe ! local shell usage
- lint: drop unused Slack upload contentType
- cleanup: remove stray Swabble pins

Thanks @vignesh07.
Co-authored-by: Vignesh Natarajan <vigneshnatarajan92@gmail.com>
2026-01-22 23:38:44 +00:00
Vignesh Natarajan
56d2910332 tui: clarify local shell exec consent prompt 2026-01-22 23:26:01 +00:00
Vignesh Natarajan
9b4a847fac tui: keep trimming for normal submits; only raw ! triggers bash 2026-01-22 23:26:01 +00:00
Vignesh Natarajan
4fb4a4e1db tui: add local shell execution for !-prefixed lines 2026-01-22 23:26:01 +00:00
Dominic Damoah
d3a0acd8b1 Merge branch 'main' into feat/mattermost-channel 2026-01-22 18:17:40 -05:00
Peter Steinberger
340b338fe5 Merge pull request #1447 from jdrhyne/fix/slack-filetype-deprecation
fix(slack): remove deprecated filetype field from files.uploadV2 [AI]
2026-01-22 23:16:26 +00:00
Peter Steinberger
fb42de9070 feat: add manual onboarding flow alias 2026-01-22 23:09:28 +00:00
Peter Steinberger
fa2bcd3ab7 refactor: require session state for directive handling 2026-01-22 22:42:46 +00:00
Peter Steinberger
ec0cfe0771 fix: clarify session_status model-use guidance 2026-01-22 22:42:37 +00:00
Peter Steinberger
126b3922c0 fix: surface concrete ai error details 2026-01-22 22:24:25 +00:00
Peter Steinberger
462957ce8d Merge pull request #1461 from ameno-/fix/node-daemon-run
Fix node daemon command
2026-01-22 22:02:19 +00:00
Peter Steinberger
fa271cc9d4 fix: resolve control UI avatar URLs (#1457) (thanks @dlauer) 2026-01-22 21:58:46 +00:00
Peter Steinberger
fcedb30f48 Merge pull request #1457 from dlauer/fix/avatar-relative-url-validation
fix(ui): allow relative URLs in avatar validation
2026-01-22 21:57:27 +00:00
Peter Steinberger
3d8a360bbd fix: cover missing session key model switch persist (#1465) (thanks @robbyczgw-cla) 2026-01-22 21:41:05 +00:00
Peter Steinberger
fe784f4944 Merge pull request #1464 from alfranli123/fix/session-memory-suppress-confirmation
fix(session-memory): suppress user-visible confirmation message
2026-01-22 21:40:15 +00:00
Robby
aefe12da3c test: add unit tests for model switch persist behavior
Tests verify:
- Success message shown when session state available
- Error message shown when sessionEntry missing
- Error message shown when sessionStore missing
- No model message when no /model directive

Covers edge cases for #1435 fix.
2026-01-22 20:40:41 +00:00
Robby
bb30a670c8 fix: only show model switch success when persist succeeds (fixes #1435)
Previously, the /model command would display 'Model set to X' even when
the session state wasn't actually persisted (when sessionEntry, sessionStore,
or sessionKey were missing). This caused confusion as users saw success
messages but the model didn't actually change.

This fix:
- Tracks whether the model override was actually persisted
- Only shows success message when persist happened
- Shows a clear error message when persist fails

AI-assisted: Claude Opus 4.5 via Clawdbot
Testing: lightly tested (code review, no runtime test)
2026-01-22 20:31:06 +00:00
Al
f3af9be1af fix(session-memory): suppress user-visible confirmation message
The session-memory hook saves session context to memory files when /new is run,
which is useful internal housekeeping. However, the confirmation message that
was displayed to users (showing the file path) leaked implementation details.

This change removes the user-visible message while keeping the console.log
for debugging purposes. The hook continues to save session context silently.
2026-01-22 15:22:20 -05:00
Dave Lauer
5daa7f8ee8 fix(gateway): resolve local avatars to URL in HTML injection and RPC
The frontend fix alone wasn't enough because:
1. serveIndexHtml() was injecting the raw avatar filename into HTML
2. agent.identity.get RPC was returning raw filename, overwriting the
   HTML-injected value

Now both paths resolve local file avatars (*.png, *.jpg, etc.) to the
/avatar/{agentId} endpoint URL.
2026-01-22 15:16:31 -05:00
Ameno Osman
52503fa237 fix(node): use node run for node daemon 2026-01-22 11:15:51 -08:00
Robby
ef0c75d58c style: fix formatting 2026-01-22 17:47:52 +00:00
Dominic Damoah
622555a77e fix: remove unused originatingChannel variable
Remove unused originatingChannel variable from runPreparedReply function that was assigned but never referenced.
2026-01-22 12:11:05 -05:00
Dominic Damoah
a84766c37e refactor: extract mattermost channel plugin to extension
Move mattermost channel implementation from core to extensions/mattermost plugin. Extract config schema, group mentions, normalize utilities, and all mattermost-specific logic (accounts, client, monitor, probe, send) into the extension. Update imports to use plugin SDK and local modules. Add channel metadata directly in plugin definition instead of using getChatChannelMeta. Update package.json with channel and install configuration.
2026-01-22 12:02:30 -05:00
Jonathan Rhyne
5ae8af7d9b fix(slack): remove deprecated filetype field from files.uploadV2
Slack's files.uploadV2 API no longer supports the filetype field and logs
deprecation warnings when it's included. Slack auto-detects the file type
from the file content, so this field is unnecessary.

This removes the warning:
[WARN] web-api:WebClient filetype is no longer a supported field in files.uploadV2.
2026-01-22 08:33:13 -05:00
Matt mini
b3907f37f6 Fix: Support path and filePath parameters in message send action
The message tool accepts path and filePath parameters in its schema,
but these were never converted to mediaUrl, causing local files to
be ignored when sending messages.

Changes:
- src/agents/tools/message-tool.ts: Convert path/filePath to media with file:// URL
- src/infra/outbound/message-action-runner.ts: Allow hydrateSendAttachmentParams for "send" action

Fixes issue where local audio files (and other media) couldn't be sent
via the message tool with the path parameter.

Users can now use:
  message({ path: "/tmp/file.ogg" })
  message({ filePath: "/tmp/file.ogg" })
2026-01-22 13:15:48 +01:00
Peter Steinberger
ce53ade247 fix: guard invalid avatar bootstrap text 2026-01-22 11:37:29 +00:00
Peter Steinberger
d91e811b0a fix: allowlist match without local exec resolution 2026-01-22 10:29:36 +00:00
Peter Steinberger
4c5068fe81 feat: add sessions preview rpc and menu prewarm 2026-01-22 10:21:50 +00:00
Peter Steinberger
1d5d8c1808 fix: keep backslashes in quoted exec paths 2026-01-22 09:58:24 +00:00
Robby
8722e446c4 fix: update token count display after compaction (#1299) 2026-01-22 09:58:07 +00:00
Peter Steinberger
931709359d fix: omit skills section in minimal prompt 2026-01-22 09:32:49 +00:00
Peter Steinberger
9b4550fc37 test: use absolute exec path for allowlist 2026-01-22 09:20:38 +00:00
Peter Steinberger
99312fd3a1 Merge pull request #1431 from robbyczgw-cla/fix/subagent-skills-inheritance
fix: include skills in minimal prompt mode for subagents
2026-01-22 09:02:28 +00:00
Peter Steinberger
3732b00c5a test: isolate exec allowlist env 2026-01-22 08:58:55 +00:00
Peter Steinberger
6bf574f609 fix: cache usage cost summary 2026-01-22 08:51:22 +00:00
Peter Steinberger
6edd70b7aa fix: wrap cli banner tagline 2026-01-22 08:50:06 +00:00
Peter Steinberger
1682cf15ab chore: update a2ui bundle hash 2026-01-22 08:48:09 +00:00
Peter Steinberger
ce34f00ee9 fix: honor Windows Path casing 2026-01-22 08:33:52 +00:00
Peter Steinberger
086adc003b fix: preserve antigravity thinking block types 2026-01-22 08:31:07 +00:00
Robby
fc0082041b fix: include skills in minimal prompt mode for subagents 2026-01-22 08:28:55 +00:00
Peter Steinberger
b5bd4df7df fix: detect antigravity claude by provider 2026-01-22 08:26:08 +00:00
Peter Steinberger
ae14204f41 fix: sanitize antigravity thinking signatures 2026-01-22 08:17:49 +00:00
Dominic Damoah
8af1af5802 Merge branch 'main' into feat/mattermost-channel 2026-01-22 03:11:53 -05:00
Peter Steinberger
da2540c92a fix: canonicalize allowlist paths on Windows 2026-01-22 08:07:55 +00:00
Peter Steinberger
2adc1533c1 style: format agent workspace and prompts 2026-01-22 08:05:55 +00:00
Peter Steinberger
92ff93d424 fix: carry reply tags across streamed chunks 2026-01-22 08:01:34 +00:00
Peter Steinberger
d7f45900aa fix: allow MEDIA local paths with spaces 2026-01-22 07:51:09 +00:00
Dominic Damoah
f873523e1b Merge branch 'main' into feat/mattermost-channel 2026-01-22 02:49:17 -05:00