 Documentation
      ¶
      Documentation
      ¶
    
    
  
    
  
    Index ¶
- Constants
- Variables
- func GetJSONSchema(sch any) json.RawMessage
- type ASTReadTools
- func (t *ASTReadTools) GetASTNode(_ context.Context, params GetASTNodeReq) (*GetASTNodeResp, error)
- func (t *ASTReadTools) GetFileStructure(_ context.Context, req GetFileStructReq) (*GetFileStructResp, error)
- func (t *ASTReadTools) GetPackageStructure(ctx context.Context, req GetPackageStructReq) (*GetPackageStructResp, error)
- func (t *ASTReadTools) GetRepoStructure(_ context.Context, req GetRepoStructReq) (*GetRepoStructResp, error)
- func (t *ASTReadTools) GetTool(name string) Tool
- func (t *ASTReadTools) GetTools() []Tool
- func (t *ASTReadTools) ListRepos(ctx context.Context, req ListReposReq) (*ListReposResp, error)
 
- type ASTReadToolsOptions
- type ASTWriteTools
- type ASTWriteToolsOptions
- type FileStruct
- type FuncType
- type FunctionConfig
- type GetASTNodeReq
- type GetASTNodeResp
- type GetFileStructReq
- type GetFileStructResp
- type GetPackageStructReq
- type GetPackageStructResp
- type GetRepoStructReq
- type GetRepoStructResp
- type ListReposReq
- type ListReposResp
- type MCPClient
- type MCPConfig
- type MCPType
- type ModuleStruct
- type NodeID
- type NodeStruct
- type PackageStruct
- type Tool
- type ToolConfig
- type WriteASTNodeReq
- type WriteASTNodeResp
Constants ¶
      View Source
      
  
    const ( ToolListRepos = "list_repos" DescListRepos = "list all repositories" ToolGetRepoStructure = "get_repo_structure" DescGetRepoStructure = "get the repository structure, including package list and file list" ToolGetPackageStructure = "get_package_structure" DescGetPackageStructure = "get the package (NameSpace) structure, including file list and node-id list" ToolGetFileStructure = "get_file_structure" DescGetFileStructure = "get the file structure, including node (id,signature,type) list" ToolGetASTNode = "get_ast_node" DescGetASTNode = "" /* 152-byte string literal not displayed */ )
      View Source
      
  
const (
	ToolWriteASTNode = "write_ast_node"
)
    Variables ¶
      View Source
      
  
var ( SchemaListRepos = GetJSONSchema(ListReposReq{}) SchemaGetRepoStructure = GetJSONSchema(GetRepoStructReq{}) SchemaGetPackageStructure = GetJSONSchema(GetPackageStructReq{}) SchemaGetFileStructure = GetJSONSchema(GetFileStructReq{}) SchemaGetASTNode = GetJSONSchema(GetASTNodeReq{}) )
Functions ¶
func GetJSONSchema ¶
func GetJSONSchema(sch any) json.RawMessage
Types ¶
type ASTReadTools ¶
type ASTReadTools struct {
	// contains filtered or unexported fields
}
    func NewASTReadTools ¶
func NewASTReadTools(opts ASTReadToolsOptions) *ASTReadTools
func (*ASTReadTools) GetASTNode ¶
func (t *ASTReadTools) GetASTNode(_ context.Context, params GetASTNodeReq) (*GetASTNodeResp, error)
func (*ASTReadTools) GetFileStructure ¶
func (t *ASTReadTools) GetFileStructure(_ context.Context, req GetFileStructReq) (*GetFileStructResp, error)
GetFileStruct get node list, each node only includes ID\Type\Signature
func (*ASTReadTools) GetPackageStructure ¶
func (t *ASTReadTools) GetPackageStructure(ctx context.Context, req GetPackageStructReq) (*GetPackageStructResp, error)
GetPackageStruct get package structure
func (*ASTReadTools) GetRepoStructure ¶
func (t *ASTReadTools) GetRepoStructure(_ context.Context, req GetRepoStructReq) (*GetRepoStructResp, error)
GetRepoStructure list the packages and file-paths
func (*ASTReadTools) GetTool ¶
func (t *ASTReadTools) GetTool(name string) Tool
func (*ASTReadTools) GetTools ¶
func (t *ASTReadTools) GetTools() []Tool
func (*ASTReadTools) ListRepos ¶
func (t *ASTReadTools) ListRepos(ctx context.Context, req ListReposReq) (*ListReposResp, error)
type ASTReadToolsOptions ¶
type ASTReadToolsOptions struct {
	// PatchOptions patch.Options
	RepoASTsDir string
}
    type ASTWriteTools ¶
type ASTWriteTools struct {
	// contains filtered or unexported fields
}
    func NewASTWriteTools ¶
func NewASTWriteTools(repo *uniast.Repository, opts ASTWriteToolsOptions) *ASTWriteTools
func (ASTWriteTools) GetTool ¶
func (t ASTWriteTools) GetTool(name string) Tool
func (ASTWriteTools) GetTools ¶
func (t ASTWriteTools) GetTools() []Tool
func (ASTWriteTools) WriteASTNode ¶
func (t ASTWriteTools) WriteASTNode(_ context.Context, req WriteASTNodeReq) (*WriteASTNodeResp, error)
type ASTWriteToolsOptions ¶
type FileStruct ¶
type FileStruct struct {
	FilePath string          `json:"file_path" jsonschema:"description=the path of the file"`
	Imports  []uniast.Import `json:"imports,omitempty" jsonschema:"description=the imports of the file"`
	Nodes    []NodeStruct    `json:"nodes,omitempty" jsonschema:"description=the node structs of the file"`
}
    type FunctionConfig ¶
