Skip to content

feat(channels): add Synology Chat native channel#23012

Merged
steipete merged 2 commits intoopenclaw:mainfrom
druide67:feat/synology-chat-channel
Feb 21, 2026
Merged

feat(channels): add Synology Chat native channel#23012
steipete merged 2 commits intoopenclaw:mainfrom
druide67:feat/synology-chat-channel

Conversation

@druide67
Copy link
Contributor

@druide67 druide67 commented Feb 21, 2026

Summary

  • Problem: Synology NAS users have no native way to connect Synology Chat to OpenClaw
  • Why it matters: Synology Chat is used by many home/SMB NAS setups; this enables local AI assistants via the NAS messaging platform
  • What changed: New synology-chat channel plugin in extensions/synology-chat/ (15 source files, ~1700 lines)
  • What did NOT change: No modifications to core, no breaking changes, no new dependencies beyond zod (already in core)

Change Type

  • Feature

Scope

  • Integrations

Architecture

Follows the exact same ChannelPlugin pattern as LINE/Discord/Telegram extensions:

  • index.ts — Plugin entry point, registers channel via api.registerChannel()
  • src/channel.ts — ChannelPlugin implementation (meta, config, security, outbound, gateway)
  • src/webhook-handler.ts — Incoming webhook HTTP handler (form-urlencoded payloads)
  • src/client.ts — Outbound HTTP client for Synology Chat incoming webhook API
  • src/security.ts — Token validation (HMAC-based constant-time), rate limiting, input sanitization
  • src/accounts.ts — Multi-account config resolution with env var fallbacks
  • src/types.ts — TypeScript interfaces
  • src/runtime.ts — Plugin runtime accessor

User-visible / Behavior Changes

  • New channel type "Synology Chat" available in channel selection
  • Supports webhook-based communication with Synology NAS Chat (DSM 7+)
  • Configurable via channels.synology-chat in openclaw.json
  • Environment variable fallback for secrets (SYNOLOGY_CHAT_TOKEN, SYNOLOGY_CHAT_INCOMING_URL)

Security Impact

  • New permissions/capabilities? No — uses existing channel plugin API
  • Secrets/tokens handling changed? Yes — new env vars for Synology tokens, never hardcoded, read from process.env at runtime
  • New/changed network calls? Yes — HTTPS POST to Synology NAS incoming webhook API (typically local network)
  • Command/tool execution surface changed? No
  • Data access scope changed? No — standard channel message flow only
  • Mitigations:
    • HMAC-based constant-time token validation (crypto.createHmac + crypto.timingSafeEqual)
    • Per-user rate limiting (configurable, default 30/min)
    • Input sanitization against prompt injection patterns
    • DM policy enforcement (open/allowlist/disabled)
    • Configurable SSL verification (allowInsecureSsl, default false) for self-signed NAS certs

Test Coverage

54 unit tests across 5 test suites:

  • security.test.ts (17 tests) — token validation, user allowlist, input sanitization, rate limiter
  • accounts.test.ts (11 tests) — config resolution, env var fallback, multi-account merge
  • webhook-handler.test.ts (9 tests) — HTTP methods, auth, rate limiting, trigger words, async delivery
  • client.test.ts (5 tests) — send/retry, file URL, userId handling
  • channel.test.ts (12 tests) — plugin structure, outbound, gateway lifecycle

Repro + Verification

  1. Configure Synology Chat outgoing webhook pointing to OpenClaw webhook endpoint
  2. Set SYNOLOGY_CHAT_TOKEN and SYNOLOGY_CHAT_INCOMING_URL in environment
  3. Enable channel in openclaw.json: "channels": { "synology-chat": { "enabled": true } }
  4. Send a message in Synology Chat mentioning the bot trigger word
  5. Verify agent responds via incoming webhook

Human Verification

  • Tested on Synology DS923+ with DSM 7.2
  • Webhook receives and parses form-urlencoded payloads correctly
  • Token validation rejects invalid tokens
  • Rate limiting blocks excessive requests
  • Agent responses delivered back to Synology Chat
  • Multi-account configuration works
  • DM policy (allowlist) correctly filters users

