Selected component engine (#1562)
<!-- This is an auto-generated description by cubic. --> ## Summary by cubic Enable the Dyad Engine to prioritize a user-selected component by flagging the file as focused and sending codebase files per request. Keeps full context when the engine is on; falls back to path-scoped context when it’s off. - **New Features** - Mark the selected component file as focused when the engine is enabled. - Send codebase files to the engine via dyadFiles, applied to dyad_options unless disabled. - Maintain full chatContext with engine; restrict to the selected file path only when engine is off. - **Refactors** - Removed files from getModelClient and provider APIs; file transport moved into request payload. - Stream handlers now pass files to model calls and include dyadDisableFiles/dyadFiles in the request. - Added focused flag to CodebaseFile. <!-- End of auto-generated description by cubic. --> <!-- CURSOR_SUMMARY --> --- > [!NOTE] > Sends codebase files per request to the Dyad Engine, focuses the selected component when smart context is enabled, and refactors model client/provider APIs to remove file parameters. > > - **Engine integration**: > - Send codebase files per request via `dyadFiles` in provider options; propagate through `simpleStreamText` and `dyad-engine` options. > - Add `isSmartContextEnabled` from `get_model_client` and gate context behavior accordingly. > - **Selected component focus**: > - When smart context is on and a component is selected, mark its file as `focused` in `CodebaseFile` and avoid broad smart context includes; allow on-demand reads. > - When smart context is off, restrict `chatContext` to the selected file path. > - **Refactors**: > - Remove `files` parameter from `getModelClient` and Dyad provider; move file transport into request body. > - Update `llm_engine_provider` to read `dyadFiles` from request and populate `dyad_options.files` unless `dyadDisableFiles`. > - Extend `CodebaseFile` with optional `focused` flag; thread `files` through `chat_stream_handlers` calls. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 022b26d0197ab5b5d4f5b589f45bc230de36e0e5. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
This commit is contained in:
@@ -13,10 +13,7 @@ import { LanguageModelV2 } from "@ai-sdk/provider";
|
||||
const logger = log.scope("llm_engine_provider");
|
||||
|
||||
export type ExampleChatModelId = string & {};
|
||||
|
||||
export interface ExampleChatSettings {
|
||||
files?: { path: string; content: string }[];
|
||||
}
|
||||
export interface ExampleChatSettings {}
|
||||
export interface ExampleProviderSettings {
|
||||
/**
|
||||
Example API key.
|
||||
@@ -106,13 +103,7 @@ export function createDyadEngine(
|
||||
fetch: options.fetch,
|
||||
});
|
||||
|
||||
const createChatModel = (
|
||||
modelId: ExampleChatModelId,
|
||||
settings: ExampleChatSettings = {},
|
||||
) => {
|
||||
// Extract files from settings to process them appropriately
|
||||
const { files } = settings;
|
||||
|
||||
const createChatModel = (modelId: ExampleChatModelId) => {
|
||||
// Create configuration with file handling
|
||||
const config = {
|
||||
...getCommonModelConfig(),
|
||||
@@ -134,6 +125,10 @@ export function createDyadEngine(
|
||||
options.settings,
|
||||
),
|
||||
};
|
||||
const dyadFiles = parsedBody.dyadFiles;
|
||||
if ("dyadFiles" in parsedBody) {
|
||||
delete parsedBody.dyadFiles;
|
||||
}
|
||||
const requestId = parsedBody.dyadRequestId;
|
||||
if ("dyadRequestId" in parsedBody) {
|
||||
delete parsedBody.dyadRequestId;
|
||||
@@ -156,9 +151,9 @@ export function createDyadEngine(
|
||||
}
|
||||
|
||||
// Add files to the request if they exist
|
||||
if (files?.length && !dyadDisableFiles) {
|
||||
if (dyadFiles?.length && !dyadDisableFiles) {
|
||||
parsedBody.dyad_options = {
|
||||
files,
|
||||
files: dyadFiles,
|
||||
enable_lazy_edits: options.dyadOptions.enableLazyEdits,
|
||||
enable_smart_files_context:
|
||||
options.dyadOptions.enableSmartFilesContext,
|
||||
@@ -195,10 +190,7 @@ export function createDyadEngine(
|
||||
return new OpenAICompatibleChatLanguageModel(modelId, config);
|
||||
};
|
||||
|
||||
const provider = (
|
||||
modelId: ExampleChatModelId,
|
||||
settings?: ExampleChatSettings,
|
||||
) => createChatModel(modelId, settings);
|
||||
const provider = (modelId: ExampleChatModelId) => createChatModel(modelId);
|
||||
|
||||
provider.chatModel = createChatModel;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user