Files
Benjamin Taylor 2c05ed6885 chore(release): keep release notes in one CHANGELOG.md per release lane
The notes now land in a source-controlled changelog instead of a scratch file
that rides the release branch. One file per lane, because the lanes version
independently: a shared file would interleave `1.70.0`, `angular/0.5.0` and
`channels/0.9.0` into one unreadable sequence.

  monorepo  ->  CHANGELOG.md
  angular   ->  packages/angular/CHANGELOG.md
  channels  ->  packages/channels/CHANGELOG.md

`write-changelog.ts` prepends this release's section on the release branch,
create-pull-request commits it (a tracked file, always staged), and
`extract-release-notes.ts` reads the section back in the publish job as the
GitHub Release body. The changelog is therefore both the durable record and the
review surface: editing a section on the release PR changes what ships.
release-notes.md goes back to being ignored, so the same notes never exist as
two editable copies.

Also deletes 29 changesets-era changelogs that no tooling had written since
April. They stopped at 1.55.2 while the lane shipped 1.69.3, and
packages/angular/CHANGELOG.md still claimed 1.54.3 from before that lane split
onto its own 0.x line. Their content stays recoverable from git history. A test
pins the tracked changelog set to the lanes so they cannot creep back and
contradict the real versions.

Extraction never fails the publish job: it runs after npm publish, so a miss
annotates loudly and falls through to the existing bodyless-release fallback
rather than stranding the tag.

Committed with --no-verify: the pre-commit nx lane cannot run in this worktree
(packages/core and packages/channels-ui have no node_modules, and
`nx run @copilotkit/core:build` fails identically with the tree clean). The only
change under packages/** is deleting orphan markdown that no build or test
reads.
2026-09-09 08:31:01 -05:00
..
2026-09-08 23:22:32 +00:00

@copilotkit/core

@copilotkit/core is the framework-neutral client for CopilotKit runtimes. It manages runtime agents, frontend tools, shared context, suggestions, thread stores, and subscriptions.

Trusted Inspector metadata

When the connected runtime reports inspectorMetadata: true in its runtime-info response, Core loads the optional InspectorMetadataV1 value in the background. The runtime connection and agent notifications finish first, so a slow or unavailable metadata route cannot delay the app.

Core exposes the object returned by Shared normalization unchanged through the getter and subscriber event. Older runtimes may omit usage.expiringSoonCount; that absence remains valid V1 usage. A value of 0 means known zero and stays different from absence. Shared omits a malformed expiry leaf without removing valid used, limit, or sibling modules. Core does not calculate or rebuild expiry and does not require a V2 schema.

Read the latest value with inspectorMetadata, refresh it without reconnecting, or subscribe to changes:

import { CopilotKitCore } from "@copilotkit/core";

const copilotkit = new CopilotKitCore({
  runtimeUrl: "/api/copilotkit",
  headers: { Authorization: "Bearer app-session" },
  credentials: "include",
});

const subscription = copilotkit.subscribe({
  onInspectorMetadataChanged: ({ inspectorMetadata }) => {
    console.log(inspectorMetadata);
  },
});

await copilotkit.refreshInspectorMetadata();
console.log(copilotkit.inspectorMetadata);

subscription.unsubscribe();

Core sends the current headers and fetch credentials to the Copilot Runtime. A call to setHeaders() or setCredentials() clears the prior value before it starts a new metadata refresh, so trusted context cannot cross an auth-context change. Changing the runtime URL or transport, losing the capability, or disconnecting also clears the value.

Each refresh cancels the prior request and has a five-second deadline. Core also checks the runtime URL, requested and resolved transport, headers, credentials, connection, and capability before publishing a response. A stale success or failure cannot replace metadata from a newer connection. Route, timeout, parse, and subscriber failures stay isolated from the runtime connection.

See the CopilotKitCore reference and CopilotKitCoreSubscriber reference for the full API.