Compatibility / Migration

  • Backward compatible? Yes — new extension, no changes to existing code
  • Config/env changes? Yes — new optional channels.synology-chat config section
  • Migration needed? No

Failure Recovery

  • Disable: set "channels": { "synology-chat": { "enabled": false } }
  • Remove: delete extensions/synology-chat/ directory
  • No impact on other channels or core functionality

🤖 Generated with Claude Code

Greptile Summary

Adds a new Synology Chat channel plugin following the established channel plugin pattern. The implementation includes webhook-based messaging, security features (token validation, rate limiting, input sanitization), and comprehensive test coverage (54 tests).

Major additions:

  • Plugin implementation in extensions/synology-chat/ with ~1700 lines across 15 files
  • HMAC-based constant-time token validation to prevent timing attacks
  • Per-user rate limiting (default 30/min) and prompt injection filtering
  • Multi-account support with environment variable fallbacks
  • Configurable SSL verification for self-signed NAS certificates

Issues found:

  • Critical security bug: allowInsecureSsl defaults to true in client.ts function parameters but false in account resolution, causing SSL verification to be disabled by default when the parameter isn't explicitly passed
  • Missing documentation file (docs/channels/synology-chat.md) referenced in package.json
  • Missing .github/labeler.yml entry (required per AGENTS.md:18)

Confidence Score: 3/5

  • This PR has a critical security bug affecting SSL certificate validation that must be fixed before merging
  • The implementation follows established patterns and has good test coverage, but the allowInsecureSsl parameter defaulting to true in three locations creates a security vulnerability where SSL verification could be disabled unintentionally. Additionally, missing documentation and labeler configuration need to be addressed per repository guidelines.
  • Pay close attention to extensions/synology-chat/src/client.ts - the SSL verification defaults must be corrected

Last reviewed commit: 75c5610

(2/5) Greptile learns from your feedback when you react with thumbs up/down!

Webhook-based integration with Synology NAS Chat (DSM 7+).
Supports outgoing webhooks, incoming messages, multi-account,
DM policies, rate limiting, and input sanitization.

- HMAC-based constant-time token validation
- Configurable SSL verification (allowInsecureSsl) for self-signed NAS certs
- 54 unit tests across 5 test suites
- Follows the same ChannelPlugin pattern as LINE/Discord/Telegram

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Enable media capability (file_url already supported by client)
- Add pairing.notifyApproval to message approved users
- Add security.collectWarnings for missing token/URL, insecure SSL, open DM policy
- Add messaging.normalizeTarget and targetResolver for user ID resolution
- Add directory stubs (self, listPeers, listGroups)
- Add agentPrompt.messageToolHints with Synology Chat formatting guide
- 63 tests (up from 54), all passing

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@druide67 druide67 marked this pull request as draft February 21, 2026 23:07
@steipete steipete marked this pull request as ready for review February 21, 2026 23:09
@steipete steipete merged commit 03586e3 into openclaw:main Feb 21, 2026
19 of 20 checks passed
@steipete
Copy link
Contributor

Landed via temp rebase onto main.

Thanks @druide67!

Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

16 files reviewed, 4 comments

Edit Code Review Agent Settings | Greptile

incomingUrl: string,
text: string,
userId?: string | number,
allowInsecureSsl = true,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

allowInsecureSsl defaults to true here but false in accounts.ts:85. This means SSL verification is disabled by default when the parameter isn't explicitly passed, creating a security risk.

Suggested change
allowInsecureSsl = true,
allowInsecureSsl = false,
Prompt To Fix With AI
This is a comment left during a code review.
Path: extensions/synology-chat/src/client.ts
Line: 24

Comment:
`allowInsecureSsl` defaults to `true` here but `false` in `accounts.ts:85`. This means SSL verification is disabled by default when the parameter isn't explicitly passed, creating a security risk.

```suggestion
  allowInsecureSsl = false,
```

How can I resolve this? If you propose a fix, please make it concise.

incomingUrl: string,
fileUrl: string,
userId?: string | number,
allowInsecureSsl = true,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same issue: allowInsecureSsl defaults to true instead of false.