type FunctionConfig struct {
	Type    FuncType        `json:"type"`    // plugin type includes builtin, stdio
	URI     string          `json:"uri"`     // exec-path for stdio, func-URI for func
	Options json.RawMessage `json:"options"` // raw config for specific plugin
}
    FunctionConfig is the config for function It can be either builtin function or stdio-plugin or MCP (TODO)
type GetASTNodeReq ¶
type GetASTNodeResp ¶
type GetASTNodeResp struct {
	Nodes []NodeStruct `json:"nodes" jsonschema:"description=the ast nodes"`
	Error string       `json:"error,omitempty" jsonschema:"description=the error message"`
}
    type GetFileStructReq ¶
type GetFileStructResp ¶
type GetFileStructResp struct {
	FileStruct
	Error string `json:"error,omitempty" jsonschema:"description=the error message"`
}
    type GetPackageStructReq ¶
type GetPackageStructResp ¶
type GetPackageStructResp struct {
	Files []FileStruct `json:"files" jsonschema:"description=the file structures"`
	Error string       `json:"error,omitempty" jsonschema:"description=the error message"`
}
    type GetRepoStructReq ¶
type GetRepoStructReq struct {
	RepoName string `json:"repo_name" jsonschema:"description=the name of the repository"`
}
    type GetRepoStructResp ¶
type GetRepoStructResp struct {
	Modules []ModuleStruct `json:"modules" jsonschema:"description=the module structure of the repository"`
	Error   string         `json:"error,omitempty" jsonschema:"description=the error message"`
}
    type ListReposReq ¶
type ListReposReq struct {
}
    type ListReposResp ¶
type ListReposResp struct {
	RepoNames []string `json:"repo_names" jsonschema:"description=the names of the repositories"`
}
    type MCPClient ¶
type MCPClient struct {
	// contains filtered or unexported fields
}
    func NewMCPClient ¶
type ModuleStruct ¶
type ModuleStruct struct {
	uniast.ModPath `json:"mod_path" jsonschema:"description=the mod path of the module"`
	Packages       []PackageStruct `json:"packages,omitempty" jsonschema:"description=the package structures of the module"`
}
    type NodeID ¶
type NodeStruct ¶
type NodeStruct struct {
	ModPath      uniast.ModPath `json:"mod_path,omitempty" jsonschema:"description=the module path"`
	PkgPath      uniast.PkgPath `json:"pkg_path,omitempty" jsonschema:"description=the package path"`
	Name         string         `json:"name" jsonschema:"description=the name of the node"`
	Type         string         `json:"type,omitempty" jsonschema:"description=the type of the node"`
	Signature    string         `json:"signature,omitempty" jsonschema:"description=the func signature of the node"`
	File         string         `json:"file,omitempty" jsonschema:"description=the file path of the node"`
	Line         int            `json:"line,omitempty" jsonschema:"description=the line of the node"`
	Codes        string         `json:"codes,omitempty" jsonschema:"description=the codes of the node"`
	Dependencies []NodeID       `json:"dependencies,omitempty" jsonschema:"description=the dependencies of the node"`
	References   []NodeID       `json:"references,omitempty" jsonschema:"description=the references of the node"`
	Implements   []NodeID       `json:"implements,omitempty" jsonschema:"description=the implements of the node"`
	Groups       []NodeID       `json:"groups,omitempty" jsonschema:"description=the groups of the node"`
	Inherits     []NodeID       `json:"inherits,omitempty" jsonschema:"description=the inherits of the node"`
}
    type PackageStruct ¶
type PackageStruct struct {
	uniast.PkgPath `json:"pkg_path" jsonschema:"description=the path of the package"`
	Files          []FileStruct `json:"files,omitempty" jsonschema:"description=the file structures of the package"`
}
    type ToolConfig ¶
type ToolConfig struct {
	Name string `json:"name"` // name of the tool
	FunctionConfig
}
    ToolConfig is the config for LLM-calling tools.
type WriteASTNodeReq ¶
type WriteASTNodeReq struct {
	ID        uniast.Identity   `json:"id" jsonschema:"description=the id of the ast node"`
	Codes     string            `json:"codes" jsonschema:"description=the codes of the ast node"`
	Type      string            `json:"type" jsonschema:"description=the type of the ast node, must be enum of 'FUNC'|'TYPE'|'VAR'"`
	File      string            `json:"file,omitempty" jsonschema:"description=the file path for newly-added ast node"`
	AddedDeps []uniast.Identity `json:"added_deps" jsonschema:"description=the added dependencies of the ast node"`
}
    type WriteASTNodeResp ¶
type WriteASTNodeResp struct {
	Success    bool              `json:"success" jsonschema:"description=whether the ast node is written successfully"`
	Message    string            `json:"message" jsonschema:"description=the feedback message"`
	References []uniast.Identity `json:"references,omitempty" jsonschema:"description=the references of the ast node"`
}
     Click to show internal directories. 
   Click to hide internal directories.