Skip to content

feat: extensions improvements - #278

Merged
pedronauck merged 14 commits into
mainfrom
ext-improvs
Jul 30, 2026
Merged

pedronauck merged 14 commits into
mainfrom
ext-improvs

Conversation

@pedronauck

@pedronauck pedronauck commented Jul 30, 2026 •

Copy link
Copy Markdown
Member

Summary

Completes the greenfield Extension DX overhaul across the daemon, public SDKs, CLI, HTTP/UDS APIs, native tools, Web, documentation, release automation, and living QA system. The branch implements the full Phase A–G MVP plus its QA planning/execution pair as one hard-cut contract, with no compatibility layer for the replaced extension model.

What shipped

SDK contracts and manifest v2

  • Added generated Go SDK contracts and synchronized TypeScript contracts, capability/conformance harnesses, drift checks, release metadata, and Go/npm publishing groundwork.
  • Introduced manifest v2 with closed permissions.requires and provides contracts, derived consent areas, deterministic __describe output, schema digests, minimum SDK versions, and rejection of legacy manifest fields.
  • Added HookSourceExtension with explicit hook ordering and complete dispatch coverage.
  • Hard-cut extension configuration to extensions.trust, extensions.sources, extensions.dev, and resource policy, including live config lifecycle metadata and precise diagnostics for removed extensions.marketplace.* keys.
  • Added the append-only storage migration for manifest permissions/provides and workspace development links, with refreshed sqlc/OpenAPI/generated contracts.

Code-first authoring and local development

  • Added daemon-free compozy extension init, build, and validate flows with five embedded templates for Go and TypeScript extensions.
  • Added deterministic build discovery, bounded subprocess cleanup, strict describe decoding, generated manifests, immutable dist/gen-<hash> publications, overlap protection, and release compatibility checks.
  • Added workspace-scoped dev links, generation verification, serialized reloads, last-good recovery, watch mode, redacted bounded log rings, SSE log streaming, and lifecycle events.
  • Added native authoring/dev tools so agents can scaffold, build, validate, link, reload, inspect logs, and remove extensions through structured surfaces without shell-only gaps.

Distribution, provenance, and contributed commands

  • Unified curated, GitHub release, Git, and local-path installation behind the daemon, with deterministic packaging, GitHub checksum sidecars, provenance/integrity projection, rollback, and credential-safe publishing.
  • Added daemon-owned extension search with source degradation, stable cursor pagination, caching, provenance lookup, batch update with partial progress, and corresponding CLI/HTTP/UDS/native-tool parity.
  • Added GitHub release publication for deterministic archives plus SHA-256 sidecars and release-channel validation for the public SDKs.
  • Added manifest-contributed command discovery and execution: nested command groups, projected typed flags, raw JSON input, schema validation, availability diagnostics, approval/risk parity, reserved-name protection, human output, and JSON/JSONL output.

Operability, Web, docs, and official skill

  • Expanded CLI remediation, status summaries, doctor findings, update discovery, local-path diagnostics, structured lifecycle events, and consistent success/error follow-ups.
  • Added Web install/update/remove flows, source-specific forms, trust and integrity presentation, dev-overlay badges, workspace-scoped logs, bundle-aware removal, and truthful passive update state.
  • Updated the public documentation, quickstart, manifest/permissions/install/development guides, official compozy skill, importable examples, release workflow, and migration guidance to the new hard-cut model.
  • Added first-class QA journeys, scenarios, and charters for newcomer success, agent authoring, dev recovery, distribution, policy, contributed commands, Marketplace/Web, and provider-backed runtime behavior.

QA and review outcomes

  • Ran the runtime and daemon-served Web E2E lanes successfully, plus focused race, lint, typecheck, build, codegen, transport-parity, secret-hygiene, Windows cross-build, and real-template smoke coverage throughout the implementation.
  • Executed the eight planned real-user QA charters in an isolated lab, including a seven-agent autonomous startup scenario with native task claims, cross-channel collaboration, review cycles, injected disruptions, and cross-surface identity checks.
  • QA found and this branch fixed native worker claim guidance, global-extension log workspace leakage, removed-config diagnostics, dev-log retention after unlink, partial GitHub search offsets, strict SemVer publication, dev-overlay removal, and workspace-scoped Web mock logs.
  • Completed two native Codex deep-review rounds and remediated the accepted correctness, test-shape, and polish findings before merge.
  • Recorded the external release/behavior follow-ups discovered by QA as durable bugs and scenarios, including public SDK artifact publication and agent knowledge-refresh behavior, without masking them with repository-local substitutes.

Compozy Impact Audit

  • Native tools: added/updated the complete compozy__extensions_* authoring, development, distribution, provenance, publish, update, and removal toolset; command execution remains governed by the canonical tool dispatcher and approval policy.
  • Extensibility and hooks: manifest v2, extension hook source, SDK contracts, templates, conformance harnesses, contributed commands, bundles/bridges, registry sources, publishing, and config lifecycle now share one generated contract.
  • Workspace data isolation: dev instances, links, reload coordinators, logs, HTTP/UDS/CLI requests, SSE, Web queries, mocks, and native tools carry workspace identity; published extensions remain daemon-global.
  • Official Compozy skill: updated the bundled skill and extension-authoring reference for the complete structured agent path from scaffold through publish/install/invoke/update/remove.

pedronauck and others added 14 commits July 29, 2026 23:22
Checkpoint via cy-loop-tasks (iteration 2, phase B mode=tasks).

Co-Authored-By: Codex <[email protected]>
Checkpoint via cy-loop-tasks (iteration 3, phase B mode=tasks).

Focused Phase B gates passed; full make verify remains reserved for final program completion.

Co-Authored-By: Codex <[email protected]>
Checkpoint via cy-loop-tasks (iteration 4, phase B mode=tasks).

Scoped Phase C gates passed; the single monorepo make verify remains reserved for final program completion.

Co-Authored-By: Codex <[email protected]>
Checkpoint via cy-loop-tasks (iteration 5, phase B mode=tasks).

Co-Authored-By: Codex <[email protected]>
Checkpoint via cy-loop-tasks (iteration 6, phase B mode=tasks).

Co-Authored-By: Codex <[email protected]>
Checkpoint via cy-loop-tasks (iteration 7, phase B mode=tasks).

