Commit Graph

48 Commits

Author SHA1 Message Date
Tyler Slaton 2c531ffab9 test(scripts): capture fallback-array missing-decl warning; note ExportsEntry mirror
CR-loop final polish (non-behavioral):
- tsdown-exports.test.ts: the "maps over fallback-array targets" case left an
  unspied console.warn (b.mjs has no adjacent declaration) leaking to stderr.
  Wrap it in withWarnSpy and assert the warning fired — the declaration-less
  element is reported, not silently dropped.
- tsdown-exports.d.mts / validate-package-exports-types.ts: cross-reference the
  two hand-mirrored ExportsEntry definitions so they cannot drift silently.

No source behavior change; 36 tests pass, validate:exports exits 0.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-09 20:40:27 -07:00
Tyler Slaton 7df369f955 fix(build): generalize per-mode resolution to all conditions; fail-loud helper
CR-loop confirmation-round #4 findings:

- validator: `resolvesForMode` (renamed from `typesCoversMode`) now applies to
  EVERY condition, not just `types`. A partial object under `node`/`default`
  (active in both modes) no longer silently covers the mode it lacks —
  resolution falls through to the sibling, catching the untyped-JS #3324 shape
  there. This completes the per-mode model.
- helper: `withTypesConditions` throws on a non-object `exports` (bare string /
  array) instead of iterating it into a corrupt map; `typedTarget` now warns
  loudly when a JS target has no adjacent declaration (was silent, contradicting
  the helper's own fail-loud contract); idempotency skips only the helper's own
  `{ types: <string>, ... }` output, so a hand-authored types-first PARTIAL
  object is normalized (its untyped sibling gets a `types`). UMD / `.d.mts` docs
  corrected; `ctx.pkg: unknown` documented as intentional (weak-type constraint).
- tests: node/default partial fall-through regression; types-first-partial
  normalization; a helper->validator round-trip; a console.warn assertion for
  the missing-declaration path; split the untouched-target test into silent
  (non-JS) and warning (JS) cases.
- react-native: dropped a pre-existing duplicate `@ag-ui/client` external.

Call sites: resolvesForMode (internal, walk + recursion; grep-confirmed no
`typesCoversMode` refs); withTypesConditions signature unchanged, and the new
throw/warn never fire on tsdown's real input (object map, packageJsonPath
present, dts:true).

36 tests pass; validator typechecks; validate:exports exits 0; native-loader
builds of react-core + react-native unchanged.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-09 20:40:27 -07:00
Tyler Slaton f0c7e74ee4 fix(build): resolve object-valued types per mode; discriminating guard tests
CR-loop confirmation-round #3 findings:

- validator: a `types` condition now "wins" a resolution mode only when it
  actually covers that mode (new `typesCoversMode`). A partial object `types`
  (e.g. only `import`) no longer silently covers `require` — resolution falls
  through to the sibling, catching a real #3324 shape the checker previously
  missed. normalizeExports doc + a "read or parse" message tidied.
- helper: idempotency now keys on the FIRST condition being `types` (its own
  output shape) rather than mere presence, so a hand-authored `types`-last
  entry is normalized instead of passed through — keeping helper output
  consistent with what the validator accepts. JSDoc corrected (acts on every
  condition target, requires a subpath map, only ADDS a missing `types`).
