Peter Steinberger
9b565e8d50
refactor(plugins): trim long-tail dead exports ( #106230 )
...
* refactor(extensions): trim long-tail plugin exports
* refactor(whatsapp): remove dead media relay
2026-07-13 02:34:06 -07:00
Peter Steinberger
83bf0379c9
refactor(channels): share plugin contract scaffolds ( #105838 )
...
* refactor(channels): share plugin contract scaffolds
* fix: preserve channel config hint metadata
* chore: refresh Plugin SDK API baseline
* ci: refresh plugin SDK surface budget
* fix(ci): allow read-only state database boundary
* fix(ci): dedupe read-only state database boundary
2026-07-13 01:51:32 -07:00
Vincent Koc
2454511480
refactor(sms): consolidate webhook test hooks ( #106072 )
2026-07-13 14:02:10 +08:00
Peter Steinberger
807491e0f1
ci: consolidate SMS webhook test reset ( #106070 )
...
* ci: clear stale dead-export surfaces
* ci: align dead-export baseline
2026-07-12 22:41:35 -07:00
Peter Steinberger
1edc8b6c27
refactor(security): centralize timing-safe secret comparisons ( #105989 )
...
* refactor(plugins): reuse safe secret comparator
* refactor(security): centralize remaining secret comparisons
* chore(ci): lower refactored file baselines
2026-07-12 22:37:21 -07:00
Pavan Kumar Gondhi
ef9383d88a
fix: protect SMS webhook callback quota [AI] ( #103620 )
...
* fix: scope SMS webhook rate limiting after validation
* fix: separate SMS webhook validation throttles
* fix: loosen SMS pre-validation throttle
* docs: clarify SMS webhook quota stages
* fix: preserve signed sms callback capacity
* fix: name sms invalid request limiter
* test: cover sms validation disabled quota
* fix: skip signed limiter without sms validation
* docs: clarify sms webhook request budget
* fix: keep sms disabled validation dispatch cap
2026-07-13 10:29:59 +05:30
Peter Steinberger
81941f2d68
test: enable noUncheckedIndexedAccess for extension tests ( #105343 )
2026-07-12 12:48:22 +01:00
Peter Steinberger
e34bff2276
refactor(plugin-sdk): collapse internal config-schema facade usage onto one module ( #104665 )
2026-07-11 13:00:53 -07:00
Peter Steinberger
dba64d574f
chore(release): set version to 2026.7.2
2026-07-11 04:00:49 +01:00
clawSean
e44f04c50e
fix(sms): normalize Twilio RCS webhook senders ( #102373 )
...
Co-authored-by: clawSean <260045960+clawSean@users.noreply.github.com >
2026-07-10 17:51:47 -07:00
xingzhou
8d5f7e27b2
fix(sms): replayed Twilio webhooks process again after high inbound traffic ( #101107 )
...
* fix(sms): replayed Twilio webhooks process again after high inbound traffic
* fix(sms): harden Twilio replay saturation
* test(sms): expose response header spy
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-10 17:58:53 +01:00
Peter Steinberger
d185f9a0b4
fix(infra): preserve characters in truncated response snippets ( #103136 )
...
* fix(infra): preserve bounded response text characters
Co-authored-by: qingminlong <34085845+qingminglong@users.noreply.github.com >
* ci(plugin-sdk): refresh API baseline
---------
Co-authored-by: qingminlong <34085845+qingminglong@users.noreply.github.com >
2026-07-09 23:43:26 +01:00
Peter Steinberger
a2a68d154b
fix(agent): preserve explicit recipient sessions ( #101507 )
...
* fix(agent): honor recipient session routing
Co-authored-by: vincentkoc <25068+vincentkoc@users.noreply.github.com >
Co-authored-by: pingfanfan <pingfan.work@gmail.com >
* fix(agent): preserve canonical recipient routes
* fix(agent): require exact recipient routes
Co-authored-by: vincentkoc <25068+vincentkoc@users.noreply.github.com >
Co-authored-by: pingfanfan <pingfan.work@gmail.com >
* fix(agent): harden recipient route resolution
* fix(imessage): require canonical recipient handles
* fix(agent): refine provider recipient exactness
* fix(agent): bound direct alias session routing
* fix(signal): preserve direct alias route type
* fix(agent): honor binding-scoped recipient sessions
* fix(routing): honor configured main session aliases
* fix(clickclack): align account-owned session routes
* fix(twitch): preserve canonical recipient sessions
* fix(routing): isolate stable outbound identities
* chore: defer recipient session changelog
* fix(sms): use dedicated channel SDK facade
---------
Co-authored-by: vincentkoc <25068+vincentkoc@users.noreply.github.com >
Co-authored-by: pingfanfan <pingfan.work@gmail.com >
2026-07-07 10:07:13 +01:00
Vincent Koc
1aeed5ec26
refactor(plugins): localize private config types ( #101452 )
2026-07-07 00:34:46 -07:00
clawSean
d84aabf642
feat: add channel pairing request hook ( #97733 )
...
* feat: add channel pairing request hook
* fix(plugin-sdk): keep pairing hook types internal
* docs: regenerate docs map
* docs: regenerate docs map
* docs: regenerate docs map
* fix(plugin-sdk): keep pairing hook types internal
* fix(plugin-sdk): keep pairing hook types internal
* docs: refresh plugin hook docs
* docs: refresh plugin hook docs
* docs: refresh plugin hook docs
---------
Co-authored-by: clawSean <260045960+clawSean@users.noreply.github.com >
Co-authored-by: Omar Shahine <omarshahine@users.noreply.github.com >
2026-07-05 19:11:58 -07:00
Wynne668
06b841fa58
fix(sms): strip internal tool traces from replies
2026-07-01 04:12:55 -07:00
lsr911
6e98477ee4
fix(sms): guard Twilio JSON.parse against malformed API response bodies ( #97999 )
...
Wrap JSON.parse in parseTwilioListPayload and retrieveTwilioMessagingService with try/catch to prevent a malformed Twilio API response from throwing an unhandled SyntaxError.
- parseTwilioListPayload: return [] on parse failure (fail-safe for phone number listing)
- retrieveTwilioMessagingService: throw descriptive Error on parse failure
Note: parseTwilioApiError and parseTwilioSuccessPayload already had try/catch guards (lines 85-97, 104-121).
Signed-off-by: lsr911 <liao.shirong@xydigit.com >
Co-authored-by: Claude <noreply@anthropic.com >
2026-06-30 18:15:08 -07:00
Vincent Koc
66e676d29b
chore(release): close out 2026.6.11 on main
2026-06-30 11:31:08 -07:00
Vincent Koc
0671c08900
chore(release): close out 2026.6.10 on main ( #96271 )
...
* chore(release): close out 2026.6.10 on main
* chore(release): align native app metadata for 2026.6.10
* chore(release): sync Android 2026.6.10 notes
* docs(changelog): preserve 2026.6.9 history
* docs(changelog): preserve 2026.6.9 history
2026-06-24 11:51:14 +08:00
Vincent Koc
f2eca94391
feat(plugins): externalize additional official plugins ( #95683 )
2026-06-22 16:12:51 +08:00
Vincent Koc
b039e949b6
chore(release): close out 2026.6.9
2026-06-21 12:24:15 +08:00
Vincent Koc
f29af26326
fix(sms): bound twilio api response bodies
2026-06-19 13:24:16 +02:00
Vincent Koc
6774e7f259
chore(release): sync main to 2026.6.8
2026-06-17 07:25:30 +08:00
Shakker
920e6a8eec
chore: set version 2026.6.9
2026-06-16 19:54:07 +01:00
Ayaan Zaidi
05a0dfdd08
refactor(extensions): split channel contract sidecars
2026-06-10 13:05:24 +05:30
Peter Steinberger
4fa5092cdc
docs: document small extension sources
2026-06-04 21:02:07 -04:00
Peter Steinberger
1878ca0820
chore(release): prepare 2026.6.2 beta
2026-06-04 00:06:52 +01:00
Peter Steinberger
e254346bc2
chore(release): prepare 2026.6.3 beta
2026-06-03 23:42:34 +01:00
Kevin Lin
fce002ad03
revert(codex): revert first-party marketplace allowlist
...
Reverts openclaw/openclaw#82219 .
2026-06-03 15:35:35 -07:00
Peter Steinberger
a14eacf372
chore(release): set version 2026.6.2
2026-06-01 23:06:55 +01:00
Peter Steinberger
8e28c773fe
chore(release): prepare 2026.6.1
2026-06-01 10:30:15 +01:00
Peter Steinberger
b653d94918
chore(lint): enable no-useless-assignment
2026-05-31 22:40:48 +01:00
Peter Steinberger
304e2c83c0
chore(lint): enable stricter oxlint rules
2026-05-31 18:59:02 +01:00
clawSean
51228aecd4
fix(sms): cover native proof follow-ups ( #88601 )
...
Remove the duplicate plain approve command from pairing replies so SMS/native pairing shows one copyable owner approval command in the fenced block.
Add regression coverage for the single approve-command occurrence, plus Twilio guarded-egress release coverage for non-2xx and malformed-success send responses.
Verification:
- pnpm exec oxfmt --check src/pairing/pairing-messages.ts src/pairing/pairing-messages.test.ts extensions/sms/src/twilio.test.ts
- node scripts/run-vitest.mjs src/pairing/pairing-messages.test.ts src/pairing/pairing-challenge.test.ts src/plugin-sdk/channel-pairing.test.ts
- node scripts/run-vitest.mjs extensions/sms/src/twilio.test.ts
Thanks @clawSean.
2026-05-31 16:41:24 +01:00
Peter Steinberger
0d17623f00
chore: bump OpenClaw version to 2026.5.31
...
Bumps OpenClaw release metadata to 2026.5.31 across package manifests, app version files, plugin metadata, changelog headings, and generated shrinkwraps.
Verification:
- pnpm plugins:sync:check
- pnpm ios:version:check
- pnpm deps:shrinkwrap:check
- git diff --check
- stale 2026.5.30/build-code scan across changed files
- autoreview clean: no accepted/actionable findings
- PR CI green for real gates: Checks, security scans, dependency guard, app lanes, real behavior proof
Known non-code workflow issue:
- label workflow failed because this PR hits GitHub's 100-label issue cap before the size-label step.
2026-05-31 14:46:17 +01:00
Peter Steinberger
1e08af453a
fix(sms): add Twilio webhook diagnostics
...
* fix(sms): diagnose Twilio webhook setup
* test(sms): satisfy diagnostic lint gates
* fix(sms): redact recent probe participants
* docs(sms): refresh SecretRef credential matrix
* fix(sms): probe Messaging Service webhooks
* fix(sms): resolve env-backed SecretRefs
2026-05-31 11:44:39 +01:00
Peter Steinberger
77f1359612
refactor: extract media and ACP core packages ( #88534 )
...
* refactor: extract media and acp core packages
* refactor: remove relocated media and acp sources
* build: wire new core packages into dependency checks
* test: alias new core packages in vitest
* build: keep media sniffer runtime dependency
* docs: refresh plugin sdk api baseline
* fix: keep normalized proposal queries non-empty
* test: keep channel timer tests isolated
* fix: keep rebased plugin checks green
* fix: preserve sms numeric allowlist entries
* test: harden exec foreground timeout failure
* test: remove duplicate skill workshop assertion
* fix: remove channel config lint suppression
* test: refresh lint suppression allowlist
2026-05-31 11:30:33 +01:00
Soham Patankar
4f3d8a57dd
fix(codex): accept first-party OpenAI plugin marketplaces
...
Allow Codex native plugin config to target first-party OpenAI marketplaces, including openai-curated, openai-bundled, and openai-primary-runtime.
Fixes #82216 .
Thanks @yaanfpv for the contribution.
Verification:
- node scripts/run-vitest.mjs test/scripts/lint-suppressions.test.ts
- pnpm build:ci-artifacts
- OPENCLAW_VITEST_MAX_WORKERS=2 node scripts/run-vitest.mjs run --config test/vitest/vitest.full-core-support-boundary.config.ts test/scripts/lint-suppressions.test.ts
- node scripts/run-vitest.mjs extensions/codex/src/app-server/config.test.ts extensions/codex/src/app-server/plugin-activation.test.ts extensions/codex/src/app-server/session-binding.test.ts extensions/codex/src/migration/provider.test.ts extensions/sms/src/channel.test.ts extensions/sms/src/inbound.test.ts
- git diff --check
- ./.agents/skills/autoreview/scripts/autoreview --mode local
- GitHub PR CI on head 896640060b , including build-artifacts run 26709647050
2026-05-31 11:08:42 +01:00
tanshanshan
425a4ab2f2
chore(lint): enable object-shorthand ( #81808 )
...
* fix: narrow current-main core type guards
* fix: preserve query and test guard narrowing
* fix(copilot): align client options with sdk rename
* test(sms): type fetch mocks
* fix(sms): preserve numeric allowlist entries
* test(sms): preserve pairing send count assertion
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-05-31 10:46:10 +01:00
shawnduggan
1d55caa162
fix(memory): respect QMD status timeout
...
Respect the configured QMD status timeout during vector availability probes and skip checkpoint-style session transcript exports while preserving valid session IDs that merely contain checkpoint words.
Includes maintainer fixups for latest-main timer-dependent CI and SMS status/test drift.
Thanks @shawnduggan.
Verification:
- `mise exec node@24.13 .0 -- node scripts/run-vitest.mjs run --config test/vitest/vitest.agents-core.config.ts src/agents/bash-tools.exec-foreground-failures.test.ts --maxWorkers=1`
- `mise exec node@24.16 .0 -- node scripts/run-vitest.mjs run src/channels/draft-stream-loop.test.ts --maxWorkers=1`
- `mise exec node@24.16 .0 -- node scripts/run-vitest.mjs run extensions/sms/src/channel.test.ts extensions/sms/src/inbound.test.ts extensions/sms/src/twilio.test.ts extensions/sms/src/gateway.test.ts --maxWorkers=1`
- `mise exec node@24.16 .0 -- node scripts/run-vitest.mjs run --config test/vitest/vitest.gateway-server.config.ts src/gateway/server.agent.gateway-server-agent-b.test.ts --maxWorkers=1`
- `mise exec node@24.16 .0 -- node scripts/run-tsgo.mjs -p test/tsconfig/tsconfig.extensions.test.json --incremental --tsBuildInfoFile .artifacts/tsgo-cache/extensions-test.tsbuildinfo`
- `mise exec node@24.16 .0 -- node scripts/run-tsgo.mjs -p test/tsconfig/tsconfig.core.test.json --incremental --tsBuildInfoFile .artifacts/tsgo-cache/core-test.tsbuildinfo`
- `mise exec node@24.16 .0 -- node scripts/run-oxlint-shards.mjs --threads=8`
- `git diff --check`
- GitHub Actions: run `26708853296` and required checks passed on `0c97217a9de501cb861fee731d5c008781da056c`.
2026-05-31 10:29:45 +01:00
Peter Steinberger
3258338ec8
chore(lint): clean sms lint fallout
2026-05-31 10:04:48 +01:00
Peter Steinberger
3a4943ef87
fix(ci): repair sms channel checks
2026-05-31 05:02:18 -04:00
Peter Steinberger
3513e8bfd9
feat: add Twilio SMS channel
...
Add a bundled SMS channel backed by Twilio inbound webhooks and outbound text delivery.
Includes signed webhook validation, pairing/allowlist access, Messaging Service sender support, chunked plain-text SMS delivery, default target support, docs, config metadata, labeler updates, and focused SMS coverage.
Verification:
- pnpm exec tsgo -p extensions/sms/tsconfig.json --noEmit
- OPENCLAW_VITEST_FS_MODULE_CACHE_PATH=/tmp/openclaw-vitest-sms-land-fix2 node scripts/run-vitest.mjs extensions/sms/src/phone.test.ts extensions/sms/src/accounts.test.ts extensions/sms/src/twilio.test.ts extensions/sms/src/inbound.test.ts extensions/sms/src/gateway.test.ts extensions/sms/src/channel.test.ts extensions/sms/src/send.test.ts extensions/sms/src/webhook.test.ts --reporter=verbose
- pnpm config:channels:check
- pnpm plugins:inventory:check
- git diff --check
- .agents/skills/autoreview/scripts/autoreview --mode local
- .agents/skills/autoreview/scripts/autoreview --mode branch --base origin/main
2026-05-31 09:22:31 +01:00