Commit Graph

147 Commits

Author SHA1 Message Date
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
d4fcbc26b2 chore: bump versions to 2026.1.9 2026-01-09 10:02:15 +01:00
Peter Steinberger
869fafcc45 chore: update dependencies 2026-01-09 05:25:08 +00:00
Peter Steinberger
7076b7109f chore: update pi deps 2026-01-09 05:38:21 +01:00
Jake
b785f8df4c chore: bump Pi to 0.40.0 and revert PR #454 pi-ai patch
- Upgrade @mariozechner/pi-* packages from 0.38.0 to 0.40.0
- Remove pi-ai patch (upstream 429 fix in 0.40.0 supersedes PR #454)
- Update CHANGELOG
2026-01-09 02:12:19 +01:00
Peter Steinberger
fcb5912907 chore: bump version to 2026.1.8-2 2026-01-08 12:23:01 +01:00
Peter Steinberger
8ee5673634 chore: bump version to 2026.1.8-1 2026-01-08 10:35:35 +01:00
Peter Steinberger
090584c58a chore: include runtime markdown dependency 2026-01-08 09:25:11 +01:00
Peter Steinberger
24cafda943 chore: bump version to 2026.1.8 2026-01-08 05:15:51 +00:00
Peter Steinberger
3e55ab37ce chore(deps): update dependencies 2026-01-08 04:55:14 +00:00
Peter Steinberger
9e6c6d2b11 feat: refresh CLI output styling and progress 2026-01-08 05:20:39 +01:00
mneves75
fc0223f264 feat(agent): auto-enable GLM-4.7 thinking mode
Add automatic thinking mode support for Z.AI GLM-4.x models:
- GLM-4.7: Preserved thinking (clear_thinking: false)
- GLM-4.5/4.6: Interleaved thinking (clear_thinking: true)

Uses Z.AI Cloud API format: thinking: { type: "enabled", clear_thinking: boolean }

Includes patches for pi-ai, pi-agent-core, and pi-coding-agent to pass
extraParams through the stream pipeline. User can override via config
or disable via --thinking off.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-08 04:10:56 +01:00
Peter Steinberger
494f349d21 chore(test): add ui test script 2026-01-08 03:50:11 +01:00
Peter Steinberger
b670fa9dfb test: split live tests into separate config 2026-01-08 02:00:11 +01:00
mneves75
d03d152628 feat(telegram): wire replyToMode config, add forum topic support, fix messaging tool duplicates
Changes:
- Default replyToMode from "off" to "first" for better threading UX
- Add messageThreadId and replyToMessageId params for forum topic support
- Add messaging tool duplicate detection to suppress redundant block replies
- Add sendMessage action to telegram tool schema
- Add @grammyjs/types devDependency for proper TypeScript typing
- Remove @ts-nocheck and fix all type errors in send.ts
- Add comprehensive docs/telegram.md documentation
- Add PR-326-REVIEW.md with John Carmack-level code review

Test coverage:
- normalizeTextForComparison: 5 cases
- isMessagingToolDuplicate: 7 cases
- sendMessageTelegram thread params: 5 cases
- handleTelegramAction sendMessage: 4 cases
- Forum topic isolation: 4 cases

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-08 00:50:47 +00:00
Muhammed Mukhthar CM
689d529e16 feat(telegram): use grammyjs/runner for concurrent update processing
Previously, grammY's default bot.start() processed updates sequentially,
blocking all Telegram messages while one was being handled. This made
maxConcurrent settings ineffective for Telegram.

Now uses @grammyjs/runner which processes updates concurrently, matching
the behavior of Discord (Promise.all) and WhatsApp (fire-and-forget).

Benefits:
- Ack reactions (👀) appear immediately, not after queue clears
- Multiple chats can be processed in parallel
- maxConcurrent setting now works correctly for Telegram
- Long-running tool calls no longer block other conversations
2026-01-07 22:08:20 +01:00
Peter Steinberger
540d3ca4d1 chore: bump version 2026.1.7 2026-01-07 15:30:05 +00:00
Shadow
98a3321171 chore: bump carbon version
Closes #349
Closes #354
2026-01-07 02:58:40 -06:00
Peter Steinberger
0d18b2a650 docs: fix internal doc links 2026-01-07 02:15:46 +01:00
Peter Steinberger
d701a999e8 fix: gateway:watch args 2026-01-07 00:37:32 +00:00
Peter Steinberger
5f2d886dea chore: make bun optional for source builds 2026-01-06 23:48:24 +00:00
Shadow
5b559080d1 feat(commands): unify chat commands (#275)
* Chat commands: registry, access groups, Carbon

* Chat commands: clear native commands on disable

* fix(commands): align command surface typing

* docs(changelog): note commands registry (PR #275)

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-01-06 20:17:56 +00:00
Azade
c5b30b31e1 fix(browser): patch playwright-core for Bun WebSocket compatibility
Bun's WebSocket implementation doesn't fully support Playwright's CDP
connection because Playwright bundles its own 'ws' module. This causes
connectOverCDP to timeout.

The patch makes Playwright use the native 'ws' module when running
under Bun, which works with Bun's WebSocket shim.

Fixes browser snapshot/act timeouts after PR #278 (tsx → bun migration).

Ref: https://github.com/oven-sh/bun/issues/9911
2026-01-06 19:27:09 +00:00
Peter Steinberger
67b2f07bfb build(control-ui): prefer bun for UI build 2026-01-06 09:08:25 +01:00
Ayaan Zaidi
757c19e6e7 refactor: replace tsx with bun for TypeScript execution (#278) 2026-01-06 07:14:08 +00:00
Peter Steinberger
981eead7ea fix: improve compaction queueing and oauth flows 2026-01-06 05:41:24 +01:00
Peter Steinberger
7ba5ef9760 docs: add bun install support 2026-01-06 03:41:56 +01:00
Peter Steinberger
0e6b3e6a7e fix: patch qrcode-terminal import for Node 22 2026-01-06 02:23:55 +01:00
Peter Steinberger
33390d3a72 fix/heartbeat ok delivery filter (#246)
* cron: skip delivery for HEARTBEAT_OK responses

When an isolated cron job has deliver:true, skip message delivery if the
response is just HEARTBEAT_OK (or contains HEARTBEAT_OK at edges with
short remaining content <= 30 chars). This allows cron jobs to silently
ack when nothing to report but still deliver actual content when there
is something meaningful to say.

Media is still delivered even if text is HEARTBEAT_OK, since the
presence of media indicates there's something to share.

* fix(heartbeat): make ack padding configurable

* chore(deps): update to latest

---------

Co-authored-by: Josh Lehman <josh@martian.engineering>
2026-01-05 22:52:13 +00:00
Peter Steinberger
e4bfcde171 chore: update pi dependencies 2026-01-05 06:19:35 +01:00
Peter Steinberger
c5d12c2251 chore: update deps 2026-01-05 05:27:58 +01:00
Peter Steinberger
23a87643cc fix: include missing dist dirs in npm pack 2026-01-05 03:56:57 +01:00
Peter Steinberger
e327281a5f fix: resolve qrcode ESM import for Node 25 2026-01-05 03:47:57 +01:00
Peter Steinberger
d64eb3a779 fix: include sessions in npm pack and update qrcode import 2026-01-05 03:28:25 +01:00
Peter Steinberger
9296b68b2e feat: add --dev/--profile CLI profiles 2026-01-05 01:27:13 +01:00
Peter Steinberger
fe73288abe fix(ci): resolve lint and docs build failures 2026-01-05 00:17:14 +00:00
Peter Steinberger
a9d9511f47 chore(release): bump to 2026.1.5 2026-01-04 21:54:04 +01:00
Peter Steinberger
d81ff928f3 fix(ui): render markdown in chat 2026-01-04 21:51:26 +01:00
Peter Steinberger
dbe7d76187 chore: refresh version references 2026-01-04 18:49:36 +01:00
Peter Steinberger
f7cb3846f1 chore: rename project to clawdbot 2026-01-04 14:38:51 +00:00
Muhammed Mukhthar CM
84fb1123dc fix: Antigravity API compatibility and Gemini thinking tag leakage (#167)
* fix: ensure type:object in sanitized tool schemas for Antigravity API

The sanitizeSchemaForGoogle function strips unsupported JSON Schema
keywords like anyOf, but this can leave schemas with 'properties' and
'required' fields without a 'type' field. Both Google's Gemini API and
Anthropic via Antigravity require 'type: object' when these fields exist.

This fix adds a post-sanitization check that ensures type is set to
'object' when properties or required fields are present.

Fixes errors like:
- Gemini: 'parameters.properties: only allowed for OBJECT type'
- Anthropic: 'tools.6.custom.input_schema.type: Field required'

* fix: regenerate pi-ai patch with proper pnpm format

The patch now correctly applies via pnpm patch-commit, fixing:
- Thinking blocks: skip for Gemini, send with signature for Claude
- Schema sanitization: ensure type:object after removing anyOf
- Remove strict:null for LM Studio/Antigravity compatibility

Tested with all Antigravity models (Gemini and Claude).

* fix: strip thinking tags from block streaming output to prevent Gemini tag leakage
2026-01-04 12:44:19 +01:00
Shadow
33998f9570 Slack: add some fixes and connect it all up 2026-01-04 01:53:26 -06:00
Peter Steinberger
9c299f6b80 docs: migrate Mintlify config 2026-01-04 00:36:55 +01:00
Peter Steinberger
d751c5e40d refactor: remove bash pty mode 2026-01-03 20:15:10 +00:00
Peter Steinberger
888f943543 fix: harden block stream dedupe 2026-01-03 18:44:07 +01:00
Peter Steinberger
bad2f272e5 test(gateway): add multi-instance e2e suite 2026-01-03 13:37:46 +01:00
Peter Steinberger
3ff4d4823d fix: stabilize pi-ai patch + tests 2026-01-03 05:22:09 +01:00
Peter Steinberger
95e4408099 feat: add gateway TUI 2026-01-03 04:47:34 +01:00
Peter Steinberger
4a32edc1e3 templates: add qmd semantic memory recall to AGENTS.md 2026-01-03 01:33:10 +00:00
Peter Steinberger
3a283c51f7 chore: update deps and extend read tool tests 2026-01-02 23:47:28 +01:00