- tests: made the runtime-only test discriminating (a `browser`-only target
  must not be flagged — the prior fixture couldn't catch a regression);
  exercised `node`; added partial/well-formed object-`types`, top-level
  fallback array, and types-last normalization cases.

Call sites: typesCoversMode (new internal, called by walk); walk/withTypes
signatures unchanged; isActiveCondition now also used by typesCoversMode.

32 tests pass; validator typechecks; real 25-package validate:exports exits 0;
native-loader react-core build unchanged.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-09 20:40:26 -07:00
Tyler Slaton f0c3b4bba7 fix(build): model per-mode exports resolution and wire the helper test into CI
CR-loop confirmation-round findings on the #3324 guard:

- validator: replace the single-`typesIndex` model with per-mode resolution.
  import- and require-mode resolve independently (each picks the first present
  of {types, <mode>, node, default} in object order), so a trailing
  `default`/`node` shadowed by a typed `import` + `require` is no longer a false
  positive, while a genuinely misordered/absent `types` is still flagged.
- helper: make `withTypesConditions` idempotent (skip an object that already
  carries a `types` key, so re-application never re-nests `default`) and
  optional-chain `ctx` so a missing context hits the fail-loud message.
- CI: run scripts/__tests__/tsdown-exports.test.ts in the guard workflow (the
  helper is the mechanism that injects the types conditions, and its test ran
  in NO workflow) and add it to the trigger `paths`; note the standalone gate
  validates committed artifacts, not build output.
- tests: assert `types` is emitted FIRST via serialization (toEqual is
  key-order-insensitive and missed a types-last regression); add idempotency and
  trailing-default regression cases.
- react-native: document why its exports map is hand-maintained (no tsdown
  `exports` hook) and guarded by validate:exports.

Call sites enumerated:
- walk / findExportsTypeViolations — internal to the validator + its tests;
  signatures unchanged. JS_CONDITIONS removed (grep-confirmed no refs); replaced
  by RESOLUTION_MODES + isActiveCondition.
- withTypesConditions — 13 tsdown configs via customExports; signature
  unchanged, tsdown always supplies ctx.pkg.packageJsonPath and never re-applies
  or emits null/array, so the new guards never fire on current input.

28 tests pass; validator typechecks; real 25-package validate:exports exits 0.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-09 20:40:26 -07:00
Tyler Slaton 1e65309252 fix(build): harden exports-types validator and helper for the full exports grammar
CR-loop findings on the #3324 regression guard:

- validator: normalize bare-string and conditions-only `exports` sugar to the
  "." subpath (previously a false negative / false positive); flag a `types`
  condition shadowed by an earlier import/require/node/default — a misordered
  `types` is the exact #3324 failure a strict resolver hits; recurse into
  object-valued `types`; ignore runtime-only conditions (browser/deno/...) so a
  typed import/require sibling is not falsely flagged; attach the file path and
  `cause` when a package.json fails to parse.
- helper: guard `null` (blocked subpath) and array (fallback) targets — the old
  code crashed on null and corrupted arrays into objects; fail loud if
  `packageJsonPath` is missing rather than silently emitting a types-less map.
- tests: hermetic fixture coverage for package discovery/filtering + the new
  exports shapes, and a new tsdown-exports.test.ts covering the previously
  untested `withTypesConditions` helper.

Call sites enumerated:
- withTypesConditions — 13 tsdown configs via customExports. tsdown always
  supplies packageJsonPath and generates no null/array targets, so the new
  throw/guards never fire on current input (verified: native-loader build of
  react-core unchanged, exports byte-identical).
- findExportsTypeViolations / validateAllPackages — signature unchanged;
  callers are the validator CLI and the tests. Real 25-package
  `validate:exports` still exits 0.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-09 20:40:25 -07:00
Tyler Slaton fcac2e9911 fix(build): add types condition to package.json exports maps (#3324)
Under moduleResolution bundler/node16/nodenext, TypeScript ignores the
top-level "types" field once an "exports" map exists, so strict-exports
tooling (e.g. the Backstage CLI) resolves no type declarations and reports
every named export as "has no exported member". tsdown does not emit a
types condition in the exports map it generates.

Add one — first, per import/require, ESM to .d.mts and CJS to .d.cts — via
a shared withTypesConditions helper (scripts/tsdown-exports.ts) wired into
each tsdown config, and directly in the hand-maintained react-native map.

Add a regression guard, since attw and publint do NOT catch this (TS's
adjacent-file fallback masks it): scripts/validate-package-exports-types.ts,
unit + all-package tests, a validate:exports npm script, and a CI workflow
that fail if any publishable package's exports map lacks a types condition.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-09 20:38:10 -07:00
Sam Julien 3ae761a966 chore(docs): remove retired docs app (#5548)
## Summary
- remove the retired top-level `docs/` Next app and the disabled
docs-sync workflow/script
- add `docs -> showcase/shell-docs` as a top-level symlink for `cd docs`
muscle memory without restoring the old docs tree
- move the docs model allowlist into `showcase/shell-docs/` and retarget
docs validation/doctest extraction to shell-docs content
- update docs/agent guidance and CI path filters so `docs/` is treated
as an alias, not an active separate docs surface
- tighten the pre-commit package check so non-package docs/tooling
changes do not fan out into the full package matrix

## Validation
- `pnpm exec tsx scripts/validate-doc-model-names.ts`
- `pnpm exec tsx scripts/doc-tests/extract.ts`
- `pnpm exec vitest run
scripts/__tests__/validate-doc-model-names.test.ts
scripts/doc-tests/__tests__/extract.test.ts
showcase/harness/src/cli/eval/scope.test.ts`
- `pnpm exec oxlint showcase/harness/src/cli/eval/scope.test.ts
scripts/doc-tests/extract.ts`
- `git diff --cached --check` before follow-up commit
- `test "$(readlink docs)" = "showcase/shell-docs"`
- `test -f docs/package.json`
- `pnpm exec oxfmt --check .claude/docs/documentation.md
.claude/docs/hooks.md AGENTS.md CLAUDE.md CONTRIBUTING.md
showcase/shell-docs/README.md`
- commit hooks passed

## Notes
- historical docs remain recoverable from
`archive/docs-save-do-not-prune` and `archive/docs-retired-2026-06-17`
- I intentionally left Vercel/project teardown out of this PR; this is
repo cleanup only
2026-06-19 07:33:51 -07:00
Sam Julien 33a79485b6 chore(docs): remove retired docs app 2026-06-18 10:54:16 -07:00
Austin Merrick 2829daff03 fix(plugin): sync marketplace metadata.version and re-pin to runtime 1.60.2
The plugin version pins to packages/runtime/package.json, but plugin.json
(1.60.0) and marketplace.json (plugins[0] 1.60.0, metadata 1.57.3) had
rotted behind the runtime package (1.60.2), so check:plugin-skills was
failing on main.

handleVersionSync previously managed only plugin.json.version and
marketplace plugins[0].version, leaving marketplace metadata.version
unmanaged and free to drift independently. Extend it to track
metadata.version against the runtime version too, and re-run the sync to
bring all three fields to 1.60.2.
2026-06-18 09:23:03 -07:00
Benjamin Taylor 26ea1187e7 Merge ben1/intelligence-threads-examples-rollout into codex/ent-734-crewai-crews
Graft resolution (her branch predates the crewai-crews rebuild on main):
- page.tsx: jpr5's rebuilt full demo (setThemeColor/updateProverb/
  get_weather tools, seed effect, delete buttons, WeatherCard) is the
  base; her threads shell (drawer + gate + provider) grafted around it;
  agent key AGENT_ID=default (was starterAgent on her branch)
- layout/route/package.json: rollout side (default key, AGENT_URL
  normalization, 1.59.3) + her drawer deps + intelligence route block
- contract test: crewai-crews added to the parameterized array (66/66)
- lockfile regenerated; .gitignore !.env.example negation added

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 10:26:23 -05:00
Benjamin Taylor 5071060eac Merge ben1/intelligence-threads-examples-rollout into codex/ent-734-strands-python
Conflict resolutions:
- contract test: keep the rollout's parameterized version and add
  strands-python to migratedIntegrations/appRoots (60/60 passing) in
  place of her bespoke MIGRATED_INSTANCES file
- parity manifest: rollout's version with strands' three threads-shield
  allowances removed (mirrors the langgraph-fastapi migration); parity
  verify green — strands now 88 tracked files, zero drift
- package-lock: regenerated at 1.59.3 (a2ui-renderer stays 1.56.5,
  the family-wide pin shared with the north-star)

Also rides: her react-core A2UIMessageRenderer test flake fix
(act -> waitFor), kept intentionally.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 10:22:53 -05:00
Benjamin Taylor 7b4e5d1169 Merge ben1/intelligence-threads-examples-rollout into codex/ent-734-agentcore
Conflict resolution: take the rollout's contract test and append the
agentcore describe block (CDK lambda runtime gate, Vite frontend with
import.meta.env gate, docker env wiring). Bump both agentcore
package.jsons 1.59.1 -> 1.59.3 + regen lockfiles. 54/54.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 09:57:10 -05:00
Benjamin Taylor da45029d70 Merge ben1/intelligence-threads-examples-rollout into codex/ent-734-a2a-a2ui
Conflict resolution: take the rollout's parameterized contract test and
append the a2a-a2ui bespoke tests (namespaced helper, 1.59.3 pins).
Bump a2a-a2ui @copilotkit/* 1.59.1 -> 1.59.3 + regen lockfile. 49/49.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 09:53:16 -05:00
Benjamin Taylor 3de8146d5d chore(integrations): unify all threads examples on CopilotKit 1.59.3
- bump a2a-middleware, mcp-apps, agent-spec from 1.59.1 (their verified
  pre-revert state) to 1.59.3 to match the starters
- regenerate package-lock.json for the 11 examples whose package.json
  changed (drawer deps re-added on starters, version bumps on the three)
- update the migration contract test's version assertions to 1.59.3
  (43/43 passing); oxfmt pass

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 09:33:20 -05:00
Benjamin Taylor 041a561381 Revert "Revert "feat(integrations): add Intelligence threads to agent-spec" (#5216)"
This reverts commit ec856ab314, reversing
changes made to 9e7e7e653d.
2026-06-04 09:25:37 -05:00
Benjamin Taylor 4243bd0fa7 Revert "Revert "feat(integrations): add Intelligence threads to langgraph-fastapi" (#5215)"
This reverts commit 9e7e7e653d, reversing
changes made to 11e18e378a.

# Conflicts:
#	examples/integrations/langgraph-fastapi/package-lock.json
2026-06-04 09:25:37 -05:00
Benjamin Taylor 7762c43863 Reapply the ENT-679 Intelligence threads rollout (revert of #5217)
Restores #5151 (north-star + batch 1 + crewai-flows + llamaindex),
#5196 (pydantic-ai), #5205 (a2a-middleware), #5211 (mcp-apps), reconciled
onto the current main baseline rather than the pre-revert tree:

- keep main's 1.59.3 pins, AGENT_URL normalization, default agent keys,
  useConfigureSuggestions, available:false, useRenderTool
  status/parameters API, call-time agent.state reads, and crewai-crews'
  rebuilt page (not yet threads-migrated)
- graft the threads layer (drawer/gate/provider, env-gated route
  intelligence block, next.config gate, env docs, drawer deps) on top
- drop threads-era sidebar suggestions props where main now registers
  suggestions via useConfigureSuggestions (or omits them)
- fix the stale pydantic-ai doc link main reintroduced in ms-af-dotnet

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 09:25:16 -05:00
Benjamin Taylor 3721e7b36b Revert "feat(integrations): Intelligence threads — north-star foundation + batch 1 (7 examples on 1.59.1) [ENT-679] (#5151)"
This reverts commit f3ec5ddcec, reversing
changes made to be20a389cf.

# Conflicts:
#	examples/integrations/adk/src/app/layout.tsx
#	examples/integrations/adk/src/app/page.tsx
#	examples/integrations/agno/src/app/layout.tsx
#	examples/integrations/agno/src/app/page.tsx
#	examples/integrations/crewai-crews/src/app/layout.tsx
#	examples/integrations/llamaindex/src/app/api/copilotkit/[[...slug]]/route.ts
#	examples/integrations/llamaindex/src/app/layout.tsx
#	examples/integrations/llamaindex/src/app/page.tsx
#	examples/integrations/mastra/src/app/layout.tsx
#	examples/integrations/mastra/src/app/page.tsx
#	examples/integrations/ms-agent-framework-dotnet/src/app/layout.tsx
#	examples/integrations/ms-agent-framework-dotnet/src/app/page.tsx
#	examples/integrations/ms-agent-framework-python/src/app/layout.tsx
#	examples/integrations/ms-agent-framework-python/src/app/page.tsx
#	examples/integrations/pydantic-ai/src/app/layout.tsx
2026-06-03 20:47:46 -05:00
Benjamin Taylor 1ef370440b Revert "feat(integrations): add Intelligence threads to pydantic-ai (#5196)"
This reverts commit f4fa8e5c02, reversing
changes made to f3ec5ddcec.

# Conflicts:
#	examples/integrations/pydantic-ai/src/app/page.tsx
2026-06-03 20:46:08 -05:00
Benjamin Taylor 5dfafcbfcf Revert "feat(examples): add Intelligence threads to a2a-middleware (#5205)"
This reverts commit a5fbb5c2b5, reversing
changes made to a9d807d8e7.
2026-06-03 20:44:00 -05:00
Benjamin Taylor 797511f9e3 Revert "feat(integrations): add Intelligence threads to mcp-apps (#5211)"
This reverts commit bc8cec6092, reversing
changes made to 2103d0c875.
2026-06-03 20:43:51 -05:00
Mike Ryan 806c35e4af Revert "feat(integrations): add Intelligence threads to agent-spec" 2026-06-03 18:33:49 -07:00
Mike Ryan 1e1aadbad8 Revert "feat(integrations): add Intelligence threads to langgraph-fastapi" 2026-06-03 18:28:56 -07:00
Benjamin Taylor f26e4b1d81 Merge origin/main into codex/ent-734-agent-spec
Conflict resolution (contract test): keep main's 6-entry array + appRoots
map, add agent-spec (src/app), and merge her REST-transport relaxation
(layout+page concat — agent-spec's provider is page-level) with main's
appRoots-based paths. 43/43 passing.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 20:21:57 -05:00
Benjamin Taylor a42eb45997 Merge origin/main into codex/ent-734-mcp-apps
Post-merge fix: add the missing examples/integrations/mcp-apps/.env.example
(+ .gitignore negation, crewai-flows precedent) — the contract test
'mcp-apps documents the local Intelligence environment' was failing
because the file was never added. 37/37 passing on the merged tree.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 18:03:32 -05:00
Benjamin Taylor a8ca87a597 Merge origin/main into codex/ent-734-a2a-middleware
Conflict resolution: take main's 4-entry migratedIntegrations array and
keep the a2a-middleware-specific contract tests + helper (a2a-middleware
uses app/ root + custom chat, so it doesn't fit the parameterized
src/app contract). 31/31 passing.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 17:51:49 -05:00
Martha Schumann 1c4d2d4951 fix(integrations): restore mcp-apps thread replay 2026-06-03 15:43:48 -07:00
Martha Schumann 811458931f feat(integrations): add Intelligence threads to mcp-apps 2026-06-03 15:39:47 -07:00
Martha Schumann 4a2fdb611b feat(integrations): add Intelligence threads to agent-spec 2026-06-03 15:33:25 -07:00
Benjamin Taylor d38bac48d4 Merge origin/main into codex/ent-734-langgraph-fastapi
Conflict + post-merge resolutions:
- integration test (add/add): fold into the parameterized batch-2 contract
  test; migratedIntegrations now includes langgraph-fastapi (24/24 pass).
- _parity/manifest.json: keep her langgraph-fastapi allowance removals
  (threads-drawer/page.tsx/next.config now fully tracked), but drop the
  stale strands-python shielding her branch added (example-layout +
  docker-route-override divergence, @copilotkit 1.56.5 packageJsonOverrides)
  — strands is already parity-synced at 1.59.1 on main; those overrides
  would have made the next parity:sync rewrite it back to 1.56.5.
- parity verify on the merged tree: langgraph-js 82 ok / langgraph-fastapi
  91 ok / strands-python 83 ok, zero drift.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 17:30:16 -05:00
Martha Schumann 691afa5890 feat(examples): add Intelligence threads to agentcore 2026-06-03 15:24:40 -07:00
Benjamin Taylor 62c5489614 Merge origin/main into codex/ent-734-pydantic-ai
Conflict resolutions:
- page.tsx: keep the threads layout; swap the dead v1 sidebar labels
  (title/initial) for the v2 keys (modalHeaderTitle 'Popup Assistant' +
  welcomeMessageText) the starter smoke asserts, and carry over main's
  disableSystemMessage + clickOutsideToClose. Keep her useRenderTool
  render({ parameters }) — that is the actual v2 RenderToolProps shape;
  main's render({ args }) was a latent runtime bug (args is not a prop).
- package.json: keep the drawer UI deps (class-variance-authority, clsx).
- integration test: fold into the parameterized batch-2 contract test;
  migratedIntegrations now crewai-flows + llamaindex + pydantic-ai (18/18).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 17:18:04 -05:00
Martha Schumann fc6f8e4503 feat(examples): add intelligence threads to a2a-middleware 2026-06-03 15:04:42 -07:00
Benjamin Taylor 8b04e695bd Merge ben1/ent-679-intelligence-ready-north-star into codex/ent-734-llamaindex
Conflict resolutions:
- page.tsx: keep the threads layout (drawer + gate + provider) and restore
  the v2 sidebar labels (modalHeaderTitle 'Popup Assistant' +
  welcomeMessageText) the starter smoke asserts, plus clickOutsideToClose.
- layout.tsx: keep the REST-transport explainer comment.
- integration test: keep the parameterized batch-2 contract test from
  crewai-flows and add llamaindex to migratedIntegrations (12/12 pass).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 17:03:04 -05:00
Martha Schumann f481672be0 feat(integrations): add strands-python intelligence threads 2026-06-03 14:29:50 -07:00
Martha Schumann 516cea5f04 feat(examples): add intelligence threads to a2a-a2ui 2026-06-03 14:28:57 -07:00
Martha Schumann 03159f2e87 feat(integrations): add Intelligence threads to llamaindex 2026-06-03 13:51:33 -07:00
Martha Schumann a42a44a882 feat(integrations): add Intelligence threads to crewai-crews 2026-06-03 13:51:15 -07:00
Martha Schumann 9f495e6c69 feat(integrations): add Intelligence threads to langgraph-fastapi 2026-06-03 13:37:20 -07:00
Martha Schumann d5aaf6e9db feat(integrations): add Intelligence threads to pydantic-ai 2026-06-03 13:21:02 -07:00
Martha Schumann a736b29306 feat(integrations): add Intelligence threads to crewai-flows 2026-06-03 11:26:24 -07:00
Austin Merrick ff4e58f704 fix(skills): update sync tests to reflect new RESERVED_LIFECYCLE_SLUGS 2026-05-22 11:32:31 -07:00
Alem Tuzlak 65928b9ca3 Merge remote-tracking branch 'origin/main' into worktree-lucky-popping-wren
# Conflicts:
#	package.json
2026-05-20 10:54:04 +02:00
Martha Schumann a274ce2023 chore(examples/integrations): scope to ADK only per review
Reverts the 14 other framework bumps and 2 lockfile regens. Each
framework needs per-framework QA against 1.56.4 before being shipped
in a sweep — too risky for the demo timeline to bump them all at once.

The validator now uses an explicit ENFORCED allowlist (currently just
adk) with an inline comment documenting the scope decision. Other
integrations get added to ENFORCED as QA clears each framework. The
structural fix (release-please automation that bumps integrations in
lockstep on each release) is tracked in CPK-7534.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 12:00:27 -07:00
github-actions[bot] 04460a155d style: auto-fix formatting 2026-04-28 18:15:02 +00:00
Martha Schumann 7673a0bb1a fix(examples/integrations): bump stale @copilotkit/* pins to 1.56.4
The CLI scaffolder (npx copilotkit create -f <fw>) clones from
examples/integrations/<fw>/ on main. The @copilotkit/* deps in those
package.json files are bumped manually on release; 14 of 17 integrations
fell behind. Notable: ADK pinned 1.55.2 (missing useFrontendTool), mcp-apps
at 1.52.1, a2a-middleware floating on "latest". Issue #4253.

Adds scripts/validate-integration-pins.ts + a vitest live-tree check that
fails when any integration pins lag the monorepo release version, so the
gap can't reopen silently on the next release.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 11:11:57 -07:00
Alem Tuzlak ac73c316b0 feat(scripts): add plugin-skill mirror sync script with drift check 2026-04-22 15:45:44 +02:00
Jordan Ritter d8ca03fe46 feat: add model name validation for docs code blocks
Allowlist-based CI lint that extracts model names from docs MDX code
blocks and validates against docs/model-allowlist.json. Catches stale
model references (gpt-5.2 after gpt-5.4 ships) before they reach users.

- Regex extraction from model="...", model: "...", provider/model patterns
- Provider prefix stripping (openai/, anthropic/, google/, etc.)
- 20 unit tests
2026-04-08 18:55:25 -07:00