Commit Graph

21 Commits

Author SHA1 Message Date
Peter Steinberger 5016e6519f perf(clickclack): avoid duplicate upload buffer (#127152)
Amp-Thread-ID: https://ampcode.com/threads/T-01a021f5-984a-7628-a30c-491c166ff247

Co-authored-by: Amp <amp@ampcode.com>
2026-08-21 03:43:21 -07:00
Jacqueline Henriksen aa21c001f1 fix(clickclack): show native agent progress while replying (#116683)
* fix(clickclack): show native agent progress while replying

* fix(clickclack): address native progress review feedback

* fix(clickclack): address native progress review feedback

* fix(clickclack): address native progress review feedback

* fix(clickclack): address native progress review feedback

* fix(clickclack): address native progress review feedback

* fix(clickclack): clear CI failures

* fix(clickclack): bound stalled progress finalization

* test(clickclack): satisfy strict callback typing

* fix(clickclack): clear progress before activity flush

* fix(clickclack): make native progress explicitly opt-in

* fix(clickclack): make native progress explicitly opt-in

* fix(clickclack): make native progress explicitly opt-in

* fix(clickclack): make native progress explicitly opt-in

* fix(clickclack): make native progress explicitly opt-in

* docs(clickclack): document opt-in native progress

* fix(clickclack): guard disabled native progress

* test(clickclack): cover independent progress opt-ins

* docs(clickclack): show native progress opt-in

* fix(clickclack): keep resolved progress setting compatible

* fix(clickclack): identify agent in native progress

* fix(clickclack): retract native commentary progress

* fix(clickclack): harden native progress compatibility

* fix(clickclack): regenerate current-main channel metadata

---------

Co-authored-by: PollyBot13 <pollybot13@gmail.com>
2026-08-06 20:18:19 -07:00
Peter Steinberger cca5b14785 feat(ui): path-based session and dashboard URLs (#113883)
* feat(ui): path-based session and dashboard URLs

* docs(ui): document control UI URLs

* fix(ui): finalize session path routing

* feat(ui): anchor session URLs on stable keys

* docs(ui): clarify stable session URL identity

* fix(ui): resolve session prefixes with full prefix and pagination

Query sessions.list with the full supplied prefix instead of an eight-char
truncation, and paginate up to a bounded page count so longer disambiguation
links resolve instead of being reported ambiguous. Zero strict-prefix matches
now fall through to literal-key resolution rather than rendering an empty
ambiguity view.

Also document the ~dot/~dotdot segment escape: peer ids reach session keys
trimmed and lowercased only (src/routing/session-key.ts), so a literal '.' or
'..' segment is reachable and browsers would normalize it away.

* fix(ui): synchronize committed session routes

* test(ui): split native shell host coverage

* fix(ui): thread configured mainKey through session URL builders

Reserved-set disambiguation needs the operator-configured mainKey at runtime, so
thread it from agentsList through every session path builder and the ClickClack
control URL. Unambiguous non-hex single-segment rests now resolve literally while
short-id-shaped rests still fail closed, which restores ClickClack channel
compatibility detection and control-link reconciliation.

Also bound prefix-resolution retries, preserve catalog thread identity, and keep
draft state on ambiguous candidate links.

* fix(ui): repair session URL CI integration

* perf(ui): lazy-load session route resolution

* perf(ui): isolate session prefix resolution

* perf(ui): defer session path parsing

* perf(ui): defer session navigation startup

* fix(ui): preserve first-run and literal session navigation

* fix(ui): satisfy session routing type and export gates

* fix(clickclack): preserve unscoped control link agent

* style(ui): satisfy chat page line limit

* refactor(ui): move chat page helpers to owning modules

* fix(ui): preserve destination session route identity

* fix(ui): preserve agent identity in session routes

* fix(ui): escape dots in literal session path segments

encodeURIComponent leaves periods intact, so a literal key segment like
channel:release.js produced /chat/main/channel/release.js. In-app navigation is
intercepted by the SPA, but a refresh, an external link, or a ClickClack link
would be served as a static asset request and never reach the app.

pathForWorkboardBoard already escapes dots for this reason; mirror it in both the
session URL contract and the ClickClack encoder, route the agent id through the
same segment encoder, and pin the case in both shared vector tables.

* fix(ui): stop bootstrap after teardown race

* refactor(ui): centralize session navigation targets

* fix(ui): consume bootstrap teardown abort

* fix(ui): canonicalize configured main session routes

* fix(ui): preserve distinct session references

* fix(ui): redirect released session query links

* fix(ui): make bootstrap teardown abort-safe
2026-07-26 12:46:04 -04:00
ZOOWH 288ba6cfb8 fix(clickclack): redact REST error details (#106635)
* fix(clickclack): redact REST error details

Redact untrusted ClickClack REST failure details before they reach callers.

Refs #106635; credit @ZOOWH.

Co-authored-by: ZOOWH <xu.wenhan1@xydigit.com>

* style(clickclack): order SDK imports

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-20 20:17:59 -07:00
Peter Steinberger 5420c5c409 feat(clickclack): session discussions — bound channels, side agent, lifecycle sync (#111503)
* feat(clickclack): add session discussions

* chore: remove release-owned changelog entry

* refactor(clickclack): split discussion service workflows

* fix(clickclack): satisfy plugin surface gates

* fix: narrow routing peer in inbound test and refresh docs map
2026-07-19 14:47:14 -07:00
Shakker 4cd07e5e8c feat: configure ClickClack accounts from setup codes 2026-07-16 23:56:29 +01:00
Shakker 204f4499e8 feat: add secure ClickClack setup code claim client 2026-07-16 23:56:29 +01:00
Shakker 06a7dabefa fix: tighten ClickClack command menu checks 2026-07-15 02:58:26 +01:00
Shakker 232af29f5b feat: add ClickClack command menu client 2026-07-15 02:58:26 +01:00
Shakker 72b42f0ed7 fix: preserve ClickClack nonce lookup causes (#105775) 2026-07-13 19:57:34 +01:00
Shakker f2e93429ed test: use explicit ClickClack token placeholders 2026-07-13 19:57:34 +01:00
Shakker 0039c066c1 feat: add ClickClack nonce recovery lookups 2026-07-13 19:57:34 +01:00
Jacqueline Henriksen ba00bd7bb4 fix: deliver ClickClack media and configurable model replies 2026-07-13 19:57:34 +01:00
ragesaq b8d195f45e fix: subscribe ClickClack from startup tail cursor (#102486)
Prevent ClickClack startup history from replaying as new agent input while preserving messages created during startup. Uses the server-captured realtime tail cursor from openclaw/clickclack#46, paginates reconnect recovery, and retains legacy client and server compatibility.

Prepared head SHA: 0e7008fbf6
Co-authored-by: ragesaq <11304287+ragesaq@users.noreply.github.com>
Co-authored-by: Shakker <165377636+shakkernerd@users.noreply.github.com>
Reviewed-by: @shakkernerd
2026-07-10 13:07:07 +01:00
Peter Steinberger b07ebe3ff3 feat: correlate managed agent requests (#103476) 2026-07-10 08:42:55 +01:00
sunlit-deng 1e377e3660 fix(clickclack): bound inbound websocket payloads (#102480)
* fix(clickclack): bound inbound websocket payloads

* fix(clickclack): bound inbound websocket payloads

Co-authored-by: sunlit-deng <yang.jiajun1@xydigit.com>

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-09 12:09:30 +01:00
Marvinthebored cbcd6a102c fix(clickclack): reply to a top-level message in-channel, not as a new thread (#100582)
* fix(clickclack): reply to a top-level message in-channel, not as a new thread

sendClickClackText routed any replyToId to createThreadReply, and the inbound
handler stamps replyToId = <triggering message id> on every reply. As a result
every reply to a top-level channel message opened its own thread, so the main
channel timeline showed nothing and the chat was effectively unusable.

Route a bare replyToId to the main channel as a quote-reply (quoted_message_id)
instead — matching the reply-to affordance of the Discord/Slack/Telegram
channels — and reserve threads for genuine thread context (an explicit threadId
or a thread-kind target). DM replies likewise quote-reply in the same
conversation. quoted_message_id is omitted when there is no reply context, so
plain sends are unchanged.

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

* test(clickclack): cover quote payload typing

---------

Co-authored-by: Marvinthebored <marvinthebored@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-05 22:27:27 -07:00
ragesaq 339cc4f12a fix(clickclack): address review — docs, lint lanes, activity coalescing
- docs: document agentActivity option, the non-inherited agent_activity:write
  scope, default-off and best-effort degradation behavior
- activity: type the enqueue catch parameter as unknown (lint lane)
- activity: treat toolCallId as opaque; normalize only itemId lane prefixes
- activity: skip identical/stale-shorter commentary snapshots so no
  redundant PATCHes queue
- http-client: fail fast when createActivityMessage has no channel or
  conversation target; narrow mocked request bodies before JSON.parse
2026-07-05 09:32:37 -07:00
ragesaq 01b34139b1 feat(clickclack): publish durable agent activity rows (commentary + tool)
Opt-in per-account (agentActivity: true): the ClickClack channel extension
now mirrors streamed commentary and tool progress into durable
agent_commentary / agent_tool message rows via the existing
replyOptions.onItemEvent seam, coalesced so one logical step is one row.
Requires a bot token carrying the agent_activity:write scope; publishing
is best-effort and never interrupts final text delivery.
2026-07-05 09:32:37 -07:00
mushuiyu886 f4fa10c2c5 fix(clickclack): bound REST success JSON response reads (#96970)
* fix(clickclack): bound REST success JSON response reads

* test(clickclack): harden response cap proof

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-06-27 07:30:32 -07:00
Vincent Koc f14a2cb9c5 fix(clickclack): bound api error response bodies 2026-06-19 13:16:08 +02:00