Co-Authored-By: Codex <[email protected]>
Checkpoint via cy-loop-tasks (iteration 8, phase B mode=tasks).

Co-Authored-By: Codex <[email protected]>
Checkpoint via cy-loop-tasks (iteration 9, phase B mode=tasks).

Visual recapture was explicitly waived by the operator; functional browser and focused gates passed.

Co-Authored-By: Codex <[email protected]>
Checkpoint via cy-loop-tasks (iteration 10, phase B mode=tasks).

Co-Authored-By: Codex <[email protected]>
Checkpoint via cy-loop-tasks (iteration 11, phase B mode=tasks).

QA planning checkpoint: six targeted extension charters, one Marketplace/Skills canary, 676 materialized scenarios, and explicit coverage of Safety Invariants 1-17 plus ADRs 001-008.

Co-Authored-By: Codex <[email protected]>
@pedronauck pedronauck self-assigned this Jul 30, 2026
@greptile-apps

greptile-apps Bot commented Jul 30, 2026

Copy link
Copy Markdown

Too many files changed for review. (673 files found, 100 file limit)

@vercel

vercel Bot commented Jul 30, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
compozy-site Building Building Preview Jul 30, 2026 4:24am

Request Review

@coderabbitai

coderabbitai Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Too many files!

This PR contains 492 files, which is 192 over the limit of 300.

To get a review, narrow the scope:
• coderabbit review --committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

Usage-priced reviews support at most 300 files.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 0a314aef-4d09-46ee-b2fe-d2c7f87bfc0c

📥 Commits

Reviewing files that changed from the base of the PR and between 351f353 and a6c0194.

