项目文件夹

0
Gyanu Mayank 190ea74239 Fail CI when a pnpm.overrides pin is declared but never applied (#3017)
`pnpm install --frozen-lockfile` only checks that the lockfile agrees
with the manifest. It does not check that a `pnpm.overrides` pin
actually rewrote the resolved graph, which is how a security override
can merge while the vulnerable version is still installed.

`scripts/check-pnpm-overrides.mjs` reads `pnpm.overrides` from the
workspace package.json files and fails if a resolved version is still
inside the override selector range, or if it does not satisfy the
override target. It runs as its own CI job so it does not need the
frontend install.

Locally: `pnpm check-overrides` or `node
scripts/check-pnpm-overrides.mjs`.

Fixes #3000

<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Fail CI when a `pnpm.overrides` pin is declared but not applied.
Previously CI only checked lockfile-manifest consistency and misread
`>`; now a dedicated job verifies overrides rewrite resolved
dependencies, treats `>`, `>=`, `<`, `<=`, `=` as version comparators,
and rejects parent-scoped selectors (including digit-leading children).

- Add `scripts/check-pnpm-overrides.mjs` to ensure each override is
recorded in the lockfile, resolved versions satisfy the target, and no
versions remain in the selector range; reject parent-scoped selectors
like `engine.io-client>ws` or `foo>123` in favor of package selectors
(e.g., `ws@>=8.21.0`).
- Add a GitHub Actions job "Lockfile: pnpm overrides" that runs the
script with Node 22, independent of the frontend install.
- Add `check-overrides` npm script for local runs.

<sup>Written for commit c02aa676d03ff744ea49ce9d4c37f5784411b7b7.
Summary will update on new commits.</sup>

<a
href="https://cubic.dev/pr/Chainlit/chainlit/pull/3017?utm_source=github"
target="_blank" rel="noopener noreferrer"
data-no-image-dialog="true"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"><source
media="(prefers-color-scheme: light)"
srcset="https://www.cubic.dev/buttons/review-in-cubic-light.svg"><img
alt="Review in cubic"
src="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"></picture></a>

<!-- End of auto-generated description by cubic. -->

---------

Co-authored-by: Mathijs de Bruin <mathijs@mathijsfietst.nl>
Co-authored-by: Gyanu <gyanum.ug20.cse@gmail.com>
2026-08-26 08:54:31 +00:00
2026-04-08 03:04:38 +00:00
2026-04-08 03:04:38 +00:00
2026-04-08 03:04:38 +00:00
2026-08-25 18:29:43 +02:00
2026-08-25 18:29:43 +02:00
2026-08-25 18:29:43 +02:00
2025-01-06 10:10:29 +01:00
2026-08-25 18:29:43 +02:00
2026-04-08 03:04:38 +00:00
2026-04-08 03:04:38 +00:00
2026-08-25 18:29:43 +02:00
2026-04-08 03:04:38 +00:00
2023-05-14 18:58:12 +02:00
2026-04-08 03:04:38 +00:00
2026-04-08 03:04:38 +00:00

Welcome to Chainlit 👋

Build python production-ready conversational AI applications in minutes, not weeks

chat on Discord Twitter Downloads Contributors CI

⚠️ Notice: Chainlit is now community-maintained.

As of May 1st 2025, the original Chainlit team has stepped back from active development. The project is maintained by @Chainlit/chainlit-maintainers under a formal Maintainer Agreement.

Maintainers are responsible for code review, releases, and security.
Chainlit SAS provides no warranties on future updates.

Want to help maintain? Apply here →

WebsiteDocumentationChainlit HelpCookbook

Chainlit%2Fchainlit | Trendshift

https://github.com/user-attachments/assets/b3738aba-55c0-42fa-ac00-6efd1ee0d148

Installation

Open a terminal and run:

pip install chainlit
chainlit hello

If this opens the hello app in your browser, you're all set!

Development version

The latest in-development version can be installed straight from GitHub with:

pip install git+https://github.com/Chainlit/chainlit.git#subdirectory=backend/

(Requires Node and pnpm installed on the system.)

🚀 Quickstart

🐍 Pure Python

Create a new file demo.py with the following code:

import chainlit as cl


@cl.step(type="tool")
async def tool():
    # Fake tool
    await cl.sleep(2)
    return "Response from the tool!"


@cl.on_message  # this function will be called every time a user inputs a message in the UI
async def main(message: cl.Message):
    """
    This function is called every time a user inputs a message in the UI.
    It sends back an intermediate response from the tool, followed by the final answer.

    Args:
        message: The user's message.

    Returns:
        None.
    """


    # Call the tool
    tool_res = await tool()

    await cl.Message(content=tool_res).send()

Now run it!

chainlit run demo.py -w

Quick Start

📚 More Examples - Cookbook

You can find various examples of Chainlit apps here that leverage tools and services such as OpenAI, Anthropiс, LangChain, LlamaIndex, ChromaDB, Pinecone and more.

Tell us what you would like to see added in Chainlit using the Github issues or on Discord.

💁 Contributing

As an open-source initiative in a rapidly evolving domain, we welcome contributions, be it through the addition of new features or the improvement of documentation.

For detailed information on how to contribute, see here.

📃 License

Chainlit is open-source and licensed under the Apache 2.0 license.