@fluidframework/tree-agent Package
A library for creating AI agents to interact with a https://fluidframework.com/docs/data-structures/tree/.
Interfaces
| Interface | Alerts | Description |
|---|---|---|
| Context | Alpha | The context object available to generated code when editing a tree. |
| EditResult | Alpha | A result from an edit attempt via the edit(js) function. |
| ExecuteSemanticEditingOptions | Alpha | Options for executeSemanticEditing(model, tree, prompt, options). |
| Logger | Alpha | Logger interface for logging events from a SharedTreeSemanticAgent. |
| SemanticAgentOptions | Alpha | Options used to parameterize the creation of a SharedTreeSemanticAgent. |
| SharedTreeChatModel | Alpha | A plugin interface that handles queries from a SharedTreeSemanticAgent. |
| SharedTreeChatQuery | Deprecated, Alpha | A query from a user to a SharedTreeSemanticAgent. |
| TreeAgent | Alpha | An agent that can analyze and edit a SharedTree. |
| TreeAgentAssistantMessage | Alpha | An assistant message containing the model's text response (when no tool call is made). |
| TreeAgentOptions | Alpha | Options for creating a tree agent via createTreeAgent(model, tree, options). |
| TreeAgentSystemMessage | Alpha | A system message providing context to the model. |
| TreeAgentToolCallMessage | Alpha | An assistant message requesting a tool call (e.g. to edit the tree). |
| TreeAgentToolResultMessage | Alpha | A tool result message containing the outcome of a tool invocation. |
| TreeAgentUserMessage | Alpha | A user message containing a query or instruction. |
Classes
| Class | Alerts | Modifiers | Description |
|---|---|---|---|
| PropertyDef | Alpha | A property definition class that describes the structure of the property | |
| SharedTreeSemanticAgent | Alpha | sealed | An agent that uses a SharedTreeChatModel to interact with a SharedTree. |
Types
| TypeAlias | Alerts | Description |
|---|---|---|
| AsynchronousEditor | Alpha | An asynchronous function that executes a string of JavaScript code to perform an edit within a SharedTreeSemanticAgent. |
| BindableSchema | Alpha | A type that represents an object schema class. |
| SynchronousEditor | Alpha | A synchronous function that executes a string of JavaScript code to perform an edit within a SharedTreeSemanticAgent. |
| TreeAgentChatMessage | Alpha | A role-tagged message in a tree agent conversation. |
| TreeAgentChatResponse | Alpha | A response from a SharedTreeChatModel after invoking it with a message history. |
| TreeView | Alpha | A SharedTree view for use by a SharedTreeSemanticAgent. |
| ViewOrTree | Alpha | A value that is either a TreeView or a subtree within a TreeView. |
Functions
| Function | Alerts | Return Type | Description |
|---|---|---|---|
| createContext(tree) | Alpha | Context<TSchema> | Creates a Context for the given subtree. |
| createTreeAgent(model, tree, options) | Alpha | TreeAgent | Creates an agent that can analyze and edit a SharedTree. |
| executeSemanticEditing(model, tree, prompt, options) | Alpha | Promise<string> | Executes semantic editing on a tree. |
Variables
| Variable | Alerts | Modifiers | Type | Description |
|---|---|---|---|---|
| llmDefault | Alpha | readonly | unique symbol | Include this property in a field's schema metadata to indicate that the field's value should be generated via a provided function rather than by the LLM. |
| typeFactory | Alpha | readonly | { instanceOf<T extends TreeNodeSchemaClass>(schema: T): TypeFactoryInstanceOf; string(): import("@fluidframework/type-factory/internal").TypeFactoryString; number(): import("@fluidframework/type-factory/internal").TypeFactoryNumber; boolean(): import("@fluidframework/type-factory/internal").TypeFactoryBoolean; date(): import("@fluidframework/type-factory/internal").TypeFactoryDate; void(): import("@fluidframework/type-factory/internal").TypeFactoryVoid; undefined(): import("@fluidframework/type-factory/internal").TypeFactoryUndefined; null(): import("@fluidframework/type-factory/internal").TypeFactoryNull; unknown(): import("@fluidframework/type-factory/internal").TypeFactoryUnknown; array(element: import("@fluidframework/type-factory/internal").TypeFactoryType): import("@fluidframework/type-factory/internal").TypeFactoryArray; promise(innerType: import("@fluidframework/type-factory/internal").TypeFactoryType): import("@fluidframework/type-factory/internal").TypeFactoryPromise; object(shape: Record<string, import("@fluidframework/type-factory/internal").TypeFactoryType>): import("@fluidframework/type-factory/internal").TypeFactoryObject; record(keyType: import("@fluidframework/type-factory/internal").TypeFactoryType, valueType: import("@fluidframework/type-factory/internal").TypeFactoryType): import("@fluidframework/type-factory/internal").TypeFactoryRecord; map(keyType: import("@fluidframework/type-factory/internal").TypeFactoryType, valueType: import("@fluidframework/type-factory/internal").TypeFactoryType): import("@fluidframework/type-factory/internal").TypeFactoryMap; tuple(items: readonly import("@fluidframework/type-factory/internal").TypeFactoryType[], rest?: import("@fluidframework/type-factory/internal").TypeFactoryType | undefined): import("@fluidframework/type-factory/internal").TypeFactoryTuple; union(options: readonly import("@fluidframework/type-factory/internal").TypeFactoryType[]): import("@fluidframework/type-factory/internal").TypeFactoryUnion; intersection(types: readonly import("@fluidframework/type-factory/internal").TypeFactoryType[]): import("@fluidframework/type-factory/internal").TypeFactoryIntersection; literal(value: string | number | boolean): import("@fluidframework/type-factory/internal").TypeFactoryLiteral; optional(innerType: import("@fluidframework/type-factory/internal").TypeFactoryType): import("@fluidframework/type-factory/internal").TypeFactoryOptional; readonly(innerType: import("@fluidframework/type-factory/internal").TypeFactoryType): import("@fluidframework/type-factory/internal").TypeFactoryReadonly; function(parameters: readonly import("@fluidframework/type-factory/internal").TypeFactoryFunctionParameter[], returnType: import("@fluidframework/type-factory/internal").TypeFactoryType, restParameter?: import("@fluidframework/type-factory/internal").TypeFactoryFunctionParameter | undefined): import("@fluidframework/type-factory/internal").TypeFactoryFunction; } | Namespace containing type factory functions. |
Function Details
createContext
Creates a Context for the given subtree.
To use, import via @fluidframework/tree-agent/alpha.
For more information about our API support guarantees, see here.
Signature
export declare function createContext<TSchema extends ImplicitFieldSchema>(tree: ViewOrTree<TSchema>): Context<TSchema>;
Type Parameters
| Parameter | Constraint | Description |
|---|---|---|
| TSchema | ImplicitFieldSchema |
Parameters
| Parameter | Type | Description |
|---|---|---|
| tree | ViewOrTree<TSchema> |
Returns
Return type: Context<TSchema>
createTreeAgent
Creates an agent that can analyze and edit a SharedTree.
To use, import via @fluidframework/tree-agent/alpha.
For more information about our API support guarantees, see here.
Signature
export declare function createTreeAgent<TSchema extends ImplicitFieldSchema>(model: SharedTreeChatModel, tree: ViewOrTree<TSchema>, options?: TreeAgentOptions<TSchema>): TreeAgent;
Type Parameters
| Parameter | Constraint | Description |
|---|---|---|
| TSchema | ImplicitFieldSchema |
Parameters
| Parameter | Modifiers | Type | Description |
|---|---|---|---|
| model | SharedTreeChatModel | The chat model. Must implement invoke(history) and have editToolName set. | |
| tree | ViewOrTree<TSchema> | The tree or subtree to edit. | |
| options | optional | TreeAgentOptions<TSchema> | Optional configuration. |
Returns
A TreeAgent.
Return type: TreeAgent
executeSemanticEditing
Executes semantic editing on a tree.
To use, import via @fluidframework/tree-agent/alpha.
For more information about our API support guarantees, see here.
Signature
export declare function executeSemanticEditing<TSchema extends ImplicitFieldSchema>(model: SharedTreeChatModel, tree: ViewOrTree<TSchema>, prompt: string, options?: ExecuteSemanticEditingOptions<TSchema>): Promise<string>;
Type Parameters
| Parameter | Constraint | Description |
|---|---|---|
| TSchema | ImplicitFieldSchema |
Parameters
| Parameter | Modifiers | Type | Description |
|---|---|---|---|
| model | SharedTreeChatModel | The chat model. Must implement invoke(history) and have editToolName set. | |
| tree | ViewOrTree<TSchema> | The tree or subtree to edit. | |
| prompt | string | The user's edit instruction. | |
| options | optional | ExecuteSemanticEditingOptions<TSchema> | Optional configuration. |
Returns
The model's text response.
Return type: Promise<string>
Variable Details
llmDefault
Include this property in a field's schema metadata to indicate that the field's value should be generated via a provided function rather than by the LLM.
To use, import via @fluidframework/tree-agent/alpha.
For more information about our API support guarantees, see here.
Signature
llmDefault: unique symbol
Type: unique symbol
Example
class Object extends schemaFactory.object("Object", {
created: sf.required(sf.number, {
custom: {
// The LLM will ignore this field, and instead it will be populated with the result of the function
[llmDefault]: () => Date.now(),
},
}),
}) {};
typeFactory
Namespace containing type factory functions.
To use, import via @fluidframework/tree-agent/alpha.
For more information about our API support guarantees, see here.
Signature
typeFactory: {
instanceOf<T extends TreeNodeSchemaClass>(schema: T): TypeFactoryInstanceOf;
string(): import("@fluidframework/type-factory/internal").TypeFactoryString;
number(): import("@fluidframework/type-factory/internal").TypeFactoryNumber;
boolean(): import("@fluidframework/type-factory/internal").TypeFactoryBoolean;
date(): import("@fluidframework/type-factory/internal").TypeFactoryDate;
void(): import("@fluidframework/type-factory/internal").TypeFactoryVoid;
undefined(): import("@fluidframework/type-factory/internal").TypeFactoryUndefined;
null(): import("@fluidframework/type-factory/internal").TypeFactoryNull;
unknown(): import("@fluidframework/type-factory/internal").TypeFactoryUnknown;
array(element: import("@fluidframework/type-factory/internal").TypeFactoryType): import("@fluidframework/type-factory/internal").TypeFactoryArray;
promise(innerType: import("@fluidframework/type-factory/internal").TypeFactoryType): import("@fluidframework/type-factory/internal").TypeFactoryPromise;
object(shape: Record<string, import("@fluidframework/type-factory/internal").TypeFactoryType>): import("@fluidframework/type-factory/internal").TypeFactoryObject;
record(keyType: import("@fluidframework/type-factory/internal").TypeFactoryType, valueType: import("@fluidframework/type-factory/internal").TypeFactoryType): import("@fluidframework/type-factory/internal").TypeFactoryRecord;
map(keyType: import("@fluidframework/type-factory/internal").TypeFactoryType, valueType: import("@fluidframework/type-factory/internal").TypeFactoryType): import("@fluidframework/type-factory/internal").TypeFactoryMap;
tuple(items: readonly import("@fluidframework/type-factory/internal").TypeFactoryType[], rest?: import("@fluidframework/type-factory/internal").TypeFactoryType | undefined): import("@fluidframework/type-factory/internal").TypeFactoryTuple;
union(options: readonly import("@fluidframework/type-factory/internal").TypeFactoryType[]): import("@fluidframework/type-factory/internal").TypeFactoryUnion;
intersection(types: readonly import("@fluidframework/type-factory/internal").TypeFactoryType[]): import("@fluidframework/type-factory/internal").TypeFactoryIntersection;
literal(value: string | number | boolean): import("@fluidframework/type-factory/internal").TypeFactoryLiteral;
optional(innerType: import("@fluidframework/type-factory/internal").TypeFactoryType): import("@fluidframework/type-factory/internal").TypeFactoryOptional;
readonly(innerType: import("@fluidframework/type-factory/internal").TypeFactoryType): import("@fluidframework/type-factory/internal").TypeFactoryReadonly;
function(parameters: readonly import("@fluidframework/type-factory/internal").TypeFactoryFunctionParameter[], returnType: import("@fluidframework/type-factory/internal").TypeFactoryType, restParameter?: import("@fluidframework/type-factory/internal").TypeFactoryFunctionParameter | undefined): import("@fluidframework/type-factory/internal").TypeFactoryFunction;
}
Type: { instanceOf<T extends TreeNodeSchemaClass>(schema: T): TypeFactoryInstanceOf; string(): import("@fluidframework/type-factory/internal").TypeFactoryString; number(): import("@fluidframework/type-factory/internal").TypeFactoryNumber; boolean(): import("@fluidframework/type-factory/internal").TypeFactoryBoolean; date(): import("@fluidframework/type-factory/internal").TypeFactoryDate; void(): import("@fluidframework/type-factory/internal").TypeFactoryVoid; undefined(): import("@fluidframework/type-factory/internal").TypeFactoryUndefined; null(): import("@fluidframework/type-factory/internal").TypeFactoryNull; unknown(): import("@fluidframework/type-factory/internal").TypeFactoryUnknown; array(element: import("@fluidframework/type-factory/internal").TypeFactoryType): import("@fluidframework/type-factory/internal").TypeFactoryArray; promise(innerType: import("@fluidframework/type-factory/internal").TypeFactoryType): import("@fluidframework/type-factory/internal").TypeFactoryPromise; object(shape: Record<string, import("@fluidframework/type-factory/internal").TypeFactoryType>): import("@fluidframework/type-factory/internal").TypeFactoryObject; record(keyType: import("@fluidframework/type-factory/internal").TypeFactoryType, valueType: import("@fluidframework/type-factory/internal").TypeFactoryType): import("@fluidframework/type-factory/internal").TypeFactoryRecord; map(keyType: import("@fluidframework/type-factory/internal").TypeFactoryType, valueType: import("@fluidframework/type-factory/internal").TypeFactoryType): import("@fluidframework/type-factory/internal").TypeFactoryMap; tuple(items: readonly import("@fluidframework/type-factory/internal").TypeFactoryType[], rest?: import("@fluidframework/type-factory/internal").TypeFactoryType | undefined): import("@fluidframework/type-factory/internal").TypeFactoryTuple; union(options: readonly import("@fluidframework/type-factory/internal").TypeFactoryType[]): import("@fluidframework/type-factory/internal").TypeFactoryUnion; intersection(types: readonly import("@fluidframework/type-factory/internal").TypeFactoryType[]): import("@fluidframework/type-factory/internal").TypeFactoryIntersection; literal(value: string | number | boolean): import("@fluidframework/type-factory/internal").TypeFactoryLiteral; optional(innerType: import("@fluidframework/type-factory/internal").TypeFactoryType): import("@fluidframework/type-factory/internal").TypeFactoryOptional; readonly(innerType: import("@fluidframework/type-factory/internal").TypeFactoryType): import("@fluidframework/type-factory/internal").TypeFactoryReadonly; function(parameters: readonly import("@fluidframework/type-factory/internal").TypeFactoryFunctionParameter[], returnType: import("@fluidframework/type-factory/internal").TypeFactoryType, restParameter?: import("@fluidframework/type-factory/internal").TypeFactoryFunctionParameter | undefined): import("@fluidframework/type-factory/internal").TypeFactoryFunction; }