diff --git a/agent/context/options.go b/agent/context/options.go index b6aa7952..b368faef 100644 --- a/agent/context/options.go +++ b/agent/context/options.go @@ -25,6 +25,9 @@ func (opts *Options) ToMap() map[string]interface{} { if opts.DisableGlobalPrompts { result["disable_global_prompts"] = opts.DisableGlobalPrompts } + if opts.Metadata != nil { + result["metadata"] = opts.Metadata + } // Note: Runtime fields (Context, Writer) are not serialized (json:"-") // They should not be included in the map @@ -66,6 +69,9 @@ func OptionsFromMap(m map[string]interface{}) *Options { if disableGlobalPrompts, ok := m["disable_global_prompts"].(bool); ok { opts.DisableGlobalPrompts = disableGlobalPrompts } + if metadata, ok := m["metadata"].(map[string]interface{}); ok { + opts.Metadata = metadata + } // Note: Context and Writer are runtime fields, not restored from map // They should be set by the caller if needed diff --git a/agent/context/types.go b/agent/context/types.go index b41a3e87..3e99965c 100644 --- a/agent/context/types.go +++ b/agent/context/types.go @@ -289,6 +289,9 @@ type Options struct { // Agent mode, use to select the mode of the request, default is "chat" Mode string `json:"mode,omitempty"` // Agent mode, use to select the mode of the request, default is "chat" + + // Metadata for passing custom data to hooks (e.g., scenario selection) + Metadata map[string]any `json:"metadata,omitempty"` // Custom metadata passed to Create/Next hooks } // Stack represents the call stack node for tracing agent-to-agent calls diff --git a/agent/llm/providers/openai/openai.go b/agent/llm/providers/openai/openai.go index fb46844a..09200f6e 100644 --- a/agent/llm/providers/openai/openai.go +++ b/agent/llm/providers/openai/openai.go @@ -637,11 +637,25 @@ func (p *Provider) streamWithRetry(ctx *context.Context, messages []context.Mess errorDetected := false // Wrap streamHandler to detect JSON error responses + // Note: API error responses are raw JSON without "data: " prefix + // Normal SSE data always starts with "data: " prefix wrappedHandler := func(data []byte) int { dataStr := string(data) + trimmed := strings.TrimSpace(dataStr) - // Detect if this looks like a JSON error response (starts with "{" or contains "error") - if strings.Contains(dataStr, `"error"`) || (strings.TrimSpace(dataStr) == "{" && !errorDetected) { + // Skip empty lines + if trimmed == "" { + return http.HandlerReturnOk + } + + // Normal SSE data starts with "data: " - pass to streamHandler + if strings.HasPrefix(dataStr, "data: ") { + return streamHandler(data) + } + + // Detect if this looks like a JSON error response (raw JSON without "data: " prefix) + // API errors are returned as raw JSON: {"error": {...}} + if strings.HasPrefix(trimmed, "{") && strings.Contains(dataStr, `"error"`) { errorDetected = true } @@ -652,7 +666,7 @@ func (p *Provider) streamWithRetry(ctx *context.Context, messages []context.Mess return http.HandlerReturnOk } - // Otherwise, use normal handler + // Unknown format, pass to streamHandler (it will skip non-SSE data) return streamHandler(data) } diff --git a/agent/test/README.md b/agent/test/README.md index daf76222..d4706a7c 100644 --- a/agent/test/README.md +++ b/agent/test/README.md @@ -110,10 +110,58 @@ Each line is a JSON object: | `expected` | any | No | Expected output (exact match) | | `user` | string | No | Override user ID | | `team` | string | No | Override team ID | +| `options` | Options | No | Context options (see below) | | `timeout` | string | No | Override timeout (e.g., "30s") | | `skip` | bool | No | Skip this test | | `metadata` | map | No | Additional metadata | +### Options + +The `options` field allows per-test-case configuration that maps to `context.Options`: + +| Field | Type | Description | +| ------------------------ | ------- | -------------------------------------------------- | +| `connector` | string | Override connector (e.g., `"deepseek.v3"`) | +| `mode` | string | Agent mode (default: `"chat"`) | +| `search` | bool | Enable/disable search mode (default: `true`) | +| `disable_global_prompts` | bool | Temporarily disable global prompts | +| `metadata` | map | Custom data passed to hooks (e.g., scenario) | +| `skip` | object | Skip configuration (see below) | + +#### Options.skip + +| Field | Type | Description | +| --------- | ---- | ------------------------ | +| `history` | bool | Skip history loading | +| `trace` | bool | Skip trace logging | +| `output` | bool | Skip output to client | +| `keyword` | bool | Skip keyword extraction | +| `search` | bool | Skip auto search | + +**Example with options:** + +```jsonl +{ + "id": "T001", + "input": "Query users with status active", + "options": { + "connector": "deepseek.v3", + "metadata": {"scenario": "filter"}, + "skip": {"trace": true} + }, + "assert": {"type": "json_path", "path": "from", "value": "users"} +} +``` + +**Using metadata for hook scenarios:** + +The `options.metadata` field is passed to agent hooks. For example, a Create Hook can read `options.metadata.scenario` to select different prompt presets: + +```jsonl +{"id": "T001", "input": "...", "options": {"metadata": {"scenario": "aggregation"}}} +{"id": "T002", "input": "...", "options": {"metadata": {"scenario": "join"}}} +``` + ### Input Types | Type | Description | Example | @@ -225,9 +273,28 @@ return { pass: true, message: "Validation passed" }; ### JSON Path Notes - Supports dot-notation: `$.field.subfield` or `field.subfield` +- Supports array indexing: `field[0]`, `field[0].subfield`, `field[0].nested[1]` +- Supports multiple expected values (OR logic): `"value": ["a", "b"]` - passes if actual matches any - Auto-extracts JSON from markdown code blocks (` ```json ... ``` `) - Works with both string output and structured objects +**Array index examples:** + +```jsonl +{"id": "T001", "assert": {"type": "json_path", "path": "wheres[0].like", "value": "%test%"}} +{"id": "T002", "assert": {"type": "json_path", "path": "wheres[0].in[0]", "value": "pending"}} +{"id": "T003", "assert": {"type": "json_path", "path": "joins[0].from", "value": "users"}} +{"id": "T004", "assert": {"type": "json_path", "path": "groups[0]", "value": "category"}} +``` + +**Multiple expected values (OR logic):** + +```jsonl +{"id": "T005", "assert": {"type": "json_path", "path": "error", "value": ["missing_schema", "missing_query"]}} +``` + +This passes if `error` equals either `"missing_schema"` or `"missing_query"`. + ## Output Formats Determined by `-o` file extension: diff --git a/agent/test/assert.go b/agent/test/assert.go index fd486368..3a9eae6f 100644 --- a/agent/test/assert.go +++ b/agent/test/assert.go @@ -4,6 +4,7 @@ import ( "encoding/json" "fmt" "regexp" + "strconv" "strings" jsoniter "github.com/json-iterator/go" @@ -244,7 +245,7 @@ func (a *Asserter) assertJSONPath(assertion *Assertion, output interface{}) *Ass jsonData = v default: result.Passed = false - result.Message = "output is not a JSON object or array" + result.Message = fmt.Sprintf("output is not a JSON object or array, got: %T = %v", output, truncateOutput(output, 200)) return result } @@ -253,7 +254,18 @@ func (a *Asserter) assertJSONPath(assertion *Assertion, output interface{}) *Ass actual := a.extractPath(jsonData, path) result.Actual = actual - if validateOutput(actual, assertion.Value) { + // Support array of expected values (OR logic - any match passes) + if expectedArr, ok := assertion.Value.([]interface{}); ok && len(expectedArr) > 0 { + for _, expected := range expectedArr { + if validateOutput(actual, expected) { + result.Passed = true + result.Message = fmt.Sprintf("path '%s' equals one of expected values", assertion.Path) + return result + } + } + result.Passed = false + result.Message = fmt.Sprintf("path '%s': expected one of %v, got %v", assertion.Path, assertion.Value, actual) + } else if validateOutput(actual, assertion.Value) { result.Passed = true result.Message = fmt.Sprintf("path '%s' equals expected value", assertion.Path) } else { @@ -264,27 +276,113 @@ func (a *Asserter) assertJSONPath(assertion *Assertion, output interface{}) *Ass return result } -// extractPath extracts a value from JSON using a simple dot-notation path +// truncateOutput truncates output for error messages +func truncateOutput(output interface{}, maxLen int) string { + var s string + switch v := output.(type) { + case string: + s = v + case nil: + return "" + default: + bytes, err := jsoniter.Marshal(v) + if err != nil { + s = fmt.Sprintf("%v", v) + } else { + s = string(bytes) + } + } + + if len(s) > maxLen { + return s[:maxLen] + "..." + } + return s +} + +// extractPath extracts a value from JSON using dot-notation path with array index support +// Supports: "field", "field.nested", "field[0]", "field[0].nested", "field.nested[0].value" func (a *Asserter) extractPath(data interface{}, path string) interface{} { - parts := strings.Split(path, ".") current := data - for _, part := range parts { - if part == "" { + // Parse path into segments, handling both dots and array indices + // e.g., "wheres[0].like" -> ["wheres", "[0]", "like"] + segments := parsePathSegments(path) + + for _, segment := range segments { + if segment == "" { continue } - switch v := current.(type) { - case map[string]interface{}: - current = v[part] - default: - return nil + // Check if this is an array index like "[0]" + if strings.HasPrefix(segment, "[") && strings.HasSuffix(segment, "]") { + indexStr := segment[1 : len(segment)-1] + index, err := strconv.Atoi(indexStr) + if err != nil { + return nil + } + + arr, ok := current.([]interface{}) + if !ok { + return nil + } + + if index < 0 || index >= len(arr) { + return nil + } + current = arr[index] + } else { + // Regular field access + switch v := current.(type) { + case map[string]interface{}: + current = v[segment] + default: + return nil + } } } return current } +// parsePathSegments splits a path like "wheres[0].like" into ["wheres", "[0]", "like"] +func parsePathSegments(path string) []string { + var segments []string + var current strings.Builder + + for i := 0; i < len(path); i++ { + ch := path[i] + switch ch { + case '.': + if current.Len() > 0 { + segments = append(segments, current.String()) + current.Reset() + } + case '[': + if current.Len() > 0 { + segments = append(segments, current.String()) + current.Reset() + } + // Find the closing bracket + j := i + 1 + for j < len(path) && path[j] != ']' { + j++ + } + if j < len(path) { + segments = append(segments, path[i:j+1]) // Include "[" and "]" + i = j + } + default: + current.WriteByte(ch) + } + } + + if current.Len() > 0 { + segments = append(segments, current.String()) + } + + return segments +} + // assertRegex checks if output matches a regex pattern func (a *Asserter) assertRegex(assertion *Assertion, output interface{}) *AssertionResult { result := &AssertionResult{ diff --git a/agent/test/runner.go b/agent/test/runner.go index 50549fd9..dedc00b2 100644 --- a/agent/test/runner.go +++ b/agent/test/runner.go @@ -64,15 +64,8 @@ func (r *Executor) RunDirect() (*Report, error) { ctx := NewTestContextFromOptions(chatID, agentInfo.ID, r.opts, tc) defer ctx.Release() - // Set options: skip history (input already contains conversation), connector override - opts := &context.Options{ - Skip: &context.Skip{ - History: true, // Skip history loading - input already contains full conversation - }, - } - if r.opts.Connector != "" { - opts.Connector = r.opts.Connector - } + // Build context options + opts := buildContextOptions(tc, r.opts) // Create timeout context timeout := tc.GetTimeout(r.opts.Timeout) @@ -292,6 +285,7 @@ func (r *Executor) runSingleTest(ast *assistant.Assistant, tc *Case, agentID str ID: tc.ID, Input: tc.Input, Expected: tc.Expected, + Options: tc.Options, } // Parse input to messages @@ -310,15 +304,8 @@ func (r *Executor) runSingleTest(ast *assistant.Assistant, tc *Case, agentID str ctx := NewTestContextFromOptions(chatID, agentID, r.opts, tc) defer ctx.Release() - // Set options: skip history (input already contains conversation), connector override - opts := &context.Options{ - Skip: &context.Skip{ - History: true, // Skip history loading - input already contains full conversation - }, - } - if r.opts.Connector != "" { - opts.Connector = r.opts.Connector - } + // Build context options from test case and runner options + opts := buildContextOptions(tc, r.opts) // Create timeout context timeout := tc.GetTimeout(r.opts.Timeout) @@ -490,25 +477,101 @@ func writeJSONLine(writer *bufio.Writer, data interface{}) error { return err } +// buildContextOptions builds context.Options from test case and runner options +// Priority: test case options > runner options > defaults +func buildContextOptions(tc *Case, runnerOpts *Options) *context.Options { + opts := &context.Options{ + Skip: &context.Skip{ + History: true, // Default: skip history loading - input already contains full conversation + }, + } + + // Apply test case options if specified + if tc.Options != nil { + // Connector: test case > runner + if tc.Options.Connector != "" { + opts.Connector = tc.Options.Connector + } + + // Mode + if tc.Options.Mode != "" { + opts.Mode = tc.Options.Mode + } + + // DisableGlobalPrompts + if tc.Options.DisableGlobalPrompts { + opts.DisableGlobalPrompts = true + } + + // Search (pointer to distinguish unset from false) + if tc.Options.Search != nil { + opts.Search = tc.Options.Search + } + + // Metadata for hooks + if tc.Options.Metadata != nil { + opts.Metadata = tc.Options.Metadata + } + + // Skip options from test case + if tc.Options.Skip != nil { + opts.Skip.Trace = tc.Options.Skip.Trace + opts.Skip.Output = tc.Options.Skip.Output + opts.Skip.Keyword = tc.Options.Skip.Keyword + opts.Skip.Search = tc.Options.Skip.Search + // Note: History defaults to true for tests + } + } + + // Runner connector override (highest priority) + if runnerOpts != nil && runnerOpts.Connector != "" { + opts.Connector = runnerOpts.Connector + } + + return opts +} + // extractOutput extracts the output from the agent response +// Priority: Next hook data (if non-empty) > Completion content > raw response func extractOutput(response interface{}) interface{} { if response == nil { return nil } - // Try to get completion content from context.Response + // Try to get data from context.Response if resp, ok := response.(*context.Response); ok { + // Prefer Next hook data if available and non-empty + // resp.Next is already the Data value (not NextHookResponse struct) + if resp.Next != nil && !isEmptyValue(resp.Next) { + return resp.Next + } + // Fall back to raw completion content if resp.Completion != nil { return resp.Completion.Content } - if resp.Next != nil { - return resp.Next - } } return response } +// isEmptyValue checks if a value is considered "empty" for output purposes +func isEmptyValue(v interface{}) bool { + if v == nil { + return true + } + + switch val := v.(type) { + case string: + return val == "" + case map[string]interface{}: + return len(val) == 0 + case []interface{}: + return len(val) == 0 + } + + return false +} + // validateOutput validates the actual output against expected func validateOutput(actual, expected interface{}) bool { // Simple JSON comparison diff --git a/agent/test/types.go b/agent/test/types.go index ac7c785a..b2ac9698 100644 --- a/agent/test/types.go +++ b/agent/test/types.go @@ -205,8 +205,13 @@ type Case struct { TeamID string `json:"team,omitempty"` // Metadata contains additional metadata for the test case + // This is passed to ctx.Metadata and can be used by Create Hook Metadata map[string]interface{} `json:"metadata,omitempty"` + // Options contains context options for this test case + // Supports: connector, skip (history, trace, output, keyword, search), mode + Options *CaseOptions `json:"options,omitempty"` + // Skip indicates whether to skip this test case Skip bool `json:"skip,omitempty"` @@ -215,6 +220,38 @@ type Case struct { Timeout string `json:"timeout,omitempty"` } +// CaseOptions represents per-test-case context options +// Maps to context.Options fields +type CaseOptions struct { + // Connector overrides the agent's default connector + Connector string `json:"connector,omitempty"` + + // Skip configuration + Skip *CaseSkipOptions `json:"skip,omitempty"` + + // DisableGlobalPrompts temporarily disables global prompts for this request + DisableGlobalPrompts bool `json:"disable_global_prompts,omitempty"` + + // Search mode, default is true (use pointer to distinguish unset from false) + Search *bool `json:"search,omitempty"` + + // Mode is the agent mode (default: "chat") + Mode string `json:"mode,omitempty"` + + // Metadata for passing custom data to hooks (e.g., scenario selection) + Metadata map[string]interface{} `json:"metadata,omitempty"` +} + +// CaseSkipOptions represents skip configuration for a test case +// Maps to context.Skip fields +type CaseSkipOptions struct { + History bool `json:"history,omitempty"` // Skip history loading + Trace bool `json:"trace,omitempty"` // Skip trace logging + Output bool `json:"output,omitempty"` // Skip output to client + Keyword bool `json:"keyword,omitempty"` // Skip keyword extraction + Search bool `json:"search,omitempty"` // Skip auto search +} + // Assertion represents a single assertion rule type Assertion struct { // Type is the assertion type: @@ -334,6 +371,9 @@ type Result struct { // Error contains the error message if status is failed/error/timeout Error string `json:"error,omitempty"` + // Options contains the context options used for this test case + Options *CaseOptions `json:"options,omitempty"` + // Metadata contains additional result metadata Metadata map[string]interface{} `json:"metadata,omitempty"` } diff --git a/data/bindata.go b/data/bindata.go index e286f513..d29b9983 100644 --- a/data/bindata.go +++ b/data/bindata.go @@ -80,7 +80,12 @@ // .tmp/data/yao/assistants/prompt/package.yao // .tmp/data/yao/assistants/prompt/prompts.yml // .tmp/data/yao/assistants/querydsl/package.yao +// .tmp/data/yao/assistants/querydsl/prompts/aggregation.yml +// .tmp/data/yao/assistants/querydsl/prompts/complex.yml +// .tmp/data/yao/assistants/querydsl/prompts/filter.yml +// .tmp/data/yao/assistants/querydsl/prompts/join.yml // .tmp/data/yao/assistants/querydsl/prompts.yml +// .tmp/data/yao/assistants/querydsl/src/index.ts // .tmp/data/yao/assistants/title/package.yao // .tmp/data/yao/assistants/title/prompts.yml // .tmp/data/yao/data/icons/404.png @@ -335,7 +340,7 @@ func cuiSetupIndexHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "cui/setup/index.html", size: 10, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "cui/setup/index.html", size: 10, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -355,7 +360,7 @@ func cuiV09IndexHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "cui/v0.9/index.html", size: 13, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "cui/v0.9/index.html", size: 13, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -375,7 +380,7 @@ func cuiV10IndexHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "cui/v1.0/index.html", size: 49, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "cui/v1.0/index.html", size: 49, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -395,7 +400,7 @@ func cuiV10Layouts__indexAsyncJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "cui/v1.0/layouts__index.async.js", size: 71, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "cui/v1.0/layouts__index.async.js", size: 71, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -415,7 +420,7 @@ func cuiV10UmiJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "cui/v1.0/umi.js", size: 71, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "cui/v1.0/umi.js", size: 71, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -435,7 +440,7 @@ func initEnv() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.env", size: 219, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/.env", size: 219, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -455,7 +460,7 @@ func initVscodeSettingsJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/settings.json", size: 4666, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/.vscode/settings.json", size: 4666, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -475,7 +480,7 @@ func initVscodeTypesRuntimeConsoleDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime/console.d.ts", size: 221, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/console.d.ts", size: 221, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -495,7 +500,7 @@ func initVscodeTypesRuntimeExceptionDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime/exception.d.ts", size: 738, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/exception.d.ts", size: 738, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -515,7 +520,7 @@ func initVscodeTypesRuntimeFsDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime/fs.d.ts", size: 8554, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/fs.d.ts", size: 8554, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -535,7 +540,7 @@ func initVscodeTypesRuntimeGlobalDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime/global.d.ts", size: 1759, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/global.d.ts", size: 1759, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -555,7 +560,7 @@ func initVscodeTypesRuntimeHttpDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime/http.d.ts", size: 6179, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/http.d.ts", size: 6179, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -575,7 +580,7 @@ func initVscodeTypesRuntimeIoDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime/io.d.ts", size: 587, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/io.d.ts", size: 587, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -595,7 +600,7 @@ func initVscodeTypesRuntimeLogDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime/log.d.ts", size: 1692, mode: os.FileMode(493), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/log.d.ts", size: 1692, mode: os.FileMode(493), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -615,7 +620,7 @@ func initVscodeTypesRuntimeNeoDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime/neo.d.ts", size: 3750, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/neo.d.ts", size: 3750, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -635,7 +640,7 @@ func initVscodeTypesRuntimeProcessFsDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime/process/fs.d.ts", size: 11133, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/process/fs.d.ts", size: 11133, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -655,7 +660,7 @@ func initVscodeTypesRuntimeProcessHttpDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime/process/http.d.ts", size: 5653, mode: os.FileMode(493), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/process/http.d.ts", size: 5653, mode: os.FileMode(493), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -675,7 +680,7 @@ func initVscodeTypesRuntimeProcessModelDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime/process/model.d.ts", size: 6656, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/process/model.d.ts", size: 6656, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -695,7 +700,7 @@ func initVscodeTypesRuntimeProcessDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime/process.d.ts", size: 23165, mode: os.FileMode(493), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/process.d.ts", size: 23165, mode: os.FileMode(493), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -715,7 +720,7 @@ func initVscodeTypesRuntimeQueryDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime/query.d.ts", size: 6124, mode: os.FileMode(493), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/query.d.ts", size: 6124, mode: os.FileMode(493), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -735,7 +740,7 @@ func initVscodeTypesRuntimeStoreDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime/store.d.ts", size: 2251, mode: os.FileMode(493), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/store.d.ts", size: 2251, mode: os.FileMode(493), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -755,7 +760,7 @@ func initVscodeTypesRuntimeSuiDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime/sui.d.ts", size: 1713, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/sui.d.ts", size: 1713, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -775,7 +780,7 @@ func initVscodeTypesRuntimeTimeDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime/time.d.ts", size: 711, mode: os.FileMode(493), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/time.d.ts", size: 711, mode: os.FileMode(493), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -795,7 +800,7 @@ func initVscodeTypesRuntimeDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/runtime.d.ts", size: 424, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime.d.ts", size: 424, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -815,7 +820,7 @@ func initVscodeTypesSuiDTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/types/sui.d.ts", size: 8931, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/.vscode/types/sui.d.ts", size: 8931, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -835,7 +840,7 @@ func initAppYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/app.yao", size: 3115, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/app.yao", size: 3115, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -855,7 +860,7 @@ func initDataReadmeMd() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/data/README.md", size: 41, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/data/README.md", size: 41, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -875,7 +880,7 @@ func initDataTemplatesDefault__assetsReadmeMd() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/data/templates/default/__assets/README.md", size: 33, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/data/templates/default/__assets/README.md", size: 33, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -895,7 +900,7 @@ func initDataTemplatesDefault__assetsImagesIconsAppPng() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/data/templates/default/__assets/images/icons/app.png", size: 34558, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/data/templates/default/__assets/images/icons/app.png", size: 34558, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -915,7 +920,7 @@ func initDataTemplatesDefault__assetsImagesLogosLogo_colorSvg() (*asset, error) return nil, err } - info := bindataFileInfo{name: "init/data/templates/default/__assets/images/logos/logo_color.svg", size: 2909, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/data/templates/default/__assets/images/logos/logo_color.svg", size: 2909, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -935,7 +940,7 @@ func initDataTemplatesDefault__assetsImagesLogosWordmarkSvg() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/data/templates/default/__assets/images/logos/wordmark.svg", size: 3615, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/data/templates/default/__assets/images/logos/wordmark.svg", size: 3615, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -955,7 +960,7 @@ func initDataTemplatesDefault__dataJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/data/templates/default/__data.json", size: 30, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/data/templates/default/__data.json", size: 30, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -975,7 +980,7 @@ func initDataTemplatesDefault__documentHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/data/templates/default/__document.html", size: 492, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/data/templates/default/__document.html", size: 492, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -995,7 +1000,7 @@ func initDataTemplatesDefaultIndexIndexCss() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/data/templates/default/index/index.css", size: 2896, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/data/templates/default/index/index.css", size: 2896, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1015,7 +1020,7 @@ func initDataTemplatesDefaultIndexIndexHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/data/templates/default/index/index.html", size: 2361, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/data/templates/default/index/index.html", size: 2361, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1035,7 +1040,7 @@ func initDataTemplatesDefaultIndexIndexJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/data/templates/default/index/index.json", size: 31, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/data/templates/default/index/index.json", size: 31, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1055,7 +1060,7 @@ func initDbReadmeMd() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/db/README.md", size: 84, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/db/README.md", size: 84, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1075,7 +1080,7 @@ func initFlowsMenuFlowYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/flows/menu.flow.yao", size: 813, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/flows/menu.flow.yao", size: 813, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1095,7 +1100,7 @@ func initFormsAccountFormYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/forms/account.form.yao", size: 1194, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/forms/account.form.yao", size: 1194, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1115,7 +1120,7 @@ func initIconsAppIcns() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/icons/app.icns", size: 67465, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/icons/app.icns", size: 67465, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1135,7 +1140,7 @@ func initIconsAppIco() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/icons/app.ico", size: 54993, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/icons/app.ico", size: 54993, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1155,7 +1160,7 @@ func initIconsAppPng() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/icons/app.png", size: 34558, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/icons/app.png", size: 34558, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1175,7 +1180,7 @@ func initLoginsAdminLoginYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/logins/admin.login.yao", size: 302, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/logins/admin.login.yao", size: 302, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1195,7 +1200,7 @@ func initLogsReadmeMd() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/logs/README.md", size: 28, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/logs/README.md", size: 28, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1215,7 +1220,7 @@ func initModelsAdminUserModYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/models/admin/user.mod.yao", size: 6416, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/models/admin/user.mod.yao", size: 6416, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1235,7 +1240,7 @@ func initModelsTestsPetModYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/models/tests/pet.mod.yao", size: 525, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/models/tests/pet.mod.yao", size: 525, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1255,7 +1260,7 @@ func initNeoNeoYml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/neo/neo.yml", size: 724, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/neo/neo.yml", size: 724, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1275,7 +1280,7 @@ func initPublicReadmeMd() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/public/README.md", size: 108, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/public/README.md", size: 108, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1295,7 +1300,7 @@ func initPublicAssetsReadmeMd() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/public/assets/README.md", size: 33, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/public/assets/README.md", size: 33, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1315,7 +1320,7 @@ func initPublicAssetsImagesIconsAppPng() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/public/assets/images/icons/app.png", size: 34558, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/public/assets/images/icons/app.png", size: 34558, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1335,7 +1340,7 @@ func initPublicAssetsImagesLogosLogo_colorSvg() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/public/assets/images/logos/logo_color.svg", size: 2909, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/public/assets/images/logos/logo_color.svg", size: 2909, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1355,7 +1360,7 @@ func initPublicAssetsImagesLogosWordmarkSvg() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/public/assets/images/logos/wordmark.svg", size: 3615, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/public/assets/images/logos/wordmark.svg", size: 3615, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1375,7 +1380,7 @@ func initPublicAssetsLibsuiMinJs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/public/assets/libsui.min.js", size: 12569, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/public/assets/libsui.min.js", size: 12569, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1395,7 +1400,7 @@ func initPublicAssetsLibsuiMinJsMap() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/public/assets/libsui.min.js.map", size: 38553, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/public/assets/libsui.min.js.map", size: 38553, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1415,7 +1420,7 @@ func initPublicIndexCfg() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/public/index.cfg", size: 85, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/public/index.cfg", size: 85, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1435,7 +1440,7 @@ func initPublicIndexSui() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/public/index.sui", size: 5682, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/public/index.sui", size: 5682, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1455,7 +1460,7 @@ func initScriptsAccountTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/scripts/account.ts", size: 2521, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/scripts/account.ts", size: 2521, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1475,7 +1480,7 @@ func initScriptsAiNeoTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/scripts/ai/neo.ts", size: 375, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/scripts/ai/neo.ts", size: 375, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1495,7 +1500,7 @@ func initScriptsTestsTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/scripts/tests.ts", size: 1044, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/scripts/tests.ts", size: 1044, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1515,7 +1520,7 @@ func initScriptsUtilsTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/scripts/utils.ts", size: 1230, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/scripts/utils.ts", size: 1230, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1535,7 +1540,7 @@ func initSuisWebSuiYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/suis/web.sui.yao", size: 675, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/suis/web.sui.yao", size: 675, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1555,7 +1560,7 @@ func initTablesAccountTabYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/tables/account.tab.yao", size: 5597, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/tables/account.tab.yao", size: 5597, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1575,7 +1580,7 @@ func initTsconfigJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/tsconfig.json", size: 178, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "init/tsconfig.json", size: 178, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1595,7 +1600,7 @@ func libsuiAgentTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "libsui/agent.ts", size: 15267, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "libsui/agent.ts", size: 15267, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1615,7 +1620,7 @@ func libsuiIndexTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "libsui/index.ts", size: 13049, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "libsui/index.ts", size: 13049, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1635,7 +1640,7 @@ func libsuiUtilsTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "libsui/utils.ts", size: 5959, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "libsui/utils.ts", size: 5959, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1655,7 +1660,7 @@ func libsuiYaoTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "libsui/yao.ts", size: 4338, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "libsui/yao.ts", size: 4338, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1675,7 +1680,7 @@ func publicIndexHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "public/index.html", size: 11, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "public/index.html", size: 11, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1695,7 +1700,7 @@ func uiIndexHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "ui/index.html", size: 11, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "ui/index.html", size: 11, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1715,7 +1720,7 @@ func yaoAssistantsEntityPackageYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/assistants/entity/package.yao", size: 212, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/assistants/entity/package.yao", size: 212, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1735,7 +1740,7 @@ func yaoAssistantsEntityPromptsYml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/assistants/entity/prompts.yml", size: 930, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/assistants/entity/prompts.yml", size: 930, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1755,7 +1760,7 @@ func yaoAssistantsKeywordPackageYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/assistants/keyword/package.yao", size: 200, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/assistants/keyword/package.yao", size: 200, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1775,7 +1780,7 @@ func yaoAssistantsKeywordPromptsYml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/assistants/keyword/prompts.yml", size: 545, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/assistants/keyword/prompts.yml", size: 545, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1795,7 +1800,7 @@ func yaoAssistantsKeywordSrcIndexTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/assistants/keyword/src/index.ts", size: 2801, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/assistants/keyword/src/index.ts", size: 2801, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1815,7 +1820,7 @@ func yaoAssistantsNeedsearchPackageYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/assistants/needsearch/package.yao", size: 207, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/assistants/needsearch/package.yao", size: 207, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1835,7 +1840,7 @@ func yaoAssistantsNeedsearchPromptsYml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/assistants/needsearch/prompts.yml", size: 1572, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/assistants/needsearch/prompts.yml", size: 1572, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1855,7 +1860,7 @@ func yaoAssistantsNeedsearchSrcIndexTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/assistants/needsearch/src/index.ts", size: 2767, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/assistants/needsearch/src/index.ts", size: 2767, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1875,7 +1880,7 @@ func yaoAssistantsPromptPackageYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/assistants/prompt/package.yao", size: 186, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/assistants/prompt/package.yao", size: 186, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1895,12 +1900,12 @@ func yaoAssistantsPromptPromptsYml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/assistants/prompt/prompts.yml", size: 621, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/assistants/prompt/prompts.yml", size: 621, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _yaoAssistantsQuerydslPackageYao = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x34\x8d\x4d\x8a\xc3\x30\x0c\x46\xf7\x3e\xc5\x87\xd6\x61\x30\x59\x66\x39\x37\x98\x13\x0c\x4a\x2c\xa8\xc9\x8f\x53\xc9\xa6\x0d\x21\x77\x2f\x76\xe8\xf6\x7b\x4f\x4f\xa7\x03\x68\xe3\x55\x68\x00\xfd\x15\xd1\x03\xbf\x25\x2e\x41\x94\xba\x8a\x82\xd8\xa4\x71\xcf\x31\x6d\xd5\x68\x0c\x81\x33\x8f\x6c\x82\x67\x11\x8d\x62\xb7\x9a\x8f\xbd\x55\x5e\x49\xe7\xef\x79\x31\x31\x1a\x70\x82\x4c\x58\xa7\x47\xe5\x21\x1a\x8f\x8b\x04\xc2\xd5\x9c\xd4\xea\x4d\x73\x00\x40\x2b\xbf\xff\x73\x9a\xa5\x6d\xbd\xf7\xbe\xbb\xf7\x2c\xeb\x2e\xca\xb9\x68\xfd\xe3\x7f\x7a\x07\x5c\xee\x72\x9f\x00\x00\x00\xff\xff\x5a\x74\xb2\x32\xc4\x00\x00\x00") +var _yaoAssistantsQuerydslPackageYao = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x34\x8d\x41\x4e\xc4\x30\x0c\x45\xf7\x39\x85\xe5\xf5\x68\x04\xc3\x06\x66\xc9\x0d\x38\x01\x72\x93\x2f\x11\xb5\x4d\x82\x9d\x00\x55\xd5\xbb\xa3\xa4\x9a\xed\x7f\xcf\x7e\xbb\x23\xe2\x24\x2b\xf8\x4e\xfc\xd1\xa0\x1b\xbd\xb7\xb8\x04\x28\x5f\x3a\x0a\x30\xaf\xb1\xd4\x98\x53\x37\x06\xa3\x20\x55\x26\x31\xd0\x77\x83\x46\xd8\xa9\xfa\x9c\x12\x7c\xcd\xda\xc5\x00\x14\x03\xe6\xeb\xcf\xcb\x49\xeb\x56\x46\xe3\x37\xeb\xfc\x78\xde\x0c\xc6\x77\xda\x89\x0d\xa2\xfe\x6b\x1c\x46\x93\x69\x41\x60\x3a\x86\x93\x47\x7b\x68\x8e\x88\x88\x57\xf9\xfb\xac\x79\xc6\xd8\x5e\x9f\xdf\x6e\x97\x73\xaf\x58\x0b\x54\x6a\xd3\xde\x79\xba\xde\x1c\xd1\xe1\x0e\xf7\x1f\x00\x00\xff\xff\x2d\x0e\x79\x35\xe2\x00\x00\x00") func yaoAssistantsQuerydslPackageYaoBytes() ([]byte, error) { return bindataRead( @@ -1915,12 +1920,92 @@ func yaoAssistantsQuerydslPackageYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/assistants/querydsl/package.yao", size: 196, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/assistants/querydsl/package.yao", size: 226, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _yaoAssistantsQuerydslPromptsYml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x53\x5d\x4f\x2b\x37\x10\x7d\xcf\xaf\x38\x35\xaf\x4b\xd4\xf2\xb8\x22\x48\xb4\x55\x51\xab\x0a\x28\x51\x1f\x10\x42\x60\xd6\x93\xc4\xc5\x3b\x76\xed\x71\x42\xc4\xe5\xbf\x5f\xd9\xbb\xf9\xb8\xba\x97\x97\x64\x76\xce\x9c\x33\xe3\xf9\x38\xc1\x3f\x99\xe2\xf6\xf7\xf9\xdf\xb8\x22\xa6\xa8\xc5\x47\x5c\x2e\x89\x05\xb7\xd1\xf7\x41\xd2\xe4\x14\xd1\x3b\x6a\x91\xb6\x49\xa8\x9f\x00\x9d\x67\x21\x96\x16\x5f\x26\x00\x70\xef\x33\x74\x24\xe8\x83\xd4\x72\x27\x35\x2d\x68\x84\xe8\xf4\x0a\x9b\x20\xbe\x90\xd7\x14\x05\xac\x25\x47\xed\xe0\x34\x2f\xb3\x5e\x12\xfe\xcf\x14\x2d\x25\x58\x16\x8f\x7b\xed\x0f\x6a\x0b\x1f\x7b\x2d\xd3\x49\xcd\x76\x72\x54\xf1\x5c\x62\xee\x24\x47\xaa\xc8\xf3\xf3\xf3\x7f\xc9\x73\xb5\xdf\xeb\x2f\xa0\x12\x39\xea\x44\xb5\x78\x50\x0b\x4b\xce\xfc\xa2\x1a\x0c\xd6\x99\x7a\x6c\x76\x51\x8b\xe8\x7b\xd5\x42\x89\x7e\x71\xf4\xc4\xba\x27\xb5\xc7\x36\x2b\x8a\x94\x8a\xc2\xe8\x01\xde\x07\x85\xc2\x18\x62\xa1\x7c\x28\x5f\xb3\x62\xae\xb5\xcb\x54\xd5\x28\x89\xfa\x68\x7e\x44\x4b\xa2\x25\xa7\x03\xd1\xf2\x31\xf3\x41\xe9\x4e\xec\xba\x0a\x07\x62\x63\x79\xa9\x1e\x3f\x46\x9d\x43\xd5\x3e\x1a\x8a\x9f\x56\xd6\x45\xd2\x42\xe6\x49\x4b\x91\x49\x3e\x96\x2e\x28\x43\xa9\x53\xdf\x4b\x39\xdb\xdb\x82\x9f\xfd\x5c\x3d\x1f\xbb\x86\xee\x7b\x3e\xcf\x21\xf8\x28\x64\x70\x13\x86\xd1\xa6\x0a\x9d\xe2\x37\xdf\x07\x1d\x6d\xf2\xdc\x62\xd6\xe0\xa7\x59\x83\x8b\x06\x17\xb3\x06\xe7\x0d\xce\x67\x63\xd4\xad\x16\xa1\xc8\x2d\x9c\x7d\xa5\x06\xec\xa5\x5a\x23\x7a\xa7\x79\x49\x2d\x2c\x0f\x48\xf9\x7f\x21\xd9\x10\xf1\x18\x70\x9d\x9d\x43\xb7\xa2\xee\xb5\x2d\x7b\xc4\xd9\xb9\xa6\x1a\x5e\xea\xc7\xbe\xce\x3b\x4a\xc1\x73\x22\xfc\x51\x97\xa6\xba\x2f\xdd\x46\x6f\x13\x62\x85\x0c\x36\x56\x56\x58\x6b\x67\x0d\xfe\x9a\xdf\x5c\xb7\x9f\x2f\x8f\x49\x4e\xb5\x78\xc7\x74\x3a\xc5\x7e\x8e\x8a\xde\x82\xd3\x96\x4b\x37\x7f\x8d\x96\x16\xa8\x0e\xd6\x62\x3d\xc3\x2f\x20\xab\x61\x99\xb7\x47\x3b\xa4\x23\x5b\x5e\xa6\x61\xb6\xbc\xc5\xce\x01\x1f\xcb\x1b\x28\xa9\xc7\x4f\x1a\x7f\x95\xad\x21\x67\x99\x76\xfd\x1e\xcf\x94\xc6\x27\xec\x8f\xe1\x45\x27\x32\xf0\x5c\xf3\x87\xe8\xd7\xd6\x90\x41\xea\x56\xd4\xeb\x91\xfa\x6f\x22\xe8\x10\xa2\x0f\xd1\x16\x05\xbf\x1b\x65\x39\xb1\x43\xdd\xe5\x04\x89\x65\x24\xfd\xc9\x9d\xcb\x86\xe0\xd9\x6d\x51\xb7\x2b\x41\x56\x5a\x40\x6f\x36\x95\x59\x55\xe2\x37\x79\x2e\x8d\xc1\x8a\x5c\x58\x64\x77\xdc\x9c\x21\x4d\xe7\xfb\xe0\xe8\x6d\x77\xef\x93\xc9\xd7\x00\x00\x00\xff\xff\x44\xaa\x00\x17\x83\x04\x00\x00") +var _yaoAssistantsQuerydslPromptsAggregationYml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x39\x7d\x6b\x1b\xc9\xf9\xff\xfb\x53\x3c\xac\x0f\x62\xc3\x5a\x76\xee\xf7\x83\x82\x38\x1b\x54\xdb\x71\x7c\xc4\x56\x2a\xc9\xa1\x21\x04\x6b\xbc\x7a\x56\x9a\x78\x77\x66\x33\x33\xeb\x58\x4d\x05\x29\xa4\x4d\x5a\x72\xe4\x5a\x12\x28\x47\x43\xb9\x70\xd0\x72\x94\xb4\xa5\x25\xed\x35\xa5\xfd\x32\xf5\x4b\xfe\xea\x57\x28\x33\xb3\xaf\xda\x75\xe2\xa4\x29\x87\xc1\x5a\xcd\x3c\xef\xef\xcf\x6a\x16\xbe\x17\xa3\x18\xaf\x75\xaf\xc0\x06\x32\x14\x44\x71\x01\x0b\xd0\x1a\x0e\x05\x0e\x89\xa2\x9c\x2d\x76\x15\x51\x54\x2a\xea\x49\xe8\x7a\xc8\x88\xa0\x7c\x66\x01\x04\x0f\xb0\x09\x72\x2c\x15\x86\x33\x00\x1e\x67\x0a\x99\x6a\xc2\x0f\x67\x00\x00\xae\xf3\x18\x88\x40\x20\x39\xf9\x61\x4a\xbe\x01\xab\x9c\x1d\xa0\x50\xc0\x88\x8a\x05\x09\x20\x20\x6c\x18\x93\x21\xc2\xed\x18\x05\x45\x09\x94\x29\x0e\xd7\x09\xcf\xb1\x3f\xed\xb6\xb7\xc1\xe7\x22\x24\xaa\x61\x38\xf4\x46\x54\x82\x4c\xe4\x01\x9f\x7b\xb1\x44\x09\x9c\x41\x6b\x63\xa3\xb3\xbe\xd1\xea\x6d\xb6\xb7\x81\xb0\x01\x74\x7b\xad\xde\x66\xb7\xb7\xb9\xda\x4d\xc9\x37\x66\x0c\x85\xd9\xd9\x29\xf2\x5d\x6f\x84\x21\x31\x77\xfd\x7e\xff\x96\xe4\xcc\x3c\xdf\x35\xff\x01\x9c\x8f\xa4\x01\x70\x9a\xe0\x8c\x94\x8a\x9a\x8b\x8b\x1a\x66\xc1\x9e\x36\xb8\x18\x2e\x0e\x04\xf1\xd5\xc2\xd2\x77\x16\xed\xd9\xac\xe3\xa6\xb8\x8a\xaa\x00\x35\x66\xca\x32\xbf\x1a\xa0\xf4\x04\x8d\xb4\xad\x35\xc0\x06\x8f\xad\x5c\xb0\xc6\x43\x42\x19\x74\x23\xf4\xa8\x4f\x3d\xb8\x92\x9a\xc9\xe7\x02\x06\x44\x91\x3d\x22\x33\x9b\x15\x58\x8d\x23\xc3\x89\xef\xdd\x42\x4f\x15\xf9\xf8\x94\x51\xcd\x46\x3a\xcd\x4c\x2b\x00\x07\x0f\x23\x81\x52\x5a\xfe\xf9\x79\x81\x94\x54\x82\xb2\x61\x46\xaa\x4e\xec\x4b\x14\x83\x01\xe4\xa4\x1a\xd0\x1d\x33\x45\x0e\x9b\xe0\xeb\x1b\x17\x14\xd9\x0b\xb0\x91\x7c\x69\x5e\xda\xd9\x5e\x9d\x23\x62\x28\xe7\x5d\x0b\x00\x44\x02\x09\x28\x91\x4e\xc6\x64\x92\xf3\x73\x3c\xce\x06\x54\xbd\x41\xc4\x29\x6d\xeb\x44\xb4\x56\xcd\x29\x95\x60\x23\xc1\x23\x14\x4a\x5b\xb2\xcc\x01\xc0\x31\x02\xea\xe3\x8a\x45\x8a\x32\x1a\x50\x1e\xd5\xc2\xb9\x15\x61\x96\x5d\x58\x71\x61\x65\xd9\x85\x4f\x5c\xf8\x44\x7f\xac\xb8\x10\xd0\x7d\x74\x21\x24\xca\x1b\xb9\x40\x99\x0b\x54\x56\x59\x1c\x90\x20\x46\xcb\x65\x8a\xe6\x2a\x0f\x23\x9d\x75\x16\xa2\x2a\x9b\x28\xcb\xb6\xc7\x79\x80\x84\x59\xe1\x7c\x12\x07\xca\x69\x82\x4f\x02\x89\x15\xd4\xe5\x5a\x7e\xdd\x11\x17\x6a\xa4\x93\x4c\x47\x24\x8f\x96\x2f\x2c\x5f\xa8\xb2\x5d\xd1\xb8\x13\x17\x9c\x95\xe5\xf4\xe9\x93\xec\x21\x3f\x4a\xc0\xca\xb8\xda\x20\xe7\x64\xad\x41\x6b\xb8\x53\x56\x56\x9a\x08\x41\xc6\x35\xfe\xa8\x12\xa4\xac\x8e\x9c\x3c\xcb\xbf\xc8\xe2\xd0\x69\xc2\x0d\x87\xc5\x41\xa0\x0f\x18\x57\x60\x9e\x6f\xc2\xa4\x40\x64\x52\x1b\xdf\x77\x46\x28\x70\x3a\xb6\x49\x10\xb4\x7d\x4d\xb3\x24\xc3\x5d\x70\x3e\x12\xa8\xcf\x9d\xd9\xc5\x42\x52\x2f\xe6\x91\x3d\x2d\xf6\xdd\xe9\xf8\x4e\x18\xca\x33\x6c\x43\x15\x86\xc9\x5d\x3d\x2b\x2b\x2e\x4c\xec\x5f\x81\xd7\xcd\x5a\xed\xb8\x18\xa0\x98\xd6\x8e\x33\xac\xd7\xee\xad\xb9\x73\xc1\x56\x0c\x7d\x7a\xc1\x85\x0b\x69\xfd\xf0\xaa\xfe\xba\x5b\x2d\x10\x55\x53\x64\xe9\xad\xe3\x50\x72\xa1\xec\x71\xe6\x50\x22\xbd\x54\x08\xed\xcb\x73\x69\x3c\x14\x3c\x8e\x3e\xb4\xc6\xb9\xb2\x82\x07\x41\x1c\xc1\xd1\xe7\x0f\x4f\x5f\x7c\xf9\x21\xd4\xb6\x04\xcf\xa8\x71\xe7\xd2\xf8\x16\xa7\xef\x54\x9c\xdf\x58\x70\x05\x0f\x6b\xd3\xbe\xa7\x9b\x08\x28\x0e\x86\x5b\x25\x3b\xf7\x71\x5c\x8b\xf6\x29\xa7\x0c\xf6\x71\x6c\x5b\x4d\x15\xcf\xe7\x02\xe9\x90\xd5\xe2\x5e\xb2\x77\x6f\x42\x0f\xd0\x57\xf5\xa5\xb5\x02\x2a\xe8\x70\x74\x26\x6c\xb1\x4a\x94\x6c\x25\xf0\x76\x4c\x05\x0e\x4c\x38\x1a\xe3\xb8\x56\x59\x37\x97\xbd\xe0\x95\x99\x29\x1a\x67\xd9\xda\x91\x18\x68\xbf\xbc\x67\x11\x28\xcc\x0d\x3a\x42\x0a\xb1\x90\xfb\xef\xad\x91\x6d\x3d\xca\x48\x58\x6e\x58\x1f\xac\x3e\x4d\x57\x21\x59\xeb\xe4\x76\x67\x6d\xbd\x03\xdf\xbd\xee\x54\x93\xb8\x1e\x61\xa3\xd3\xde\xb9\x5a\x41\x18\x91\x03\xca\x86\x67\x49\x3d\x45\xe2\x72\xeb\xda\xe6\xf6\x46\x3e\x8f\x94\x5b\xbd\xc9\xa7\xf7\xd6\x3f\x49\x8f\x12\xc1\x80\x86\x74\xca\xd7\x94\x29\x1c\xa2\xa8\x11\x6e\x8b\x1c\x82\x40\x8f\x8b\xc1\x94\x58\xdc\xf7\x25\x9e\x9b\x4c\x77\x9f\x46\xf5\x74\x22\x32\xc4\xf3\x52\xb9\xaa\x87\x5e\x16\x87\x7b\x28\x60\xee\xe2\x82\x1e\x7b\x07\xf3\x55\x72\x92\xfe\xe0\xdc\x24\x3b\x56\x26\x88\x50\x80\x11\xa5\x1c\xbf\x54\x48\x55\xeb\xf7\x0e\xaa\x58\x30\x30\x00\x89\x62\x73\x72\x3e\xcf\x5d\xfb\x39\x49\x97\x88\x6c\xd3\x48\x17\x2a\x84\x4b\x31\xf3\x8c\x93\xcc\xd5\x02\xf4\x9b\xab\xed\x9d\xed\xde\x9c\xa9\x2d\xf3\x7d\x58\x80\x55\x1e\xb3\x94\x78\x0e\xd5\xdd\xd9\x2a\xc0\x74\xe3\xd0\x8e\x79\x39\x40\xeb\xda\x46\x01\xa0\x75\x80\x82\x0c\x31\xbb\xdd\x6a\x7d\xbf\x70\xbb\x45\x0e\x69\x18\x87\xf9\xed\xe6\x76\xf1\x96\xb2\xd2\xed\x5a\xab\xb7\x5e\xb8\x5e\x3f\x54\x82\x78\x4a\xaf\x20\x08\x3a\xd5\xcd\x93\xa2\x61\xce\xed\xfa\x7a\xab\x93\x62\xb8\x9a\x7e\x7b\xbb\x77\xb9\x86\xc4\x18\x89\x58\x0c\x39\x53\xa3\xcc\x52\x1b\x26\xe9\x92\xed\x21\x21\xd8\x35\xd5\xa3\x09\x7d\xc7\x23\x0a\x87\x5c\x8c\x9d\x3e\x70\x01\x77\xa8\x1a\xa5\xbd\x30\xbf\x2b\x77\x47\xa7\x9f\x10\x69\x9b\x26\xd4\x84\xfe\xdd\xac\xf5\xe5\xe4\x8a\x2d\xd0\xe9\x71\x45\x02\x67\x92\x7b\x6f\x35\xcd\x51\xb8\x64\x56\x50\x73\x9e\x1d\x4a\x88\x25\x82\xae\xb0\x66\x7b\x26\xd2\xae\x93\xfb\x38\x2e\x33\x3b\x3c\x3c\xd4\x7c\xda\x57\xd7\x3b\xad\x5e\xbb\xe3\x34\xe1\x5a\xeb\xca\xce\xfa\x24\x15\xb0\xef\xac\x38\x7d\x28\xe3\x44\x82\x7a\xa8\xb1\xf4\x78\x7c\x71\x69\xa9\x08\xbc\x5c\x81\xf6\x74\xe4\x38\xe9\xa8\x7d\xb1\x08\x5d\x05\x96\x8a\xa8\x58\x6a\xe8\x65\x53\x5c\x3c\x45\x0f\xb0\xa8\xf5\x65\x5b\xcd\x60\xce\xa7\x81\x42\x01\x24\x8d\xe1\x01\x08\x94\x71\xa0\xe4\xbc\x01\xdd\x91\x08\xc4\xd7\x10\x69\x55\xd4\x1d\xba\x8a\x64\xe3\xb5\x99\x8a\x54\x10\xc5\x04\x37\x09\xb5\xf4\xf3\x05\x65\x0b\xf2\x17\x81\x6d\xbe\xd0\xc1\x7c\x59\xd3\x54\xec\xf5\x43\x12\x46\x01\x4a\x7b\xb0\xc9\xa2\x58\x35\xc1\x39\x7e\xf4\xd3\x93\x9f\xbd\x3c\xbe\xf7\xa3\x93\x57\xbf\x3e\x7d\xf1\xe5\xe9\x8b\xe7\x47\x9f\x3d\x3d\x7e\xfa\x87\xd7\x0f\x1e\xdb\x8d\xd3\x6e\xff\xcd\xea\xfa\xef\x98\xe6\xd4\xcc\xfa\x87\xab\xed\x1c\xc4\xa1\xa9\xce\xe9\x28\x97\x43\xd1\x81\x86\x48\x2b\xd0\xe6\x9a\xfe\x16\x90\x3d\x0c\x92\xaf\x59\x9d\xc9\x51\x72\x4f\x54\xdb\x65\x86\x6a\xa5\xaf\x43\xb7\x86\x2b\xa2\x0f\xd0\xa3\x21\x09\x4a\xf8\xaf\x1f\xfc\xfc\xf5\xf3\x67\x8e\x2d\x4d\x37\xf3\x0a\xa5\x3f\xdb\xb1\xd2\x56\x4a\xf4\xcd\xa6\x82\x1b\x05\xc9\x72\xab\xeb\x00\xb7\x81\x76\xd3\xcd\x5a\x7d\xc1\x38\x59\xd7\xcc\xd0\x6f\x4e\xca\xbe\x38\xfa\xfc\xfe\xd1\xc3\x9f\x9c\xfc\xf1\xd5\xeb\x27\xf7\x8e\x9e\xbc\x38\xbe\xf7\xea\xf5\xf3\x67\xff\xfe\xfb\xa3\xa3\xc7\x5f\x1f\xff\xf2\x1f\x27\x5f\xfd\xed\xf4\xe5\x8f\x4f\xff\xf9\x40\x47\xc0\xd2\xc9\x17\xf7\xcf\xeb\x9f\x48\xf0\x41\xec\xa9\xff\x85\x87\x8a\x75\xe2\x0d\x3e\xb2\x5a\xd5\xba\x98\x04\x28\xdf\xea\x22\x63\x8e\x77\xf7\x52\x51\x3a\x93\x4a\x86\x9b\x71\x94\x32\xa5\xac\xe8\xa8\xa2\x95\x0a\xae\xca\x68\x68\xd8\x7c\x8e\xb9\x31\x9d\xa5\x96\x74\x31\x49\x97\x26\x1a\x25\x1b\xae\x6e\x38\x86\x27\xd8\x75\x69\xca\xf3\x5b\xba\xd4\x07\x63\x30\xd0\x49\x14\x7d\xdb\xd9\x77\xbe\xf4\x69\x59\xa8\xba\xd8\x10\xa8\xcb\xdb\x2e\x29\xd3\x48\x5a\x62\x89\xc8\xaa\x05\x85\x96\x7a\x47\x0f\xdb\x86\x9a\x73\x32\xbe\xd5\xcd\xd3\xb8\xdc\x76\xd7\xa9\x5b\xd3\x55\xdf\x3b\x73\x2b\x0c\xeb\x19\x39\x53\xae\xd7\x22\x59\xcf\xbb\xe0\x18\x09\xea\xe3\xe0\xf8\xf7\x8f\xff\xf5\xd7\xaf\x4f\x9e\xfc\xf6\xf8\xe1\x5f\x4e\xbe\xb8\x7f\xf4\xcd\x9f\x8e\x9e\x3d\x38\x7e\xf9\xf0\xf4\xcf\xdf\x1c\xfd\xe2\xd1\xf1\xaf\xee\x1d\x7d\xf5\x9b\xa3\xcf\x9e\x9e\xfc\xee\x89\x2d\xd4\xdf\x7a\x90\xc4\x12\xc5\x6e\x19\xaf\x30\x5c\xe6\x45\xda\x68\xf4\xdf\xc4\xd9\x7b\x95\xe9\x82\x74\x66\x0c\x4c\x5a\xa9\x79\xa7\x7a\x30\xdc\xcd\x39\x9b\x31\xb0\x70\x1b\x92\xc3\xf4\xf6\xad\x21\x91\x32\x49\x7d\x39\x3b\x0b\x1d\x94\x11\x67\x12\x8b\x63\x91\x15\xd2\x8e\x40\x9c\x05\xe3\x06\x6c\x73\x08\x89\xd8\x1f\xf0\x3b\xcc\x05\xc6\x01\x0f\xa3\x80\x30\xf3\xe3\x42\xf6\x2a\x7e\x16\xba\xb1\xe7\xa1\x94\x19\xcd\x8a\x96\x8d\x46\xa3\x28\xa3\x79\x9f\x5c\x16\x51\x43\x4c\x72\x8a\xeb\x42\x70\x31\x4d\x0f\xf5\xa1\xc6\x37\x0f\xbb\x1e\x1f\x18\x22\x21\x4a\x69\x37\x12\xc7\xa2\x15\xe7\xfe\x49\x3a\x85\x84\x54\x4a\xca\x86\xbb\xf6\xf5\x7e\xbf\xa9\x55\xb3\xcf\x10\x09\x7e\x40\x07\x38\x98\x06\xbd\x1d\xa3\x18\x5b\x48\xf3\xb8\x98\xec\xf2\x21\x32\x95\x21\x01\xa4\x68\x94\x1d\x90\x80\x0e\x76\x4d\xd1\xed\x37\xa1\x83\x3e\x0a\x64\x1e\x0e\x92\xd7\xe4\x8c\x2b\xa0\x2c\xe1\x9a\x62\x91\x70\x8f\x0e\x63\x1e\xcb\x8c\x9d\x7d\xd7\x4d\xcd\x8f\x32\x10\x33\x2f\x40\x22\xf2\x11\x3b\xa6\x03\x0c\x28\x4b\x96\x87\x8b\x0d\x68\xb3\x60\x6c\xa6\x58\xc3\x44\xda\xa9\x5e\x8d\x30\x97\x30\x51\x73\x4e\x03\xd9\xdc\x6a\xe8\xc0\xb6\x13\xe0\xc7\x0d\x58\xb3\x6f\x90\xc1\x6c\x99\x7a\xfe\xfb\x78\x09\xa8\x6f\xc4\x95\xf6\x07\x8c\xc4\x36\xff\xd7\x80\x64\x89\x32\x1e\xb0\x81\x42\x7d\xa0\xba\x34\x00\x95\x40\x99\x8c\x7d\x9f\x7a\x14\x99\x8d\xa8\xff\x6f\xc0\xe6\xd6\xd5\x76\xa7\xd7\xda\xee\x35\xe1\x1a\x0a\xea\x8f\x61\xcc\xe3\x04\x57\x9a\x4d\x01\xf6\xd0\xe7\x02\x81\x9b\xf0\x6b\xc0\x3a\x93\xb1\x40\x20\x41\xa0\x07\xf1\x05\x33\x7b\x42\x44\xa8\xb0\xd3\xba\xc7\x03\xce\x60\xae\x39\xef\x02\x36\x86\x0d\x78\xd3\xc8\x0d\xdb\xed\xde\x19\x00\xae\x01\x98\xf9\x4f\x00\x00\x00\xff\xff\xf0\x9a\xca\xd7\x46\x1b\x00\x00") + +func yaoAssistantsQuerydslPromptsAggregationYmlBytes() ([]byte, error) { + return bindataRead( + _yaoAssistantsQuerydslPromptsAggregationYml, + "yao/assistants/querydsl/prompts/aggregation.yml", + ) +} + +func yaoAssistantsQuerydslPromptsAggregationYml() (*asset, error) { + bytes, err := yaoAssistantsQuerydslPromptsAggregationYmlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "yao/assistants/querydsl/prompts/aggregation.yml", size: 6982, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _yaoAssistantsQuerydslPromptsComplexYml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\x59\x5b\x6f\xdc\xc6\xf5\x7f\xd7\xa7\x38\xa0\x12\x58\xc2\x9f\x5a\xad\xfc\x8f\xdb\x62\x61\x09\x50\x75\x8b\x02\x5b\xab\xae\x64\x21\x86\x20\x48\x23\xf2\xec\xee\x44\xdc\x19\x7a\x66\x28\x6b\xeb\x2e\x90\xa2\x29\xe2\x06\x0e\x92\x5e\x82\x14\x69\x82\x22\x46\x81\x16\x7d\x70\xf3\x60\x38\x88\x5d\xb4\x5f\xa6\xba\xf8\xa9\x5f\xa1\x98\x19\x5e\x66\x97\xd4\xc5\x81\x03\x01\x5a\x72\x78\xee\xe7\x37\x67\xce\x21\xc7\xe1\x67\x09\x8a\xfe\xe2\xc6\x2d\x58\x41\x86\x82\x28\x2e\x60\x0a\x16\x78\x2f\x8e\xf0\xc8\x3e\x84\x8d\x00\x19\x11\x94\xc3\xc4\x32\x8d\x14\x0a\xf8\x3f\x98\xef\x74\x04\x76\x88\xa2\x9c\x4d\x8e\x4d\x81\xe0\x11\x36\x40\xf6\xa5\xc2\xde\x18\x40\xc0\x99\x42\xa6\x1a\xf0\x8b\x31\x00\x80\xbb\x3c\x01\x22\x10\x48\xa1\xac\x93\x29\xab\xc1\x02\x67\x87\x28\x14\x30\xa2\x12\x41\x22\x88\x08\xeb\x24\xa4\x83\x70\x2f\x41\x41\x51\x02\x65\x8a\xc3\x5d\xc2\x0b\xee\x77\x36\x9a\x6b\xd0\xe6\xa2\x47\x54\xcd\x68\xd8\xec\x52\x09\x32\x33\xb3\xcd\x83\x44\xa2\x04\xce\x60\xa1\x79\x7b\xfd\xd6\xd2\xbb\xb9\xac\x80\xf7\xf6\x29\xa3\xac\x03\x6d\xe3\x8a\xf4\x81\x14\xae\xe8\x3b\x16\x82\xe4\x42\x51\xd6\xa9\x8d\x19\xd9\xe3\xe3\x23\x8a\x37\x82\x2e\xf6\x88\x79\xb6\xb7\xb7\xf7\x9e\xe4\xcc\x5c\x3f\x30\xff\x01\xbc\x37\xa4\x21\xf0\x1a\xe0\x75\x95\x8a\x1b\xd3\xd3\x9a\x66\xca\xae\xd6\xb8\xe8\x4c\x87\x82\xb4\xd5\x54\xfd\xc7\xd3\x76\x6d\xdc\xf3\x33\x5e\x45\x55\x84\x9a\x33\x53\x59\x3c\x0a\x51\x06\x82\xc6\xda\x4e\x4d\xb0\xc2\x93\x34\x3d\x8b\xbc\x47\x28\x83\x8d\x18\x03\xda\xa6\x01\xdc\xca\x02\xd8\xe6\x02\x42\xa2\xc8\x3e\x91\x79\x34\x1d\x55\xfd\xd8\x68\xe2\xfb\xef\x61\xa0\x5c\x3d\x6d\xca\xa8\x09\x87\xd7\xc8\xbd\x02\xf0\xf0\x28\x16\x28\xa5\xd5\x5f\xac\x3b\xa2\xa4\x12\x94\x75\x72\x51\x55\x66\x2f\x53\x8c\x42\x28\x44\xd5\x60\xa3\xcf\x14\x39\x6a\x40\x5b\x3f\xf1\x41\x91\xfd\x08\x6b\xe9\x4d\x63\xf9\xce\xda\xc2\x04\x11\x1d\x39\xe9\x5b\x02\x20\x12\x48\x44\x89\xf4\x72\x25\x83\x42\x9f\x17\x70\x16\x52\x75\x81\x89\x23\xde\x56\x99\x68\xa3\x5a\x48\x1a\xa2\x8d\x05\x8f\x51\x28\x1d\xc9\x61\x0d\x00\x9e\x31\x50\x2f\x97\x22\xe2\xda\x68\x48\x79\x5c\x49\xe7\x97\x8c\x99\xf5\x61\xce\x87\xb9\x59\x1f\x6e\xfa\x70\x53\xff\xcc\xf9\x10\xd1\x03\xf4\xa1\x47\x54\xd0\xf5\x81\x32\x1f\xa8\x2c\xab\x38\x24\x51\x82\x56\xcb\x88\x4c\xbd\xbb\xf5\x7e\xb4\x14\x65\xdb\xc4\xb0\x6d\xfb\x9c\x47\x48\x98\x35\xae\x4d\x92\x48\x79\x0d\x68\x93\x48\x62\x89\x75\xb6\x52\xdf\x46\x97\x0b\xd5\xd5\x3b\x4b\x23\x92\xc7\xb3\xd7\x66\xaf\x95\xd5\xce\x69\xde\x81\x0f\xde\xdc\x6c\x76\x75\x33\xbf\x28\x96\x52\xb2\x61\x5e\x1d\x90\x2b\xaa\xd6\xa4\x15\xda\x29\x1b\x76\x9a\x08\x41\xfa\x15\xf9\x28\x0b\xa4\xac\x4a\x9c\x3c\x2f\xbf\xc8\x92\x9e\xd7\x80\x6d\x8f\x25\x51\xa4\x17\x18\x57\x60\xae\x77\x60\xe0\x08\x19\x54\xe2\xfb\x7e\x17\x05\x8e\x62\x9b\x44\x51\xb3\xad\x65\x0e\xd9\xf0\x00\xbc\x37\x04\xea\x75\x6f\x7c\xda\xd9\xd4\xd3\x05\xb2\x47\xcd\x7e\x30\x8a\xef\x54\xa1\x3c\x27\x36\x54\x61\x2f\x7d\x56\xad\xca\x9a\x0b\x03\xfb\xe7\xe8\xda\xa9\xf4\x8e\x8b\x10\xc5\xa8\x77\x9c\x61\xb5\x77\x97\xee\x9d\x6b\xb6\x62\xe8\xd5\x6b\x3e\x5c\xcb\xea\x47\x50\xce\xd7\x83\x72\x81\x28\x87\x22\xdf\xde\x1a\x87\xfa\x8c\xb0\xcb\x79\x42\x89\x0c\x32\x23\x74\x2e\xaf\xe4\x71\x47\xf0\x24\x7e\xdd\x1e\x17\xce\x0a\x1e\x45\x49\x0c\xc7\x9f\x3e\x3c\x7b\xf2\xf5\xeb\x70\xdb\x0a\x3c\xa7\xc6\x5d\xc9\xe3\xf7\x38\x7d\xa5\xe2\x7c\x61\xc1\x15\xbc\x57\xb9\xed\x37\xf5\x21\x02\x8a\x83\xd1\x56\xda\x9d\x07\xd8\xaf\x64\x7b\x87\x53\x06\x07\xd8\xb7\x47\x4d\x99\xaf\xcd\x05\xd2\x0e\xab\xe4\x5d\xb6\xcf\x2e\x62\x8f\xb0\xad\xaa\x4b\x6b\x89\x54\xd0\x4e\xf7\x5c\x5a\xb7\x4a\x0c\xc5\x4a\xe0\xbd\x84\x0a\x0c\x0d\x1c\x4d\x70\x7c\xeb\xac\x5f\xd8\xee\x64\x65\x6c\x44\xc6\x79\xb1\xf6\x24\x46\x3a\x2f\xdf\xb3\x08\x38\x7d\x83\x46\x88\x83\x85\x22\x7f\x97\x22\xdb\x66\x94\x91\xde\xf0\x81\xf5\xda\xea\xd3\x68\x15\x92\x95\x49\x6e\xb6\x16\x97\x5a\xf0\xd3\xbb\x5e\x79\x13\x57\x33\xac\xb4\x9a\x77\xd6\x4b\x0c\x5d\x72\x48\x59\xe7\x3c\xab\x47\x44\xbc\x3d\xbf\xb5\xba\xb6\x52\xf4\x23\xc3\x47\xbd\xd9\x4f\xdf\xdb\xff\x74\x7b\x0c\x09\x8c\x68\x8f\x8e\xe4\x9a\x32\x85\x1d\x14\x15\xc6\xdd\x26\x47\x20\x30\xe0\x22\x1c\x31\x8b\xb7\xdb\x12\xaf\x2c\x66\xe3\x80\xc6\xd5\x72\x62\xd2\xc1\xab\x4a\x59\xd7\x4d\x2f\x4b\x7a\xfb\x28\x60\x62\x66\x4a\xb7\xbd\xe1\x64\x59\x9c\xa4\x3f\xbf\xb2\xc8\x96\xb5\x09\x62\x14\x60\x4c\x19\xc6\x2f\x15\x52\x55\xe6\xbd\x85\x2a\x11\x0c\x0c\x41\xea\xd8\x84\x9c\x2c\xf6\xae\xfd\x1d\x64\x43\x44\x3e\x69\x2c\x64\x59\x86\x65\x33\xde\x98\xf5\x7c\x51\x42\x22\x11\xf4\x1e\x35\x73\x1a\x91\x76\x20\xd1\x25\xe7\x3e\x55\x5d\xdb\xd0\x35\x60\xef\x41\x5e\xb4\xbd\xa3\xa3\x23\xed\x56\x73\x7d\xa9\x35\xbf\xd9\x6c\x79\x0d\xd8\x9a\xbf\x75\x67\x69\x90\xaa\x6c\xa6\xb2\x24\x4c\x24\x12\x43\x57\xa4\x9c\x6c\x18\x92\x29\xd8\xf3\x66\xbd\x3d\x18\x96\x2b\x15\x51\x89\xd4\xa2\x67\x0d\xe4\x02\x45\x0f\xd1\x1b\xec\xe5\x2c\x73\x25\x96\x58\xd0\x00\x35\x87\x6e\xe1\x66\xea\x75\x97\xb8\xac\x40\x07\x3b\x6b\x06\x67\x7e\xe2\xd0\xde\xac\xb0\x85\x07\x07\x5e\xda\x2f\xce\xb8\x72\x6f\x56\x18\x1e\x70\x61\x24\x9b\x9e\xf2\x47\x2e\xb5\xe9\x22\x47\xe9\x4d\xc9\xf1\xf3\x16\xd3\x7b\x53\xa1\x54\x6f\xba\x9e\x52\x76\x41\x74\xcc\x61\xb7\xed\x11\x7d\xbd\xef\xed\xb8\x6c\xb2\xc4\x16\x62\x84\x0a\xc3\x5d\x62\x0e\x62\xd3\x43\xda\x36\x31\x67\x6b\xb6\x0c\x87\x69\xd1\x95\x48\xd0\x87\xb2\xa5\x26\x21\xda\xca\x82\x6d\x0d\xa5\xc2\xd0\xb0\xe6\x05\x73\x5b\x57\x94\x19\x1f\x86\xa4\xd5\x6a\x35\xbd\x7c\x7d\xb0\x33\x28\x40\x99\x0d\xfb\x08\xcb\x09\x0b\x0c\x10\x33\x2f\x1a\x0b\xcd\x3b\x6b\x9b\x13\xc6\x86\xc9\x3d\x1f\xf6\x1a\x1b\x77\x6e\xbb\xb7\xf3\x5b\x2b\xee\xed\xed\xf9\x77\x87\x6e\x57\xd7\xb2\xdb\x5c\xe2\xe2\xfc\xe6\x92\x4b\x73\x77\x69\xbe\x35\xc4\xd3\x5c\xdb\x7c\x3b\xe7\xca\x6c\x7c\xdb\x96\x54\x98\xb0\x73\x7d\x3e\xd5\x63\x08\x02\x65\x12\x29\x39\x99\x69\x70\x02\x6e\xac\x25\x3d\x9e\x30\x35\xe9\x20\xb3\xee\x38\xbf\x74\x44\x7a\x71\x84\xd2\x2e\xac\xb2\x38\x51\x0d\xf0\x4e\x5f\xfc\xf9\xec\xc9\xd7\xff\x79\xf1\xd1\xf1\x77\x4f\x4f\xfe\xf1\xc9\xc9\x97\x0f\x4f\xbf\xf8\xe0\xe4\xe9\x8b\xb3\x6f\x7f\x75\xf6\xe4\xf1\xf1\xc7\x9f\x9d\x7c\xf6\xcd\xf1\xef\x1e\x9d\xbc\xff\xe2\xe5\x87\xbf\x7d\xf9\xf8\x2b\x3b\xad\xda\x37\x07\x8d\xf2\xab\x03\x9b\xbb\x46\x7e\xf6\xf8\x7a\x92\x8d\x92\x9e\xa9\xec\x59\x1b\x58\x50\xd1\x50\x53\x64\xd5\x6b\x75\xd1\xe0\x93\xec\x63\x94\xde\xe6\x35\xaa\x60\x29\x10\x59\x3e\x6a\x73\xd6\xd3\x8f\x9e\x9d\xbc\xff\xcb\x2a\x76\x1b\x23\x97\x3d\xc4\x80\xf6\x48\x34\xc4\x9f\xfa\x5a\xc1\x1f\x08\x24\x05\xb2\x73\x19\x44\xa1\xa2\xe9\xfe\xca\x84\x1c\x3f\xfc\xd3\xf1\x8b\xe7\x27\x9f\x3f\x7b\xf9\xf9\x53\xcf\x56\xc8\x9d\xa2\x50\x9a\xa2\x95\x28\x9d\x85\x34\x74\x79\x73\xb2\xed\xa5\xd8\x28\x94\x4d\xea\x82\xd6\xe3\x4c\x75\xb5\x8a\x14\xac\x34\x34\xcb\x41\xe6\x91\x0b\x02\xfd\x40\x71\x45\x22\x6f\xc7\xcf\xfb\x13\x27\x2b\xc5\xee\xb9\xbc\x16\xea\xad\x95\xd3\x0c\x07\xc0\x54\x35\xef\x7a\xfd\xfa\x5b\x53\xf5\x99\xa9\xfa\x8c\x37\xd0\xea\xf2\x3e\xa2\xca\x13\x63\x50\xde\x9a\x6c\x7b\xc6\x2b\x3d\xcd\x78\x3b\x83\x61\x6c\x2e\x53\x16\x82\xe2\x31\xdc\x80\x80\x28\xec\x70\xf3\xe6\x6b\xbf\x0f\x92\x44\x28\xc1\xb8\x00\xa6\x18\xc3\x9c\x46\xbb\x0f\x9c\x45\x7d\x90\x5d\x7e\xdf\x65\x30\x27\x8a\x89\x85\x25\xab\xd7\xaf\x0a\xe2\x58\xf0\x30\x09\xd4\x0f\x01\xe3\xac\xc6\x5d\x00\xe2\x35\x4d\x52\x05\x41\xeb\x5a\xff\x12\xf6\x85\x8c\xac\x42\x44\x7e\x82\x5d\xb4\x09\xd6\x0d\x51\xd5\x16\xd4\xe1\x77\xb9\x9d\xb6\x23\xe7\xde\x30\x44\xaf\x06\x7b\xd7\x33\x03\x66\xa3\xa9\xc0\xf2\xae\xd5\xec\x22\xda\x4d\x51\x25\xa6\x4b\x87\xf5\x08\x40\x73\x9d\x7a\xbd\xe8\x67\xb7\x47\x8b\xab\x35\xc5\xad\xad\x56\x94\x83\x64\xc7\x46\xb0\xc3\xb3\x5f\x74\xa1\x37\x46\xc0\x7d\xf2\xe8\x37\xc7\x5f\x7e\x73\xfc\xe8\xb9\xad\xc0\x5b\xab\xeb\xa7\x7f\xf8\xdb\xc9\xc3\x6f\x75\xf9\x7d\xf6\xf0\xec\xe9\x77\xba\xe4\x3e\xfe\xea\xbf\xff\x7c\x74\xfc\xc9\xdf\x4f\xfe\xf8\xaf\xd3\xbf\x3c\xb7\xeb\x67\xcf\x7e\x7d\xf6\xef\x0f\x6f\xd4\xeb\xf5\xd3\x2f\x3e\xb0\x22\xae\x8a\xe7\x44\xfe\x30\x35\xf9\x0a\x60\x3e\xfe\xeb\xef\x8f\x3f\xfd\xb8\x8a\x59\x60\xc7\xbc\x9c\xbc\x98\xdd\xfa\x59\xc1\x4e\xe5\xee\x21\x8d\x5d\x76\xe7\x35\x5f\xce\xbf\xb5\xba\x5e\xc5\x9c\x66\x2c\xc6\xcb\x8f\x04\x37\x29\xaf\x08\xeb\xc2\xc3\xe1\xc2\xad\xd3\xb1\x3b\x5c\xbd\x1d\x83\xce\x29\xe1\x79\x0e\x2b\xd1\x5e\x44\x63\x36\x6d\x85\x46\xf1\x9e\x1a\x73\x09\xda\x5d\x3b\x32\xcc\xdf\x38\x0f\xf2\x29\xd8\x07\x79\xab\xd1\x42\x19\x73\x26\xd1\xed\xfd\x6d\x74\x6c\x53\xae\xcb\x74\x0d\xd6\x38\xf4\x88\x38\x08\xf9\x7d\xe6\x03\xe3\x80\x47\x71\x44\x98\xf9\x7e\x91\x7f\xb1\x18\x87\x8d\x24\x08\x50\xca\x5c\x66\x29\xbc\xb5\x5a\xcd\x8d\x8f\x79\xed\x3e\x1c\x9f\x94\xa2\x08\x42\xba\xe0\xf8\xaf\x57\x06\x85\xd2\x25\x21\xb8\x18\x55\x89\x7a\x51\xab\x30\x17\xbb\x01\x0f\x8d\x9e\x1e\x4a\x69\x67\x3b\xcf\xb2\xb9\x13\xd4\x20\xeb\xd5\x7a\x54\x4a\xca\x3a\xbb\xf6\x43\xc9\x5e\x43\x7b\x6f\xaf\x21\x16\xfc\x90\x86\x18\x8e\x92\xde\x4b\x50\xf4\x2d\xa5\xb9\x9c\x4e\xdf\x8a\xf4\x90\xa9\x9c\x09\x20\x63\xa3\xec\x90\x44\x34\xdc\x35\x89\xdc\x6b\x40\x0b\xdb\x28\x90\x05\x18\xa6\x1f\x1c\x18\x57\x40\x59\xaa\x35\xe3\x22\xbd\x7d\xda\x49\x78\x22\x73\x75\xf6\xab\x01\x35\x1f\xbe\x20\x61\x41\x84\x44\xe4\x99\x5d\x49\x68\x88\x11\x65\x68\x1b\xe7\x99\x1a\x34\xf5\x91\xab\xa7\x39\xa3\x44\x82\xce\x03\xa8\x2e\x16\x16\xa6\x6e\xea\xb9\x0c\x6c\xe1\xa9\xe9\xfd\x67\xdb\xd8\xeb\x35\x58\xb4\xef\xe2\xc1\x54\x4a\x50\x1c\xae\xd7\x81\xb6\x8d\xb9\xd2\x7e\x0a\x4a\x63\xf3\xff\x35\x48\xc7\x51\x93\x01\x8b\x25\xda\x06\xaa\x4b\x2a\x50\x09\x94\xc9\xa4\xdd\xa6\x01\x45\x66\x41\xf7\x56\x0d\x56\x6f\xaf\x37\x5b\x9b\xf3\x6b\x9b\x0d\xd8\x42\x41\xdb\x7d\xe8\xf3\x24\xe5\x95\xe6\x8b\x0d\xec\x63\x9b\x0b\x04\x6e\x10\x5a\x83\x25\x26\x13\x81\x40\xa2\x48\x4f\x8f\x53\x66\x16\x85\x98\x50\x61\xa7\xd6\x80\x47\x9c\xc1\x44\x63\xd2\x07\xac\x75\x6a\x70\xd1\x59\x03\x6b\xcd\xcd\x73\x08\x7c\x43\x30\xf6\xbf\x00\x00\x00\xff\xff\xba\x58\xb0\x79\xb8\x1c\x00\x00") + +func yaoAssistantsQuerydslPromptsComplexYmlBytes() ([]byte, error) { + return bindataRead( + _yaoAssistantsQuerydslPromptsComplexYml, + "yao/assistants/querydsl/prompts/complex.yml", + ) +} + +func yaoAssistantsQuerydslPromptsComplexYml() (*asset, error) { + bytes, err := yaoAssistantsQuerydslPromptsComplexYmlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "yao/assistants/querydsl/prompts/complex.yml", size: 7352, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _yaoAssistantsQuerydslPromptsFilterYml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xd4\x59\x6d\x6b\x1c\xc9\x11\xfe\xae\x5f\x51\x8c\xce\x58\x82\xd1\x68\xe5\xe4\x92\x30\x78\x05\xb2\x25\xf9\x74\xf8\xb4\xca\x4a\xb6\x31\x46\x78\x5b\x33\x35\xbb\x6d\xcd\x74\x8f\xbb\x7b\x64\x6d\x9c\x85\x1c\x98\x8b\x09\x18\x9c\x5c\x2e\x1f\x0c\x21\x89\x21\x5c\x3e\x5d\xf2\x29\x17\x92\xfc\x9a\x70\xb2\x7c\xff\x22\x74\xf7\xbc\xed\xce\xe8\xe5\x1c\x93\x10\x0e\xce\xb3\x3d\x55\x4f\xbd\x3c\xdd\xd5\x55\xa3\x79\xf8\x71\x86\x62\xbc\xbe\x7b\x1b\x6e\x21\x43\x41\x14\x17\xb0\x04\x9b\x34\x56\x28\x96\xef\x8d\x50\x20\xdc\xe4\x2c\xa4\x8a\x72\x26\x61\x37\x40\x46\x04\xe5\x73\x4b\x20\x78\x8c\x3e\xc8\xb1\x54\x98\xcc\x01\x04\x9c\x29\x64\xca\x87\x9f\xce\x01\x00\xdc\xe7\x19\x10\x81\x40\x2a\xfc\x61\x81\xef\x69\xc4\x23\x14\x0a\x18\x51\x99\x20\x31\xc4\x84\x0d\x33\x32\x44\x78\x9c\xa1\xa0\x28\x81\x32\xc5\xe1\x3e\xe1\x95\xf6\xc7\xbb\xbd\x6d\x88\xb8\x48\x88\xf2\x8c\x85\xbd\x11\x95\x20\x73\x7f\x20\xe2\x41\x26\x51\x02\x67\xb0\xb9\x75\x7b\x6f\xa3\x0f\x84\x85\x70\xef\xa3\x8d\xfe\x86\x76\xcd\xfa\x5f\xc0\x7b\x73\x06\x61\x7e\x7e\x06\x7e\x37\x18\x61\x42\xcc\xbb\xc1\x60\xf0\x48\x72\x66\x9e\x9f\x9a\xff\x03\x38\x1f\x48\x23\xe0\xf8\xe0\x8c\x94\x4a\xfd\xe5\x65\x2d\xb3\x64\x57\x3d\x2e\x86\xcb\xa1\x20\x91\x5a\xea\xfc\x70\xd9\xae\xcd\x3b\x6e\xa1\xab\xa8\x8a\x51\x6b\x16\x26\xab\x57\x21\xca\x40\xd0\x54\x7b\xa8\x05\x6e\xf1\xcc\xfa\x05\xeb\x3c\x21\x94\xc1\x6e\x8a\x01\x8d\x68\x00\xb7\x8b\x34\x45\x5c\x40\x48\x14\x39\x20\xb2\xcc\x59\xcd\xd4\x38\x35\x96\xf8\xc1\x23\x0c\x54\xdd\x4e\x44\x99\x25\xd2\xf1\xcb\xa8\x00\x1c\x3c\x4e\x05\x4a\x69\xed\x57\xeb\x35\x28\xa9\x04\x65\xc3\x12\xaa\xcd\xed\x4d\x8a\x71\x08\x15\x94\x07\xbb\x63\xa6\xc8\xb1\x0f\x91\x7e\xe3\x82\x22\x07\x31\x7a\xf9\x0f\x7f\xf3\xce\xf6\xcd\x05\x22\x86\x72\xd1\xb5\x02\x40\x24\x90\x98\x12\xe9\x94\x46\x26\x95\x3d\xa7\x24\xf1\x2c\x17\x67\xa2\x6d\x73\xd1\x66\xb5\x42\x9a\x92\x4d\x05\x4f\x51\x28\x9d\xc9\x69\x0b\x00\x8e\x71\x50\x2f\x37\x32\x52\xf7\xd1\x88\xf2\xb4\x55\xce\x6d\x38\xd3\x75\x61\xd5\x85\xd5\xae\x0b\xd7\x5d\xb8\xae\xff\x59\x75\x21\xa6\x87\xe8\x42\x42\x54\x30\x72\x81\x32\x17\xa8\x6c\x9a\x38\x22\x71\x86\xd6\xca\x0c\xe6\x4d\x9e\xa4\xfa\xd4\x59\x89\xa6\x6f\x62\xda\xb7\x03\xce\x63\x24\xcc\x3a\x17\x91\x2c\x56\x8e\x0f\x11\x89\x25\x36\x54\xbb\xad\xf6\x76\x47\x5c\xa8\x91\x3e\x69\x7a\x47\xf2\xb4\x7b\xb5\x7b\xb5\x69\x76\x55\xeb\x4e\x5c\x70\x56\xbb\xc5\xd3\xf5\xf2\xa1\x5a\xca\xc5\xa6\x75\x75\x42\x2e\x69\x5a\x8b\xb6\x58\xa7\x6c\x3a\x68\x22\x04\x19\xb7\xf0\xd1\x04\xa4\xac\x0d\x4e\x9e\xc5\x2f\xb2\x2c\x71\x7c\x78\xe0\xb0\x2c\x8e\xf5\x02\xe3\x0a\xcc\xf3\x3e\x4c\x6a\x20\x93\xd6\xfd\xfd\x44\x97\xda\xd9\xbd\x4d\xe2\xb8\x17\x69\xcc\x29\x1f\x9e\x82\xf3\x81\x40\xbd\xee\xcc\x2f\xd7\x0e\xf5\x72\xb5\xb3\x67\xdd\x7e\x3a\xbb\xbf\x73\x83\xf2\x8c\xdc\x50\x85\x49\xfe\xae\xdd\x94\x75\x17\x26\xf6\xbf\x9a\xad\xfd\xd6\xe8\xb8\x08\x51\xcc\x46\xc7\x19\xb6\x47\x77\xe1\xd9\xb9\x6a\x2b\x86\x5e\xbd\xea\xc2\xd5\xa2\x7e\x04\x4d\xbe\x9e\x36\x0b\x44\x33\x15\xe5\xf1\xd6\xfb\x50\x72\xa1\xec\x72\x49\x28\x91\x41\xe1\x84\xe6\xf2\x52\x11\x0f\x05\xcf\xd2\xf7\x1d\x71\x15\xac\xe0\x71\x9c\xa5\x70\xf2\xf2\xf9\xdb\xaf\xfe\xf0\x3e\xc2\xb6\x80\x67\xd4\xb8\x4b\x45\xfc\x88\xd3\xef\x54\x9c\xcf\x2d\xb8\x82\x27\xad\xc7\x7e\x4f\x5f\x22\xa0\x38\x18\x6b\x8d\xd3\x79\x88\xe3\x56\xb5\x8f\x39\x65\x70\x88\x63\x7b\xd5\x34\xf5\x22\x2e\x90\x0e\x59\xab\xee\xa6\x7d\x77\x9e\x7a\x8c\x91\x6a\x2f\xad\x0d\x51\x41\x87\xa3\x33\x65\xeb\x55\x62\x2a\x57\x02\x1f\x67\x54\x60\x68\xb6\xa3\x49\x8e\x6b\x83\x75\x2b\xdf\x6b\xac\xcc\xcd\x60\x9c\x95\x6b\x47\x62\xac\x79\x79\xc7\x22\x50\xeb\x1b\xf4\x0e\xa9\xed\x85\x8a\xbf\x0b\x77\xb6\x65\x94\x91\x64\xfa\xc2\x7a\x6f\xf5\x69\xb6\x0a\xc9\x56\x92\x7b\xfd\xf5\x8d\x3e\xdc\xb8\xef\x34\x0f\x71\xbb\xc2\xad\x7e\xef\xce\x4e\x43\x61\x44\x8e\x28\x1b\x9e\xe5\xf5\x0c\xc4\x47\x6b\x77\xb7\xb6\x6f\x55\xfd\xc8\xf4\x55\x6f\xce\xd3\x3b\xc7\x9f\x1f\x8f\x29\xc0\x98\x26\x74\x86\x6b\xca\x14\x0e\x51\xb4\x38\xf7\x09\x39\x06\x81\x01\x17\xe1\x8c\x5b\x3c\x8a\x24\x5e\x1a\x66\xf7\x90\xa6\xed\x38\x29\x19\xe2\x65\x51\x76\x74\xd3\xcb\xb2\xe4\x00\x05\x2c\xac\x2c\xe9\xb6\x37\x5c\x6c\xc2\x49\xfa\x93\x4b\x43\xf6\xad\x4f\x90\xa2\x00\xe3\xca\xf4\xfe\xa5\x42\xaa\x56\xde\xfb\xa8\x32\xc1\xc0\x08\xe4\x81\x2d\xc8\xc5\xea\xec\xda\x7f\x27\xc5\x10\x51\x4e\x1a\xe5\x10\x05\x9b\x66\x88\x31\xeb\xb5\xc9\x2a\x93\x08\xfa\x8c\x9a\x01\x8c\x48\x3b\x90\xe8\x92\xf3\x84\xaa\x91\x6d\xe8\x7c\x18\x3c\x2d\x8b\xb6\x73\x7c\x7c\xac\xc3\xea\xed\x6c\xf4\xd7\xf6\x7a\x7d\xc7\x87\xbb\x6b\xb7\xef\x6c\x4c\x72\x93\xbd\x1c\x4b\xc2\x42\x26\x31\xac\x43\xca\x45\xdf\x88\x2c\xc1\xc0\xe9\x3a\x03\x98\xc6\x95\x8a\xa8\x4c\x6a\xe8\xae\xd9\x72\x81\xa2\x47\xe8\x4c\x06\xa5\xca\x6a\x43\x25\x15\x34\x40\xad\xa1\x5b\xb8\x95\x4e\xa7\x2e\xdc\x34\xa0\x93\x5d\x34\x83\x2b\x3f\xaa\xc9\x5e\x6f\xf1\x85\x07\x87\x4e\xde\x2f\xae\xd4\x71\xaf\xb7\x38\x1e\x70\x61\x90\x4d\x4f\xf9\x83\x29\xe9\xa6\xcf\x66\x87\x14\x6d\xa7\x13\x62\x8c\x0a\xc3\x7a\x98\xa6\xf3\x9c\xd5\x32\x65\xca\x2d\xdb\x52\xe7\x8a\x42\xa9\xae\xd4\xd5\x28\x3b\x27\xa3\xe6\x82\x7c\xe0\x10\xfd\x7c\xe0\xec\xd7\xd5\x64\x43\x2d\xf7\xe9\x21\x31\x97\xb7\xe9\x3b\x6d\x6b\x39\xa9\x76\xd5\xbd\x11\x32\x7d\x1b\xea\xdd\xd3\x85\x23\x69\x06\x88\x1c\xf4\x8e\x44\x18\x74\x07\xba\x9d\xf5\x61\x6b\xdd\x05\xeb\x87\x0b\x3a\x74\x17\xf2\x5b\xc7\x05\xdd\xe6\xb8\x80\xc7\x24\x50\x76\x9f\xc9\x3a\x80\x06\xcc\x31\x74\xf0\x20\x91\x08\x3d\x9c\x98\x79\xb6\xfc\x95\x4f\xff\xf9\xef\xfc\x28\x2c\xc1\xe0\xca\x21\x8e\x9f\x70\x11\x5e\xd1\xc1\x69\x21\x42\x99\xac\x5e\xd7\xdf\x4a\x45\x84\x92\x66\xbb\x37\xf5\xb5\x00\xb2\x30\x7f\x5d\x44\xdf\xb3\x53\xfe\x36\x4a\x85\x61\xed\x30\xe5\xfe\xf7\xfa\x26\xa1\x66\xea\x51\x22\x43\x17\x9a\x44\x9a\x3d\xae\x49\xac\x38\xcc\xe1\x16\x4c\xf1\xa7\x6c\xb8\x68\x50\xca\xeb\xe8\x81\xae\xd7\x2b\x2e\x4c\x01\x7b\x9e\xa7\x97\xaf\x4d\x2a\x4e\x37\x8e\x49\x92\xc6\xe8\xc3\xc2\x1a\xac\x6d\xaf\xc3\x8d\x45\xed\xef\x4d\xf8\xd7\x67\xbf\x82\xc1\x83\x3a\xe0\x9a\x0b\x37\xf6\x27\x4d\xc4\x9b\x93\xfd\x8a\xe9\x1c\x4e\xda\x85\x2d\x96\x66\xca\x07\xe7\xcd\xef\xfe\xf8\xf6\xcf\xaf\x4f\x7f\xf1\xd7\x37\x3f\xfb\xf4\x9b\xbf\xfd\xdd\x1e\xd6\xd3\x57\xcf\x4e\x7f\xfd\xa7\x37\xcf\xbf\xb6\x93\xb4\xfd\xaa\xe1\x37\x3f\x6b\xd8\x24\xf8\xe0\x64\x52\x5f\x8b\xae\x1e\xb2\xe3\x2c\x31\x97\x4e\xd1\xa1\x56\x42\x34\xd4\x12\x45\x61\xdd\x5a\x37\xc7\x80\x1c\x60\x9c\xff\x2c\xcb\x67\xa5\x52\x24\xb9\xd9\x03\x94\x8a\x27\x5f\x7e\x7e\xf2\xf2\x45\x9b\x72\x75\x6a\xce\x51\xb7\x91\x3b\xb6\xdc\xee\x57\x55\xd7\x54\xc0\x4c\xe9\x24\xe5\xb1\x96\x9d\xce\x83\x3c\x92\xc2\xb9\xdc\xce\xbe\x5b\x76\x2d\x55\x3e\x2a\x8e\x2e\x2e\x90\xfb\x6e\x75\xc3\x5e\xeb\x4c\xa6\x79\xda\x35\xe7\x02\x52\xc1\xc3\x2c\x50\xb2\x38\x0a\x94\x0d\x81\xee\x8c\x38\xc3\xcb\x52\x55\x20\xfc\x6f\xd8\xda\xd6\x22\x2d\xaa\xe5\x05\x50\xe8\x86\x18\xd0\x84\xc4\x53\xca\x3b\x46\xe8\x3f\xa1\xca\x9a\xa9\x33\x55\x4f\x47\x2b\x59\x8d\x82\x6d\xd3\x7d\xe5\x02\xbe\xbe\xf9\xc7\xd7\x6f\x7e\xff\xcf\x95\x4e\x67\xe9\xc3\x4e\xe7\xf4\xd5\xb3\x93\x2f\x3e\x3b\xf9\xfc\xd3\xff\x0f\x92\x4e\x5e\xbe\x38\xfd\xf2\x2f\xef\x4c\x93\x0d\xfd\xbf\xcd\x53\xd5\x42\x74\xf3\x1e\x42\xd7\xc3\xe6\x6b\x73\xb7\x7f\xd8\xe9\x9c\x4f\x5f\x59\x10\x53\x64\x21\x65\xc3\x37\xcf\x7f\x93\x0a\x1e\xe8\x59\x85\x0d\x4f\x5f\x3d\x7b\xfb\xd5\xeb\x93\x17\x5f\x5c\x96\xce\x7c\x6c\x78\xff\x64\x7e\xa7\x12\xd7\x54\x27\x09\xcf\x98\xba\x88\xcf\x6f\x7f\xfe\xcb\x6f\x5f\xff\xf6\x9d\xf8\xac\xfc\xcb\x4d\xd5\x29\xad\xb2\x72\x41\x95\xcc\x9b\x9e\x9c\x8a\xfc\x43\x44\xce\x85\xb3\xdf\x4e\xe4\xfc\x3c\xf4\x51\xa6\x9c\x49\xac\xf7\xcb\xd6\x5f\xdb\xc8\x72\x16\x8f\x3d\xd8\xe6\x90\x10\x71\x18\xf2\x27\xcc\x05\xc6\x01\x8f\xd3\x98\x30\xa2\xdb\x80\xf2\x2b\xff\x3c\xec\x66\x81\x36\x58\x62\x36\x02\xf6\x3c\xaf\x1e\x9b\xf9\x54\x3d\x1d\x5a\x2e\xd1\xe2\xe9\x3c\x6c\x08\xc1\xc5\x2c\x38\xea\x45\x0d\x66\x1e\x1e\x06\x3c\x34\x88\x09\x4a\x69\x27\x1f\xc7\xaa\xd5\xe7\x8b\x49\xd1\x0f\x26\xd4\xa4\xe7\xa1\xfd\x33\xc2\xc0\xd7\x71\xda\x67\x7d\x87\x1c\xd1\x10\xc3\x59\xd1\xc7\x19\x8a\xb1\x95\x34\x8f\xcb\xf9\x37\x83\x44\xf7\x65\x85\x12\x40\xa1\x46\xd9\x11\x89\x69\xf8\xd0\x10\x36\xf0\xa1\x8f\x11\x0a\x64\x01\x86\xf9\xe7\x78\xc6\x15\x50\x96\x5b\x2d\xb4\x48\x72\x40\x87\x19\xcf\x64\x69\xce\x7e\x53\xa7\xb6\xfd\xcb\x58\x10\x23\x11\x25\x87\xb7\x32\x1a\x62\x4c\x59\xde\x52\xae\x78\xd0\x63\xf1\xd8\x74\xab\xc6\x88\x04\x9d\x71\x50\x23\xac\x3c\xcc\xc3\xd4\x53\x0b\xd8\xf3\xe6\xe9\x0d\xbf\x68\x10\xae\x79\xb0\x6e\xbf\x54\x83\x61\x42\xf7\xbe\xd7\x3a\x40\x23\xe3\xae\xb4\x7f\x28\xc9\x73\xf3\x3d\x0f\xf2\x61\xcd\x30\x60\x77\x0d\x8d\x80\xea\x22\x01\x54\x02\x65\x32\x8b\x22\x1a\x50\x64\x76\x7b\x7d\xdf\x83\xad\x4f\x76\x7a\xfd\xbd\xb5\xed\x3d\x1f\xee\xa2\xa0\xd1\x18\xc6\x3c\xcb\x75\xa5\xf9\x7b\x06\x1c\x60\xc4\x05\x02\x37\x7b\xd1\x83\x0d\x26\x33\x81\x40\xe2\x58\xcf\x56\x4b\xa6\x83\x86\x94\x50\x61\x67\xba\x80\xc7\x9c\xc1\x82\xbf\xe8\x02\x7a\x43\xaf\xb5\xa8\x15\x63\x13\x6c\xf7\xf6\xce\x10\x70\x8d\xc0\xdc\xbf\x03\x00\x00\xff\xff\x04\x32\xac\x91\xaf\x1b\x00\x00") + +func yaoAssistantsQuerydslPromptsFilterYmlBytes() ([]byte, error) { + return bindataRead( + _yaoAssistantsQuerydslPromptsFilterYml, + "yao/assistants/querydsl/prompts/filter.yml", + ) +} + +func yaoAssistantsQuerydslPromptsFilterYml() (*asset, error) { + bytes, err := yaoAssistantsQuerydslPromptsFilterYmlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "yao/assistants/querydsl/prompts/filter.yml", size: 7087, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _yaoAssistantsQuerydslPromptsJoinYml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x19\xdb\x6a\x1c\xc9\xf5\x5d\x5f\x71\x68\x2d\x58\x82\xd6\xc8\xbb\x1b\x08\x34\x96\x40\x2b\xcb\xda\x31\xb2\x46\x19\x49\x06\x63\x84\xa6\xd4\x7d\x7a\xa6\xac\xea\xaa\x76\x55\xb5\xa4\x89\x32\x90\x84\x40\x96\xc0\xb2\x1b\x92\xbc\x04\x42\x58\x43\x48\xc8\x83\x4d\x9e\x12\xc8\x43\x7e\x66\x7d\xfb\x8b\x50\x55\x7d\x9d\x6e\xd9\xb2\xf1\xb2\x49\x08\x02\x4d\x77\xf5\xb9\xdf\xea\x9c\xaa\x45\xf8\x51\x86\x72\x7a\x7b\x7f\x07\xb6\x91\xa3\x24\x5a\x48\x58\x81\x7b\x19\xd3\x74\x45\x93\x13\x86\x70\x57\x50\x0e\xfb\x21\x72\x22\xa9\x58\x58\x01\x29\x18\x06\xa0\xa6\x4a\x63\xb2\x00\x10\x0a\xae\x91\xeb\x00\x7e\xb2\x00\x00\xf0\x40\x64\x40\x24\x02\xa9\x08\x8f\x0b\xc2\x3d\xd8\x14\xfc\x0c\xa5\x06\x4e\x74\x26\x09\x03\x46\xf8\x38\x23\x63\x84\xc7\x19\x4a\x8a\x0a\x28\xd7\x02\x1e\x10\x51\x61\xdf\xdd\x1f\xec\x42\x2c\x64\x42\x74\xcf\x72\x38\x98\x50\x05\x2a\x97\x07\x62\x11\x66\x0a\x15\x08\x0e\xf7\x0e\x77\x0e\xfa\x2b\x07\x1b\x9f\xed\x6c\xc1\xdd\x41\x7f\xb7\x20\xda\x5b\xb0\x78\x8b\x8b\x73\x44\xf7\xc3\x09\x26\xc4\x7e\x1b\x8d\x46\x8f\x94\xe0\xf6\xf9\xd2\xfe\x07\xf0\x3e\x52\x16\xc0\x0b\xc0\x9b\x68\x9d\x06\xab\xab\x06\x66\xc5\xad\xf6\x84\x1c\xaf\x46\x92\xc4\x7a\xe5\xe6\x0f\x57\xdd\xda\xa2\xe7\x17\xb8\x9a\x6a\x86\x06\xb3\x60\x59\x7d\x8a\x50\x85\x92\xa6\x9a\x0a\x6e\x00\xb6\x45\xe6\xe4\x82\xdb\x22\x21\xc6\xd4\x29\x86\x34\xa6\x21\xec\x14\xc6\x89\x85\x84\x88\x68\x72\x42\x54\x69\xa9\x1a\xab\x69\x6a\x39\x89\x93\x47\x18\xea\x3a\x9f\x98\x72\x6a\xd8\x28\x2f\x28\xb5\x02\xf0\xf0\x22\x95\xa8\x94\xe3\x5f\xad\xd7\x48\x29\x2d\x29\x1f\x97\xa4\xba\xc4\xbe\x43\x91\x45\x50\x91\xea\xc1\xfe\x94\x6b\x72\x11\x40\x6c\xbe\xf8\x60\x83\xa7\x97\xbf\x04\x77\x0e\x77\x37\x97\x88\x1c\xab\x65\xdf\x01\x00\x51\x40\x18\x25\xca\x2b\x99\xcc\x2a\x7e\x5e\x28\x78\x44\xf5\x1b\x44\x9c\xd3\xb6\x4b\x44\x67\xd5\x8a\x52\x03\x36\x95\x22\x45\xa9\x8d\x25\x9b\x1c\x00\x3c\x2b\xa0\x59\x6e\x59\xa4\x2e\xa3\x05\x15\x69\x27\x9c\xdf\x12\x66\xcd\x87\x75\x1f\xd6\xd7\x7c\xb8\xe5\xc3\x2d\xf3\xb3\xee\x03\xa3\xa7\xe8\x43\x42\x74\x38\xf1\x81\x72\x1f\xa8\x6a\xb3\x38\x23\x2c\x43\xc7\x65\x8e\xe6\xa6\x48\x52\x93\x6b\x0e\xa2\x2d\x9b\x6c\xca\x76\x22\x04\x43\xc2\x9d\x70\x31\xc9\x98\xf6\x02\x88\x09\x53\xd8\x42\x5d\xeb\xe4\xb7\x3f\x11\x52\x4f\x08\x8f\x6c\x44\x8a\x74\xed\xc6\xda\x8d\x36\xdb\x75\x83\x3b\xf3\xc1\x5b\x5f\x2b\x9e\x6e\x95\x0f\xd5\x52\x0e\xd6\xc4\x35\x06\xb9\x26\x6b\x03\xda\xc1\x9d\xf2\xa6\xd2\x44\x4a\x32\xed\xf0\x47\x9b\x20\xe5\x5d\xe4\xd4\x55\xfe\x45\x9e\x25\x5e\x00\x0f\x3d\x9e\x31\x66\x16\xb8\xd0\x60\x9f\x8f\x60\x56\x23\x32\xeb\x8c\xef\xf3\x09\x4a\x9c\x8f\x6d\xc2\xd8\x20\x36\x34\x1b\x32\x5c\x82\xf7\x91\x44\xb3\xee\x2d\xae\xd6\x92\x7a\xb5\x8a\xec\x79\xb1\x2f\xe7\xe3\x3b\x67\xa8\xae\xb0\x0d\xd5\x98\xe4\xdf\xba\x59\x39\x71\x61\xe6\xfe\x6a\xbc\x8e\x3a\xb5\x13\x32\x42\x39\xaf\x9d\xe0\xd8\xad\xdd\x5b\x73\xe7\x86\xab\x18\x66\xf5\x86\x0f\x37\x8a\xfa\x11\xb6\xfd\x75\xd9\x2e\x10\x6d\x53\x94\xe9\x6d\xe2\x50\x09\xa9\xdd\x72\xe9\x50\xa2\xc2\x42\x08\xe3\xcb\x6b\x69\x3c\x96\x22\x4b\x3f\xb4\xc6\x95\xb2\x52\x30\x96\xa5\xf0\xfc\xeb\x2f\x5e\x3d\xfd\xe6\x43\xa8\xed\x08\x5e\x51\xe3\xae\xa5\xf1\x23\x41\xdf\xa9\x38\xbf\xb1\xe0\x4a\x91\x74\xa6\xfd\x81\xed\x40\xb4\x00\xcb\xad\x95\x9d\xa7\x38\xed\x44\xb3\x2d\xcb\x29\x4e\xdd\x56\xd3\xc6\x8b\x85\x44\x3a\xe6\x9d\xb8\x77\xdc\xb7\x37\xa1\x33\x8c\x75\x77\x69\x6d\x81\x4a\x3a\x9e\x5c\x09\x5b\xaf\x12\x0d\x5b\x49\x7c\x9c\x51\x89\x91\x0d\x47\x6b\x1c\xdf\x29\xeb\x57\xb2\xd7\xbc\xb2\x30\x47\xe3\x2a\x5b\x7b\x0a\x99\xf1\xcb\x7b\x16\x81\x5a\xdf\x60\x22\xa4\x16\x0b\x95\xff\xde\x1a\xd9\xce\xa3\x9c\x24\xcd\x0d\xeb\x83\xd5\xa7\xf9\x2a\xa4\x3a\x9d\x3c\x18\xde\xde\x1a\xc2\x67\x0f\xbc\x76\x12\x77\x23\x6c\x0f\x07\x87\x7b\x2d\x84\x09\x39\xa3\x7c\x7c\x95\xd4\x73\x24\x3e\xdf\xb8\xdf\xdf\xdd\xae\xfa\x91\xe6\x56\x6f\xf3\xe9\xbd\xf5\xcf\xd3\xa3\x41\x90\xd1\x84\xce\xf9\x9a\x72\x8d\x63\x94\x1d\xc2\xdd\x23\x17\x20\x31\x14\x32\x9a\x13\x4b\xc4\xb1\xc2\x6b\x93\xd9\x3f\xa5\x69\x37\x9d\x94\x8c\xf1\xba\x54\xf6\x4c\xd3\xcb\xb3\xe4\x04\x25\x2c\x7d\xbc\x62\xda\xde\x68\xb9\x4d\x4e\xd1\x1f\x5f\x9b\xe4\xd0\xc9\x04\x29\x4a\xb0\xa2\x34\xe3\x97\x4a\xa5\x3b\xfd\x3e\x44\x9d\x49\x0e\x16\x20\x57\x6c\x49\x2d\x57\xb9\xeb\x7e\x67\xc5\x10\x51\x4e\x1a\x6e\x68\xb2\x1d\x71\x7b\xc0\x28\xf2\xc5\xb3\x3d\xf2\xb1\x16\xc7\xd6\x7f\x7e\x51\xd0\x8a\x1c\x3f\x3e\xc5\xe9\xb1\xab\x41\x7e\xbd\x68\x79\xa9\xa4\x09\x91\xd3\xe6\xf7\xbc\x2a\x69\x99\x61\x25\x8f\xf9\x5d\x81\x91\x61\x38\x0a\xa0\x51\x4e\x8b\x6f\xa7\x38\x1d\x05\xe0\xfa\x79\xca\xc1\xce\x20\x6e\xf2\x5b\x8a\xab\x5a\xb8\x5c\x92\x72\x6b\x75\x14\x43\x0d\xa3\x02\x29\x53\x19\x61\x6c\x0a\x34\x2a\x71\x8c\x68\x23\x27\x9a\x6d\xb7\x76\xb6\xee\x1c\xb8\x11\x6d\xe9\x14\x31\x05\xc2\x58\x9d\x6f\x1e\x40\x25\xba\x2d\xa2\x75\xfc\x61\x7f\xfb\x73\x47\x20\x07\x19\x24\x54\x83\xe1\xb2\x6a\x61\x2d\x50\x7f\x77\x77\x6b\x98\x73\x11\x9c\x4d\x5d\x9f\x4d\xf9\xb8\xa2\x5f\x78\x6b\xb3\xc8\x49\xb8\x63\x07\x4d\xbb\x5e\x2e\x2a\xc8\x14\x82\xa9\xa8\x76\x3a\x26\xca\x8d\x8f\xa7\x38\x0d\x60\x74\x59\xee\xab\xde\xc5\xc5\x85\xf1\xc3\x60\x6f\x6b\xb8\x71\x30\x18\x7a\x01\xdc\xdf\xd8\x39\xdc\x9a\x95\x5e\xf0\xd6\xbc\x11\x34\x71\x94\x26\x3a\x53\x06\x6d\xcd\x66\x7c\xa8\xe9\x19\x7a\x35\x94\xf5\x16\x0a\x49\x44\xc6\xed\x0e\x6f\x5a\xe8\x8f\x6f\xde\x9c\x55\x61\xd7\x4f\x52\x21\x35\xe1\x1a\x86\x19\x43\x65\x97\x3f\xee\xc1\x06\x3b\x27\x53\x05\xa9\xc4\x98\x5e\xb8\x5d\x4d\xc1\x39\xd5\x93\xdc\xe0\xa6\x1c\x07\x30\x72\x05\xb3\x47\xa3\x91\x0f\xa3\x4c\x99\x67\xf3\xc5\x09\xf3\x49\x0f\x0e\x15\xba\x99\xcd\xda\x37\x64\x44\x52\x6d\x6c\x50\x81\x1a\xe3\x98\xb7\xe3\x0a\xef\x53\x87\x57\xb9\xfc\x7c\x82\x1c\xa6\x22\x83\x73\x23\x67\xe9\xfa\xdc\x29\x80\x67\xc8\xad\x6c\x22\xd3\xce\x65\xa8\x4a\xfd\xb6\x2e\x48\x92\xb2\x62\xa1\xcf\xd3\x4c\x07\xe0\xbd\xf8\xe3\x9f\x5e\x3d\x7b\xf2\xea\xe9\x93\xe7\x5f\xfe\xee\xf9\x57\xbf\x7a\xf9\xdb\xbf\xbc\xf8\xe2\xef\xdf\xfe\xeb\x9b\x17\x3f\x7b\xe6\xa6\x4b\x37\xe9\x07\xad\x4c\x2c\x1a\xb3\x4b\xcf\x6e\x48\x41\xb9\x67\xf8\x66\x02\x65\x59\x62\x2b\x72\xd5\xbe\x55\x70\xd4\xa6\x5c\x51\x77\xfa\xb7\x6d\x02\x92\x13\x64\xf9\x6b\xad\xba\x54\x48\xd6\x32\x4d\xcc\x5a\xc5\x2a\xd1\x9d\xfc\x57\x11\xa9\xdc\x5f\xd0\x88\x30\xa4\x09\x61\x0d\x1a\xaf\x7f\xf9\xeb\xd7\x4f\xfe\xe0\x15\x65\xea\xa8\x24\xd5\x94\xe6\xbb\xd2\xd4\xfe\xfa\x5d\xed\x40\x89\xfa\xfc\xcf\xbf\x79\xfe\xf5\x97\xdd\xe8\x98\x10\xca\xde\x82\xff\xfa\xe7\x4f\x5f\x3e\xfd\x5b\x4d\x43\xfb\x70\xd4\xa8\x7c\x83\x4c\x9b\x08\xc9\xab\x6e\xd9\xfd\x3c\xf4\xca\x48\x37\x24\xf3\x97\xca\xb0\x55\x3c\x57\x6f\x4e\xa4\x23\xbf\x6c\x76\x6a\xa1\x52\x6c\xdd\x0f\xab\xca\x5e\x1a\x37\xaf\xe8\x35\xd7\xd7\xea\x38\x6d\x15\x6e\xc3\xa0\xd8\xb8\x3f\xb9\x39\x6b\xc6\xf9\x9e\x14\x51\x16\xea\x3c\x75\x43\xa2\x71\x2c\xe4\xd4\x66\xaf\x7a\xd7\x40\x4f\x73\x5a\xdf\x5f\x00\xec\x1a\x90\x4e\xe4\x42\xb3\x6b\xe4\xca\x66\x61\x84\xab\x04\x49\x25\x0d\xf1\x6d\xd9\xb2\x67\x81\xde\x94\x2c\xb9\x48\xf6\xe0\xed\xfb\x35\xd8\x7b\xc5\x7b\xe1\xed\x3c\xe2\xcb\xd7\xa2\x66\xe7\x0b\xc7\x85\x14\x25\x40\x69\xbe\xca\x00\x25\x52\xe9\x26\x8b\x55\x4f\x8d\x7a\x70\x75\x24\x47\xd3\x98\x79\x86\xcc\x39\xfd\xfd\xb3\xc4\xed\x06\xf7\xfb\x7b\xae\x8e\xbe\xfc\xfd\x2f\xdc\xce\xf0\xff\xad\xe0\xbf\x71\x2b\xa0\xea\xf8\x8c\xa6\x75\x02\xb5\x63\xcc\x92\xc2\xfd\xfe\xde\x77\xbd\x13\x7c\xf8\xd2\x6f\xc3\xb8\x9c\x7b\x1f\xd6\x5a\x3c\xc7\xb6\x52\x7d\xed\x7a\x81\xff\xec\xab\x6f\xff\xf1\xd7\xb9\xa8\x7f\xf1\xd3\x7f\x1a\xef\xbf\x63\xec\xff\x87\x04\xc4\x1b\x42\xf6\x7f\x36\x3b\xdf\x25\x78\xf3\x38\x89\xda\x4d\x4b\xb0\x7f\x78\x6f\xa9\x11\xce\xcb\xa6\x64\x6b\xa1\x49\xb3\x8b\x29\x3d\xdd\x11\xc9\x95\x8d\xf3\x50\x6e\x45\x71\xcd\x50\xf3\xf5\xb9\x3c\x4c\xb9\x52\xcc\xa3\x59\xd9\xd7\x0f\x51\xa5\x82\x2b\xac\xcf\x5f\x4e\x6b\x37\x6b\x99\xf9\xad\x07\xbb\x02\x12\x22\x4f\x23\x71\xce\x7d\xe0\x02\xf0\x22\x65\x84\x13\x33\xa3\x95\x77\x7c\x8b\xb0\x9f\x85\x21\x2a\x55\xd2\x6c\x99\xad\xd7\xeb\xd5\x2d\x60\x47\xa0\x86\x05\x72\x80\x56\xa2\x19\xea\x5b\x52\x9a\x01\xb4\x49\x1b\xcd\xa2\x6d\x5c\xcd\xc3\x71\x28\x22\x4b\x30\x41\xa5\xdc\xb1\x87\xe7\xd0\xea\x87\x0b\xb3\x62\xc4\x4b\xa8\x52\x94\x8f\x8f\xdd\x1d\xe2\x28\x30\x6a\xba\x67\xb3\x2d\x9f\xd1\x08\xa3\x79\xd0\xc7\x19\xca\xa9\x83\xb4\x8f\xab\xf9\x81\x61\x82\x5c\x97\x48\x00\x05\x1a\xe5\x67\x84\xd1\xc8\x1d\x15\x8c\x02\x18\x62\x8c\x12\x79\x88\x51\x7e\x17\xc7\x85\x36\x73\xbc\xaa\x2e\x44\x6b\xcc\x24\x32\x6b\xe2\x51\x00\x9b\x84\x1b\xd0\x08\x35\xca\x84\x72\xb4\x93\x3f\x14\x00\x6a\x42\x53\x38\x41\x7d\x8e\x98\x4f\xf2\xaa\xa0\x45\x92\x13\x3a\xce\x44\xa6\x4a\xd1\xdd\xe5\x1c\xb5\x77\xc7\x90\xf1\x90\x21\x91\x65\x38\x6c\x67\x34\x42\x46\x79\x35\xc1\x0e\xcc\x00\x6f\xc6\xf0\x7c\x78\x35\xce\x03\x3d\xc1\x4a\xdb\xdc\x64\x4b\x06\xc8\x95\x04\x1b\x65\xcb\xc5\xf0\x7a\xdb\x5d\x79\x81\xf5\x2a\x68\x01\x9f\xdc\x04\x1a\x5b\xd5\x95\xbb\x71\xcd\xed\xfc\x69\x0f\xf2\x53\x1f\xeb\x4d\x17\x80\x34\x06\x6a\xca\x2c\x50\x05\x94\xab\x2c\x8e\x69\x48\x91\xbb\x48\xfd\x41\x0f\xfa\xf7\xf6\x06\xc3\x83\x8d\xdd\x83\x00\xee\xa3\xa4\xf1\xd4\x4c\xb8\x39\xae\xb2\xc7\x40\x70\x82\x26\x71\x40\xd8\xb0\xee\xc1\x16\x57\x99\x44\x3b\xff\x9e\xe2\x74\xc5\xde\xe1\x41\x4a\xa8\x74\xc7\x0d\xa1\x60\x82\xc3\x52\xb0\xec\x03\xf6\xc6\x3d\xa8\xed\x0e\x65\x4f\x56\xcc\xff\xb0\x3b\x38\xb8\x02\xc0\xb7\x00\x0b\xff\x0e\x00\x00\xff\xff\xf4\xb1\x29\x89\xe7\x1f\x00\x00") + +func yaoAssistantsQuerydslPromptsJoinYmlBytes() ([]byte, error) { + return bindataRead( + _yaoAssistantsQuerydslPromptsJoinYml, + "yao/assistants/querydsl/prompts/join.yml", + ) +} + +func yaoAssistantsQuerydslPromptsJoinYml() (*asset, error) { + bytes, err := yaoAssistantsQuerydslPromptsJoinYmlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "yao/assistants/querydsl/prompts/join.yml", size: 8167, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _yaoAssistantsQuerydslPromptsYml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x58\x5b\x6b\x1c\xc9\x15\x7e\xd7\xaf\x38\xb4\x76\x91\x04\xad\x91\xec\x04\x12\x1a\x4b\xa0\xb5\x2e\xf1\x62\x6b\x94\x19\xd9\xc1\x18\xe3\xa9\xe9\x3e\x3d\x53\x56\x75\x55\xbb\xaa\x5a\x3b\x13\x65\x60\x93\xa7\xdd\x40\x60\x21\x79\x0c\x84\x04\x42\xf2\xe4\x90\x97\xe4\x17\x59\xde\xfc\x8b\x50\x55\x7d\xef\x96\xac\x38\x7e\x58\x0c\x9e\x56\xd5\xb9\x7c\xe7\x5a\xa7\x6a\x1d\x7e\x9e\xa1\x5c\x1e\x8e\x1f\xc3\x09\x72\x94\x44\x0b\x09\x07\x33\xe4\x1a\xb6\xe1\x09\xa1\x1c\xce\xa4\x48\x52\x0d\x9b\x87\x18\x93\x8c\xe9\x9d\x2f\x88\xa2\xa1\xe5\xa2\xa8\xb6\xd6\xb6\x41\x0a\x86\x01\xa8\xa5\xd2\x98\xac\x01\x84\x82\x6b\xe4\x3a\x80\x5f\xad\x01\x00\x3c\x17\x19\x10\x89\x40\x2a\x45\xb3\x42\xd1\x00\x1e\x0a\x7e\x89\x52\x03\x27\x3a\x93\x84\x01\x23\x7c\x96\x91\x19\xc2\x1b\x27\x1f\x28\xd7\x02\x9e\x13\x51\x71\x7f\x39\x1e\x9e\x42\x2c\x64\x42\xf4\x60\xcd\xaa\x58\x5f\x6f\xed\x8e\xc3\x39\x26\xc4\xee\x4d\x26\x93\xd7\x4a\x70\xfb\x7d\x65\xff\x07\xf0\x3e\x53\x96\xc0\x0b\xc0\x9b\x6b\x9d\x06\x3b\x3b\x86\x66\xdb\xad\x0e\x84\x9c\xed\x44\x92\xc4\x7a\x7b\xf7\x27\x3b\x6e\x6d\xdd\xf3\x0b\x5e\x4d\x35\x43\xc3\x59\xa8\xac\xb6\x22\x54\xa1\xa4\xa9\xa6\x82\x1b\x82\x13\x91\x39\x5c\x70\x28\x12\xe3\xc9\x71\x8a\x21\x8d\x69\x08\x8f\x0b\x2b\x63\x21\x21\x22\x9a\x4c\x89\x2a\x4d\xae\xa9\x5a\xa6\x56\x93\x98\xbe\xc6\x50\xd7\xf5\xc4\x94\x53\xa3\x46\x79\x41\x69\x15\x80\x87\x8b\x54\xa2\x52\x4e\x7f\xb5\x5e\x13\xa5\xb4\xa4\x7c\x56\x8a\xea\x83\x7d\x4c\x91\x45\x50\x89\x1a\xc0\x78\xc9\x35\x59\x04\x10\x9b\x1d\x1f\x34\x99\x32\x1c\xe4\x7f\x04\xc7\x4f\x4f\x1f\x6e\x12\x39\x53\x5b\xbe\x23\x00\xa2\x80\x30\x4a\x94\x57\x2a\x59\x55\xfa\xbc\x50\xf0\x88\xea\x5b\x20\xb6\xac\xed\x83\xe8\xbc\x5a\x49\x6a\xd0\xa6\x52\xa4\x28\xb5\xf1\x64\x53\x03\x80\x67\x01\x9a\xe5\x8e\x47\xea\x18\x2d\xa9\x48\x7b\xe9\xfc\x0e\x98\x3d\x1f\xf6\x7d\xd8\xdf\xf3\xe1\x81\x0f\x0f\xcc\xcf\xbe\x0f\x8c\x5e\xa0\x0f\x09\xd1\xe1\xdc\x07\xca\x7d\xa0\xaa\xab\xe2\x92\xb0\x0c\x9d\x96\x96\xcc\x87\x22\x49\x4d\xd1\x38\x8a\x2e\x36\xd9\xc4\x36\x15\x82\x21\xe1\x0e\x9c\xad\x52\x2f\x80\x98\x30\x85\x1d\xd6\xbd\x5e\x7d\xe3\xb9\x90\x7a\x4e\x78\x64\x33\x52\xa4\x7b\x1b\x7b\x1b\x5d\xb5\xfb\x86\x77\xe5\x83\xb7\xbf\x57\x7c\x3d\x28\x3f\xaa\xa5\x9c\xac\xc9\x6b\x1c\x72\x47\xd5\x86\xb4\x47\x3b\xe5\x4d\xa3\x89\x94\x64\xd9\x13\x8f\xae\x40\xca\xfb\xc4\xa9\x9b\xe2\x8b\x3c\x4b\xbc\x00\x5e\x78\x3c\x63\xcc\x2c\x70\xa1\xc1\x7e\xbf\x84\x55\x4d\xc8\xaa\x37\xbf\xbf\x9a\xa3\xc4\x76\x6e\x13\xc6\x86\xb1\x91\xd9\xc0\x70\x05\xde\x67\x12\xcd\xba\xb7\xbe\x53\x2b\xea\x9d\x2a\xb3\xdb\xb0\xaf\xda\xf9\x9d\x2b\x54\x37\xf8\x86\x6a\x4c\xf2\xbd\x7e\x55\x0e\x2e\xac\xdc\xbf\x9a\xae\x97\xbd\xd6\x09\x19\xa1\x6c\x5b\x27\x38\xf6\x5b\xf7\xc1\xda\xd9\x70\x1d\xc3\xac\x6e\xf8\xb0\x51\xf4\x8f\xb0\x1b\xaf\xab\x6e\x83\xe8\xba\xa2\x2c\x6f\x93\x87\x4a\x48\xed\x96\xcb\x80\x12\x15\x16\x20\x4c\x2c\xef\x64\xf1\x4c\x8a\x2c\xfd\xd4\x16\x57\xc6\x4a\xc1\x58\x96\xc2\xbb\xef\xbe\xf9\xfe\xed\x9f\x3f\x85\xd9\x4e\xe0\x0d\x3d\xee\x4e\x16\xbf\x16\xf4\x7f\x6a\xce\xb7\x36\x5c\x29\x92\xde\xb2\x3f\x37\x87\x08\x68\x01\x56\x5b\xa7\x3a\x2f\x70\xd9\xcb\xf6\xa5\xa0\x1c\x2e\x70\xe9\x8e\x9a\x2e\x5f\x2c\x24\xd2\x19\xef\xe5\x3d\x76\x7b\xb7\xb1\x33\x8c\x75\x7f\x6b\xed\x90\x4a\x3a\x9b\xdf\x48\x5b\xef\x12\x0d\x5f\x49\x7c\x93\x51\x89\x91\x4d\x47\xeb\x1c\xdf\x19\xeb\x57\xd8\x6b\x51\x59\x6b\xc9\xb8\xc9\xd7\x9e\x42\x66\xe2\xf2\x91\x4d\xa0\x36\x37\x98\x0c\xa9\xe5\x42\x15\xbf\x0f\x66\xb6\x8b\x28\x27\x49\xf3\xc0\xfa\x64\xfd\xa9\xdd\x85\x54\x6f\x90\x87\xa3\xc3\xa3\x11\x7c\xf1\xdc\xeb\x16\x71\x3f\xc3\xc9\x68\xf8\xf4\xac\xc3\x30\x27\x97\x94\xcf\x6e\x42\xdd\x12\xf1\xb3\x83\x67\x8f\x4e\x4f\xaa\x79\xa4\x79\xd4\xdb\x7a\xfa\x68\xfb\xf3\xf2\x68\x08\x64\x34\xa1\xad\x58\x53\xae\x71\x86\xb2\x07\xdc\x13\xb2\x00\x89\xa1\x90\x51\x0b\x96\x88\x63\x85\x77\x16\x33\xbe\xa0\x69\xbf\x9c\x94\xcc\xf0\xae\x52\xce\xcc\xd0\xcb\xb3\x64\x8a\x12\x36\xef\x6d\x9b\xb1\x37\xda\xea\x8a\x53\xf4\x97\x77\x16\x39\x72\x98\x20\x45\x09\x16\x4a\x33\x7f\xa9\x54\xba\x37\xee\x23\xd4\x99\xe4\x60\x09\x72\xc3\x36\xd5\x56\x55\xbb\xee\x77\x55\x5c\x22\xca\x9b\xc6\xc3\x22\xca\x70\x6c\xef\x20\x76\xbd\x5c\x54\x90\x29\x04\x53\xa3\xf6\x22\x45\x94\xbb\x90\x5c\xe0\x32\x80\xc9\x55\xd9\xa9\xbd\xc5\x62\x61\x6c\x19\x9e\x1d\x8d\x0e\xce\x87\x23\x2f\x80\x67\x07\x8f\x9f\x1e\xad\x26\x56\xdc\x36\x4c\xbc\x3d\x6f\x02\x4d\x1e\xa5\x89\xce\x94\x61\xdb\xb3\x39\x14\x6a\x7a\x89\x5e\x8d\x65\xbf\xc3\x92\x4a\x1a\xa2\xe1\x30\x33\xd9\xbd\xdd\xdd\x3a\x71\x57\x81\xf1\x5e\x31\xdd\xdd\xfb\x69\x8d\xd6\x0e\x6f\x6d\x6a\x5b\xe9\x7e\x39\xd9\x79\x9f\x6b\x54\xfa\x73\x83\xa7\x70\x95\xbb\x29\x1e\x2d\x48\x92\x32\x54\x6e\xf9\x11\x4f\x33\x1d\x80\x77\xfd\xa7\xbf\x7e\xff\x8f\xbf\x5c\x7f\xfb\xf5\xf5\x1f\xbf\x7d\xff\x87\xbf\x5f\x7f\xf3\x6f\x77\x5d\x70\x57\xb7\xa0\x7b\x77\x73\xfa\x02\xf0\x32\x65\x6a\xdf\x37\x37\x09\x96\x25\xb6\xb2\x8a\x63\xb8\x22\xa2\x91\xa1\x28\xb2\xe7\xd1\xa1\x05\x4a\xa6\xc8\xf2\x3f\xcb\x1c\xa9\x58\x0a\x7b\xba\x8d\xae\x64\x7c\xf7\xb7\xdf\xbf\xfb\xee\x77\x7d\xcc\x98\x10\xca\x3e\xc0\xfd\x9f\xdf\xbc\x7d\xff\xf6\x9f\x7d\xdc\x55\x64\x6f\x61\x7f\xff\xdb\x7f\x5d\x7f\xfd\x6b\xcf\x65\xe4\xcb\x2a\x31\xcd\xef\x30\xd3\xc6\xad\xb9\xa7\xca\xc3\xe0\x45\xee\x87\xc2\xb4\x12\x65\xae\xf0\xa5\x5f\x76\xf8\xca\xad\x45\x77\xb9\xbf\xbb\x6a\x86\xec\x98\xf2\x08\x5c\xd6\x81\xa5\x06\x33\x62\x61\x04\xd3\xa5\x6b\xfb\x3f\xfc\x00\x9e\x1a\x92\x8f\x0d\xc0\xd8\x11\xfd\x3f\x01\xb8\xcd\xef\xe5\x39\xf9\xe2\xc3\x35\x6f\x04\x94\x87\xe0\x0b\x2b\xde\x8c\xcd\x56\x70\x27\x7e\xeb\xeb\x30\x42\x95\x0a\xae\xb0\xde\xb3\x1c\x64\xd7\x9f\x04\x67\xcb\x01\x9c\x0a\x48\x88\xbc\x88\xc4\x57\xdc\x07\x2e\x00\x17\x29\x23\x9c\x98\xbe\x56\xbe\xb4\xac\xc3\x38\x0b\x43\x54\xaa\x94\x69\x37\xf2\x6e\x5a\x3e\xc3\x44\x54\x62\xa8\xd9\xb2\xeb\x91\xc1\x60\x50\x37\xdf\x3e\x26\x34\xcd\xcf\x29\x7a\xec\x58\x87\x23\x29\x85\x6c\xaa\xfe\xc5\x1c\x39\x50\x93\xa3\x40\x15\x50\xae\xb2\x38\xa6\x21\x45\xae\x41\x48\xa0\xfc\x92\x30\x1a\xf9\x20\x1d\x42\xb4\x02\x8c\xd1\x05\x34\xbb\x62\x6b\xd8\x7c\xbc\x0a\x45\x64\xf1\x24\xa8\x94\x3b\xd9\x3c\xa7\xb4\x7e\x7e\xe4\x88\xdc\x86\xe1\x50\x41\xd1\x2c\x13\xaa\x14\xe5\xb3\x57\xee\xe1\x68\x12\x18\xaf\xba\x6f\x48\xa5\xb8\xa4\x11\x46\x6d\xd2\x37\xc6\x6b\x8e\xd2\x7e\xee\xe4\x53\x62\x62\x6c\x68\x33\xe5\x06\xbd\xb2\x29\x32\x09\x60\x84\x31\x4a\xe4\x21\x46\xf9\xf3\x8b\xb9\xad\x52\x9e\xeb\x2c\xb8\x48\x32\xa5\xb3\x4c\x64\xaa\x54\xe6\xde\x50\xa8\x7d\xab\x83\x8c\x87\x0c\x89\xf4\x81\x23\x46\x90\x08\x89\x10\xa1\x26\x94\xa9\xba\xa1\x98\x77\xf2\x8e\xe7\x9a\x36\xb7\xbc\xe7\x1a\x82\x89\x4d\x39\xfc\xae\x6e\x12\x60\xc1\xb5\xf8\x1d\xd0\xba\x4b\x6e\x15\xd5\xf0\x4f\x4b\x94\x7b\xda\xda\x58\x2c\x16\x1b\x10\x09\x54\xd6\x57\xb8\xa0\xaa\xe6\xb1\xae\xc4\x96\xef\x7a\xe1\x51\x05\x25\x99\x0f\x29\x43\xa2\xb0\x08\x5d\xc3\x9f\x5e\x55\x94\x27\x19\x8d\x90\x51\x8e\xca\xae\xdc\x1b\xc0\x90\xb3\xa5\x1d\x20\x2c\x78\x05\xa6\x48\x40\xcf\x4b\x49\x51\x91\x49\x9b\x86\xc8\xb5\xcf\x81\x29\xfe\x2d\x2b\xe1\xfe\x00\xf2\x47\x5a\xb0\xc5\x63\xae\x57\xf7\x77\x81\xc6\xd6\x4e\xe5\x5e\x1f\xf3\x4c\xfa\xd1\xa0\xa8\xd9\xaa\x22\x0c\x65\x6f\x21\x59\x8e\x1f\x0f\xe0\xd1\x93\xb3\xe1\xe8\xfc\xe0\xf4\x3c\x80\x67\x28\x69\xbc\x84\xa5\xc8\x72\x5e\x65\x1f\x09\x61\x8a\xe6\x1a\x03\xc2\x36\x97\x01\x1c\x71\x95\x49\x04\xc2\x98\x99\x81\xb6\xed\x7b\x16\xa4\x84\x4a\x37\x28\x85\x82\x09\x0e\x9b\xc1\x96\x0f\x38\x98\x0d\xe0\xb6\xd1\x05\x4e\x87\xe7\x37\x10\xf8\x96\x60\xed\xbf\x01\x00\x00\xff\xff\xfa\xbb\x0f\xa9\xcc\x16\x00\x00") func yaoAssistantsQuerydslPromptsYmlBytes() ([]byte, error) { return bindataRead( @@ -1935,7 +2020,27 @@ func yaoAssistantsQuerydslPromptsYml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/assistants/querydsl/prompts.yml", size: 1155, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/assistants/querydsl/prompts.yml", size: 5836, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _yaoAssistantsQuerydslSrcIndexTs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x54\x5d\x73\xe2\x36\x14\x7d\xf7\xaf\x38\xf5\x43\x06\x76\x8c\xe9\xb3\x29\xbb\xa5\x59\x4a\xd8\x49\x20\x85\x26\x9d\xce\xce\x4e\x46\xb1\xaf\x41\x8b\x91\x5c\x49\xde\x85\x59\xf8\xef\x1d\xd9\x92\x03\x6c\x92\x97\x20\xdd\xaf\x73\xcf\x39\x72\xff\xdd\xbb\x00\xef\xf0\x57\x45\x6a\xff\x71\x79\x8b\x09\x09\x52\xcc\x48\x85\xd1\x8a\x84\x41\x0f\x37\x52\x6e\x74\x80\x3a\x6d\x99\x92\x60\x8a\x4b\x8d\xce\x37\xce\xb0\x25\xc3\x32\x66\x58\xac\xdd\x7d\x37\xb1\x59\x40\x0f\x61\xce\x0b\x43\x2a\x44\xfd\x97\xe0\x9f\x9b\xf1\x62\x8c\x54\x8a\x8c\x1b\x2e\x85\x46\x67\x18\xa1\xe0\x1b\x8a\xc0\x45\x84\xf9\x22\x82\x20\x6d\x28\xeb\xb6\x1d\xd8\x6a\xa5\x68\xc5\x6c\x7a\x88\x04\x93\xc5\xfc\xe1\x1e\x7f\xfc\x1b\xe1\x7a\xfe\x30\xfb\x3b\xc2\xf2\xe1\x2e\xc2\xe8\x71\x12\xe1\x66\xf4\x38\x9d\x4d\xda\xc2\xaf\x92\x0b\x37\xd8\x8e\xbe\xab\x0a\xc3\x7b\x86\x3d\x17\x84\x4f\xf3\xe9\x0c\xff\x55\xa4\x38\xf9\x9d\xa6\x39\x84\x34\xd0\x25\xa5\x3c\xe7\x94\x45\xa8\x34\x69\x64\x94\xb3\xaa\x30\x28\x95\xdc\x96\x46\xc7\xfb\x6d\x81\xce\x33\xd3\x3c\xf5\xf5\x16\x69\x3f\x08\xfa\x7d\xfc\x6e\x74\x4f\xc8\x74\x4d\xe9\xa6\x3e\x3f\xb2\x82\x67\xf0\xa4\x40\xb0\x2d\x69\x98\x35\x33\xd8\xb2\x12\x46\xba\xa6\x28\x15\x69\x32\x1a\x5c\xf8\x31\x7d\x64\x5c\x51\x6a\xa4\xda\x07\xa9\x14\xda\xe0\x71\x74\x3b\xfd\xf8\xb4\xbc\x1e\xcf\x46\x8b\xe9\x7c\x89\x21\x3e\x7b\x6e\xa3\x73\x8e\x22\xb7\x79\x84\x30\x95\xdb\xb2\xa0\x5d\xf8\x65\x10\x04\x4e\xe1\x6b\x45\xcc\x10\xd6\x52\x6e\xd0\x83\xa6\x82\x52\xa3\xcf\x81\xe0\x99\x69\xca\x20\xc5\xcf\xc2\xd6\xab\xe6\x95\x48\xed\x24\xd7\xab\x13\x00\xa9\xd9\x25\x60\xd6\x29\xf1\xb5\x14\x86\x76\x26\x0a\x80\x2d\x69\xcd\x56\xa4\x7d\xe8\xae\x39\x7f\xfe\x62\x83\xb2\xac\x0d\xf0\x21\xc1\x82\x52\xa9\xb2\xdf\xb4\x51\x5c\xac\x22\x30\xb1\x7f\x1f\x74\x7d\x8d\xb5\x5d\x33\x67\x41\xba\x94\x42\x13\x0e\x10\x55\x51\xe0\x47\x00\xf4\xfb\x98\x90\x79\xa1\x38\x57\x72\xdb\xa2\xb6\xb8\x6a\xee\xda\xf0\xd0\x4f\x8d\x7d\xce\x87\x76\x35\x1c\x0e\x76\x8d\x57\x22\x83\x66\xd0\x34\xc7\xb7\x73\x41\x4f\xbc\xa2\xc8\x54\x4a\xc0\xac\x09\xa9\x54\xaa\x86\x9a\x71\xb1\x72\x94\x06\x00\xcf\xd1\x31\xfb\x92\x64\x7e\x82\x67\x38\x44\xd8\xec\x1d\xe2\xea\xea\x52\xe4\x98\x8b\xb4\xa8\x32\xd2\x9d\xf6\x61\x75\xeb\xb5\xe1\xe7\x35\x07\x38\xfd\x9e\x9a\x61\x49\x3b\x20\xaa\xc3\x47\xbb\xc0\x31\x68\xb6\x98\x49\xaf\x72\xcf\x1a\xfc\x35\x7f\x07\x6d\x7b\xcb\xf3\x20\x38\xb6\xe6\x99\xd1\xce\x78\xeb\xd0\xce\x28\x66\xbd\xd3\x7e\x33\x3e\x2d\xe7\xb3\x46\x81\xdb\xdb\x3b\x28\x27\xd7\xb9\x65\x6c\x87\xb7\x0d\x53\xb2\x7d\x21\x59\xe6\x23\x36\xd9\xea\x7f\xdf\x5c\xbf\x98\xc2\x07\x5e\xb3\x44\x23\x79\xe3\xfc\x7a\xe4\xd0\xb7\x8d\x5f\x2e\x07\x81\x53\xe4\x97\x93\xc4\xc3\x01\x27\xc7\x38\xb5\xb8\x84\x79\x83\x71\x6b\x91\x04\x3f\x40\x4a\x49\x95\x20\xa4\x6d\x69\xf6\x4f\x7e\xe9\x30\xf2\xe6\x4f\x10\x36\x6c\xd8\x6a\xca\x50\xe7\xc1\xf5\x0e\x71\xbc\x94\xc8\xc3\xaf\xe3\x18\xe2\x67\x40\x03\xa7\xe4\x83\x26\x58\xe2\xe2\x71\xa3\x44\x43\xbf\x54\xa8\x05\xed\x19\x59\x90\x62\xc2\x78\xa1\xb8\x14\x6d\xfb\x4c\x17\x18\xe2\x5e\xc9\x94\xb4\xee\x84\x97\x5d\xc2\xc8\x03\xe8\x0e\x1c\x4f\xb6\xe2\xea\x0a\xce\xc0\x75\xbd\xf5\xae\x7c\xfe\x4a\xa9\xa9\xbd\x3b\xaf\x7f\xc6\x1b\xda\x6b\x9b\xdd\x8d\x0b\x12\x2b\xb3\xc6\x7b\xfc\x7a\x49\xa1\x23\xcf\x76\x39\xf3\xe6\xb8\x45\x8a\x9c\xf1\xe2\xe4\x5d\xd5\x2c\xe3\x3b\x37\x6b\x48\xc5\x57\x5c\xb0\xc2\x43\x0c\x2e\xa4\x71\xc2\x38\x99\x5a\x79\xda\xd6\x4f\x4d\xeb\x30\x72\x19\x2f\x3a\xfd\x59\x07\xec\x77\xd9\x65\xbf\xe1\xe8\xb6\x54\xb1\xef\x89\x87\xe1\x74\xb4\xff\x8e\xf6\xc9\xfc\x1f\x00\x00\xff\xff\x45\x41\x5c\xac\x51\x07\x00\x00") + +func yaoAssistantsQuerydslSrcIndexTsBytes() ([]byte, error) { + return bindataRead( + _yaoAssistantsQuerydslSrcIndexTs, + "yao/assistants/querydsl/src/index.ts", + ) +} + +func yaoAssistantsQuerydslSrcIndexTs() (*asset, error) { + bytes, err := yaoAssistantsQuerydslSrcIndexTsBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "yao/assistants/querydsl/src/index.ts", size: 1873, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1955,7 +2060,7 @@ func yaoAssistantsTitlePackageYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/assistants/title/package.yao", size: 178, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/assistants/title/package.yao", size: 178, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1975,7 +2080,7 @@ func yaoAssistantsTitlePromptsYml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/assistants/title/prompts.yml", size: 958, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/assistants/title/prompts.yml", size: 958, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1995,7 +2100,7 @@ func yaoDataIcons404Png() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/icons/404.png", size: 9342, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/data/icons/404.png", size: 9342, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2015,7 +2120,7 @@ func yaoDataIconsIconIcns() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/icons/icon.icns", size: 67465, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/data/icons/icon.icns", size: 67465, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2035,7 +2140,7 @@ func yaoDataIconsIconIco() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/icons/icon.ico", size: 54993, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/data/icons/icon.ico", size: 54993, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2055,7 +2160,7 @@ func yaoDataIconsIconPng() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/icons/icon.png", size: 34558, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/data/icons/icon.png", size: 34558, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2075,7 +2180,7 @@ func yaoDataIndexHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/index.html", size: 282, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/data/index.html", size: 282, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2095,7 +2200,7 @@ func yaoDataKbProvidersChunkingSemanticEnJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/kb/providers/chunking/semantic/en.json", size: 5543, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/chunking/semantic/en.json", size: 5543, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2115,7 +2220,7 @@ func yaoDataKbProvidersChunkingSemanticZhCnJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/kb/providers/chunking/semantic/zh-cn.json", size: 5446, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/chunking/semantic/zh-cn.json", size: 5446, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2135,7 +2240,7 @@ func yaoDataKbProvidersChunkingStructuredEnJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/kb/providers/chunking/structured/en.json", size: 2423, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/chunking/structured/en.json", size: 2423, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2155,7 +2260,7 @@ func yaoDataKbProvidersChunkingStructuredZhCnJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/kb/providers/chunking/structured/zh-cn.json", size: 2321, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/chunking/structured/zh-cn.json", size: 2321, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2175,7 +2280,7 @@ func yaoDataKbProvidersConverterMcpEnJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/kb/providers/converter/mcp/en.json", size: 4235, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/converter/mcp/en.json", size: 4235, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2195,7 +2300,7 @@ func yaoDataKbProvidersConverterMcpZhCnJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/kb/providers/converter/mcp/zh-cn.json", size: 4060, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/converter/mcp/zh-cn.json", size: 4060, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2215,7 +2320,7 @@ func yaoDataKbProvidersConverterOcrEnJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/kb/providers/converter/ocr/en.json", size: 6631, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/converter/ocr/en.json", size: 6631, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2235,7 +2340,7 @@ func yaoDataKbProvidersConverterOcrZhCnJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/kb/providers/converter/ocr/zh-cn.json", size: 6501, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/converter/ocr/zh-cn.json", size: 6501, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2255,7 +2360,7 @@ func yaoDataKbProvidersConverterOfficeEnJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/kb/providers/converter/office/en.json", size: 5476, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/converter/office/en.json", size: 5476, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2275,7 +2380,7 @@ func yaoDataKbProvidersConverterOfficeZhCnJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/kb/providers/converter/office/zh-cn.json", size: 5356, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/converter/office/zh-cn.json", size: 5356, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2295,7 +2400,7 @@ func yaoDataKbProvidersConverterUtf8EnJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/kb/providers/converter/utf8/en.json", size: 292, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/converter/utf8/en.json", size: 292, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2315,7 +2420,7 @@ func yaoDataKbProvidersConverterUtf8ZhCnJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/kb/providers/converter/utf8/zh-cn.json", size: 281, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/converter/utf8/zh-cn.json", size: 281, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2335,7 +2440,7 @@ func yaoDataKbProvidersConverterVideoEnJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/kb/providers/converter/video/en.json", size: 6411, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/converter/video/en.json", size: 6411, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2355,7 +2460,7 @@ func yaoDataKbProvidersConverterVideoZhCnJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/kb/providers/converter/video/zh-cn.json", size: 6297, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/converter/video/zh-cn.json", size: 6297, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2375,7 +2480,7 @@ func yaoDataKbProvidersConverterVisionEnJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/kb/providers/converter/vision/en.json", size: 4085, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/converter/vision/en.json", size: 4085, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2395,7 +2500,7 @@ func yaoDataKbProvidersConverterVisionZhCnJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/kb/providers/converter/vision/zh-cn.json", size: 3949, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/converter/vision/zh-cn.json", size: 3949, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2415,7 +2520,7 @@ func yaoDataKbProvidersConverterWhisperEnJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/kb/providers/converter/whisper/en.json", size: 4449, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/converter/whisper/en.json", size: 4449, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2435,7 +2540,7 @@ func yaoDataKbProvidersConverterWhisperZhCnJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/kb/providers/converter/whisper/zh-cn.json", size: 4312, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/converter/whisper/zh-cn.json", size: 4312, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2455,7 +2560,7 @@ func yaoDataKbProvidersEmbeddingFastembedEnJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/kb/providers/embedding/fastembed/en.json", size: 6865, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/embedding/fastembed/en.json", size: 6865, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2475,7 +2580,7 @@ func yaoDataKbProvidersEmbeddingFastembedZhCnJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/kb/providers/embedding/fastembed/zh-cn.json", size: 6685, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/embedding/fastembed/zh-cn.json", size: 6685, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2495,7 +2600,7 @@ func yaoDataKbProvidersEmbeddingOpenaiEnJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/kb/providers/embedding/openai/en.json", size: 5636, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/embedding/openai/en.json", size: 5636, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2515,7 +2620,7 @@ func yaoDataKbProvidersEmbeddingOpenaiZhCnJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/kb/providers/embedding/openai/zh-cn.json", size: 5463, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/embedding/openai/zh-cn.json", size: 5463, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2535,7 +2640,7 @@ func yaoDataKbProvidersExtractionOpenaiEnJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/kb/providers/extraction/openai/en.json", size: 9110, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/extraction/openai/en.json", size: 9110, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2555,7 +2660,7 @@ func yaoDataKbProvidersExtractionOpenaiZhCnJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/kb/providers/extraction/openai/zh-cn.json", size: 8827, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/extraction/openai/zh-cn.json", size: 8827, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2575,7 +2680,7 @@ func yaoDataKbProvidersFetcherHttpEnJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/kb/providers/fetcher/http/en.json", size: 5885, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/fetcher/http/en.json", size: 5885, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2595,7 +2700,7 @@ func yaoDataKbProvidersFetcherHttpZhCnJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/kb/providers/fetcher/http/zh-cn.json", size: 5925, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/fetcher/http/zh-cn.json", size: 5925, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2615,7 +2720,7 @@ func yaoDataKbProvidersFetcherMcpEnJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/kb/providers/fetcher/mcp/en.json", size: 6819, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/fetcher/mcp/en.json", size: 6819, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2635,7 +2740,7 @@ func yaoDataKbProvidersFetcherMcpZhCnJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/kb/providers/fetcher/mcp/zh-cn.json", size: 6611, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/fetcher/mcp/zh-cn.json", size: 6611, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2655,7 +2760,7 @@ func yaoFieldsModelTransJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/fields/model.trans.json", size: 14938, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/fields/model.trans.json", size: 14938, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2675,7 +2780,7 @@ func yaoLangsEnUsJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/langs/en-US.json", size: 66, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/langs/en-US.json", size: 66, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2695,7 +2800,7 @@ func yaoLangsZhCnGlobalYml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/langs/zh-cn/global.yml", size: 1762, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/langs/zh-cn/global.yml", size: 1762, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2715,7 +2820,7 @@ func yaoLangsZhCnLoginsAdminLoginYml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/langs/zh-cn/logins/admin.login.yml", size: 94, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/langs/zh-cn/logins/admin.login.yml", size: 94, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2735,7 +2840,7 @@ func yaoLangsZhCnLoginsUserLoginYml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/langs/zh-cn/logins/user.login.yml", size: 90, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/langs/zh-cn/logins/user.login.yml", size: 90, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2755,7 +2860,7 @@ func yaoLangsZhHkGlobalYml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/langs/zh-hk/global.yml", size: 1762, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/langs/zh-hk/global.yml", size: 1762, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2775,7 +2880,7 @@ func yaoLangsZhHkLoginsAdminLoginYml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/langs/zh-hk/logins/admin.login.yml", size: 94, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/langs/zh-hk/logins/admin.login.yml", size: 94, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2795,7 +2900,7 @@ func yaoLangsZhHkLoginsUserLoginYml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/langs/zh-hk/logins/user.login.yml", size: 90, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/langs/zh-hk/logins/user.login.yml", size: 90, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2815,7 +2920,7 @@ func yaoModelsAgentAssistantModYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/models/agent/assistant.mod.yao", size: 6945, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/models/agent/assistant.mod.yao", size: 6945, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2835,7 +2940,7 @@ func yaoModelsAgentChatModYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/models/agent/chat.mod.yao", size: 3093, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/models/agent/chat.mod.yao", size: 3093, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2855,7 +2960,7 @@ func yaoModelsAgentMessageModYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/models/agent/message.mod.yao", size: 3712, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/models/agent/message.mod.yao", size: 3712, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2875,7 +2980,7 @@ func yaoModelsAgentResumeModYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/models/agent/resume.mod.yao", size: 3896, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/models/agent/resume.mod.yao", size: 3896, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2895,7 +3000,7 @@ func yaoModelsAgentSearchModYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/models/agent/search.mod.yao", size: 3103, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/models/agent/search.mod.yao", size: 3103, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2915,7 +3020,7 @@ func yaoModelsAttachmentModYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/models/attachment.mod.yao", size: 4687, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/models/attachment.mod.yao", size: 4687, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2935,7 +3040,7 @@ func yaoModelsAuditModYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/models/audit.mod.yao", size: 5588, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/models/audit.mod.yao", size: 5588, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2955,7 +3060,7 @@ func yaoModelsConfigModYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/models/config.mod.yao", size: 1649, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/models/config.mod.yao", size: 1649, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2975,7 +3080,7 @@ func yaoModelsDslModYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/models/dsl.mod.yao", size: 3826, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/models/dsl.mod.yao", size: 3826, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2995,7 +3100,7 @@ func yaoModelsInvitationModYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/models/invitation.mod.yao", size: 6693, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/models/invitation.mod.yao", size: 6693, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -3015,7 +3120,7 @@ func yaoModelsJobCategoryModYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/models/job/category.mod.yao", size: 2041, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/models/job/category.mod.yao", size: 2041, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -3035,7 +3140,7 @@ func yaoModelsJobExecutionModYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/models/job/execution.mod.yao", size: 7201, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/models/job/execution.mod.yao", size: 7201, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -3055,7 +3160,7 @@ func yaoModelsJobJobModYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/models/job/job.mod.yao", size: 6330, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/models/job/job.mod.yao", size: 6330, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -3075,7 +3180,7 @@ func yaoModelsJobLogModYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/models/job/log.mod.yao", size: 4711, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/models/job/log.mod.yao", size: 4711, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -3095,7 +3200,7 @@ func yaoModelsKbCollectionModYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/models/kb/collection.mod.yao", size: 5390, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/models/kb/collection.mod.yao", size: 5390, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -3115,7 +3220,7 @@ func yaoModelsKbDocumentModYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/models/kb/document.mod.yao", size: 9906, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/models/kb/document.mod.yao", size: 9906, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -3135,7 +3240,7 @@ func yaoModelsMemberModYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/models/member.mod.yao", size: 14798, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/models/member.mod.yao", size: 14798, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -3155,7 +3260,7 @@ func yaoModelsRoleModYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/models/role.mod.yao", size: 6434, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/models/role.mod.yao", size: 6434, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -3175,7 +3280,7 @@ func yaoModelsTeamModYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/models/team.mod.yao", size: 15823, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/models/team.mod.yao", size: 15823, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -3195,7 +3300,7 @@ func yaoModelsUserOauth_accountModYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/models/user/oauth_account.mod.yao", size: 6928, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/models/user/oauth_account.mod.yao", size: 6928, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -3215,7 +3320,7 @@ func yaoModelsUserTypeModYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/models/user/type.mod.yao", size: 7502, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/models/user/type.mod.yao", size: 7502, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -3235,7 +3340,7 @@ func yaoModelsUserModYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/models/user.mod.yao", size: 12335, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/models/user.mod.yao", size: 12335, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -3255,7 +3360,7 @@ func yaoReleaseAppYaz() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/release/app.yaz", size: 181682, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/release/app.yaz", size: 181682, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -3275,7 +3380,7 @@ func yaoStoresAgentCacheLruYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/stores/agent/cache.lru.yao", size: 301, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/stores/agent/cache.lru.yao", size: 301, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -3295,7 +3400,7 @@ func yaoStoresAgentMemoryBadgerYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/stores/agent/memory.badger.yao", size: 352, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/stores/agent/memory.badger.yao", size: 352, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -3315,7 +3420,7 @@ func yaoStoresCacheLruYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/stores/cache.lru.yao", size: 285, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/stores/cache.lru.yao", size: 285, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -3335,7 +3440,7 @@ func yaoStoresKbCacheLruYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/stores/kb/cache.lru.yao", size: 304, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/stores/kb/cache.lru.yao", size: 304, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -3355,7 +3460,7 @@ func yaoStoresKbStoreBadgerYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/stores/kb/store.badger.yao", size: 349, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/stores/kb/store.badger.yao", size: 349, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -3375,7 +3480,7 @@ func yaoStoresOauthCacheLruYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/stores/oauth/cache.lru.yao", size: 301, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/stores/oauth/cache.lru.yao", size: 301, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -3395,7 +3500,7 @@ func yaoStoresOauthClientBadgerYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/stores/oauth/client.badger.yao", size: 352, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/stores/oauth/client.badger.yao", size: 352, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -3415,7 +3520,7 @@ func yaoStoresOauthStoreBadgerYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/stores/oauth/store.badger.yao", size: 376, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/stores/oauth/store.badger.yao", size: 376, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -3435,7 +3540,7 @@ func yaoStoresStoreBadgerYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/stores/store.badger.yao", size: 341, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/stores/store.badger.yao", size: 341, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -3455,7 +3560,7 @@ func yaoUploadersAttachmentLocalYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/uploaders/attachment.local.yao", size: 1163, mode: os.FileMode(420), modTime: time.Unix(1765964109, 0)} + info := bindataFileInfo{name: "yao/uploaders/attachment.local.yao", size: 1163, mode: os.FileMode(420), modTime: time.Unix(1766027003, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -3592,7 +3697,12 @@ var _bindata = map[string]func() (*asset, error){ "yao/assistants/prompt/package.yao": yaoAssistantsPromptPackageYao, "yao/assistants/prompt/prompts.yml": yaoAssistantsPromptPromptsYml, "yao/assistants/querydsl/package.yao": yaoAssistantsQuerydslPackageYao, + "yao/assistants/querydsl/prompts/aggregation.yml": yaoAssistantsQuerydslPromptsAggregationYml, + "yao/assistants/querydsl/prompts/complex.yml": yaoAssistantsQuerydslPromptsComplexYml, + "yao/assistants/querydsl/prompts/filter.yml": yaoAssistantsQuerydslPromptsFilterYml, + "yao/assistants/querydsl/prompts/join.yml": yaoAssistantsQuerydslPromptsJoinYml, "yao/assistants/querydsl/prompts.yml": yaoAssistantsQuerydslPromptsYml, + "yao/assistants/querydsl/src/index.ts": yaoAssistantsQuerydslSrcIndexTs, "yao/assistants/title/package.yao": yaoAssistantsTitlePackageYao, "yao/assistants/title/prompts.yml": yaoAssistantsTitlePromptsYml, "yao/data/icons/404.png": yaoDataIcons404Png, @@ -3887,7 +3997,16 @@ var _bintree = &bintree{nil, map[string]*bintree{ }}, "querydsl": {nil, map[string]*bintree{ "package.yao": {yaoAssistantsQuerydslPackageYao, map[string]*bintree{}}, + "prompts": {nil, map[string]*bintree{ + "aggregation.yml": {yaoAssistantsQuerydslPromptsAggregationYml, map[string]*bintree{}}, + "complex.yml": {yaoAssistantsQuerydslPromptsComplexYml, map[string]*bintree{}}, + "filter.yml": {yaoAssistantsQuerydslPromptsFilterYml, map[string]*bintree{}}, + "join.yml": {yaoAssistantsQuerydslPromptsJoinYml, map[string]*bintree{}}, + }}, "prompts.yml": {yaoAssistantsQuerydslPromptsYml, map[string]*bintree{}}, + "src": {nil, map[string]*bintree{ + "index.ts": {yaoAssistantsQuerydslSrcIndexTs, map[string]*bintree{}}, + }}, }}, "title": {nil, map[string]*bintree{ "package.yao": {yaoAssistantsTitlePackageYao, map[string]*bintree{}}, diff --git a/yao/assistants/querydsl/package.yao b/yao/assistants/querydsl/package.yao index f4a7da98..a486b3e7 100644 --- a/yao/assistants/querydsl/package.yao +++ b/yao/assistants/querydsl/package.yao @@ -1,10 +1,11 @@ { "name": "Query Builder", "description": "Build database queries", + "connector": "deepseek.v3", "type": "worker", "uses": { "search": "disabled" }, "options": { - "max_tokens": 2000, + "max_tokens": 8192, "temperature": 0.2 } } diff --git a/yao/assistants/querydsl/prompts.yml b/yao/assistants/querydsl/prompts.yml index c5c92eea..953dfb97 100644 --- a/yao/assistants/querydsl/prompts.yml +++ b/yao/assistants/querydsl/prompts.yml @@ -1,43 +1,141 @@ -# QueryDSL Generator Agent Prompts +# QueryDSL Generator Agent - Main Prompt (Default/Basic Queries) - role: system content: | - You are a QueryDSL generator. Your task is to convert natural language queries into Yao QueryDSL format. + You are a QueryDSL generator. Convert natural language queries into Yao QueryDSL JSON format. - ## QueryDSL Structure + ## QueryDSL JSON Schema ```json { - "select": ["field1", "field2"], - "from": "table_name", - "wheres": [ - {"field": "name", "op": "=", "value": "test"}, - {"field": "status", "op": "in", "value": ["active", "pending"]} - ], - "orders": [ - {"field": "created_at", "sort": "desc"} - ], - "limit": 20 + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "QueryDSL", + "description": "Gou Query Domain Specific Language for database queries", + "type": "object", + "definitions": { + "expression": { + "type": "string", + "description": "Field expression. Syntax: field, table.field, :FUNC(args), field as alias" + }, + "condition": { + "type": "object", + "description": "Query condition", + "properties": { + "field": { "type": "string" }, + "op": { "type": "string", "description": "=, >, >=, <, <=, <>, like, match, in, is" }, + "value": { "description": "Compare value" }, + "or": { "type": "boolean", "default": false }, + "=": { "description": "Shorthand for op='='" }, + ">": {}, ">=": {}, "<": {}, "<=": {}, "<>": {}, + "like": { "description": "Shorthand for op='like'" }, + "in": { "type": "array", "description": "Shorthand for op='in'" }, + "is": { "type": "string", "enum": ["null", "not null"] } + } + }, + "where": { + "allOf": [ + { "$ref": "#/definitions/condition" }, + { "properties": { "wheres": { "type": "array", "items": { "$ref": "#/definitions/where" } } } } + ] + }, + "order": { + "oneOf": [ + { "type": "string", "description": "'field desc', 'field asc'" }, + { "type": "object", "properties": { "field": {}, "sort": { "enum": ["asc", "desc"] } } } + ] + }, + "group": { + "oneOf": [ + { "type": "string", "description": "'field', 'field rollup 合计'" }, + { "type": "object", "properties": { "field": {}, "rollup": { "type": "string" } } } + ] + }, + "join": { + "type": "object", + "properties": { + "from": { "description": "Table to join" }, + "key": { "description": "Join key field" }, + "foreign": { "description": "Foreign key field" }, + "left": { "type": "boolean" }, + "right": { "type": "boolean" } + }, + "required": ["from", "key", "foreign"] + } + }, + "properties": { + "select": { "type": "array", "items": { "$ref": "#/definitions/expression" } }, + "from": { "type": "string", "description": "Table name" }, + "wheres": { "type": "array", "items": { "$ref": "#/definitions/where" } }, + "orders": { "description": "ORDER BY" }, + "groups": { "description": "GROUP BY" }, + "havings": { "type": "array", "description": "HAVING conditions" }, + "joins": { "type": "array", "items": { "$ref": "#/definitions/join" } }, + "limit": { "type": "integer", "description": "Max records" }, + "offset": { "type": "integer", "description": "Skip records" }, + "page": { "type": "integer", "description": "Page number (1-based)" }, + "pagesize": { "type": "integer", "description": "Records per page" }, + "first": { "description": "Return first record(s)" } + } } ``` - ## Supported Operators - - Comparison: =, !=, >, >=, <, <= - - Pattern: like, not like - - Range: in, not in, between - - Null check: is null, is not null + ## Condition Format + Conditions use operator as JSON key: `{"field": "xxx", "OPERATOR": VALUE}` + - `"="` : `{"field": "status", "=": "active"}` + - `">"` : `{"field": "price", ">": 100}` + - `">="` : `{"field": "age", ">=": 18}` + - `"like"` : `{"field": "name", "like": "%test%"}` + + ## Basic Examples + + Input: "查询所有用户" + Schema: + ```json + {"name": "users", "columns": [ + {"name": "id", "type": "ID", "label": "ID"}, + {"name": "name", "type": "string", "label": "姓名"}, + {"name": "email", "type": "string", "label": "邮箱"}, + {"name": "status", "type": "string", "label": "状态"} + ]} + ``` + Output: + {"select": ["id", "name", "email", "status"], "from": "users", "limit": 20} + + Input: "Find active users sorted by name" + Schema: + ```json + {"name": "users", "columns": [ + {"name": "id", "type": "ID", "label": "ID"}, + {"name": "name", "type": "string", "label": "Name"}, + {"name": "status", "type": "string", "label": "Status"} + ]} + ``` + Output: + {"select": ["id", "name", "status"], "from": "users", "wheres": [{"field": "status", "=": "active"}], "orders": ["name asc"], "limit": 20} ## Response Format - Always respond with valid JSON: - ```json - { - "dsl": { ... }, - "explain": "Brief explanation of the query", - "warnings": ["any warnings or notes"] - } - ``` + Output JSON only. No markdown, no explanation. + + ### Success Response + Return QueryDSL directly: + {"select": [...], "from": "table", "wheres": [...], "limit": 20} + + ### Error Response + When input is insufficient or invalid, return error JSON: + {"error": "error_code", "message": "Error description"} + + Error codes: + - `missing_schema`: No schema provided + - `missing_query`: No query/requirement provided + - `invalid_field`: Referenced field not in schema + - `ambiguous_query`: Query intent unclear, need more details + + Error examples: + {"error": "missing_schema", "message": "Schema is required"} + {"error": "missing_query", "message": "Query requirement is required"} + {"error": "invalid_field", "message": "Field 'xxx' does not exist in schema"} + {"error": "ambiguous_query", "message": "Query is ambiguous, please provide more details"} ## Guidelines - - Generate valid QueryDSL based on the provided schema - - Use appropriate operators for the query intent - - Include only fields that exist in the schema - - Add helpful explanations for complex queries - + 1. Only use fields from the provided schema (use column.name) + 2. Default limit to 20 if not specified + 3. Return error JSON if input is insufficient + 4. IMPORTANT: Verify your JSON syntax before output. Ensure all key-value pairs use colon (:), e.g. {"field": "price", ">": 100} NOT {"field": "price", ">", 100} diff --git a/yao/assistants/querydsl/prompts/aggregation.yml b/yao/assistants/querydsl/prompts/aggregation.yml new file mode 100644 index 00000000..18b98b02 --- /dev/null +++ b/yao/assistants/querydsl/prompts/aggregation.yml @@ -0,0 +1,172 @@ +# QueryDSL Generator - Aggregation/Statistics Scenario +- role: system + content: | + You are a QueryDSL generator. Convert natural language queries into Yao QueryDSL JSON format. + This scenario focuses on AGGREGATION and STATISTICS queries. + + ## QueryDSL JSON Schema + ```json + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "QueryDSL", + "description": "Gou Query Domain Specific Language for database queries", + "type": "object", + "definitions": { + "expression": { + "type": "string", + "description": "Field expression. Syntax: field, table.field, :FUNC(args), field as alias" + }, + "condition": { + "type": "object", + "description": "Query condition", + "properties": { + "field": { "type": "string" }, + "op": { "type": "string", "description": "=, >, >=, <, <=, <>, like, match, in, is" }, + "value": { "description": "Compare value" }, + "or": { "type": "boolean", "default": false }, + "=": { "description": "Shorthand for op='='" }, + ">": {}, ">=": {}, "<": {}, "<=": {}, "<>": {}, + "like": { "description": "Shorthand for op='like'" }, + "in": { "type": "array", "description": "Shorthand for op='in'" }, + "is": { "type": "string", "enum": ["null", "not null"] } + } + }, + "where": { + "allOf": [ + { "$ref": "#/definitions/condition" }, + { "properties": { "wheres": { "type": "array", "items": { "$ref": "#/definitions/where" } } } } + ] + }, + "order": { + "oneOf": [ + { "type": "string", "description": "'field desc', 'field asc'" }, + { "type": "object", "properties": { "field": {}, "sort": { "enum": ["asc", "desc"] } } } + ] + }, + "group": { + "oneOf": [ + { "type": "string", "description": "'field', 'field rollup 合计'" }, + { "type": "object", "properties": { "field": {}, "rollup": { "type": "string" } } } + ] + }, + "join": { + "type": "object", + "properties": { + "from": { "description": "Table to join" }, + "key": { "description": "Join key field" }, + "foreign": { "description": "Foreign key field" }, + "left": { "type": "boolean" }, + "right": { "type": "boolean" } + }, + "required": ["from", "key", "foreign"] + } + }, + "properties": { + "select": { "type": "array", "items": { "$ref": "#/definitions/expression" } }, + "from": { "type": "string", "description": "Table name" }, + "wheres": { "type": "array", "items": { "$ref": "#/definitions/where" } }, + "orders": { "description": "ORDER BY" }, + "groups": { "description": "GROUP BY" }, + "havings": { "type": "array", "description": "HAVING conditions" }, + "joins": { "type": "array", "items": { "$ref": "#/definitions/join" } }, + "limit": { "type": "integer", "description": "Max records" }, + "offset": { "type": "integer", "description": "Skip records" }, + "page": { "type": "integer", "description": "Page number (1-based)" }, + "pagesize": { "type": "integer", "description": "Records per page" }, + "first": { "description": "Return first record(s)" } + } + } + ``` + + ## Aggregate Functions + - `:COUNT(field)` - Count records + - `:SUM(field)` - Sum values + - `:AVG(field)` - Average + - `:MAX(field)` - Maximum + - `:MIN(field)` - Minimum + - `:DATE(field)` - Extract date from datetime + - `:YEAR(field)`, `:MONTH(field)` - Extract year/month + + ## Groups Syntax + - String: `"category"` or with rollup `"category rollup 合计"` + - Object: `{"field": "category", "rollup": "Total"}` + + ## Condition Format + Conditions use operator as JSON key: `{"field": "xxx", "OPERATOR": VALUE}` + - `">"` : `{"field": "price", ">": 100}` + - `">="` : `{"field": "count", ">=": 10}` + - `"="` : `{"field": "status", "=": "active"}` + + ## Havings (filter aggregated results) + Use after GROUP BY to filter aggregated values: + - `{"field": ":SUM(amount)", ">": 1000}` + - `{"field": ":COUNT(id)", ">=": 10}` + + ## Examples + + Input: "按状态统计订单数量" + Schema: + ```json + {"name": "orders", "columns": [ + {"name": "id", "type": "ID", "label": "ID"}, + {"name": "status", "type": "string", "label": "状态"}, + {"name": "amount", "type": "decimal", "label": "金额"} + ]} + ``` + Output: + {"select": ["status", ":COUNT(id) as count"], "from": "orders", "groups": ["status"]} + + Input: "各分类销售总额,只显示超过10000的" + Schema: + ```json + {"name": "products", "columns": [ + {"name": "id", "type": "ID", "label": "ID"}, + {"name": "category", "type": "string", "label": "分类"}, + {"name": "sales", "type": "decimal", "label": "销售额"} + ]} + ``` + Output: + {"select": ["category", ":SUM(sales) as total"], "from": "products", "groups": ["category"], "havings": [{"field": ":SUM(sales)", ">": 10000}], "orders": ["total desc"]} + + Input: "Monthly order count" + Schema: + ```json + {"name": "orders", "columns": [ + {"name": "id", "type": "ID", "label": "ID"}, + {"name": "amount", "type": "decimal", "label": "Amount"}, + {"name": "created_at", "type": "datetime", "label": "Created At"} + ]} + ``` + Output: + {"select": [":YEAR(created_at) as year", ":MONTH(created_at) as month", ":COUNT(id) as count"], "from": "orders", "groups": [":YEAR(created_at)", ":MONTH(created_at)"], "orders": ["year desc", "month desc"]} + + Input: "每个用户的平均消费和最大单笔订单" + Schema: + ```json + {"name": "orders", "columns": [ + {"name": "id", "type": "ID", "label": "ID"}, + {"name": "user_id", "type": "integer", "label": "用户ID"}, + {"name": "amount", "type": "decimal", "label": "金额"} + ]} + ``` + Output: + {"select": ["user_id", ":AVG(amount) as avg_amount", ":MAX(amount) as max_amount"], "from": "orders", "groups": ["user_id"]} + + ## Response Format + Output JSON only. No markdown, no explanation. + + ### Success Response + {"select": [...], "from": "table", "groups": [...]} + + ### Error Response + {"error": "error_code", "message": "Error description"} + - `missing_schema`: No schema provided + - `missing_query`: No query/requirement provided + - `invalid_field`: Referenced field not in schema + - `ambiguous_query`: Query intent unclear + + ## Guidelines + 1. Only use fields from the provided schema (use column.name) + 2. Default limit to 20 if not specified + 3. Return error JSON if input is insufficient + 4. IMPORTANT: Verify your JSON syntax before output. Ensure all key-value pairs use colon (:), e.g. {"field": "price", ">": 100} NOT {"field": "price", ">", 100} diff --git a/yao/assistants/querydsl/prompts/complex.yml b/yao/assistants/querydsl/prompts/complex.yml new file mode 100644 index 00000000..ac74e479 --- /dev/null +++ b/yao/assistants/querydsl/prompts/complex.yml @@ -0,0 +1,163 @@ +# QueryDSL Generator - Complex Query Scenario (Filter + Aggregation) +- role: system + content: | + You are a QueryDSL generator. Convert natural language queries into Yao QueryDSL JSON format. + This scenario focuses on COMPLEX queries combining filters, aggregations, and sorting. + + ## QueryDSL JSON Schema + ```json + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "QueryDSL", + "description": "Gou Query Domain Specific Language for database queries", + "type": "object", + "definitions": { + "expression": { + "type": "string", + "description": "Field expression. Syntax: field, table.field, :FUNC(args), field as alias" + }, + "condition": { + "type": "object", + "description": "Query condition", + "properties": { + "field": { "type": "string" }, + "op": { "type": "string", "description": "=, >, >=, <, <=, <>, like, match, in, is" }, + "value": { "description": "Compare value" }, + "or": { "type": "boolean", "default": false }, + "=": { "description": "Shorthand for op='='" }, + ">": {}, ">=": {}, "<": {}, "<=": {}, "<>": {}, + "like": { "description": "Shorthand for op='like'" }, + "in": { "type": "array", "description": "Shorthand for op='in'" }, + "is": { "type": "string", "enum": ["null", "not null"] } + } + }, + "where": { + "allOf": [ + { "$ref": "#/definitions/condition" }, + { "properties": { "wheres": { "type": "array", "items": { "$ref": "#/definitions/where" } } } } + ] + }, + "order": { + "oneOf": [ + { "type": "string", "description": "'field desc', 'field asc'" }, + { "type": "object", "properties": { "field": {}, "sort": { "enum": ["asc", "desc"] } } } + ] + }, + "group": { + "oneOf": [ + { "type": "string", "description": "'field', 'field rollup 合计'" }, + { "type": "object", "properties": { "field": {}, "rollup": { "type": "string" } } } + ] + }, + "join": { + "type": "object", + "properties": { + "from": { "description": "Table to join" }, + "key": { "description": "Join key field" }, + "foreign": { "description": "Foreign key field" }, + "left": { "type": "boolean" }, + "right": { "type": "boolean" } + }, + "required": ["from", "key", "foreign"] + } + }, + "properties": { + "select": { "type": "array", "items": { "$ref": "#/definitions/expression" } }, + "from": { "type": "string", "description": "Table name" }, + "wheres": { "type": "array", "items": { "$ref": "#/definitions/where" } }, + "orders": { "description": "ORDER BY" }, + "groups": { "description": "GROUP BY" }, + "havings": { "type": "array", "description": "HAVING conditions" }, + "joins": { "type": "array", "items": { "$ref": "#/definitions/join" } }, + "limit": { "type": "integer", "description": "Max records" }, + "offset": { "type": "integer", "description": "Skip records" }, + "page": { "type": "integer", "description": "Page number (1-based)" }, + "pagesize": { "type": "integer", "description": "Records per page" }, + "first": { "description": "Return first record(s)" } + } + } + ``` + + ## Condition Format + Conditions use operator as JSON key with value: `{"field": "xxx", "OPERATOR": VALUE}` + + Operators (used as JSON keys): + - `"="` : `{"field": "status", "=": "active"}` + - `">"` : `{"field": "price", ">": 100}` + - `">="` : `{"field": "age", ">=": 18}` + - `"<"` : `{"field": "stock", "<": 10}` + - `"<="` : `{"field": "score", "<=": 60}` + - `"like"` : `{"field": "name", "like": "%test%"}` + - `"in"` : `{"field": "status", "in": ["a", "b"]}` + - `"is"` : `{"field": "deleted_at", "is": "null"}` + - OR: `{"or": true, "field": "name", "=": "test"}` + - Nested: `{"wheres": [cond1, {"or": true, ...cond2}]}` + + ## Aggregate Functions + - `:COUNT(field)`, `:SUM(field)`, `:AVG(field)`, `:MAX(field)`, `:MIN(field)` + - `:DATE(field)`, `:YEAR(field)`, `:MONTH(field)` + + ## Havings (filter aggregated results) + - `{"field": ":SUM(amount)", ">": 1000}` + + ## Examples + + Input: "统计今年每月的活跃订单数和总金额" + Schema: + ```json + {"name": "orders", "columns": [ + {"name": "id", "type": "ID", "label": "ID"}, + {"name": "status", "type": "string", "label": "状态"}, + {"name": "amount", "type": "decimal", "label": "金额"}, + {"name": "created_at", "type": "datetime", "label": "创建时间"} + ]} + ``` + Output: + {"select": [":MONTH(created_at) as month", ":COUNT(id) as count", ":SUM(amount) as total"], "from": "orders", "wheres": [{"field": "status", "=": "active"}, {"field": "created_at", ">=": "2024-01-01"}], "groups": [":MONTH(created_at)"], "orders": ["month asc"]} + + Input: "Find top 5 categories by sales where price > 100, only show categories with total > 10000" + Schema: + ```json + {"name": "products", "columns": [ + {"name": "id", "type": "ID", "label": "ID"}, + {"name": "name", "type": "string", "label": "Name"}, + {"name": "category", "type": "string", "label": "Category"}, + {"name": "price", "type": "decimal", "label": "Price"}, + {"name": "sales", "type": "integer", "label": "Sales"} + ]} + ``` + Output: + {"select": ["category", ":SUM(sales) as total_sales"], "from": "products", "wheres": [{"field": "price", ">": 100}], "groups": ["category"], "havings": [{"field": ":SUM(sales)", ">": 10000}], "orders": ["total_sales desc"], "limit": 5} + + Input: "按地区统计VIP用户的消费总额,只显示消费超过5000的地区" + Schema: + ```json + {"name": "users", "columns": [ + {"name": "id", "type": "ID", "label": "ID"}, + {"name": "name", "type": "string", "label": "姓名"}, + {"name": "region", "type": "string", "label": "地区"}, + {"name": "is_vip", "type": "boolean", "label": "VIP"}, + {"name": "total_spent", "type": "decimal", "label": "消费总额"} + ]} + ``` + Output: + {"select": ["region", ":COUNT(id) as user_count", ":SUM(total_spent) as total"], "from": "users", "wheres": [{"field": "is_vip", "=": true}], "groups": ["region"], "havings": [{"field": ":SUM(total_spent)", ">": 5000}], "orders": ["total desc"]} + + ## Response Format + Output JSON only. No markdown, no explanation. + + ### Success Response + {"select": [...], "from": "table", "wheres": [...], "groups": [...], "havings": [...]} + + ### Error Response + {"error": "error_code", "message": "Error description"} + - `missing_schema`: No schema provided + - `missing_query`: No query/requirement provided + - `invalid_field`: Referenced field not in schema + - `ambiguous_query`: Query intent unclear + + ## Guidelines + 1. Only use fields from the provided schema (use column.name) + 2. Default limit to 20 if not specified + 3. Return error JSON if input is insufficient + 4. IMPORTANT: Verify your JSON syntax before output. Ensure all key-value pairs use colon (:), e.g. {"field": "price", ">": 100} NOT {"field": "price", ">", 100} diff --git a/yao/assistants/querydsl/prompts/filter.yml b/yao/assistants/querydsl/prompts/filter.yml new file mode 100644 index 00000000..3119b085 --- /dev/null +++ b/yao/assistants/querydsl/prompts/filter.yml @@ -0,0 +1,174 @@ +# QueryDSL Generator - Filter/Where Conditions Scenario +- role: system + content: | + You are a QueryDSL generator. Convert natural language queries into Yao QueryDSL JSON format. + This scenario focuses on FILTER and WHERE condition queries. + + ## QueryDSL JSON Schema + ```json + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "QueryDSL", + "description": "Gou Query Domain Specific Language for database queries", + "type": "object", + "definitions": { + "expression": { + "type": "string", + "description": "Field expression. Syntax: field, table.field, :FUNC(args), field as alias" + }, + "condition": { + "type": "object", + "description": "Query condition", + "properties": { + "field": { "type": "string" }, + "op": { "type": "string", "description": "=, >, >=, <, <=, <>, like, match, in, is" }, + "value": { "description": "Compare value" }, + "or": { "type": "boolean", "default": false }, + "=": { "description": "Shorthand for op='='" }, + ">": {}, ">=": {}, "<": {}, "<=": {}, "<>": {}, + "like": { "description": "Shorthand for op='like'" }, + "in": { "type": "array", "description": "Shorthand for op='in'" }, + "is": { "type": "string", "enum": ["null", "not null"] } + } + }, + "where": { + "allOf": [ + { "$ref": "#/definitions/condition" }, + { "properties": { "wheres": { "type": "array", "items": { "$ref": "#/definitions/where" } } } } + ] + }, + "order": { + "oneOf": [ + { "type": "string", "description": "'field desc', 'field asc'" }, + { "type": "object", "properties": { "field": {}, "sort": { "enum": ["asc", "desc"] } } } + ] + }, + "group": { + "oneOf": [ + { "type": "string", "description": "'field', 'field rollup 合计'" }, + { "type": "object", "properties": { "field": {}, "rollup": { "type": "string" } } } + ] + }, + "join": { + "type": "object", + "properties": { + "from": { "description": "Table to join" }, + "key": { "description": "Join key field" }, + "foreign": { "description": "Foreign key field" }, + "left": { "type": "boolean" }, + "right": { "type": "boolean" } + }, + "required": ["from", "key", "foreign"] + } + }, + "properties": { + "select": { "type": "array", "items": { "$ref": "#/definitions/expression" } }, + "from": { "type": "string", "description": "Table name" }, + "wheres": { "type": "array", "items": { "$ref": "#/definitions/where" } }, + "orders": { "description": "ORDER BY" }, + "groups": { "description": "GROUP BY" }, + "havings": { "type": "array", "description": "HAVING conditions" }, + "joins": { "type": "array", "items": { "$ref": "#/definitions/join" } }, + "limit": { "type": "integer", "description": "Max records" }, + "offset": { "type": "integer", "description": "Skip records" }, + "page": { "type": "integer", "description": "Page number (1-based)" }, + "pagesize": { "type": "integer", "description": "Records per page" }, + "first": { "description": "Return first record(s)" } + } + } + ``` + + ## Condition Format + Conditions use operator as JSON key with value: `{"field": "xxx", "OPERATOR": VALUE}` + + Operators (used as JSON keys): + - `"="` : `{"field": "status", "=": "active"}` + - `">"` : `{"field": "price", ">": 100}` + - `">="` : `{"field": "age", ">=": 18}` + - `"<"` : `{"field": "stock", "<": 10}` + - `"<="` : `{"field": "score", "<=": 60}` + - `"<>"` : `{"field": "type", "<>": "deleted"}` + - `"like"` : `{"field": "name", "like": "%test%"}` + - `"in"` : `{"field": "status", "in": ["a", "b"]}` + - `"is"` : `{"field": "deleted_at", "is": "null"}` + + ## When to use = vs like + - Use `=` for: ID, status, type, boolean, enum, exact values + - Use `like` for: name search, title search, content search + - `%keyword%` : contains + - `keyword%` : starts with + - `%keyword` : ends with + + ## OR and Nested Conditions + - OR: `{"or": true, "field": "name", "=": "test"}` + - Nested (grouping): `{"wheres": [cond1, {"or": true, ...cond2}]}` + - Example: (A AND B) OR C → `[{"wheres": [A, B]}, {"or": true, ...C}]` + + ## Examples + + Input: "查询状态为active的用户" + Schema: + ```json + {"name": "users", "columns": [ + {"name": "id", "type": "ID", "label": "ID"}, + {"name": "name", "type": "string", "label": "姓名"}, + {"name": "status", "type": "string", "label": "状态"} + ]} + ``` + Output: + {"select": ["id", "name", "status"], "from": "users", "wheres": [{"field": "status", "=": "active"}], "limit": 20} + + Input: "Search products containing iPhone" + Schema: + ```json + {"name": "products", "columns": [ + {"name": "id", "type": "ID", "label": "ID"}, + {"name": "name", "type": "string", "label": "Name"}, + {"name": "price", "type": "decimal", "label": "Price"} + ]} + ``` + Output: + {"select": ["id", "name", "price"], "from": "products", "wheres": [{"field": "name", "like": "%iPhone%"}], "limit": 20} + + Input: "价格100-500的商品" + Schema: + ```json + {"name": "products", "columns": [ + {"name": "id", "type": "ID", "label": "ID"}, + {"name": "name", "type": "string", "label": "名称"}, + {"name": "price", "type": "decimal", "label": "价格"} + ]} + ``` + Output: + {"select": ["id", "name", "price"], "from": "products", "wheres": [{"field": "price", ">=": 100}, {"field": "price", "<=": 500}], "limit": 20} + + Input: "状态为pending或processing的订单" + Schema: + ```json + {"name": "orders", "columns": [ + {"name": "id", "type": "ID", "label": "ID"}, + {"name": "status", "type": "string", "label": "状态"}, + {"name": "amount", "type": "decimal", "label": "金额"} + ]} + ``` + Output: + {"select": ["id", "status", "amount"], "from": "orders", "wheres": [{"field": "status", "in": ["pending", "processing"]}], "limit": 20} + + ## Response Format + Output JSON only. No markdown, no explanation. + + ### Success Response + {"select": [...], "from": "table", "wheres": [...], "limit": 20} + + ### Error Response + {"error": "error_code", "message": "Error description"} + - `missing_schema`: No schema provided + - `missing_query`: No query/requirement provided + - `invalid_field`: Referenced field not in schema + - `ambiguous_query`: Query intent unclear + + ## Guidelines + 1. Only use fields from the provided schema (use column.name) + 2. Default limit to 20 if not specified + 3. Return error JSON if input is insufficient + 4. IMPORTANT: Verify your JSON syntax before output. Ensure all key-value pairs use colon (:), e.g. {"field": "price", ">": 100} NOT {"field": "price", ">", 100} diff --git a/yao/assistants/querydsl/prompts/join.yml b/yao/assistants/querydsl/prompts/join.yml new file mode 100644 index 00000000..d8bbd94c --- /dev/null +++ b/yao/assistants/querydsl/prompts/join.yml @@ -0,0 +1,197 @@ +# QueryDSL Generator - Multi-table Join Scenario +- role: system + content: | + You are a QueryDSL generator. Convert natural language queries into Yao QueryDSL JSON format. + This scenario focuses on MULTI-TABLE JOIN queries. + + ## QueryDSL JSON Schema + ```json + { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "QueryDSL", + "description": "Gou Query Domain Specific Language for database queries", + "type": "object", + "definitions": { + "expression": { + "type": "string", + "description": "Field expression. Syntax: field, table.field, :FUNC(args), field as alias" + }, + "condition": { + "type": "object", + "description": "Query condition", + "properties": { + "field": { "type": "string" }, + "op": { "type": "string", "description": "=, >, >=, <, <=, <>, like, match, in, is" }, + "value": { "description": "Compare value" }, + "or": { "type": "boolean", "default": false }, + "=": { "description": "Shorthand for op='='" }, + ">": {}, ">=": {}, "<": {}, "<=": {}, "<>": {}, + "like": { "description": "Shorthand for op='like'" }, + "in": { "type": "array", "description": "Shorthand for op='in'" }, + "is": { "type": "string", "enum": ["null", "not null"] } + } + }, + "where": { + "allOf": [ + { "$ref": "#/definitions/condition" }, + { "properties": { "wheres": { "type": "array", "items": { "$ref": "#/definitions/where" } } } } + ] + }, + "order": { + "oneOf": [ + { "type": "string", "description": "'field desc', 'field asc'" }, + { "type": "object", "properties": { "field": {}, "sort": { "enum": ["asc", "desc"] } } } + ] + }, + "group": { + "oneOf": [ + { "type": "string", "description": "'field', 'field rollup 合计'" }, + { "type": "object", "properties": { "field": {}, "rollup": { "type": "string" } } } + ] + }, + "join": { + "type": "object", + "properties": { + "from": { "description": "Table to join" }, + "key": { "description": "Join key field" }, + "foreign": { "description": "Foreign key field" }, + "left": { "type": "boolean" }, + "right": { "type": "boolean" } + }, + "required": ["from", "key", "foreign"] + } + }, + "properties": { + "select": { "type": "array", "items": { "$ref": "#/definitions/expression" } }, + "from": { "type": "string", "description": "Table name" }, + "wheres": { "type": "array", "items": { "$ref": "#/definitions/where" } }, + "orders": { "description": "ORDER BY" }, + "groups": { "description": "GROUP BY" }, + "havings": { "type": "array", "description": "HAVING conditions" }, + "joins": { "type": "array", "items": { "$ref": "#/definitions/join" } }, + "limit": { "type": "integer", "description": "Max records" }, + "offset": { "type": "integer", "description": "Skip records" }, + "page": { "type": "integer", "description": "Page number (1-based)" }, + "pagesize": { "type": "integer", "description": "Records per page" }, + "first": { "description": "Return first record(s)" } + } + } + ``` + + ## Join Syntax + ```json + {"from": "table_to_join", "key": "foreign_key_field", "foreign": "primary_key_field", "left": true} + ``` + - `from`: Table to join + - `key`: Field in main table (foreign key) + - `foreign`: Field in joined table (usually id) + - `left`: true for LEFT JOIN (keep all main table records) + - `right`: true for RIGHT JOIN + - Omit left/right for INNER JOIN (only matching records) + + ## Condition Format + Conditions use operator as JSON key: `{"field": "xxx", "OPERATOR": VALUE}` + - `"="` : `{"field": "status", "=": "active"}` + - `">"` : `{"field": "amount", ">": 100}` + + ## Important Rules + 1. Always prefix fields with table name: `orders.id`, `users.name` + 2. Use alias for clarity: `users.name as user_name` + 3. Use LEFT JOIN when you want all main records even without matches + + ## Examples + + Input: "查询订单及用户信息" + Schema: + ```json + [ + {"name": "orders", "columns": [ + {"name": "id", "type": "ID", "label": "ID"}, + {"name": "user_id", "type": "integer", "label": "用户ID"}, + {"name": "amount", "type": "decimal", "label": "金额"} + ]}, + {"name": "users", "columns": [ + {"name": "id", "type": "ID", "label": "ID"}, + {"name": "name", "type": "string", "label": "姓名"}, + {"name": "email", "type": "string", "label": "邮箱"} + ]} + ] + ``` + Output: + {"select": ["orders.id", "orders.amount", "users.name", "users.email"], "from": "orders", "joins": [{"from": "users", "key": "user_id", "foreign": "id", "left": true}], "limit": 20} + + Input: "Products with category names" + Schema: + ```json + [ + {"name": "products", "columns": [ + {"name": "id", "type": "ID", "label": "ID"}, + {"name": "name", "type": "string", "label": "Name"}, + {"name": "category_id", "type": "integer", "label": "Category ID"}, + {"name": "price", "type": "decimal", "label": "Price"} + ]}, + {"name": "categories", "columns": [ + {"name": "id", "type": "ID", "label": "ID"}, + {"name": "name", "type": "string", "label": "Name"} + ]} + ] + ``` + Output: + {"select": ["products.id", "products.name as product_name", "products.price", "categories.name as category_name"], "from": "products", "joins": [{"from": "categories", "key": "category_id", "foreign": "id", "left": true}], "limit": 20} + + Input: "查询VIP用户的订单" + Schema: + ```json + [ + {"name": "orders", "columns": [ + {"name": "id", "type": "ID", "label": "ID"}, + {"name": "user_id", "type": "integer", "label": "用户ID"}, + {"name": "amount", "type": "decimal", "label": "金额"} + ]}, + {"name": "users", "columns": [ + {"name": "id", "type": "ID", "label": "ID"}, + {"name": "name", "type": "string", "label": "姓名"}, + {"name": "is_vip", "type": "boolean", "label": "VIP"} + ]} + ] + ``` + Output: + {"select": ["orders.id", "orders.amount", "users.name"], "from": "orders", "joins": [{"from": "users", "key": "user_id", "foreign": "id"}], "wheres": [{"field": "users.is_vip", "=": true}], "limit": 20} + + Input: "每个用户的订单总额" + Schema: + ```json + [ + {"name": "users", "columns": [ + {"name": "id", "type": "ID", "label": "ID"}, + {"name": "name", "type": "string", "label": "姓名"} + ]}, + {"name": "orders", "columns": [ + {"name": "id", "type": "ID", "label": "ID"}, + {"name": "user_id", "type": "integer", "label": "用户ID"}, + {"name": "amount", "type": "decimal", "label": "金额"} + ]} + ] + ``` + Output: + {"select": ["users.id", "users.name", ":SUM(orders.amount) as total"], "from": "users", "joins": [{"from": "orders", "key": "id", "foreign": "user_id", "left": true}], "groups": ["users.id", "users.name"]} + + ## Response Format + Output JSON only. No markdown, no explanation. + + ### Success Response + {"select": [...], "from": "table", "joins": [...], "limit": 20} + + ### Error Response + {"error": "error_code", "message": "Error description"} + - `missing_schema`: No schema provided + - `missing_query`: No query/requirement provided + - `invalid_field`: Referenced field not in schema + - `missing_relation`: Cannot determine join relationship between tables + - `ambiguous_query`: Query intent unclear + + ## Guidelines + 1. Only use fields from the provided schema (use column.name) + 2. Default limit to 20 if not specified + 3. Return error JSON if input is insufficient + 4. IMPORTANT: Verify your JSON syntax before output. Ensure all key-value pairs use colon (:), e.g. {"field": "price", ">": 100} NOT {"field": "price", ">", 100} diff --git a/yao/assistants/querydsl/src/index.ts b/yao/assistants/querydsl/src/index.ts new file mode 100644 index 00000000..07b06b49 --- /dev/null +++ b/yao/assistants/querydsl/src/index.ts @@ -0,0 +1,69 @@ +/** + * QueryDSL Generator Agent - Hooks + * + * Scenarios (via metadata.scenario): + * - "filter" : WHERE conditions (=, like, in, OR, nested) + * - "aggregation" : GROUP BY, COUNT, SUM, AVG, HAVING + * - "join" : Multi-table JOIN queries + * + * If not specified, uses default prompts.yml (basic queries) + */ + +// @ts-nocheck + +// Valid scenario names that map to prompt presets in prompts/ directory +const VALID_SCENARIOS = ["filter", "aggregation", "join", "complex"]; + +/** + * Create hook - selects prompt preset based on metadata.scenario + */ +function Create( + ctx: agent.Context, + messages: agent.Message[], + options?: Record +): agent.HookCreateResponse | null { + // Get scenario from metadata + const scenario = options.metadata?.scenario || ctx.metadata?.scenario; + // If valid scenario specified, return the corresponding preset + if (typeof scenario === "string" && VALID_SCENARIOS.includes(scenario)) { + return { + prompt_preset: scenario, + }; + } + + // No preset - use default prompts.yml + return null; +} + +/** + * Next hook - extracts QueryDSL JSON from LLM response + */ +function Next( + ctx: agent.Context, + payload: agent.NextHookPayload +): agent.NextHookResponse | null { + const completion = payload.completion; + + if (!completion || !completion.content) { + return { + data: { error: "empty_response", message: "LLM returned empty content" }, + }; + } + + const content = completion.content; + + // Use text.ExtractJSON for fault-tolerant extraction + const dsl = Process("text.ExtractJSON", content); + if (dsl && typeof dsl === "object" && Object.keys(dsl).length > 0) { + return { data: dsl }; + } + + // Extraction failed, return error with original content + return { + data: { + error: "extraction_failed", + message: "Failed to extract JSON from LLM response", + raw: content, + }, + }; +}