buroventures-harald-code-core
Version:
Harald Code Core - Core functionality for AI-powered coding assistant
280 lines (279 loc) • 8.93 kB
TypeScript
/**
* @license
* Copyright 2025 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
import { z } from 'zod';
/**
* Zod schema for validating a file context from the IDE.
*/
export declare const FileSchema: z.ZodObject<{
path: z.ZodString;
timestamp: z.ZodNumber;
isActive: z.ZodOptional<z.ZodBoolean>;
selectedText: z.ZodOptional<z.ZodString>;
cursor: z.ZodOptional<z.ZodObject<{
line: z.ZodNumber;
character: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
line: number;
character: number;
}, {
line: number;
character: number;
}>>;
}, "strip", z.ZodTypeAny, {
path: string;
timestamp: number;
cursor?: {
line: number;
character: number;
} | undefined;
isActive?: boolean | undefined;
selectedText?: string | undefined;
}, {
path: string;
timestamp: number;
cursor?: {
line: number;
character: number;
} | undefined;
isActive?: boolean | undefined;
selectedText?: string | undefined;
}>;
export type File = z.infer<typeof FileSchema>;
export declare const IdeContextSchema: z.ZodObject<{
workspaceState: z.ZodOptional<z.ZodObject<{
openFiles: z.ZodOptional<z.ZodArray<z.ZodObject<{
path: z.ZodString;
timestamp: z.ZodNumber;
isActive: z.ZodOptional<z.ZodBoolean>;
selectedText: z.ZodOptional<z.ZodString>;
cursor: z.ZodOptional<z.ZodObject<{
line: z.ZodNumber;
character: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
line: number;
character: number;
}, {
line: number;
character: number;
}>>;
}, "strip", z.ZodTypeAny, {
path: string;
timestamp: number;
cursor?: {
line: number;
character: number;
} | undefined;
isActive?: boolean | undefined;
selectedText?: string | undefined;
}, {
path: string;
timestamp: number;
cursor?: {
line: number;
character: number;
} | undefined;
isActive?: boolean | undefined;
selectedText?: string | undefined;
}>, "many">>;
}, "strip", z.ZodTypeAny, {
openFiles?: {
path: string;
timestamp: number;
cursor?: {
line: number;
character: number;
} | undefined;
isActive?: boolean | undefined;
selectedText?: string | undefined;
}[] | undefined;
}, {
openFiles?: {
path: string;
timestamp: number;
cursor?: {
line: number;
character: number;
} | undefined;
isActive?: boolean | undefined;
selectedText?: string | undefined;
}[] | undefined;
}>>;
}, "strip", z.ZodTypeAny, {
workspaceState?: {
openFiles?: {
path: string;
timestamp: number;
cursor?: {
line: number;
character: number;
} | undefined;
isActive?: boolean | undefined;
selectedText?: string | undefined;
}[] | undefined;
} | undefined;
}, {
workspaceState?: {
openFiles?: {
path: string;
timestamp: number;
cursor?: {
line: number;
character: number;
} | undefined;
isActive?: boolean | undefined;
selectedText?: string | undefined;
}[] | undefined;
} | undefined;
}>;
export type IdeContext = z.infer<typeof IdeContextSchema>;
/**
* Zod schema for validating the 'ide/contextUpdate' notification from the IDE.
*/
export declare const IdeContextNotificationSchema: z.ZodObject<{
method: z.ZodLiteral<"ide/contextUpdate">;
params: z.ZodObject<{
workspaceState: z.ZodOptional<z.ZodObject<{
openFiles: z.ZodOptional<z.ZodArray<z.ZodObject<{
path: z.ZodString;
timestamp: z.ZodNumber;
isActive: z.ZodOptional<z.ZodBoolean>;
selectedText: z.ZodOptional<z.ZodString>;
cursor: z.ZodOptional<z.ZodObject<{
line: z.ZodNumber;
character: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
line: number;
character: number;
}, {
line: number;
character: number;
}>>;
}, "strip", z.ZodTypeAny, {
path: string;
timestamp: number;
cursor?: {
line: number;
character: number;
} | undefined;
isActive?: boolean | undefined;
selectedText?: string | undefined;
}, {
path: string;
timestamp: number;
cursor?: {
line: number;
character: number;
} | undefined;
isActive?: boolean | undefined;
selectedText?: string | undefined;
}>, "many">>;
}, "strip", z.ZodTypeAny, {
openFiles?: {
path: string;
timestamp: number;
cursor?: {
line: number;
character: number;
} | undefined;
isActive?: boolean | undefined;
selectedText?: string | undefined;
}[] | undefined;
}, {
openFiles?: {
path: string;
timestamp: number;
cursor?: {
line: number;
character: number;
} | undefined;
isActive?: boolean | undefined;
selectedText?: string | undefined;
}[] | undefined;
}>>;
}, "strip", z.ZodTypeAny, {
workspaceState?: {
openFiles?: {
path: string;
timestamp: number;
cursor?: {
line: number;
character: number;
} | undefined;
isActive?: boolean | undefined;
selectedText?: string | undefined;
}[] | undefined;
} | undefined;
}, {
workspaceState?: {
openFiles?: {
path: string;
timestamp: number;
cursor?: {
line: number;
character: number;
} | undefined;
isActive?: boolean | undefined;
selectedText?: string | undefined;
}[] | undefined;
} | undefined;
}>;
}, "strip", z.ZodTypeAny, {
method: "ide/contextUpdate";
params: {
workspaceState?: {
openFiles?: {
path: string;
timestamp: number;
cursor?: {
line: number;
character: number;
} | undefined;
isActive?: boolean | undefined;
selectedText?: string | undefined;
}[] | undefined;
} | undefined;
};
}, {
method: "ide/contextUpdate";
params: {
workspaceState?: {
openFiles?: {
path: string;
timestamp: number;
cursor?: {
line: number;
character: number;
} | undefined;
isActive?: boolean | undefined;
selectedText?: string | undefined;
}[] | undefined;
} | undefined;
};
}>;
type IdeContextSubscriber = (ideContext: IdeContext | undefined) => void;
/**
* Creates a new store for managing the IDE's context.
* This factory function encapsulates the state and logic, allowing for the creation
* of isolated instances, which is particularly useful for testing.
*
* @returns An object with methods to interact with the IDE context.
*/
export declare function createIdeContextStore(): {
setIdeContext: (newIdeContext: IdeContext) => void;
getIdeContext: () => IdeContext | undefined;
subscribeToIdeContext: (subscriber: IdeContextSubscriber) => () => void;
clearIdeContext: () => void;
};
/**
* The default, shared instance of the IDE context store for the application.
*/
export declare const ideContext: {
setIdeContext: (newIdeContext: IdeContext) => void;
getIdeContext: () => IdeContext | undefined;
subscribeToIdeContext: (subscriber: IdeContextSubscriber) => () => void;
clearIdeContext: () => void;
};
export {};