⛔ Files ignored due to path filters (171)
  • .github/workflows/release.yml is excluded by !**/*.yml
  • MIGRATION_GUIDE.md is excluded by !**/*.md
  • README.md is excluded by !**/*.md
  • bun.lock is excluded by !**/*.lock, !**/*.lock
  • docs/_memory/glossary.md is excluded by !**/*.md
  • docs/qa/bugs/BUG-20260729-agent-knowledge-refresh-missed.md is excluded by !**/*.md
  • docs/qa/bugs/BUG-20260729-extension-update-partial-error.md is excluded by !**/*.md
  • docs/qa/bugs/BUG-20260729-global-extension-log-workspace-scope.md is excluded by !**/*.md
  • docs/qa/bugs/BUG-20260729-provider-worker-native-claim-guidance.md is excluded by !**/*.md
  • docs/qa/bugs/BUG-20260729-public-extension-sdks-unpublished.md is excluded by !**/*.md
  • docs/qa/bugs/BUG-20260729-removed-extension-config-generic-error.md is excluded by !**/*.md
  • docs/qa/charters/CH-extension-agent-authoring.md is excluded by !**/*.md
  • docs/qa/charters/CH-extension-command-authority.md is excluded by !**/*.md
  • docs/qa/charters/CH-extension-contract-policy.md is excluded by !**/*.md
  • docs/qa/charters/CH-extension-dev-recovery.md is excluded by !**/*.md
  • docs/qa/charters/CH-extension-distribution-integrity.md is excluded by !**/*.md
  • docs/qa/charters/CH-extension-marketplace-skill-canary.md is excluded by !**/*.md
  • docs/qa/charters/CH-extension-newcomer-first-success.md is excluded by !**/*.md
  • docs/qa/journeys/J-extension-agent-authoring.md is excluded by !**/*.md
  • docs/qa/journeys/J-extension-dev-lifecycle.md is excluded by !**/*.md
  • docs/qa/journeys/J-extension-distribution.md is excluded by !**/*.md
  • docs/qa/journeys/J-extension-newcomer-first-success.md is excluded by !**/*.md
  • docs/qa/journeys/J-extension-policy-admin.md is excluded by !**/*.md
  • docs/qa/journeys/J-run-extension-commands.md is excluded by !**/*.md
  • docs/qa/reports/2026-07-29-ext-improvs.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-015.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-016.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-017.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-018.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-019.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-020.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-021.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-022.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-023.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-044.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-045.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-cli-extension-sideload-policy-block.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-compozy-official-skill-discovery.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-discover-extension-command-tree.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-enforce-extension-command-approval.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-extension-agent-guided-authoring.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-extension-batch-update-partial-progress.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-extension-cli-error-remediation.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-extension-code-first-authoring.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-extension-dev-reload-loop.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-extension-dx-scorecard.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-extension-legacy-key-rejection.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-extension-manifest-v2-surfaces.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-extension-passive-update-discovery.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-extension-publish-install-round-trip.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-extension-published-source-installs.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-extension-quickstart-verbatim.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-refuse-extension-command-group.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-run-extension-command-raw-input.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-run-extension-projected-flags.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-extension-detail.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-extension-logs-panel.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-extension-union-install.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-extensions-manage.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-marketplace-landing-browse.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-marketplace-search-fanout.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-marketplace-skill-install.md is excluded by !**/*.md
  • docs/qa/scenarios/REL-beta-channel-contract.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-agent-knowledge-refresh-on-wake.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-exact-claim-single-owner.md is excluded by !**/*.md
  • docs/qa/scenarios/TA-task-role-session-activation.md is excluded by !**/*.md
  • extensions/bridges/README.md is excluded by !**/*.md
  • extensions/bridges/discord/extension.toml is excluded by !**/*.toml
  • extensions/bridges/gchat/extension.toml is excluded by !**/*.toml
  • extensions/bridges/github/extension.toml is excluded by !**/*.toml
  • extensions/bridges/linear/extension.toml is excluded by !**/*.toml
  • extensions/bridges/slack/extension.toml is excluded by !**/*.toml
  • extensions/bridges/teams/extension.toml is excluded by !**/*.toml
  • extensions/bridges/telegram/extension.toml is excluded by !**/*.toml
  • extensions/bridges/whatsapp/extension.toml is excluded by !**/*.toml
  • extensions/dev-cycle/extension.json is excluded by !**/*.json
  • go.sum is excluded by !**/*.sum, !**/*.sum
  • internal/bridges/ADDING_A_BRIDGE.md is excluded by !**/*.md
  • internal/extension/scaffold_templates/hook-ts/package.json is excluded by !**/*.json
  • internal/extension/scaffold_templates/hook-ts/tsconfig.json is excluded by !**/*.json
  • internal/extension/scaffold_templates/memory-backend-ts/package.json is excluded by !**/*.json
  • internal/extension/scaffold_templates/memory-backend-ts/tsconfig.json is excluded by !**/*.json
  • internal/extension/scaffold_templates/tool-provider-ts/package.json is excluded by !**/*.json
  • internal/extension/scaffold_templates/tool-provider-ts/tsconfig.json is excluded by !**/*.json
  • internal/extension/testdata/secret-guard/README.md is excluded by !**/*.md
  • internal/extension/testdata/secret-guard/extension.toml is excluded by !**/*.toml
  • internal/extension/testdata/telegram-reference/README.md is excluded by !**/*.md
  • internal/extension/testdata/telegram-reference/extension.toml is excluded by !**/*.toml
  • internal/sandbox/daytona/sidecar_assets/compozy-daytona-sidecar-linux-amd64.gz is excluded by !**/*.gz, !**/*.gz
  • internal/sandbox/daytona/sidecar_assets/compozy-daytona-sidecar-linux-arm64.gz is excluded by !**/*.gz, !**/*.gz
  • internal/store/globaldb/schema/migrations/atlas.sum is excluded by !**/*.sum, !**/*.sum
  • internal/tools/builtin/testdata/native-tool-catalog.json is excluded by !**/*.json
  • openapi/compozy.json is excluded by !**/*.json
  • package.json is excluded by !**/*.json
  • packages/site/content/runtime/cli-reference/extension/build.mdx is excluded by !**/*.mdx
  • packages/site/content/runtime/cli-reference/extension/commands.mdx is excluded by !**/*.mdx
  • packages/site/content/runtime/cli-reference/extension/dev.mdx is excluded by !**/*.mdx
  • packages/site/content/runtime/cli-reference/extension/exec.mdx is excluded by !**/*.mdx
  • packages/site/content/runtime/cli-reference/extension/index.mdx is excluded by !**/*.mdx
  • packages/site/content/runtime/cli-reference/extension/init.mdx is excluded by !**/*.mdx
  • packages/site/content/runtime/cli-reference/extension/install.mdx is excluded by !**/*.mdx
  • packages/site/content/runtime/cli-reference/extension/logs.mdx is excluded by !**/*.mdx
  • packages/site/content/runtime/cli-reference/extension/meta.json is excluded by !**/*.json
  • packages/site/content/runtime/cli-reference/extension/publish.mdx is excluded by !**/*.mdx
  • packages/site/content/runtime/cli-reference/extension/reload.mdx is excluded by !**/*.mdx
  • packages/site/content/runtime/cli-reference/extension/remove.mdx is excluded by !**/*.mdx
  • packages/site/content/runtime/cli-reference/extension/search.mdx is excluded by !**/*.mdx
  • packages/site/content/runtime/cli-reference/extension/update.mdx is excluded by !**/*.mdx
  • packages/site/content/runtime/cli-reference/extension/validate.mdx is excluded by !**/*.mdx
  • packages/site/content/runtime/core/agents/model-catalog.mdx is excluded by !**/*.mdx
  • packages/site/content/runtime/core/bridges/adding-a-bridge.mdx is excluded by !**/*.mdx
  • packages/site/content/runtime/core/bridges/setup.mdx is excluded by !**/*.mdx
  • packages/site/content/runtime/core/configuration/config-toml.mdx is excluded by !**/*.mdx
  • packages/site/content/runtime/core/configuration/lifecycle-matrix.mdx is excluded by !**/*.mdx
  • packages/site/content/runtime/core/extensions/commands.mdx is excluded by !**/*.mdx
  • packages/site/content/runtime/core/extensions/develop.mdx is excluded by !**/*.mdx
  • packages/site/content/runtime/core/extensions/index.mdx is excluded by !**/*.mdx
  • packages/site/content/runtime/core/extensions/install.mdx is excluded by !**/*.mdx
  • packages/site/content/runtime/core/extensions/manifest.mdx is excluded by !**/*.mdx
  • packages/site/content/runtime/core/extensions/meta.json is excluded by !**/*.json
  • packages/site/content/runtime/core/extensions/permissions.mdx is excluded by !**/*.mdx
  • packages/site/content/runtime/core/extensions/publish.mdx is excluded by !**/*.mdx
  • packages/site/content/runtime/core/hooks/declaration.mdx is excluded by !**/*.mdx
  • packages/site/content/runtime/core/marketplace/index.mdx is excluded by !**/*.mdx
  • packages/site/content/runtime/guides/build-your-first-extension.mdx is excluded by !**/*.mdx
  • packages/site/content/runtime/guides/index.mdx is excluded by !**/*.mdx
  • packages/site/content/runtime/guides/meta.json is excluded by !**/*.json
  • packages/site/content/runtime/migration/index.mdx is excluded by !**/*.mdx
  • sdk/create-extension/package.json is excluded by !**/*.json
  • sdk/create-extension/templates/go-tool-provider/extension.json is excluded by !**/*.json
  • sdk/create-extension/templates/hook-subprocess/extension.toml is excluded by !**/*.toml
  • sdk/create-extension/templates/loop-watch-source/extension.json is excluded by !**/*.json
  • sdk/create-extension/templates/memory-backend/extension.toml is excluded by !**/*.toml
  • sdk/create-extension/templates/tool-provider/extension.json is excluded by !**/*.json
  • sdk/create-extension/tsconfig.json is excluded by !**/*.json
  • sdk/examples/README.md is excluded by !**/*.md
  • sdk/examples/clarify-tool/README.md is excluded by !**/*.md
  • sdk/examples/clarify-tool/extension.json is excluded by !**/*.json
  • sdk/examples/notes-commands/README.md is excluded by !**/*.md
  • sdk/examples/prompt-enhancer/README.md is excluded by !**/*.md
  • sdk/examples/prompt-enhancer/extension.toml is excluded by !**/*.toml
  • sdk/typescript/package.json is excluded by !**/*.json
  • sdk/typescript/src/generated/contracts.ts is excluded by !**/generated/**, !**/generated/**
  • sdk/typescript/tsconfig.build.json is excluded by !**/*.json
  • sdk/typescript/tsconfig.cjs.json is excluded by !**/*.json
  • sdk/typescript/tsconfig.esm.json is excluded by !**/*.json
  • sdk/typescript/tsconfig.types.json is excluded by !**/*.json
  • skills/compozy/SKILL.md is excluded by !**/*.md
  • skills/compozy/references/capabilities-and-bundles.md is excluded by !**/*.md
  • skills/compozy/references/extension-authoring.md is excluded by !**/*.md
  • skills/compozy/references/native-tools.md is excluded by !**/*.md
  • skills/compozy/references/tasks-and-orchestration.md is excluded by !**/*.md
  • skills/compozy/references/tools-and-skills.md is excluded by !**/*.md
  • web/e2e/__tests__/bridges.spec.ts is excluded by !web/e2e/**
  • web/e2e/__tests__/combined-flows.spec.ts is excluded by !web/e2e/**
  • web/e2e/__tests__/extensions.spec.ts is excluded by !web/e2e/**
  • web/e2e/__tests__/marketplace.spec.ts is excluded by !web/e2e/**
  • web/e2e/__tests__/settings.spec.ts is excluded by !web/e2e/**
  • web/e2e/fixtures/__tests__/runtime-seed.test.ts is excluded by !**/fixtures/**, !web/e2e/**
  • web/e2e/fixtures/__tests__/runtime.test.ts is excluded by !**/fixtures/**, !web/e2e/**
  • web/e2e/fixtures/__tests__/selectors.test.ts is excluded by !**/fixtures/**, !web/e2e/**
  • web/e2e/fixtures/bundled-extension-seeder/main.go is excluded by !**/fixtures/**, !web/e2e/**
  • web/e2e/fixtures/extension-registry-server.ts is excluded by !**/fixtures/**, !web/e2e/**
  • web/e2e/fixtures/runtime-helpers.ts is excluded by !**/fixtures/**, !web/e2e/**
  • web/e2e/fixtures/runtime-seed.ts is excluded by !**/fixtures/**, !web/e2e/**
  • web/e2e/fixtures/runtime.ts is excluded by !**/fixtures/**, !web/e2e/**
  • web/e2e/fixtures/selectors.ts is excluded by !**/fixtures/**, !web/e2e/**
  • web/src/generated/compozy-openapi.d.ts is excluded by !**/generated/**, !**/generated/**, !**/*.d.ts
  • web/src/systems/marketplace/components/stories/marketplace-overlays.stories.tsx is excluded by !**/*.stories.tsx
  • web/src/systems/marketplace/routes/marketplace.stories.tsx is excluded by !**/*.stories.tsx
  • web/src/systems/settings/routes/settings-extensions.stories.tsx is excluded by !**/*.stories.tsx
📒 Files selected for processing (502)
  • cmd/compozy-codegen/main.go
  • cmd/compozy-codegen/main_test.go
  • cmd/compozy-codegen/sdk_go_contracts.go
  • cmd/compozy-manifest-check/main.go
  • extensions/bridges/gchat/provider_test.go
  • extensions/bridges/github/provider_test.go
  • extensions/bridges/github/runtime_test.go
  • extensions/bridges/linear/runtime_test.go
  • extensions/bridges/slack/provider_test.go
  • extensions/bridges/teams/provider_test.go
  • extensions/bridges/telegram/provider_test.go
  • extensions/bridges/whatsapp/provider_test.go
  • extensions/dev-cycle/rpc.go
  • go.mod
  • internal/api/contract/extension_authoring.go
  • internal/api/contract/extensions.go
  • internal/api/contract/extensions_search.go
  • internal/api/contract/responses.go
  • internal/api/contract/settings_config_payloads.go
  • internal/api/core/doctor_payload.go
  • internal/api/core/extension_doctor.go
  • internal/api/core/extension_doctor_test.go
  • internal/api/core/extensions.go
  • internal/api/core/extensions_commands.go
  • internal/api/core/extensions_dev.go
  • internal/api/core/extensions_errors.go
  • internal/api/core/extensions_marketplace.go
  • internal/api/core/extensions_test.go
  • internal/api/core/settings_extensions_config.go
  • internal/api/core/settings_internal_test.go
  • internal/api/core/settings_test.go
  • internal/api/httpapi/extension_logs_sse_test.go
  • internal/api/httpapi/handlers_test.go
  • internal/api/httpapi/helpers_test.go
  • internal/api/httpapi/routes.go
  • internal/api/httpapi/server_test.go
  • internal/api/httpapi/transport_parity_integration_test.go
  • internal/api/spec/extension_authoring_schemas.go
  • internal/api/spec/registry_extensions.go
  • internal/api/spec/schema_enum_registry.go
  • internal/api/spec/spec.go
  • internal/api/spec/spec_test.go
  • internal/api/udsapi/extensions_additional_test.go
  • internal/api/udsapi/handlers_test.go
  • internal/api/udsapi/routes.go
  • internal/api/udsapi/routes_extensions.go
  • internal/api/udsapi/transport_parity_integration_test.go
  • internal/automation/schedule_test.go
  • internal/bridgesdk/runtime.go
  • internal/bridgesdk/runtime_control.go
  • internal/bridgesdk/runtime_initialize_request_test.go
  • internal/bridgesdk/runtime_test.go
  • internal/bridgesdk/test_helpers_test.go
  • internal/cli/agent_identity_test.go
  • internal/cli/cli_integration_test.go
  • internal/cli/client.go
  • internal/cli/client_extension_commands.go
  • internal/cli/client_extension_dev.go
  • internal/cli/client_extensions_bridges.go
  • internal/cli/client_network_extension_types.go
  • internal/cli/client_test.go
  • internal/cli/config_extensions.go
  • internal/cli/config_path_classification.go
  • internal/cli/config_test.go
  • internal/cli/extension.go
  • internal/cli/extension_authoring.go
  • internal/cli/extension_commands.go
  • internal/cli/extension_dev.go
  • internal/cli/extension_dev_output.go
  • internal/cli/extension_exec.go
  • internal/cli/extension_exec_flags.go
  • internal/cli/extension_exec_integration_test.go
  • internal/cli/extension_exec_test.go
  • internal/cli/extension_install.go
  • internal/cli/extension_install_parse.go
  • internal/cli/extension_install_parse_test.go
  • internal/cli/extension_local_install.go
  • internal/cli/extension_marketplace.go
  • internal/cli/extension_marketplace_integration_test.go
  • internal/cli/extension_marketplace_test.go
  • internal/cli/extension_output.go
  • internal/cli/extension_output_test.go
  • internal/cli/extension_publish.go
  • internal/cli/extension_state.go
  • internal/cli/extension_test.go
  • internal/cli/format.go
  • internal/cli/helpers_test.go
  • internal/cli/root.go
  • internal/cli/root_test.go
  • internal/cli/skill.go
  • internal/cli/skill_marketplace.go
  • internal/cli/skill_output.go
  • internal/cli/skill_workspace_metadata.go
  • internal/cli/tool_approvals.go
  • internal/cli/tool_operator.go
  • internal/cli/tool_operator_output.go
  • internal/cli/workspace_detail.go
  • internal/codegen/sdkgo/contracts_render.go
  • internal/codegen/sdkgo/enum_registry.go
  • internal/codegen/sdkgo/generate.go
  • internal/codegen/sdkgo/generate_test.go
  • internal/codegen/sdkgo/type_files.go
  • internal/codegen/sdkgo/type_model.go
  • internal/codegen/sdkgo/type_render.go
  • internal/codegen/sdkts/enum_registry.go
  • internal/codegen/sdkts/generate.go
  • internal/codegen/sdkts/generate_capabilities.go
  • internal/codegen/sdkts/generate_maps.go
  • internal/codegen/sdkts/generate_test.go
  • internal/config/config_extensions_sandbox.go
  • internal/config/config_marketplace_validation.go
  • internal/config/config_test.go
  • internal/config/defaults.go
  • internal/config/extensions.go
  • internal/config/extensions_marketplace.go
  • internal/config/lifecycle/lifecycle.go
  • internal/config/lifecycle/lifecycle_test.go
  • internal/config/merge.go
  • internal/config/merge_extensions.go
  • internal/config/merge_extensions_marketplace.go
  • internal/config/merge_features.go
  • internal/config/merge_load.go
  • internal/config/merge_test.go
  • internal/config/release_config_test.go
  • internal/config/tool_surface_security.go
  • internal/config/tool_surface_test.go
  • internal/coordinator/coordinator.go
  • internal/coordinator/coordinator_test.go
  • internal/daemon/boot_extension_manager_deps.go
  • internal/daemon/boot_extensions.go
  • internal/daemon/bridges_test.go
  • internal/daemon/coordinator_runtime_test.go
  • internal/daemon/coordinator_runtime_wake.go
  • internal/daemon/daemon.go
  • internal/daemon/daemon_bridge_extension_integration_test.go
  • internal/daemon/daemon_extension_agent_native_e2e_integration_test.go
  • internal/daemon/daemon_extension_authoring_e2e_integration_test.go
  • internal/daemon/daemon_extension_commands_e2e_integration_test.go
  • internal/daemon/daemon_extension_distribution_e2e_integration_test.go
  • internal/daemon/daemon_extension_error_ux_e2e_integration_test.go
  • internal/daemon/daemon_integration_test.go
  • internal/daemon/daemon_nightly_combined_integration_test.go
  • internal/daemon/daemon_test.go
  • internal/daemon/extension_commands.go
  • internal/daemon/extension_commands_integration_test.go
  • internal/daemon/extension_manager_wiring.go
  • internal/daemon/extension_search.go
  • internal/daemon/extension_search_integration_test.go
  • internal/daemon/extension_secret_hygiene_integration_test.go
  • internal/daemon/extensions.go
  • internal/daemon/extensions_dev.go
  • internal/daemon/extensions_events.go
  • internal/daemon/extensions_install.go
  • internal/daemon/extensions_marketplace_trust.go
  • internal/daemon/extensions_service.go
  • internal/daemon/extensions_update_batch.go
  • internal/daemon/heartbeat_wake_runtime_test.go
  • internal/daemon/native_extension_dev_tools.go
  • internal/daemon/native_extension_distribution_tools.go
  • internal/daemon/native_extension_errors.go
  • internal/daemon/native_extension_tool_provider.go
  • internal/daemon/native_extension_tool_provider_test.go
  • internal/daemon/native_extension_tools.go
  • internal/daemon/native_extension_tools_integration_test.go
  • internal/daemon/native_extension_tools_test.go
  • internal/daemon/native_marketplace_tools_test.go
  • internal/daemon/native_tool_dependencies.go
  • internal/daemon/native_tools_dependencies_builder.go
  • internal/daemon/native_tools_test.go
  • internal/daemon/scheduler_waker.go
  • internal/daemon/session_policy_gate_test.go
  • internal/daemon/settings_runtime_applier.go
  • internal/daemon/settings_runtime_applier_test.go
  • internal/daemon/task_claim_prompt.go
  • internal/daemon/task_role_runtime_test.go
  • internal/daemon/task_role_sessions.go
  • internal/daemon/tool_policy_resolver.go
  • internal/diagnosticcontract/diagnostics.go
  • internal/events/extension.go
  • internal/events/registry.go
  • internal/extension/bridge_control_test.go
  • internal/extension/bridge_delivery_integration_test.go
  • internal/extension/build.go
  • internal/extension/build_describe.go
  • internal/extension/build_generation.go
  • internal/extension/build_integration_test.go
  • internal/extension/build_runner.go
  • internal/extension/build_runner_unix.go
  • internal/extension/build_runner_unix_test.go
  • internal/extension/build_runner_windows.go
  • internal/extension/build_test.go
  • internal/extension/build_toolchain.go
  • internal/extension/capability.go
  • internal/extension/capability_grants.go
  • internal/extension/capability_host_api.go
  • internal/extension/capability_models_test.go
  • internal/extension/capability_resource_policy.go
  • internal/extension/capability_test.go
  • internal/extension/command.go
  • internal/extension/command_manifest.go
  • internal/extension/command_schema.go
  • internal/extension/command_test.go
  • internal/extension/consent.go
  • internal/extension/contract/authoring.go
  • internal/extension/contract/capabilities.go
  • internal/extension/contract/command.go
  • internal/extension/contract/describe.go
  • internal/extension/contract/permissions.go
  • internal/extension/contract/sdk_bridge_control.go
  • internal/extension/describe.go
  • internal/extension/describe_test.go
  • internal/extension/dev.go
  • internal/extension/dev_generation.go
  • internal/extension/dev_integration_test.go
  • internal/extension/dev_test.go
  • internal/extension/events_coverage_test.go
  • internal/extension/host_api_memory.go
  • internal/extension/host_api_models_test.go
  • internal/extension/host_api_network_test.go
  • internal/extension/host_api_test.go
  • internal/extension/instance.go
  • internal/extension/lifecycle_events.go
  • internal/extension/logs.go
  • internal/extension/logs_test.go
  • internal/extension/manager.go
  • internal/extension/manager_clone.go
  • internal/extension/manager_dev_activation.go
  • internal/extension/manager_dev_lifecycle.go
  • internal/extension/manager_failure_state.go
  • internal/extension/manager_instance_state.go
  • internal/extension/manager_integration_test.go
  • internal/extension/manager_lifecycle.go
  • internal/extension/manager_options.go
  • internal/extension/manager_process_lifecycle.go
  • internal/extension/manager_resource_loading.go
  • internal/extension/manager_runtime_launch.go
  • internal/extension/manager_snapshots.go
  • internal/extension/manager_stderr.go
  • internal/extension/manager_supervision.go
  • internal/extension/manager_test.go
  • internal/extension/manager_views.go
  • internal/extension/manifest.go
  • internal/extension/manifest_compatibility.go
  • internal/extension/manifest_encode.go
  • internal/extension/manifest_load.go
  • internal/extension/manifest_normalize.go
  • internal/extension/manifest_permissions.go
  • internal/extension/manifest_test.go
  • internal/extension/manifest_tool_toml.go
  • internal/extension/manifest_tools.go
  • internal/extension/marketplace_lifecycle.go
  • internal/extension/marketplace_lifecycle_test.go
  • internal/extension/marketplace_remove_cleanup.go
  • internal/extension/marketplace_trust.go
  • internal/extension/marketplace_update.go
  • internal/extension/marketplace_update_cleanup.go
  • internal/extension/provenance.go
  • internal/extension/provider_conformance_discovery_integration_test.go
  • internal/extension/publish.go
  • internal/extension/publish_test.go
  • internal/extension/reference_integration_test.go
  • internal/extension/registry.go
  • internal/extension/registry_install.go
  • internal/extension/registry_integration_test.go
  • internal/extension/registry_scan.go
  • internal/extension/registry_test.go
  • internal/extension/registry_types.go
  • internal/extension/resource_publication.go
  • internal/extension/scaffold.go
  • internal/extension/scaffold_templates/hook-ts/src/index.ts
  • internal/extension/scaffold_templates/loop-watch-source-go/go.mod.template
  • internal/extension/scaffold_templates/loop-watch-source-go/main.go
  • internal/extension/scaffold_templates/memory-backend-ts/src/index.ts
  • internal/extension/scaffold_templates/tool-provider-go/go.mod.template
  • internal/extension/scaffold_templates/tool-provider-go/main.go
  • internal/extension/scaffold_templates/tool-provider-ts/src/index.ts
  • internal/extension/search_errors.go
  • internal/extension/telegram_reference_integration_test.go
  • internal/extension/testdata/command-fixture-go/go.mod
  • internal/extension/testdata/command-fixture-go/main.go
  • internal/extension/testdata/secret-guard/.gitignore
  • internal/extension/testdata/secret-guard/main.go
  • internal/extension/testdata/secret-guard/main_test.go
  • internal/extension/testdata/telegram-reference/.gitignore
  • internal/extension/testdata/telegram-reference/control.go
  • internal/extension/testdata/telegram-reference/control_test.go
  • internal/extension/testdata/telegram-reference/delivery.go
  • internal/extension/testdata/telegram-reference/inbound.go
  • internal/extension/testdata/telegram-reference/main.go
  • internal/extension/testdata/telegram-reference/main_test.go
  • internal/extension/testdata/telegram-reference/runtime_lifecycle_test.go
  • internal/extension/tool_provider.go
  • internal/extension/tool_provider_test.go
  • internal/extension/tool_reconciliation.go
  • internal/extension/tool_runtime.go
  • internal/extension/validate_bundle.go
  • internal/extensionprotocol/capabilities.go
  • internal/extensionprotocol/host_api.go
  • internal/extensiontest/bridge_adapter_harness.go
  • internal/extensiontest/bridge_adapter_harness_integration_test.go
  • internal/extensiontest/bridge_adapter_harness_setup.go
  • internal/extensiontest/bridge_adapter_harness_test.go
  • internal/fileutil/targzip.go
  • internal/hooks/ordering.go
  • internal/hooks/ordering_test.go
  • internal/hooks/types.go
  • internal/hooks/types_test.go
  • internal/mcp/serve_facade.go
  • internal/registry/github/client.go
  • internal/registry/github/client_test.go
  • internal/registry/github/publish.go
  • internal/registry/github/releases.go
  • internal/registry/github/search.go
  • internal/registry/github/sidecar.go
  • internal/registry/gitsrc/client.go
  • internal/registry/gitsrc/client_test.go
  • internal/registry/gitsrc/errors.go
  • internal/registry/gitsrc/reference.go
  • internal/registry/installer_archive.go
  • internal/registry/installer_flow.go
  • internal/registry/types.go
  • internal/settings/config_apply_service_test.go
  • internal/settings/sections.go
  • internal/settings/sections_extensions.go
  • internal/settings/service_test.go
  • internal/store/globaldb/global_db_test.go
  • internal/store/globaldb/schema/definitions/33_extensions.sql
  • internal/store/globaldb/schema/definitions/34_extension_dev_links.sql
  • internal/store/globaldb/schema/migrations/00028_extension_manifest_v2.sql
  • internal/store/globaldb/sqlcgen/models.go
  • internal/store/migrate_streams_test.go
  • internal/subprocess/handshake.go
  • internal/subprocess/handshake_control.go
  • internal/subprocess/handshake_control_test.go
  • internal/subprocess/process.go
  • internal/subprocess/process_lifecycle.go
  • internal/subprocess/process_test.go
  • internal/subprocess/stderr_pipeline.go
  • internal/subprocess/stderr_pipeline_test.go
  • internal/testutil/e2e/config_seed.go
  • internal/testutil/e2e/config_seed_test.go
  • internal/testutil/e2e/runtime_harness_helpers_test.go
  • internal/testutil/e2e/runtime_harness_integration_test.go
  • internal/toolmeta/native_entries.go
  • internal/toolmeta/registry_test.go
  • internal/tools/builtin/builtin_test.go
  • internal/tools/builtin/descriptors.go
  • internal/tools/builtin/extensions.go
  • internal/tools/builtin/extensions_distribution.go
  • internal/tools/builtin/loops.go
  • internal/tools/builtin/memory.go
  • internal/tools/builtin/observe.go
  • internal/tools/builtin/window_manager.go
  • internal/tools/builtin_extension_ids.go
  • internal/tools/builtin_ids.go
  • internal/tools/dispatch_test.go
  • internal/tools/extension_command.go
  • internal/tools/provider_descriptor.go
  • internal/tools/registry.go
  • magefiles/boundaries.go
  • magefiles/build.go
  • magefiles/codegen.go
  • magefiles/test.go
  • packages/site/lib/__tests__/runtime-docs-discovery.test.ts
  • packages/site/lib/__tests__/runtime-tools-canonical-docs.test.ts
  • scripts/air-state-lock/main.go
  • scripts/air-state-lock/main_test.go
  • scripts/migrate-tests-to-tests-dir.mjs
  • scripts/publish-extension-sdk.sh
  • scripts/release-publication-state.sh
  • sdk/create-extension/src/__tests__/index.test.ts
  • sdk/create-extension/src/index.ts
  • sdk/create-extension/templates/go-tool-provider/go.mod
  • sdk/create-extension/templates/loop-watch-source/go.mod
  • sdk/create-extension/templates/memory-backend/src/index.ts
  • sdk/create-extension/templates/tool-provider/src/index.ts
  • sdk/create-extension/vitest.config.ts
  • sdk/examples/clarify-tool/go.mod
  • sdk/examples/clarify-tool/main.go
  • sdk/examples/notes-commands/go.mod
  • sdk/examples/notes-commands/main.go
  • sdk/examples/prompt-enhancer/src/index.ts
  • sdk/go/LICENSE
  • sdk/go/contracts/capabilities_gen.go
  • sdk/go/contracts/hook_contracts_gen.go
  • sdk/go/contracts/hook_events_gen.go
  • sdk/go/contracts/host_contracts_gen.go
  • sdk/go/contracts/host_methods_gen.go
  • sdk/go/contracts/types_001_gen.go
  • sdk/go/contracts/types_002_gen.go
  • sdk/go/contracts/types_003_gen.go
  • sdk/go/contracts/types_004_gen.go
  • sdk/go/contracts/types_005_gen.go
  • sdk/go/contracts/types_006_gen.go
  • sdk/go/contracts/types_007_gen.go
  • sdk/go/contracts/types_008_gen.go
  • sdk/go/contracts/types_009_gen.go
  • sdk/go/contracts/types_010_gen.go
  • sdk/go/contracts/types_011_gen.go
  • sdk/go/contracts/types_012_gen.go
  • sdk/go/contracts/types_013_gen.go
  • sdk/go/contracts/types_014_gen.go
  • sdk/go/contracts/types_015_gen.go
  • sdk/go/contracts/types_016_gen.go
  • sdk/go/contracts/types_017_gen.go
  • sdk/go/contracts/types_018_gen.go
  • sdk/go/contracts/types_019_gen.go
  • sdk/go/contracts/types_020_gen.go
  • sdk/go/contracts/types_021_gen.go
  • sdk/go/contracts/types_022_gen.go
  • sdk/go/contracts/types_023_gen.go
  • sdk/go/contracts/types_024_gen.go
  • sdk/go/contracts/types_025_gen.go
  • sdk/go/extension.go
  • sdk/go/extension_command.go
  • sdk/go/extension_describe.go
  • sdk/go/extension_initialization.go
  • sdk/go/extension_registration.go
  • sdk/go/extension_test.go
  • sdk/go/extension_tool_call.go
  • sdk/go/extensiontest/harness.go
  • sdk/go/extensiontest/harness_test.go
  • sdk/go/go.mod
  • sdk/go/runtime_test.go
  • sdk/go/tool_request.go
  • sdk/go/tool_request_test.go
  • sdk/go/types.go
  • sdk/typescript/LICENSE
  • sdk/typescript/src/__tests__/extension.test.ts
  • sdk/typescript/src/__tests__/integration.test.ts
  • sdk/typescript/src/capabilities.ts
  • sdk/typescript/src/extension-contract.ts
  • sdk/typescript/src/extension-describe.ts
  • sdk/typescript/src/extension-initialize.ts
  • sdk/typescript/src/extension-runtime.ts
  • sdk/typescript/src/extension-tool-context.ts
  • sdk/typescript/src/extension-tool-registration.ts
  • sdk/typescript/src/extension.ts
  • sdk/typescript/src/index.ts
  • sdk/typescript/src/testing/__tests__/harness.test.ts
  • sdk/typescript/src/testing/conformance.ts
  • sdk/typescript/src/testing/harness.ts
  • sdk/typescript/src/testing/index.ts
  • sdk/typescript/src/types.ts
  • skills/bundled_test.go
  • web/src/routes/_app/settings/-extensions-policy-section.tsx
  • web/src/routes/_app/settings/-extensions-settings-page.tsx
  • web/src/routes/_app/settings/__tests__/-settings-split.test.tsx
  • web/src/storybook/fintech-scenario.ts
  • web/src/systems/extensions/adapters/__tests__/extensions-api.test.ts
  • web/src/systems/extensions/adapters/extensions-api.ts
  • web/src/systems/extensions/components/__tests__/extension-dialogs.test.tsx
  • web/src/systems/extensions/components/extension-dialogs.tsx
  • web/src/systems/extensions/components/extension-log-panel.tsx
  • web/src/systems/extensions/components/extension-trust-badges.tsx
  • web/src/systems/extensions/hooks/__tests__/use-extension-actions.test.tsx
  • web/src/systems/extensions/hooks/__tests__/use-extension-detail-state.test.ts
  • web/src/systems/extensions/hooks/__tests__/use-extension-logs.test.tsx
  • web/src/systems/extensions/hooks/__tests__/use-extensions.test.tsx
  • web/src/systems/extensions/hooks/use-extension-actions.ts
  • web/src/systems/extensions/hooks/use-extension-detail-state.ts
  • web/src/systems/extensions/hooks/use-extension-logs.ts
  • web/src/systems/extensions/hooks/use-extensions.ts
  • web/src/systems/extensions/index.ts
  • web/src/systems/extensions/lib/extension-log-stream.ts
  • web/src/systems/extensions/lib/extension-source-kind.ts
  • web/src/systems/extensions/lib/extension-trust-facts.ts
  • web/src/systems/extensions/lib/query-keys.ts
  • web/src/systems/extensions/lib/query-options.ts
  • web/src/systems/extensions/mocks/__tests__/handlers.test.ts
  • web/src/systems/extensions/mocks/fixtures.ts
  • web/src/systems/extensions/mocks/handlers.ts
  • web/src/systems/extensions/mocks/index.ts
  • web/src/systems/extensions/types.ts
  • web/src/systems/marketplace/adapters/__tests__/marketplace-api.test.ts
  • web/src/systems/marketplace/adapters/marketplace-api-error.ts
  • web/src/systems/marketplace/components/__tests__/marketplace-action-controller.test.tsx
  • web/src/systems/marketplace/components/__tests__/marketplace-components.test.tsx
  • web/src/systems/marketplace/components/__tests__/marketplace-detail-manage.test.tsx
  • web/src/systems/marketplace/components/extension-install-dialog-store.ts
  • web/src/systems/marketplace/components/extension-install-dialog.tsx
  • web/src/systems/marketplace/components/extension-install-model.ts
  • web/src/systems/marketplace/components/extension-trust-dialog.tsx
  • web/src/systems/marketplace/components/index.ts
  • web/src/systems/marketplace/components/marketplace-action-dialogs.tsx
  • web/src/systems/marketplace/components/marketplace-card.tsx
  • web/src/systems/marketplace/components/marketplace-detail-extension-actions.tsx
  • web/src/systems/marketplace/components/marketplace-detail-extension-manage.tsx
  • web/src/systems/marketplace/components/marketplace-detail.tsx
  • web/src/systems/marketplace/components/marketplace-entry-actions.tsx
  • web/src/systems/marketplace/components/marketplace-installed-card.tsx
  • web/src/systems/marketplace/components/marketplace-kind-page.tsx
  • web/src/systems/marketplace/components/use-extension-install-dialog.tsx
  • web/src/systems/marketplace/components/use-marketplace-action-controller.tsx
  • web/src/systems/marketplace/hooks/__tests__/use-marketplace-actions.test.tsx
  • web/src/systems/marketplace/hooks/use-marketplace-kind-page.ts
  • web/src/systems/marketplace/lib/marketplace-installed-items.ts
  • web/src/systems/marketplace/lib/marketplace-kind-config.ts
  • web/src/systems/marketplace/lib/marketplace-updates.ts
  • web/src/systems/marketplace/mocks/fixtures.ts
  • web/src/systems/settings/hooks/use-settings-extensions-page.ts
  • web/src/systems/settings/mocks/fixtures.ts

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@pedronauck
pedronauck merged commit 0fdbdf2 into main Jul 30, 2026
11 of 12 checks passed
@pedronauck
pedronauck deleted the ext-improvs branch July 30, 2026 04:25
@github-actions

Copy link
Copy Markdown
Contributor

React Doctor found 4 new issues in 1 file · 4 warnings · score 89 / 100 (Great) · 0 fixed · vs main

4 warnings

src/systems/extensions/hooks/use-extension-logs.ts

  • ⚠️ L80 Derived value copied into state no-derived-state
  • ⚠️ L80 React Compiler can't optimize this set-state-in-effect
  • ⚠️ L85 Derived value copied into state no-derived-state
  • ⚠️ L85 React Compiler can't optimize this set-state-in-effect

Reviewed by React Doctor for commit a6c0194. See inline comments for fixes.


useEffect(() => {
cursorRef.current = 0;
setStreamed({ entries: [], instance });

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

React Doctor · react-doctor/no-derived-state (warning)

Storing "streamed" in state when you can derive it from other values costs an extra render.

Fix → Work out the value while rendering (or with useMemo if it's expensive) instead of copying it into state and synchronizing it during render or through an effect. See https://react.dev/learn/you-might-not-need-an-effect#updating-state-based-on-props-or-state

Docs


useEffect(() => {
cursorRef.current = 0;
setStreamed({ entries: [], instance });

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

React Doctor · react-hooks-js/set-state-in-effect (warning)

This synchronous effect update causes an extra render: Calling setState synchronously within an effect can trigger cascading renders. Prefer deriving or initializing the value before render. If the effect must read a browser API after mount, treat this as advisory or suppress it with // react-doctor-disable-next-line react-hooks-js/set-state-in-effect.

Fix → Effects are intended to synchronize state between React and external systems such as manually updating the DOM, state management libraries, or other platform APIs. In general, the body of an effect should do one or both of the following:

  • Update external systems with the latest state from React.
  • Subscribe for updates from some external system, calling setState in a callback function when external state changes.

Calling setState synchronously within an effect body causes cascading renders that can hurt performance, and is not recommended. (https://react.dev/learn/you-might-not-need-an-effect).

Docs


useEffect(() => {
if (!enabled || name === "" || !follow) {
setStatus(follow ? "idle" : "paused");

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

React Doctor · react-doctor/no-derived-state (warning)

Storing "status" in state when you can derive it from other values costs an extra render.

Fix → Work out the value while rendering (or with useMemo if it's expensive) instead of copying it into state and synchronizing it during render or through an effect. See https://react.dev/learn/you-might-not-need-an-effect#updating-state-based-on-props-or-state

Docs


useEffect(() => {
if (!enabled || name === "" || !follow) {
setStatus(follow ? "idle" : "paused");

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

React Doctor · react-hooks-js/set-state-in-effect (warning)

This synchronous effect update causes an extra render: Calling setState synchronously within an effect can trigger cascading renders. Prefer deriving or initializing the value before render. If the effect must read a browser API after mount, treat this as advisory or suppress it with // react-doctor-disable-next-line react-hooks-js/set-state-in-effect.

Fix → Effects are intended to synchronize state between React and external systems such as manually updating the DOM, state management libraries, or other platform APIs. In general, the body of an effect should do one or both of the following:

  • Update external systems with the latest state from React.
  • Subscribe for updates from some external system, calling setState in a callback function when external state changes.

Calling setState synchronously within an effect body causes cascading renders that can hurt performance, and is not recommended. (https://react.dev/learn/you-might-not-need-an-effect).

Docs

This branch was successfully deployed

1 active deployment
Preview — a6c0194b Deployed Jul 30, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant