Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
203 commits
Select commit Hold shift + click to select a range
2bd352b
test(233-01): add failing test for classifyGoogleChatError taxonomy
Jul 5, 2026
a9a6732
feat(233-01): implement classifyGoogleChatError taxonomy
Jul 5, 2026
0411a80
test(233-02): add failing test for mapGoogleChatEventToNormalized
Jul 5, 2026
e71a773
feat(233-02): implement mapGoogleChatEventToNormalized
Jul 5, 2026
9ed8e0a
test(233-03): add failing test for GoogleChatChannelEntrySchema
Jul 5, 2026
0dd96f1
feat(233-03): implement GoogleChatChannelEntrySchema
Jul 5, 2026
9db3e70
test(233-04): add failing test for validateGoogleChatCredentials
Jul 5, 2026
fe70613
feat(233-04): implement validateGoogleChatCredentials
Jul 5, 2026
fd9aad5
test(233-05): add failing test for SA-JWT-bearer per-scope token prov…
Jul 5, 2026
4c6089a
feat(233-05): SA-JWT-bearer per-scope token provider for Google Chat
Jul 5, 2026
5106a25
test(233-06): failing pull loop test — ack-on-enqueue, skip-ack-on-re…
Jul 5, 2026
5f544a1
feat(233-06): Pub/Sub pull loop core — decode, dedup, ack-on-enqueue
Jul 5, 2026
07de161
test(233-06): failing backoff/abort/loud-failure tests for the pull loop
Jul 5, 2026
906325d
feat(233-06): bounded jittered backoff, abortable stop, loud persiste…
Jul 5, 2026
4e23bfe
test(233-07): add failing adapter test for inbound gate, dispatch, li…
Jul 5, 2026
5743499
feat(233-07): compose Google Chat adapter — gate, dispatch, lifecycle…
Jul 5, 2026
456b434
test(233-07): add failing send test for messages.create with chat.bot…
Jul 5, 2026
c37c356
feat(233-07): send Google Chat text via messages.create with a chat.b…
Jul 5, 2026
2c6ecab
test(233-08): add failing test for googlechat plugin honest text-only…
Jul 5, 2026
cbaee55
feat(233-08): googlechat plugin wraps adapter with honest text-only C…
Jul 5, 2026
576f36b
test(233-08): pin googlechat in plugin-capabilities arch guard (11 ->…
Jul 5, 2026
c766365
feat(233-08): export the googlechat surface from the channels barrel
Jul 5, 2026
57ebe92
test(233-09): add failing wiring test for googlechat registration + S…
Jul 5, 2026
8e67ef0
feat(233-09): wire googlechat plugin into the daemon composition root
Jul 5, 2026
a492679
docs(233-09): document channels.googlechat config block + GOOGLECHAT_…
Jul 5, 2026
d7a1558
fix(233): BL-01 guard the mapper's untrusted-input boundary against n…
Jul 5, 2026
be80cdc
fix(233): MD-01 populate the advertised replyToMetaKey in the mapper
Jul 5, 2026
295a0ab
fix(233): MD-02 annotate the sanctioned boundary throw in handleChatE…
Jul 5, 2026
6b57893
fix(233): MD-03 make the webhook-mode fallback a clear config WARN, n…
Jul 5, 2026
a84c62d
fix(233): LW-01 stop leaking an abort listener per backoff cycle
Jul 5, 2026
8bcb5aa
fix(233): LW-02 remove the dead retryable field from the error classi…
Jul 5, 2026
45f4ed6
fix(233): LW-03 classify 404/400 as config with a knob-naming hint
Jul 5, 2026
e07fec6
fix(233): LW-04 guard start() idempotency and skip-ack a zero-handler…
Jul 5, 2026
10ad1b1
fix(233): NT-01 stop re-parsing the service-account key inside the ad…
Jul 5, 2026
d2fc2b4
fix(233): NT-02 log the persistent-failure ERROR once on the threshol…
Jul 5, 2026
3939305
fix(233): LW-01 use const for the backoff timer handle (prefer-const)
Jul 5, 2026
ebe7a24
test(234-01): add retryable disposition + defensive Retry-After parse…
Jul 5, 2026
fed65f2
feat(234-01): add retryable disposition + defensive Retry-After parse
Jul 5, 2026
408c54b
test(234-01): add per-space send-pacer determinism + abort-awareness …
Jul 5, 2026
1d99870
feat(234-01): add per-space send pacer (createSendPacer)
Jul 5, 2026
de924c9
test(234-02): assert mapper dual-sets generic metadata.threadId
Jul 5, 2026
acaefbc
feat(234-02): mapper dual-sets generic metadata.threadId for threaded…
Jul 5, 2026
bcf9ef8
test(234-02): assert sendMessage threads the request from options.thr…
Jul 5, 2026
07610ee
feat(234-02): sendMessage threads the request from options.threadId
Jul 5, 2026
d649069
test(234-03): assert sendMessage paces per space and stop() cancels a…
Jul 5, 2026
8c04bc4
feat(234-03): pace sendMessage per space through the write pacer
Jul 5, 2026
67465da
test(234-03): assert sendMessage auto-resends on 429 only, clamped an…
Jul 5, 2026
87b65c5
feat(234-03): auto-resend sendMessage on 429 only, clamped and bounded
Jul 5, 2026
83f43b7
test(234-04): add failing editMessage patch + path-safety contract
Jul 5, 2026
7a4797a
feat(channels): googlechat editMessage in-place patch with path-safet…
Jul 5, 2026
093643f
test(234-04): add failing deleteMessage delete contract
Jul 5, 2026
666df17
feat(channels): googlechat deleteMessage removes the bot's own message
Jul 5, 2026
967b279
test(channels): googlechat reconcile ledger-dedup restart + inbound-o…
Jul 5, 2026
3140dc3
test(234-05): assert the flipped googlechat capability matrix + inver…
Jul 5, 2026
4c1793d
feat(234-05): advertise googlechat editMessages/deleteMessages/threads
Jul 5, 2026
3465295
test(234): assert googlechat edit/delete reject query-string resource…
Jul 5, 2026
e64ee9f
fix(234): allowlist the googlechat resource-name charset so a pinned …
Jul 5, 2026
765d6d7
test(234): assert googlechat sendMessage rejects an unsafe channelId
Jul 5, 2026
483f6d8
fix(234): guard the agent-supplied channelId in googlechat sendMessage
Jul 5, 2026
7f52d99
test(234): assert stop() cancels a pending googlechat 429 retry backoff
Jul 5, 2026
7ab19dc
fix(234): make the googlechat 429 retry backoff abort-aware
Jul 5, 2026
723a92a
test(234): assert googlechat re-paces sends after a stop()->start() c…
Jul 5, 2026
b98a698
fix(234): refresh the googlechat send-abort controller on start()
Jul 5, 2026
fea2a7e
fix(234): default the googlechat pacer's clearTimeout in production
Jul 5, 2026
fe116d4
test(234): assert googlechat transport-fault ERRORs carry the underly…
Jul 5, 2026
22b9ad1
fix(234): attach the underlying err to googlechat transport-fault ERRORs
Jul 5, 2026
322aef5
refactor(234): rename the googlechat channel-id const to CHANNEL_ID
Jul 5, 2026
52e5031
docs(234): correct stale capability-matrix comment on the plugin
Jul 5, 2026
a4c5159
test(235-01): add failing rendered-function contract for googlechat c…
Jul 5, 2026
682e8a4
feat(235-01): add drift-proof googlechat rendered-function contract +…
Jul 5, 2026
4e06b65
test(235-01): add failing normalizeGoogleChatCardAction behavior cont…
Jul 5, 2026
b76949e
feat(235-01): implement pure normalizeGoogleChatCardAction
Jul 5, 2026
76f79ff
test(235-02): add failing test for cardsv2 buttons enum member
Jul 5, 2026
1e010e5
feat(235-02): add cardsv2 to the ChannelCapability buttons enum
Jul 5, 2026
b65e03d
test(235-03): add failing test for Google Chat cards v2 renderer
Jul 5, 2026
de5be66
feat(235-03): render Google Chat cards v2 from rich cards and buttons
Jul 5, 2026
7412c08
test(235-03): add failing test for Google Chat message-text formatter
Jul 5, 2026
a9874f2
feat(235-03): format Google Chat message text with a conservative esc…
Jul 5, 2026
26b95a6
test(235-04): add failing test for sendMessage cardsV2 attach + text …
Jul 5, 2026
2692acf
feat(235-04): attach cardsV2 to Google Chat sends and format message …
Jul 5, 2026
e4204ab
test(235-04): add failing test for editMessage cardsV2 field-mask patch
Jul 5, 2026
0afd8d7
feat(235-04): patch Google Chat cards in place via a pinned field-mask
Jul 5, 2026
3ccbe21
test(235-05): add failing CARD_CLICKED routing + default-deny tests
Jul 5, 2026
be4c344
feat(235-05): route CARD_CLICKED through the reused default-deny gate
Jul 5, 2026
0cf98be
test(235-05): pin googlechat buttons to "cardsv2"
Jul 5, 2026
7393b0c
feat(235-05): advertise googlechat buttons:"cardsv2"
Jul 5, 2026
804412c
test(235-06): add failing test for Google Chat EditPlace render-actions
Jul 5, 2026
83b2df1
feat(235-06): Google Chat EditPlace render-actions with terminal-gate…
Jul 5, 2026
d1835f4
test(235-06): add failing composition case for Google Chat EditPlace …
Jul 5, 2026
c2bd131
feat(235-06): register Google Chat in the EditPlace factory map (clos…
Jul 5, 2026
f0b5e40
fix(235): CR-01 send Chat message text verbatim (markdown field, not …
Jul 5, 2026
2b37264
fix(235): WR-01 attach structural status to Chat REST errors
Jul 5, 2026
eb59237
fix(235): IN-02 escape card button labels against the HTML subset
Jul 5, 2026
9bd2081
test(235): IN-03 lock the successLabel resolve-render coupling for re…
Jul 5, 2026
c7acd65
fix(235): IN-05 document the unreachable ignored card-drop branch
Jul 5, 2026
942c1e3
test(236-01): add failing happy-path test for the Google Chat media r…
Jul 5, 2026
3e9b24c
feat(236-01): createGoogleChatResolver — media.download over single-h…
Jul 5, 2026
d230683
test(236-01): add failing security + failure-branch tests for the res…
Jul 5, 2026
723f3bd
feat(236-01): harden the Google Chat media resolver
Jul 5, 2026
8fefe60
test(236-02): add failing tests for extractGoogleChatAttachments + at…
Jul 5, 2026
379647d
feat(236-02): surface inbound attachments via a pure extractGoogleCha…
Jul 5, 2026
ba7ef57
test(236-02): add failing tests for the adapter Drive-picker skip WARN
Jul 5, 2026
4989a22
feat(236-02): emit an honest Drive-picker skip WARN in handleChatEvent
Jul 5, 2026
081fac5
test(236-03): add failing test for GoogleChatPluginHandle.createResol…
Jul 5, 2026
03375ba
feat(236-03): widen googlechat plugin to GoogleChatPluginHandle with …
Jul 5, 2026
356098b
test(236-04): add failing test for the googlechat resolver registrati…
Jul 6, 2026
c5759e8
feat(236-04): register the googlechat resolver in buildMediaPipeline
Jul 6, 2026
4e56e0a
feat(236-04): thread the GoogleChatPluginHandle through the adapter b…
Jul 6, 2026
fd18697
test(236-04): expose createGoogleChatActivityRenderer on the registry…
Jul 6, 2026
04c7002
chore(236-04): audit-stamp MediaPipelineDeps optional-field count
Jul 6, 2026
d772889
fix(236): guard non-array message.attachment/annotations in the Chat …
Jul 6, 2026
fa737c9
fix(236): aggregate Google Chat Drive-skip WARN to one per message
Jul 6, 2026
5a4894c
test(236): pin encoded-traversal/separator rejection in the Chat medi…
Jul 6, 2026
0d5b37e
test(237-01): add failing inbound project-number verifier tests
Jul 6, 2026
95bdf60
feat(237-01): inbound dual-audience JWT verifier — project-number branch
Jul 6, 2026
6a874c8
test(237-01): add failing app-url sender-binding + offline-seam tests
Jul 6, 2026
ba16835
feat(237-01): app-url sender-binding + offline verifier + barrel export
Jul 6, 2026
8a08545
test(237-02): add failing test for Google Chat ingress gate order + o…
Jul 6, 2026
d8b3d30
feat(237-02): createGoogleChatIngress — Hono sub-app over injected deps
Jul 6, 2026
f0dfadd
feat(237-02): barrel-export createGoogleChatIngress + import-hygiene …
Jul 6, 2026
fa93ee9
test(237-03): webhook-mode start() skips the pull loop, keeps the SA-…
Jul 6, 2026
60fdd4a
feat(237-03): fork Google Chat start() on transport mode
Jul 6, 2026
e8871e0
test(237-03): getStatus() reports connectionMode 'webhook' in webhook…
Jul 6, 2026
d867c88
feat(237-03): report connectionMode 'webhook' in webhook mode
Jul 6, 2026
ff2c01a
test(237-04): missed-inbound liveness arms per webhook channelType
Jul 6, 2026
63b2e5c
feat(237-04): resolve missed-inbound liveness per webhook channelType
Jul 6, 2026
a85cedd
test(237-05): resolveTestGoogleChatVerifier default path returns the …
Jul 6, 2026
b660f65
feat(237-05): resolveTestGoogleChatVerifier default remote-JWKS path
Jul 6, 2026
adcd307
test(237-05): local-JWKS seam does a full offline verify + content-fr…
Jul 6, 2026
bb08093
feat(237-05): local-JWKS seam does a full offline verify + activation…
Jul 6, 2026
a2d0e0b
test(237-06): googlechat webhook branch builds the ingress + drives h…
Jul 6, 2026
9912da6
feat(237-06): build googlechat webhook ingress with injected verify +…
Jul 6, 2026
0b1e904
test(237-06): setupChannels forwards the googlechat webhook ingress f…
Jul 6, 2026
83be257
feat(237-06): thread googlechatIngress out of setupChannels alongside…
Jul 6, 2026
f64b0bd
chore(237-06): shrink createGoogleChatIngress out of the ahead-of-con…
Jul 6, 2026
19500b1
test(237-07): add failing test for /channels/googlechat mount
Jul 6, 2026
079cad0
feat(237-07): mount /channels/googlechat when the ingress is threaded
Jul 6, 2026
a4ed506
test(237-07): add failing forwarding test for googlechatIngress thread
Jul 6, 2026
a3bc7c7
feat(237-07): thread googlechatIngress end-to-end from setupChannels …
Jul 6, 2026
ac2d345
docs(237-08): document Google Chat webhook mode as shipped + the COMI…
Jul 6, 2026
c22a978
docs(237-08): add the Google Chat webhook public-endpoint note to def…
Jul 6, 2026
13a2c3b
docs(237-08): drop the stale "transport not wired yet" comment on the…
Jul 6, 2026
ce297b7
test(237): failing tests for mode-aware googlechat credential validation
Jul 6, 2026
a1db092
fix(237): make googlechat credential validator mode-aware
Jul 6, 2026
d4ad75a
test(237): failing test for contained googlechat webhook dispatch
Jul 6, 2026
f90dcbb
fix(237): contain googlechat webhook dispatch rejections
Jul 6, 2026
87536ee
test(237): failing tests for the googlechat test-seam JWKS read guard
Jul 6, 2026
424e6bc
fix(237): guard the googlechat test-seam JWKS read against a bad file
Jul 6, 2026
03e1e04
refactor(237): derive the liveness webhook-channel set from a single …
Jul 6, 2026
5a4bac5
fix(237): state the absent-mode default without version framing
Jul 6, 2026
546206e
docs(238-01): add the Google Chat channel runbook
Jul 6, 2026
922364c
docs(238-01): reconcile the Google Chat reference docs + cross-link t…
Jul 6, 2026
305be3a
docs(238-02): add Google Chat to channel index, media, faq, and packa…
Jul 6, 2026
17a6d5c
docs(238-02): cross-link Google Chat and bump channel-count card 10->…
Jul 6, 2026
92d3b4f
docs(238-02): bump user-facing channel-count prose 10->11
Jul 6, 2026
4ea6dd2
test(238-03): pin channel-count guard to 11 + require Google Chat
Jul 6, 2026
9f57514
feat(238-03): state 11 channels incl. Google Chat in facts.ts
Jul 6, 2026
25f563d
test(238-04): add failing googlechat wizard enumeration + init-option…
Jul 6, 2026
6ec6e39
feat(238-04): wire googlechat into wizard enumeration, credential val…
Jul 6, 2026
f0ed6e2
test(238-04): add failing googlechat interactive + write-path + non-i…
Jul 6, 2026
fa34e18
feat(238-04): implement googlechat interactive prompt, write-path, an…
Jul 6, 2026
36e61ef
test(238-05): add failing WARN test for inert groupActivation on Goog…
Jul 6, 2026
7383af2
feat(238-05): WARN on inert "always" groupActivation for Google Chat
Jul 6, 2026
a945e50
test(238-05): assert the daemon threads groupActivation into the vali…
Jul 6, 2026
1196eb5
feat(238-05): thread global groupActivation into the googlechat valid…
Jul 6, 2026
a50fb21
test(238-05): add failing tests for the off-by-default egress seam
Jul 6, 2026
b147ec5
feat(238-05): add off-by-default Google Chat outbound egress seam
Jul 6, 2026
65b7a6d
test(238-06): add failing four-probe test for googlechat doctor check
Jul 6, 2026
7a5b743
feat(238-06): add self-contained googlechat doctor check + register
Jul 6, 2026
5c573ae
test(238-07): failing caps + payloads unit tests for the Google Chat …
Jul 6, 2026
d8293f0
feat(238-07): Google Chat emulator caps + interaction-event builders
Jul 6, 2026
4f01293
test(238-07): failing unit test for the Google Chat wire emulator
Jul 6, 2026
c7da9cd
feat(238-07): the Google Chat wire emulator (token + Pub/Sub + Chat R…
Jul 6, 2026
d7de4e9
test(238-07): offline scenario drives the REAL Google Chat adapter (t…
Jul 6, 2026
0bec2d4
feat(238-08): Google Chat self-driving rig — emulator launcher + hybr…
Jul 6, 2026
340f098
test(238-08): add failing unit test for the Google Chat ChannelPort d…
Jul 6, 2026
8d6a982
feat(238-08): add deterministic Google Chat ChannelPort double
Jul 6, 2026
37801c7
fix(238-09): audit-stamp the wizard ChannelConfig optional-field count
Jul 6, 2026
4eb5db5
test(238): real .env round-trip proves multi-line Google Chat SA key …
Jul 6, 2026
ec061a5
fix(238): compact Google Chat SA key to single-line JSON so the plain…
Jul 6, 2026
8c73e16
fix(238): assert an opaque 401 in the Google Chat self-drive SEC probe
Jul 6, 2026
e8f5a5f
test(238): --googlechat-sa-key path must resolve to key contents in n…
Jul 6, 2026
1adffd6
fix(238): resolve --googlechat-sa-key file path in the non-interactiv…
Jul 6, 2026
f37f104
fix(238): correct the channel-step module doc (channel count and IRC)
Jul 6, 2026
b4844d5
fix(v2.33): capture Google Chat webhook audienceType in the interacti…
Jul 6, 2026
4e5f53d
fix(v2.33): add --googlechat-audience-type flag for non-interactive p…
Jul 6, 2026
cafe5de
fix(v2.33): cover the audienceType write path fed by the wizard
Jul 6, 2026
dda56ac
fix(v2.33): WARN when Google Chat webhook audience shape contradicts …
Jul 6, 2026
9af6a1e
fix(v2.33): thread googlechat audienceType into the boot-time credent…
Jul 6, 2026
55981d6
fix(v2.33): cross-check webhook audience shape vs audienceType in com…
Jul 6, 2026
7df266c
Merge remote-tracking branch 'origin/main' into feature/v2.33-google-…
Jul 7, 2026
6959c75
test(core): secrets audit must flag plaintext googlechat serviceAccou…
Jul 7, 2026
6913f73
fix(core): recognize googlechat serviceAccountKey in the secret-detec…
Jul 7, 2026
36694f9
test(daemon): googlechat must appear in the targeted-reconnect creden…
Jul 7, 2026
8a027ad
fix(daemon): map GOOGLECHAT_SA_KEY to googlechat for targeted reconnect
Jul 7, 2026
47583da
test(cli): comis doctor must surface the inert "always" groupActivati…
Jul 7, 2026
d3c95a7
fix(cli): add the inert-groupActivation probe to the Google Chat doct…
Jul 7, 2026
3786260
fix(orchestrator): admit googlechat to the dead-letter ChannelType union
Jul 7, 2026
a17f227
test(architecture): drop GoogleChatAdapterHandle from the no-consumer…
Jul 7, 2026
8134a45
docs(cli): document the googlechat and msteams init flags in the Chan…
Jul 7, 2026
085735a
Merge remote-tracking branch 'origin/main' into feature/v2.33-google-…
Jul 13, 2026
5e8c8e1
Merge remote-tracking branch 'origin/main' into feature/v2.33-google-…
Jul 14, 2026
6b7aac2
test(daemon): 30s timeouts on cold-import wiring tests so coverage-st…
Jul 14, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/agent-tools/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,7 @@ The available actions vary by platform. See the [Platform Actions](/agent-tools/

## Channel Messaging Capability Matrix

The `message` tool works across all 10 connected channels, but not every action is supported everywhere. The matrix below summarizes per-channel capabilities -- consult the [Channels Overview](/channels/index) for full per-channel detail.
The `message` tool works across all 11 connected channels, but not every action is supported everywhere. The matrix below summarizes per-channel capabilities -- consult the [Channels Overview](/channels/index) for full per-channel detail.

| Channel | Send | Reply | React | Edit | Delete | Fetch History | Threads | Streaming |
|---------|------|-------|-------|------|--------|--------------|---------|-----------|
Expand Down
5 changes: 4 additions & 1 deletion docs/channels/delivery.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -684,8 +684,11 @@ Each channel can override any of the default settings through the `perChannel`
section. Options not specified in `perChannel` fall back to the defaults above.

<CardGroup cols={2}>
<Card title="Google Chat" icon="google" href="/channels/googlechat">
Spaces, DMs, threads, and Cards v2 over Pub/Sub or webhook.
</Card>
<Card title="All Channels" icon="message-dots" href="/channels">
Compare all 10 supported platforms side by side.
Compare all 11 supported platforms side by side.
</Card>
<Card title="Plugins" icon="puzzle-piece" href="/developer-guide/plugins">
Hook registration and plugin development.
Expand Down
5 changes: 4 additions & 1 deletion docs/channels/discord.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -277,8 +277,11 @@ A start-to-finish run for a fresh server bot named **MyTeamBot**:
<Card title="Multiple users & teams" icon="users" href="/channels/multi-user">
Run one install for a whole team - private per person, isolated per agent.
</Card>
<Card title="Google Chat" icon="google" href="/channels/googlechat">
Spaces, DMs, threads, and Cards v2 over Pub/Sub or webhook.
</Card>
<Card title="All Channels" icon="message-dots" href="/channels">
Compare all 10 supported platforms side by side.
Compare all 11 supported platforms side by side.
</Card>
<Card title="Agent Configuration" icon="robot" href="/agents">
Set up your agent's personality, tools, and behavior.
Expand Down
5 changes: 4 additions & 1 deletion docs/channels/email.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -337,8 +337,11 @@ A start-to-finish run for a Gmail mailbox `bot@your-team.com`:
<Card title="Multiple users & teams" icon="users" href="/channels/multi-user">
Run one install for a whole team - private per person, isolated per agent.
</Card>
<Card title="Google Chat" icon="google" href="/channels/googlechat">
Spaces, DMs, threads, and Cards v2 over Pub/Sub or webhook.
</Card>
<Card title="All Channels" icon="message-dots" href="/channels">
Compare all 10 supported platforms side by side.
Compare all 11 supported platforms side by side.
</Card>
<Card title="Agent Configuration" icon="robot" href="/agents">
Set up your agent's personality, tools, and behavior.
Expand Down
Loading
Loading