Commit Graph

4159 Commits

Author SHA1 Message Date
google-labs-jules[bot]
ec23a856fe chore(tests): remove reproduction test
Removed the test file `src/agents/sandbox/docker.test.ts` as requested in code review.
2026-01-24 00:30:24 +00:00
google-labs-jules[bot]
ff233678a6 fix(sandbox): simplify docker image check
Simplify the stderr check in `dockerImageExists` to only look for "No such image", as requested in code review.
2026-01-24 00:30:24 +00:00
google-labs-jules[bot]
8d797d4a2b fix(sandbox): improve docker image existence check error handling
Previously, `dockerImageExists` assumed any error from `docker image inspect` meant the image did not exist. This masked other errors like socket permission issues.

This change:
- Modifies `dockerImageExists` to inspect stderr when the exit code is non-zero.
- Returns `false` only if the error explicitly indicates "No such image" or "No such object".
- Throws an error with the stderr content for all other failures.
- Adds a reproduction test in `src/agents/sandbox/docker.test.ts`.
2026-01-24 00:30:24 +00:00
Peter Steinberger
9f8f88d21b fix: hide probe logs without verbose 2026-01-24 00:27:05 +00:00
Peter Steinberger
c60cedaafc fix: stabilize tests and sync protocol models 2026-01-24 00:25:58 +00:00
Peter Steinberger
367f48ce51 feat: add tlon channel plugin 2026-01-24 00:25:39 +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
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
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
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
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
55299c037f fix: hide usage errors in status 2026-01-23 19:43:26 +00:00
Peter Steinberger
08d11149a0 feat: add models status auth probes 2026-01-23 19:28:55 +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
Peter Steinberger
72d505caed fix: surface gateway slash commands in TUI 2026-01-23 18:58:41 +00:00
Peter Steinberger
d2f845ed0e fix: forward unknown TUI slash commands 2026-01-23 18:41:02 +00:00
Peter Steinberger
6b88bb7ac6 fix: add per-channel markdown table conversion (#1495) (thanks @odysseus0) 2026-01-23 18:39:25 +00:00
Peter Steinberger
84288d059a test: move gateway server coverage to e2e 2026-01-23 18:34:33 +00:00
Peter Steinberger
817084de60 test: move auto-reply directive coverage to e2e 2026-01-23 18:34:33 +00:00
Peter Steinberger
04a323bb5b test: consolidate auto-reply unit coverage 2026-01-23 18:34:33 +00:00
Peter Steinberger
7129952819 test: dedupe CLI onboard auth cases 2026-01-23 18:34:33 +00:00
Peter Steinberger
1e0fbeb291 test: trim async waits in webhook tests 2026-01-23 18:34:33 +00:00
Peter Steinberger
885b9f4fbc test: stub heavy tools in agent tests 2026-01-23 18:34:33 +00:00
Peter Steinberger
228c3cf31f test: speed up default test env 2026-01-23 18:34:33 +00:00
Peter Steinberger
1c51871903 fix: normalize session lock path 2026-01-23 18:34:33 +00:00
George Zhang
4490e8f0f0 feat(telegram): convert markdown tables to bullet points (#1495)
Tables render poorly in Telegram (pipes stripped, whitespace collapses).
This adds a 'tableMode' option to markdownToIR that converts tables to
nested bullet points, which render cleanly on mobile.

- Add tableMode: 'flat' | 'bullets' to MarkdownParseOptions
- Track table state during token rendering
- Render tables as bullet points with first column as row labels
- Apply bold styling to row labels for visual hierarchy
- Enable tableMode: 'bullets' for Telegram formatter

Closes #TBD
2026-01-23 18:00:51 +00:00