llm

package
v1.23.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 16, 2025 License: MIT Imports: 18 Imported by: 0

Documentation

Index

Constants

View Source
const (
	SHORT  explanationLength = "SHORT"
	MEDIUM explanationLength = "MEDIUM"
	LONG   explanationLength = "LONG"
)

Variables

This section is empty.

Functions

func WithHTTPClient

func WithHTTPClient(httpClientFunc func() http.HTTPClient) func(*DeepCodeLLMBindingImpl)

func WithInstrumentor

func WithInstrumentor(instrumentor observability.Instrumentor) func(*DeepCodeLLMBindingImpl)

func WithLogger

func WithLogger(logger *zerolog.Logger) func(*DeepCodeLLMBindingImpl)

func WithOutputFormat

func WithOutputFormat(outputFormat OutputFormat) func(*DeepCodeLLMBindingImpl)

Types

type AIRequest

type AIRequest struct {
	Id       string   `json:"id"`
	Input    string   `json:"inputs"`
	Endpoint *url.URL `json:"endpoint"`
}

type AutofixEventDetails added in v1.21.4

type AutofixEventDetails struct {
	FixId string `json:"fixId"`
}

type AutofixFeedbackOptions added in v1.21.4

type AutofixFeedbackOptions struct {
	FixID  string
	Result string

	Host                string
	CodeRequestContext  CodeRequestContext
	IdeExtensionDetails AutofixIdeExtensionDetails
}

type AutofixIdeExtensionDetails added in v1.21.4

type AutofixIdeExtensionDetails struct {
	IdeName          string `json:"ideName"`
	IdeVersion       string `json:"ideVersion"`
	ExtensionName    string `json:"extensionName"`
	ExtensionVersion string `json:"extensionVersion"`
}

type AutofixOptions added in v1.21.4

type AutofixOptions struct {
	RuleID     string
	BundleHash string
	ShardKey   string
	BaseDir    string
	FilePath   string
	LineNum    int

	Host                string
	CodeRequestContext  CodeRequestContext
	IdeExtensionDetails AutofixIdeExtensionDetails
}

type AutofixRequest added in v1.21.4

type AutofixRequest struct {
	Key                 AutofixRequestKey          `json:"key"`
	AnalysisContext     CodeRequestContext         `json:"analysisContext"`
	IdeExtensionDetails AutofixIdeExtensionDetails `json:"ideExtensionDetails"`
}

type AutofixRequestKey added in v1.21.4

type AutofixRequestKey struct {
	Type     string `json:"type"`
	Hash     string `json:"hash"`
	Shard    string `json:"shard"`
	FilePath string `json:"filePath"`
	RuleId   string `json:"ruleId"`
	// 1-based to comply with Sarif and Code API, see
	// https://docs.oasis-open.org/sarif/sarif/v2.1.0/sarif-v2.1.0.html#_Ref493492556
	LineNum int `json:"lineNum"`
}

type AutofixResponse added in v1.21.4

type AutofixResponse struct {
	Status             string                     `json:"status"`
	AutofixSuggestions []autofixResponseSingleFix `json:"fixes"`
}

AutofixResponse is the json-based structure to which we can translate the results of the HTTP request to Autofix upstream.

type AutofixStatus added in v1.21.4

type AutofixStatus struct {
	Message string
}

type AutofixUnifiedDiffSuggestion added in v1.21.4

type AutofixUnifiedDiffSuggestion struct {
	FixId               string            `json:"fixId"`
	UnifiedDiffsPerFile map[string]string `json:"unifiedDiffsPerFile"`
	FullTextPerFile     map[string]string `json:"fullTextPerFile"`
	Explanation         string            `json:"explanation"`
}

AutofixUnifiedDiffSuggestion represents the diff between the original and the fixed source code.

type AutofixUserEvent added in v1.21.4

type AutofixUserEvent struct {
	AnalysisContext     CodeRequestContext         `json:"analysisContext"`
	Channel             string                     `json:"channel"`
	EventType           string                     `json:"eventType"`
	EventDetails        AutofixEventDetails        `json:"eventDetails"`
	IdeExtensionDetails AutofixIdeExtensionDetails `json:"ideExtensionDetails"`
}

type CodeRequestContext added in v1.21.4

type CodeRequestContext struct {
	Initiator string                `json:"initiator"`
	Flow      string                `json:"flow,omitempty"`
	Org       CodeRequestContextOrg `json:"org,omitempty"`
}

type CodeRequestContextOrg added in v1.21.4

type CodeRequestContextOrg struct {
	Name        string          `json:"name"`
	DisplayName string          `json:"displayName"`
	PublicId    string          `json:"publicId"`
	Flags       map[string]bool `json:"flags"`
}

