Skip to content

refactor(integrations): organize framework packages - #6017

Merged
ZaynJarvis merged 8 commits into
volcengine:mainfrom
ehz0ah:refactor/framework-integrations
Oct 15, 2026
Merged

ZaynJarvis merged 8 commits into
volcengine:mainfrom
ehz0ah:refactor/framework-integrations

Conversation

@ehz0ah

@ehz0ah ehz0ah commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

Description

Give maintained framework adapters one home under integrations/frameworks/, with each package owning its source, tests, examples, and documentation. Add a practical SDK-based guide for future framework integrations.

Previously these packages lived under examples/, and LangChain tests were spread across the repository. The new layout makes the implementation and maintenance boundary clear without changing adapter runtime behavior.

Human Involvement

  • A human participated in the implementation or review loop
  • This PR was generated entirely by AI agents without human participation in the loop

Related Issue

Follow-up to #5578. Preserves the standalone package boundary established in #3685 and #3711.

Type of Change

  • Breaking change
  • Documentation update
  • Refactoring
  • Test update

Changes Made

  • Move langchain-openviking (including LangGraph) and openviking-agent-framework into integrations/frameworks/. Move their tests and runnable examples alongside the packages.
  • Keep only repository/server boundary checks in the retained root test file. URI-classification cases and the base optional-import contract test now belong to the adapter's unit suite and are included in its sdist.
  • Remove the server's legacy LangChain forwarding namespace. Install langchain-openviking and replace openviking.integrations.langchain imports with langchain_openviking. No compatibility shim remains.
  • Add a shared adapter guide covering recall, execution, capture, extraction, identity, streaming, tool evidence, error handling, packaging, and references for building additional adapters.
  • Update CI, release paths, contribution maps, and documentation links. Retain release workflow identity and existing package names/dependency ranges.
  • Document the immediate legacy-import removal in both Unreleased changelogs and clarify in the guides and package READMEs that released v0.5.0 still has the old imports. Add source/layout boundary tests and checks in the Linux/macOS/Windows installed server-wheel smokes. Retired paths trigger the LangChain/boundary job and a lightweight shared layout job, including docs-only changes; MAF's workflow also watches its former path, while the shared job owns layout validation. The guards reject tracked/unignored files at retired locations, including documentation and manifests, while ignoring cache/build leftovers. They also work on Git exports through a filesystem fallback, and reserve only the specific retired directories.
  • Ship the existing AGPL license and Apache example license in both adapters' wheels and sdists through license-files. Raise LangChain's build-only setuptools minimum to 77 for this metadata support; runtime dependencies are unchanged.

All 17 runtime Python source files and existing runnable examples are byte-identical to the base. The only deleted tests are the two tests for the intentionally removed import aliases. Existing example licenses are retained in their new locations. Root server manifests, lockfile, and Docker configuration are unchanged.

Testing

Local validation on macOS:

Validation Result
LangChain/LangGraph, Python 3.12 223 passed, 1 skipped after rebase onto current main
LangChain/LangGraph, Python 3.10 222 passed, 2 skipped after rebase onto current main
MAF minimum dependencies (1.20.0 / SDK 0.1.13) 82 passed
MAF current dependencies (1.21.0 / SDK 0.1.15) 82 passed
MAF Python 3.10, installed wheel 82 passed
Cold wheel installs outside checkout LangChain package suite: 218 passed, 1 skipped; MAF: 82 passed; standalone imports and dependency checks pass
Wheel/sdist build and metadata checks Both packages pass; both sdists install and smoke successfully outside checkout
License archive inspection Both wheels and sdists contain byte-identical AGPL and Apache license texts; existing AGPL-3.0 metadata is preserved
Ruff, formatting, mypy Both packages pass
Root lock, workflow YAML, paths and links Pass; no server dependency changes
Migration guards 40 tracked/untracked stale-file cases rejected; ignored build/cache remnants pass. Shared layout job passes in a fresh pytest-only environment; MAF package contracts pass with minimum/current dependencies

Two legacy-alias tests were removed and two source/layout boundary tests added. The rebase preserves main's #5878 health regression cases and its newer timeout API changes; the relocated runtime sources remain byte-identical to current main. Existing streaming, tool capture, restoration, and commit-policy coverage remains intact. Both adapters' updated wheels were installed and smoke-tested outside the checkout. The three new installed server-wheel guards are exercised by GitHub CI; no full native server wheel was built locally. No live provider calls were rerun for this migration.

Checklist

  • My code follows the project's coding style
  • I have performed a self-review of my code
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings

Additional Notes

Public imports remain langchain_openviking and openviking_agent_framework. LangChain and LangGraph remain one distribution with the optional [langgraph] extra. MAF PyPI publication is a separate follow-up; its README includes checkout installation instructions.

PRs based on the former layout must move any newly added LangChain tests into integrations/frameworks/langchain/tests/ when rebasing. The guard keeps such tests from silently falling out of CI.

Maintainer confirmation before merge

  • Import removal: this is an intentional hard break with no deprecation period or compatibility stub. Please confirm this release boundary is acceptable; the English and Chinese changelogs now give the install/import migration steps.
  • Licensing: both adapters already declare AGPL in their metadata and source headers. This PR ships the existing repository license text. Please confirm that adapters should remain AGPL and runnable examples Apache-2.0, given the earlier blanket Apache wording for examples/. The existing AGPL-3.0 identifier is preserved; selecting AGPL-3.0-only or AGPL-3.0-or-later requires confirmation of the intended variant.

Rebased onto ae1e45e00 after #5878 and #6048 landed. All 70 integration test functions (and their three helpers) survive unchanged. Removed the redundant MAF layout steps, made the layout check name explicit, and made URI contract imports fail normally if the adapter installation is broken.

Move framework packages, tests, and examples into integrations/frameworks. Remove the legacy LangChain forwarding namespace and document canonical imports. Add an SDK-based adapter guide and update CI and release paths.

Signed-off-by: Hao Zhe <haozhe4547@gmail.com>
Signed-off-by: Hao Zhe <haozhe4547@gmail.com>
Signed-off-by: Hao Zhe <haozhe4547@gmail.com>
Signed-off-by: Hao Zhe <haozhe4547@gmail.com>
Signed-off-by: Hao Zhe <haozhe4547@gmail.com>
Signed-off-by: Hao Zhe <haozhe4547@gmail.com>
Signed-off-by: Hao Zhe <haozhe4547@gmail.com>
Signed-off-by: Hao Zhe <haozhe4547@gmail.com>

@ZaynJarvis ZaynJarvis left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Re-reviewed through 59c3387 with full local verification (merged tree tests, packaging, cold installs, layout guards); 3650a0a only touches integrations/frameworks/README.md. The openclaw-tests failure is pre-existing on main (#6048 removed the wait timeout). LGTM.

@ZaynJarvis
ZaynJarvis merged commit 6d1145a into volcengine:main Oct 15, 2026
22 of 23 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants