Peter Steinberger and GitHub
0adc2cf606
refactor(media): consolidate parallel media-kind unions onto canonical MediaKind ( #112063 )
...
* refactor(media): consolidate parallel media-kind unions onto canonical MediaKind
One canonical MediaKind union (media-core constants) replaces ~40
duplicate/parallel kind declarations across core and channel plugins;
channel-specific narrower contracts derive via Extract/Exclude. Also
fixes a review-caught fallback bug where a stored "unknown" reply-chain
kind preempted MIME inference and relabeled images as documents.
* refactor(ui): derive attachment kinds from MediaKind
* fix(telegram): drop type-dead unknown guard in reply-context kind fallback
* style(telegram): format media kind fallback
2026-07-20 22:27:22 -07:00
e1ca392dfb
fix(qqbot): avoid memory spikes from oversized client secret files ( #110002 )
...
* fix(qqbot): reject oversized client secret files
* test(qqbot): derive oversized fixture from shared limit
* test(qqbot): track credential fixtures for cleanup
* fix(qqbot): keep tests inside plugin boundary
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-20 19:00:28 -07:00
Monkey-wusky and GitHub
17643f3850
fix(qqbot): cancel non-OK direct-upload response body before throwing ( #110008 )
2026-07-20 18:54:12 -07:00
Peter Steinberger and GitHub
c7e7ac2728
refactor: remove expired plugin compatibility surfaces ( #111451 )
...
* docs(secrets): remove retired web credential paths
* refactor(web): remove retired provider compatibility paths
* refactor(providers): delete retired compatibility routes
* refactor(secrets): remove retired credential aliases
* refactor(plugin-sdk): delete retired compatibility surfaces
* docs(plugin-sdk): remove retired migration guidance
* chore(plugin-sdk): refresh rebased surface budgets
* chore(plugin-sdk): refresh API removal baseline
* refactor(compat): migrate retired internal callers
* chore(plugin-sdk): refresh current-main baselines
* test(config): migrate plugin-owned secret assertions
* test(gateway): narrow plugin secret refs
* fix(plugin-sdk): preserve private boundary type identity
* chore(compat): remove stale sweep references
* chore(lint): lower max-lines budget
* refactor(secrets): remove unused web helper
* build(plugin-sdk): drop removed compat entries
* chore(plugin-sdk): refresh rebased API baseline
* chore(plugin-sdk): use Linux API baseline hash
* fix(plugin-sdk): preserve private bundled build entries
* fix(plugin-sdk): package private runtime facades
* fix(plugins): preserve external credential contracts
2026-07-19 11:04:48 -07:00
Peter Steinberger and GitHub
ee0e3a4d47
refactor(channels): share durable ingress monitor ( #111214 )
...
* refactor(telegram): share durable ingress monitor
* refactor(whatsapp): share durable ingress monitor
* refactor(feishu): share durable ingress monitor
* refactor(qqbot): share durable ingress monitor
* refactor(zalouser): share durable ingress monitor
* refactor(nostr): share durable ingress monitor
2026-07-18 23:33:24 -07:00
Peter Steinberger and GitHub
264a7b0d12
refactor(channels): consolidate manifest descriptors ( #110985 )
2026-07-18 23:18:28 +01:00
Peter Steinberger and GitHub
2438a9cc3c
fix(qqbot): guard storage clear ingress effects ( #110904 )
2026-07-18 20:08:08 +01:00
Peter Steinberger and GitHub
8d89ddd8c2
feat(qqbot): preserve inbound messages through gateway restarts ( #110844 )
...
* feat(qqbot): add durable ingress drain
* docs(qqbot): document command replay window
* fix(qqbot): harden ingress settlement cleanup
* fix(qqbot): serialize ingress timeout settlement
* fix(qqbot): satisfy ingress CI guards
* fix(qqbot): satisfy ingress type gates
2026-07-18 18:35:28 +01:00
Peter Steinberger and GitHub
31ed59bdf6
feat: keep main agents aware of group activity ( #110332 )
...
* feat(sessions): auto-watch group activity from main
* feat(sessions): allow watchers to read watched sessions
* fix(sessions): skip group watches for system turns
* fix(sessions): preserve watched session semantics
* fix(channels): propagate effective dm scope
* fix(sessions): canonicalize main watch identity
* fix(sessions): distinguish ambient group watches
* fix(sessions): revoke ineligible ambient watches
* chore: drop CHANGELOG edit (release generation owns it)
2026-07-18 04:06:58 +01:00
dcd8f962e3
fix(qqbot): add timeouts to API response reads ( #103855 )
...
* fix(qqbot): add timeouts to API response reads
* fix(qqbot): use guarded request deadlines
---------
Co-authored-by: Alix-007 <li.long15@xydigit.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-18 02:06:09 +01:00
Peter Steinberger and GitHub
601ffa2530
refactor(channels): move inbound turn execution into core ( #110095 )
...
* refactor(channels): centralize turn execution lifecycle
* refactor(extensions): adopt core channel turn plans
* test(channels): ratchet modern dispatch ownership
* chore(channels): drop stale max-lines exemption
* fix(channels): allow async delivery error cleanup
* test(channels): await async delivery cleanup
* test(channels): await delivery error callbacks
* fix(channels): preserve delivery error contract
* fix(plugin-sdk): preserve channel inbound declarations
* test(channels): exercise core delivery plans
* fix(channels): await delivery error cleanup
* fix(channels): preserve async cleanup contract
* refactor(channels): trim dispatch boilerplate
* fix(channels): mask observe-only dispatch results
* refactor(channels): delete unused dispatch exports
* fix(msteams): preserve resolver config overrides
* refactor(channels): keep Teams turn config internal
* test(plugins): drop retired Teams runtime export guard
2026-07-18 00:55:46 +01:00
Peter Steinberger
f341a013af
test(release): repair plugin prerelease coverage
2026-07-17 13:43:12 +01:00
Peter Steinberger and GitHub
9b5eb04221
improve(tests): tighten async polling across suites ( #109919 )
...
* test: tighten signal delivery polling
* test: tighten async polling across suites
* test: use virtual time for signal ingress drain
2026-07-17 12:20:58 +01:00
Peter Steinberger and GitHub
0e792b6de3
refactor(channels): centralize inbound orchestration and remove internal compat ( #109716 )
...
* refactor(channels): centralize inbound turn orchestration
* refactor(runtime): remove stale compatibility paths
* chore(guards): reject internal deprecated API use
* refactor(channels): simplify core turn planning
* chore(guards): keep deprecated checks boundary-focused
* refactor(memory): keep modern config off compat barrel
* fix(msteams): preserve feedback learning
* test(channels): align modern inbound fixtures
* refactor(channels): finish modern inbound migration
* refactor(channels): tighten core inbound kernel
* fix(channels): preserve turn assembly narrowing
* test(sdk): keep runtime mock binding immutable
* test(matrix): isolate read policy runtime
* test(msteams): mock canonical reply factory
* test(slack): mock core inbound turn dispatch
* test(telegram): inject core session recorder
* test(signal): inject core session recorder
* test(googlechat): assert canonical inbound routing
* test(synology-chat): align core turn fixture
* fix(sdk): preserve direct DM runtime compat
* refactor(channels): own inbound envelope compat in core
* refactor(channels): trim inbound dispatch seams
* refactor(channels): remove redundant async wrappers
* test(synology-chat): type canonical dispatcher mock
* refactor(channels): remove remaining dead compat seams
* chore(sdk): refresh API baseline after rebase
* fix(channels): preserve direct DM identity metadata
2026-07-17 00:56:46 -07:00
a7aa85293e
fix(qqbot): stop misrouting mixed-case group/channel targets to the C2C API ( #109008 )
...
* fix(qqbot): accept mixed-case type tags in target parser
* refactor(qqbot): centralize target type parsing
Co-authored-by: 潘晓波0668000512 <pan.xiaobo@xydigit.com >
* style(qqbot): format target parser
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-16 22:25:03 -07:00
Peter Steinberger and GitHub
96815a437b
fix(channels): centralize access gates and media fallback ( #109548 )
...
* refactor(channels): shared supplemental sender gating, allowlist-match adoption, outbound mop-ups
* fix(plugin-sdk): skip-aware media sequence with text fallback for empty URLs
* chore(plugin-sdk): align surface budgets after rebase
* test(qqbot): type media sender mock calls
* fix(plugin-sdk): distinguish empty media sequences
* fix(plugin-sdk): track void media sends
2026-07-16 20:55:08 -07:00
Peter Steinberger and GitHub
0a19e1ed58
refactor(channels): centralize mention and group activation decisions ( #109480 )
...
* refactor(channels): adopt shared mention-gate decision; consolidate group activation
* fix(matrix): carry effective mention decision
* test(session): pin qqbot accessor migration
2026-07-16 18:15:58 -07:00
3f89aae98d
fix(qqbot): bound tail log reads to actual bytes returned by fs.readSync ( #108955 )
...
* fix(qqbot): bound tail log reads to actual bytes returned by fs.readSync
* fix(qqbot): satisfy knip deadcode check for testing export
Add __testing re-export and test-api.ts barrel so knip traces the testing export through a recognized entry point.
* fix(qqbot): restore testing export alongside __testing re-export
Both exports are needed: testing for proof scripts, __testing for knip tracing.
* fix(qqbot): remove unused __testing re-export from log-helpers
test-api.ts already imports testing and re-exports as __testing. The extra re-export in log-helpers.ts was unused by production code.
* fix(qqbot): retry short log tail reads
* test(qqbot): keep short-read seam private
Co-authored-by: RileyJJY <100176083+RileyJJY@users.noreply.github.com >
* test(qqbot): exercise short reads through log export
Co-authored-by: RileyJJY <0668000974@xydigit.com >
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
Co-authored-by: RileyJJY <100176083+RileyJJY@users.noreply.github.com >
2026-07-16 12:12:46 -07:00
Peter Steinberger and GitHub
44314c9451
refactor(channels): table-drive setup and control-plane helpers ( #109028 )
...
* refactor(channels): table-drive setup credentials, config schemas, doctor detectors, status issues
* refactor(channels): control-plane tables (rest)
* fix(plugin-sdk): refresh surface budgets after rebase
* style(plugin-sdk): format credential helpers
* fix(channels): preserve generic schema refinement types
* fix(channels): preserve schema input and output inference
* fix(clickclack): forward credential patch fields
* test(plugin-sdk): use redacted credential fixtures
* fix(plugin-sdk): refresh API baseline after inference fix
* fix(channels): keep multi-account envelope optional
* fix(channels): preserve policy validation invariants
* fix(extensions): remove stale awaits from file checks
* style(qqbot): format synchronous file check
* fix(config): refresh bundled channel metadata
* fix(qqbot): reject unsupported pairing policy
2026-07-16 07:17:01 -07:00
93c1543efc
fix(qqbot): bound channel API response reads ( #108895 )
...
* fix(qqbot): bound channel API response reads
* refactor(qqbot): centralize channel API cleanup
Co-authored-by: Alix-007 <li.long15@xydigit.com >
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-16 04:04:24 -07:00
Peter Steinberger and GitHub
66604df9b6
refactor(channels): share retry helpers and remove dead state probes ( #108903 )
...
* refactor(channels): generalize channel retry runner and retry-after parsing; drop dead configured-state probes
* fix(channels): align retry and metadata contracts
2026-07-16 04:03:15 -07:00
Peter Steinberger and GitHub
dde90a345a
refactor(plugin-sdk): narrow wildcard barrels to explicit used exports ( #108440 )
...
* refactor(plugin-sdk): narrow wildcard barrels to explicit used exports
* refactor(tools): delete dead tool-planning module exposed by barrel narrowing
* fix(plugin-sdk): restore deprecation tag on OpenClawSchemaType alias
* test(agents): drop test for deleted runtime proxy module
* refactor(tools): trim descriptor types to cache consumers
* refactor(deadcode): harvest exports orphaned by barrel narrowing
* refactor(deadcode): harvest exports orphaned by barrel narrowing (rest)
* fix(agents): restore sdk imports and test markers via public predicate
* fix(plugin-sdk): named type re-exports in plugin-entry; trim types barrel precisely
* chore(plugin-sdk): account unmasked deprecated provider types in budgets
* fix(plugins): name star-only type rows for dts bundling
* fix(plugins): restore host-hook surface; unexport internal api compositions
* fix(plugins): named type imports for api composition; restore needed source exports
* fix(plugins): knip-visible type imports for registry surfaces
* test: adapt tests to privatized media and command internals
* fix(qa-lab): re-export snapshot conversation type
* style: format sessions sdk imports
* fix(plugins): restore smoke entry export; pin budgets to exact actuals
* fix(plugins): canonical smoke-entry import; drop orphaned root shims
* fix(plugins): allowlist manifest probe, repoint qa web import, drop dead browser barrels
* fix(plugin-sdk): pin codex auth marker and scaffold provider type
* fix(qa-lab): keep web-facing model-selection shim within boundary rules
* fix(plugin-sdk): preserve merged contracts through narrowed barrels
* chore(plugin-sdk): pin post-rebase surface budgets
2026-07-16 00:45:23 -07:00
Peter Steinberger and GitHub
bae9752c5a
refactor(deadcode): enforce repository hard zero ( #108641 )
2026-07-15 22:40:00 -07:00
Peter Steinberger and GitHub
5579f009fb
refactor(channels): converge internal group-policy drift onto the scope tree ( #107865 )
...
* refactor(channels): converge internal group-policy drift onto the scope tree
* chore(plugin-sdk): refresh API baseline hash for scope-key exports
* fix(config): avoid shadowing the scopeKey export in the case-insensitive lookup
2026-07-14 18:30:04 -07:00
f3c5e6880e
fix(qqbot): bound gateway websocket handshake waits at 30s ( #106484 )
...
* fix(qqbot): bound gateway websocket handshake waits at 30s
* test(qqbot): replace source-inspection handshake coverage
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-14 14:23:52 -07:00
Peter Steinberger
a6a0716486
feat(setup): rename Crestodian to OpenClaw system agent
...
User-facing name is now OpenClaw (the system speaks); internal code name is
system-agent. Gateway methods crestodian.* -> openclaw.chat/openclaw.setup.*,
agent tool -> openclaw, reserved agent ids openclaw + retired crestodian.
openclaw setup routes: onboarding flags -> onboard, -m/--yes -> system agent,
bare configured interactive -> OpenClaw chat, unconfigured -> onboarding.
Hidden crestodian CLI and /crestodian TUI aliases kept; docs moved to
docs/cli/openclaw.md with redirect stub. macOS/Android strings in lockstep.
Refs #107237
2026-07-14 11:03:02 -07:00
Peter Steinberger and GitHub
f81f9d8570
chore: enforce max-lines suppression ratchet ( #107315 )
...
* ci: enforce max-lines suppression ratchet
* chore: prune stale max-lines suppression
* fix: close max-lines ratchet enforcement gaps
* fix: harden max-lines ratchet checks
* fix(ci): satisfy max-lines ratchet checks
* style: format max-lines declarations
* fix(ci): match oxlint suppression grammar
* test: isolate max-lines git fixtures
* chore: prune resolved max-lines debt
* test: skip newline path fixture on Windows
* fix: harden max-lines suppression ratchet
* chore: refresh max-lines baseline
* fix: close max-lines ratchet bypasses
* fix: derive ratchet base from PR merge tree
* fix: support older Git in staged ratchet
* fix: align max-lines declarations and baseline
* chore: refresh max-lines baseline for current main
* fix: exclude generated wizard locales from max-lines
* chore: prune resolved max-lines debt
2026-07-14 09:27:02 -07:00
1d1c1211a5
fix(qqbot): clean up token refresh sleep abort listener ( #105886 )
...
* fix(qqbot): clean up token refresh sleep abort listener
* refactor(qqbot): reuse abort-safe sleep
* test(qqbot): always restore listener spy
* fix(qqbot): preserve refresh loop yield
* chore(qqbot): retrigger CI after main fixes
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-14 05:40:34 -07:00
Peter Steinberger
16ff48c729
refactor(time): trust pretty-ms defaults
2026-07-14 01:15:43 -07:00
Peter Steinberger
21382b3755
refactor(qqbot): use silk-wasm buffer inputs
2026-07-13 23:19:54 -07:00
Peter Steinberger and GitHub
b9c4815403
refactor(config): add canonical group-policy scope-tree resolver and migrate the first six channels ( #106846 )
...
* feat(config): add canonical group-policy scope-tree resolver
* chore(plugin-sdk): refresh API baseline hash for scope-tree exports
* refactor(channels): migrate googlechat, imessage, and whatsapp group policy onto the scope tree
* chore(plugin-sdk): refresh API baseline hash for groups scope-tree builder
* refactor(channels): migrate line, qqbot, and mattermost group policy onto the scope tree
* chore(plugin-sdk): refresh API baseline hash for case-insensitive scope key helper
* chore(plugin-sdk): refresh API baseline hash after rebase onto current main
* chore(plugin-sdk): refresh API baseline hash after rebase
* chore(plugin-sdk): refresh API baseline hash after rebase
* chore(plugin-sdk): refresh API baseline hash after rebase
2026-07-13 18:24:52 -07:00
Peter Steinberger
35a02653c8
refactor(qqbot): remove unused exports
2026-07-13 12:44:33 -07:00
676d3f0230
fix(qqbot): clear voice send timeouts after delivery settles ( #105885 )
...
* fix(qqbot): clear voice send timeouts after delivery settles
* chore(deadcode): allowlist test-only timeout constant exports
* test(qqbot): cover timeout race lifecycle
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-13 11:16:18 -07:00
Peter Steinberger and GitHub
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 and GitHub
1136757174
refactor: consolidate bounded concurrency on p-limit and p-map ( #106002 )
...
* refactor: adopt p-limit and p-map for bounded concurrency
* chore: normalize lockfile ordering
* fix: preserve memory host concurrency export
* refactor: keep media apply within size budget
* fix: drain memory concurrency before failure
* fix: satisfy memory concurrency guards
* chore: scope memory host dead-code checks
* chore: lower concurrency LOC baselines
* fix: preserve concurrency API surfaces
* chore: reconcile concurrency LOC baseline
* test: keep memory concurrency gate portable
* style: simplify concurrency drain
* ci: refresh deadcode export baseline
2026-07-13 01:53:28 -07:00
Peter Steinberger and GitHub
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
Peter Steinberger and GitHub
adf6b08ab4
refactor: consolidate duration parsing and formatting ( #105988 )
...
* refactor: consolidate duration handling
* docs: leave release notes to release workflow
* fix: preserve build timing precision
* ci: align plugin sdk surface budgets
2026-07-12 23:38:22 -07:00
Peter Steinberger and GitHub
0d90ca6b5d
refactor(config): retire flat and scalar streaming keys from matrix, feishu, and qqbot ( #105808 )
...
* feat(doctor): migrate legacy matrix/feishu/qqbot streaming spellings to nested config
* test(matrix): shorten setup fixture tokens below the review secret-scanner threshold
* refactor(config): retire flat/scalar streaming keys from matrix, feishu, and qqbot
* docs: describe nested-only streaming config for matrix, feishu, and qqbot
* fix(qa-matrix): compose nested streaming config for the matrix QA harness
* test(feishu): compose negative webhook fixtures outside the GHSA opengrep pattern
* docs: refresh generated docs map
* test(feishu): compose negative webhook fixtures from lint-clean bases outside the GHSA opengrep pattern
* fix(qa-lab): rewrite crabline flat streaming config into the nested channel shape
* chore(config): regenerate channel config metadata and plugin-sdk API baseline for nested-only streaming
* chore(plugin-sdk): absorb main-side deprecated pairing/conversation pin drift
* fix(qa-lab): consume Crabline nested streaming config
2026-07-12 20:33:14 -07:00
Peter Steinberger and GitHub
d49acffa5e
refactor(infra): consolidate retry scheduling ( #105789 )
...
* refactor(infra): consolidate retry scheduling
* fix(build): wire shared retry package
* fix(build): resolve retry package in source graphs
* fix(infra): keep retry adapter dependency-free
2026-07-12 19:58:55 -07:00
c93f87756a
fix(qqbot): reject unsafe mention patterns ( #102976 )
...
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-12 18:14:01 -07:00
2f3517c73f
fix(qqbot): add timeout to remote media URL fetches ( #103018 )
...
* fix(qqbot): add timeout to remote media URL fetches
* fix(qqbot): use response header media timeout
---------
Co-authored-by: llagy009 <0668001470@xydigit.com >
2026-07-12 11:53:00 -04:00
Peter Steinberger and GitHub
81941f2d68
test: enable noUncheckedIndexedAccess for extension tests ( #105343 )
2026-07-12 12:48:22 +01:00
Peter Steinberger and GitHub
218dcd815a
feat(tooling): enforce noUncheckedIndexedAccess in the extensions lane (NUIA phase 4) ( #105132 )
...
* fix(extensions): make indexed access explicit across channel plugins
Transport-payload-safe burn-down: malformed Telegram/Discord/QQ/LINE
and sibling channel input keeps existing skip paths; no synthesized
fields, no new throws in delivery loops. Zalo escape sentinels preserve
literal matches instead of undefined replacements.
* fix(extensions): make indexed access explicit across provider and memory plugins
Stream and model iteration, tool-block guards, capture guards, and
sparse accumulators; singleton model reads carry named invariants.
* fix(extensions): make indexed access explicit across tooling plugins, flip the extensions lane
Remaining plugins (oc-path, qa-lab, browser, logbook, and siblings) plus
the tsconfig.extensions.json flag flip. Cleanup: logbook sampleFrames
NaN index at max=1, QA retry clamp at non-positive attempts, dead Canvas
probe and OpenShell no-op slice removed, twitch test setup leak excluded
from the prod lane.
* refactor(plugin-sdk): expose expectDefined via a focused SDK subpath
Extensions imported @openclaw/normalization-core directly, crossing the
external-plugin packaging boundary (it only worked because the runtime
builder bundles undeclared workspace helpers). expect-runtime joins the
canonical entrypoints JSON, generated exports, API baseline, docs, and
subpath contract test; all 78 extension imports now use the SDK seam.
Two scanner-shaped locals renamed for review-bundle hygiene.
* chore(plugin-sdk): raise surface budgets for the expect-runtime subpath
One new entrypoint with one callable export, added intentionally as the
packaging-honest seam for extension invariant helpers.
2026-07-12 09:17:31 +01:00
Peter Steinberger and GitHub
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
Peter Steinberger and GitHub
93e5b017bf
test(channels): trace-harness follow-ups — scenario names, fault vocabulary, lane sync guard ( #104653 )
2026-07-11 15:14:02 -07:00
Peter Steinberger and GitHub
76b8550afc
refactor(channels): migrate internal callers onto the message-access ingress engine ( #104647 )
2026-07-11 12:33:44 -07:00
Peter Steinberger and GitHub
1879980e52
fix(qqbot): share passive reply budget ( #104634 )
...
* fix(qqbot): share passive reply budget
* chore(qqbot): leave release notes to release flow
2026-07-11 12:10:24 -07:00
Peter Steinberger and GitHub
554f253cb0
test(qqbot): delivery trace goldens for replace-mode streaming and reply budget ( #104582 )
2026-07-11 10:54:15 -07:00
Peter Steinberger and GitHub
96f0983a85
fix(onboarding): skip setup for configured gateways and require inference first ( #102883 )
...
* fix(crestodian): keep onboarding RPCs restart-safe
* fix(profiles): isolate approval state migrations
* fix(crestodian): bypass configured gateway setup
* test(crestodian): type onboarding mocks
* fix(onboarding): require inference before Crestodian
* fix(onboarding): enforce verified inference handoff
* fix(macos): reset setup on gateway endpoint edits
* chore(i18n): refresh native source inventory
* fix(gateway): keep socket on request cancellation
* test(packaging): require workspace templates
* fix(onboarding): bind setup to verified inference
* fix(onboarding): align inference gate contracts
* fix(crestodian): classify concurrent policy rejection
* test(crestodian): expect registry restoration
* fix(onboarding): bind setup to configured gateways
* fix(codex): preserve startup phase deadlines
* test(crestodian): match fail-closed policy ordering
* test(onboarding): assert bound gateway handoff
* fix(codex): bind runtime resolution to spawn cwd
* test(crestodian): assert policy rejection order
* fix(cli): preserve gateway routing across restarts
* fix(macos): fail closed during gateway edits
* test(macos): cover gateway route generation races
* chore: keep release notes out of onboarding PR
* fix(ci): refresh onboarding generated checks
* style(swift): align gateway channel formatting
* fix(ci): refresh plugin SDK surface budgets
* fix(ci): resync native string inventory
* refactor(swift): split gateway channel support
* test(doctor): isolate plugin compatibility registry
* test(macos): isolate gateway onboarding fixtures
* test(macos): assert gateway lease health ordering
* fix(codex): reconcile computer-use startup changes
2026-07-11 10:25:14 -07:00
Peter Steinberger and GitHub
3f33f0bb5f
refactor(qqbot): adopt core typing keepalive loop with budget accounting intact ( #104438 )
...
* refactor(channels): adopt core typing keepalive loop
* chore(plugin-sdk): pin surface budget for typing keepalive re-export
2026-07-11 05:48:33 -07:00