type DeepCodeLLMBinding

type DeepCodeLLMBinding interface {
	SnykLLMBindings
	ExplainWithOptions(ctx context.Context, options ExplainOptions) (ExplainResult, error)
	GetAutofixDiffs(ctx context.Context, baseDir string, options AutofixOptions) (unifiedDiffSuggestions []AutofixUnifiedDiffSuggestion, status AutofixStatus, err error)
	SubmitAutofixFeedback(ctx context.Context, requestId string, options AutofixFeedbackOptions) error
}

type DeepCodeLLMBindingImpl added in v1.14.1

type DeepCodeLLMBindingImpl struct {
	// contains filtered or unexported fields
}

DeepCodeLLMBindingImpl is an LLM binding for the Snyk Code LLM.

func NewDeepcodeLLMBinding

func NewDeepcodeLLMBinding(opts ...Option) *DeepCodeLLMBindingImpl

func (*DeepCodeLLMBindingImpl) Explain added in v1.14.1

func (d *DeepCodeLLMBindingImpl) Explain(ctx context.Context, input AIRequest, _ OutputFormat, output chan<- string) error

func (*DeepCodeLLMBindingImpl) ExplainWithOptions added in v1.14.1

func (d *DeepCodeLLMBindingImpl) ExplainWithOptions(ctx context.Context, options ExplainOptions) (ExplainResult, error)

func (*DeepCodeLLMBindingImpl) GetAutofixDiffs added in v1.21.4

func (d *DeepCodeLLMBindingImpl) GetAutofixDiffs(ctx context.Context, _ string, options AutofixOptions) (unifiedDiffSuggestions []AutofixUnifiedDiffSuggestion, status AutofixStatus, err error)

func (*DeepCodeLLMBindingImpl) PublishIssues added in v1.14.1

func (d *DeepCodeLLMBindingImpl) PublishIssues(_ context.Context, _ []map[string]string) error

func (*DeepCodeLLMBindingImpl) SubmitAutofixFeedback added in v1.21.4

func (d *DeepCodeLLMBindingImpl) SubmitAutofixFeedback(ctx context.Context, fixId string, options AutofixFeedbackOptions) error

type ExplainOptions

type ExplainOptions struct {
	// Derivation = Code Flow
	// const derivationLineNumbers: Set<number> = new Set<number>();
	//          for (const markerLocation of suggestion.markers!) {
	//            for (const markerPos of markerLocation.pos) {
	//              const lines = markerPos.rows;
	//              for (const line of lines) {
	//                derivationLineNumbers.add(line + 1);
	//              }
	//            }
	//            markerLocation.pos;
	//          }
	//          console.log('Derivation lines: ', ...derivationLineNumbers);
	//
	//          const derivationLines: string[] = [];
	//          const fileLines: string[] = fileContent.split('\n');
	//          for (const derivationLineNumber of derivationLineNumbers) {
	//            derivationLines.push(fileLines.at(derivationLineNumber - 1)!);
	//          }
	//          let Derivation = derivationLines.join(',');
	//          Derivation = Derivation.replace(/\t/g, '  ');
	//          console.log('Derivation: ', Derivation);
	Derivation string `json:"derivation"`

	// vulnerability name from Snyk Code (rule)
	RuleKey string `json:"rule_key"`

	// Snyk Code message for the vulnerability
	RuleMessage string `json:"rule_message"`

	// fix difference
	Diffs []string `json:"diffs"`

	// Endpoint to call
	Endpoint *url.URL `json:"endpoint"`
}

type ExplainResult added in v1.16.0

type ExplainResult []string

type Explanations added in v1.16.0

type Explanations map[string]string

type Option

type Option func(*DeepCodeLLMBindingImpl)

type OutputFormat

type OutputFormat string
const HTML OutputFormat = "html"
const JSON OutputFormat = "json"
const MarkDown OutputFormat = "md"

type SnykLLMBindings

type SnykLLMBindings interface {
	// PublishIssues sends issues to an LLM for further processing.
	// the map in the slice of issues map is a json representation of json key : value
	// In case of errors, they are returned
	PublishIssues(ctx context.Context, issues []map[string]string) error

	// Explain forwards an input and desired output format to an LLM to
	// receive an explanation. The implementation should alter the LLM
	// prompt to honor the output format, but is not required to enforce
	// the format. The results should be streamed into the given channel
	//
	// Parameters:
	// ctx - request context
	// input - the thing to be explained as a string
	// format - the requested outputFormat
	// output - a channel that can be used to stream the results
	Explain(ctx context.Context, input AIRequest, format OutputFormat, output chan<- string) error
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL