diff --git a/agent/assistant/agent.go b/agent/assistant/agent.go index 200c807e..74f703ca 100644 --- a/agent/assistant/agent.go +++ b/agent/assistant/agent.go @@ -202,7 +202,7 @@ func (ast *Assistant) Stream(ctx *context.Context, inputMessages []context.Messa // ================================================ // Execute Auto Search (if enabled) // ================================================ - if ast.shouldAutoSearch(ctx, createResponse) { + if ast.shouldAutoSearch(ctx, completionMessages, createResponse, opts) { refCtx := ast.executeAutoSearch(ctx, completionMessages, createResponse, opts) if refCtx != nil && len(refCtx.References) > 0 { completionMessages = ast.injectSearchContext(completionMessages, refCtx) diff --git a/agent/assistant/cache.go b/agent/assistant/cache.go index adfc37ac..6c917139 100644 --- a/agent/assistant/cache.go +++ b/agent/assistant/cache.go @@ -124,6 +124,35 @@ func (c *Cache) Clear() { c.items = make(map[string]*list.Element) } +// ClearExcept removes items from the cache except those matching the keep function +// keep function returns true for items that should be preserved +func (c *Cache) ClearExcept(keep func(id string) bool) { + c.mu.Lock() + defer c.mu.Unlock() + + // Collect items to remove + var toRemove []*list.Element + for element := c.list.Front(); element != nil; element = element.Next() { + item := element.Value.(*cacheItem) + if !keep(item.key) { + toRemove = append(toRemove, element) + } + } + + // Remove collected items + for _, element := range toRemove { + item := element.Value.(*cacheItem) + + // Unregister scripts before removing + if item.value != nil && len(item.value.Scripts) > 0 { + item.value.UnregisterScripts() + } + + c.list.Remove(element) + delete(c.items, item.key) + } +} + // removeOldest removes the least recently used item from the cache func (c *Cache) removeOldest() { if element := c.list.Back(); element != nil { diff --git a/agent/assistant/load.go b/agent/assistant/load.go index b281d257..2d7eee20 100644 --- a/agent/assistant/load.go +++ b/agent/assistant/load.go @@ -33,8 +33,10 @@ var globalSearchConfig *searchTypes.Config = nil // global search config from ag // LoadBuiltIn load the built-in assistants func LoadBuiltIn() error { - // Clear the cache - loaded.Clear() + // Clear non-system agents from cache (preserve system agents loaded by LoadSystemAgents) + loaded.ClearExcept(func(id string) bool { + return strings.HasPrefix(id, "__yao.") // Keep system agents + }) root := `/assistants` app, err := fs.Get("app") diff --git a/agent/assistant/load_system.go b/agent/assistant/load_system.go index afc425ab..69e1f62b 100644 --- a/agent/assistant/load_system.go +++ b/agent/assistant/load_system.go @@ -146,9 +146,8 @@ func loadSystemAgent(id, pathPrefix string) (*Assistant, error) { return nil, fmt.Errorf("failed to parse %s: %w", pkgPath, err) } - // Set assistant_id and path + // Set assistant_id (no path - system agents are loaded from storage, not filesystem) pkgData["assistant_id"] = id - pkgData["path"] = "/" + pathPrefix // Set type if not specified if _, has := pkgData["type"]; !has { diff --git a/agent/assistant/load_test.go b/agent/assistant/load_test.go index 7ca79bc6..4c9227c2 100644 --- a/agent/assistant/load_test.go +++ b/agent/assistant/load_test.go @@ -544,6 +544,34 @@ func TestLoadSystemAgents(t *testing.T) { } assert.True(t, found, "System agents should be found in storage") }) + + t.Run("SystemAgentsGetFromStorage", func(t *testing.T) { + // Clear cache to force loading from storage + assistant.GetCache().Clear() + + // Test Get for each system agent + systemAgents := []string{ + "__yao.keyword", + "__yao.querydsl", + "__yao.title", + "__yao.prompt", + "__yao.needsearch", + "__yao.entity", + } + + for _, agentID := range systemAgents { + ast, err := assistant.Get(agentID) + require.NoError(t, err, "Get(%s) should succeed", agentID) + require.NotNil(t, ast, "Get(%s) should return assistant", agentID) + assert.Equal(t, agentID, ast.ID) + assert.True(t, ast.BuiltIn, "%s should be built-in", agentID) + assert.True(t, ast.Readonly, "%s should be readonly", agentID) + assert.Contains(t, ast.Tags, "system", "%s should have system tag", agentID) + assert.Equal(t, "worker", ast.Type, "%s should be worker type", agentID) + assert.NotNil(t, ast.Prompts, "%s should have prompts", agentID) + assert.Greater(t, len(ast.Prompts), 0, "%s should have at least one prompt", agentID) + } + }) } // TestValidate tests the assistant Validate method diff --git a/agent/assistant/search.go b/agent/assistant/search.go index fd29451d..7aae5518 100644 --- a/agent/assistant/search.go +++ b/agent/assistant/search.go @@ -1,6 +1,7 @@ package assistant import ( + "encoding/json" "fmt" "strings" "time" @@ -17,9 +18,17 @@ import ( // shouldAutoSearch determines if auto search should be executed // Returns false if: +// - opts.Skip.Search is true // - uses.search is "disabled" // - assistant has no search configuration -func (ast *Assistant) shouldAutoSearch(ctx *context.Context, createResponse *context.HookCreateResponse) bool { +// - needsearch intent detection returns false +func (ast *Assistant) shouldAutoSearch(ctx *context.Context, messages []context.Message, createResponse *context.HookCreateResponse, opts *context.Options) bool { + // Check if search is skipped via options + if opts != nil && opts.Skip != nil && opts.Skip.Search { + ctx.Logger.Debug("Auto search skipped by opts.Skip.Search") + return false + } + // Get merged uses configuration uses := ast.getMergedSearchUses(createResponse) @@ -34,10 +43,194 @@ func (ast *Assistant) shouldAutoSearch(ctx *context.Context, createResponse *con return false } + // Check search intent using __yao.needsearch agent + if !ast.checkSearchIntent(ctx, messages) { + ctx.Logger.Info("Auto search skipped: intent detection returned false") + return false + } + // Check if search is enabled (builtin, agent, mcp, or empty means builtin) return true } +// checkSearchIntent uses __yao.needsearch agent to determine if search is needed +// Returns true if search is needed, false otherwise +func (ast *Assistant) checkSearchIntent(ctx *context.Context, messages []context.Message) bool { + // Get the last user message + var userQuery string + for i := len(messages) - 1; i >= 0; i-- { + if messages[i].Role == "user" { + if content, ok := messages[i].Content.(string); ok { + userQuery = content + break + } + } + } + + if userQuery == "" { + return true // No user message, proceed with search + } + + // Try to get __yao.needsearch agent + needsearchAst, err := Get("__yao.needsearch") + if err != nil { + ctx.Logger.Debug("__yao.needsearch agent not available: %v, proceeding with search", err) + return true // Agent not available, proceed with search + } + + // === Output: Send loading message === + loadingID := ast.sendIntentLoading(ctx) + + // Build messages for intent detection + intentMessages := []context.Message{ + {Role: "user", Content: userQuery}, + } + + // Call the needsearch agent (Stack will auto-track) + // IMPORTANT: Skip search to prevent infinite loop, skip output to prevent JSON showing in UI + opts := &context.Options{ + Skip: &context.Skip{ + History: true, // Don't save to history + Search: true, // Skip search to prevent infinite loop + Output: true, // Skip output to prevent JSON showing in UI + }, + } + + result, err := needsearchAst.Stream(ctx, intentMessages, opts) + if err != nil { + ctx.Logger.Debug("__yao.needsearch failed: %v, proceeding with search", err) + // === Output: Send done (error case, proceed with search) === + ast.sendIntentDone(ctx, loadingID, true, "") + return true // On error, proceed with search + } + + // Parse the result + // Next hook returns {data: {need_search: bool, search_types: [], confidence: float}} + if response, ok := result.(*context.Response); ok { + // First try to get from Next hook response + if response.Next != nil { + if nextData, ok := response.Next.(map[string]interface{}); ok { + // Check for data field (from Next hook's {data: result}) + var intentData map[string]interface{} + if data, ok := nextData["data"].(map[string]interface{}); ok { + intentData = data + } else { + intentData = nextData + } + + if needSearch, ok := intentData["need_search"].(bool); ok { + reason, _ := intentData["reason"].(string) + ctx.Logger.Debug("Search intent (from Next): need_search=%v, reason=%s", needSearch, reason) + ast.sendIntentDone(ctx, loadingID, needSearch, reason) + return needSearch + } + } + } + + // Fallback: parse from Completion.Content if Next hook didn't process + if response.Completion != nil { + content, ok := response.Completion.Content.(string) + if !ok || content == "" { + ast.sendIntentDone(ctx, loadingID, true, "") + return true + } + needSearch, reason := parseNeedSearchFromContent(content) + ctx.Logger.Debug("Search intent (from Content): need_search=%v, reason=%s", needSearch, reason) + ast.sendIntentDone(ctx, loadingID, needSearch, reason) + return needSearch + } + } + + // Default: proceed with search if we can't parse the result + // === Output: Send done (default case) === + ast.sendIntentDone(ctx, loadingID, true, "") + return true +} + +// parseNeedSearchFromContent parses need_search result from LLM completion content +// Handles JSON wrapped in markdown code blocks +func parseNeedSearchFromContent(content string) (bool, string) { + // Remove markdown code block if present + content = strings.TrimSpace(content) + if strings.HasPrefix(content, "```json") { + content = strings.TrimPrefix(content, "```json") + content = strings.TrimSuffix(content, "```") + content = strings.TrimSpace(content) + } else if strings.HasPrefix(content, "```") { + content = strings.TrimPrefix(content, "```") + content = strings.TrimSuffix(content, "```") + content = strings.TrimSpace(content) + } + + // Try to parse JSON + var result map[string]interface{} + if err := json.Unmarshal([]byte(content), &result); err != nil { + // Failed to parse, default to search + return true, "" + } + + needSearch, ok := result["need_search"].(bool) + if !ok { + return true, "" + } + + reason, _ := result["reason"].(string) + return needSearch, reason +} + +// sendIntentLoading sends the initial intent detection loading message +// Returns the message ID for later replacement +func (ast *Assistant) sendIntentLoading(ctx *context.Context) string { + loadingMsg := i18n.T(ctx.Locale, "search.intent.loading") + + msg := &message.Message{ + Type: "loading", + Props: map[string]any{ + "message": loadingMsg, + }, + } + + // Send and get message ID + msgID, err := ctx.SendStream(msg) + if err != nil { + ctx.Logger.Warn("Failed to send intent loading message: %v", err) + return "" + } + + return msgID +} + +// sendIntentDone replaces loading with result +// Only marks as done when needSearch is false (no further loading will follow) +// When needSearch is true, the search loading will continue +func (ast *Assistant) sendIntentDone(ctx *context.Context, loadingID string, needSearch bool, reason string) { + if loadingID == "" { + return + } + + var resultMsg string + if needSearch { + resultMsg = i18n.T(ctx.Locale, "search.intent.need_search") + } else { + resultMsg = i18n.T(ctx.Locale, "search.intent.no_search") + } + + msg := &message.Message{ + MessageID: loadingID, + Delta: true, + DeltaAction: message.DeltaReplace, + Type: "loading", + Props: map[string]any{ + "message": resultMsg, + "done": true, // Intent detection loading is independent, always close it + }, + } + + if err := ctx.Send(msg); err != nil { + ctx.Logger.Warn("Failed to send intent done message: %v", err) + } +} + // getMergedSearchUses returns the merged uses configuration for search // Priority: createResponse > assistant func (ast *Assistant) getMergedSearchUses(createResponse *context.HookCreateResponse) *context.Uses { diff --git a/agent/context/types.go b/agent/context/types.go index 5c78ffe8..b41a3e87 100644 --- a/agent/context/types.go +++ b/agent/context/types.go @@ -196,6 +196,7 @@ type Skip struct { Trace bool `json:"trace"` // Skip trace logging Output bool `json:"output"` // Skip output to client (for internal A2A calls that only need response data) Keyword bool `json:"keyword"` // Skip keyword extraction for web search (use raw query directly) + Search bool `json:"search"` // Skip auto search (for internal calls like needsearch intent detection) } // MessageMetadata stores metadata for sent messages diff --git a/agent/i18n/builtin.go b/agent/i18n/builtin.go index 3aa2f04d..78a6e6b9 100644 --- a/agent/i18n/builtin.go +++ b/agent/i18n/builtin.go @@ -107,6 +107,11 @@ func init() { "search.failed": "Search failed", "search.no_results": "No references found", + // Search Intent: assistant/search.go - Intent detection messages + "search.intent.loading": "Checking if references are needed...", + "search.intent.need_search": "Searching for references...", + "search.intent.no_search": "No references needed", + // Search: assistant/search.go - Trace labels "search.trace.label": "Search", "search.trace.description": "Search the web and knowledge base for relevant information", @@ -191,6 +196,11 @@ func init() { "search.failed": "搜索失败", "search.no_results": "未找到相关资料", + // Search Intent: assistant/search.go - Intent detection messages + "search.intent.loading": "检查是否需要查询资料...", + "search.intent.need_search": "正在查询相关资料...", + "search.intent.no_search": "无需查询资料", + // Search: assistant/search.go - Trace labels "search.trace.label": "搜索", "search.trace.description": "搜索网络和知识库获取相关信息", @@ -303,6 +313,11 @@ func init() { "search.failed": "搜索失败", "search.no_results": "未找到相关资料", + // Search Intent: assistant/search.go - Intent detection messages + "search.intent.loading": "检查是否需要查询资料...", + "search.intent.need_search": "正在查询相关资料...", + "search.intent.no_search": "无需查询资料", + // Search: assistant/search.go - Trace labels "search.trace.label": "搜索", "search.trace.description": "搜索网络和知识库获取相关信息", diff --git a/data/bindata.go b/data/bindata.go index 3f8303a9..bc978fe0 100644 --- a/data/bindata.go +++ b/data/bindata.go @@ -73,8 +73,10 @@ // .tmp/data/yao/assistants/entity/prompts.yml // .tmp/data/yao/assistants/keyword/package.yao // .tmp/data/yao/assistants/keyword/prompts.yml +// .tmp/data/yao/assistants/keyword/src/index.ts // .tmp/data/yao/assistants/needsearch/package.yao // .tmp/data/yao/assistants/needsearch/prompts.yml +// .tmp/data/yao/assistants/needsearch/src/index.ts // .tmp/data/yao/assistants/prompt/package.yao // .tmp/data/yao/assistants/prompt/prompts.yml // .tmp/data/yao/assistants/querydsl/package.yao @@ -333,7 +335,7 @@ func cuiSetupIndexHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "cui/setup/index.html", size: 10, mode: os.FileMode(420), modTime: time.Unix(1765870272, 0)} + info := bindataFileInfo{name: "cui/setup/index.html", size: 10, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -353,7 +355,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(1765870272, 0)} + info := bindataFileInfo{name: "cui/v0.9/index.html", size: 13, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -373,7 +375,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(1765870272, 0)} + info := bindataFileInfo{name: "cui/v1.0/index.html", size: 49, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -393,7 +395,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(1765870272, 0)} + info := bindataFileInfo{name: "cui/v1.0/layouts__index.async.js", size: 71, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -413,7 +415,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(1765870272, 0)} + info := bindataFileInfo{name: "cui/v1.0/umi.js", size: 71, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -433,7 +435,7 @@ func initEnv() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.env", size: 219, mode: os.FileMode(420), modTime: time.Unix(1765870272, 0)} + info := bindataFileInfo{name: "init/.env", size: 219, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -453,7 +455,7 @@ func initVscodeSettingsJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/.vscode/settings.json", size: 4666, mode: os.FileMode(420), modTime: time.Unix(1765870272, 0)} + info := bindataFileInfo{name: "init/.vscode/settings.json", size: 4666, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -473,7 +475,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(1765870272, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/console.d.ts", size: 221, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -493,7 +495,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(1765870272, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/exception.d.ts", size: 738, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -513,7 +515,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(1765870272, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/fs.d.ts", size: 8554, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -533,7 +535,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(1765870272, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/global.d.ts", size: 1759, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -553,7 +555,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(1765870272, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/http.d.ts", size: 6179, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -573,7 +575,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(1765870272, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/io.d.ts", size: 587, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -593,7 +595,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(1765870272, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/log.d.ts", size: 1692, mode: os.FileMode(493), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -613,7 +615,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(1765870272, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/neo.d.ts", size: 3750, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -633,7 +635,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(1765870272, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/process/fs.d.ts", size: 11133, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -653,7 +655,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(1765870272, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/process/http.d.ts", size: 5653, mode: os.FileMode(493), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -673,7 +675,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(1765870272, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/process/model.d.ts", size: 6656, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -693,7 +695,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(1765870272, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/process.d.ts", size: 23165, mode: os.FileMode(493), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -713,7 +715,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(1765870272, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/query.d.ts", size: 6124, mode: os.FileMode(493), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -733,7 +735,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(1765870272, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/store.d.ts", size: 2251, mode: os.FileMode(493), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -753,7 +755,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(1765870272, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/sui.d.ts", size: 1713, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -773,7 +775,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(1765870272, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime/time.d.ts", size: 711, mode: os.FileMode(493), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -793,7 +795,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(1765870272, 0)} + info := bindataFileInfo{name: "init/.vscode/types/runtime.d.ts", size: 424, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -813,7 +815,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(1765870272, 0)} + info := bindataFileInfo{name: "init/.vscode/types/sui.d.ts", size: 8931, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -833,7 +835,7 @@ func initAppYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/app.yao", size: 3115, mode: os.FileMode(420), modTime: time.Unix(1765870272, 0)} + info := bindataFileInfo{name: "init/app.yao", size: 3115, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -853,7 +855,7 @@ func initDataReadmeMd() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/data/README.md", size: 41, mode: os.FileMode(420), modTime: time.Unix(1765870272, 0)} + info := bindataFileInfo{name: "init/data/README.md", size: 41, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -873,7 +875,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(1765870272, 0)} + info := bindataFileInfo{name: "init/data/templates/default/__assets/README.md", size: 33, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -893,7 +895,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(1765870272, 0)} + info := bindataFileInfo{name: "init/data/templates/default/__assets/images/icons/app.png", size: 34558, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -913,7 +915,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(1765870272, 0)} + info := bindataFileInfo{name: "init/data/templates/default/__assets/images/logos/logo_color.svg", size: 2909, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -933,7 +935,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(1765870272, 0)} + info := bindataFileInfo{name: "init/data/templates/default/__assets/images/logos/wordmark.svg", size: 3615, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -953,7 +955,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(1765870272, 0)} + info := bindataFileInfo{name: "init/data/templates/default/__data.json", size: 30, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -973,7 +975,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(1765870272, 0)} + info := bindataFileInfo{name: "init/data/templates/default/__document.html", size: 492, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -993,7 +995,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(1765870272, 0)} + info := bindataFileInfo{name: "init/data/templates/default/index/index.css", size: 2896, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1013,7 +1015,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(1765870272, 0)} + info := bindataFileInfo{name: "init/data/templates/default/index/index.html", size: 2361, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1033,7 +1035,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(1765870272, 0)} + info := bindataFileInfo{name: "init/data/templates/default/index/index.json", size: 31, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1053,7 +1055,7 @@ func initDbReadmeMd() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/db/README.md", size: 84, mode: os.FileMode(420), modTime: time.Unix(1765870272, 0)} + info := bindataFileInfo{name: "init/db/README.md", size: 84, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1073,7 +1075,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(1765870272, 0)} + info := bindataFileInfo{name: "init/flows/menu.flow.yao", size: 813, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1093,7 +1095,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(1765870272, 0)} + info := bindataFileInfo{name: "init/forms/account.form.yao", size: 1194, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1113,7 +1115,7 @@ func initIconsAppIcns() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/icons/app.icns", size: 67465, mode: os.FileMode(420), modTime: time.Unix(1765870272, 0)} + info := bindataFileInfo{name: "init/icons/app.icns", size: 67465, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1133,7 +1135,7 @@ func initIconsAppIco() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/icons/app.ico", size: 54993, mode: os.FileMode(420), modTime: time.Unix(1765870272, 0)} + info := bindataFileInfo{name: "init/icons/app.ico", size: 54993, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1153,7 +1155,7 @@ func initIconsAppPng() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/icons/app.png", size: 34558, mode: os.FileMode(420), modTime: time.Unix(1765870272, 0)} + info := bindataFileInfo{name: "init/icons/app.png", size: 34558, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1173,7 +1175,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(1765870272, 0)} + info := bindataFileInfo{name: "init/logins/admin.login.yao", size: 302, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1193,7 +1195,7 @@ func initLogsReadmeMd() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/logs/README.md", size: 28, mode: os.FileMode(420), modTime: time.Unix(1765870272, 0)} + info := bindataFileInfo{name: "init/logs/README.md", size: 28, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1213,7 +1215,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(1765870272, 0)} + info := bindataFileInfo{name: "init/models/admin/user.mod.yao", size: 6416, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1233,7 +1235,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(1765870272, 0)} + info := bindataFileInfo{name: "init/models/tests/pet.mod.yao", size: 525, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1253,7 +1255,7 @@ func initNeoNeoYml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/neo/neo.yml", size: 724, mode: os.FileMode(420), modTime: time.Unix(1765870272, 0)} + info := bindataFileInfo{name: "init/neo/neo.yml", size: 724, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1273,7 +1275,7 @@ func initPublicReadmeMd() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/public/README.md", size: 108, mode: os.FileMode(420), modTime: time.Unix(1765870272, 0)} + info := bindataFileInfo{name: "init/public/README.md", size: 108, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1293,7 +1295,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(1765870272, 0)} + info := bindataFileInfo{name: "init/public/assets/README.md", size: 33, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1313,7 +1315,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(1765870272, 0)} + info := bindataFileInfo{name: "init/public/assets/images/icons/app.png", size: 34558, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1333,7 +1335,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(1765870272, 0)} + info := bindataFileInfo{name: "init/public/assets/images/logos/logo_color.svg", size: 2909, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1353,7 +1355,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(1765870272, 0)} + info := bindataFileInfo{name: "init/public/assets/images/logos/wordmark.svg", size: 3615, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1373,7 +1375,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(1765870272, 0)} + info := bindataFileInfo{name: "init/public/assets/libsui.min.js", size: 12569, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1393,7 +1395,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(1765870272, 0)} + info := bindataFileInfo{name: "init/public/assets/libsui.min.js.map", size: 38553, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1413,7 +1415,7 @@ func initPublicIndexCfg() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/public/index.cfg", size: 85, mode: os.FileMode(420), modTime: time.Unix(1765870272, 0)} + info := bindataFileInfo{name: "init/public/index.cfg", size: 85, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1433,7 +1435,7 @@ func initPublicIndexSui() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/public/index.sui", size: 5682, mode: os.FileMode(420), modTime: time.Unix(1765870272, 0)} + info := bindataFileInfo{name: "init/public/index.sui", size: 5682, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1453,7 +1455,7 @@ func initScriptsAccountTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/scripts/account.ts", size: 2521, mode: os.FileMode(420), modTime: time.Unix(1765870272, 0)} + info := bindataFileInfo{name: "init/scripts/account.ts", size: 2521, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1473,7 +1475,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(1765870272, 0)} + info := bindataFileInfo{name: "init/scripts/ai/neo.ts", size: 375, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1493,7 +1495,7 @@ func initScriptsTestsTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/scripts/tests.ts", size: 1044, mode: os.FileMode(420), modTime: time.Unix(1765870272, 0)} + info := bindataFileInfo{name: "init/scripts/tests.ts", size: 1044, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1513,7 +1515,7 @@ func initScriptsUtilsTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/scripts/utils.ts", size: 1230, mode: os.FileMode(420), modTime: time.Unix(1765870272, 0)} + info := bindataFileInfo{name: "init/scripts/utils.ts", size: 1230, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1533,7 +1535,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(1765870272, 0)} + info := bindataFileInfo{name: "init/suis/web.sui.yao", size: 675, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1553,7 +1555,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(1765870272, 0)} + info := bindataFileInfo{name: "init/tables/account.tab.yao", size: 5597, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1573,7 +1575,7 @@ func initTsconfigJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "init/tsconfig.json", size: 178, mode: os.FileMode(420), modTime: time.Unix(1765870272, 0)} + info := bindataFileInfo{name: "init/tsconfig.json", size: 178, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1593,7 +1595,7 @@ func libsuiAgentTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "libsui/agent.ts", size: 15267, mode: os.FileMode(420), modTime: time.Unix(1765870272, 0)} + info := bindataFileInfo{name: "libsui/agent.ts", size: 15267, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1613,7 +1615,7 @@ func libsuiIndexTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "libsui/index.ts", size: 13049, mode: os.FileMode(420), modTime: time.Unix(1765870272, 0)} + info := bindataFileInfo{name: "libsui/index.ts", size: 13049, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1633,7 +1635,7 @@ func libsuiUtilsTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "libsui/utils.ts", size: 5959, mode: os.FileMode(420), modTime: time.Unix(1765870272, 0)} + info := bindataFileInfo{name: "libsui/utils.ts", size: 5959, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1653,7 +1655,7 @@ func libsuiYaoTs() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "libsui/yao.ts", size: 4338, mode: os.FileMode(420), modTime: time.Unix(1765870272, 0)} + info := bindataFileInfo{name: "libsui/yao.ts", size: 4338, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1673,7 +1675,7 @@ func publicIndexHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "public/index.html", size: 11, mode: os.FileMode(420), modTime: time.Unix(1765870272, 0)} + info := bindataFileInfo{name: "public/index.html", size: 11, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1693,7 +1695,7 @@ func uiIndexHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "ui/index.html", size: 11, mode: os.FileMode(420), modTime: time.Unix(1765870272, 0)} + info := bindataFileInfo{name: "ui/index.html", size: 11, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1713,7 +1715,7 @@ func yaoAssistantsEntityPackageYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/assistants/entity/package.yao", size: 197, mode: os.FileMode(420), modTime: time.Unix(1765870272, 0)} + info := bindataFileInfo{name: "yao/assistants/entity/package.yao", size: 197, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1733,12 +1735,12 @@ func yaoAssistantsEntityPromptsYml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/assistants/entity/prompts.yml", size: 930, mode: os.FileMode(420), modTime: time.Unix(1765870272, 0)} + info := bindataFileInfo{name: "yao/assistants/entity/prompts.yml", size: 930, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _yaoAssistantsKeywordPackageYao = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2c\x8d\xb1\xaa\xc3\x30\x0c\x45\x77\x7f\xc5\x45\x73\x78\x04\x1e\x5d\xb2\x77\xea\x47\x14\x93\xa8\x10\x8c\x2d\x23\xab\xc4\xa1\xe4\xdf\x8b\xed\xae\xe7\x48\xe7\x7e\x1c\x40\xc9\x47\xa6\x05\xf4\xe0\xf3\x10\xdd\x70\xaf\xa6\x7e\xb5\x5d\x12\x4d\xcd\x6f\x5c\x56\xdd\x73\x07\x0b\xe8\xa7\x11\xc6\x79\xc1\x4b\x25\xc2\xb8\x1a\x56\x49\xc6\xc9\xc6\x9b\x9d\xb9\x67\x0f\xd1\xc0\x3a\x98\xf4\x4a\xa1\x05\x6d\x19\xa0\xe8\xeb\xd3\x24\x70\x67\xb7\x79\x9e\x06\x36\x8e\x99\xd5\xdb\x5b\x5b\x62\xfe\xfb\x77\xc0\xe5\x2e\xf7\x0d\x00\x00\xff\xff\xbc\x6a\x71\x26\xb0\x00\x00\x00") +var _yaoAssistantsKeywordPackageYao = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2c\x8d\x41\x8a\xc3\x30\x0c\x45\xf7\x3e\xc5\x47\xeb\x30\x04\x86\xd9\x64\x3f\xab\x1e\xa2\xb8\xb6\x4a\x43\x6a\x2b\xc8\x0a\x49\x08\xb9\x7b\x89\xdd\xed\x7b\x4f\xfa\x87\x03\x28\xfb\xc4\x34\x80\x6e\xbc\xaf\xa2\x11\xff\x9b\xa9\x0f\x36\x4a\xa6\xee\xf2\x91\x4b\xd0\x71\xae\x60\x00\x7d\x35\xa6\x96\x17\x3c\x55\x12\x8c\x37\x43\x90\x6c\x9c\xad\x9d\xd9\x3e\xd7\xb7\xab\xe8\xc4\xda\xd8\x52\xb8\xd0\x80\x03\x54\xd8\x6b\x78\x5d\x3e\x8e\xc5\x3f\xde\x1c\x09\x67\x6d\xa4\x2e\xd5\xcc\x01\x00\x25\xbf\xdd\x4d\x26\xae\xec\xaf\xef\xbb\x86\x8d\xd3\xcc\xea\x6d\xd1\x6b\xa6\xff\xf9\x75\xc0\xe9\x4e\xf7\x09\x00\x00\xff\xff\x9a\x4e\x35\xed\xd4\x00\x00\x00") func yaoAssistantsKeywordPackageYaoBytes() ([]byte, error) { return bindataRead( @@ -1753,12 +1755,12 @@ func yaoAssistantsKeywordPackageYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/assistants/keyword/package.yao", size: 176, mode: os.FileMode(420), modTime: time.Unix(1765870272, 0)} + info := bindataFileInfo{name: "yao/assistants/keyword/package.yao", size: 212, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _yaoAssistantsKeywordPromptsYml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x64\x52\xc1\x8e\xd3\x40\x0c\xbd\xf7\x2b\x9e\xba\xd7\x36\x52\x17\xed\xa5\xb7\x1e\x00\x2d\x08\x58\x2d\x27\x84\x90\x3a\x24\x6e\x62\x3a\xb1\x23\x8f\xd3\x6e\x16\xf8\x77\x94\x69\x93\x1e\xb8\x44\x19\xfb\x3d\xbf\xf7\xc6\x73\x87\x8f\x34\x9c\xd5\x2a\xbc\x7d\x71\x0b\xa5\xb3\x0a\x76\x35\x89\xe3\xc9\xb4\xed\x3c\x2d\xd6\x30\x8d\xb4\x45\x1a\x92\x53\xbb\x00\x4a\x15\x27\xf1\x2d\xfe\x2c\x00\xe0\x9b\xf6\x08\x46\x08\x38\x5e\x47\xd1\x6d\x54\xea\xa8\xe4\x10\x39\x79\x31\x02\x0d\x1e\xd2\x11\x9c\xe0\x3a\xc1\x60\x14\xe9\x14\xc4\x27\x7e\xc2\xc1\xb4\x85\x37\x84\xce\xf4\xc4\x15\x55\x70\x7a\xf1\x62\x91\xf5\xee\xee\xf0\x28\xc9\xad\xcf\x0a\x29\xd7\x36\x05\x76\x12\xe2\xf0\x4a\x99\xc6\xd2\xf5\x9e\x39\x28\x83\xd1\xa1\x8f\x71\xc8\xb8\xfb\x62\xca\x99\x71\xad\x26\x07\xb7\x9d\x9a\x8f\xfa\x41\xaa\xff\xcd\x64\xde\x9b\x02\xcf\xe4\xbd\xc9\xcd\x23\x0b\x3e\x7c\xfd\xf2\x19\x07\xb5\x36\xf8\x6c\xed\x99\x52\xa7\x92\x08\xef\x2e\xf5\xb1\xbc\x8b\xe7\x30\x24\x58\x6e\x55\x38\xb3\x37\x38\x85\xc8\x55\x9e\xb0\xcd\x98\xfd\x7e\xff\x2b\xa9\xe4\xff\xdf\xf9\x0b\x2c\x27\xb1\xe5\x16\xdf\xa7\xc3\x66\xb9\x9a\x1b\xf7\xcb\x15\x8a\xa2\xf8\x91\xf1\x7f\xa7\x39\xb3\x97\xf7\x3d\x57\x14\x59\xe8\x12\x62\x3d\x67\x7f\x58\x6f\x1e\x6e\x49\x2a\xea\x48\x2a\x96\x1a\x2a\xd3\x72\x11\x49\x6a\x6f\xae\xbc\x27\x63\x35\x76\x7e\x25\x88\xf6\x92\x56\xe3\x62\x3a\xb2\xe9\x34\x5e\xdc\x91\x86\x91\x5c\xd2\xf8\x66\x2e\xb4\x47\x29\x63\x5f\x11\x7e\xaa\x37\x48\x2c\x75\x24\x5c\x24\x47\x42\x6a\xd4\x1c\x5d\x63\x21\x51\xc2\xb9\x21\x99\x2f\x7f\xb6\x7b\xe1\x97\xda\xb6\xe3\x5b\x72\xed\x70\xdb\xc9\x1a\x9f\x02\x8b\x07\x96\xbc\x4b\x35\xae\x59\x42\x44\x0c\x52\xf7\xa1\x26\xe8\x21\x37\xae\x89\x16\xff\x02\x00\x00\xff\xff\xd8\xe7\xda\x8e\xeb\x02\x00\x00") +var _yaoAssistantsKeywordPromptsYml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x44\x91\x41\x6f\x13\x31\x10\x85\xef\xf9\x15\x4f\x39\x81\x94\x58\x4a\xa1\x97\xdc\x38\x00\x02\x54\x40\x6d\x39\x21\xa4\xb8\xbb\xd3\xac\x89\x77\xc6\xf2\xcc\x8a\x6e\x81\xff\x5e\xc5\x8e\x93\xdb\x8c\xf6\x7d\xef\xcd\x3e\xaf\x91\x25\xd2\x16\x3a\xab\xd1\xb8\x00\x3a\x61\x23\xb6\x2d\xfe\x2d\x00\xe0\xfd\x93\x65\xdf\x19\x0e\x34\xff\x91\xdc\x2b\x1e\xb3\x8c\x30\x7a\xb2\xa6\x74\x8b\x22\xbc\xf7\x7a\xd8\x96\x69\xe3\xf0\x8e\x7d\x9c\x9f\x09\x81\xd3\x64\x45\x5d\xbe\x5c\xb9\xb3\x5f\x18\x93\x64\xf3\x7c\x71\x2e\x8a\x37\x0e\xb7\x64\x53\x66\x7c\xbe\xfb\xf6\x15\x8f\x92\x47\x5f\xd9\xb7\x0e\x37\xde\xba\xe1\xe4\x19\x3d\xef\x27\xbf\xa7\x1a\x7e\x4b\x9a\x84\x95\xf0\xa1\x00\x78\x55\x68\xe1\x38\xbf\xae\x37\xed\x76\xbb\xdf\x2a\x5c\xe6\xbf\xcb\x16\xb9\xdc\xe2\x67\x5b\x36\xcb\x15\xda\x7c\xb5\x5c\xc1\x39\xf7\xeb\x7f\x63\x6b\xca\xc7\x29\xf4\x14\x03\x93\x56\xd3\xf5\xf9\x6f\xae\xd7\x9b\xeb\x4b\x45\x0f\x5e\xa9\x87\x70\x6b\x08\x91\x78\x6f\xc3\x89\xf9\x9e\x83\xe4\x60\xe1\x99\xc0\x32\xb1\xae\x90\xb2\x24\xca\x6d\x3b\xd0\x7c\x04\x3b\x4a\xa6\x27\xe4\x13\x77\x71\xea\x09\x1a\x78\x1f\x09\x35\xc5\x73\x0f\x1d\x24\x1b\xd2\x90\xbd\x92\x9e\x6f\xaa\xe2\x4e\xc6\x51\x18\x6a\x92\x70\x29\x78\x8d\x2f\xed\xcc\x9b\x1f\x77\xf7\x78\x38\x3e\x12\x6c\x20\xa8\x1f\xe9\x5c\x2b\xbc\xd6\xa2\x17\x2f\x01\x00\x00\xff\xff\x64\x5a\xdf\x11\x21\x02\x00\x00") func yaoAssistantsKeywordPromptsYmlBytes() ([]byte, error) { return bindataRead( @@ -1773,7 +1775,27 @@ func yaoAssistantsKeywordPromptsYml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/assistants/keyword/prompts.yml", size: 747, mode: os.FileMode(420), modTime: time.Unix(1765870272, 0)} + info := bindataFileInfo{name: "yao/assistants/keyword/prompts.yml", size: 545, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _yaoAssistantsKeywordSrcIndexTs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x9c\x56\xdf\x92\xdb\xb4\x17\xbe\xf7\x53\x9c\x9f\xa7\xd3\x9f\x93\x3a\xf6\xb6\xbd\x60\x26\x4b\x5a\x4a\x29\xd3\x42\x59\x3a\xdd\x32\x5c\xc4\x61\x56\x6b\x1f\x6f\x44\x64\xc9\x48\x0a\xbb\x19\x36\x33\x3c\x07\x97\x3c\x07\x4f\xc3\x0b\xf0\x0a\x8c\xfe\xd9\x4a\xb6\xb4\x03\x7b\xb1\x56\xe4\x73\xbe\xef\xfc\xd3\x27\x97\xd3\x69\x02\x53\xf8\x1a\x77\xd7\x42\x36\xf0\xe2\x46\x4b\x52\x6b\x2a\x38\x3c\xbb\x42\xae\x61\x06\x67\x78\xa3\xe1\xa5\x10\x1b\x63\xf7\x86\x48\x85\x0a\x5e\xbf\xfe\x06\x24\xaa\x5e\x70\x85\x40\x78\x03\xe8\xfc\x14\x6c\x1c\x90\x82\x6b\xaa\xd7\x80\x52\x0a\x09\x5a\x30\x94\x84\xd7\x98\xc0\xb4\x4c\x92\xb2\x84\xcf\xb4\x9a\x71\x51\xaf\xb1\xde\x24\x89\x0f\xc1\xf2\xac\x85\xd8\xc0\x0c\x7a\x29\x6a\x54\x86\xc9\xe3\x05\x02\x13\x58\x20\x36\x4e\xdf\x19\x9b\x1f\x95\xe0\x85\x8d\x0c\x5a\x21\xa1\x25\x5b\xa6\x67\x9e\x54\xc3\x57\xe7\xdf\x9e\x41\x4f\xa4\xa2\xfc\xca\x06\xd0\x6e\xb9\x03\x32\x8c\x59\x02\x50\xeb\x9b\x39\x10\x93\x6e\xf1\x5c\x70\x8d\x37\x3a\x4f\x00\x7a\xb2\x63\x82\x34\xe1\x8d\x31\x36\x55\x78\xe3\xb6\x93\xc9\xf1\x8b\xb7\xa1\x1e\xb7\xc0\xb7\x8c\xc1\x2f\x06\x59\x70\xa5\xa1\x16\x5d\xcf\xd0\x52\x2e\x02\x6c\x31\x6e\x9e\x26\x09\x40\x59\xc2\x99\x88\x2c\x73\x90\xa8\xb7\x92\x3b\x2c\x93\x96\xd2\x84\x37\x44\x36\xb0\x26\xbc\x61\x36\x19\xa0\x2d\x64\xff\x8b\xe0\x6f\x6f\x21\xfa\x59\xd4\x26\x1b\xae\x27\x36\x16\x88\x11\x4f\x13\x80\xbd\xe7\x7d\x8b\x9d\xf8\x19\xa1\x23\x72\xd3\x88\x6b\x0e\xb5\x68\x10\x2e\x99\xa8\x37\x06\xbf\x97\xa8\x90\xeb\x04\x80\xa1\x49\xc5\x22\xc2\x02\xee\xd2\x14\x5a\xd2\x2e\x9b\x9c\xfa\xb8\xc2\xae\xd2\x44\x6a\xf5\x3d\xd5\xeb\x2c\xbd\xb8\xb8\x30\xcd\x4a\x27\x21\xa4\x18\xcf\x9b\x33\x5a\x63\xf6\x89\x85\xd9\x03\x32\x85\x1f\x42\xfb\x38\xd2\x63\x87\x74\x14\x14\xf2\xe6\xdf\x80\x9c\xe4\x30\x1b\x81\xee\x5a\x85\xcc\x5d\x41\xdf\xc9\x1d\x68\x61\x67\x0e\xdd\xf8\xb5\x52\x74\xf1\x18\x78\x3f\x5f\xd4\x70\x66\xe6\xa0\xb4\xa4\xfc\x6a\xb9\x82\x05\x2c\x57\x16\x4e\xcb\x9d\x8f\xad\x2c\xcd\xb4\x7f\x64\xd8\xfd\x9c\x43\x66\x87\x04\x15\x5c\x4a\xb1\x41\x6e\xa3\xc8\xed\xff\xe7\x39\xa0\xae\x8b\x49\xc8\x57\x39\x27\x6c\x60\x01\x6f\xdc\xb1\xcb\xd2\x91\x24\xcd\x61\x98\x22\xa2\x7c\x28\x30\x84\xfc\x74\x8c\xf9\xd4\xbe\xda\xfb\xf1\xb7\xc1\xbb\x9a\x7b\xf8\xfb\xf7\xe1\x99\x94\x64\x57\x50\x65\x9f\x7e\xbf\x08\x50\x43\x13\x46\x74\x7b\x5c\x0e\x8c\x8a\x96\x32\x8d\x32\xf3\x86\x00\xd9\x66\x02\x8b\x27\xa0\x77\x3d\x8a\x16\x36\xb0\x58\x2c\x20\x75\x21\xa5\x86\x72\xe3\x7b\x53\x30\xe4\x57\x7a\x0d\x4f\xe0\xc4\xfb\x4e\x7c\xc0\x76\xce\x6a\xa2\xeb\x35\x64\x38\x19\x8b\xfd\xaa\x3d\xa8\x35\xa1\x4c\xe5\xb6\x1d\x5a\x04\x35\x1a\x03\xb5\x0d\x36\xca\x91\x1c\xc5\xef\x2d\xbd\xbe\xaa\x2f\xa5\xe8\xde\x19\xd9\x09\x45\x8d\x0f\xe2\xab\x16\x94\xa6\x8c\x01\x17\x03\x84\xa3\x0c\xea\xc7\xaf\x1c\x93\x24\xd7\x81\xcd\x54\x78\xa8\x8e\x4f\xd2\x14\xe1\x24\xa4\xf2\x1f\x83\x79\xeb\xc4\xc2\x37\x2f\x80\x24\x83\x8a\x38\xf0\x86\x68\x32\xbf\xd3\xb7\xf9\x18\xbe\xab\xb1\x79\xec\x4f\x93\xfd\x20\xf6\x2f\xde\x5b\xc0\x9e\x11\xca\x6d\x62\x70\xbd\xf6\x53\x3b\x8c\xb4\xed\x80\xf1\x7d\xe9\x47\xbb\x15\xb2\x23\x5a\x01\xa3\x1b\x9c\x9b\x17\x33\x78\x2e\xba\x8e\xcc\x14\xf6\x44\x12\x8d\xcd\x1c\x52\x4f\xf0\x30\x0f\x54\x8f\x86\xd5\xe3\xd4\x39\xbd\xa6\x1c\xdf\xeb\x53\xf1\xe0\x33\xac\x82\xcf\xe7\x5b\x66\x4e\x6e\x2f\x28\xd7\x6a\x0e\xe9\x0c\x46\xa7\x61\xfd\xc8\x1b\x9f\x6d\xbb\x4b\x94\x16\xfa\x61\x11\x19\x3e\x2a\x0e\x2c\xa3\x9b\xe9\x9f\x1a\x65\x4a\x13\x4e\xdc\x24\x92\x8b\xf1\xae\xf9\x90\x96\x8c\x5a\x5f\x8b\xae\x13\xdc\x68\x7b\x4b\x6f\x50\x95\x6a\xdb\xda\x45\x50\x79\x86\x84\x5b\x45\x18\x46\xba\x90\xd8\x33\x52\x63\x56\xfe\xb0\xac\x54\x75\xbe\x9a\x3e\x1d\x34\x60\x59\xa9\xf9\x5f\x7f\xfc\xb6\x9a\x56\xcb\xa7\x25\xcd\x21\x4d\x27\x11\x57\x3a\x84\x94\x7a\xc2\x23\xc0\x6a\xe5\x11\xef\x95\xc7\xbe\x5a\x12\x6a\xae\x3a\x58\x39\x9f\xbb\x3a\xcb\x4c\xf3\x2e\x77\x33\xf3\x8c\x3e\x12\x86\x7a\x98\x7d\x33\xfa\x3e\xa5\x42\xf5\x8c\xea\xac\x5c\x56\xbc\x92\xab\x07\xa5\xc3\x32\x42\x9a\x8d\xf6\x20\x5a\xe7\x17\xa9\x81\x0f\xe8\x32\xee\x7b\x0e\xdc\x76\x56\xe5\xf0\xd3\x56\x68\x5b\xbe\x03\x45\x87\x85\xc5\xf1\xa7\xe3\xa8\x84\xb3\x6a\x5a\xfd\xf9\xeb\xef\x55\x53\x15\xab\x07\x77\x32\x77\x44\xaa\xf4\x0c\xef\x81\x48\xff\x7f\xb1\x7a\x70\xeb\x1e\xf7\xca\xab\x63\x80\x28\xa2\xd8\x2f\xaf\xd4\x87\xea\x6c\x06\x83\x04\xa7\xa8\xda\xb6\x06\xe7\x1b\xda\x03\x76\xbd\xde\x81\xfd\xaa\x13\xc0\x84\xfd\x0c\x39\x50\xa1\x48\x69\xad\x00\x1f\xee\x7e\x0a\x0f\x4f\x4e\x46\xa5\x37\xa8\xa6\x23\x70\xb9\x73\xdc\x06\xc9\xc8\x11\xa1\x5c\x41\xb7\x65\x9a\xf6\x2c\x14\x30\x26\xa1\xbc\x66\xdb\x06\x55\x96\xe6\x69\x74\x73\x44\x57\x9a\x36\x6d\x0f\xe6\xae\xed\xc6\xb6\xe8\x48\x9f\x65\xbd\xbd\x35\x7a\x9f\xa2\xbf\x0a\xcc\x5f\x34\x0a\x06\xc3\x8c\x82\xc5\x8a\x29\x86\x6b\x4d\x1f\xe5\x1a\x6f\x1d\x25\x7a\x28\x90\x45\xbf\x55\x6b\x8b\x10\x51\xbb\xbb\xe8\x70\xe5\xbf\x80\x46\x94\x43\x04\xff\x6b\x00\xd9\x8f\x57\x9a\x3f\x23\x5f\x60\xb3\xed\x19\xad\x89\xc6\x51\xbb\x97\x45\x51\x70\xbc\x86\x73\xd4\xc3\xdd\x31\x59\x19\x7d\xfe\x3b\x00\x00\xff\xff\x21\xb8\xdb\xfa\x0f\x0c\x00\x00") + +func yaoAssistantsKeywordSrcIndexTsBytes() ([]byte, error) { + return bindataRead( + _yaoAssistantsKeywordSrcIndexTs, + "yao/assistants/keyword/src/index.ts", + ) +} + +func yaoAssistantsKeywordSrcIndexTs() (*asset, error) { + bytes, err := yaoAssistantsKeywordSrcIndexTsBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "yao/assistants/keyword/src/index.ts", size: 3087, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1793,7 +1815,7 @@ func yaoAssistantsNeedsearchPackageYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/assistants/needsearch/package.yao", size: 178, mode: os.FileMode(420), modTime: time.Unix(1765870272, 0)} + info := bindataFileInfo{name: "yao/assistants/needsearch/package.yao", size: 178, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1813,12 +1835,32 @@ func yaoAssistantsNeedsearchPromptsYml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/assistants/needsearch/prompts.yml", size: 955, mode: os.FileMode(420), modTime: time.Unix(1765870272, 0)} + info := bindataFileInfo{name: "yao/assistants/needsearch/prompts.yml", size: 955, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _yaoAssistantsPromptPackageYao = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x34\xce\x31\x0e\xc2\x30\x0c\x85\xe1\x3d\xa7\x78\xca\xcc\xc0\xdc\x4b\xc0\xc0\x05\xaa\xf2\x2a\x59\x28\x89\xb1\x5d\x10\xa0\xde\x1d\x25\x88\xd9\xbf\x3e\xbf\x4f\x02\x72\x9d\x0b\xf3\x84\x7c\xb6\x56\x34\x70\xd2\x90\x22\x6f\x5a\x3e\xf4\xeb\x95\xbe\x98\x68\x48\xab\x3d\xba\xd8\x5c\x7d\x6d\x56\xb0\x39\x0d\xc6\xfb\x26\xc6\xc2\x1a\x0e\xa9\xd1\xc0\x75\xe5\x12\xf2\x20\x74\x78\xfe\x63\xe2\xa5\xe3\xc9\xb3\xd9\xed\x4f\xb7\xa1\x7a\x9e\xd0\x77\xf4\x88\x45\x69\x73\x6c\xd6\xdb\x63\x02\xf6\xb4\xa7\x6f\x00\x00\x00\xff\xff\xad\x9b\x26\xd0\xa5\x00\x00\x00") +var _yaoAssistantsNeedsearchSrcIndexTs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x56\x4d\x6f\x1b\x37\x10\xbd\xef\xaf\x78\xdd\x83\xb1\x6b\xc8\x2b\x17\x45\x50\x40\xc2\x46\x4d\xd3\x16\x6d\xe1\xb8\x41\x92\xa2\x87\x20\x88\xa9\xdd\x91\xc5\x8a\x22\x05\x92\xaa\x64\xd4\xfe\xef\x05\x3f\x56\x5a\x4a\x96\x8c\xe6\x10\x4b\x1c\xce\x9b\x37\xc3\x79\x33\x1a\x5e\x5e\x66\xb8\xc4\x2d\x51\x8b\x8f\xc4\x74\x33\xc7\x9b\x7b\x92\x16\x57\xb8\xa5\xad\xc5\xaf\x4a\x2d\xdc\x85\xf7\x4c\x1b\x32\xb8\xb9\x79\x07\x4d\x66\xa5\xa4\x21\x30\xd9\x82\xb6\x56\xb3\xc6\x1a\x98\xe0\xcc\xa5\x75\xde\x1b\x6e\xe7\x20\xad\x95\x86\x55\x82\x34\x93\x0d\x65\xb8\x1c\x66\xd9\x70\x88\x1f\xac\xb9\x92\xaa\x99\x53\xb3\xc8\x32\xe7\xa0\x67\xac\xa1\x18\xfe\x03\x99\xb5\xb0\xf8\x37\x03\x24\x51\xfb\x35\xe0\x8e\x30\x55\x4a\x10\x93\xe3\x0c\x31\xd4\x57\xfb\xb0\x22\x33\x82\xb1\x9a\xcb\xfb\xcf\x5f\x9c\xa5\x51\x72\xc6\x5b\x92\x0d\x8d\x20\xd7\xcb\x29\xe9\x71\xf6\x94\x65\xbb\x24\xb7\x16\x73\xa5\x16\xb8\xc2\x4a\xab\x86\x8c\x4b\x29\x25\xde\x25\xe7\xee\xff\xe9\xcc\x7f\x1b\x25\x2b\x9f\x3d\x66\x4a\x63\xc6\xd6\xc2\x5e\xc5\x9c\x2c\x7e\xff\xf8\xc7\x2d\x56\x4c\x1b\x2e\xef\x7d\x7e\xb3\xb5\x6c\x2c\x57\xd2\x07\x2b\x1c\x25\xbb\x1d\x81\xb9\x92\x56\x6f\x95\xb4\xb4\xb5\x83\x0c\x58\xb1\x07\xa1\x58\xdb\x59\xdc\x65\x57\xe9\xf7\xe1\x38\x2b\x0f\x0d\x1f\xba\x9a\x3f\x42\xae\x85\xf0\xe5\x69\x94\x34\x16\x8d\x5a\xae\x04\xf9\x90\x75\x07\x5b\xed\x0f\xc7\x59\x06\x0c\x87\xb8\x55\xbd\x9b\x03\x68\xb2\x6b\x2d\x03\x96\x4b\xcb\x58\x26\x5b\xa6\x5b\xcc\x99\x6c\x85\x4f\x06\x7c\x86\xe2\x9b\x1e\xfc\xe3\x23\x7a\x5f\xab\x46\xf9\x8a\x95\x9e\x0b\xfa\x88\xee\x25\x9e\x62\xdc\x0f\xb4\x54\xff\x10\x96\x4c\x2f\x5a\xb5\x91\x68\x54\x4b\x98\x0a\xd5\x2c\x1c\xfe\x4a\x93\x21\x69\x33\x40\x90\x4b\x25\xbc\x41\x8d\xe3\x30\x95\xd5\x7c\x59\x94\xe3\xc8\xab\x3b\x35\x96\x69\x6b\xfe\xe2\x76\x5e\xe4\x77\x77\x77\xee\xb1\xf2\xb2\xa3\xd4\xc7\x8b\xd7\x05\x6f\xa8\xf8\xbe\x1c\xf7\xa8\x45\x37\xc7\x19\x24\x0c\x9d\xc3\x7f\x19\xfb\xbb\x43\x6c\x5f\x8b\x94\x34\xc9\xf6\xff\x40\x5e\x0f\x70\x95\xc2\x5a\xcd\xb8\x7b\xa4\x1e\xfe\xb1\x73\x57\xb0\xf0\x0e\x3f\x91\xef\x5c\xd7\xdf\x6b\xd1\x15\x3c\x7c\x19\xa5\xca\xab\x23\x9d\x44\x7d\x33\x26\x0c\x0d\xfc\x79\xaa\xbe\xcf\x5f\x06\x1d\xf9\x9d\xf2\xae\xdd\xd1\x93\x8f\x6c\xf5\x43\x84\x1b\x0e\x9d\x9e\x5e\x90\xd3\x4e\x49\xe8\xda\xdb\x9d\x50\x8b\x1a\xef\x83\x60\x8b\x7c\x8f\x90\x0f\xb0\x6b\x42\x66\x62\x9c\x84\xf8\x24\x99\x1b\x87\xec\x27\xe9\xf0\x48\xd3\x98\xec\x27\x88\x33\x3c\x45\xe5\xf9\xac\xc2\x73\x06\x6a\xe5\x2e\x6e\xa8\x66\xd5\x0b\x8f\x1a\x3f\x86\xf0\xf1\x72\xdf\x58\x8e\x53\xbf\x3e\x33\xd4\x78\xa3\x35\x7b\xa8\xb8\xf1\x7f\x3b\xf7\xfe\x9d\x32\xba\x03\x13\x3c\x63\xae\x66\x5c\x58\xd2\xc5\xee\x96\xfb\x57\xd8\x12\xf5\xeb\xe4\x08\x70\xd7\xd5\x0c\x16\x75\x5d\x23\x0f\x15\xc9\x71\x71\x71\x70\xed\x73\xbe\xa1\x69\x3e\x40\xbe\xf0\xff\xb7\xd3\xfc\x4b\xc5\x65\x23\xd6\x2d\x99\xc2\x56\x56\xdd\xa8\x0d\xe9\xb7\xcc\x50\x51\x96\x3d\xdf\xfd\x67\xd7\x2d\x07\x49\xef\xeb\x8d\x3a\x3b\x20\x14\x93\xea\x5f\x71\x04\xc3\xab\xe4\xbd\x08\x13\xbc\x63\x76\x5e\x2d\xb9\x2c\xbe\x1d\xc4\xcf\x6c\xeb\x74\x73\x04\x91\x30\x1b\xe1\xba\x7a\x15\x9f\xd7\xcb\xbf\x61\xb6\x99\xa3\xa0\x72\xdf\xb3\xbf\xcd\x92\x96\x65\x5c\x98\x81\xef\x6a\xab\xba\xdd\x87\x99\x56\x4b\xb8\xc9\x9e\xed\x33\x43\xdd\x99\x7f\xd1\x6a\xf9\xc9\x2d\x83\xae\x57\xd3\xf1\xe8\xa7\x66\xec\xf2\x9d\x38\xe3\x30\x0d\x2c\x5a\x66\xd9\x28\xda\xa2\xb2\xf6\x3b\xed\xe7\xc8\x21\xdd\x62\x9e\xd1\x4a\x30\x2e\x3d\x2f\x6c\xe6\x24\x93\x5d\x15\x32\x49\x37\xd6\x21\x5f\xe7\xd9\x29\xa4\x1c\x1d\xaf\xe7\x20\x50\xe1\x5e\x1d\xb5\x8f\x93\x36\x41\x37\x7a\xde\xba\x45\xef\xd5\x4e\xdb\x95\xe0\x0d\xb7\xe0\xb2\xe5\x0d\xb3\x4a\x9b\x1d\x8e\x53\x46\xfc\x01\x12\x3a\xc1\x03\xef\x3b\x2c\xb7\x7a\x4d\x79\x89\xc7\xc7\x67\xad\xce\xfd\xb4\x35\x54\xe7\xb4\xdd\x75\xf6\x49\xe3\xe2\x8c\xad\x9d\xe6\x21\xcf\x98\x84\x3a\x9b\x82\x9f\xa2\x67\x72\x50\x78\x89\xa8\x54\xa1\x52\xf9\xae\xba\x07\x0d\xe0\xb5\xbf\xe3\x13\x0e\x3f\xa5\x3f\x94\x50\x47\x1d\xba\x21\xf6\x6c\x25\xca\xbe\x63\xb5\x5a\x9b\x79\x34\x9c\xf2\x8a\x25\x3a\x2e\x9d\x54\x1b\x41\xed\x3d\xe5\x51\x78\xc7\xb8\x8b\x33\xb0\xed\x09\x58\xa7\x88\x29\x33\x67\x50\x77\xef\xe2\x57\x9f\x25\xbd\xe4\x92\xfa\x9b\x21\xe9\x3b\xd4\xfb\x97\x9b\x84\x5d\x87\x51\xbf\x23\x2f\x2e\x92\x18\x82\xe4\xbd\x9d\xe3\x35\xae\x7d\x8c\x44\xad\xc9\xda\x74\x5f\x9e\xdb\x9a\x3e\xe8\xa4\x8f\x89\x13\xab\xb4\x7a\x35\x70\x39\xdc\xa8\x4d\xef\xdc\x8b\xc9\x0b\x3b\x6a\x96\x87\xdf\x2f\x6e\x30\xfc\x17\x00\x00\xff\xff\x71\xd9\x90\x2f\xd1\x0b\x00\x00") + +func yaoAssistantsNeedsearchSrcIndexTsBytes() ([]byte, error) { + return bindataRead( + _yaoAssistantsNeedsearchSrcIndexTs, + "yao/assistants/needsearch/src/index.ts", + ) +} + +func yaoAssistantsNeedsearchSrcIndexTs() (*asset, error) { + bytes, err := yaoAssistantsNeedsearchSrcIndexTsBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "yao/assistants/needsearch/src/index.ts", size: 3025, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _yaoAssistantsPromptPackageYao = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x34\xcd\x3b\x6e\xc3\x30\x10\x84\xe1\x9e\xa7\x18\xb0\x4e\x91\x5a\x97\x48\x8a\x5c\x80\x91\x46\xc8\x22\xe1\x23\xbb\x4b\x1b\xb6\xa0\xbb\x1b\xa4\xe1\x7a\x7e\x7c\x73\x04\x20\x96\x94\x19\x17\xc4\x4f\xad\xb9\x39\x3e\x9a\x4b\x96\x3b\x35\xbe\x8d\x75\xa3\xad\x2a\xcd\xa5\x96\x11\x7d\x69\x2a\xb6\x57\xcd\xe8\x46\x85\xf2\xbf\x8b\x32\xb3\xb8\x41\x8a\x57\x70\xdf\xb9\xba\x5c\x88\x36\x3d\x7b\x32\x7e\x6b\xf3\xe4\x5a\xf5\xf7\x45\x77\xa3\xc5\x05\x07\xa2\x31\xe9\xfa\x33\xf6\x4d\x2c\x7d\xff\x71\x8b\x38\x67\x53\xe7\xf3\xcc\x02\x30\x20\xe6\x46\x4d\xde\x75\x78\xef\x01\x38\xc3\x19\x1e\x01\x00\x00\xff\xff\x59\xf1\x38\x68\xc9\x00\x00\x00") func yaoAssistantsPromptPackageYaoBytes() ([]byte, error) { return bindataRead( @@ -1833,7 +1875,7 @@ func yaoAssistantsPromptPackageYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/assistants/prompt/package.yao", size: 165, mode: os.FileMode(420), modTime: time.Unix(1765870272, 0)} + info := bindataFileInfo{name: "yao/assistants/prompt/package.yao", size: 201, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1853,12 +1895,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/assistants/prompt/prompts.yml", size: 621, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _yaoAssistantsQuerydslPackageYao = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x3c\x8d\xcd\xaa\xc2\x30\x10\x85\xf7\x79\x8a\x43\xd6\xe5\x12\xba\xec\xfa\x82\x1b\x37\xe2\x03\xc8\xa0\x63\x29\x6d\x32\x65\x3a\x41\x8b\xf4\xdd\x25\x69\x71\x7b\x7e\xbe\xef\xe3\x00\x9f\x28\xb2\xef\xe0\x2f\x99\x75\xfd\xbf\x9e\x71\xe2\xc4\x4a\x26\xea\x9b\xd2\x3f\x78\xb9\xeb\x30\xdb\x20\xa9\xcc\x8e\x96\xf1\xdb\x3f\x55\x22\x12\x59\x56\x9a\x30\x51\xea\x33\xf5\xbc\x7f\x6d\x9d\x2b\xfb\x25\x3a\xf2\xc1\x93\x8a\x5a\x7c\x87\xa2\x07\x7c\xa4\xf7\xcd\x64\xe4\x9a\xb5\x21\x84\x66\xcf\x8d\xe3\x5c\x54\x59\x0b\x23\xfc\xb5\x0e\xd8\xdc\xe6\xbe\x01\x00\x00\xff\xff\x37\x66\x04\x78\xb6\x00\x00\x00") +var _yaoAssistantsQuerydslPackageYao = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x3c\x8e\xc1\x8a\x84\x30\x10\x44\xef\xf9\x8a\xa2\xcf\xb2\x04\x8f\x9e\x17\xf6\xb2\x97\x65\x3f\x60\xe9\xd5\x1e\x47\x34\x89\x74\x12\x66\x44\xfc\xf7\x21\x51\xe6\x5a\xef\x75\x55\xef\x06\x20\xcf\x4e\xa8\x03\xfd\x64\xd1\xed\xf3\xf7\x1b\x5f\xe2\x45\x39\x05\xa5\xa6\xf0\x41\x62\xaf\xd3\x9a\xa6\xe0\x8b\x76\x51\xc1\xdb\xbf\x69\x70\xf0\x9c\xb2\xf2\x82\x85\xfd\x98\x79\x94\xf3\x36\x6d\x6b\xed\x7e\x04\x9d\xe5\xea\xcb\x51\x22\x75\xd8\x41\x51\x58\xfb\x7b\xe1\xc3\x14\xf9\x7f\x91\x81\x70\x54\x27\xd4\xb9\xaa\x19\x00\x20\xc7\xcf\xbf\x14\x66\xa9\x59\x6b\xad\x6d\xce\x3c\x89\x5b\xcb\x3b\x59\xcb\x8e\xfd\x68\x0d\x70\x98\xc3\xbc\x02\x00\x00\xff\xff\x22\xe8\xba\x93\xda\x00\x00\x00") func yaoAssistantsQuerydslPackageYaoBytes() ([]byte, error) { return bindataRead( @@ -1873,7 +1915,7 @@ func yaoAssistantsQuerydslPackageYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/assistants/querydsl/package.yao", size: 182, mode: os.FileMode(420), modTime: time.Unix(1765870272, 0)} + info := bindataFileInfo{name: "yao/assistants/querydsl/package.yao", size: 218, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1893,12 +1935,12 @@ func yaoAssistantsQuerydslPromptsYml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/assistants/querydsl/prompts.yml", size: 1155, mode: os.FileMode(420), modTime: time.Unix(1765870272, 0)} + info := bindataFileInfo{name: "yao/assistants/querydsl/prompts.yml", size: 1155, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _yaoAssistantsTitlePackageYao = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2c\xcd\xc1\x0d\x02\x31\x0c\x04\xc0\x7f\xaa\x58\xe5\xcd\x83\xf7\x35\x40\x03\x34\x10\x85\x45\x8a\xe0\xe2\xc8\x36\x20\x84\xae\x77\xe4\xbb\x7c\xbd\xb3\xeb\x5f\x02\x72\x2f\x2b\xf3\x82\x7c\x6d\xfe\x24\x2e\xec\xd4\xe2\xa2\xf9\x14\xe1\x8d\x56\xb5\x0d\x6f\xd2\xc3\xcc\x94\xa8\xd2\x6b\x33\xc2\xa3\x64\xb8\x8b\xc6\xe9\x4d\xb5\x12\xd6\x8e\xb6\x7f\xc7\x3e\xfd\x11\x7d\x70\x2e\xca\x38\xc0\x82\xf8\x1e\x88\xeb\x88\xd1\x97\x86\x3d\x27\x60\x4b\x5b\xfa\x07\x00\x00\xff\xff\x31\x62\xb0\x98\x9b\x00\x00\x00") +var _yaoAssistantsTitlePackageYao = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2c\x8e\xc1\x0d\xc2\x30\x10\x04\xff\xae\x62\x75\x6f\x1e\xbc\xd3\x00\x0d\xd0\x80\x71\x16\x61\x91\xd8\xd6\x9d\x03\x42\x51\x7a\x47\x97\xe4\xeb\x99\x1d\xdf\x1a\x00\x29\x71\xa6\x0c\x90\x7b\xee\x13\x71\x63\xa1\xc6\x5e\x55\x2e\x0e\x47\x5a\xd2\xdc\x7a\xae\xc5\x9d\x93\x12\xa9\x96\x94\x8d\xe8\x3e\x32\x3c\xab\xfa\xd3\x87\x6a\xd1\x5d\x3b\xd6\xfd\xd7\xf6\xf4\xb7\xea\x9b\x67\x71\x31\x9a\x0c\x58\x21\xc6\xa8\xe9\xe5\x7c\xcc\x16\x1f\x13\x47\xc1\xb6\x3b\xb5\x1d\x91\x01\x7e\xa1\x87\x38\x37\xff\x78\x51\xef\x5d\x03\xb0\x85\x2d\xfc\x03\x00\x00\xff\xff\x63\x83\x1b\x30\xbf\x00\x00\x00") func yaoAssistantsTitlePackageYaoBytes() ([]byte, error) { return bindataRead( @@ -1913,12 +1955,12 @@ func yaoAssistantsTitlePackageYao() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/assistants/title/package.yao", size: 155, mode: os.FileMode(420), modTime: time.Unix(1765870272, 0)} + info := bindataFileInfo{name: "yao/assistants/title/package.yao", size: 191, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _yaoAssistantsTitlePromptsYml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x54\x92\x3d\x8f\xd3\x4e\x10\xc6\xfb\x7c\x8a\x47\xa9\x93\xe8\x9f\xfb\x73\x14\x69\x10\x98\x13\x08\xee\x40\x4a\xa0\xa0\xdc\xac\x27\xf6\x28\xf6\xae\xe5\x9d\xbc\x18\x51\xf1\x7a\x82\x0a\xa4\x14\xe8\x68\x81\x8e\x43\x14\x77\x48\xa7\xfb\x32\x28\x0e\xf9\x18\xc8\x5e\x07\x1d\x9d\xf5\xcc\xef\xf1\x3c\x33\xb3\x5d\xe4\x36\xa1\x01\x5c\xe1\x84\xd2\x16\xa0\xad\x11\x32\x32\xc0\xb3\x16\x00\xdc\x21\x43\xb9\x12\xaa\x74\xcd\x8e\x3a\x48\x49\x19\x36\xd1\x64\x96\x40\x58\x12\x72\x98\xd8\x1c\x3a\x56\x52\x31\x73\xca\x9d\x12\xb6\xc6\xf5\x5a\xf5\x0f\x1e\x29\x37\x1d\xd4\x5f\xfd\x1e\x6e\x1a\x95\x14\x4f\x69\xd7\x04\xca\x84\xe0\x90\x8c\xf0\xa4\x40\xaa\xd8\x40\x6c\xc6\xba\xc6\xf7\x7a\x08\x72\xaa\x5a\x8f\x73\xa6\x49\x07\x21\x39\x9d\x73\x26\x3c\x27\xdf\xb9\xc6\xfe\xef\xe1\x48\x89\x8e\xc1\x26\x9b\x09\x12\x65\xa2\x99\x8a\x7c\xed\x5a\x0f\x43\x92\x59\x6e\xf0\xf0\xc1\xe1\x13\x48\xdc\x18\x3b\x30\x16\xb4\xcc\x12\x65\xea\xac\x3e\xe9\x21\x99\x48\x62\x9f\xb5\x8b\x03\x13\x25\xec\xe2\x01\xf6\xba\xd7\xb1\xb0\x79\xe8\x3a\xe8\xef\x77\xf7\xff\xab\x46\xcd\x5d\x43\x05\xf7\xee\x57\x44\xff\x5f\xf5\x88\x97\x14\x0e\x90\xaa\x25\xfe\xf2\x75\x69\x24\x45\x42\xbb\x0e\xb7\x08\x2e\x23\xcd\x13\xd6\x1d\xa8\xb9\xe5\x10\x51\xb5\x6d\xd6\xcd\x62\x1b\xee\xb1\x23\x28\x5d\x8f\x3d\xb7\xac\xa9\x91\x47\xa2\x72\xc1\x82\x25\xc6\x94\x8a\x2b\x8b\xeb\x62\x44\xd5\x7a\x35\x41\x2b\x47\xf5\x79\x9a\x69\x7c\x8a\x83\xa5\x4a\xb3\x84\x9c\x0f\xd2\xbe\x6b\x17\x10\x8b\xb1\x9a\x56\x87\xb1\x53\x26\x77\xa3\x8d\x5f\xaf\x3f\x20\x88\xad\xb6\x49\x75\x82\x20\xe6\x0c\x41\x5d\xc4\x90\x34\x67\x3e\x45\x7b\x7b\x7a\xbe\x59\x7d\x2c\xbf\x3c\x5f\x5f\xae\xca\xe3\xb3\xf5\xe5\xa7\xcd\xc9\x8f\xf2\xf3\x1b\xef\x2f\xcf\xbf\x96\xaf\xde\x95\x6f\x4f\xbc\xe8\x01\x6f\xbc\x4d\xe3\x59\x84\xb4\xc0\x90\x94\xae\x5e\x4e\x9a\x59\x43\x46\xbc\xd1\x8b\xc1\x4e\x44\x4d\x47\x6c\x22\x6f\x2e\x7f\x7e\xdb\x1c\xbf\xdf\x7e\x7f\xb1\x3d\x5d\xd5\xe8\xef\x8b\x97\xeb\x8b\xb3\x2b\x5e\x2f\x78\xa2\xf5\x27\x00\x00\xff\xff\x0e\xae\x0f\x02\xe4\x02\x00\x00") +var _yaoAssistantsTitlePromptsYml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\x92\x3f\x6f\x13\x4b\x14\xc5\x7b\x7f\x8a\xa3\x54\xef\x49\xb6\xdf\x4b\x50\x28\xdc\x20\x58\x22\x20\x7f\xa5\x38\x29\x28\xc7\xb3\xd7\xbb\x23\xef\xce\x2c\x33\x77\xfd\x07\x51\xf1\x47\x44\x50\x51\xa4\x40\xa1\x05\x3a\x82\x28\x12\xa4\x28\xdf\x26\x1b\xf2\x31\xd0\xcc\xd8\x28\x96\xe8\x66\xf6\x9e\xfb\xbb\x67\xe7\xdc\x0e\xac\x29\xa8\x07\x37\x73\x4c\x65\x0b\x90\x46\x33\x69\xee\xe1\x45\x0b\x00\x1e\x91\x26\x2b\x98\xfc\x77\xa9\x1c\xb5\x51\x92\xd0\x4a\x67\xc3\xba\x00\x2b\x2e\xc8\x61\x68\x2c\x64\x2e\xd8\x6b\xc6\x64\x9d\x60\x65\xb4\xeb\xb6\x02\xe0\x40\xb8\x51\x2f\x9c\x56\xbb\xb8\xaf\x45\x31\x7b\x4e\x8b\x21\x10\x3a\x85\x4a\x49\xb3\x1a\xce\x50\x0a\xa5\xc1\xa6\x52\x32\xc8\xd7\xba\x48\x2c\xf9\xd1\x03\xab\x68\xd8\x46\x4a\x4e\x5a\x55\xb1\x1a\x53\x9c\x1c\x64\x77\xba\x38\xf0\x17\xec\x1c\xf6\x0f\x30\x20\x78\x48\x4e\x70\xa2\x24\x14\x42\x67\xb5\xc8\x08\xc2\xa1\x76\x64\xa1\x74\x55\x73\x34\xb6\x57\x73\x55\x73\xb4\xd6\xc1\x3e\x71\x6d\x35\xf6\x76\xb7\x9f\x86\xf6\xaa\x08\x6e\x68\xca\xb7\x66\x75\xb0\xbb\x87\x52\xd8\x51\x6a\x26\xba\xed\x2f\xd2\xa4\x84\x41\x61\xe4\xc8\x85\xfb\xb3\xda\x30\xc5\x23\x4d\xab\x42\xe8\xf0\x16\xf3\xe6\xcd\xda\x71\x80\x07\x62\x84\x2b\x76\x54\x0c\xa3\xa3\x6d\xd2\x19\xe7\x0b\x47\x1b\x3a\x2b\x94\xcb\x7b\x58\xeb\xdc\xc5\xc4\xd8\xd4\xb5\xb1\xba\xde\x59\xff\xdf\xbf\xb5\x75\x73\x55\xb2\xb9\x85\x7f\x92\x5c\x69\x72\xf4\xdf\xa6\xa8\x44\x38\x6c\x19\x4b\x42\xff\xeb\x7b\x57\x97\xf5\x3b\x6a\x4a\x69\x0f\xa5\x98\xe2\x0f\x29\x94\xfa\x3c\x2b\x68\x31\xfb\x01\xc1\x55\x24\xd5\x50\xc9\x36\xc4\xd8\xa8\x14\x99\x5f\x04\x25\xe7\x99\xcf\x75\x87\x8e\x20\x64\x48\x64\x6c\x94\x5c\xbc\x52\x9f\x85\x65\x4c\x14\xe7\x18\xd1\xec\x56\xa6\x1d\xf4\xc9\x27\x2f\x09\x52\x38\x0a\x9b\x33\xff\xcf\xe8\x62\x63\x2a\xca\xaa\x20\x17\x8d\x3c\xf1\x69\xf5\xb0\xf2\xd8\x4c\xc0\x06\x03\x31\xf2\xab\x63\x46\x8a\xdc\xbd\x95\xdb\x21\x22\xc9\x8d\x34\x85\x5f\x96\x24\x57\x15\x92\x20\xc2\x3e\x49\x55\x51\x6b\x89\x75\x73\x7a\x7e\x7d\xfc\xb1\xf9\xf2\xf2\xea\xf2\xb8\x39\x3a\xbb\xba\xfc\x74\x7d\xf2\xa3\xf9\xfc\x76\x99\xd7\x9c\x7f\x6d\xde\xbc\x6f\xde\x9d\xc4\x62\x14\x2e\x83\x1e\xd2\xa0\xce\x50\xce\xb0\x4f\x42\xfa\xdd\x2f\x2b\xa3\x49\xf3\x32\x28\x16\x93\x45\x11\xa1\x2b\x53\x3a\x5b\x86\x35\x3f\xbf\x5d\x1f\x7d\xb8\xf9\xfe\xea\xe6\xf4\x38\xb4\xfc\xba\x78\x7d\x75\x71\xf6\x17\x56\x2c\x44\x65\xeb\x77\x00\x00\x00\xff\xff\x3f\x77\x7e\x91\xbe\x03\x00\x00") func yaoAssistantsTitlePromptsYmlBytes() ([]byte, error) { return bindataRead( @@ -1933,7 +1975,7 @@ func yaoAssistantsTitlePromptsYml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/assistants/title/prompts.yml", size: 740, mode: os.FileMode(420), modTime: time.Unix(1765870272, 0)} + info := bindataFileInfo{name: "yao/assistants/title/prompts.yml", size: 958, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1953,7 +1995,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/data/icons/404.png", size: 9342, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1973,7 +2015,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/data/icons/icon.icns", size: 67465, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -1993,7 +2035,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/data/icons/icon.ico", size: 54993, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2013,7 +2055,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/data/icons/icon.png", size: 34558, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2033,7 +2075,7 @@ func yaoDataIndexHtml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/data/index.html", size: 282, mode: os.FileMode(420), modTime: time.Unix(1765870272, 0)} + info := bindataFileInfo{name: "yao/data/index.html", size: 282, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2053,7 +2095,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/chunking/semantic/en.json", size: 5543, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2073,7 +2115,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/chunking/semantic/zh-cn.json", size: 5446, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2093,7 +2135,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/chunking/structured/en.json", size: 2423, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2113,7 +2155,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/chunking/structured/zh-cn.json", size: 2321, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2133,7 +2175,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/converter/mcp/en.json", size: 4235, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2153,7 +2195,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/converter/mcp/zh-cn.json", size: 4060, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2173,7 +2215,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/converter/ocr/en.json", size: 6631, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2193,7 +2235,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/converter/ocr/zh-cn.json", size: 6501, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2213,7 +2255,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/converter/office/en.json", size: 5476, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2233,7 +2275,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/converter/office/zh-cn.json", size: 5356, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2253,7 +2295,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/converter/utf8/en.json", size: 292, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2273,7 +2315,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/converter/utf8/zh-cn.json", size: 281, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2293,7 +2335,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/converter/video/en.json", size: 6411, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2313,7 +2355,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/converter/video/zh-cn.json", size: 6297, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2333,7 +2375,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/converter/vision/en.json", size: 4085, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2353,7 +2395,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/converter/vision/zh-cn.json", size: 3949, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2373,7 +2415,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/converter/whisper/en.json", size: 4449, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2393,7 +2435,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/converter/whisper/zh-cn.json", size: 4312, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2413,7 +2455,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/embedding/fastembed/en.json", size: 6865, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2433,7 +2475,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/embedding/fastembed/zh-cn.json", size: 6685, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2453,7 +2495,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/embedding/openai/en.json", size: 5636, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2473,7 +2515,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/embedding/openai/zh-cn.json", size: 5463, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2493,7 +2535,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/extraction/openai/en.json", size: 9110, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2513,7 +2555,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/extraction/openai/zh-cn.json", size: 8827, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2533,7 +2575,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/fetcher/http/en.json", size: 5885, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2553,7 +2595,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/fetcher/http/zh-cn.json", size: 5925, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2573,7 +2615,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/fetcher/mcp/en.json", size: 6819, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2593,7 +2635,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/data/kb/providers/fetcher/mcp/zh-cn.json", size: 6611, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2613,7 +2655,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/fields/model.trans.json", size: 14938, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2633,7 +2675,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/langs/en-US.json", size: 66, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2653,7 +2695,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/langs/zh-cn/global.yml", size: 1762, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2673,7 +2715,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/langs/zh-cn/logins/admin.login.yml", size: 94, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2693,7 +2735,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/langs/zh-cn/logins/user.login.yml", size: 90, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2713,7 +2755,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/langs/zh-hk/global.yml", size: 1762, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2733,7 +2775,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/langs/zh-hk/logins/admin.login.yml", size: 94, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2753,7 +2795,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/langs/zh-hk/logins/user.login.yml", size: 90, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2773,7 +2815,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/models/agent/assistant.mod.yao", size: 6945, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2793,7 +2835,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/models/agent/chat.mod.yao", size: 3093, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2813,7 +2855,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/models/agent/message.mod.yao", size: 3712, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2833,7 +2875,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/models/agent/resume.mod.yao", size: 3896, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2853,7 +2895,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/models/agent/search.mod.yao", size: 3103, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2873,7 +2915,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/models/attachment.mod.yao", size: 4687, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2893,7 +2935,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/models/audit.mod.yao", size: 5588, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2913,7 +2955,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/models/config.mod.yao", size: 1649, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2933,7 +2975,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/models/dsl.mod.yao", size: 3826, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2953,7 +2995,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/models/invitation.mod.yao", size: 6693, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2973,7 +3015,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/models/job/category.mod.yao", size: 2041, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -2993,7 +3035,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/models/job/execution.mod.yao", size: 7201, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -3013,7 +3055,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/models/job/job.mod.yao", size: 6330, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -3033,7 +3075,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/models/job/log.mod.yao", size: 4711, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -3053,7 +3095,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/models/kb/collection.mod.yao", size: 5390, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -3073,7 +3115,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/models/kb/document.mod.yao", size: 9906, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -3093,7 +3135,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/models/member.mod.yao", size: 14798, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -3113,7 +3155,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/models/role.mod.yao", size: 6434, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -3133,7 +3175,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/models/team.mod.yao", size: 15823, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -3153,7 +3195,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/models/user/oauth_account.mod.yao", size: 6928, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -3173,7 +3215,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/models/user/type.mod.yao", size: 7502, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -3193,7 +3235,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/models/user.mod.yao", size: 12335, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -3213,7 +3255,7 @@ func yaoReleaseAppYaz() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "yao/release/app.yaz", size: 181682, mode: os.FileMode(420), modTime: time.Unix(1765870272, 0)} + info := bindataFileInfo{name: "yao/release/app.yaz", size: 181682, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -3233,7 +3275,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/stores/agent/cache.lru.yao", size: 301, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -3253,7 +3295,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/stores/agent/memory.badger.yao", size: 352, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -3273,7 +3315,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/stores/cache.lru.yao", size: 285, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -3293,7 +3335,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/stores/kb/cache.lru.yao", size: 304, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -3313,7 +3355,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/stores/kb/store.badger.yao", size: 349, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -3333,7 +3375,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/stores/oauth/cache.lru.yao", size: 301, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -3353,7 +3395,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/stores/oauth/client.badger.yao", size: 352, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -3373,7 +3415,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/stores/oauth/store.badger.yao", size: 376, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -3393,7 +3435,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/stores/store.badger.yao", size: 341, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -3413,7 +3455,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(1765870272, 0)} + info := bindataFileInfo{name: "yao/uploaders/attachment.local.yao", size: 1163, mode: os.FileMode(420), modTime: time.Unix(1765874647, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -3543,8 +3585,10 @@ var _bindata = map[string]func() (*asset, error){ "yao/assistants/entity/prompts.yml": yaoAssistantsEntityPromptsYml, "yao/assistants/keyword/package.yao": yaoAssistantsKeywordPackageYao, "yao/assistants/keyword/prompts.yml": yaoAssistantsKeywordPromptsYml, + "yao/assistants/keyword/src/index.ts": yaoAssistantsKeywordSrcIndexTs, "yao/assistants/needsearch/package.yao": yaoAssistantsNeedsearchPackageYao, "yao/assistants/needsearch/prompts.yml": yaoAssistantsNeedsearchPromptsYml, + "yao/assistants/needsearch/src/index.ts": yaoAssistantsNeedsearchSrcIndexTs, "yao/assistants/prompt/package.yao": yaoAssistantsPromptPackageYao, "yao/assistants/prompt/prompts.yml": yaoAssistantsPromptPromptsYml, "yao/assistants/querydsl/package.yao": yaoAssistantsQuerydslPackageYao, @@ -3826,10 +3870,16 @@ var _bintree = &bintree{nil, map[string]*bintree{ "keyword": {nil, map[string]*bintree{ "package.yao": {yaoAssistantsKeywordPackageYao, map[string]*bintree{}}, "prompts.yml": {yaoAssistantsKeywordPromptsYml, map[string]*bintree{}}, + "src": {nil, map[string]*bintree{ + "index.ts": {yaoAssistantsKeywordSrcIndexTs, map[string]*bintree{}}, + }}, }}, "needsearch": {nil, map[string]*bintree{ "package.yao": {yaoAssistantsNeedsearchPackageYao, map[string]*bintree{}}, "prompts.yml": {yaoAssistantsNeedsearchPromptsYml, map[string]*bintree{}}, + "src": {nil, map[string]*bintree{ + "index.ts": {yaoAssistantsNeedsearchSrcIndexTs, map[string]*bintree{}}, + }}, }}, "prompt": {nil, map[string]*bintree{ "package.yao": {yaoAssistantsPromptPackageYao, map[string]*bintree{}}, diff --git a/yao/assistants/keyword/package.yao b/yao/assistants/keyword/package.yao index 1513a630..4f597e77 100644 --- a/yao/assistants/keyword/package.yao +++ b/yao/assistants/keyword/package.yao @@ -2,6 +2,7 @@ "name": "Keyword Extraction", "description": "Extract keywords from text content", "type": "worker", + "uses": { "search": "disabled" }, "options": { "max_tokens": 500, "temperature": 0.3 diff --git a/yao/assistants/keyword/prompts.yml b/yao/assistants/keyword/prompts.yml index 1dcfbddf..0cd4696a 100644 --- a/yao/assistants/keyword/prompts.yml +++ b/yao/assistants/keyword/prompts.yml @@ -1,24 +1,21 @@ -# Keyword Extraction Agent Prompts - role: system content: | - You are a keyword extraction specialist. Your task is to extract relevant keywords from the provided text. + Extract keywords from text content. - ## Instructions - 1. Analyze the input text carefully - 2. Extract the most important and relevant keywords - 3. Return keywords in JSON format + Task: + 1. Analyze input text + 2. Extract important keywords + 3. Return JSON format + 4. Match input language - ## Response Format - Always respond with valid JSON: + Response Format (JSON only): ```json - { - "keywords": ["keyword1", "keyword2", ...] - } + {"keywords": ["keyword1", "keyword2", ...]} ``` - ## Guidelines - - Extract 5-15 keywords depending on content length - - Prioritize nouns, proper nouns, and key concepts - - Include both single words and short phrases when relevant + Guidelines: + - Extract 5-15 keywords based on content length + - Prioritize nouns, proper nouns, key concepts + - Include single words and short phrases - Exclude common stop words - - Maintain the original language of the content + - Keywords MUST be in the same language as input diff --git a/yao/assistants/keyword/src/index.ts b/yao/assistants/keyword/src/index.ts new file mode 100644 index 00000000..bc546de5 --- /dev/null +++ b/yao/assistants/keyword/src/index.ts @@ -0,0 +1,113 @@ +/** + * Keyword Extraction Agent - Next Hook + * Parses LLM response and extracts keywords with error tolerance + */ + +// @ts-nocheck + +/** + * Next hook - processes keyword extraction response + * Uses json.Parse for fault-tolerant JSON parsing + */ +function Next( + ctx: agent.Context, + payload: agent.NextHookPayload +): agent.NextHookResponse | null { + const completion = payload.completion; + + // No completion, return null for standard handling + if (!completion || !completion.content) { + return null; + } + + // Remove markdown code block if present + let content = completion.content.trim(); + if (content.startsWith("```json")) { + content = content.slice(7); + } else if (content.startsWith("```")) { + content = content.slice(3); + } + if (content.endsWith("```")) { + content = content.slice(0, -3); + } + content = content.trim(); + + // Try to parse JSON from completion content + let keywords: string[] = []; + + try { + // Use json.Parse for fault-tolerant parsing (handles broken JSON, JSONC, etc.) + const parsed = Process("json.Parse", content) as { + keywords?: string[]; + } | null; + + if (parsed && Array.isArray(parsed.keywords)) { + keywords = parsed.keywords.filter( + (k) => typeof k === "string" && k.trim().length > 0 + ); + } + } catch (e) { + // If json.Parse fails, try to extract keywords from text + keywords = extractKeywordsFromText(content); + } + + // If still no keywords, try extracting from raw text + if (keywords.length === 0) { + keywords = extractKeywordsFromText(content); + } + + // Return parsed keywords + return { + data: { + keywords: keywords, + }, + }; +} + +/** + * Extract keywords from plain text when JSON parsing fails + * Handles formats like: + * - Comma-separated: "keyword1, keyword2, keyword3" + * - Line-separated: "keyword1\nkeyword2\nkeyword3" + * - Bullet points: "- keyword1\n- keyword2" + * - Numbered: "1. keyword1\n2. keyword2" + */ +function extractKeywordsFromText(text: string): string[] { + const keywords: string[] = []; + + // Remove common prefixes/suffixes + let cleaned = text + .replace(/^[\s\S]*?keywords?[\s::]*\[?/i, "") // Remove "keywords:" prefix + .replace(/\][\s\S]*$/, "") // Remove trailing ] + .trim(); + + // Try line-by-line extraction + const lines = cleaned.split(/[\n\r]+/); + + for (const line of lines) { + // Remove bullet points, numbers, quotes + let keyword = line + .replace(/^[\s\-\*\•\d\.]+/, "") // Remove bullets/numbers + .replace(/^["'`]+|["'`]+$/g, "") // Remove quotes + .replace(/,\s*$/, "") // Remove trailing comma + .trim(); + + // Skip empty or too long + if (keyword.length > 0 && keyword.length < 100) { + // Split by comma if contains multiple + if (keyword.includes(",")) { + const parts = keyword.split(",").map((p) => p.trim()); + for (const part of parts) { + if (part.length > 0 && part.length < 100) { + keywords.push(part); + } + } + } else { + keywords.push(keyword); + } + } + } + + // Deduplicate + return [...new Set(keywords)]; +} diff --git a/yao/assistants/needsearch/src/index.ts b/yao/assistants/needsearch/src/index.ts new file mode 100644 index 00000000..2ccc92cb --- /dev/null +++ b/yao/assistants/needsearch/src/index.ts @@ -0,0 +1,117 @@ +/** + * Need Search Agent - Next Hook + * Parses LLM response and extracts search intent with error tolerance + */ + +// @ts-nocheck + +interface SearchResult { + need_search: boolean; + search_types: string[]; + confidence: number; +} + +/** + * Next hook - processes search intent response + * Uses json.Parse for fault-tolerant JSON parsing + */ +function Next( + ctx: agent.Context, + payload: agent.NextHookPayload +): agent.NextHookResponse | null { + const completion = payload.completion; + + // No completion, return null for standard handling + if (!completion || !completion.content) { + return null; + } + + // Remove markdown code block if present + let content = completion.content.trim(); + if (content.startsWith("```json")) { + content = content.slice(7); // Remove ```json + } else if (content.startsWith("```")) { + content = content.slice(3); // Remove ``` + } + if (content.endsWith("```")) { + content = content.slice(0, -3); // Remove trailing ``` + } + content = content.trim(); + + // Default result + let result: SearchResult = { + need_search: false, + search_types: [], + confidence: 0, + }; + + try { + // Use json.Parse for fault-tolerant parsing + const parsed = Process("json.Parse", content) as { + need_search?: boolean; + search_types?: string[]; + confidence?: number; + } | null; + + if (parsed) { + result.need_search = Boolean(parsed.need_search); + result.search_types = Array.isArray(parsed.search_types) + ? parsed.search_types.filter( + (t) => + typeof t === "string" && + ["web", "kb", "db"].includes(t.toLowerCase()) + ) + : []; + result.confidence = + typeof parsed.confidence === "number" + ? Math.min(1, Math.max(0, parsed.confidence)) + : 0.5; + } + } catch (e) { + // If json.Parse fails, try to extract from text + result = extractFromText(content); + } + + // Return parsed result + return { + data: result, + }; +} + +/** + * Extract search intent from plain text when JSON parsing fails + */ +function extractFromText(text: string): SearchResult { + const lower = text.toLowerCase(); + + // Check for explicit indicators + const needSearch = + lower.includes("true") || + lower.includes("need") || + lower.includes("search") || + lower.includes("web") || + lower.includes("kb") || + lower.includes("db"); + + const noSearch = + lower.includes("false") || + lower.includes("no search") || + lower.includes("not need"); + + // Extract search types + const searchTypes: string[] = []; + if (lower.includes("web")) searchTypes.push("web"); + if (lower.includes("kb") || lower.includes("knowledge")) + searchTypes.push("kb"); + if (lower.includes("db") || lower.includes("database")) + searchTypes.push("db"); + + // Determine need_search + const need = noSearch ? false : needSearch && searchTypes.length > 0; + + return { + need_search: need, + search_types: need ? searchTypes : [], + confidence: 0.5, // Low confidence for text extraction + }; +} diff --git a/yao/assistants/prompt/package.yao b/yao/assistants/prompt/package.yao index 6192796b..ef403bba 100644 --- a/yao/assistants/prompt/package.yao +++ b/yao/assistants/prompt/package.yao @@ -2,6 +2,7 @@ "name": "Prompt Optimizer", "description": "Transform user requirements into effective prompts", "type": "worker", + "uses": { "search": "disabled" }, "options": { "temperature": 0 } diff --git a/yao/assistants/querydsl/package.yao b/yao/assistants/querydsl/package.yao index 2d2a175a..326721be 100644 --- a/yao/assistants/querydsl/package.yao +++ b/yao/assistants/querydsl/package.yao @@ -2,6 +2,7 @@ "name": "QueryDSL Generator", "description": "Generate QueryDSL from natural language", "type": "worker", + "uses": { "search": "disabled" }, "options": { "max_tokens": 2000, "temperature": 0.2 diff --git a/yao/assistants/title/package.yao b/yao/assistants/title/package.yao index 81887702..c36130f4 100644 --- a/yao/assistants/title/package.yao +++ b/yao/assistants/title/package.yao @@ -2,6 +2,7 @@ "name": "Title Generator", "description": "Generate concise titles for conversations", "type": "worker", + "uses": { "search": "disabled" }, "options": { "temperature": 0 } diff --git a/yao/assistants/title/prompts.yml b/yao/assistants/title/prompts.yml index 5d78da70..d339f7e9 100644 --- a/yao/assistants/title/prompts.yml +++ b/yao/assistants/title/prompts.yml @@ -5,12 +5,16 @@ Task: 1. Analyze content and identify main topic 2. Create brief, descriptive title - 3. Match input language - 4. Return ONLY the title, no explanation + 3. Title MUST be in the same language as user input + + Output: + - Return ONLY the plain text title + - NO markdown, NO code blocks, NO quotes, NO explanation + - Just the title text itself Length: - English: 2-6 words, 15-50 chars - - CJK: 2-10 chars + - CJK (Chinese/Japanese/Korean): 2-10 chars - Mixed: max 50 chars Style: @@ -20,7 +24,14 @@ - Sentence case for English Examples: - "How to bake cookies?" → Chocolate Chip Cookie Recipe - "请教如何制作曲奇" → 巧克力曲奇制作 - "Debug my React component" → React Component Debugging - "帮我调试React组件" → React组件调试 + Input: "How to bake cookies?" + Output: Chocolate Chip Cookie Recipe + + Input: "请教如何制作曲奇" + Output: 巧克力曲奇制作 + + Input: "Debug my React component" + Output: React Component Debugging + + Input: "帮我调试React组件" + Output: React组件调试