Sarah Fortune
176716da74
fix(slack): support native slack approvals on enterprise grid ( #120942 )
...
* fix(slack): support Grid native approvals
* test(slack): tighten Grid approval validation
* fix(slack): pass Grid scope to native approvals
* fix(slack): narrow Grid approval event scope
* refactor(slack): centralize optional approval scope
* refactor(slack): reuse approval target formatter
* refactor(slack): use generic target formatter
* refactor(slack): centralize explicit target formatting
---------
Co-authored-by: Sarah Fortune <sarah.fortune@gmail.com >
2026-08-10 03:42:59 +00:00
Sarah Fortune
66dee798b5
Revert "fix: enable Slack native approvals for Enterprise Grid installs (#120…" ( #121219 )
...
This reverts commit 96798953b2 .
2026-08-09 19:49:35 +00:00
Sarah Fortune
96798953b2
fix: enable Slack native approvals for Enterprise Grid installs ( #120874 )
...
* fix(slack): scope Grid native approvals by team
* fix(slack): type action middleware context
* fix(slack): secure Grid native approvals
Co-authored-by: Sarah Fortune <sarah.fortune@gmail.com >
---------
Co-authored-by: Sarah Fortune <sarah.fortune@gmail.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-08-09 12:09:59 -07:00
MatthewSynthia
7df5834511
fix(slack): cap chat.update edit text at the 4000-char limit, not the 8000 send limit ( #115027 )
...
* fix(slack): cap chat.update edit text at the 4000-char limit, not the 8000 send limit
updateMessageSlack truncated the edit text to SLACK_TEXT_LIMIT (8000), but Slack chat.update
rejects text longer than 4000 characters with msg_too_long (documented in limits.ts). Every
other edit path (actions.ts, edit-text.ts, message-action-dispatch.ts, preview-finalize.ts)
uses SLACK_EDIT_TEXT_LIMIT (4000); updateMessageSlack was the lone outlier, so a long
question-delivery status edit failed instead of landing. Use the edit limit.
* fix(slack): enforce edit text byte limits
Co-authored-by: MatthewSynthia <matthewsynthia@users.noreply.github.com >
* fix(slack): preserve prepared edit text within limits
Co-authored-by: MatthewSynthia <matthewsynthia@users.noreply.github.com >
---------
Co-authored-by: MatthewSynthia <matthewsynthia@users.noreply.github.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-28 12:41:37 -04:00
Peter Steinberger
7a456e362d
feat(channels): add typed cross-surface approval actions ( #103679 )
...
* fix(gateway): approval registry hardening and protocol-surface follow-ups
Follow-up delta to the merged #103579 head, rebased onto current main:
- gateway-protocol wire types derive from owner-module schema consts
(types.ts tombstone) and ProtocolSchemas leaves the package index so the
public plugin-sdk d.ts graph tree-shakes the registry declaration
- approval access authority follows the operator.approvals scope tier with
reviewerDeviceIds as the opt-in restriction (cross-surface
first-answer-wins; requester identity gates only legacy adapters)
- plugin node.invoke approvals register directly so unrenderable
presentations fail closed before request routing
- exec-approval manager reconciliation with #103515 revocation hardening
(resolution source attribution, one-shot ask-fallback consumption)
- surface-report pins and plugin-sdk API baseline refreshed; Swift models
regenerated
* feat(channels): add typed operator approval actions
Squash-rebased #103679 segment onto the durable-approval-registry tip on
current main. Typed approval/command/select presentation actions replace
raw-string inference across slack/telegram/discord/matrix/imessage/whatsapp,
approval.resolve carries an explicit kind, and channel adapters map native
callback envelopes through the typed action registry.
Drift reconciliation: deprecated buildExecApprovalInteractiveReply assertions
dropped (#104650 removed the shims); worker_environments bootstrap-column
migration kept alongside the approval resolution_ref backfill; plugin-sdk API
baseline regenerated.
(cherry picked from commit 68765a5d39d2118c88a7a54d00387337912d4494)
(cherry picked from commit 8642ac12af142e4b751f4f30d4b114615e7e5f66)
(cherry picked from commit 036c4bc39499925fc03de16ec9302e346769350a)
(cherry picked from commit 19dc350d6bc34e29a5169c6bc80971b0ad12adde)
(cherry picked from commit fc978b0bad86aef421c79f6a211b25cc1b743c01)
(cherry picked from commit 10de4d1ed5071f9be6ad1ee5d1e32c0fa8c9d11c)
(cherry picked from commit 9a664ced1b1fa740172b258f355f1a82925ae41c)
(cherry picked from commit c5ff69abbf444139e9e007bfa45beb0f00ffea54)
(cherry picked from commit d466a80795f7bc04639f1538f4e412bca3ab96bf)
(cherry picked from commit f5b4fe40dd5c961322f8553cc80b2fdfb3f6503e)
(cherry picked from commit 7340b4749a4cc4c72f7a41cce1bc9cb550cae038)
(cherry picked from commit a151f41808f23ae60b10305ccd2bc959b9169a86)
* fix(approvals): preserve typed transport ownership
* test(imessage): narrow chunked approval text
* refactor(protocol): remove retired type tombstone
* fix(plugin-sdk): align surface budgets after rebase
* docs(changelog): note typed operator approvals
* docs(changelog): defer typed approval release note
2026-07-11 18:31:05 -07:00
Vincent Koc
fdc7892a6e
refactor: localize internal implementation types ( #101731 )
2026-07-07 07:41:04 -07:00
llagy009
90c20d15c2
fix(slack): truncate approval mrkdwn on UTF-16 boundary ( #96576 )
...
truncateSlackMrkdwn cut approval Block Kit mrkdwn (Command/Request/
plugin description) with String.slice(0, maxChars - 1), which can split
an astral character's surrogate pair at the 2600-char preview limit,
leaving a lone surrogate in the chat.postMessage/chat.update payload.
Slice with sliceUtf16Safe so truncation never splits a surrogate pair,
keeping the existing ellipsis suffix and length budget.
Adds tests asserting exec command and plugin request mrkdwn stay free of
lone surrogates, plus a BMP regression keeping the existing limit.
2026-06-27 09:31:20 -07:00
Peter Steinberger
efd1a9ace6
docs: document messaging extension sources
2026-06-04 22:03:15 -04:00
Vincent Koc
28ffcf88bd
refactor: share Slack approval block helpers
2026-05-30 05:43:30 +02:00
Kevin Lin
bb752c2b47
Revert "feat: expose plugin approval action metadata" ( #87419 )
...
This reverts commit 0c867eef75 .
# Conflicts:
# docs/.generated/plugin-sdk-api-baseline.sha256
2026-05-27 14:48:06 -07:00
Pablo Guardiola
0c867eef75
feat: expose plugin approval action metadata
...
Expose plugin approval action metadata so plugins can describe richer approval actions across gateway, SDK, channel, and UI surfaces.
2026-05-26 22:46:09 -07:00
Kevin Lin
1008b8213b
fix(slack): keep approvals in app conversation threads
...
* fix(slack): keep plugin approvals in app conversation threads
* fix(slack): preserve plugin approval routing
* fix(slack): keep suppression typing aligned
* fix(slack): suppress native dm approval fallback
* fix(slack): suppress stored native approval fallback
2026-05-21 21:51:34 -07:00
Kevin Lin
7f499643b2
enhance(slack): deliver native plugin approvals ( #85062 )
...
* fix(slack): deliver native plugin approvals
* fix(slack): deliver plugin approvals with native UI
* docs: defer slack plugin approval docs
2026-05-21 17:31:06 -07:00
Peter Steinberger
ee72ce8cf7
refactor: deprecate legacy interactive reply APIs
2026-05-17 14:18:23 +01:00
Peter Steinberger
827b0de0ce
refactor: reduce plugin sdk surface
2026-05-10 12:37:10 +01:00
Vincent Koc
eee7307891
perf(core): trim reply helper churn
2026-05-06 22:22:39 -07:00
clawsweeper[bot]
87a211d309
fix(slack): cap approval update fallback text
...
Co-authored-by: openclaw-clawsweeper[bot] <280122609+openclaw-clawsweeper[bot]@users.noreply.github.com>
2026-04-29 22:05:18 -07:00
Peter Steinberger
395ad91323
fix: cap slack approval update text
2026-04-30 05:16:25 +01:00
Peter Steinberger
329568905e
fix: bound slack approval metadata
2026-04-30 03:47:12 +01:00
Peter Steinberger
f0000ab72d
refactor(plugin-sdk): split infra runtime barrel
2026-04-27 20:50:35 +01:00
Peter Steinberger
4336a7f3a9
refactor(plugin-sdk): narrow config runtime imports
2026-04-27 14:58:32 +01:00
Vincent Koc
c3d3cf23bc
fix(approval): split discord and slack runtime seams
2026-04-10 09:08:28 +01:00
Peter Steinberger
aec24f4599
refactor: dedupe messaging trimmed readers
2026-04-08 01:36:39 +01:00
Gustavo Madeira Santana
af4a2faa1d
types: preserve approval runtime payload typing
2026-04-07 17:11:04 -04:00
Gustavo Madeira Santana
d78512b09d
Refactor: centralize native approval lifecycle assembly ( #62135 )
...
Merged via squash.
Prepared head SHA: b7c20a7398
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com >
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com >
Reviewed-by: @gumadeiras
2026-04-07 14:40:26 -04:00