Jason (Json)
aee46707ba
feat(plugins): support manifest-declared MCP Apps in native plugins ( #113224 )
...
* feat(plugins): load native manifest MCP servers
* fix(gateway): advertise proxied plugin surface ports
* fix(codex): retain MCP App transcript previews
* fix(codex): render native MCP apps inline
* fix(mcp-apps): resolve harness-native views by session
* fix(codex): normalize null MCP result metadata
* fix(ui): give inline MCP apps full message width
* test(codex): use generic native MCP App fixtures
* chore(plugin-sdk): refresh harness runtime baseline
* refactor(codex): isolate native MCP App contracts
* fix(codex): satisfy native app CI contracts
* fix(ci): scope automation app tokens
* chore(ci): defer token scopes to current main
2026-07-24 01:43:48 -06:00
joshavant
a325467557
fix(cron): preserve scheduled caps across CLI and worker upgrades
2026-07-24 01:24:03 -05:00
joshavant
8287e21445
fix(cron): enforce caps across CLI backends
2026-07-24 01:24:03 -05:00
joshavant
51c222904e
docs(plugins): document scheduled policy context
2026-07-24 01:24:03 -05:00
Vincent Koc
5ff16901ef
refactor(browser): reuse shared error coercion ( #113229 )
2026-07-24 13:58:29 +08:00
Peter Steinberger
3b7b2a2a1f
chore: update dependencies and migrate major contracts ( #112963 )
...
* build(deps): complete latest dependency migrations
* fix(deps): satisfy updated dependency types
* fix(deps): hold incompatible build tooling
* fix(deps): preserve portable tooling contracts
* build(deps): allow reviewed fresh transitive releases
* fix(deps): repair major upgrade validation
* build(deps): regenerate current dependency graph
* fix(logging): keep tslog adapter type private
* fix(agents): narrow grep subprocess handle
* fix(codex): prefer pinned managed binary
* fix(codex): fence managed native provenance
* build(deps): align codex ACP with managed harness
* fix(slack): use socket-mode Undici runtime
* fix(slack): detect cross-runtime responses
* fix(slack): bridge package-owned fetch types
* fix(deps): retain tslog v4 JSON contract
* build(plugin-sdk): refresh logging API manifest
2026-07-23 21:21:01 -07:00
joshavant
17eea1c0ab
fix(channels): preserve visible partial delivery
2026-07-23 20:34:39 -05:00
joshavant
0a8831720d
fix(channels): observe deferred delivery rejection
2026-07-23 20:34:39 -05:00
joshavant
6ec2a70ae1
docs(plugins): define inbound delivery settlement
2026-07-23 20:34:39 -05:00
Peter Steinberger
73d279c232
fix(plugins): preserve shipped SDK and lifecycle state ( #113101 )
...
* fix(plugins): restore shipped channel compatibility
* docs(plugins): record shipped channel compatibility
* test(plugin-sdk): budget shipped channel compatibility
* docs(plugin-sdk): track shipped channel compat window
* test(plugins): align shipped compat guardrails
2026-07-23 12:30:54 -07:00
Peter Steinberger
129f86bbf5
feat: auto-collect durable meeting transcripts ( #113122 )
...
* feat(meetings): auto-collect durable transcripts
* chore(plugin-sdk): refresh meeting transcript API baseline
* fix(plugin-sdk): keep meeting transcript options implicit
* fix(meetings): satisfy transcript bridge typecheck
* fix(google-meet): preserve optional caption policy context
* fix(google-meet): retain caption mode callback type
* refactor(meetings): split transcript lifecycle helpers
* chore(plugin-sdk): refresh split meeting runtime baseline
* refactor(google-meet): split session helpers
* fix(meetings): decouple transcript retries from leave
* fix(meetings): isolate provider subscribers
* fix(meetings): harden capture lifecycle
* fix(meetings): preserve capture during storage outages
* fix(meetings): preserve pending transcript ordering
* fix(meetings): retry capture initialization
* test(agents): reflect default transcript registration
2026-07-23 11:41:08 -07:00
Peter Steinberger
12d7009f71
feat(google-meet): enable plugin by default ( #113053 )
...
* feat(google-meet): enable plugin by default
* docs(google-meet): preserve browser enable recovery
2026-07-23 07:34:32 -07:00
Peter Steinberger
ad505a7b55
fix(swarm): keep collector results reliable through races and restarts ( #112989 )
...
* fix(swarm): harden collector lifecycle and dashboards
* fix(swarm): initialize collector completion state
* test(swarm): satisfy cross-environment type checks
* test(codex): allow direct request handler calls
* style(ui): avoid Swarm widget shadowing
* test(swarm): keep internal helpers private
* refactor(ui): own Swarm roster helpers in runtime
2026-07-23 06:26:31 -07:00
Peter Steinberger
41404f669a
feat: enable Teams and Zoom meeting plugins by default ( #113022 )
...
* feat(plugins): enable meeting plugins by default
* docs: refresh meeting plugin map
2026-07-23 06:18:37 -07:00
Peter Steinberger
9f13f9b140
feat(openai): make million-token context an explicit opt-in ( #112916 )
...
* feat(openai): add safe long-context opt-in
* fix(ci): keep long-context checks within gates
* fix(ci): keep Codex usage helpers internal
2026-07-23 05:34:54 -04:00
Peter Steinberger
cca67fc842
fix(meetings): verify talk-back loopback signal ( #112939 )
...
* fix(meetings): verify talk-back loopback signal
* refactor(meetings): keep verification helper private
* fix(meetings): type loopback buffers generically
* fix(meetings): bound loopback reference buffers
* fix(meetings): align loopback proof with playback
* chore(meetings): defer release note ownership
* fix(meetings): keep loopback health type private
2026-07-23 02:32:24 -04:00
Peter Steinberger
a542f01f49
refactor: remove dead tooling and deprecated exports ( #112915 )
2026-07-23 01:28:11 -04:00
Peter Steinberger
a12e0f26ee
fix(plugins): serialize lifecycle mutations and preserve setup-required installs ( #112763 )
...
* fix(plugins): harden concurrent lifecycle mutations
* fix(update): preserve post-core restart snapshot
* fix(update): retain authoritative plugin records on resume
* fix(update): reconcile plugin records after handoff
2026-07-22 23:25:48 -04:00
Jesse Merhi
4a2a600809
feat(channels): add channel-owned setup contracts ( #112176 )
...
* feat(channels): add channel-owned setup contracts
* test(channels): align legacy setup fixtures
* chore(channels): regenerate config and SDK baselines after rebase
* fix(update): run fresh doctor after current-process core changes
* fix(channels): align add pre-scan with execution precedence
* style(cli): format channels-cli test additions
* fix(channels): restore option-before-positional channel resolution via metadata arity scan
* fix(channels): keep help flags out of metadata arity escalation
* test(update): mock fresh post-update doctor in current-process suites
* style: format review fixes and correct entrypoint mock type
* fix(channels): register only modern contract options for dual-publishing plugins
* test(update): align downgrade suites with fresh-doctor child invocation
* docs(channels): record empty-contract and input-forwarding invariants
* fix(line): keep the shipped --token switch as a channel access token alias
* fix(signal): stop treating exact cross-family loopback endpoints as bind-aligned
* chore(config): regenerate docs config baselines after second rebase
* style: format rebased channels add tests
* fix(channels): enforce field-key and flag-name agreement in setup contracts
* fix(signal): detect container endpoints for bare --http-url setup
* fix(signal): ignore unconfigured accounts in transport collision checks
* fix(channels): validate negated setup flags in contract and normalizer
* fix(signal): preserve existing transport kind when setup detection is unreachable
* style(signal): use direct boolean check in collision guard
* style(signal): type test config literals
* docs(update): record two-read design of fresh-doctor validation gate
* fix(channels): satisfy post-rebase architecture gates
* docs: refresh channel setup map
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-22 19:57:42 -04:00
Peter Steinberger
1650faf6a1
refactor(plugin-sdk): remove unread setup helpers ( #112767 )
...
* refactor(plugin-sdk): remove unread setup helpers
* refactor(plugin-sdk): privatize removed setup edges
* test(channels): remove stale proxy mock import
2026-07-22 14:57:32 -07:00
Peter Steinberger
32d4323049
docs(plugins): link setup-input deprecations to the migration pattern and document reader sweeps ( #112692 )
...
* docs(plugins): link setup-input deprecations to the migration pattern and document reader sweeps
* ci: retrigger queued run
* docs: regenerate docs map
2026-07-22 11:04:19 -07:00
joshavant
6eea20ce18
fix(agents): finalize settled tool turns safely
2026-07-22 06:04:27 -05:00
joshavant
7c2829c0e0
fix(copilot): isolate settled turn finalization
2026-07-22 06:04:27 -05:00
Peter Steinberger
b40a8da70e
refactor(channels): trim deprecated setup-input fields and legacy promotion keys to published readers ( #112587 )
...
* refactor(channels): trim deprecated setup-input fields and legacy promotion keys to published readers
* ci: retrigger after dropped ready event
* fix(channels): update setup-input guardrails and dead code for the trimmed tier
2026-07-22 01:15:58 -07:00
Peter Steinberger
3c4a1ec905
refactor(agents): move CLI backend adapters from config DSL to registerCliBackend plugins (review request) ( #112539 )
...
* refactor(agents): move CLI backend adapters into plugins
* test(agents): register CLI backend fixtures through plugins
2026-07-22 00:25:29 -07:00
Peter Steinberger
f236e83de7
refactor(channels): shrink ChannelSetupInput to a generic envelope with a deprecated compatibility tier ( #112319 )
...
* refactor(channels)!: shrink ChannelSetupInput to a generic envelope with a deprecated compatibility tier
* fix(channels): keep ChannelSetupInput structurally assignable without an index signature
* docs: regenerate docs map
2026-07-21 22:17:03 -07:00
Peter Steinberger
c1a313676b
docs(computer-use): add cua-computer troubleshooting/error-code reference and fix stale Codex macOS claim ( #112502 )
2026-07-21 21:07:01 -07:00
Peter Steinberger
153636c702
feat(dashboard): workboard:mini aggregates all boards when boardId is unset ( #112484 )
...
* feat(dashboard): workboard:mini aggregates all boards when boardId is unset
* docs: regenerate docs map
2026-07-21 20:32:33 -07:00
Peter Steinberger
edecdbd05e
refactor(config): config-surface reduction tranche 3 — product consolidations (review request) ( #111527 )
...
* refactor(config): consolidate media model lists
* refactor(config): unify memory configuration
* refactor(config): consolidate TTS ownership
* refactor(config): move typing policy to agents
* refactor(config): retire product-level config surfaces
* refactor(config): share scoped tool policy type
* chore(config): refresh generated baselines
* fix(config): honor agent typing overrides
* fix(config): migrate sibling config consumers
* refactor(infra): keep base64url decoder private
* fix(config): strip invalid legacy TTS values
* chore(config): refresh rebased baseline hash
* fix(doctor): route legacy messages.tts.realtime voice to talk during tts move
* refactor(config): polish final layout names
* refactor(config): freeze retired tuning defaults
* feat(config): add fast mode default symmetry
* refactor(config): key agent entries by id
* docs(config): update final layout reference
* test(config): cover final layout migrations
* chore(config): refresh final layout baselines
* fix(config): align final layout runtime readers
* fix(config): align remaining readers
* fix(config): stabilize final layout migrations
* fix(config): finalize config projection proof
* fix(config): address final layout review
* docs(release): preserve historical config names
* fix(config): complete keyed agent migration
* fix(config): close final migration gaps
* fix(config): finish full-branch review
* fix(config): complete runtime secret detection
* fix(config): close final review findings
* fix(config): finish canonical docs and heartbeat migration
* fix(config): integrate latest main after rebase
* refactor(env): isolate test-only controls
* refactor(env): isolate build and development controls
* refactor(env): collapse process identity indirection
* refactor(env): remove duplicate config and temp aliases
* docs(env): define the operator-facing allowlist
* ci(env): ratchet production variable count
* fix(env): remove stale provider helper import
* fix(env): make ratchet sorting explicit
* test(env): keep test seam in dead-code audit
* test(env): cover ratchet growth and boundary; document surface budgets
* docs(config): document tier-eval consolidations
* docs(config): clarify speech preference ownership
* test(memory): align retired tuning fixtures
* refactor(memory): freeze engine heuristics
* refactor(config): apply tier-eval tranche
* refactor(tts): move persona shaping to providers
* refactor(compaction): move prompt policy to providers
* test(config): align hookified prompt fixtures
* chore(deadcode): classify test-only exports
* chore(github): remove unused spawn helper
* chore(deadcode): classify queue diagnostics
* chore(deadcode): remove unused lane snapshot export
* chore(plugin-sdk): ratchet consolidated surface
* fix(config): integrate latest main after rebase
2026-07-21 20:28:43 -07:00
Jason (Json)
24c20eec76
fix(agents): enforce Claude CLI cron tool policies ( #112457 )
...
* fix(agents): enforce Claude CLI tool policies
* fix(agents): bound CLI runtime tool grants
* fix(agents): isolate restricted Claude runs
2026-07-21 19:38:21 -06:00
Jason (Json)
55cf9523e0
feat: discover models from live provider catalogs ( #112412 )
...
* feat: discover models from live provider catalogs
* fix(provider-catalog): satisfy current catalog contracts
* fix(deps): update fast-uri past new advisory
* fix(deps): refresh fast-uri shrinkwraps
* fix(openrouter): satisfy provider catalog lint
* fix(agents): preserve refreshable catalog metadata
* test(agents): keep catalog fallback proof within lint budget
* fix(provider-catalog): honor live model contracts
* fix(minimax): type discovery headers explicitly
* docs(plugin-sdk): define live model discovery contract
2026-07-21 19:29:57 -06:00
Peter Steinberger
f0c43dcf72
feat(ui): format international phone numbers for display ( #112400 )
...
* feat(ui): format phone numbers for display
* ci: track normalization package exports in Knip
2026-07-21 17:10:25 -07:00
Peter Steinberger
440539b538
feat(workboard): routable boards, sidebar pinning, icon and color ( #112302 )
...
* feat(ui): add Workboard board routes and pins
* fix(ui): reject malformed Workboard board catalogs
* perf(ui): lazy-load Workboard sidebar runtime
* test(ui): align sidebar board fixtures with render contract
* fix(ui): clear Workboard landing gates
2026-07-21 15:16:38 -07:00
Peter Steinberger
e1d5d3dc16
refactor(channels): move single-account promotion keys to plugin declarations ( #112293 )
...
* refactor(channels): move single-account promotion keys to plugin declarations
* fix(channels): keep legacy promotion tier for undeclared setup adapters
* fix(channels): keep plugin discovery lazy in setup promotion helpers
* fix(channels): resolve bundled promotion surfaces from setup-only artifacts
* test(matrix): use vi.stubEnv in setup test env helper
2026-07-21 06:48:30 -07:00
Peter Steinberger
f695be341c
feat(cua-computer): add experimental Windows/Linux computer-use fulfiller ( #112267 )
...
* feat(cua-computer): add experimental Windows/Linux computer-use fulfiller
Bundled plugin that fulfills the capability-based computer.act + screen.snapshot
node contract on Windows and Linux by supervising a pinned cua-driver 0.10.x
daemon over MCP stdio. macOS keeps the Peekaboo fulfiller; this plugin is
disabled by default and never available on darwin.
Grounded in cua-driver 0.10.0 source (tool schemas, refusal codes, coordinate
spaces, session/daemon lifecycle). Notable safety and correctness properties:
- Deny-by-default env allowlist so OpenClaw secrets (provider/channel tokens,
CUA_API_KEY) never reach the separately installed daemon; telemetry and
update checks forced off.
- Version-gated handshake (exact-minor pin + capability/schema version),
time-bounded so a corrected driver recovers without a node restart.
- Robust daemon supervision: full readiness-budget polling, startup-race
tolerance, signal-death and spawn-error recovery, shared-daemon lifecycle
(never killed on dispose).
- Frame authorization preserved within upstream limits (generation + full live
geometry; capture refused when screen and screenshot geometry diverge).
- Action mapping refuses inputs cua-driver cannot faithfully deliver:
layout-shifted keys, modifier-held drag/scroll, Linux modifier clicks,
hold_key/mouse down-up, non-positive scroll; drag duration clamped.
* fix(cua-computer): satisfy lint, test-types, dead-code, and docs-map gates
2026-07-21 05:58:04 -07:00
Peter Steinberger
d725632ee7
refactor(channels): move channel-flavored setup flags into plugin manifests ( #112239 )
...
* refactor(channels): move channel-flavored setup flags into plugin manifests
* refactor(channels): normalize manifest cliAddOptions formatting, drop changelog entry
* fix(channels): dedupe channels add options by commander switch identity
* fix(channels): let the selected channel's cliAddOptions win switch dedupe
2026-07-21 02:50:19 -07:00
Peter Steinberger
be5e427f56
feat(dashboard): plugin-declared widget data bindings and action verbs ( #112083 )
...
* feat(dashboard): add plugin capability declarations
* docs(dashboard): describe plugin capabilities
* fix(plugins): preserve registry map cloning
* fix(dashboard): make plugin grant ids unambiguous
* fix(dashboard): align generated plugin grant ids
* chore(boards): internalize verb ids and refresh protocol snapshots
2026-07-20 22:43:04 -07:00
Peter Steinberger
78b49f3a05
docs: refresh stale cua-driver claims (cross-platform prerelease, real MCP tool names)
2026-07-20 22:18:21 -07:00
Peter Steinberger
d9cf85fa43
fix(cli): correct optional plugin guidance ( #112019 )
2026-07-20 21:31:30 -07:00
Jason (Json)
8968e955f7
fix(plugins): restore external runtime imports ( #112021 )
...
* fix(plugins): restore external runtime imports
* fix(plugins): support synthetic runtime builds
* test(plugins): type synthetic runtime plan
2026-07-20 21:45:23 -06:00
Peter Steinberger
bcbbf28093
docs(plugin-sdk): migrate retained SDK contracts ( #111535 )
...
* refactor(plugin-sdk): finish retained public demotions
* test(plugin-sdk): tighten surface budgets
* fix(plugin-sdk): retain static tool metadata contract
* fix(plugin-sdk): keep retained exports pending
* fix(plugin-sdk): satisfy registry lint
* docs(plugin-sdk): document retained consumer seams
2026-07-19 15:00:45 -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
Peter Steinberger
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
83303f1ba8
feat(channels): batch 1 producers drop media placeholder bodies ( #111447 )
...
* feat(channels): batch 1 producers drop media placeholder bodies
Media-placeholder program batch 1: Google Chat, Zalo, LINE, and
Mattermost stop minting <media:kind> placeholder bodies. Media-only
messages carry an empty caption plus one structured fact per native
attachment (type-only when a download fails or is rejected, so payload
positions and kind signals stay aligned). The shared
formatMediaPlaceholderText SDK formatter renders text-only carriers
(Mattermost pending-room lines) from structured facts; per-channel
placeholder builders and the expected-count side channel are deleted.
* fix(mattermost): satisfy type, deadcode, and SDK manifest gates
2026-07-19 10:32:09 -07:00
Peter Steinberger
4c55a4fc28
feat(plugins): expose requester context to tool hooks ( #111190 )
...
* feat(plugins): expose requester context to tool hooks
* chore(plugin-sdk): restore generated API baseline
* chore: drop release-owned changelog entry
* docs: refresh documentation map
2026-07-19 10:31:58 -07:00
Peter Steinberger
197c4f5a04
feat: generic session discussion seam with Control UI panel ( #111337 )
...
* feat: add session discussion panel seam
* fix: keep discussion iframe cookie-capable and changelog release-owned
* test: cover cookie-capable discussion iframe sandbox
* fix: stretch discussion panel host so the embed fills the rail
* fix: keep provider failures retryable and probe discussion availability before showing the action
* fix: block same-origin discussion embeds, show action on catalog sessions, close stale panel on reconnect
* fix: scope discussion probes and panel callbacks to the issuing connection
* fix: dedupe in-flight discussion probes per session
* fix: retry superseded discussion probes and key-scope panel results
* fix: regenerate Swift protocol models and extend advertised-method expectations
* style: format chat-pane-header
* fix: regenerate Kotlin protocol models and date discussion methods in the 2026.7 train
* chore: restore release-owned changelog to main state
* chore: keep changelog untouched relative to merge-base
2026-07-19 09:47:47 -07:00
Peter Steinberger
adf02e8de4
refactor(plugin-sdk): retire global provider publication ( #111426 )
...
* refactor(plugin-sdk): retire global provider publication
* docs: refresh SDK migration map
2026-07-19 07:44:11 -07:00
Peter Steinberger
783a5d21cf
refactor(config): purge numeric tuning knobs behind built-in defaults ( #111382 )
2026-07-19 07:35:45 -07:00
Peter Steinberger
bbcfec9e96
fix(channels): prevent outbound echoes and expose native login ( #111341 )
...
* fix(channels): centralize outbound echo suppression
* chore(plugin-sdk): refresh channel outbound surface
* test(commands): avoid native plugin fallback loading
* refactor(channels): separate outbound echo state
* docs(changelog): note channel action decisions
* fix(discord): align webhook preflight call
* fix(discord): use type-only thread binding import
* fix(channels): stream login blocks and widen turn results
* test(channels): narrow drop-capable turn results
* fix(channels): address echo and reply edge cases
2026-07-19 03:49:11 -07:00
Peter Steinberger
d685037c6e
fix(workboard): avoid duplicate proof entries on completion ( #111324 )
...
* fix(workboard): resolve duplicate completion proof
* fix(workboard): import proof cap from constants
* fix(workboard): correlate completion proof by id
* fix(workboard): reuse terminal completion proof
* fix(workboard): retain correlated proof under budget
2026-07-19 03:00:37 -07:00