Suggested change
allowInsecureSsl = true,
allowInsecureSsl = false,
Prompt To Fix With AI
This is a comment left during a code review.
Path: extensions/synology-chat/src/client.ts
Line: 74

Comment:
Same issue: `allowInsecureSsl` defaults to `true` instead of `false`.

```suggestion
  allowInsecureSsl = false,
```

How can I resolve this? If you propose a fix, please make it concise.

}
}

function doPost(url: string, body: string, allowInsecureSsl = true): Promise<boolean> {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same issue: allowInsecureSsl defaults to true instead of false.

Suggested change
function doPost(url: string, body: string, allowInsecureSsl = true): Promise<boolean> {
function doPost(url: string, body: string, allowInsecureSsl = false): Promise<boolean> {
Prompt To Fix With AI
This is a comment left during a code review.
Path: extensions/synology-chat/src/client.ts
Line: 95

Comment:
Same issue: `allowInsecureSsl` defaults to `true` instead of `false`.

```suggestion
function doPost(url: string, body: string, allowInsecureSsl = false): Promise<boolean> {
```

How can I resolve this? If you propose a fix, please make it concise.

"id": "synology-chat",
"label": "Synology Chat",
"selectionLabel": "Synology Chat (Webhook)",
"docsPath": "/channels/synology-chat",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The docsPath references /channels/synology-chat but docs/channels/synology-chat.md doesn't exist. Per AGENTS.md:18, channel docs should be created alongside the extension.

Prompt To Fix With AI
This is a comment left during a code review.
Path: extensions/synology-chat/package.json
Line: 18

Comment:
The `docsPath` references `/channels/synology-chat` but `docs/channels/synology-chat.md` doesn't exist. Per AGENTS.md:18, channel docs should be created alongside the extension.

How can I resolve this? If you propose a fix, please make it concise.

Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 75c56100d4

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

}
return setAccountEnabledInConfigSection({
cfg,
sectionKey: `channels.${CHANNEL_ID}`,

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Use channel key (not channels-prefixed path) for account toggles

setAccountEnabledInConfigSection reads/writes cfg.channels[sectionKey] (see src/channels/plugins/config-helpers.ts), but this call passes sectionKey: \channels.${CHANNEL_ID}`. For non-default accounts, enable/disable updates are written to cfg.channels["channels.synology-chat"]instead ofcfg.channels["synology-chat"]`, so the actual account state is not changed and a malformed config key is introduced.

Useful? React with 👍 / 👎.

textChunkLimit: 2000,

sendText: async ({ to, text, accountId, account: ctxAccount }: any) => {
const account: ResolvedSynologyChatAccount = ctxAccount ?? resolveAccount({}, accountId);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Resolve outbound account from runtime config, not empty object

The outbound adapter is invoked with cfg and accountId (not a populated account field) by the delivery pipeline (ChannelOutboundContext + src/infra/outbound/deliver.ts). Falling back to resolveAccount({}, accountId) therefore ignores channels.synology-chat configuration and only uses env defaults, which makes normal config-based sends fail as "incoming URL not configured".

Useful? React with 👍 / 👎.

deliver: async (payload: { text?: string; body?: string }) => {
const text = payload?.text ?? payload?.body;
if (text) {
await sendMessage(

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Treat failed Synology reply sends as errors in dispatcher callback

sendMessage returns false on HTTP failure/timeout, but this callback ignores that boolean and always resolves. When Synology rejects a reply, the dispatcher path still appears successful, so replies can be silently dropped without triggering the surrounding error handling or retries.

Useful? React with 👍 / 👎.

steipete added a commit that referenced this pull request Feb 21, 2026
@steipete
Copy link
Contributor

Follow-up landed on main to complete the remaining /landpr checklist items.

  • Commit: 780bbbd
  • Includes: changelog note with #23012 + thanks @druide67, plus Gemini live-model ID fix
  • Gate rerun: pnpm check passed before push

Thanks again @druide67.

BunsDev pushed a commit that referenced this pull request Feb 22, 2026
* feat(channels): add Synology Chat native channel

Webhook-based integration with Synology NAS Chat (DSM 7+).
Supports outgoing webhooks, incoming messages, multi-account,
DM policies, rate limiting, and input sanitization.

- HMAC-based constant-time token validation
- Configurable SSL verification (allowInsecureSsl) for self-signed NAS certs
- 54 unit tests across 5 test suites
- Follows the same ChannelPlugin pattern as LINE/Discord/Telegram

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(synology-chat): add pairing, warnings, messaging, agent hints

- Enable media capability (file_url already supported by client)
- Add pairing.notifyApproval to message approved users
- Add security.collectWarnings for missing token/URL, insecure SSL, open DM policy
- Add messaging.normalizeTarget and targetResolver for user ID resolution
- Add directory stubs (self, listPeers, listGroups)
- Add agentPrompt.messageToolHints with Synology Chat formatting guide
- 63 tests (up from 54), all passing

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
BunsDev pushed a commit that referenced this pull request Feb 22, 2026
obviyus pushed a commit to guirguispierre/openclaw that referenced this pull request Feb 22, 2026
* feat(channels): add Synology Chat native channel

Webhook-based integration with Synology NAS Chat (DSM 7+).
Supports outgoing webhooks, incoming messages, multi-account,
DM policies, rate limiting, and input sanitization.

- HMAC-based constant-time token validation
- Configurable SSL verification (allowInsecureSsl) for self-signed NAS certs
- 54 unit tests across 5 test suites
- Follows the same ChannelPlugin pattern as LINE/Discord/Telegram

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(synology-chat): add pairing, warnings, messaging, agent hints

- Enable media capability (file_url already supported by client)
- Add pairing.notifyApproval to message approved users
- Add security.collectWarnings for missing token/URL, insecure SSL, open DM policy
- Add messaging.normalizeTarget and targetResolver for user ID resolution
- Add directory stubs (self, listPeers, listGroups)
- Add agentPrompt.messageToolHints with Synology Chat formatting guide
- 63 tests (up from 54), all passing

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
obviyus pushed a commit to guirguispierre/openclaw that referenced this pull request Feb 22, 2026
sypherin pushed a commit to sypherin/openclaw that referenced this pull request Feb 22, 2026
…dit, exec sandbox, channel fallback, session path, test perf

Key upstream changes:
- fix(telegram): classify undici fetch errors as recoverable for retry (openclaw#16699)
- fix(telegram): prevent update offset skipping queued updates (openclaw#23284)
- fix: stop hardcoded channel fallback and auto-pick sole configured channel (openclaw#23357)
- fix(session): resolve agent session path with configured sessions dir
- fix: harden exec sandbox fallback semantics (openclaw#23398)
- fix: land security audit severity + temp-path guard fixes (openclaw#23428)
- Security: expand audit checks for mDNS and real-IP fallback
- feat(feishu): persistent message deduplication
- feat(channels): add Synology Chat native channel (openclaw#23012)
- feat: add Korean language support for memory search
- refactor(bluebubbles): centralize private-api status handling
- refactor(session): centralize transcript path option resolution
- 137 perf/refactor commits (test reclassification, e2e speedups)
- chore: remove verified dead code paths

Conflicts resolved (38 files):
- 4 modify/delete: accepted upstream deletions of dead code
- 34 content: import ordering/additions merged with deduplication
00xglitch pushed a commit to 00xglitch/openclaw that referenced this pull request Feb 22, 2026
* feat(channels): add Synology Chat native channel

Webhook-based integration with Synology NAS Chat (DSM 7+).
Supports outgoing webhooks, incoming messages, multi-account,
DM policies, rate limiting, and input sanitization.

- HMAC-based constant-time token validation
- Configurable SSL verification (allowInsecureSsl) for self-signed NAS certs
- 54 unit tests across 5 test suites
- Follows the same ChannelPlugin pattern as LINE/Discord/Telegram

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(synology-chat): add pairing, warnings, messaging, agent hints

- Enable media capability (file_url already supported by client)
- Add pairing.notifyApproval to message approved users
- Add security.collectWarnings for missing token/URL, insecure SSL, open DM policy
- Add messaging.normalizeTarget and targetResolver for user ID resolution
- Add directory stubs (self, listPeers, listGroups)
- Add agentPrompt.messageToolHints with Synology Chat formatting guide
- 63 tests (up from 54), all passing

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
00xglitch pushed a commit to 00xglitch/openclaw that referenced this pull request Feb 22, 2026
00xglitch pushed a commit to 00xglitch/openclaw that referenced this pull request Feb 23, 2026
* feat(channels): add Synology Chat native channel

Webhook-based integration with Synology NAS Chat (DSM 7+).
Supports outgoing webhooks, incoming messages, multi-account,
DM policies, rate limiting, and input sanitization.

- HMAC-based constant-time token validation
- Configurable SSL verification (allowInsecureSsl) for self-signed NAS certs
- 54 unit tests across 5 test suites
- Follows the same ChannelPlugin pattern as LINE/Discord/Telegram

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(synology-chat): add pairing, warnings, messaging, agent hints

- Enable media capability (file_url already supported by client)
- Add pairing.notifyApproval to message approved users
- Add security.collectWarnings for missing token/URL, insecure SSL, open DM policy
- Add messaging.normalizeTarget and targetResolver for user ID resolution
- Add directory stubs (self, listPeers, listGroups)
- Add agentPrompt.messageToolHints with Synology Chat formatting guide
- 63 tests (up from 54), all passing

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
00xglitch pushed a commit to 00xglitch/openclaw that referenced this pull request Feb 23, 2026
7Sageer pushed a commit to 7Sageer/openclaw that referenced this pull request Feb 23, 2026
* feat(channels): add Synology Chat native channel

Webhook-based integration with Synology NAS Chat (DSM 7+).
Supports outgoing webhooks, incoming messages, multi-account,
DM policies, rate limiting, and input sanitization.

- HMAC-based constant-time token validation
- Configurable SSL verification (allowInsecureSsl) for self-signed NAS certs
- 54 unit tests across 5 test suites
- Follows the same ChannelPlugin pattern as LINE/Discord/Telegram

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(synology-chat): add pairing, warnings, messaging, agent hints

- Enable media capability (file_url already supported by client)
- Add pairing.notifyApproval to message approved users
- Add security.collectWarnings for missing token/URL, insecure SSL, open DM policy
- Add messaging.normalizeTarget and targetResolver for user ID resolution
- Add directory stubs (self, listPeers, listGroups)
- Add agentPrompt.messageToolHints with Synology Chat formatting guide
- 63 tests (up from 54), all passing

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
7Sageer pushed a commit to 7Sageer/openclaw that referenced this pull request Feb 23, 2026
gabrielkoo pushed a commit to gabrielkoo/openclaw that referenced this pull request Feb 23, 2026
* feat(channels): add Synology Chat native channel

Webhook-based integration with Synology NAS Chat (DSM 7+).
Supports outgoing webhooks, incoming messages, multi-account,
DM policies, rate limiting, and input sanitization.

- HMAC-based constant-time token validation
- Configurable SSL verification (allowInsecureSsl) for self-signed NAS certs
- 54 unit tests across 5 test suites
- Follows the same ChannelPlugin pattern as LINE/Discord/Telegram

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(synology-chat): add pairing, warnings, messaging, agent hints

- Enable media capability (file_url already supported by client)
- Add pairing.notifyApproval to message approved users
- Add security.collectWarnings for missing token/URL, insecure SSL, open DM policy
- Add messaging.normalizeTarget and targetResolver for user ID resolution
- Add directory stubs (self, listPeers, listGroups)
- Add agentPrompt.messageToolHints with Synology Chat formatting guide
- 63 tests (up from 54), all passing

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
gabrielkoo pushed a commit to gabrielkoo/openclaw that referenced this pull request Feb 23, 2026
mreedr pushed a commit to mreedr/openclaw-custom that referenced this pull request Feb 24, 2026
* feat(channels): add Synology Chat native channel

Webhook-based integration with Synology NAS Chat (DSM 7+).
Supports outgoing webhooks, incoming messages, multi-account,
DM policies, rate limiting, and input sanitization.

- HMAC-based constant-time token validation
- Configurable SSL verification (allowInsecureSsl) for self-signed NAS certs
- 54 unit tests across 5 test suites
- Follows the same ChannelPlugin pattern as LINE/Discord/Telegram

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(synology-chat): add pairing, warnings, messaging, agent hints

- Enable media capability (file_url already supported by client)
- Add pairing.notifyApproval to message approved users
- Add security.collectWarnings for missing token/URL, insecure SSL, open DM policy
- Add messaging.normalizeTarget and targetResolver for user ID resolution
- Add directory stubs (self, listPeers, listGroups)
- Add agentPrompt.messageToolHints with Synology Chat formatting guide
- 63 tests (up from 54), all passing

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
mreedr pushed a commit to mreedr/openclaw-custom that referenced this pull request Feb 24, 2026
00xglitch pushed a commit to 00xglitch/openclaw that referenced this pull request Feb 24, 2026
* feat(channels): add Synology Chat native channel

Webhook-based integration with Synology NAS Chat (DSM 7+).
Supports outgoing webhooks, incoming messages, multi-account,
DM policies, rate limiting, and input sanitization.

- HMAC-based constant-time token validation
- Configurable SSL verification (allowInsecureSsl) for self-signed NAS certs
- 54 unit tests across 5 test suites
- Follows the same ChannelPlugin pattern as LINE/Discord/Telegram

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(synology-chat): add pairing, warnings, messaging, agent hints

- Enable media capability (file_url already supported by client)
- Add pairing.notifyApproval to message approved users
- Add security.collectWarnings for missing token/URL, insecure SSL, open DM policy
- Add messaging.normalizeTarget and targetResolver for user ID resolution
- Add directory stubs (self, listPeers, listGroups)
- Add agentPrompt.messageToolHints with Synology Chat formatting guide
- 63 tests (up from 54), all passing

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
00xglitch pushed a commit to 00xglitch/openclaw that referenced this pull request Feb 24, 2026
00xglitch pushed a commit to 00xglitch/openclaw that referenced this pull request Feb 24, 2026
* feat(channels): add Synology Chat native channel

Webhook-based integration with Synology NAS Chat (DSM 7+).
Supports outgoing webhooks, incoming messages, multi-account,
DM policies, rate limiting, and input sanitization.

- HMAC-based constant-time token validation
- Configurable SSL verification (allowInsecureSsl) for self-signed NAS certs
- 54 unit tests across 5 test suites
- Follows the same ChannelPlugin pattern as LINE/Discord/Telegram

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(synology-chat): add pairing, warnings, messaging, agent hints

- Enable media capability (file_url already supported by client)
- Add pairing.notifyApproval to message approved users
- Add security.collectWarnings for missing token/URL, insecure SSL, open DM policy
- Add messaging.normalizeTarget and targetResolver for user ID resolution
- Add directory stubs (self, listPeers, listGroups)
- Add agentPrompt.messageToolHints with Synology Chat formatting guide
- 63 tests (up from 54), all passing

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
00xglitch pushed a commit to 00xglitch/openclaw that referenced this pull request Feb 24, 2026
clawd-xsl pushed a commit to clawd-xsl/openclaw that referenced this pull request Feb 26, 2026
* feat(channels): add Synology Chat native channel

Webhook-based integration with Synology NAS Chat (DSM 7+).
Supports outgoing webhooks, incoming messages, multi-account,
DM policies, rate limiting, and input sanitization.

- HMAC-based constant-time token validation
- Configurable SSL verification (allowInsecureSsl) for self-signed NAS certs
- 54 unit tests across 5 test suites
- Follows the same ChannelPlugin pattern as LINE/Discord/Telegram

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(synology-chat): add pairing, warnings, messaging, agent hints

- Enable media capability (file_url already supported by client)
- Add pairing.notifyApproval to message approved users
- Add security.collectWarnings for missing token/URL, insecure SSL, open DM policy
- Add messaging.normalizeTarget and targetResolver for user ID resolution
- Add directory stubs (self, listPeers, listGroups)
- Add agentPrompt.messageToolHints with Synology Chat formatting guide
- 63 tests (up from 54), all passing

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
clawd-xsl pushed a commit to clawd-xsl/openclaw that referenced this pull request Feb 26, 2026
hughdidit pushed a commit to hughdidit/DAISy-Agency that referenced this pull request Mar 1, 2026
* feat(channels): add Synology Chat native channel

Webhook-based integration with Synology NAS Chat (DSM 7+).
Supports outgoing webhooks, incoming messages, multi-account,
DM policies, rate limiting, and input sanitization.

- HMAC-based constant-time token validation
- Configurable SSL verification (allowInsecureSsl) for self-signed NAS certs
- 54 unit tests across 5 test suites
- Follows the same ChannelPlugin pattern as LINE/Discord/Telegram

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(synology-chat): add pairing, warnings, messaging, agent hints

- Enable media capability (file_url already supported by client)
- Add pairing.notifyApproval to message approved users
- Add security.collectWarnings for missing token/URL, insecure SSL, open DM policy
- Add messaging.normalizeTarget and targetResolver for user ID resolution
- Add directory stubs (self, listPeers, listGroups)
- Add agentPrompt.messageToolHints with Synology Chat formatting guide
- 63 tests (up from 54), all passing

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 03586e3)
hughdidit pushed a commit to hughdidit/DAISy-Agency that referenced this pull request Mar 1, 2026
(cherry picked from commit 780bbbd)

# Conflicts:
#	src/agents/google-gemini-switch.live.test.ts
hughdidit pushed a commit to hughdidit/DAISy-Agency that referenced this pull request Mar 3, 2026
* feat(channels): add Synology Chat native channel

Webhook-based integration with Synology NAS Chat (DSM 7+).
Supports outgoing webhooks, incoming messages, multi-account,
DM policies, rate limiting, and input sanitization.

- HMAC-based constant-time token validation
- Configurable SSL verification (allowInsecureSsl) for self-signed NAS certs
- 54 unit tests across 5 test suites
- Follows the same ChannelPlugin pattern as LINE/Discord/Telegram

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(synology-chat): add pairing, warnings, messaging, agent hints

- Enable media capability (file_url already supported by client)
- Add pairing.notifyApproval to message approved users
- Add security.collectWarnings for missing token/URL, insecure SSL, open DM policy
- Add messaging.normalizeTarget and targetResolver for user ID resolution
- Add directory stubs (self, listPeers, listGroups)
- Add agentPrompt.messageToolHints with Synology Chat formatting guide
- 63 tests (up from 54), all passing

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit 03586e3)
hughdidit pushed a commit to hughdidit/DAISy-Agency that referenced this pull request Mar 3, 2026
(cherry picked from commit 780bbbd)

# Conflicts:
#	src/agents/google-gemini-switch.live.test.ts
zooqueen pushed a commit to hanzoai/bot that referenced this pull request Mar 6, 2026
* feat(channels): add Synology Chat native channel

Webhook-based integration with Synology NAS Chat (DSM 7+).
Supports outgoing webhooks, incoming messages, multi-account,
DM policies, rate limiting, and input sanitization.

- HMAC-based constant-time token validation
- Configurable SSL verification (allowInsecureSsl) for self-signed NAS certs
- 54 unit tests across 5 test suites
- Follows the same ChannelPlugin pattern as LINE/Discord/Telegram


* feat(synology-chat): add pairing, warnings, messaging, agent hints

- Enable media capability (file_url already supported by client)
- Add pairing.notifyApproval to message approved users
- Add security.collectWarnings for missing token/URL, insecure SSL, open DM policy
- Add messaging.normalizeTarget and targetResolver for user ID resolution
- Add directory stubs (self, listPeers, listGroups)
- Add agentPrompt.messageToolHints with Synology Chat formatting guide
- 63 tests (up from 54), all passing


---------
zooqueen pushed a commit to hanzoai/bot that referenced this pull request Mar 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants