@convo-lang/convo-lang
Version:
The language of AI
1,413 lines • 69.6 kB
TypeScript
import type { ConversationOptions } from "./Conversation.js";
import { ConvoExecutionContext } from "./ConvoExecutionContext.js";
import { ConvoDocumentReference } from "./convo-rag-types.js";
import { ConvoBaseType, ConvoCompletion, ConvoCompletionMessage, ConvoCompletionService, ConvoFlowController, ConvoFunction, ConvoMessage, ConvoMessageModificationAction, ConvoMessageTemplate, ConvoMetadata, ConvoModelAlias, ConvoModelInfo, ConvoPrintFunction, ConvoScope, ConvoScopeError, ConvoScopeFunction, ConvoStatement, ConvoStringTemplateLiteralOptions, ConvoTag, ConvoThreadFilter, ConvoTokenUsage, ConvoTranscriptionRequest, ConvoTranscriptionSupportRequest, ConvoType, FlatConvoConversation, FlatConvoConversationBase, FlatConvoMessage, OptionalConvoValue, ParsedContentJsonOrString, StandardConvoSystemMessage, convoObjFlag } from "./convo-types.js";
import { ConvoGitFileStatus } from "./git/convo-git-types.js";
export declare const convoBodyFnName = "__body";
export declare const convoArgsName = "__args";
export declare const convoResultReturnName = "__return";
export declare const convoResultErrorName = "__error";
export declare const convoDisableAutoCompleteName = "__disableAutoComplete";
export declare const convoStructFnName = "struct";
export declare const convoNewFnName = "new";
export declare const convoMapFnName = "map";
export declare const convoArrayFnName = "array";
export declare const convoJsonMapFnName = "jsonMap";
export declare const convoJsonArrayFnName = "jsonArray";
export declare const convoSwitchFnName = "switch";
export declare const convoCaseFnName = "case";
export declare const convoDefaultFnName = "default";
export declare const convoTestFnName = "test";
export declare const convoPipeFnName = "pipe";
export declare const convoLocalFunctionModifier = "local";
export declare const convoExternFunctionModifier = "extern";
export declare const convoCallFunctionModifier = "call";
export declare const convoInvokeFunctionModifier = "invoke";
export declare const convoInvokeFunctionName = "invoke";
export declare const convoGlobalRef = "convo";
export declare const convoEnumFnName = "enum";
export declare const convoMetadataKey: unique symbol;
export declare const convoCaptureMetadataTag = "captureMetadata";
export declare const defaultConversationName = "default";
export declare const defaultConvoNodeId = "main";
export declare const convoUtilModels: {
readonly empty: "empty";
readonly echo: "echo";
};
export declare const convoLogDir = ".convo-lang-logs";
export declare const convoMsgModifiers: {
/**
* When applied to the function the function is used as the default function of an agent
*/
readonly agent: "agent";
};
export declare const convoScopedModifiers: "agent"[];
export declare const defaultConvoTask = "default";
export declare const convoAnyModelName = "__any__";
export declare const convoRagTemplatePlaceholder = "$$RAG$$";
export declare const convoRoles: {
/**
* Represents messages from the user
*/
readonly user: "user";
/**
* Represents messages from the LLM
*/
readonly assistant: "assistant";
/**
* System instruction messages
*/
readonly system: "system";
/**
* Groups messages together
*/
readonly group: "group";
/**
* Ends a group of messages
*/
readonly groupEnd: "groupEnd";
/**
* Used to add a prefix to the previous content message. Prefixes are not seen by the user.
*/
readonly prefix: "prefix";
/**
* Used to add a suffix to the previous content message. Suffixes are not seen by the user.
*/
readonly suffix: "suffix";
/**
* Appends content to the previous content message
*/
readonly append: "append";
/**
* Appends content to the last system message
*/
readonly appendSystem: "appendSystem";
/**
* Appends content to the last user message
*/
readonly appendUser: "appendUser";
/**
* Appends content to the last assistant message
*/
readonly appendAssistant: "appendAssistant";
/**
* Prepends content to the previous content message
*/
readonly prepend: "prepend";
/**
* Used to replace the content of the previous content message
*/
readonly replace: "replace";
/**
* Used to replace the content of the previous content message before sending to an LLM. The
* user will continue to see the previous content message.
*/
readonly replaceForModel: "replaceForModel";
/**
* Used to display message evaluated by inline / thinking prompts
*/
readonly thinking: "thinking";
/**
* Used to set variables set within inline / thinking prompts
*/
readonly thinkingResult: "thinkingResult";
/**
* Contains RAG content
*/
readonly rag: "rag";
/**
* Used to define a prefix to add to rag messages
*/
readonly ragPrefix: "ragPrefix";
/**
* Used to define a suffix to add to rag messages
*/
readonly ragSuffix: "ragSuffix";
/**
* A message used as a template to insert RAG content into. The value $$RAG$$ will be used replaced with the actual rag content
*/
readonly ragTemplate: "ragTemplate";
/**
* importTemplate messages are used to format imported content such as markdown.
*/
readonly importTemplate: "importTemplate";
/**
* When encountered a conversation will executed the preceding message before continuing unless
* preceded by a flushed message.
*/
readonly queue: "queue";
/**
* signals a queue has been flushed
*/
readonly flush: "flush";
/**
* Starts an insertion block. Insertion blocks are used to reorder messages in a flattened conversation.
*/
readonly insert: "insert";
/**
* Ends an insertion block.
*/
readonly insertEnd: "insertEnd";
/**
* No op role. Messages with this role are completely ignored
*/
readonly nop: "nop";
/**
* Used to track transform results including tokens used by transforms
*/
readonly transformResult: "transformResult";
/**
* Starts a parallel execution block
*/
readonly parallel: "parallel";
/**
* Ends a parallel execution block
*/
readonly parallelEnd: "parallelEnd";
/**
* Ends the definition of an agent
*/
readonly agentEnd: "agentEnd";
readonly call: "call";
readonly do: "do";
readonly result: "result";
readonly define: "define";
readonly debug: "debug";
readonly end: "end";
/**
* Used by the convo make build system to define a make target. `std://make.convo` must
* be imported to function correctly
*/
readonly target: "target";
/**
* Used by the convo make build system to define target defaults and configure build options
*/
readonly make: "make";
/**
* Used by the convo make build system to define an app. `std://make.convo` must
* be imported to function correctly
*/
readonly app: "app";
/**
* Used by the convo make build system to define a build stage. `std://make.convo` must
* be imported to function correctly
*/
readonly stage: "stage";
/**
* Groups following nodes as a single graph. The context of the
*/
readonly graph: "graph";
readonly graphEnd: "graphEnd";
/**
* Defines the start of a node. Messages following the node will be part of the node.
*/
readonly node: "node";
/**
* Explicitly ends a node
*/
readonly nodeEnd: "nodeEnd";
/**
* Defines a node to goto by id
*/
readonly goto: "goto";
/**
* Indicates graph traversal has exited.
*/
readonly exitGraph: "exitGraph";
/**
* Graph exit route
*/
readonly exit: "exit";
/**
* Graph to route
*/
readonly to: "to";
/**
* Graph from route
*/
readonly from: "from";
/**
* A temporary message type use to pass convo source code.
*/
readonly _sourceRef: "_sourceRef";
readonly template: "template";
readonly templateEnd: "templateEnd";
/**
* Indicates a worker is ready to run
*/
readonly run: "run";
};
/**
* List of built-in role that are allowed to be used with custom message handlers
*/
export declare const convoHandlerAllowedRoles: readonly ["make", "target", "app", "stage"];
/**
* Reserved role names in Convo-Lang that have special meaning and cannot be used as custom roles.
* These roles are used for system functionality like function calls, execution blocks, and debugging.
*/
export declare const convoReservedRoles: readonly ["call", "do", "result", "define", "debug", "end", "thinking"];
export declare const convoFunctions: {
readonly queryImage: "queryImage";
readonly getState: "getState";
/**
* When called __rag with be set to true and and params passed will be added the the __ragParams
* array. If __ragParams is not an array it will be set to an array first. Duplicated values
* will not be added to __ragParams.
*/
readonly enableRag: "enableRag";
/**
* Disables and clears all rag params
*/
readonly clearRag: "clearRag";
/**
* Defines a form that a user can be guided through
*/
readonly defineForm: "defineForm";
readonly today: "today";
readonly uuid: "uuid";
readonly shortUuid: "shortUuid";
readonly getVar: "getVar";
readonly setVar: "setVar";
readonly idx: "idx";
readonly describeScene: "describeScene";
readonly readDoc: "readDoc";
/**
* States the default value of a variable.
*/
readonly setDefault: "setDefault";
/**
* Returns an XML list of agents available to the current conversation.
*/
readonly getAgentList: "getAgentList";
/**
* Explicitly enables a transform by name
*/
readonly enableTransform: "enableTransform";
/**
* Explicitly enables all transforms
*/
readonly enableAllTransforms: "enableAllTransforms";
/**
* Pushes a conversation task on to the task stack. The task will be display in the UI
* while a completion is in progress
*/
readonly pushConvoTask: "pushConvoTask";
/**
* Pops the last convo task off the stack
*/
readonly popConvoTask: "popConvoTask";
/**
* Reads a JSON value from the virtual file system
*/
readonly fsReadJson: "fsReadJson";
/**
* Reads a file from the virtual file system and returns it as a base64 string
*/
readonly fsReadBase64: "fsReadBase64";
/**
* Reads a file from the virtual file system and returns it as a base64 url. This function can
* be used to read files as images or other assets that get embedded as base 64 urls.
*
* @signature (path:string contentType?:string) -> string
*
* @example This is an image: }})
*/
readonly fsReadBase64Url: "fsReadBase64Url";
/**
* Similar to fsReadBase64Url but returns an image formatted as markdown
*
* @signature (path:string description?:string contentType?:string) -> string
*/
readonly fsReadBase64Image: "fsReadBase64Image";
/**
* Creates a markdown image from the given path and description. mdImg is an alias of `fsReadBase64Image`
*
* @signature (path:string description?:string contentType?:string) -> string
*/
readonly mdImg: "mdImg";
/**
* Writes a JSON value to the virtual file system and returns the written value.
*/
readonly fsWriteJson: "fsWriteJson";
/**
* Reads a string value from the virtual file system
*/
readonly fsRead: "fsRead";
/**
* Reads multiple files as a single string using a list of names and an optional pattern that
* the each name is inserted into.
*/
readonly fsMultiRead: "fsMultiRead";
/**
* Writes a string value to the virtual file system and returns the written value.
*/
readonly fsWrite: "fsWrite";
/**
* Append a string value to the virtual file system and returns the written value.
*/
readonly fsAppend: "fsAppend";
/**
* Delete a file or directory from the virtual file system
*/
readonly fsRemove: "fsRemove";
/**
* Creates a directory in the virtual file system
*/
readonly fsMkDir: "fsMkDir";
/**
* Checks if a path exists in the virtual file system
*/
readonly fsExists: "fsExists";
/**
* Reads directory items
*/
readonly fsReadDir: "fsReadDir";
/**
* Returns the full and normalized path for the given value.
*/
readonly fsFullPath: "fsFullPath";
/**
* Joins file paths
*/
readonly joinPaths: "joinPaths";
/**
* Returns true if all values passed to the function are undefined
*/
readonly isUndefined: "isUndefined";
/**
* Returns the number of keys in an option
*/
readonly getObjKeyCount: "getObjKeyCount";
/**
* Returns the keys of an options
*/
readonly getObjKeys: "getObjKeys";
/**
* Returns the values of an options
*/
readonly getObjKeyValues: "getObjKeyValues";
/**
* Returns the passed in value as milliseconds
*/
readonly secondMs: "secondMs";
/**
* Returns the passed in value as milliseconds
*/
readonly minuteMs: "minuteMs";
/**
* Returns the passed in value as milliseconds
*/
readonly hourMs: "hourMs";
/**
* Returns the passed in value as milliseconds
*/
readonly dayMs: "dayMs";
/**
* Finds an item in an array using shallow comparison.
*/
readonly aryFindMatch: "aryFindMatch";
/**
* Finds an item's index in an array using shallow comparison.
*/
readonly aryFindIndex: "aryFindIndex";
/**
* Removes the first matching item in an array using shallow comparison.
*/
readonly aryRemoveMatch: "aryRemoveMatch";
/**
* Used by the convo make build system to define target defaults and build options
*/
readonly makeDefaults: "makeDefaults";
/**
* Used by the convo make build system to define a output to make
*/
readonly makeTarget: "makeTarget";
/**
* Defines a make app
*/
readonly makeApp: "makeApp";
/**
* Defines a make stage
*/
readonly makeStage: "makeStage";
/**
* Similar to the map function except unlabeled values are place the the `_` property
*/
readonly mapWithCapture: "mapWithCapture";
/**
* Used to access properties of a make target by path
*/
readonly mkt: "mkt";
/**
* Returns information about the current graph node or a node by step index.
* Negative indexes can be used to return nodes indexed from the end of the node stack
*/
readonly getNodeInfo: "getNodeInfo";
/**
* Returns node input for the current graph node or a node by step index.
* Negative indexes can be used to return nodes indexed from the end of the node stack
*/
readonly getNodeInput: "getNodeInput";
/**
* Configures the ConvoDb connection
*/
readonly dbConfig: "dbConfig";
/**
* Queries the ConvoDb
*/
readonly dbQueryNodes: "dbQueryNodes";
/**
* Returns nodes matching a given path. A wildcard path (path ending with /*) can return multiple
* nodes
*/
readonly dbGetNodesByPath: "dbGetNodesByPath";
/**
* Gets the permissions from one node to another
*/
readonly dbGetNodePermission: "dbGetNodePermission";
/**
* Checks if one node has permission to another
*/
readonly dbCheckNodePermission: "dbCheckNodePermission";
/**
* Inserts a node
*/
readonly dbInsertNode: "dbInsertNode";
/**
* Updates a node
*/
readonly dbUpdateNode: "dbUpdateNode";
/**
* Deletes a node
*/
readonly dbDeleteNode: "dbDeleteNode";
/**
* Queries edges
*/
readonly dbQueryEdges: "dbQueryEdges";
/**
* Gets an edge by id
*/
readonly dbGetEdgeById: "dbGetEdgeById";
/**
* Inserts an edge
*/
readonly dbInsertEdge: "dbInsertEdge";
/**
* Updates an edge
*/
readonly dbUpdateEdge: "dbUpdateEdge";
/**
* Deletes an edge
*/
readonly dbDeleteEdge: "dbDeleteEdge";
/**
* Queries embeddings
*/
readonly dbQueryEmbeddings: "dbQueryEmbeddings";
/**
* Gets an embedding by id
*/
readonly dbGetEmbeddingById: "dbGetEmbeddingById";
/**
* Inserts an embedding
*/
readonly dbInsertEmbedding: "dbInsertEmbedding";
/**
* Updates an embedding
*/
readonly dbUpdateEmbedding: "dbUpdateEmbedding";
/**
* Deletes an embedding
*/
readonly dbDeleteEmbedding: "dbDeleteEmbedding";
};
/**
* reserved system variables
*/
export declare const convoVars: {
readonly __return: "__return";
/**
* Used to enabled prompt caching. A value of true will use the default prompt cached which
* by default uses the `ConvoLocalStorageCache`. If assigned a string a cache with a matching
* type will be used.
*/
readonly __cache: "__cache";
/**
* In environments that have access to the filesystem __cwd defines the current working directory.
*/
readonly __cwd: "__cwd";
/**
* Path to the main file that loaded the conversation
*/
readonly __mainFile: "__mainFile";
/**
* Path to the current convo file
*/
readonly __file: "__file";
/**
* When set to true debugging information will be added to conversations.
*/
readonly __debug: "__debug";
/**
* Sets the default model
*/
readonly __model: "__model";
/**
* Sets the default completion endpoint
*/
readonly __endpoint: "__endpoint";
/**
* Endpoint to a convo compatible endpoint
*/
readonly __convoEndpoint: "__convoEndpoint";
/**
* API key to send to completions endpoint. The `apiKey` of the `FlatConvoConversationBase` will
* be populated by this variable if defined.
*/
readonly __apiKey: "__apiKey";
/**
* Sets the default user id of the conversation
*/
readonly __userId: "__userId";
/**
* When set to true time tracking will be enabled.
*/
readonly __trackTime: "__trackTime";
/**
* When set to true token usage tracking will be enabled.
*/
readonly __trackTokenUsage: "__trackTokenUsage";
/**
* When set to true the model used as a completion provider will be tracked.
*/
readonly __trackModel: "__trackModel";
/**
* When defined __visionSystemMessage will be injected into the system message of conversations
* with vision capabilities. __visionSystemMessage will override the default vision
* system message.
*/
readonly __visionSystemMessage: "__visionSystemMessage";
/**
* The default system message used for completing vision requests. Vision requests are typically
* completed in a separate conversation that supports vision messages. By default the system
* message of the conversation that triggered the vision request will be used.
*/
readonly __visionServiceSystemMessage: "__visionServiceSystemMessage";
/**
* Response used with the system is not able to generate a vision response.
*/
readonly __defaultVisionResponse: "__defaultVisionResponse";
/**
* A reference to markdown vars.
*/
readonly __md: "__md";
/**
* Enables retrieval augmented generation (RAG). The value of the __rag can either be true,
* false or a number. The value indicates the number of rag results that should be sent to the
* LLM by default all rag message will be sent to the LLM. When setting the number of rag
* messages to a fixed number only the last N number of rag messages will be sent to the LLM.
* Setting __rag to a fixed number can help to reduce prompt size.
*/
readonly __rag: "__rag";
/**
* An object that will be passed to the rag callback of a conversation. If the value is not an
* object it is ignored.
*/
readonly __ragParams: "__ragParams";
/**
* The tolerance that determines if matched rag content should be included as contact.
*/
readonly __ragTol: "__ragTol";
/**
* Sets the current thread filter. Can either be a string or a ConvoThreadFilter. If __threadFilter
* is a string it will be converted into a filter that looks like `{includeThreads:[__threadId]}`.
*/
readonly __threadFilter: "__threadFilter";
/**
* A reference to a SceneCtrl that is capable of describing the current scene the user is viewing.
*/
readonly __sceneCtrl: "__sceneCtrl";
/**
* The last described scene added to the conversation
*/
readonly __lastDescribedScene: "__lastDescribedScene";
/**
* Used by agents to define the voice they use
*/
readonly __voice: "__voice";
/**
* used to indicate that forms have been enabled
*/
readonly __formsEnabled: "__formsEnabled";
/**
* Default array of forms
*/
readonly __forms: "__forms";
/**
* Array of transforms names that have explicity been enabled. Transforms are enabled by default
* unless they have the `transformOptional` tag applied. Adding "all" to the list will explicity
* enable all components.
*/
readonly __explicitlyEnabledTransforms: "__explicitlyEnabledTransforms";
/**
* Name of the currently executing trigger
*/
readonly __trigger: "__trigger";
/**
* If true inline prompt messages should be written to debug output
*/
readonly __debugInline: "__debugInline";
/**
* Controls the penalty for repeated tokens in completions.
*/
readonly __frequencyPenalty: "__frequencyPenalty";
/**
* Controls the penalty for new tokens based on their presence in the text so far.
*/
readonly __presencePenalty: "__presencePenalty";
/**
* If set, requests log probabilities of generated tokens.
*/
readonly __logprobs: "__logprobs";
/**
* Sets the maximum number of tokens to generate in a completion.
*/
readonly __maxTokens: "__maxTokens";
/**
* Indicates the level of reasoning effort to apply.
*/
readonly __reasoningEffort: "__reasoningEffort";
/**
* Sets the random seed for reproducible completions.
*/
readonly __seed: "__seed";
/**
* Specifies the service tier to use for completions.
*/
readonly __serviceTier: "__serviceTier";
/**
* Controls the randomness of completions (temperature parameter).
*/
readonly __temperature: "__temperature";
/**
* Controls the nucleus sampling parameter for completions (top_p).
*/
readonly __topP: "__topP";
/**
* Requests the log probabilities for the top tokens.
*/
readonly __topLogprobs: "__topLogprobs";
/**
* Controls the verbosity of the model's response.
*/
readonly __responseVerbosity: "__responseVerbosity";
/**
* Allows biasing the likelihood of specific tokens.
*/
readonly __logitBias: "__logitBias";
/**
* Object containing additional parameters to pass to the LLM.
*/
readonly __modelParams: "__modelParams";
/**
* Array of ConvoMakeApp objects
*/
readonly __makeDefaults: "__makeDefaults";
/**
* Array of ConvoMakeTargetDeclaration objects
*/
readonly __makeTargets: "__makeTargets";
/**
* Array of ConvoMakeApp objects
*/
readonly __makeApps: "__makeApps";
/**
* Array of ConvoMakeStage objects
*/
readonly __makeStages: "__makeStages";
/**
* Relative path to the make directory the current convo file was created in
*/
readonly __makeRoot: "__makeRoot";
readonly __makeFile: "__makeFile";
readonly __makeOut: "__makeOut";
/**
* Maps custom messages to handler functions
*/
readonly __messageHandlers: "__messageHandlers";
/**
* Name of a type to be used as the default json response type
*/
readonly __defaultResponseType: "__defaultResponseType";
/**
* Sets the default node context depth
*/
readonly __nodeContextDepth: "__nodeContextDepth";
/**
* Stores historical node information including each node input
*/
readonly __nodeStack: "__nodeStack";
/**
* A reference to a ConvoDb
*/
readonly __db: "__db";
/**
* A ConvoDb connection string
*/
readonly __dbConnection: "__dbConnection";
};
export declare const convoImportModifiers: {
/**
* Only system messages should be imported
*/
readonly system: "system";
/**
* Content messages should be ignored
*/
readonly ignoreContent: "ignoreContent";
/**
* Merges the contents of multiple files into a single imports. This is useful when importing
* multiple content files using a glob.
*/
readonly merge: "merge";
};
/**
* Used to indicate a result message will take over control flow
*/
export declare const convoControlResult: unique symbol;
export declare const convoControlResultKeys: {
readonly source: "source";
readonly messages: "messages";
};
export declare const defaultConvoRagTol = 1.2;
export declare const convoEvents: {
/**
* Occurs when a user message is added to a conversation
*
* Functions listening to the `user` event will be called after user messages are
* appended. The return value of the function will either replaces the content of the user
* message or will be set as the messages prefix or suffix. If the function return false, null or
* undefined it is ignored and the next function listening to the `user` event will be called.
*
* @usage (@)on user [replace|append|prepend|prefix|suffix] [condition]
*/
readonly user: "user";
/**
* Occurs when an assistant message is added to a conversation.
*
* Functions listening to the `assistant` event will be called after assistant messages are
* appended. The return value of the function will either replaces the content of the assistant
* message or will be set as the messages prefix or suffix. If the function return false, null or
* undefined it is ignored and the next function listening to the `assistant` event will be called.
*
* @usage (@)on assistant [replace|append|prepend|prefix|suffix] [condition]
*/
readonly assistant: "assistant";
};
export declare const convoTags: {
/**
* When applied to a user message and the message is the last message in a conversation the message
* is considered a conversation initializer.
*/
readonly init: "init";
/**
* Used to set the name of the message
*/
readonly name: "name";
/**
* Defines an event listener for a message. Functions tagged with `@on` will
* be made local and not visible to LLMs.
*/
readonly on: "on";
/**
* Enable rag for a message. The value of the tag will be added as a rag path
*/
readonly ragForMsg: "ragForMsg";
/**
* Enables rag for the current conversation
*/
readonly rag: "rag";
/**
* Defines the start index and length of the actual rag content without prefix and suffix
*/
readonly ragContentRage: "ragContentRage";
/**
* Name of the server a message was created from.
*/
readonly fromMcp: "fromMcp";
/**
* Marks a message as a resource list from an MCP server
*/
readonly mcpResourceList: "mcpResourceList";
/**
* Manually labels a message
*/
readonly label: "label";
/**
* Clears all content messages that precede the messages with the exception of system messages.
* If the value of "system" is given as the tags value system message will also be cleared.
*/
readonly clear: "clear";
/**
* Prevents a message from being clear when followed by a message with a `@clear` tag applied.
*/
readonly noClear: "noClear";
/**
* Enables caching for the message the tag is applied to. No value of a value of true will use
* the default prompt cached which by default uses the `ConvoLocalStorageCache`. If assigned
* a string a cache with a matching type will be used.
*/
readonly cache: "cache";
/**
* Controls the penalty for repeated tokens in completions for the message the tag is applied to.
*/
readonly frequencyPenalty: "frequencyPenalty";
/**
* Controls the penalty for new tokens based on their presence in the text so far for the message the tag is applied to.
*/
readonly presencePenalty: "presencePenalty";
/**
* If set, requests log probabilities of generated tokens for the message the tag is applied to.
*/
readonly logprobs: "logprobs";
/**
* Sets the maximum number of tokens to generate in a completion for the message the tag is applied to.
*/
readonly maxTokens: "maxTokens";
/**
* Indicates the level of reasoning effort to apply for the message the tag is applied to.
*/
readonly reasoningEffort: "reasoningEffort";
/**
* Sets the random seed for reproducible completions for the message the tag is applied to.
*/
readonly seed: "seed";
/**
* Specifies the service tier to use for completions for the message the tag is applied to.
*/
readonly serviceTier: "serviceTier";
/**
* Controls the randomness of completions (temperature parameter) for the message the tag is applied to.
*/
readonly temperature: "temperature";
/**
* Controls the nucleus sampling parameter for completions (top_p) for the message the tag is applied to.
*/
readonly topP: "topP";
/**
* Requests the log probabilities for the top tokens for the message the tag is applied to.
*/
readonly topLogprobs: "topLogprobs";
/**
* Controls the verbosity of the model's response for the message the tag is applied to.
*/
readonly responseVerbosity: "responseVerbosity";
/**
* Object containing additional parameters to pass to the LLM for the message the tag is applied to.
*/
readonly modelParams: "modelParams";
/**
* When applied to a function the return value of the function will not be used to generate a
* new assistant message.
*/
readonly disableAutoComplete: "disableAutoComplete";
/**
* Disables triggers on the message the tag is applied to.
*/
readonly disableTriggers: "disableTriggers";
/**
* Forces a message to be included in triggers. If the tag defines a value the value will be used
* to match which trigger the message is included in.
*/
readonly includeInTriggers: "includeInTriggers";
/**
* Excludes a message from being included in triggers. If the tag defines a value the value will
* be used to match the trigger it is excluded from.
*/
readonly excludeFromTriggers: "excludeFromTriggers";
/**
* When applied to a content message the message will be appended to the conversation after calling the
* function specified by the tag's value. When applied to a function message the content of the
* tag will be appended as a user message.
*/
readonly afterCall: "afterCall";
/**
* When used with the `afterCall` tag the appended message will be hidden from the user but
* visible to the LLM
*/
readonly afterCallHide: "afterCallHide";
/**
* When used with the `afterCall` tag the appended message will use the given role
*/
readonly afterCallRole: "afterCallRole";
/**
* Indicates a message was created by a afterCall tag
*/
readonly createdAfterCalling: "createdAfterCalling";
/**
* Applied to result values to indicate they will alter the control flow of a conversation.
*/
readonly controlResult: "controlResult";
/**
* Used to indicate that a message should be evaluated at the edge of a conversation with the
* latest state. (@)edge is most commonly used with system message to ensure that all injected values
* are updated with the latest state of the conversation.
*/
readonly edge: "edge";
/**
* Alias for (@)order 0
*/
readonly top: "top";
/**
* Sets the order which the tagged message appears. negative value are inserted form the end
* of the conversation
*/
readonly order: "order";
/**
* Used to track the time messages are created.
*/
readonly time: "time";
/**
* Used to track the number of tokens a message used
*/
readonly tokenUsage: "tokenUsage";
/**
* Used to track the model used to generate completions
*/
readonly model: "model";
/**
* Sets the requested model to complete a message with
*/
readonly responseModel: "responseModel";
/**
* Used to track the endpoint to generate completions
*/
readonly endpoint: "endpoint";
/**
* Sets the requested endpoint to complete a message with
*/
readonly responseEndpoint: "responseEndpoint";
/**
* Sets the format as message should be responded to with.
*/
readonly responseFormat: "responseFormat";
/**
* Causes the response of the tagged message to be assigned to a variable
*/
readonly assign: "assign";
/**
* When used with a message the json tag is short and for `@responseFormat json`
*/
readonly json: "json";
/**
* The format of a message
*/
readonly format: "format";
/**
* Used to assign the content or jsonValue of a message to a variable
*/
readonly assignTo: "assignTo";
/**
* Used to enable capabilities. Only the first and last message in the conversation are used
* to determine current capabilities. Multiple capability tags can be
* applied to a message and multiple capabilities can be specified by separating them with a
* comma.
*/
readonly capability: "capability";
/**
* Shorthand for `@capability vision`
* Enables vision for all messages in a conversation
*/
readonly enableVision: "enableVision";
/**
* Shorthand for `@capability visionFunction`
* The visionFunction capability adds vision support by passing vision messages to a vision model
* and exposing vision capabilities as a function.
*/
readonly enabledVisionFunction: "enabledVisionFunction";
/**
* Enables vision for the message the tag is applied to
*/
readonly vision: "vision";
/**
* Sets the task a message is part of. By default messages are part of the "default" task
*/
readonly task: "task";
/**
* Can be used by functions to display a task message while the function is executing.
*/
readonly taskName: "taskName";
/**
* Can be used by functions to display a task message while the function is executing.
*/
readonly taskDescription: "taskDescription";
/**
* Sets the max number of non-system messages that should be included in a task completion
*/
readonly maxTaskMessageCount: "maxTaskMessageCount";
/**
* Defines what triggers a task
*/
readonly taskTrigger: "taskTrigger";
/**
* Defines a message as a template
*/
readonly template: "template";
/**
* used to track the name of templates used to generate messages
*/
readonly sourceTemplate: "sourceTemplate";
/**
* Used to mark a message as a component. The value can be "render" or "input". The default
* value is "render" if no value is given. When the "input" value is used the rendered component
* will take input from a user then write the input received to the executing conversation.
*/
readonly component: "component";
/**
* When applied to a message the message should be rendered but not sent to LLMs
*/
readonly renderOnly: "renderOnly";
/**
* Controls where a message is rendered. By default messages are rendered in the default chat
* view, but applications can define different render targets.
*/
readonly renderTarget: "renderTarget";
/**
* Sets the renderTarget of the message to "hidden"
*/
readonly hidden: "hidden";
readonly toolId: "toolId";
/**
* When applied to the last content or component messages auto scrolling will be disabled
*/
readonly disableAutoScroll: "disableAutoScroll";
/**
* When applied to a message the content of the message will be parsed as markdown
*/
readonly markdown: "markdown";
/**
* When applied to a message the content of the message will be parsed as markdown and the
* elements of the markdown will be auto assigned to vars
*/
readonly markdownVars: "markdownVars";
/**
* When applied to a message the message is conditionally added to the flattened view of a
* conversation. When the condition is false the message will not be visible to the user
* or the LLM.
*
* @note The example below uses (@) instead of the at symbol because of a limitation of jsdoc.
*
* The example below will only render and send the second system message to the LLM
* @example
*
* ``` convo
* > define
* animal = 'dog'
*
* (@)condition animal frog
* > system
* You are a frog and you like to hop around.
*
* (@)condition animal dog
* > system
* You are a dog and you like to eat dirt.
* ```
*/
readonly condition: "condition";
/**
* When applied to a message the message is completely disregarded and removed from the conversation
*/
readonly disabled: "disabled";
/**
* Reference to a document related to a message. Typically used with RAG.
*/
readonly docRef: "docRef";
/**
* When applied to a message the message becomes a clickable suggestion that when clicked will
* add a new user message with the content of the message. If the suggestion tag defines a value
* that value will be displayed on the clickable button instead of the message content but the
* message content will still be used as the user messaged added to the conversation when clicked.
* Suggestion message are render only and not seen by LLMs.
*/
readonly suggestion: "suggestion";
/**
* A title display above a group of suggestions
*/
readonly suggestionTitle: "suggestionTitle";
/**
* A function to call when a suggestion is selected by the user instead of sending message to LLM
*/
readonly suggestionCallback: "suggestionCallback";
/**
* Sets the threadId of the current message and all following messages. Using the `@thread` tag
* without a value will clear the current thread id.
*/
readonly thread: "thread";
/**
* Defines a path to write a messages output to
*/
readonly output: "output";
/**
* Used to mark a function as an error callback
*/
readonly errorCallback: "errorCallback";
/**
* Used to import external convo script code or other resource types.
*
* @usage
* (@)import [type[:label]] url
*/
readonly import: "import";
/**
* Matches an import by path. The match value can use wild cards are be a regular expression.
* Regular expressions start with a (!) followed by a space then the regular expression pattern
*
* @example // By path
* (@)importMatch ./company-policies.md
*
* @example // wildcard
* (@)importMatch *policies.md
*
* @example // regular expression
* (@)importMatch ! policies\.(md|mdx)$
*/
readonly importMatch: "importMatch";
readonly importRole: "importRole";
/**
* Causes a message to be concatenated with the previous message. Both the message the tag
* is attached to and the previous message must be content messages or the tag is ignored.
* When a message is concatenated to another message all other tags except the condition
* tag are ignored.
*/
readonly concat: "concat";
/**
* Instructs the LLM to call the specified function. The values "none", "required", "auto" have
* a special meaning. If no name is given the special "required" value is used.
* - none: tells the LLM to not call any functions
* - required: tells the LLM it must call a function, any function.
* - auto: tells the LLM it can call a function respond with a text response. This is the default behaviour.
*/
readonly call: "call";
/**
* Causes the message to be evaluated as code. The code should be contained in a markdown code block.
*/
readonly eval: "eval";
/**
* Id of the user that created the message
*/
readonly userId: "userId";
/**
* Causes all white space in a content message to be preserved. By define all content message
* whitespace is preserved.
*/
readonly preSpace: "preSpace";
/**
* Indicates a message is the system message used to give an LLM instructions on how to use
* agents
*/
readonly agentSystem: "agentSystem";
/**
* Defines capabilities for a message
*/
readonly cap: "cap";
/**
* Conversation ID
*/
readonly cid: "cid";
/**
* Adds a message to a transform group. Transform groups are used to transform assistant output.
* The transform tags value can be the name of a type or empty. Transform groups are ran after all
* text responses from the assistant. Transform messages are not added to the flattened conversation.
*/
readonly transform: "transform";
/**
* Sets the name of the transform group a message will be added to when the transform tag is used.
*/
readonly transformGroup: "transformGroup";
/**
* If present on a transform message the source message processed will be hidden from the user
* but still visible to the LLM
*/
readonly transformHideSource: "transformHideSource";
/**
* Overrides `transformHideSource` and `transformRemoveSource`
*/
readonly transformKeepSource: "transformKeepSource";
/**
* If present on a transform message the source message processed will not be added to the
* conversation
*/
readonly transformRemoveSource: "transformRemoveSource";
/**
* If present the transformed message has the `renderOnly` tag applied to it causing it to be
* visible to the user but not the LLM.
*/
readonly transformRenderOnly: "transformRenderOnly";
/**
* A transform condition that will control if the component tag can be passed to the created message
*/
readonly transformComponentCondition: "transformComponentCondition";
/**
* Messages created by the transform will include the defined tag
* @example (@)transformTag renderTarget sideBar
*/
readonly transformTag: "transformTag";
/**
* A shortcut tag combines the `transform`, `transformTag`, `transformRenderOnly`, `transformComponentCondition`
* and `transformHideSource` tags to create a transform that renders a
* component based on the data structure of a named
* struct.
* @usage (@)transformComponent [groupName] {componentName} {propType} [?[!] condition]
*
* Renders the CarView component after every assistant message. The transform is using the default transform group.
* @example (@)transformComponent CarView CarProps
*
* Renders the CatPickerView component if the transformed message is a json object with the "type" key is set to cat.
* The transform is in the CatPicker transform group.
* @example (@)transformComponent CatPicker CatPickerView AnimalPrefs ? type cat
*
* Renders the AnimalsOtherThanPickerView component if the transformed message is a json object with the "type" key is NOT set to cat.
* The transform is in the default transform group.
* @example (@)transformComponent AnimalsOtherThanPickerView AnimalPrefs ?! type cat
*/
readonly transformComponent: "transformComponent";
/**
* Applied to messages created by a transform
*/
readonly createdByTransform: "createdByTransform";
/**
* When applied to a message the message will be included in all transform prompts. It is common
* to apply includeInTransforms to system messages
*/
readonly includeInTransforms: "includeInTransforms";
/**
* Describes what the result of the transform is
*/
readonly transformDescription: "transformDescription";
/**
* If applied to a transform message it will not be passed through a filter prompt
*/
readonly transformRequired: "transformRequired";
/**
* When applied to a message the transform filter will be used to select which transforms to
* to select. The default filter will list all transform groups and their descriptions to select
* the best fitting transform for the assistants response
*/
readonly transformFilter: "transformFilter";
/**
* If applied to a transform message the transform must be explicity enabled applying the `enableTransform`
* tag to another message or calling the enableTransform function.
*/
readonly transformOptional: "transformOptional";
/**
* Applied to transform output messages when overwritten by a transform with a higher priority
*/
readonly overwrittenByTransform: "overwrittenByTransform";
/**
* Explicitly enables a transform. Transforms are enabled by default unless the transform has
* the `transformOptional` tag applied.
*/
readonly enableTransform: "enableTransform";
/**
* Defines a component to render a function result
*/
readonly renderer: "renderer";
/**
* Indicates a message is a standard system message. Standard system messages are used to
* implement common patterns such as the moderator pattern.
*/
readonly stdSystem: "stdSystem";
/**
* Prevents a message from accepting modifiers and allows modifiers to flow through the message
*/
readonly disableModifiers: "disableModifiers";
/**
* Attached to a message to indicate the user has reached their limit of tokens
*/
readonly tokenLimit: "tokenLimit";
/**
* When applied to a node message a `to` route for is added to the node.
*/
readonly to: "to";
/**
* When applied to a node message a `from` route for is added to the node.
*/
readonly from: "from";
/**
* When applied to a node message an `exit` route for is added to the node.
*/
readonly exit: "exit";
/**
* Used by graph messages to mark their default entry node
*/
readonly entryNode: "entryNode";
/**
* Controls the LLM model used to evaluate route conditions.
*/
readonly routingModel: "routingModel";
/**
* When applied to a node message forking node execution is allowed. When execution is allowed
* to be forked all routes with a true condition will be taken and if more than one route is
* taken a new conversation will be created.
*/
readonly fork: "fork";
/**
* Controls the number of node contexts to include in the context of the node.
*/
readonly contextDepth: "contextDepth";
/**
* Causes a content message to be included in node execution context. By Default all non-node
* messages are excluded from node execution context.
*/
readonly includeInNodes: "includeInNodes";
/**
* Defines the input type expected by a node. If the input for a node does not match
* its input type the input will attempted to be converted using natural language
*/
readonly inputType: "inputType";
/**
* Indicates a message is the result of input conversation
*/
readonly inputConversation: "inputConversation";
/**
* Use to mark a function as a message handler. Functions tagged with `@messageHandler` will
* be made local and not visible to LLMs.
*/
readonly messageHandler: "messageHandler";
/**
* Name of the prop that the head value of handles messages are passed to.
* @default "name"
*/
readonly messageHandlerHeadProp: "messageHandlerHeadProp";
/**
* When applied to a message handler the handler will assume the location of the message
* the handler is handling
*/
readonly assumeHandledMessageLocation: "assumeHandledMessageLocation";
/**
* Enables auto memory management in works
*/
readonly autoMemory: "autoMemory";
/**
* Causes the output of a message to be saved as a workers memory
*/
readonly saveMemory: "saveMemory";
};
/**
* Functions marked with tags defined in `localFunctionTags` will be marked as local and not visible
* to LLMs.
*/
export declare const localFunctionTags: string[];
/**
* Tags that are allowed to have dynamic expressions as the value when using the equals operator.
* @example (@)condition = eq(name "Bob")
*/
export declare const convoDynamicTags: string[];
/**
* Tags who's first word on its value will be used as a label
*/
export declare const convoLabeledTags: string[];
/**
* Tags who's dynamic values will not be evaled when flattening. This can be useful when defining
* tags who's dynamic value will be used out of line of the flatten