Commit Graph

7613 Commits

Author SHA1 Message Date
Peter Steinberger
c60cedaafc fix: stabilize tests and sync protocol models 2026-01-24 00:25:58 +00:00
Peter Steinberger
19855ccafb chore: update clawtributors 2026-01-24 00:25:39 +00:00
Peter Steinberger
28cef34d7a chore: drop tlon node_modules 2026-01-24 00:25:39 +00:00
Peter Steinberger
367f48ce51 feat: add tlon channel plugin 2026-01-24 00:25:39 +00:00
william arzt
93c97a5f85 Add Tlon/Urbit channel plugin
Adds built-in Tlon (Urbit) channel plugin to support decentralized messaging on the Urbit network.

Features:
- DM and group chat support
- SSE-based real-time message monitoring
- Auto-discovery of group channels
- Thread replies and reactions
- Integration with Urbit's HTTP API

This resolves cron delivery issues with external Tlon plugins by making it a first-class built-in channel alongside Telegram, Signal, and other messaging platforms.

Implementation includes:
- Plugin registration via ClawdbotPluginApi
- Outbound delivery with sendText and sendMedia
- Gateway adapter for inbound message handling
- Urbit SSE client for event streaming
- Core bridge for Clawdbot runtime integration

Co-authored-by: William Arzt <william@arzt.co>
2026-01-24 00:25:38 +00:00
Peter Steinberger
00a42e5e03 docs: clarify plugin dependency rules 2026-01-24 00:23:21 +00:00
Peter Steinberger
43ee9c1693 fix: guard tailscale sudo fallback (#1551) (thanks @sweepies) 2026-01-24 00:17:20 +00:00
google-labs-jules[bot]
38ccea4bb3 feat: use sudo fallback for tailscale configuration commands
To avoid permission denied errors when modifying Tailscale configuration (serve/funnel),
we now attempt the command directly first. If it fails, we catch the error and retry
with `sudo -n`. This preserves existing behavior for users where it works, but
attempts to escalate privileges (non-interactively) if needed.

- Added `execWithSudoFallback` helper in `src/infra/tailscale.ts`.
- Updated `ensureFunnel`, `enableTailscaleServe`, `disableTailscaleServe`,
  `enableTailscaleFunnel`, and `disableTailscaleFunnel` to use the fallback helper.
- Added tests in `src/infra/tailscale.test.ts` to verify fallback behavior.
2026-01-24 00:17:20 +00:00
google-labs-jules[bot]
1ff0244771 feat: use sudo for tailscale configuration commands
To avoid permission denied errors when modifying Tailscale configuration (serve/funnel),
we now prepend `sudo -n` to these commands. This ensures that if the user has appropriate
sudo privileges (specifically passwordless for these commands or generally), the operation
succeeds. If sudo fails (e.g. requires password non-interactively), it will throw an error
which is caught and logged as a warning, preserving existing behavior but attempting to escalate privileges first.

- Updated `ensureFunnel` to use `sudo -n` for the enabling step.
- Updated `enableTailscaleServe`, `disableTailscaleServe`, `enableTailscaleFunnel`, `disableTailscaleFunnel` to use `sudo -n`.
2026-01-24 00:17:20 +00:00
google-labs-jules[bot]
dc5cf88fc3 feat: use sudo for tailscale configuration commands
To avoid permission denied errors when modifying Tailscale configuration (serve/funnel),
we now prepend `sudo -n` to these commands. This ensures that if the user has appropriate
sudo privileges (specifically passwordless for these commands or generally), the operation
succeeds. If sudo fails (e.g. requires password non-interactively), it will throw an error
which is caught and logged as a warning, preserving existing behavior but attempting to escalate privileges first.

- Updated `ensureFunnel` to use `sudo -n` for the enabling step.
- Updated `enableTailscaleServe`, `disableTailscaleServe`, `enableTailscaleFunnel`, `disableTailscaleFunnel` to use `sudo -n`.
- Added tests in `src/infra/tailscale.test.ts` to verify `sudo` usage.
2026-01-24 00:17:20 +00:00
Robby
8f1d245030 fix(sessions): reset token counts to 0 on /new (#1523)
- Set inputTokens, outputTokens, totalTokens to 0 in sessions.reset
- Clear TUI sessionInfo tokens immediately before async reset
- Prevents stale token display after session reset

Fixes #1523
2026-01-24 00:15:42 +00:00
Peter Steinberger
0e89efa1b5 fix: table auth probe output 2026-01-24 00:11:04 +00:00
Peter Steinberger
f3029e1e3a fix: silence probe timeouts 2026-01-24 00:11:04 +00:00
Peter Steinberger
56c99930c3 docs: changelog for MS Teams scopes (#1507) (thanks @Evizero) 2026-01-24 00:08:10 +00:00
Christof
9dbdd69527 fix(msteams): remove .default suffix from graph scopes (#1507)
The @microsoft/agents-hosting SDK's MsalTokenProvider automatically
appends `/.default` to all scope strings in its token acquisition
methods (acquireAccessTokenViaSecret, acquireAccessTokenViaFIC,
acquireAccessTokenViaWID, acquireTokenWithCertificate in
msalTokenProvider.ts). This is consistent SDK behavior, not a recent
change.

Our code was including `.default` in scope URLs, resulting in invalid
double suffixes like `https://graph.microsoft.com/.default/.default`.

This was confirmed to cause Graph API authentication errors. Removing
the `.default` suffix from our scope strings allows the SDK to append
it correctly, resolving the issue.

Before: we pass `.default` -> SDK appends -> double `.default` (broken)
After:  we pass base URL  -> SDK appends -> single `.default` (works)

Co-authored-by: Christof Salis <c.salis@vertifymed.com>
2026-01-24 00:07:22 +00:00
Peter Steinberger
5cb73668a9 docs: add Comcast SSL troubleshooting note 2026-01-24 00:01:20 +00:00
Peter Steinberger
ff38c091c9 fix: auto-save voice wake words across apps 2026-01-23 23:59:08 +00:00
Peter Steinberger
36c770e78f docs: remove channel unify checklist 2026-01-23 23:37:04 +00:00
Peter Steinberger
f7cf4caef1 fix: stabilize typing + summary merge 2026-01-23 23:34:30 +00:00
Peter Steinberger
cd85827267 test: cover typing and history helpers 2026-01-23 23:34:30 +00:00
Peter Steinberger
cf21b97e55 refactor: standardize channel logging 2026-01-23 23:34:30 +00:00
Peter Steinberger
cc9c826a6d refactor: standardize control command gating 2026-01-23 23:34:30 +00:00
Peter Steinberger
b99be93047 refactor: share reply prefix context 2026-01-23 23:34:30 +00:00
Peter Steinberger
92901df429 refactor: unify typing callbacks 2026-01-23 23:33:32 +00:00
Peter Steinberger
4a4d5f9fcd refactor: centralize inbound session updates 2026-01-23 23:33:32 +00:00
Peter Steinberger
4f5b87a4ee refactor: unify pending history helpers 2026-01-23 23:33:32 +00:00
Peter Steinberger
38b757687a docs: add channel unification checklist 2026-01-23 23:32:14 +00:00
Peter Steinberger
60d75eabed refactor: centralize ack reaction removal 2026-01-23 23:32:14 +00:00
Peter Steinberger
11469046f1 fix: align compaction summary message types 2026-01-23 23:03:04 +00:00
Peter Steinberger
fa798e6e61 fix: complete inbound dispatch refactor 2026-01-23 22:58:54 +00:00
Peter Steinberger
3a8d7f0817 fix: unify inbound dispatch pipeline 2026-01-23 22:58:54 +00:00
Peter Steinberger
333df812a3 test(compaction): cover staged pruning 2026-01-23 22:25:07 +00:00
Peter Steinberger
0a3b41e36f refactor: reuse ack reaction helper for whatsapp 2026-01-23 22:24:31 +00:00
Peter Steinberger
45822ef05c refactor: centralize ack reaction gating 2026-01-23 22:24:31 +00:00
Peter Steinberger
21090700ed docs: clarify exe.dev ops 2026-01-23 22:23:23 +00:00
Peter Steinberger
ee341fa491 feat(compaction): apply staged pruning 2026-01-23 22:23:23 +00:00
Peter Steinberger
56c0dc21ab feat(compaction): add staged helpers 2026-01-23 22:23:23 +00:00
Peter Steinberger
750dc7191c chore: bump version to 2026.1.23 2026-01-23 22:14:56 +00:00
Shiva Prasad
d5504559dd macOS: fix trigger word input disappearing when typing and on add (#1506)
Fixed issue where trigger words would disappear when typing or when adding new trigger words. The problem was that `swabbleTriggerWords` changes were triggering `VoiceWakeRuntime.refresh()` which sanitized the array by removing empty strings in real-time.

Solution: Introduced local `@State` buffer `triggerEntries` with stable UUID identifiers for each trigger word entry. User edits now only affect the local state buffer and are synced back to `AppState` on explicit actions (submit, remove, disappear). This prevents premature sanitization during editing.

The local state is loaded on view appear and when the view becomes active, ensuring it stays in sync with `AppState`.
2026-01-23 20:08:12 +00:00
Paul van Oorschot
3a4cdd3efd fix(discord): autoThread ack reactions + exec approval null handling (#1511)
* fix(discord): gate autoThread by thread owner

* fix(discord): ack bot-owned autoThreads

* fix(discord): ack mentions in open channels

- Ack reactions in bot-owned autoThreads
- Ack reactions in open channels (no mention required)
- DRY: Pass pre-computed isAutoThreadOwnedByBot to avoid redundant checks
- Consolidate ack logic with explanatory comment

* fix: allow null values in exec.approval.request schema

The ExecApprovalRequestParamsSchema was rejecting null values for optional
fields like resolvedPath, but the calling code in bash-tools.exec.ts passes
null. This caused intermittent 'invalid exec.approval.request params'
validation errors.

Fix: Accept Type.Union([Type.String(), Type.Null()]) for all optional string
fields in the schema. Update test to reflect new behavior.

* fix: align discord ack reactions with mention gating (#1511) (thanks @pvoo)

---------

Co-authored-by: Wimmie <wimmie@tameson.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-01-23 20:01:15 +00:00
Peter Steinberger
a530eebe29 fix: quiet auth probe diagnostics 2026-01-23 19:53:01 +00:00
Peter Steinberger
571257b972 fix: handle gateway slash command replies in TUI 2026-01-23 19:48:22 +00:00
Peter Steinberger
363a6a3c81 docs: note models usage suppression 2026-01-23 19:43:26 +00:00
Peter Steinberger
55299c037f fix: hide usage errors in status 2026-01-23 19:43:26 +00:00
Peter Steinberger
a07b6528d9 docs: handle lint/format churn 2026-01-23 19:37:33 +00:00
Peter Steinberger
08d11149a0 feat: add models status auth probes 2026-01-23 19:28:55 +00:00
Peter Steinberger
8b367d195c style: wrap service path helpers 2026-01-23 19:17:57 +00:00
Peter Steinberger
1c71124ada fix: expand linux service PATH handling 2026-01-23 19:16:41 +00:00
Robby
d167ad9e9c fix(linux): add user bin directories to systemd service PATH for skill installation (#1512)
* fix(linux): add user bin directories to systemd service PATH

Fixes #1503

On Linux, the systemd service PATH was hardcoded to only include system
directories (/usr/local/bin, /usr/bin, /bin), causing binaries installed
via npm global with custom prefix or node version managers to not be found.

This adds common Linux user bin directories to the PATH:
- ~/.local/bin (XDG standard, pip, etc.)
- ~/.npm-global/bin (npm custom prefix)
- ~/bin (user's personal bin)
- Node version manager paths (nvm, fnm, volta, asdf)
- ~/.local/share/pnpm (pnpm global)
- ~/.bun/bin (Bun)

User directories are added before system directories so user-installed
binaries take precedence.

🤖 AI-assisted (Claude Opus 4.5 via Clawdbot)
📋 Testing: Existing unit tests pass (7/7)

* test: add comprehensive tests for Linux user bin directory resolution

- Add dedicated tests for resolveLinuxUserBinDirs() function
- Test path ordering (extraDirs > user dirs > system dirs)
- Test buildMinimalServicePath() with HOME set/unset
- Test platform-specific behavior (Linux vs macOS vs Windows)

Test count: 7 → 20 (+13 tests)

* test: add comprehensive tests for Linux user bin directory handling

- Test Linux user directories included when HOME is set
- Test Linux user directories excluded when HOME is missing
- Test path ordering (extraDirs > user dirs > system dirs)
- Test platform-specific behavior (Linux vs macOS vs Windows)
- Test buildMinimalServicePath() with HOME in env

Covers getMinimalServicePathParts() and buildMinimalServicePath()
for all Linux user bin directory edge cases.

Test count: 7 → 16 (+9 tests)
2026-01-23 19:06:14 +00:00
Peter Steinberger
9f5cee9493 fix(exec-approvals): stabilize allowlist ids (#1521) 2026-01-23 19:00:45 +00:00