[{"data":1,"prerenderedAt":10614},["ShallowReactive",2],{"docs-page-en-/usecase/customer_service_assistant":3,"surround-en-/usecase/customer_service_assistant":10598},{"id":4,"title":5,"avatar":6,"banner":6,"body":7,"category":6,"desc":10591,"description":13,"extension":10592,"lead":6,"links":6,"meta":10593,"navigation":6,"path":10594,"seo":10595,"stem":10596,"__hash__":10597},"docs/en/usecase/customer_service_assistant.md","Help Your Customer Service Agent Remember Users: Cross-Session Memory with MemOS",null,{"type":8,"value":9,"toc":10571},"minimark",[10,14,17,20,23,28,52,54,58,61,71,74,76,80,83,111,114,116,120,123,129,136,138,142,151,154,157,204,207,308,317,332,334,338,341,604,607,640,642,646,649,751,754,756,761,770,981,984,986,990,998,1207,1210,1212,1216,1223,1254,1257,1259,1263,1266,1268,1272,1278,1390,1393,1395,1399,1405,1512,1515,1517,1521,1532,1686,1689,1695,1698,1700,1704,1707,1729,1732,1734,1738,1749,10567],[11,12,13],"p",{},"A user reports a faulty headset through web chat. The next day, they follow up by email, only to be asked for their order number and a description of the issue all over again. To the user, this feels like a break in service. The system-level cause is usually simple: the new session does not have the information that was already confirmed.",[11,15,16],{},"A customer service Agent needs to remember two different types of information. One belongs to the current user, such as orders, open cases, and notification preferences. The other belongs to the Agent, such as reusable tool workflows for handling similar requests. After-sales policies remain centrally managed in a knowledge base.",[11,18,19],{},"This guide uses Python snippets to show how these three types of information work together in a complete customer service memory architecture.",[21,22],"br",{},[24,25,27],"h2",{"id":26},"key-ideas","Key Ideas",[29,30,31,40,43,46,49],"ul",{},[32,33,34,35,39],"li",{},"Write user facts and preferences to user memory, and use a stable ",[36,37,38],"code",{},"user_id"," to retrieve them across sessions.",[32,41,42],{},"Submit each task record to the customer service Agent's independent memory, and let MemOS decide whether to create or update a Skill.",[32,44,45],{},"Store after-sales policies in a policy knowledge base, and retrieve them together with Agent Skills from the Agent's perspective.",[32,47,48],{},"Before generating a response, run two retrievals: one for user facts and preferences, and another for Agent Skills and policies.",[32,50,51],{},"Let the Agent manage the current session history while MemOS manages cross-session memory.",[21,53],{},[24,55,57],{"id":56},"what-you-will-build","What You Will Build",[11,59,60],{},"The example covers three stages of a customer service case:",[62,63,69],"pre",{"className":64,"code":66,"language":67,"meta":68},[65],"language-text","DAY 1 · Web chat\ncustomer_001 submits a headset exchange request. The customer service Agent\nlooks up the order, checks the policy, creates a ticket, and records the requested\ndelivery time, address, and SMS notification preference.\n\nDAY 4 · Email ticket\ncustomer_001 follows up on the exchange in a new conversation_id.\n\nDAY 7 · Web chat\ncustomer_002 reports a similar headset noise issue. The customer service Agent\ntries to reuse a Skill learned from the earlier case.\n","text","",[36,70,66],{"__ignoreMap":68},[11,72,73],{},"DAY 4 verifies that user facts and preferences persist across sessions. DAY 7 uses a different customer to verify that user information remains isolated while the customer service Agent can still reuse a general Skill.",[21,75],{},[24,77,79],{"id":78},"separate-the-three-information-scopes","Separate the Three Information Scopes",[11,81,82],{},"The architecture divides customer service context into three scopes:",[84,85,86,96,105],"ol",{},[32,87,88,92,93,95],{},[89,90,91],"strong",{},"User memory"," stores orders, product issues, ticket status, addresses, and notification preferences. It belongs only to the current ",[36,94,38],{},".",[32,97,98,101,102,95],{},[89,99,100],{},"Agent Skills"," store general workflows distilled from complete task traces. They belong to a stable ",[36,103,104],{},"agent_id",[32,106,107,110],{},[89,108,109],{},"Policy knowledge base"," stores official rules for returns, exchanges, warranties, shipping, and invoices. It is centrally maintained by the business.",[11,112,113],{},"Put simply, the policy knowledge base answers \"What should we do according to policy?\" User memory answers \"How far have we progressed with this customer?\" An Agent Skill answers \"What steps usually complete this type of task?\"",[21,115],{},[24,117,119],{"id":118},"end-to-end-flow","End-to-End Flow",[11,121,122],{},"Each customer service request follows this flow:",[62,124,127],{"className":125,"code":126,"language":67,"meta":68},[65],"User request\n  │\n  ├─ Agent reads the current session history from the business application\n  │\n  ├─ Retrieval 1: user_id → user facts and preferences\n  │\n  ├─ Retrieval 2: agent_id → general Skills + policy knowledge base\n  │\n  ├─ Merge context and call order, ticket, and notification tools\n  │\n  ├─ LLM generates the final response from the tool results\n  │\n  ├─ Write 1: user_id → facts and preferences\n  │\n  └─ Write 2: agent_id → request Skill creation or update\n",[36,128,126],{"__ignoreMap":68},[11,130,131,132,135],{},"Both writes use the same task record, but ",[36,133,134],{},"allow_memory_view"," assigns a different set of memory types to each one. The user perspective does not generate Skills, and the Agent perspective does not duplicate user facts or preferences.",[21,137],{},[24,139,141],{"id":140},"prerequisites","Prerequisites",[11,143,144,145,150],{},"You can find a runnable ",[146,147,149],"a",{"href":148},"#complete-demo","complete demo"," at the end of this guide. Expand the code block, copy everything with one click, and save it locally for verification.",[11,152,153],{},"You need a MemOS API key and access to OpenAI or an OpenAI-compatible model endpoint.",[11,155,156],{},"Create a Python environment in your project and install the dependencies:",[62,158,162],{"className":159,"code":160,"language":161,"meta":68,"style":68},"language-bash shiki shiki-themes material-theme-lighter github-light-high-contrast github-dark-default","python3 -m venv .venv\n./.venv/bin/python -m pip install openai requests\n","bash",[36,163,164,184],{"__ignoreMap":68},[165,166,169,173,177,181],"span",{"class":167,"line":168},"line",1,[165,170,172],{"class":171},"saonL","python3",[165,174,176],{"class":175},"sp2SP"," -m",[165,178,180],{"class":179},"sp1uZ"," venv",[165,182,183],{"class":179}," .venv\n",[165,185,187,190,192,195,198,201],{"class":167,"line":186},2,[165,188,189],{"class":171},"./.venv/bin/python",[165,191,176],{"class":175},[165,193,194],{"class":179}," pip",[165,196,197],{"class":179}," install",[165,199,200],{"class":179}," openai",[165,202,203],{"class":179}," requests\n",[11,205,206],{},"Configure these values in your integration:",[62,208,212],{"className":209,"code":210,"language":211,"meta":68,"style":68},"language-python shiki shiki-themes material-theme-lighter github-light-high-contrast github-dark-default","MEMOS_API_KEY = \"YOUR_MEMOS_API_KEY\"\nOPENAI_API_KEY = \"YOUR_OPENAI_API_KEY\"\nMEMOS_BASE_URL = \"YOUR_MEMOS_BASE_URL\"\nOPENAI_MODEL = \"YOUR_MODEL_NAME\"\nOPENAI_BASE_URL = \"YOUR_OPENAI_BASE_URL\"\nAGENT_ID = \"YOUR_AGENT_ID\"\n","python",[36,213,214,234,248,263,278,293],{"__ignoreMap":68},[165,215,216,220,224,228,231],{"class":167,"line":168},[165,217,219],{"class":218},"sZaqd","MEMOS_API_KEY",[165,221,223],{"class":222},"saN0X"," =",[165,225,227],{"class":226},"sjUum"," \"",[165,229,230],{"class":179},"YOUR_MEMOS_API_KEY",[165,232,233],{"class":226},"\"\n",[165,235,236,239,241,243,246],{"class":167,"line":186},[165,237,238],{"class":218},"OPENAI_API_KEY",[165,240,223],{"class":222},[165,242,227],{"class":226},[165,244,245],{"class":179},"YOUR_OPENAI_API_KEY",[165,247,233],{"class":226},[165,249,251,254,256,258,261],{"class":167,"line":250},3,[165,252,253],{"class":218},"MEMOS_BASE_URL",[165,255,223],{"class":222},[165,257,227],{"class":226},[165,259,260],{"class":179},"YOUR_MEMOS_BASE_URL",[165,262,233],{"class":226},[165,264,266,269,271,273,276],{"class":167,"line":265},4,[165,267,268],{"class":218},"OPENAI_MODEL",[165,270,223],{"class":222},[165,272,227],{"class":226},[165,274,275],{"class":179},"YOUR_MODEL_NAME",[165,277,233],{"class":226},[165,279,281,284,286,288,291],{"class":167,"line":280},5,[165,282,283],{"class":218},"OPENAI_BASE_URL",[165,285,223],{"class":222},[165,287,227],{"class":226},[165,289,290],{"class":179},"YOUR_OPENAI_BASE_URL",[165,292,233],{"class":226},[165,294,296,299,301,303,306],{"class":167,"line":295},6,[165,297,298],{"class":218},"AGENT_ID",[165,300,223],{"class":222},[165,302,227],{"class":226},[165,304,305],{"class":179},"YOUR_AGENT_ID",[165,307,233],{"class":226},[11,309,310,311,313,314,316],{},"Derive ",[36,312,38],{}," from the user's authenticated identity or CRM record. Use a stable ",[36,315,104],{}," for the same customer service Agent across users and sessions.",[11,318,319,320,323,324,326,327,331],{},"In the console, enable ",[89,321,322],{},"Create Independent Memory for an Agent"," for the current project. This option is disabled by default. When it is disabled, ",[36,325,104],{}," can only tag and filter memories; it cannot act as an independent subject for writing or retrieving Agent Skills. See ",[146,328,330],{"href":329},"/memos_cloud/introduction/isolation_filters#create-independent-memory-for-an-agent","Multi-Agent Isolation"," for details.",[21,333],{},[24,335,337],{"id":336},"step-1-prepare-the-policy-knowledge-base","Step 1: Prepare the Policy Knowledge Base",[11,339,340],{},"During initialization, create a policy knowledge base, upload the after-sales policy document, and wait until processing is complete:",[62,342,344],{"className":209,"code":343,"language":211,"meta":68,"style":68},"def create_policy_knowledge_base():\n    headers = {\n        \"Content-Type\": \"application/json\",\n        \"Authorization\": f\"Token {MEMOS_API_KEY}\",\n    }\n    policy_kb_id = _create_kb(\n        headers,\n        \"Consumer After-Sales Policy\",\n        \"Policies for returns, exchanges, warranties, shipping, and invoices\",\n    )\n    _upload_file(\n        headers,\n        policy_kb_id,\n        \"consumer-after-sale-policy.md\",\n        POLICY_DOC_MD,\n    )\n    print(\"Policy document uploaded. Waiting for processing...\")\n    _wait_kb_ready(headers, policy_kb_id)\n    print(f\"Policy knowledge base is ready: {policy_kb_id}\")\n    return policy_kb_id\n",[36,345,346,360,372,396,426,431,445,453,465,477,483,491,498,506,518,527,532,551,570,594],{"__ignoreMap":68},[165,347,348,352,356],{"class":167,"line":168},[165,349,351],{"class":350},"sZ6T4","def",[165,353,355],{"class":354},"sbcIq"," create_policy_knowledge_base",[165,357,359],{"class":358},"suWxN","():\n",[165,361,362,366,369],{"class":167,"line":186},[165,363,365],{"class":364},"s5ojA","    headers ",[165,367,368],{"class":222},"=",[165,370,371],{"class":358}," {\n",[165,373,374,377,380,383,386,388,391,393],{"class":167,"line":250},[165,375,376],{"class":226},"        \"",[165,378,379],{"class":179},"Content-Type",[165,381,382],{"class":226},"\"",[165,384,385],{"class":358},":",[165,387,227],{"class":226},[165,389,390],{"class":179},"application/json",[165,392,382],{"class":226},[165,394,395],{"class":358},",\n",[165,397,398,400,403,405,407,410,413,417,419,422,424],{"class":167,"line":265},[165,399,376],{"class":226},[165,401,402],{"class":179},"Authorization",[165,404,382],{"class":226},[165,406,385],{"class":358},[165,408,409],{"class":350}," f",[165,411,412],{"class":179},"\"Token ",[165,414,416],{"class":415},"scyET","{",[165,418,219],{"class":218},[165,420,421],{"class":415},"}",[165,423,382],{"class":179},[165,425,395],{"class":358},[165,427,428],{"class":167,"line":280},[165,429,430],{"class":358},"    }\n",[165,432,433,436,438,442],{"class":167,"line":295},[165,434,435],{"class":364},"    policy_kb_id ",[165,437,368],{"class":222},[165,439,441],{"class":440},"sa-2m"," _create_kb",[165,443,444],{"class":358},"(\n",[165,446,448,451],{"class":167,"line":447},7,[165,449,450],{"class":440},"        headers",[165,452,395],{"class":358},[165,454,456,458,461,463],{"class":167,"line":455},8,[165,457,376],{"class":226},[165,459,460],{"class":179},"Consumer After-Sales Policy",[165,462,382],{"class":226},[165,464,395],{"class":358},[165,466,468,470,473,475],{"class":167,"line":467},9,[165,469,376],{"class":226},[165,471,472],{"class":179},"Policies for returns, exchanges, warranties, shipping, and invoices",[165,474,382],{"class":226},[165,476,395],{"class":358},[165,478,480],{"class":167,"line":479},10,[165,481,482],{"class":358},"    )\n",[165,484,486,489],{"class":167,"line":485},11,[165,487,488],{"class":440},"    _upload_file",[165,490,444],{"class":358},[165,492,494,496],{"class":167,"line":493},12,[165,495,450],{"class":440},[165,497,395],{"class":358},[165,499,501,504],{"class":167,"line":500},13,[165,502,503],{"class":440},"        policy_kb_id",[165,505,395],{"class":358},[165,507,509,511,514,516],{"class":167,"line":508},14,[165,510,376],{"class":226},[165,512,513],{"class":179},"consumer-after-sale-policy.md",[165,515,382],{"class":226},[165,517,395],{"class":358},[165,519,521,525],{"class":167,"line":520},15,[165,522,524],{"class":523},"svxCd","        POLICY_DOC_MD",[165,526,395],{"class":358},[165,528,530],{"class":167,"line":529},16,[165,531,482],{"class":358},[165,533,535,538,541,543,546,548],{"class":167,"line":534},17,[165,536,537],{"class":523},"    print",[165,539,540],{"class":358},"(",[165,542,382],{"class":226},[165,544,545],{"class":179},"Policy document uploaded. Waiting for processing...",[165,547,382],{"class":226},[165,549,550],{"class":358},")\n",[165,552,554,557,559,562,565,568],{"class":167,"line":553},18,[165,555,556],{"class":440},"    _wait_kb_ready",[165,558,540],{"class":358},[165,560,561],{"class":440},"headers",[165,563,564],{"class":358},",",[165,566,567],{"class":440}," policy_kb_id",[165,569,550],{"class":358},[165,571,573,575,577,580,583,585,588,590,592],{"class":167,"line":572},19,[165,574,537],{"class":523},[165,576,540],{"class":358},[165,578,579],{"class":350},"f",[165,581,582],{"class":179},"\"Policy knowledge base is ready: ",[165,584,416],{"class":415},[165,586,587],{"class":440},"policy_kb_id",[165,589,421],{"class":415},[165,591,382],{"class":179},[165,593,550],{"class":358},[165,595,597,601],{"class":167,"line":596},20,[165,598,600],{"class":599},"sBMTB","    return",[165,602,603],{"class":364}," policy_kb_id\n",[11,605,606],{},"Use the knowledge base ID returned by the create API to initialize the customer service assistant:",[62,608,610],{"className":209,"code":609,"language":211,"meta":68,"style":68},"policy_kb_id = create_policy_knowledge_base()\nassistant = CustomerServiceAssistant(policy_kb_id)\n",[36,611,612,624],{"__ignoreMap":68},[165,613,614,617,619,621],{"class":167,"line":168},[165,615,616],{"class":364},"policy_kb_id ",[165,618,368],{"class":222},[165,620,355],{"class":440},[165,622,623],{"class":358},"()\n",[165,625,626,629,631,634,636,638],{"class":167,"line":186},[165,627,628],{"class":364},"assistant ",[165,630,368],{"class":222},[165,632,633],{"class":440}," CustomerServiceAssistant",[165,635,540],{"class":358},[165,637,587],{"class":440},[165,639,550],{"class":358},[21,641],{},[24,643,645],{"id":644},"step-2-separate-the-write-types","Step 2: Separate the Write Types",[11,647,648],{},"Use different write views for the user and the Agent:",[62,650,652],{"className":209,"code":651,"language":211,"meta":68,"style":68},"USER_WRITE_VIEWS = [\"detail_factual\", \"preference\"]\nAGENT_SKILL_WRITE_VIEWS = [\"skill\"]\nUSER_CONTEXT_VIEWS = [\"detail_factual\", \"preference\"]\nAGENT_CONTEXT_VIEWS = [\"detail_factual\", \"skill\"]\n",[36,653,654,683,701,726],{"__ignoreMap":68},[165,655,656,659,661,664,666,669,671,673,675,678,680],{"class":167,"line":168},[165,657,658],{"class":218},"USER_WRITE_VIEWS",[165,660,223],{"class":222},[165,662,663],{"class":358}," [",[165,665,382],{"class":226},[165,667,668],{"class":179},"detail_factual",[165,670,382],{"class":226},[165,672,564],{"class":358},[165,674,227],{"class":226},[165,676,677],{"class":179},"preference",[165,679,382],{"class":226},[165,681,682],{"class":358},"]\n",[165,684,685,688,690,692,694,697,699],{"class":167,"line":186},[165,686,687],{"class":218},"AGENT_SKILL_WRITE_VIEWS",[165,689,223],{"class":222},[165,691,663],{"class":358},[165,693,382],{"class":226},[165,695,696],{"class":179},"skill",[165,698,382],{"class":226},[165,700,682],{"class":358},[165,702,703,706,708,710,712,714,716,718,720,722,724],{"class":167,"line":250},[165,704,705],{"class":218},"USER_CONTEXT_VIEWS",[165,707,223],{"class":222},[165,709,663],{"class":358},[165,711,382],{"class":226},[165,713,668],{"class":179},[165,715,382],{"class":226},[165,717,564],{"class":358},[165,719,227],{"class":226},[165,721,677],{"class":179},[165,723,382],{"class":226},[165,725,682],{"class":358},[165,727,728,731,733,735,737,739,741,743,745,747,749],{"class":167,"line":265},[165,729,730],{"class":218},"AGENT_CONTEXT_VIEWS",[165,732,223],{"class":222},[165,734,663],{"class":358},[165,736,382],{"class":226},[165,738,668],{"class":179},[165,740,382],{"class":226},[165,742,564],{"class":358},[165,744,227],{"class":226},[165,746,696],{"class":179},[165,748,382],{"class":226},[165,750,682],{"class":358},[11,752,753],{},"This lets the same task record enter two memory spaces without generating duplicate memory types.",[21,755],{},[757,758,760],"h3",{"id":759},"write-user-facts-and-preferences","Write User Facts and Preferences",[11,762,763,764,767,768,385],{},"The first ",[36,765,766],{},"/add/message"," request passes only ",[36,769,38],{},[62,771,773],{"className":209,"code":772,"language":211,"meta":68,"style":68},"def add_user_memories(self, messages, user_id, conversation_id, channel):\n    \"\"\"First write: generate only facts and preferences from the user's perspective.\"\"\"\n    user_data = {\n        \"user_id\": user_id,\n        \"conversation_id\": conversation_id,\n        \"info\": {\"channel\": channel, \"scene\": \"consumer_support\"},\n        \"allow_memory_view\": USER_WRITE_VIEWS,\n        \"messages\": messages,\n    }\n    self._post_memory(user_data, \"User facts and preferences\", timeout_seconds=120)\n",[36,774,775,812,825,834,848,863,909,924,939,943],{"__ignoreMap":68},[165,776,777,779,782,784,788,790,794,796,799,801,804,806,809],{"class":167,"line":168},[165,778,351],{"class":350},[165,780,781],{"class":354}," add_user_memories",[165,783,540],{"class":358},[165,785,787],{"class":786},"sZhmI","self",[165,789,564],{"class":358},[165,791,793],{"class":792},"sM07a"," messages",[165,795,564],{"class":358},[165,797,798],{"class":792}," user_id",[165,800,564],{"class":358},[165,802,803],{"class":792}," conversation_id",[165,805,564],{"class":358},[165,807,808],{"class":792}," channel",[165,810,811],{"class":358},"):\n",[165,813,814,818,822],{"class":167,"line":186},[165,815,817],{"class":816},"s9tbJ","    \"\"\"",[165,819,821],{"class":820},"soLfw","First write: generate only facts and preferences from the user's perspective.",[165,823,824],{"class":816},"\"\"\"\n",[165,826,827,830,832],{"class":167,"line":250},[165,828,829],{"class":364},"    user_data ",[165,831,368],{"class":222},[165,833,371],{"class":358},[165,835,836,838,840,842,844,846],{"class":167,"line":265},[165,837,376],{"class":226},[165,839,38],{"class":179},[165,841,382],{"class":226},[165,843,385],{"class":358},[165,845,798],{"class":364},[165,847,395],{"class":358},[165,849,850,852,855,857,859,861],{"class":167,"line":280},[165,851,376],{"class":226},[165,853,854],{"class":179},"conversation_id",[165,856,382],{"class":226},[165,858,385],{"class":358},[165,860,803],{"class":364},[165,862,395],{"class":358},[165,864,865,867,870,872,874,877,879,882,884,886,888,890,892,895,897,899,901,904,906],{"class":167,"line":295},[165,866,376],{"class":226},[165,868,869],{"class":179},"info",[165,871,382],{"class":226},[165,873,385],{"class":358},[165,875,876],{"class":358}," {",[165,878,382],{"class":226},[165,880,881],{"class":179},"channel",[165,883,382],{"class":226},[165,885,385],{"class":358},[165,887,808],{"class":364},[165,889,564],{"class":358},[165,891,227],{"class":226},[165,893,894],{"class":179},"scene",[165,896,382],{"class":226},[165,898,385],{"class":358},[165,900,227],{"class":226},[165,902,903],{"class":179},"consumer_support",[165,905,382],{"class":226},[165,907,908],{"class":358},"},\n",[165,910,911,913,915,917,919,922],{"class":167,"line":447},[165,912,376],{"class":226},[165,914,134],{"class":179},[165,916,382],{"class":226},[165,918,385],{"class":358},[165,920,921],{"class":218}," USER_WRITE_VIEWS",[165,923,395],{"class":358},[165,925,926,928,931,933,935,937],{"class":167,"line":455},[165,927,376],{"class":226},[165,929,930],{"class":179},"messages",[165,932,382],{"class":226},[165,934,385],{"class":358},[165,936,793],{"class":364},[165,938,395],{"class":358},[165,940,941],{"class":167,"line":467},[165,942,430],{"class":358},[165,944,945,948,950,953,955,958,960,962,965,967,969,973,975,979],{"class":167,"line":479},[165,946,947],{"class":218},"    self",[165,949,95],{"class":358},[165,951,952],{"class":440},"_post_memory",[165,954,540],{"class":358},[165,956,957],{"class":440},"user_data",[165,959,564],{"class":358},[165,961,227],{"class":226},[165,963,964],{"class":179},"User facts and preferences",[165,966,382],{"class":226},[165,968,564],{"class":358},[165,970,972],{"class":971},"sp4zP"," timeout_seconds",[165,974,368],{"class":222},[165,976,978],{"class":977},"sJNII","120",[165,980,550],{"class":358},[11,982,983],{},"MemOS decides whether the conversation contains a fact or preference worth storing. If a turn does not express a stable preference, it may generate only facts.",[21,985],{},[757,987,989],{"id":988},"write-agent-skills","Write Agent Skills",[11,991,992,993,767,995,997],{},"The second ",[36,994,766],{},[36,996,104],{}," and allows only Skill generation:",[62,999,1001],{"className":209,"code":1000,"language":211,"meta":68,"style":68},"def add_agent_skill(self, messages, conversation_id, channel):\n    \"\"\"Second write: request Skill creation or update from the Agent's perspective.\"\"\"\n    skill_data = {\n        \"agent_id\": AGENT_ID,\n        \"conversation_id\": conversation_id,\n        \"info\": {\"channel\": channel, \"scene\": \"consumer_support\"},\n        \"allow_memory_view\": AGENT_SKILL_WRITE_VIEWS,\n        \"custom_extract_prompt\": {\"skill\": SKILL_EXTRACT_PROMPT},\n        \"messages\": messages,\n    }\n    self._post_memory(skill_data, \"Agent Skill\", timeout_seconds=300)\n",[36,1002,1003,1028,1037,1046,1061,1075,1115,1130,1156,1170,1174],{"__ignoreMap":68},[165,1004,1005,1007,1010,1012,1014,1016,1018,1020,1022,1024,1026],{"class":167,"line":168},[165,1006,351],{"class":350},[165,1008,1009],{"class":354}," add_agent_skill",[165,1011,540],{"class":358},[165,1013,787],{"class":786},[165,1015,564],{"class":358},[165,1017,793],{"class":792},[165,1019,564],{"class":358},[165,1021,803],{"class":792},[165,1023,564],{"class":358},[165,1025,808],{"class":792},[165,1027,811],{"class":358},[165,1029,1030,1032,1035],{"class":167,"line":186},[165,1031,817],{"class":816},[165,1033,1034],{"class":820},"Second write: request Skill creation or update from the Agent's perspective.",[165,1036,824],{"class":816},[165,1038,1039,1042,1044],{"class":167,"line":250},[165,1040,1041],{"class":364},"    skill_data ",[165,1043,368],{"class":222},[165,1045,371],{"class":358},[165,1047,1048,1050,1052,1054,1056,1059],{"class":167,"line":265},[165,1049,376],{"class":226},[165,1051,104],{"class":179},[165,1053,382],{"class":226},[165,1055,385],{"class":358},[165,1057,1058],{"class":218}," AGENT_ID",[165,1060,395],{"class":358},[165,1062,1063,1065,1067,1069,1071,1073],{"class":167,"line":280},[165,1064,376],{"class":226},[165,1066,854],{"class":179},[165,1068,382],{"class":226},[165,1070,385],{"class":358},[165,1072,803],{"class":364},[165,1074,395],{"class":358},[165,1076,1077,1079,1081,1083,1085,1087,1089,1091,1093,1095,1097,1099,1101,1103,1105,1107,1109,1111,1113],{"class":167,"line":295},[165,1078,376],{"class":226},[165,1080,869],{"class":179},[165,1082,382],{"class":226},[165,1084,385],{"class":358},[165,1086,876],{"class":358},[165,1088,382],{"class":226},[165,1090,881],{"class":179},[165,1092,382],{"class":226},[165,1094,385],{"class":358},[165,1096,808],{"class":364},[165,1098,564],{"class":358},[165,1100,227],{"class":226},[165,1102,894],{"class":179},[165,1104,382],{"class":226},[165,1106,385],{"class":358},[165,1108,227],{"class":226},[165,1110,903],{"class":179},[165,1112,382],{"class":226},[165,1114,908],{"class":358},[165,1116,1117,1119,1121,1123,1125,1128],{"class":167,"line":447},[165,1118,376],{"class":226},[165,1120,134],{"class":179},[165,1122,382],{"class":226},[165,1124,385],{"class":358},[165,1126,1127],{"class":218}," AGENT_SKILL_WRITE_VIEWS",[165,1129,395],{"class":358},[165,1131,1132,1134,1137,1139,1141,1143,1145,1147,1149,1151,1154],{"class":167,"line":455},[165,1133,376],{"class":226},[165,1135,1136],{"class":179},"custom_extract_prompt",[165,1138,382],{"class":226},[165,1140,385],{"class":358},[165,1142,876],{"class":358},[165,1144,382],{"class":226},[165,1146,696],{"class":179},[165,1148,382],{"class":226},[165,1150,385],{"class":358},[165,1152,1153],{"class":218}," SKILL_EXTRACT_PROMPT",[165,1155,908],{"class":358},[165,1157,1158,1160,1162,1164,1166,1168],{"class":167,"line":467},[165,1159,376],{"class":226},[165,1161,930],{"class":179},[165,1163,382],{"class":226},[165,1165,385],{"class":358},[165,1167,793],{"class":364},[165,1169,395],{"class":358},[165,1171,1172],{"class":167,"line":479},[165,1173,430],{"class":358},[165,1175,1176,1178,1180,1182,1184,1187,1189,1191,1194,1196,1198,1200,1202,1205],{"class":167,"line":485},[165,1177,947],{"class":218},[165,1179,95],{"class":358},[165,1181,952],{"class":440},[165,1183,540],{"class":358},[165,1185,1186],{"class":440},"skill_data",[165,1188,564],{"class":358},[165,1190,227],{"class":226},[165,1192,1193],{"class":179},"Agent Skill",[165,1195,382],{"class":226},[165,1197,564],{"class":358},[165,1199,972],{"class":971},[165,1201,368],{"class":222},[165,1203,1204],{"class":977},"300",[165,1206,550],{"class":358},[11,1208,1209],{},"Run this write after every response. The caller only declares that the request may generate a Skill and does not try to predict whether the current conversation should produce one. MemOS evaluates the task trace and existing Skills, then decides whether to create, update, or skip a Skill.",[21,1211],{},[24,1213,1215],{"id":1214},"step-3-keep-skills-general","Step 3: Keep Skills General",[11,1217,1218,1219,1222],{},"MemOS handles Skill extraction. Use ",[36,1220,1221],{},"custom_extract_prompt.skill"," to add generalization requirements for the customer service scenario:",[29,1224,1225,1228,1231,1234,1248,1251],{},[32,1226,1227],{},"Compare Skills by business goal, trigger conditions, core tool sequence, and success criteria.",[32,1229,1230],{},"Merge into an existing Skill when the workflow is equivalent, and avoid duplicates when there is no new reusable information.",[32,1232,1233],{},"Remove names, addresses, user IDs, order numbers, ticket numbers, and specific dates.",[32,1235,1236,1237,1240,1241,1244,1245,95],{},"Replace instance values with parameters such as ",[36,1238,1239],{},"order_id",", ",[36,1242,1243],{},"ticket_id",", and ",[36,1246,1247],{},"shipping_address",[32,1249,1250],{},"Do not turn personal preferences or one-time timing requirements into general rules.",[32,1252,1253],{},"Keep only execution steps supported by tool results.",[11,1255,1256],{},"MemOS compares the new task with existing Skills and handles similarity and updates. The caller does not need to manage Skill IDs or implement merge logic.",[21,1258],{},[24,1260,1262],{"id":1261},"step-4-run-two-retrievals","Step 4: Run Two Retrievals",[11,1264,1265],{},"Before generating a response, retrieve user context separately from Agent Skills and policy knowledge.",[21,1267],{},[757,1269,1271],{"id":1270},"retrieve-user-facts-and-preferences","Retrieve User Facts and Preferences",[11,1273,1274,1275,1277],{},"Use ",[36,1276,38],{}," as the subject for the first retrieval, and request only the current user's facts and preferences:",[62,1279,1281],{"className":209,"code":1280,"language":211,"meta":68,"style":68},"context_data = {\n    \"query\": query,\n    \"user_id\": user_id,\n    \"conversation_id\": conversation_id,\n    \"include_memory_view\": USER_CONTEXT_VIEWS,\n    \"memory_limit_number\": 9,\n    \"preference_limit_number\": 6,\n}\n",[36,1282,1283,1292,1309,1323,1337,1353,1369,1385],{"__ignoreMap":68},[165,1284,1285,1288,1290],{"class":167,"line":168},[165,1286,1287],{"class":364},"context_data ",[165,1289,368],{"class":222},[165,1291,371],{"class":358},[165,1293,1294,1297,1300,1302,1304,1307],{"class":167,"line":186},[165,1295,1296],{"class":226},"    \"",[165,1298,1299],{"class":179},"query",[165,1301,382],{"class":226},[165,1303,385],{"class":358},[165,1305,1306],{"class":364}," query",[165,1308,395],{"class":358},[165,1310,1311,1313,1315,1317,1319,1321],{"class":167,"line":250},[165,1312,1296],{"class":226},[165,1314,38],{"class":179},[165,1316,382],{"class":226},[165,1318,385],{"class":358},[165,1320,798],{"class":364},[165,1322,395],{"class":358},[165,1324,1325,1327,1329,1331,1333,1335],{"class":167,"line":265},[165,1326,1296],{"class":226},[165,1328,854],{"class":179},[165,1330,382],{"class":226},[165,1332,385],{"class":358},[165,1334,803],{"class":364},[165,1336,395],{"class":358},[165,1338,1339,1341,1344,1346,1348,1351],{"class":167,"line":280},[165,1340,1296],{"class":226},[165,1342,1343],{"class":179},"include_memory_view",[165,1345,382],{"class":226},[165,1347,385],{"class":358},[165,1349,1350],{"class":218}," USER_CONTEXT_VIEWS",[165,1352,395],{"class":358},[165,1354,1355,1357,1360,1362,1364,1367],{"class":167,"line":295},[165,1356,1296],{"class":226},[165,1358,1359],{"class":179},"memory_limit_number",[165,1361,382],{"class":226},[165,1363,385],{"class":358},[165,1365,1366],{"class":977}," 9",[165,1368,395],{"class":358},[165,1370,1371,1373,1376,1378,1380,1383],{"class":167,"line":447},[165,1372,1296],{"class":226},[165,1374,1375],{"class":179},"preference_limit_number",[165,1377,382],{"class":226},[165,1379,385],{"class":358},[165,1381,1382],{"class":977}," 6",[165,1384,395],{"class":358},[165,1386,1387],{"class":167,"line":455},[165,1388,1389],{"class":358},"}\n",[11,1391,1392],{},"The response contains only facts and preferences for the current user.",[21,1394],{},[757,1396,1398],{"id":1397},"retrieve-agent-skills-and-policies","Retrieve Agent Skills and Policies",[11,1400,1401,1402,1404],{},"Use the stable ",[36,1403,104],{}," as the subject for the second retrieval, and include the policy knowledge base in the same search:",[62,1406,1408],{"className":209,"code":1407,"language":211,"meta":68,"style":68},"agent_data = {\n    \"query\": f\"General methods needed to handle this customer service request: {query}\",\n    \"agent_id\": AGENT_ID,\n    \"knowledgebase_ids\": self.knowledgebase_ids,\n    \"include_memory_view\": AGENT_CONTEXT_VIEWS,\n    \"memory_limit_number\": 9,\n}\n",[36,1409,1410,1419,1444,1458,1479,1494,1508],{"__ignoreMap":68},[165,1411,1412,1415,1417],{"class":167,"line":168},[165,1413,1414],{"class":364},"agent_data ",[165,1416,368],{"class":222},[165,1418,371],{"class":358},[165,1420,1421,1423,1425,1427,1429,1431,1434,1436,1438,1440,1442],{"class":167,"line":186},[165,1422,1296],{"class":226},[165,1424,1299],{"class":179},[165,1426,382],{"class":226},[165,1428,385],{"class":358},[165,1430,409],{"class":350},[165,1432,1433],{"class":179},"\"General methods needed to handle this customer service request: ",[165,1435,416],{"class":415},[165,1437,1299],{"class":364},[165,1439,421],{"class":415},[165,1441,382],{"class":179},[165,1443,395],{"class":358},[165,1445,1446,1448,1450,1452,1454,1456],{"class":167,"line":250},[165,1447,1296],{"class":226},[165,1449,104],{"class":179},[165,1451,382],{"class":226},[165,1453,385],{"class":358},[165,1455,1058],{"class":218},[165,1457,395],{"class":358},[165,1459,1460,1462,1465,1467,1469,1472,1474,1477],{"class":167,"line":265},[165,1461,1296],{"class":226},[165,1463,1464],{"class":179},"knowledgebase_ids",[165,1466,382],{"class":226},[165,1468,385],{"class":358},[165,1470,1471],{"class":218}," self",[165,1473,95],{"class":358},[165,1475,1464],{"class":1476},"s5qkx",[165,1478,395],{"class":358},[165,1480,1481,1483,1485,1487,1489,1492],{"class":167,"line":280},[165,1482,1296],{"class":226},[165,1484,1343],{"class":179},[165,1486,382],{"class":226},[165,1488,385],{"class":358},[165,1490,1491],{"class":218}," AGENT_CONTEXT_VIEWS",[165,1493,395],{"class":358},[165,1495,1496,1498,1500,1502,1504,1506],{"class":167,"line":295},[165,1497,1296],{"class":226},[165,1499,1359],{"class":179},[165,1501,382],{"class":226},[165,1503,385],{"class":358},[165,1505,1366],{"class":977},[165,1507,395],{"class":358},[165,1509,1510],{"class":167,"line":447},[165,1511,1389],{"class":358},[11,1513,1514],{},"This keeps user facts and preferences in the user perspective while making general Skills and official policies available to the customer service Agent. Different users can reuse the same Agent Skills, and policy responses remain consistent.",[21,1516],{},[24,1518,1520],{"id":1519},"step-5-write-back-the-complete-task-trace","Step 5: Write Back the Complete Task Trace",[11,1522,1274,1523,1526,1527,1529,1530,385],{},[36,1524,1525],{},"role_id"," on each message to identify the actual speaker. User messages use ",[36,1528,38],{},"; customer service responses and tool calls use ",[36,1531,104],{},[62,1533,1535],{"className":209,"code":1534,"language":211,"meta":68,"style":68},"memory_messages = [\n    {\"role\": \"user\", \"role_id\": user_id, \"content\": query}\n]\n\n# Tool-call messages use role_id=AGENT_ID\n# Tool results are linked to their calls through tool_call_id\n\nmemory_messages.append({\n    \"role\": \"assistant\",\n    \"role_id\": AGENT_ID,\n    \"content\": reply,\n})\n",[36,1536,1537,1547,1595,1599,1605,1611,1616,1620,1633,1652,1666,1681],{"__ignoreMap":68},[165,1538,1539,1542,1544],{"class":167,"line":168},[165,1540,1541],{"class":364},"memory_messages ",[165,1543,368],{"class":222},[165,1545,1546],{"class":358}," [\n",[165,1548,1549,1552,1554,1557,1559,1561,1563,1566,1568,1570,1572,1574,1576,1578,1580,1582,1584,1587,1589,1591,1593],{"class":167,"line":186},[165,1550,1551],{"class":358},"    {",[165,1553,382],{"class":226},[165,1555,1556],{"class":179},"role",[165,1558,382],{"class":226},[165,1560,385],{"class":358},[165,1562,227],{"class":226},[165,1564,1565],{"class":179},"user",[165,1567,382],{"class":226},[165,1569,564],{"class":358},[165,1571,227],{"class":226},[165,1573,1525],{"class":179},[165,1575,382],{"class":226},[165,1577,385],{"class":358},[165,1579,798],{"class":364},[165,1581,564],{"class":358},[165,1583,227],{"class":226},[165,1585,1586],{"class":179},"content",[165,1588,382],{"class":226},[165,1590,385],{"class":358},[165,1592,1306],{"class":364},[165,1594,1389],{"class":358},[165,1596,1597],{"class":167,"line":250},[165,1598,682],{"class":358},[165,1600,1601],{"class":167,"line":265},[165,1602,1604],{"emptyLinePlaceholder":1603},true,"\n",[165,1606,1607],{"class":167,"line":280},[165,1608,1610],{"class":1609},"sfVK4","# Tool-call messages use role_id=AGENT_ID\n",[165,1612,1613],{"class":167,"line":295},[165,1614,1615],{"class":1609},"# Tool results are linked to their calls through tool_call_id\n",[165,1617,1618],{"class":167,"line":447},[165,1619,1604],{"emptyLinePlaceholder":1603},[165,1621,1622,1625,1627,1630],{"class":167,"line":455},[165,1623,1624],{"class":364},"memory_messages",[165,1626,95],{"class":358},[165,1628,1629],{"class":440},"append",[165,1631,1632],{"class":358},"({\n",[165,1634,1635,1637,1639,1641,1643,1645,1648,1650],{"class":167,"line":467},[165,1636,1296],{"class":226},[165,1638,1556],{"class":179},[165,1640,382],{"class":226},[165,1642,385],{"class":358},[165,1644,227],{"class":226},[165,1646,1647],{"class":179},"assistant",[165,1649,382],{"class":226},[165,1651,395],{"class":358},[165,1653,1654,1656,1658,1660,1662,1664],{"class":167,"line":479},[165,1655,1296],{"class":226},[165,1657,1525],{"class":179},[165,1659,382],{"class":226},[165,1661,385],{"class":358},[165,1663,1058],{"class":523},[165,1665,395],{"class":358},[165,1667,1668,1670,1672,1674,1676,1679],{"class":167,"line":485},[165,1669,1296],{"class":226},[165,1671,1586],{"class":179},[165,1673,382],{"class":226},[165,1675,385],{"class":358},[165,1677,1678],{"class":440}," reply",[165,1680,395],{"class":358},[165,1682,1683],{"class":167,"line":493},[165,1684,1685],{"class":358},"})\n",[11,1687,1688],{},"The customer service Agent maintains the current session history in the business application. When writing to MemOS, combine the user request, tool calls, tool results, and final response into a complete task record:",[62,1690,1693],{"className":1691,"code":1692,"language":67,"meta":68},[65],"user\n→ assistant.tool_calls\n→ tool\n→ assistant\n",[36,1694,1692],{"__ignoreMap":68},[11,1696,1697],{},"The complete trace is used for Skill extraction. User facts and preferences are generated from the same record.",[21,1699],{},[24,1701,1703],{"id":1702},"step-6-verify-the-memory-behavior","Step 6: Verify the Memory Behavior",[11,1705,1706],{},"After completing the integration, verify reads, writes, and isolation across the three stages:",[84,1708,1709,1712,1722],{},[32,1710,1711],{},"After the DAY 1 exchange task, confirm that user facts and preferences are written to the User Cube and that the same task record is submitted to the Agent Cube for Skill evaluation.",[32,1713,1714,1715,1717,1718,1721],{},"On DAY 4, use a new ",[36,1716,854],{}," and confirm that ",[36,1719,1720],{},"customer_001"," still retrieves the earlier order, product issue, and notification preference.",[32,1723,1724,1725,1728],{},"On DAY 7, use ",[36,1726,1727],{},"customer_002"," and confirm that it does not receive the first customer's personal facts but can retrieve general Skills from the current customer service Agent.",[11,1730,1731],{},"When user memory, Agent Skills, and the policy knowledge base have clear boundaries, the customer service Agent can remember the current user, follow consistent policies, and turn completed tasks into reusable workflows.",[21,1733],{},[24,1735,1737],{"id":1736},"complete-demo","Complete Demo",[11,1739,1740,1741,1744,1745,1748],{},"Expand the code block below and use the copy button in the upper-right corner to copy everything. Save it as ",[36,1742,1743],{},"app.py",", fill in the values under ",[89,1746,1747],{},"Demo configuration",", and run it locally.",[1750,1751,1761,1762,1761,1772],"details",{"className":1752},[1753,1754,1755,1756,1757,1758,1759,1760],"not-prose","my-5","rounded-md","border","border-default","bg-muted/30","px-4","py-3","\n  ",[1763,1764,1771],"summary",{"className":1765},[1766,1767,1768,1769,1770],"cursor-pointer","select-none","text-sm","font-medium","text-highlighted","\n    Expand and copy the complete Python demo\n  ",[1773,1774,1777,1761],"div",{"className":1775},[1776],"mt-4",[62,1778,1780],{"className":209,"code":1779,"language":211,"meta":68,"style":68},"# -*- coding: utf-8 -*-\n\"\"\"\nMemOS customer service best practice: a cross-channel, memory-enhanced\ncustomer service Agent.\n\nScenario: consumer after-sales support. MemOS provides the customer service\nAgent with three capabilities:\n\n1. Each turn requests separate writes for user facts/preferences and Agent\n   Skills. MemOS decides what should actually be stored.\n2. After-sales policies are stored in a policy knowledge base and retrieved\n   together with Agent memory.\n3. Facts and preferences are retrieved by user_id, while Skills are retrieved\n   from the Agent perspective and reused across users.\n\nThe demo enables only three memory types: facts, preferences, and Skills.\nMemOS automatically distills Skills from complete task traces\n(user → assistant.tool_calls → tool → assistant). Skill generation is\nasynchronous and does not require a pre-uploaded Skill.\n\nRun:\n    pip install openai requests\n\n    # Fill in each value under \"Demo configuration\" below.\n    python app.py\n\"\"\"\n\nimport base64\nimport sys\nimport time\nfrom datetime import datetime\n\nimport requests\n\ntry:\n    from openai import OpenAI\nexcept ImportError:\n    OpenAI = None\n\n# ---------------------------------------------------------------------------\n# Demo configuration\n# ---------------------------------------------------------------------------\n\nMEMOS_API_KEY = \"YOUR_MEMOS_API_KEY\"\nOPENAI_API_KEY = \"YOUR_OPENAI_API_KEY\"\nMEMOS_BASE_URL = \"https://memos.memtensor.cn/api/openmem/v1\"\nOPENAI_MODEL = \"YOUR_MODEL_NAME\"\nOPENAI_BASE_URL = \"YOUR_OPENAI_BASE_URL\"\nAGENT_ID = \"YOUR_AGENT_ID\"\n\n# The user and Agent write different memory types; retrieval also uses two paths.\nUSER_WRITE_VIEWS = [\"detail_factual\", \"preference\"]\nAGENT_SKILL_WRITE_VIEWS = [\"skill\"]\nUSER_CONTEXT_VIEWS = [\"detail_factual\", \"preference\"]\nAGENT_CONTEXT_VIEWS = [\"detail_factual\", \"skill\"]\n\nSKILL_EXTRACT_PROMPT = \"\"\"Distill a reusable, cross-user Skill from the complete\ncustomer service task trace.\n\nDefine Skill identity by its business goal, trigger conditions, core tool\nsequence, and success criteria. Compare against existing Skills before\nextracting a new one:\n- If an existing Skill covers the same goal, trigger conditions, and core tool\n  sequence, merge the new information into that Skill instead of creating a\n  duplicate.\n- If this trace adds no reusable steps, decision branches, or supporting\n  evidence, do not generate a Skill.\n- Create a new Skill only when the business goal or core workflow is\n  materially different.\n\nGeneralize all Skill content:\n- Remove names, contact details, addresses, user IDs, Agent IDs, conversation\n  IDs, order numbers, ticket numbers, and specific dates.\n- Replace instance values with parameters such as order_id, ticket_id, and\n  shipping_address.\n- Do not retain personal preferences or turn one user's timing or notification\n  requirements into general rules.\n- Do not copy specific policy conclusions. Describe only that the current\n  policy must be queried and validated.\n- Keep only steps supported by tool results. Do not present model suggestions\n  or unexecuted actions as verified experience.\n\nUse a stable, concise Skill name based on the issue type and handling goal.\nDo not include user or case information in the name.\n\"\"\"\n\n# Memories below this relevance score are not added to the prompt.\nRELATIVITY_THRESHOLD = 0.5\n\n# ---------------------------------------------------------------------------\n# Example policy uploaded to the policy knowledge base\n# ---------------------------------------------------------------------------\n\nPOLICY_DOC_MD = \"\"\"# Consumer After-Sales Policy (Example)\n\n## Returns and exchanges\n- Unopened products that remain fit for resale can be returned within seven\n  days after delivery.\n- Products with performance defects can be exchanged within 15 days, with\n  shipping covered in both directions.\n- Customized products are not eligible for no-reason returns or exchanges.\n\n## Warranty\n- The main device is covered for 12 months, and included accessories for six\n  months.\n- Non-human-caused damage is repaired free of charge during the warranty.\n  Human-caused damage is repaired at cost.\n\n## Shipping\n- SF Express is the default carrier. The system sends the tracking number by\n  SMS after the replacement ships.\n- The delivery address can be changed once before the replacement ships.\n\n## Invoices\n- Electronic standard invoices are issued by default and can be requested\n  from the order page after the order is completed.\n\"\"\"\n\n\n# ---------------------------------------------------------------------------\n# Customer service Agent: retrieve memory -> build prompt -> generate -> write\n# ---------------------------------------------------------------------------\n\nclass CustomerServiceAssistant:\n    def __init__(self, policy_kb_id):\n        self.openai_client = OpenAI(\n            api_key=OPENAI_API_KEY,\n            base_url=OPENAI_BASE_URL or None,\n        )\n        self.headers = {\n            \"Content-Type\": \"application/json\",\n            \"Authorization\": f\"Token {MEMOS_API_KEY}\",\n        }\n        self.knowledgebase_ids = [policy_kb_id]\n        # The Agent owns current-session history; MemOS handles long-term memory.\n        self.conversation_histories = {}\n\n    # ---- MemOS reads and writes ----\n\n    def search_memory(self, query, user_id, conversation_id):\n        \"\"\"Retrieve user facts/preferences and Agent Skills/policies separately.\"\"\"\n        agent_data = {\n            \"query\": f\"General methods needed for this support request: {query}\",\n            \"agent_id\": AGENT_ID,\n            \"knowledgebase_ids\": self.knowledgebase_ids,\n            \"include_memory_view\": AGENT_CONTEXT_VIEWS,\n            \"memory_limit_number\": 9,\n        }\n        agent_res = requests.post(\n            f\"{MEMOS_BASE_URL}/search/memory\",\n            headers=self.headers,\n            json=agent_data,\n        )\n        agent_body = agent_res.json()\n        if agent_body.get(\"code\") == 0:\n            agent_result = agent_body.get(\"data\") or {}\n            policy_memories = [\n                item for item in agent_result.get(\"memory_detail_list\", [])\n                if item.get(\"relativity\", 0) >= RELATIVITY_THRESHOLD\n            ]\n            skills = agent_result.get(\"skill_detail_list\", [])\n        else:\n            print(\n                \"  [MemOS] Failed to retrieve Agent Skills and policies: \"\n                f\"{agent_body.get('message')}\"\n            )\n            policy_memories = []\n            skills = []\n\n        context_data = {\n            \"query\": query,\n            \"user_id\": user_id,\n            \"conversation_id\": conversation_id,\n            \"include_memory_view\": USER_CONTEXT_VIEWS,\n            \"memory_limit_number\": 9,\n            \"preference_limit_number\": 6,\n        }\n        context_res = requests.post(\n            f\"{MEMOS_BASE_URL}/search/memory\",\n            headers=self.headers,\n            json=context_data,\n        )\n        context_body = context_res.json()\n        if context_body.get(\"code\") == 0:\n            context_result = context_body.get(\"data\", {})\n        else:\n            print(\n                \"  [MemOS] Failed to retrieve user context: \"\n                f\"{context_body.get('message')}\"\n            )\n            context_result = {}\n\n        user_memories = [\n            item for item in context_result.get(\"memory_detail_list\", [])\n            if item.get(\"relativity\", 0) >= RELATIVITY_THRESHOLD\n        ]\n        preferences = context_result.get(\"preference_detail_list\", [])\n        return [*user_memories, *policy_memories], preferences, skills\n\n    def add_user_memories(self, messages, user_id, conversation_id, channel):\n        \"\"\"First write: generate only facts and preferences for the user.\"\"\"\n        user_data = {\n            \"user_id\": user_id,\n            \"conversation_id\": conversation_id,\n            \"info\": {\"channel\": channel, \"scene\": \"consumer_support\"},\n            \"allow_memory_view\": USER_WRITE_VIEWS,\n            \"messages\": messages,\n        }\n        self._post_memory(user_data, \"user facts and preferences\", timeout_seconds=120)\n\n    def add_agent_skill(self, messages, conversation_id, channel):\n        \"\"\"Second write: request a Skill create or update for the Agent.\"\"\"\n        skill_data = {\n            \"agent_id\": AGENT_ID,\n            \"conversation_id\": conversation_id,\n            \"info\": {\"channel\": channel, \"scene\": \"consumer_support\"},\n            \"allow_memory_view\": AGENT_SKILL_WRITE_VIEWS,\n            \"custom_extract_prompt\": {\"skill\": SKILL_EXTRACT_PROMPT},\n            \"messages\": messages,\n        }\n        self._post_memory(skill_data, \"Agent Skill\", timeout_seconds=300)\n\n    def _post_memory(self, data, label, timeout_seconds):\n        res = requests.post(\n            f\"{MEMOS_BASE_URL}/add/message\", headers=self.headers, json=data\n        )\n        body = res.json()\n        if body.get(\"code\") != 0:\n            print(f\"  [MemOS] Failed to write {label}: {body.get('message')}\")\n            return\n\n        details = body.get(\"data\") or {}\n        if details.get(\"status\") == \"running\" and details.get(\"task_id\"):\n            self._wait_for_task(details[\"task_id\"], label, timeout_seconds)\n\n    def _wait_for_task(self, task_id, label, timeout_seconds):\n        \"\"\"Wait for an asynchronous memory task to finish.\"\"\"\n        deadline = time.time() + timeout_seconds\n        while time.time() \u003C deadline:\n            time.sleep(2)\n            res = requests.post(\n                f\"{MEMOS_BASE_URL}/get/status\",\n                headers=self.headers,\n                json={\"task_id\": task_id},\n            )\n            body = res.json()\n            if body.get(\"code\") != 0:\n                sys.exit(f\"Failed to query memory task: {body.get('message')}\")\n            status = (body.get(\"data\") or {}).get(\"status\")\n            if status == \"completed\":\n                print(f\"  [MemOS] Finished writing {label}\")\n                return\n            if status in {\"failed\", \"error\", \"cancelled\", \"canceled\"}:\n                sys.exit(f\"Memory task failed: {task_id} -> {status}\")\n        sys.exit(f\"Timed out waiting for {label}: {task_id}\")\n\n    # ---- Prompt and generation ----\n\n    def build_system_prompt(self, channel, memories, preferences, skills):\n        channel_name = {\n            \"webchat\": \"web chat\",\n            \"email\": \"email ticket\",\n        }.get(channel, channel)\n\n        memory_text = \"\\n\".join(\n            f\"{i}. {item.get('memory_value')}\"\n            for i, item in enumerate(memories, 1)\n        ) or \"(No relevant memories)\"\n        preference_text = \"\\n\".join(\n            f\"{i}. {item.get('preference')}\"\n            for i, item in enumerate(preferences, 1)\n        ) or \"(No preference records)\"\n        # Inject only Skills with structured content.\n        valid_skills = [\n            item for item in skills\n            if isinstance(item.get(\"skill_value\"), dict)\n            and item[\"skill_value\"].get(\"name\")\n        ]\n        skill_text = \"\\n\".join(\n            f\"{i}. {item['skill_value']}\"\n            for i, item in enumerate(valid_skills, 1)\n        ) or \"(No matching Skills)\"\n\n        return f\"\"\"# Role\nYou are the brand's official customer service Agent, currently helping a\nconsumer through {channel_name}.\nUse the retrieved memories, preferences, after-sales policies, and Skills to\ngive an accurate, personalized, and actionable response.\n\n# Current time\n{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}\n\n# Retrieved user memories, policies, and Agent Skills\n\u003Cagent_memories>\n{memory_text}\n\u003C/agent_memories>\n\n\u003Cpreferences>\n{preference_text}\n\u003C/preferences>\n\n\u003Cskills>\n{skill_text}\n\u003C/skills>\n\n# Memory safety rules\n1. Distinguish the consumer's direct statements from system inferences. Treat\n   inferences only as supporting context and give direct statements priority.\n2. Confirm that a memory describes the current consumer, not another user or\n   a historical example. Never mix information between users.\n3. Use only memories directly relevant to the current request. Ignore keyword\n   matches from a different context.\n4. If a memory conflicts with the consumer's latest message, follow the latest\n   message.\n5. For policies, timelines, and monetary amounts, follow the policy knowledge\n   base.\n\n# Response requirements\n1. Answer directly. Do not mention internal concepts such as memory or\n   retrieval to the consumer.\n2. Proactively continue open cases without asking the consumer to repeat\n   information they already provided.\n3. Respond in the same language as the consumer.\"\"\"\n\n    def generate_reply(self, system_prompt, messages):\n        response = self.openai_client.chat.completions.create(\n            model=OPENAI_MODEL,\n            messages=[{\"role\": \"system\", \"content\": system_prompt}, *messages],\n            temperature=0.3,\n            top_p=0.9,\n        )\n        return response.choices[0].message.content\n\n    # ---- Main flow ----\n\n    def chat(self, query, user_id, conversation_id, channel, tool_steps=None):\n        # 1. Read current-session history from the Agent's own state.\n        history_key = (user_id, conversation_id)\n        history = self.conversation_histories.get(history_key, [])\n\n        # 2. Retrieve facts/preferences and Agent Skills/policies separately.\n        memories, preferences, skills = self.search_memory(\n            query, user_id, conversation_id\n        )\n        self._print_retrieved(memories, preferences, skills)\n\n        # 3. Build the task trace and generate a response from tool results.\n        llm_turn = [{\"role\": \"user\", \"content\": query}]\n        memory_messages = [{\"role\": \"user\", \"role_id\": user_id, \"content\": query}]\n        for step in tool_steps or []:\n            tool_call = {\n                \"role\": \"assistant\",\n                \"content\": \"\",\n                \"tool_calls\": [{\n                    \"id\": step[\"id\"],\n                    \"type\": \"function\",\n                    \"function\": {\n                        \"name\": step[\"name\"],\n                        \"arguments\": step[\"arguments\"],\n                    },\n                }],\n            }\n            tool_result = {\n                \"role\": \"tool\",\n                \"tool_call_id\": step[\"id\"],\n                \"content\": step[\"result\"],\n            }\n            llm_turn.extend([tool_call, tool_result])\n            memory_messages.extend([\n                {**tool_call, \"role_id\": AGENT_ID},\n                tool_result,\n            ])\n\n        system_prompt = self.build_system_prompt(\n            channel, memories, preferences, skills\n        )\n        reply = self.generate_reply(system_prompt, [*history, *llm_turn])\n\n        # 4. Save the session locally and write user context and Agent Skills.\n        self.conversation_histories.setdefault(history_key, []).extend([\n            {\"role\": \"user\", \"content\": query},\n            {\"role\": \"assistant\", \"content\": reply},\n        ])\n        memory_messages.append({\n            \"role\": \"assistant\",\n            \"role_id\": AGENT_ID,\n            \"content\": reply,\n        })\n        self.add_user_memories(memory_messages, user_id, conversation_id, channel)\n        self.add_agent_skill(memory_messages, conversation_id, channel)\n        return reply\n\n    @staticmethod\n    def _print_retrieved(memories, preferences, skills):\n        print(\"  ---- Retrieved MemOS Agent memory ----\")\n        for item in memories:\n            value = str(item.get(\"memory_value\", \"\")).replace(\"\\n\", \" \")\n            print(f\"  [Memory {item.get('relativity', 0):.2f}] {value[:80]}\")\n        for item in preferences:\n            print(f\"  [Preference] {item.get('preference')}\")\n        for item in skills:\n            value = item.get(\"skill_value\") or {}\n            label = value.get(\"name\") or f\"id={item.get('id')}\"\n            print(f\"  [Skill {item.get('relativity', 0):.2f}] {label}\")\n            print(f\"  [Skill details] {value}\")\n        print(\"  --------------------------------------\")\n\n\n# ---------------------------------------------------------------------------\n# Initialize the policy knowledge base\n# ---------------------------------------------------------------------------\n\ndef _b64_md(text):\n    encoded = base64.b64encode(text.encode(\"utf-8\")).decode(\"utf-8\")\n    return f\"data:text/markdown;base64,{encoded}\"\n\n\ndef _create_kb(headers, name, description):\n    res = requests.post(\n        f\"{MEMOS_BASE_URL}/create/knowledgebase\",\n        headers=headers,\n        json={\"knowledgebase_name\": name, \"knowledgebase_description\": description},\n    )\n    body = res.json()\n    if body.get(\"code\") != 0:\n        sys.exit(f\"Failed to create knowledge base: {body.get('message')}\")\n    kb_id = (\n        body.get(\"data\", {}).get(\"id\")\n        or body.get(\"data\", {}).get(\"knowledgebase_id\")\n    )\n    if not kb_id:\n        sys.exit(f\"Knowledge base created, but no ID was returned: {name}\")\n    print(f\"Knowledge base created: {name} -> {kb_id}\")\n    return kb_id\n\n\ndef _upload_file(headers, kb_id, name, text):\n    res = requests.post(\n        f\"{MEMOS_BASE_URL}/add/knowledgebase-file\",\n        headers=headers,\n        json={\n            \"knowledgebase_id\": kb_id,\n            \"file\": [{\"type\": \"document\", \"name\": name, \"content\": _b64_md(text)}],\n        },\n    )\n    if res.json().get(\"code\") != 0:\n        sys.exit(f\"Failed to upload policy: {res.json().get('message')}\")\n\n\ndef _wait_kb_ready(headers, kb_id):\n    for _ in range(40):\n        time.sleep(3)\n        res = requests.post(\n            f\"{MEMOS_BASE_URL}/get/knowledgebase-file\",\n            headers=headers,\n            json={\"knowledgebase_id\": kb_id, \"page\": 1, \"page_size\": 20},\n        )\n        files = res.json().get(\"data\", {}).get(\"file_detail_list\", [])\n        statuses = {str(item.get(\"status\", \"\")).lower() for item in files}\n        if files and statuses \u003C= {\"completed\", \"available\", \"failed\"}:\n            if \"failed\" in statuses:\n                sys.exit(f\"Policy processing failed for knowledge base {kb_id}\")\n            return\n    sys.exit(f\"Timed out waiting for policy knowledge base {kb_id}\")\n\n\ndef create_policy_knowledge_base():\n    headers = {\n        \"Content-Type\": \"application/json\",\n        \"Authorization\": f\"Token {MEMOS_API_KEY}\",\n    }\n    policy_kb_id = _create_kb(\n        headers,\n        \"Consumer After-Sales Policy\",\n        \"Policies for returns, exchanges, warranties, shipping, and invoices\",\n    )\n    _upload_file(\n        headers,\n        policy_kb_id,\n        \"consumer-after-sale-policy.md\",\n        POLICY_DOC_MD,\n    )\n    print(\"Policy uploaded. Waiting for processing...\")\n    _wait_kb_ready(headers, policy_kb_id)\n    print(f\"Policy knowledge base is ready: {policy_kb_id}\")\n    return policy_kb_id\n\n\n# ---------------------------------------------------------------------------\n# Demo: isolate user context and reuse Agent Skills across users\n# ---------------------------------------------------------------------------\n\nCUSTOMER_ID = \"customer_001\"    # Use a stable authenticated user ID in production.\nCUSTOMER_ID_2 = \"customer_002\"  # Verifies Skill reuse and user isolation.\n\n\ndef run_demo():\n    policy_kb_id = create_policy_knowledge_base()\n    assistant = CustomerServiceAssistant(policy_kb_id)\n\n    print(\"=\" * 64)\n    print(\"DAY 1 · Web chat: exchange request with delivery preferences\")\n    print(\"=\" * 64)\n    chat_conv = \"conv_chat_0821\"\n\n    q1 = (\n        \"Hi, I received order 20260820-88 on August 20. The left side of the \"\n        \"noise-canceling headset has a strong buzzing noise, and I want to \"\n        \"exchange it.\"\n    )\n    print(f\"\\n[Consumer] {q1}\")\n    # The Agent's actual work in order, ticket, and notification systems is\n    # written to MemOS as task-trace material for Skill extraction.\n    tool_steps = [\n        {\n            \"id\": \"call_1\",\n            \"name\": \"query_order\",\n            \"arguments\": '{\"order_id\": \"20260820-88\"}',\n            \"result\": (\n                '{\"order_id\": \"20260820-88\", \"product\": '\n                '\"noise-canceling headset\", \"sign_date\": \"2026-08-20\", '\n                '\"status\": \"delivered\"}'\n            ),\n        },\n        {\n            \"id\": \"call_2\",\n            \"name\": \"check_exchange_policy\",\n            \"arguments\": (\n                '{\"order_id\": \"20260820-88\", '\n                '\"issue\": \"buzzing noise in left side\"}'\n            ),\n            \"result\": (\n                '{\"eligible\": true, \"policy\": \"15-day exchange for performance '\n                'defects\", \"shipping\": \"covered both ways\"}'\n            ),\n        },\n        {\n            \"id\": \"call_3\",\n            \"name\": \"create_exchange_ticket\",\n            \"arguments\": (\n                '{\"order_id\": \"20260820-88\", '\n                '\"reason\": \"buzzing noise in left side\", '\n                '\"type\": \"defective product exchange\"}'\n            ),\n            \"result\": (\n                '{\"ticket_id\": \"EX20260821-03\", \"status\": \"created\"}'\n            ),\n        },\n        {\n            \"id\": \"call_4\",\n            \"name\": \"update_ticket\",\n            \"arguments\": (\n                '{\"ticket_id\": \"EX20260821-03\", '\n                '\"address\": \"100 Century Avenue, Pudong, Shanghai\", '\n                '\"deliver_before\": \"Friday\", \"notify\": \"sms\"}'\n            ),\n            \"result\": '{\"ticket_id\": \"EX20260821-03\", \"updated\": true}',\n        },\n        {\n            \"id\": \"call_5\",\n            \"name\": \"schedule_notification\",\n            \"arguments\": (\n                '{\"ticket_id\": \"EX20260821-03\", \"channel\": \"sms\", '\n                '\"events\": [\"shipped\", \"out for delivery\"]}'\n            ),\n            \"result\": '{\"scheduled\": true, \"channel\": \"sms\"}',\n        },\n    ]\n    print(\n        f\"[Customer Service] \"\n        f\"{assistant.chat(q1, CUSTOMER_ID, chat_conv, 'webchat', tool_steps=tool_steps)}\"\n    )\n\n    q2 = (\n        \"One more thing: I am traveling next week. Please send the replacement \"\n        \"to my office at 100 Century Avenue, Pudong, Shanghai by Friday, and \"\n        \"send progress updates by SMS.\"\n    )\n    print(f\"\\n[Consumer] {q2}\")\n    print(f\"[Customer Service] {assistant.chat(q2, CUSTOMER_ID, chat_conv, 'webchat')}\")\n\n    print()\n    print(\"=\" * 64)\n    print(\"DAY 4 · Email ticket: same consumer, new session and channel\")\n    print(\"=\" * 64)\n    mail_conv = \"conv_mail_0824\"\n\n    q3 = \"Hi, what is the status of the headset exchange I reported earlier?\"\n    print(f\"\\n[Consumer] {q3}\")\n    print(f\"[Customer Service] {assistant.chat(q3, CUSTOMER_ID, mail_conv, 'email')}\")\n\n    print()\n    print(\"=\" * 64)\n    print(\"DAY 7 · Web chat: another consumer with a similar issue\")\n    print(\"=\" * 64)\n    conv_2 = \"conv_chat_0828\"\n\n    q4 = \"Hi, my new noise-canceling headset has a buzzing noise. What should I do?\"\n    print(f\"\\n[Consumer] {q4}\")\n    print(f\"[Customer Service] {assistant.chat(q4, CUSTOMER_ID_2, conv_2, 'webchat')}\")\n\n    print()\n    print(\"Demo complete. Verify these three points:\")\n    print(\"1. The User Cube generates only facts and preferences; the Agent Cube\")\n    print(\"   generates only Skills.\")\n    print(\"2. DAY 4 retrieves facts and preferences from customer_001 memory.\")\n    print(\"3. DAY 7 does not expose facts or preferences from customer_001, but\")\n    print(f\"   it can retrieve generalized Skills from {AGENT_ID}.\")\n\n\nif __name__ == \"__main__\":\n    config = {\n        \"MEMOS_API_KEY\": MEMOS_API_KEY,\n        \"OPENAI_API_KEY\": OPENAI_API_KEY,\n        \"MEMOS_BASE_URL\": MEMOS_BASE_URL,\n        \"OPENAI_MODEL\": OPENAI_MODEL,\n        \"OPENAI_BASE_URL\": OPENAI_BASE_URL,\n        \"AGENT_ID\": AGENT_ID,\n    }\n    missing = [\n        name\n        for name, value in config.items()\n        if not value or value.startswith(\"YOUR_\")\n    ]\n    if missing:\n        sys.exit(f\"Configure these values at the top of the file: {', '.join(missing)}\")\n    if OpenAI is None:\n        sys.exit(\"Install the OpenAI SDK first: pip install openai\")\n    run_demo()\n",[36,1781,1782,1787,1791,1796,1801,1805,1810,1815,1819,1824,1829,1834,1839,1844,1849,1853,1858,1863,1868,1873,1877,1883,1889,1894,1900,1906,1911,1916,1925,1933,1941,1955,1960,1967,1972,1981,1995,2007,2019,2024,2030,2036,2041,2046,2059,2072,2086,2099,2112,2125,2130,2136,2161,2178,2203,2228,2233,2247,2253,2258,2264,2270,2276,2282,2288,2294,2300,2306,2312,2318,2323,2329,2335,2341,2347,2353,2359,2365,2371,2377,2383,2389,2394,2400,2406,2411,2416,2422,2433,2438,2443,2449,2454,2459,2472,2477,2483,2489,2495,2501,2507,2513,2518,2524,2530,2536,2542,2548,2553,2559,2565,2571,2577,2582,2588,2594,2600,2605,2610,2615,2620,2626,2631,2636,2646,2665,2683,2695,2713,2719,2732,2752,2777,2783,2800,2806,2821,2826,2832,2837,2863,2874,2884,2910,2925,2944,2959,2974,2979,2997,3016,3032,3045,3050,3068,3101,3130,3140,3176,3210,3216,3243,3251,3259,3270,3303,3309,3319,3328,3333,3343,3358,3373,3388,3403,3418,3433,3438,3454,3471,3486,3498,3503,3520,3548,3575,3582,3589,3599,3629,3634,3643,3648,3658,3689,3719,3725,3752,3785,3790,3819,3829,3839,3854,3869,3910,3925,3940,3945,3977,3982,4007,4017,4027,4042,4057,4098,4113,4138,4153,4158,4189,4194,4222,4238,4277,4282,4299,4328,4375,4381,4386,4414,4466,4500,4505,4532,4542,4567,4589,4607,4623,4641,4657,4679,4684,4700,4727,4769,4813,4833,4856,4862,4910,4945,4980,4985,4991,4996,5028,5038,5059,5080,5098,5103,5126,5167,5197,5212,5232,5269,5295,5309,5315,5325,5338,5371,5403,5408,5428,5462,5488,5502,5507,5517,5523,5539,5545,5551,5556,5562,5600,5605,5611,5617,5627,5633,5638,5644,5654,5660,5665,5671,5681,5687,5692,5698,5704,5710,5716,5722,5728,5734,5740,5746,5752,5758,5763,5769,5775,5781,5787,5793,5799,5804,5827,5858,5870,5918,5931,5944,5949,5976,5981,5987,5992,6032,6038,6056,6083,6088,6094,6120,6135,6140,6164,6169,6175,6215,6265,6285,6295,6314,6330,6345,6371,6392,6405,6429,6453,6459,6465,6471,6481,6501,6525,6549,6554,6579,6592,6617,6625,6631,6636,6653,6671,6676,6714,6719,6725,6752,6786,6819,6825,6837,6856,6871,6886,6892,6920,6944,6952,6957,6967,6989,7006,7019,7072,7133,7146,7182,7195,7222,7276,7326,7348,7364,7369,7374,7379,7385,7390,7395,7409,7458,7477,7482,7487,7510,7526,7545,7556,7592,7597,7613,7641,7681,7692,7726,7763,7768,7781,7807,7838,7846,7851,7856,7883,7898,7916,7927,7937,7952,8012,8018,8023,8054,8099,8104,8109,8127,8148,8165,8180,8198,8209,8257,8262,8307,8359,8403,8422,8448,8453,8480,8485,8490,8499,8508,8527,8552,8557,8568,8575,8586,8597,8602,8609,8616,8623,8634,8641,8646,8662,8677,8698,8705,8710,8715,8720,8726,8731,8736,8753,8770,8775,8780,8790,8801,8817,8822,8842,8858,8877,8892,8897,8907,8917,8927,8937,8942,8969,8975,8981,8991,8997,9017,9037,9058,9071,9083,9093,9103,9109,9114,9119,9139,9159,9172,9182,9192,9197,9210,9220,9230,9235,9240,9245,9265,9285,9298,9307,9317,9327,9332,9345,9355,9360,9365,9370,9390,9410,9423,9433,9443,9453,9458,9478,9483,9488,9508,9528,9541,9551,9561,9566,9586,9591,9597,9604,9612,9664,9669,9674,9684,9694,9704,9714,9719,9745,9793,9798,9805,9824,9840,9859,9874,9879,9894,9920,9968,9973,9980,9999,10015,10034,10049,10054,10069,10095,10144,10149,10156,10172,10188,10204,10220,10236,10259,10264,10269,10289,10299,10315,10331,10347,10363,10379,10394,10399,10409,10415,10439,10468,10473,10483,10524,10539,10559],{"__ignoreMap":68},[165,1783,1784],{"class":167,"line":168},[165,1785,1786],{"class":1609},"# -*- coding: utf-8 -*-\n",[165,1788,1789],{"class":167,"line":186},[165,1790,824],{"class":816},[165,1792,1793],{"class":167,"line":250},[165,1794,1795],{"class":820},"MemOS customer service best practice: a cross-channel, memory-enhanced\n",[165,1797,1798],{"class":167,"line":265},[165,1799,1800],{"class":820},"customer service Agent.\n",[165,1802,1803],{"class":167,"line":280},[165,1804,1604],{"emptyLinePlaceholder":1603},[165,1806,1807],{"class":167,"line":295},[165,1808,1809],{"class":820},"Scenario: consumer after-sales support. MemOS provides the customer service\n",[165,1811,1812],{"class":167,"line":447},[165,1813,1814],{"class":820},"Agent with three capabilities:\n",[165,1816,1817],{"class":167,"line":455},[165,1818,1604],{"emptyLinePlaceholder":1603},[165,1820,1821],{"class":167,"line":467},[165,1822,1823],{"class":820},"1. Each turn requests separate writes for user facts/preferences and Agent\n",[165,1825,1826],{"class":167,"line":479},[165,1827,1828],{"class":820},"   Skills. MemOS decides what should actually be stored.\n",[165,1830,1831],{"class":167,"line":485},[165,1832,1833],{"class":820},"2. After-sales policies are stored in a policy knowledge base and retrieved\n",[165,1835,1836],{"class":167,"line":493},[165,1837,1838],{"class":820},"   together with Agent memory.\n",[165,1840,1841],{"class":167,"line":500},[165,1842,1843],{"class":820},"3. Facts and preferences are retrieved by user_id, while Skills are retrieved\n",[165,1845,1846],{"class":167,"line":508},[165,1847,1848],{"class":820},"   from the Agent perspective and reused across users.\n",[165,1850,1851],{"class":167,"line":520},[165,1852,1604],{"emptyLinePlaceholder":1603},[165,1854,1855],{"class":167,"line":529},[165,1856,1857],{"class":820},"The demo enables only three memory types: facts, preferences, and Skills.\n",[165,1859,1860],{"class":167,"line":534},[165,1861,1862],{"class":820},"MemOS automatically distills Skills from complete task traces\n",[165,1864,1865],{"class":167,"line":553},[165,1866,1867],{"class":820},"(user → assistant.tool_calls → tool → assistant). Skill generation is\n",[165,1869,1870],{"class":167,"line":572},[165,1871,1872],{"class":820},"asynchronous and does not require a pre-uploaded Skill.\n",[165,1874,1875],{"class":167,"line":596},[165,1876,1604],{"emptyLinePlaceholder":1603},[165,1878,1880],{"class":167,"line":1879},21,[165,1881,1882],{"class":820},"Run:\n",[165,1884,1886],{"class":167,"line":1885},22,[165,1887,1888],{"class":820},"    pip install openai requests\n",[165,1890,1892],{"class":167,"line":1891},23,[165,1893,1604],{"emptyLinePlaceholder":1603},[165,1895,1897],{"class":167,"line":1896},24,[165,1898,1899],{"class":820},"    # Fill in each value under \"Demo configuration\" below.\n",[165,1901,1903],{"class":167,"line":1902},25,[165,1904,1905],{"class":820},"    python app.py\n",[165,1907,1909],{"class":167,"line":1908},26,[165,1910,824],{"class":816},[165,1912,1914],{"class":167,"line":1913},27,[165,1915,1604],{"emptyLinePlaceholder":1603},[165,1917,1919,1922],{"class":167,"line":1918},28,[165,1920,1921],{"class":599},"import",[165,1923,1924],{"class":364}," base64\n",[165,1926,1928,1930],{"class":167,"line":1927},29,[165,1929,1921],{"class":599},[165,1931,1932],{"class":364}," sys\n",[165,1934,1936,1938],{"class":167,"line":1935},30,[165,1937,1921],{"class":599},[165,1939,1940],{"class":364}," time\n",[165,1942,1944,1947,1950,1952],{"class":167,"line":1943},31,[165,1945,1946],{"class":599},"from",[165,1948,1949],{"class":364}," datetime ",[165,1951,1921],{"class":599},[165,1953,1954],{"class":364}," datetime\n",[165,1956,1958],{"class":167,"line":1957},32,[165,1959,1604],{"emptyLinePlaceholder":1603},[165,1961,1963,1965],{"class":167,"line":1962},33,[165,1964,1921],{"class":599},[165,1966,203],{"class":364},[165,1968,1970],{"class":167,"line":1969},34,[165,1971,1604],{"emptyLinePlaceholder":1603},[165,1973,1975,1978],{"class":167,"line":1974},35,[165,1976,1977],{"class":599},"try",[165,1979,1980],{"class":358},":\n",[165,1982,1984,1987,1990,1992],{"class":167,"line":1983},36,[165,1985,1986],{"class":599},"    from",[165,1988,1989],{"class":364}," openai ",[165,1991,1921],{"class":599},[165,1993,1994],{"class":364}," OpenAI\n",[165,1996,1998,2001,2005],{"class":167,"line":1997},37,[165,1999,2000],{"class":599},"except",[165,2002,2004],{"class":2003},"skqQ-"," ImportError",[165,2006,1980],{"class":358},[165,2008,2010,2013,2015],{"class":167,"line":2009},38,[165,2011,2012],{"class":364},"    OpenAI ",[165,2014,368],{"class":222},[165,2016,2018],{"class":2017},"smHB8"," None\n",[165,2020,2022],{"class":167,"line":2021},39,[165,2023,1604],{"emptyLinePlaceholder":1603},[165,2025,2027],{"class":167,"line":2026},40,[165,2028,2029],{"class":1609},"# ---------------------------------------------------------------------------\n",[165,2031,2033],{"class":167,"line":2032},41,[165,2034,2035],{"class":1609},"# Demo configuration\n",[165,2037,2039],{"class":167,"line":2038},42,[165,2040,2029],{"class":1609},[165,2042,2044],{"class":167,"line":2043},43,[165,2045,1604],{"emptyLinePlaceholder":1603},[165,2047,2049,2051,2053,2055,2057],{"class":167,"line":2048},44,[165,2050,219],{"class":218},[165,2052,223],{"class":222},[165,2054,227],{"class":226},[165,2056,230],{"class":179},[165,2058,233],{"class":226},[165,2060,2062,2064,2066,2068,2070],{"class":167,"line":2061},45,[165,2063,238],{"class":218},[165,2065,223],{"class":222},[165,2067,227],{"class":226},[165,2069,245],{"class":179},[165,2071,233],{"class":226},[165,2073,2075,2077,2079,2081,2084],{"class":167,"line":2074},46,[165,2076,253],{"class":218},[165,2078,223],{"class":222},[165,2080,227],{"class":226},[165,2082,2083],{"class":179},"https://memos.memtensor.cn/api/openmem/v1",[165,2085,233],{"class":226},[165,2087,2089,2091,2093,2095,2097],{"class":167,"line":2088},47,[165,2090,268],{"class":218},[165,2092,223],{"class":222},[165,2094,227],{"class":226},[165,2096,275],{"class":179},[165,2098,233],{"class":226},[165,2100,2102,2104,2106,2108,2110],{"class":167,"line":2101},48,[165,2103,283],{"class":218},[165,2105,223],{"class":222},[165,2107,227],{"class":226},[165,2109,290],{"class":179},[165,2111,233],{"class":226},[165,2113,2115,2117,2119,2121,2123],{"class":167,"line":2114},49,[165,2116,298],{"class":218},[165,2118,223],{"class":222},[165,2120,227],{"class":226},[165,2122,305],{"class":179},[165,2124,233],{"class":226},[165,2126,2128],{"class":167,"line":2127},50,[165,2129,1604],{"emptyLinePlaceholder":1603},[165,2131,2133],{"class":167,"line":2132},51,[165,2134,2135],{"class":1609},"# The user and Agent write different memory types; retrieval also uses two paths.\n",[165,2137,2139,2141,2143,2145,2147,2149,2151,2153,2155,2157,2159],{"class":167,"line":2138},52,[165,2140,658],{"class":218},[165,2142,223],{"class":222},[165,2144,663],{"class":358},[165,2146,382],{"class":226},[165,2148,668],{"class":179},[165,2150,382],{"class":226},[165,2152,564],{"class":358},[165,2154,227],{"class":226},[165,2156,677],{"class":179},[165,2158,382],{"class":226},[165,2160,682],{"class":358},[165,2162,2164,2166,2168,2170,2172,2174,2176],{"class":167,"line":2163},53,[165,2165,687],{"class":218},[165,2167,223],{"class":222},[165,2169,663],{"class":358},[165,2171,382],{"class":226},[165,2173,696],{"class":179},[165,2175,382],{"class":226},[165,2177,682],{"class":358},[165,2179,2181,2183,2185,2187,2189,2191,2193,2195,2197,2199,2201],{"class":167,"line":2180},54,[165,2182,705],{"class":218},[165,2184,223],{"class":222},[165,2186,663],{"class":358},[165,2188,382],{"class":226},[165,2190,668],{"class":179},[165,2192,382],{"class":226},[165,2194,564],{"class":358},[165,2196,227],{"class":226},[165,2198,677],{"class":179},[165,2200,382],{"class":226},[165,2202,682],{"class":358},[165,2204,2206,2208,2210,2212,2214,2216,2218,2220,2222,2224,2226],{"class":167,"line":2205},55,[165,2207,730],{"class":218},[165,2209,223],{"class":222},[165,2211,663],{"class":358},[165,2213,382],{"class":226},[165,2215,668],{"class":179},[165,2217,382],{"class":226},[165,2219,564],{"class":358},[165,2221,227],{"class":226},[165,2223,696],{"class":179},[165,2225,382],{"class":226},[165,2227,682],{"class":358},[165,2229,2231],{"class":167,"line":2230},56,[165,2232,1604],{"emptyLinePlaceholder":1603},[165,2234,2236,2239,2241,2244],{"class":167,"line":2235},57,[165,2237,2238],{"class":218},"SKILL_EXTRACT_PROMPT",[165,2240,223],{"class":222},[165,2242,2243],{"class":226}," \"\"\"",[165,2245,2246],{"class":179},"Distill a reusable, cross-user Skill from the complete\n",[165,2248,2250],{"class":167,"line":2249},58,[165,2251,2252],{"class":179},"customer service task trace.\n",[165,2254,2256],{"class":167,"line":2255},59,[165,2257,1604],{"emptyLinePlaceholder":1603},[165,2259,2261],{"class":167,"line":2260},60,[165,2262,2263],{"class":179},"Define Skill identity by its business goal, trigger conditions, core tool\n",[165,2265,2267],{"class":167,"line":2266},61,[165,2268,2269],{"class":179},"sequence, and success criteria. Compare against existing Skills before\n",[165,2271,2273],{"class":167,"line":2272},62,[165,2274,2275],{"class":179},"extracting a new one:\n",[165,2277,2279],{"class":167,"line":2278},63,[165,2280,2281],{"class":179},"- If an existing Skill covers the same goal, trigger conditions, and core tool\n",[165,2283,2285],{"class":167,"line":2284},64,[165,2286,2287],{"class":179},"  sequence, merge the new information into that Skill instead of creating a\n",[165,2289,2291],{"class":167,"line":2290},65,[165,2292,2293],{"class":179},"  duplicate.\n",[165,2295,2297],{"class":167,"line":2296},66,[165,2298,2299],{"class":179},"- If this trace adds no reusable steps, decision branches, or supporting\n",[165,2301,2303],{"class":167,"line":2302},67,[165,2304,2305],{"class":179},"  evidence, do not generate a Skill.\n",[165,2307,2309],{"class":167,"line":2308},68,[165,2310,2311],{"class":179},"- Create a new Skill only when the business goal or core workflow is\n",[165,2313,2315],{"class":167,"line":2314},69,[165,2316,2317],{"class":179},"  materially different.\n",[165,2319,2321],{"class":167,"line":2320},70,[165,2322,1604],{"emptyLinePlaceholder":1603},[165,2324,2326],{"class":167,"line":2325},71,[165,2327,2328],{"class":179},"Generalize all Skill content:\n",[165,2330,2332],{"class":167,"line":2331},72,[165,2333,2334],{"class":179},"- Remove names, contact details, addresses, user IDs, Agent IDs, conversation\n",[165,2336,2338],{"class":167,"line":2337},73,[165,2339,2340],{"class":179},"  IDs, order numbers, ticket numbers, and specific dates.\n",[165,2342,2344],{"class":167,"line":2343},74,[165,2345,2346],{"class":179},"- Replace instance values with parameters such as order_id, ticket_id, and\n",[165,2348,2350],{"class":167,"line":2349},75,[165,2351,2352],{"class":179},"  shipping_address.\n",[165,2354,2356],{"class":167,"line":2355},76,[165,2357,2358],{"class":179},"- Do not retain personal preferences or turn one user's timing or notification\n",[165,2360,2362],{"class":167,"line":2361},77,[165,2363,2364],{"class":179},"  requirements into general rules.\n",[165,2366,2368],{"class":167,"line":2367},78,[165,2369,2370],{"class":179},"- Do not copy specific policy conclusions. Describe only that the current\n",[165,2372,2374],{"class":167,"line":2373},79,[165,2375,2376],{"class":179},"  policy must be queried and validated.\n",[165,2378,2380],{"class":167,"line":2379},80,[165,2381,2382],{"class":179},"- Keep only steps supported by tool results. Do not present model suggestions\n",[165,2384,2386],{"class":167,"line":2385},81,[165,2387,2388],{"class":179},"  or unexecuted actions as verified experience.\n",[165,2390,2392],{"class":167,"line":2391},82,[165,2393,1604],{"emptyLinePlaceholder":1603},[165,2395,2397],{"class":167,"line":2396},83,[165,2398,2399],{"class":179},"Use a stable, concise Skill name based on the issue type and handling goal.\n",[165,2401,2403],{"class":167,"line":2402},84,[165,2404,2405],{"class":179},"Do not include user or case information in the name.\n",[165,2407,2409],{"class":167,"line":2408},85,[165,2410,824],{"class":226},[165,2412,2414],{"class":167,"line":2413},86,[165,2415,1604],{"emptyLinePlaceholder":1603},[165,2417,2419],{"class":167,"line":2418},87,[165,2420,2421],{"class":1609},"# Memories below this relevance score are not added to the prompt.\n",[165,2423,2425,2428,2430],{"class":167,"line":2424},88,[165,2426,2427],{"class":218},"RELATIVITY_THRESHOLD",[165,2429,223],{"class":222},[165,2431,2432],{"class":977}," 0.5\n",[165,2434,2436],{"class":167,"line":2435},89,[165,2437,1604],{"emptyLinePlaceholder":1603},[165,2439,2441],{"class":167,"line":2440},90,[165,2442,2029],{"class":1609},[165,2444,2446],{"class":167,"line":2445},91,[165,2447,2448],{"class":1609},"# Example policy uploaded to the policy knowledge base\n",[165,2450,2452],{"class":167,"line":2451},92,[165,2453,2029],{"class":1609},[165,2455,2457],{"class":167,"line":2456},93,[165,2458,1604],{"emptyLinePlaceholder":1603},[165,2460,2462,2465,2467,2469],{"class":167,"line":2461},94,[165,2463,2464],{"class":218},"POLICY_DOC_MD",[165,2466,223],{"class":222},[165,2468,2243],{"class":226},[165,2470,2471],{"class":179},"# Consumer After-Sales Policy (Example)\n",[165,2473,2475],{"class":167,"line":2474},95,[165,2476,1604],{"emptyLinePlaceholder":1603},[165,2478,2480],{"class":167,"line":2479},96,[165,2481,2482],{"class":179},"## Returns and exchanges\n",[165,2484,2486],{"class":167,"line":2485},97,[165,2487,2488],{"class":179},"- Unopened products that remain fit for resale can be returned within seven\n",[165,2490,2492],{"class":167,"line":2491},98,[165,2493,2494],{"class":179},"  days after delivery.\n",[165,2496,2498],{"class":167,"line":2497},99,[165,2499,2500],{"class":179},"- Products with performance defects can be exchanged within 15 days, with\n",[165,2502,2504],{"class":167,"line":2503},100,[165,2505,2506],{"class":179},"  shipping covered in both directions.\n",[165,2508,2510],{"class":167,"line":2509},101,[165,2511,2512],{"class":179},"- Customized products are not eligible for no-reason returns or exchanges.\n",[165,2514,2516],{"class":167,"line":2515},102,[165,2517,1604],{"emptyLinePlaceholder":1603},[165,2519,2521],{"class":167,"line":2520},103,[165,2522,2523],{"class":179},"## Warranty\n",[165,2525,2527],{"class":167,"line":2526},104,[165,2528,2529],{"class":179},"- The main device is covered for 12 months, and included accessories for six\n",[165,2531,2533],{"class":167,"line":2532},105,[165,2534,2535],{"class":179},"  months.\n",[165,2537,2539],{"class":167,"line":2538},106,[165,2540,2541],{"class":179},"- Non-human-caused damage is repaired free of charge during the warranty.\n",[165,2543,2545],{"class":167,"line":2544},107,[165,2546,2547],{"class":179},"  Human-caused damage is repaired at cost.\n",[165,2549,2551],{"class":167,"line":2550},108,[165,2552,1604],{"emptyLinePlaceholder":1603},[165,2554,2556],{"class":167,"line":2555},109,[165,2557,2558],{"class":179},"## Shipping\n",[165,2560,2562],{"class":167,"line":2561},110,[165,2563,2564],{"class":179},"- SF Express is the default carrier. The system sends the tracking number by\n",[165,2566,2568],{"class":167,"line":2567},111,[165,2569,2570],{"class":179},"  SMS after the replacement ships.\n",[165,2572,2574],{"class":167,"line":2573},112,[165,2575,2576],{"class":179},"- The delivery address can be changed once before the replacement ships.\n",[165,2578,2580],{"class":167,"line":2579},113,[165,2581,1604],{"emptyLinePlaceholder":1603},[165,2583,2585],{"class":167,"line":2584},114,[165,2586,2587],{"class":179},"## Invoices\n",[165,2589,2591],{"class":167,"line":2590},115,[165,2592,2593],{"class":179},"- Electronic standard invoices are issued by default and can be requested\n",[165,2595,2597],{"class":167,"line":2596},116,[165,2598,2599],{"class":179},"  from the order page after the order is completed.\n",[165,2601,2603],{"class":167,"line":2602},117,[165,2604,824],{"class":226},[165,2606,2608],{"class":167,"line":2607},118,[165,2609,1604],{"emptyLinePlaceholder":1603},[165,2611,2613],{"class":167,"line":2612},119,[165,2614,1604],{"emptyLinePlaceholder":1603},[165,2616,2618],{"class":167,"line":2617},120,[165,2619,2029],{"class":1609},[165,2621,2623],{"class":167,"line":2622},121,[165,2624,2625],{"class":1609},"# Customer service Agent: retrieve memory -> build prompt -> generate -> write\n",[165,2627,2629],{"class":167,"line":2628},122,[165,2630,2029],{"class":1609},[165,2632,2634],{"class":167,"line":2633},123,[165,2635,1604],{"emptyLinePlaceholder":1603},[165,2637,2639,2642,2644],{"class":167,"line":2638},124,[165,2640,2641],{"class":350},"class",[165,2643,633],{"class":171},[165,2645,1980],{"class":358},[165,2647,2649,2652,2655,2657,2659,2661,2663],{"class":167,"line":2648},125,[165,2650,2651],{"class":350},"    def",[165,2653,2654],{"class":523}," __init__",[165,2656,540],{"class":358},[165,2658,787],{"class":786},[165,2660,564],{"class":358},[165,2662,567],{"class":792},[165,2664,811],{"class":358},[165,2666,2668,2671,2673,2676,2678,2681],{"class":167,"line":2667},126,[165,2669,2670],{"class":218},"        self",[165,2672,95],{"class":358},[165,2674,2675],{"class":1476},"openai_client",[165,2677,223],{"class":222},[165,2679,2680],{"class":440}," OpenAI",[165,2682,444],{"class":358},[165,2684,2686,2689,2691,2693],{"class":167,"line":2685},127,[165,2687,2688],{"class":971},"            api_key",[165,2690,368],{"class":222},[165,2692,238],{"class":523},[165,2694,395],{"class":358},[165,2696,2698,2701,2703,2705,2708,2711],{"class":167,"line":2697},128,[165,2699,2700],{"class":971},"            base_url",[165,2702,368],{"class":222},[165,2704,283],{"class":523},[165,2706,2707],{"class":599}," or",[165,2709,2710],{"class":2017}," None",[165,2712,395],{"class":358},[165,2714,2716],{"class":167,"line":2715},129,[165,2717,2718],{"class":358},"        )\n",[165,2720,2722,2724,2726,2728,2730],{"class":167,"line":2721},130,[165,2723,2670],{"class":218},[165,2725,95],{"class":358},[165,2727,561],{"class":1476},[165,2729,223],{"class":222},[165,2731,371],{"class":358},[165,2733,2735,2738,2740,2742,2744,2746,2748,2750],{"class":167,"line":2734},131,[165,2736,2737],{"class":226},"            \"",[165,2739,379],{"class":179},[165,2741,382],{"class":226},[165,2743,385],{"class":358},[165,2745,227],{"class":226},[165,2747,390],{"class":179},[165,2749,382],{"class":226},[165,2751,395],{"class":358},[165,2753,2755,2757,2759,2761,2763,2765,2767,2769,2771,2773,2775],{"class":167,"line":2754},132,[165,2756,2737],{"class":226},[165,2758,402],{"class":179},[165,2760,382],{"class":226},[165,2762,385],{"class":358},[165,2764,409],{"class":350},[165,2766,412],{"class":179},[165,2768,416],{"class":415},[165,2770,219],{"class":218},[165,2772,421],{"class":415},[165,2774,382],{"class":179},[165,2776,395],{"class":358},[165,2778,2780],{"class":167,"line":2779},133,[165,2781,2782],{"class":358},"        }\n",[165,2784,2786,2788,2790,2792,2794,2796,2798],{"class":167,"line":2785},134,[165,2787,2670],{"class":218},[165,2789,95],{"class":358},[165,2791,1464],{"class":1476},[165,2793,223],{"class":222},[165,2795,663],{"class":358},[165,2797,587],{"class":364},[165,2799,682],{"class":358},[165,2801,2803],{"class":167,"line":2802},135,[165,2804,2805],{"class":1609},"        # The Agent owns current-session history; MemOS handles long-term memory.\n",[165,2807,2809,2811,2813,2816,2818],{"class":167,"line":2808},136,[165,2810,2670],{"class":218},[165,2812,95],{"class":358},[165,2814,2815],{"class":1476},"conversation_histories",[165,2817,223],{"class":222},[165,2819,2820],{"class":358}," {}\n",[165,2822,2824],{"class":167,"line":2823},137,[165,2825,1604],{"emptyLinePlaceholder":1603},[165,2827,2829],{"class":167,"line":2828},138,[165,2830,2831],{"class":1609},"    # ---- MemOS reads and writes ----\n",[165,2833,2835],{"class":167,"line":2834},139,[165,2836,1604],{"emptyLinePlaceholder":1603},[165,2838,2840,2842,2845,2847,2849,2851,2853,2855,2857,2859,2861],{"class":167,"line":2839},140,[165,2841,2651],{"class":350},[165,2843,2844],{"class":354}," search_memory",[165,2846,540],{"class":358},[165,2848,787],{"class":786},[165,2850,564],{"class":358},[165,2852,1306],{"class":792},[165,2854,564],{"class":358},[165,2856,798],{"class":792},[165,2858,564],{"class":358},[165,2860,803],{"class":792},[165,2862,811],{"class":358},[165,2864,2866,2869,2872],{"class":167,"line":2865},141,[165,2867,2868],{"class":816},"        \"\"\"",[165,2870,2871],{"class":820},"Retrieve user facts/preferences and Agent Skills/policies separately.",[165,2873,824],{"class":816},[165,2875,2877,2880,2882],{"class":167,"line":2876},142,[165,2878,2879],{"class":364},"        agent_data ",[165,2881,368],{"class":222},[165,2883,371],{"class":358},[165,2885,2887,2889,2891,2893,2895,2897,2900,2902,2904,2906,2908],{"class":167,"line":2886},143,[165,2888,2737],{"class":226},[165,2890,1299],{"class":179},[165,2892,382],{"class":226},[165,2894,385],{"class":358},[165,2896,409],{"class":350},[165,2898,2899],{"class":179},"\"General methods needed for this support request: ",[165,2901,416],{"class":415},[165,2903,1299],{"class":364},[165,2905,421],{"class":415},[165,2907,382],{"class":179},[165,2909,395],{"class":358},[165,2911,2913,2915,2917,2919,2921,2923],{"class":167,"line":2912},144,[165,2914,2737],{"class":226},[165,2916,104],{"class":179},[165,2918,382],{"class":226},[165,2920,385],{"class":358},[165,2922,1058],{"class":218},[165,2924,395],{"class":358},[165,2926,2928,2930,2932,2934,2936,2938,2940,2942],{"class":167,"line":2927},145,[165,2929,2737],{"class":226},[165,2931,1464],{"class":179},[165,2933,382],{"class":226},[165,2935,385],{"class":358},[165,2937,1471],{"class":218},[165,2939,95],{"class":358},[165,2941,1464],{"class":1476},[165,2943,395],{"class":358},[165,2945,2947,2949,2951,2953,2955,2957],{"class":167,"line":2946},146,[165,2948,2737],{"class":226},[165,2950,1343],{"class":179},[165,2952,382],{"class":226},[165,2954,385],{"class":358},[165,2956,1491],{"class":218},[165,2958,395],{"class":358},[165,2960,2962,2964,2966,2968,2970,2972],{"class":167,"line":2961},147,[165,2963,2737],{"class":226},[165,2965,1359],{"class":179},[165,2967,382],{"class":226},[165,2969,385],{"class":358},[165,2971,1366],{"class":977},[165,2973,395],{"class":358},[165,2975,2977],{"class":167,"line":2976},148,[165,2978,2782],{"class":358},[165,2980,2982,2985,2987,2990,2992,2995],{"class":167,"line":2981},149,[165,2983,2984],{"class":364},"        agent_res ",[165,2986,368],{"class":222},[165,2988,2989],{"class":364}," requests",[165,2991,95],{"class":358},[165,2993,2994],{"class":440},"post",[165,2996,444],{"class":358},[165,2998,3000,3003,3005,3007,3009,3011,3014],{"class":167,"line":2999},150,[165,3001,3002],{"class":350},"            f",[165,3004,382],{"class":179},[165,3006,416],{"class":415},[165,3008,253],{"class":523},[165,3010,421],{"class":415},[165,3012,3013],{"class":179},"/search/memory\"",[165,3015,395],{"class":358},[165,3017,3019,3022,3024,3026,3028,3030],{"class":167,"line":3018},151,[165,3020,3021],{"class":971},"            headers",[165,3023,368],{"class":222},[165,3025,787],{"class":218},[165,3027,95],{"class":358},[165,3029,561],{"class":1476},[165,3031,395],{"class":358},[165,3033,3035,3038,3040,3043],{"class":167,"line":3034},152,[165,3036,3037],{"class":971},"            json",[165,3039,368],{"class":222},[165,3041,3042],{"class":440},"agent_data",[165,3044,395],{"class":358},[165,3046,3048],{"class":167,"line":3047},153,[165,3049,2718],{"class":358},[165,3051,3053,3056,3058,3061,3063,3066],{"class":167,"line":3052},154,[165,3054,3055],{"class":364},"        agent_body ",[165,3057,368],{"class":222},[165,3059,3060],{"class":364}," agent_res",[165,3062,95],{"class":358},[165,3064,3065],{"class":440},"json",[165,3067,623],{"class":358},[165,3069,3071,3074,3077,3079,3082,3084,3086,3088,3090,3093,3096,3099],{"class":167,"line":3070},155,[165,3072,3073],{"class":599},"        if",[165,3075,3076],{"class":364}," agent_body",[165,3078,95],{"class":358},[165,3080,3081],{"class":440},"get",[165,3083,540],{"class":358},[165,3085,382],{"class":226},[165,3087,36],{"class":179},[165,3089,382],{"class":226},[165,3091,3092],{"class":358},")",[165,3094,3095],{"class":222}," ==",[165,3097,3098],{"class":977}," 0",[165,3100,1980],{"class":358},[165,3102,3104,3107,3109,3111,3113,3115,3117,3119,3122,3124,3126,3128],{"class":167,"line":3103},156,[165,3105,3106],{"class":364},"            agent_result ",[165,3108,368],{"class":222},[165,3110,3076],{"class":364},[165,3112,95],{"class":358},[165,3114,3081],{"class":440},[165,3116,540],{"class":358},[165,3118,382],{"class":226},[165,3120,3121],{"class":179},"data",[165,3123,382],{"class":226},[165,3125,3092],{"class":358},[165,3127,2707],{"class":222},[165,3129,2820],{"class":358},[165,3131,3133,3136,3138],{"class":167,"line":3132},157,[165,3134,3135],{"class":364},"            policy_memories ",[165,3137,368],{"class":222},[165,3139,1546],{"class":358},[165,3141,3143,3146,3149,3152,3155,3158,3160,3162,3164,3166,3169,3171,3173],{"class":167,"line":3142},158,[165,3144,3145],{"class":364},"                item ",[165,3147,3148],{"class":599},"for",[165,3150,3151],{"class":364}," item ",[165,3153,3154],{"class":599},"in",[165,3156,3157],{"class":364}," agent_result",[165,3159,95],{"class":358},[165,3161,3081],{"class":440},[165,3163,540],{"class":358},[165,3165,382],{"class":226},[165,3167,3168],{"class":179},"memory_detail_list",[165,3170,382],{"class":226},[165,3172,564],{"class":358},[165,3174,3175],{"class":358}," [])\n",[165,3177,3179,3182,3185,3187,3189,3191,3193,3196,3198,3200,3202,3204,3207],{"class":167,"line":3178},159,[165,3180,3181],{"class":599},"                if",[165,3183,3184],{"class":364}," item",[165,3186,95],{"class":358},[165,3188,3081],{"class":440},[165,3190,540],{"class":358},[165,3192,382],{"class":226},[165,3194,3195],{"class":179},"relativity",[165,3197,382],{"class":226},[165,3199,564],{"class":358},[165,3201,3098],{"class":977},[165,3203,3092],{"class":358},[165,3205,3206],{"class":222}," >=",[165,3208,3209],{"class":218}," RELATIVITY_THRESHOLD\n",[165,3211,3213],{"class":167,"line":3212},160,[165,3214,3215],{"class":358},"            ]\n",[165,3217,3219,3222,3224,3226,3228,3230,3232,3234,3237,3239,3241],{"class":167,"line":3218},161,[165,3220,3221],{"class":364},"            skills ",[165,3223,368],{"class":222},[165,3225,3157],{"class":364},[165,3227,95],{"class":358},[165,3229,3081],{"class":440},[165,3231,540],{"class":358},[165,3233,382],{"class":226},[165,3235,3236],{"class":179},"skill_detail_list",[165,3238,382],{"class":226},[165,3240,564],{"class":358},[165,3242,3175],{"class":358},[165,3244,3246,3249],{"class":167,"line":3245},162,[165,3247,3248],{"class":599},"        else",[165,3250,1980],{"class":358},[165,3252,3254,3257],{"class":167,"line":3253},163,[165,3255,3256],{"class":523},"            print",[165,3258,444],{"class":358},[165,3260,3262,3265,3268],{"class":167,"line":3261},164,[165,3263,3264],{"class":226},"                \"",[165,3266,3267],{"class":179},"  [MemOS] Failed to retrieve Agent Skills and policies: ",[165,3269,233],{"class":226},[165,3271,3273,3276,3278,3280,3283,3285,3287,3289,3292,3295,3297,3299,3301],{"class":167,"line":3272},165,[165,3274,3275],{"class":350},"                f",[165,3277,382],{"class":179},[165,3279,416],{"class":415},[165,3281,3282],{"class":440},"agent_body",[165,3284,95],{"class":358},[165,3286,3081],{"class":440},[165,3288,540],{"class":358},[165,3290,3291],{"class":226},"'",[165,3293,3294],{"class":179},"message",[165,3296,3291],{"class":226},[165,3298,3092],{"class":358},[165,3300,421],{"class":415},[165,3302,233],{"class":179},[165,3304,3306],{"class":167,"line":3305},166,[165,3307,3308],{"class":358},"            )\n",[165,3310,3312,3314,3316],{"class":167,"line":3311},167,[165,3313,3135],{"class":364},[165,3315,368],{"class":222},[165,3317,3318],{"class":358}," []\n",[165,3320,3322,3324,3326],{"class":167,"line":3321},168,[165,3323,3221],{"class":364},[165,3325,368],{"class":222},[165,3327,3318],{"class":358},[165,3329,3331],{"class":167,"line":3330},169,[165,3332,1604],{"emptyLinePlaceholder":1603},[165,3334,3336,3339,3341],{"class":167,"line":3335},170,[165,3337,3338],{"class":364},"        context_data ",[165,3340,368],{"class":222},[165,3342,371],{"class":358},[165,3344,3346,3348,3350,3352,3354,3356],{"class":167,"line":3345},171,[165,3347,2737],{"class":226},[165,3349,1299],{"class":179},[165,3351,382],{"class":226},[165,3353,385],{"class":358},[165,3355,1306],{"class":364},[165,3357,395],{"class":358},[165,3359,3361,3363,3365,3367,3369,3371],{"class":167,"line":3360},172,[165,3362,2737],{"class":226},[165,3364,38],{"class":179},[165,3366,382],{"class":226},[165,3368,385],{"class":358},[165,3370,798],{"class":364},[165,3372,395],{"class":358},[165,3374,3376,3378,3380,3382,3384,3386],{"class":167,"line":3375},173,[165,3377,2737],{"class":226},[165,3379,854],{"class":179},[165,3381,382],{"class":226},[165,3383,385],{"class":358},[165,3385,803],{"class":364},[165,3387,395],{"class":358},[165,3389,3391,3393,3395,3397,3399,3401],{"class":167,"line":3390},174,[165,3392,2737],{"class":226},[165,3394,1343],{"class":179},[165,3396,382],{"class":226},[165,3398,385],{"class":358},[165,3400,1350],{"class":218},[165,3402,395],{"class":358},[165,3404,3406,3408,3410,3412,3414,3416],{"class":167,"line":3405},175,[165,3407,2737],{"class":226},[165,3409,1359],{"class":179},[165,3411,382],{"class":226},[165,3413,385],{"class":358},[165,3415,1366],{"class":977},[165,3417,395],{"class":358},[165,3419,3421,3423,3425,3427,3429,3431],{"class":167,"line":3420},176,[165,3422,2737],{"class":226},[165,3424,1375],{"class":179},[165,3426,382],{"class":226},[165,3428,385],{"class":358},[165,3430,1382],{"class":977},[165,3432,395],{"class":358},[165,3434,3436],{"class":167,"line":3435},177,[165,3437,2782],{"class":358},[165,3439,3441,3444,3446,3448,3450,3452],{"class":167,"line":3440},178,[165,3442,3443],{"class":364},"        context_res ",[165,3445,368],{"class":222},[165,3447,2989],{"class":364},[165,3449,95],{"class":358},[165,3451,2994],{"class":440},[165,3453,444],{"class":358},[165,3455,3457,3459,3461,3463,3465,3467,3469],{"class":167,"line":3456},179,[165,3458,3002],{"class":350},[165,3460,382],{"class":179},[165,3462,416],{"class":415},[165,3464,253],{"class":523},[165,3466,421],{"class":415},[165,3468,3013],{"class":179},[165,3470,395],{"class":358},[165,3472,3474,3476,3478,3480,3482,3484],{"class":167,"line":3473},180,[165,3475,3021],{"class":971},[165,3477,368],{"class":222},[165,3479,787],{"class":218},[165,3481,95],{"class":358},[165,3483,561],{"class":1476},[165,3485,395],{"class":358},[165,3487,3489,3491,3493,3496],{"class":167,"line":3488},181,[165,3490,3037],{"class":971},[165,3492,368],{"class":222},[165,3494,3495],{"class":440},"context_data",[165,3497,395],{"class":358},[165,3499,3501],{"class":167,"line":3500},182,[165,3502,2718],{"class":358},[165,3504,3506,3509,3511,3514,3516,3518],{"class":167,"line":3505},183,[165,3507,3508],{"class":364},"        context_body ",[165,3510,368],{"class":222},[165,3512,3513],{"class":364}," context_res",[165,3515,95],{"class":358},[165,3517,3065],{"class":440},[165,3519,623],{"class":358},[165,3521,3523,3525,3528,3530,3532,3534,3536,3538,3540,3542,3544,3546],{"class":167,"line":3522},184,[165,3524,3073],{"class":599},[165,3526,3527],{"class":364}," context_body",[165,3529,95],{"class":358},[165,3531,3081],{"class":440},[165,3533,540],{"class":358},[165,3535,382],{"class":226},[165,3537,36],{"class":179},[165,3539,382],{"class":226},[165,3541,3092],{"class":358},[165,3543,3095],{"class":222},[165,3545,3098],{"class":977},[165,3547,1980],{"class":358},[165,3549,3551,3554,3556,3558,3560,3562,3564,3566,3568,3570,3572],{"class":167,"line":3550},185,[165,3552,3553],{"class":364},"            context_result ",[165,3555,368],{"class":222},[165,3557,3527],{"class":364},[165,3559,95],{"class":358},[165,3561,3081],{"class":440},[165,3563,540],{"class":358},[165,3565,382],{"class":226},[165,3567,3121],{"class":179},[165,3569,382],{"class":226},[165,3571,564],{"class":358},[165,3573,3574],{"class":358}," {})\n",[165,3576,3578,3580],{"class":167,"line":3577},186,[165,3579,3248],{"class":599},[165,3581,1980],{"class":358},[165,3583,3585,3587],{"class":167,"line":3584},187,[165,3586,3256],{"class":523},[165,3588,444],{"class":358},[165,3590,3592,3594,3597],{"class":167,"line":3591},188,[165,3593,3264],{"class":226},[165,3595,3596],{"class":179},"  [MemOS] Failed to retrieve user context: ",[165,3598,233],{"class":226},[165,3600,3602,3604,3606,3608,3611,3613,3615,3617,3619,3621,3623,3625,3627],{"class":167,"line":3601},189,[165,3603,3275],{"class":350},[165,3605,382],{"class":179},[165,3607,416],{"class":415},[165,3609,3610],{"class":440},"context_body",[165,3612,95],{"class":358},[165,3614,3081],{"class":440},[165,3616,540],{"class":358},[165,3618,3291],{"class":226},[165,3620,3294],{"class":179},[165,3622,3291],{"class":226},[165,3624,3092],{"class":358},[165,3626,421],{"class":415},[165,3628,233],{"class":179},[165,3630,3632],{"class":167,"line":3631},190,[165,3633,3308],{"class":358},[165,3635,3637,3639,3641],{"class":167,"line":3636},191,[165,3638,3553],{"class":364},[165,3640,368],{"class":222},[165,3642,2820],{"class":358},[165,3644,3646],{"class":167,"line":3645},192,[165,3647,1604],{"emptyLinePlaceholder":1603},[165,3649,3651,3654,3656],{"class":167,"line":3650},193,[165,3652,3653],{"class":364},"        user_memories ",[165,3655,368],{"class":222},[165,3657,1546],{"class":358},[165,3659,3661,3664,3666,3668,3670,3673,3675,3677,3679,3681,3683,3685,3687],{"class":167,"line":3660},194,[165,3662,3663],{"class":364},"            item ",[165,3665,3148],{"class":599},[165,3667,3151],{"class":364},[165,3669,3154],{"class":599},[165,3671,3672],{"class":364}," context_result",[165,3674,95],{"class":358},[165,3676,3081],{"class":440},[165,3678,540],{"class":358},[165,3680,382],{"class":226},[165,3682,3168],{"class":179},[165,3684,382],{"class":226},[165,3686,564],{"class":358},[165,3688,3175],{"class":358},[165,3690,3692,3695,3697,3699,3701,3703,3705,3707,3709,3711,3713,3715,3717],{"class":167,"line":3691},195,[165,3693,3694],{"class":599},"            if",[165,3696,3184],{"class":364},[165,3698,95],{"class":358},[165,3700,3081],{"class":440},[165,3702,540],{"class":358},[165,3704,382],{"class":226},[165,3706,3195],{"class":179},[165,3708,382],{"class":226},[165,3710,564],{"class":358},[165,3712,3098],{"class":977},[165,3714,3092],{"class":358},[165,3716,3206],{"class":222},[165,3718,3209],{"class":218},[165,3720,3722],{"class":167,"line":3721},196,[165,3723,3724],{"class":358},"        ]\n",[165,3726,3728,3731,3733,3735,3737,3739,3741,3743,3746,3748,3750],{"class":167,"line":3727},197,[165,3729,3730],{"class":364},"        preferences ",[165,3732,368],{"class":222},[165,3734,3672],{"class":364},[165,3736,95],{"class":358},[165,3738,3081],{"class":440},[165,3740,540],{"class":358},[165,3742,382],{"class":226},[165,3744,3745],{"class":179},"preference_detail_list",[165,3747,382],{"class":226},[165,3749,564],{"class":358},[165,3751,3175],{"class":358},[165,3753,3755,3758,3760,3763,3766,3768,3771,3774,3777,3780,3782],{"class":167,"line":3754},198,[165,3756,3757],{"class":599},"        return",[165,3759,663],{"class":358},[165,3761,3762],{"class":222},"*",[165,3764,3765],{"class":364},"user_memories",[165,3767,564],{"class":358},[165,3769,3770],{"class":222}," *",[165,3772,3773],{"class":364},"policy_memories",[165,3775,3776],{"class":358},"],",[165,3778,3779],{"class":364}," preferences",[165,3781,564],{"class":358},[165,3783,3784],{"class":364}," skills\n",[165,3786,3788],{"class":167,"line":3787},199,[165,3789,1604],{"emptyLinePlaceholder":1603},[165,3791,3793,3795,3797,3799,3801,3803,3805,3807,3809,3811,3813,3815,3817],{"class":167,"line":3792},200,[165,3794,2651],{"class":350},[165,3796,781],{"class":354},[165,3798,540],{"class":358},[165,3800,787],{"class":786},[165,3802,564],{"class":358},[165,3804,793],{"class":792},[165,3806,564],{"class":358},[165,3808,798],{"class":792},[165,3810,564],{"class":358},[165,3812,803],{"class":792},[165,3814,564],{"class":358},[165,3816,808],{"class":792},[165,3818,811],{"class":358},[165,3820,3822,3824,3827],{"class":167,"line":3821},201,[165,3823,2868],{"class":816},[165,3825,3826],{"class":820},"First write: generate only facts and preferences for the user.",[165,3828,824],{"class":816},[165,3830,3832,3835,3837],{"class":167,"line":3831},202,[165,3833,3834],{"class":364},"        user_data ",[165,3836,368],{"class":222},[165,3838,371],{"class":358},[165,3840,3842,3844,3846,3848,3850,3852],{"class":167,"line":3841},203,[165,3843,2737],{"class":226},[165,3845,38],{"class":179},[165,3847,382],{"class":226},[165,3849,385],{"class":358},[165,3851,798],{"class":364},[165,3853,395],{"class":358},[165,3855,3857,3859,3861,3863,3865,3867],{"class":167,"line":3856},204,[165,3858,2737],{"class":226},[165,3860,854],{"class":179},[165,3862,382],{"class":226},[165,3864,385],{"class":358},[165,3866,803],{"class":364},[165,3868,395],{"class":358},[165,3870,3872,3874,3876,3878,3880,3882,3884,3886,3888,3890,3892,3894,3896,3898,3900,3902,3904,3906,3908],{"class":167,"line":3871},205,[165,3873,2737],{"class":226},[165,3875,869],{"class":179},[165,3877,382],{"class":226},[165,3879,385],{"class":358},[165,3881,876],{"class":358},[165,3883,382],{"class":226},[165,3885,881],{"class":179},[165,3887,382],{"class":226},[165,3889,385],{"class":358},[165,3891,808],{"class":364},[165,3893,564],{"class":358},[165,3895,227],{"class":226},[165,3897,894],{"class":179},[165,3899,382],{"class":226},[165,3901,385],{"class":358},[165,3903,227],{"class":226},[165,3905,903],{"class":179},[165,3907,382],{"class":226},[165,3909,908],{"class":358},[165,3911,3913,3915,3917,3919,3921,3923],{"class":167,"line":3912},206,[165,3914,2737],{"class":226},[165,3916,134],{"class":179},[165,3918,382],{"class":226},[165,3920,385],{"class":358},[165,3922,921],{"class":218},[165,3924,395],{"class":358},[165,3926,3928,3930,3932,3934,3936,3938],{"class":167,"line":3927},207,[165,3929,2737],{"class":226},[165,3931,930],{"class":179},[165,3933,382],{"class":226},[165,3935,385],{"class":358},[165,3937,793],{"class":364},[165,3939,395],{"class":358},[165,3941,3943],{"class":167,"line":3942},208,[165,3944,2782],{"class":358},[165,3946,3948,3950,3952,3954,3956,3958,3960,3962,3965,3967,3969,3971,3973,3975],{"class":167,"line":3947},209,[165,3949,2670],{"class":218},[165,3951,95],{"class":358},[165,3953,952],{"class":440},[165,3955,540],{"class":358},[165,3957,957],{"class":440},[165,3959,564],{"class":358},[165,3961,227],{"class":226},[165,3963,3964],{"class":179},"user facts and preferences",[165,3966,382],{"class":226},[165,3968,564],{"class":358},[165,3970,972],{"class":971},[165,3972,368],{"class":222},[165,3974,978],{"class":977},[165,3976,550],{"class":358},[165,3978,3980],{"class":167,"line":3979},210,[165,3981,1604],{"emptyLinePlaceholder":1603},[165,3983,3985,3987,3989,3991,3993,3995,3997,3999,4001,4003,4005],{"class":167,"line":3984},211,[165,3986,2651],{"class":350},[165,3988,1009],{"class":354},[165,3990,540],{"class":358},[165,3992,787],{"class":786},[165,3994,564],{"class":358},[165,3996,793],{"class":792},[165,3998,564],{"class":358},[165,4000,803],{"class":792},[165,4002,564],{"class":358},[165,4004,808],{"class":792},[165,4006,811],{"class":358},[165,4008,4010,4012,4015],{"class":167,"line":4009},212,[165,4011,2868],{"class":816},[165,4013,4014],{"class":820},"Second write: request a Skill create or update for the Agent.",[165,4016,824],{"class":816},[165,4018,4020,4023,4025],{"class":167,"line":4019},213,[165,4021,4022],{"class":364},"        skill_data ",[165,4024,368],{"class":222},[165,4026,371],{"class":358},[165,4028,4030,4032,4034,4036,4038,4040],{"class":167,"line":4029},214,[165,4031,2737],{"class":226},[165,4033,104],{"class":179},[165,4035,382],{"class":226},[165,4037,385],{"class":358},[165,4039,1058],{"class":218},[165,4041,395],{"class":358},[165,4043,4045,4047,4049,4051,4053,4055],{"class":167,"line":4044},215,[165,4046,2737],{"class":226},[165,4048,854],{"class":179},[165,4050,382],{"class":226},[165,4052,385],{"class":358},[165,4054,803],{"class":364},[165,4056,395],{"class":358},[165,4058,4060,4062,4064,4066,4068,4070,4072,4074,4076,4078,4080,4082,4084,4086,4088,4090,4092,4094,4096],{"class":167,"line":4059},216,[165,4061,2737],{"class":226},[165,4063,869],{"class":179},[165,4065,382],{"class":226},[165,4067,385],{"class":358},[165,4069,876],{"class":358},[165,4071,382],{"class":226},[165,4073,881],{"class":179},[165,4075,382],{"class":226},[165,4077,385],{"class":358},[165,4079,808],{"class":364},[165,4081,564],{"class":358},[165,4083,227],{"class":226},[165,4085,894],{"class":179},[165,4087,382],{"class":226},[165,4089,385],{"class":358},[165,4091,227],{"class":226},[165,4093,903],{"class":179},[165,4095,382],{"class":226},[165,4097,908],{"class":358},[165,4099,4101,4103,4105,4107,4109,4111],{"class":167,"line":4100},217,[165,4102,2737],{"class":226},[165,4104,134],{"class":179},[165,4106,382],{"class":226},[165,4108,385],{"class":358},[165,4110,1127],{"class":218},[165,4112,395],{"class":358},[165,4114,4116,4118,4120,4122,4124,4126,4128,4130,4132,4134,4136],{"class":167,"line":4115},218,[165,4117,2737],{"class":226},[165,4119,1136],{"class":179},[165,4121,382],{"class":226},[165,4123,385],{"class":358},[165,4125,876],{"class":358},[165,4127,382],{"class":226},[165,4129,696],{"class":179},[165,4131,382],{"class":226},[165,4133,385],{"class":358},[165,4135,1153],{"class":218},[165,4137,908],{"class":358},[165,4139,4141,4143,4145,4147,4149,4151],{"class":167,"line":4140},219,[165,4142,2737],{"class":226},[165,4144,930],{"class":179},[165,4146,382],{"class":226},[165,4148,385],{"class":358},[165,4150,793],{"class":364},[165,4152,395],{"class":358},[165,4154,4156],{"class":167,"line":4155},220,[165,4157,2782],{"class":358},[165,4159,4161,4163,4165,4167,4169,4171,4173,4175,4177,4179,4181,4183,4185,4187],{"class":167,"line":4160},221,[165,4162,2670],{"class":218},[165,4164,95],{"class":358},[165,4166,952],{"class":440},[165,4168,540],{"class":358},[165,4170,1186],{"class":440},[165,4172,564],{"class":358},[165,4174,227],{"class":226},[165,4176,1193],{"class":179},[165,4178,382],{"class":226},[165,4180,564],{"class":358},[165,4182,972],{"class":971},[165,4184,368],{"class":222},[165,4186,1204],{"class":977},[165,4188,550],{"class":358},[165,4190,4192],{"class":167,"line":4191},222,[165,4193,1604],{"emptyLinePlaceholder":1603},[165,4195,4197,4199,4202,4204,4206,4208,4211,4213,4216,4218,4220],{"class":167,"line":4196},223,[165,4198,2651],{"class":350},[165,4200,4201],{"class":354}," _post_memory",[165,4203,540],{"class":358},[165,4205,787],{"class":786},[165,4207,564],{"class":358},[165,4209,4210],{"class":792}," data",[165,4212,564],{"class":358},[165,4214,4215],{"class":792}," label",[165,4217,564],{"class":358},[165,4219,972],{"class":792},[165,4221,811],{"class":358},[165,4223,4225,4228,4230,4232,4234,4236],{"class":167,"line":4224},224,[165,4226,4227],{"class":364},"        res ",[165,4229,368],{"class":222},[165,4231,2989],{"class":364},[165,4233,95],{"class":358},[165,4235,2994],{"class":440},[165,4237,444],{"class":358},[165,4239,4241,4243,4245,4247,4249,4251,4254,4256,4259,4261,4263,4265,4267,4269,4272,4274],{"class":167,"line":4240},225,[165,4242,3002],{"class":350},[165,4244,382],{"class":179},[165,4246,416],{"class":415},[165,4248,253],{"class":523},[165,4250,421],{"class":415},[165,4252,4253],{"class":179},"/add/message\"",[165,4255,564],{"class":358},[165,4257,4258],{"class":971}," headers",[165,4260,368],{"class":222},[165,4262,787],{"class":218},[165,4264,95],{"class":358},[165,4266,561],{"class":1476},[165,4268,564],{"class":358},[165,4270,4271],{"class":971}," json",[165,4273,368],{"class":222},[165,4275,4276],{"class":440},"data\n",[165,4278,4280],{"class":167,"line":4279},226,[165,4281,2718],{"class":358},[165,4283,4285,4288,4290,4293,4295,4297],{"class":167,"line":4284},227,[165,4286,4287],{"class":364},"        body ",[165,4289,368],{"class":222},[165,4291,4292],{"class":364}," res",[165,4294,95],{"class":358},[165,4296,3065],{"class":440},[165,4298,623],{"class":358},[165,4300,4302,4304,4307,4309,4311,4313,4315,4317,4319,4321,4324,4326],{"class":167,"line":4301},228,[165,4303,3073],{"class":599},[165,4305,4306],{"class":364}," body",[165,4308,95],{"class":358},[165,4310,3081],{"class":440},[165,4312,540],{"class":358},[165,4314,382],{"class":226},[165,4316,36],{"class":179},[165,4318,382],{"class":226},[165,4320,3092],{"class":358},[165,4322,4323],{"class":222}," !=",[165,4325,3098],{"class":977},[165,4327,1980],{"class":358},[165,4329,4331,4333,4335,4337,4340,4342,4345,4347,4350,4352,4355,4357,4359,4361,4363,4365,4367,4369,4371,4373],{"class":167,"line":4330},229,[165,4332,3256],{"class":523},[165,4334,540],{"class":358},[165,4336,579],{"class":350},[165,4338,4339],{"class":179},"\"  [MemOS] Failed to write ",[165,4341,416],{"class":415},[165,4343,4344],{"class":440},"label",[165,4346,421],{"class":415},[165,4348,4349],{"class":179},": ",[165,4351,416],{"class":415},[165,4353,4354],{"class":440},"body",[165,4356,95],{"class":358},[165,4358,3081],{"class":440},[165,4360,540],{"class":358},[165,4362,3291],{"class":226},[165,4364,3294],{"class":179},[165,4366,3291],{"class":226},[165,4368,3092],{"class":358},[165,4370,421],{"class":415},[165,4372,382],{"class":179},[165,4374,550],{"class":358},[165,4376,4378],{"class":167,"line":4377},230,[165,4379,4380],{"class":599},"            return\n",[165,4382,4384],{"class":167,"line":4383},231,[165,4385,1604],{"emptyLinePlaceholder":1603},[165,4387,4389,4392,4394,4396,4398,4400,4402,4404,4406,4408,4410,4412],{"class":167,"line":4388},232,[165,4390,4391],{"class":364},"        details ",[165,4393,368],{"class":222},[165,4395,4306],{"class":364},[165,4397,95],{"class":358},[165,4399,3081],{"class":440},[165,4401,540],{"class":358},[165,4403,382],{"class":226},[165,4405,3121],{"class":179},[165,4407,382],{"class":226},[165,4409,3092],{"class":358},[165,4411,2707],{"class":222},[165,4413,2820],{"class":358},[165,4415,4417,4419,4422,4424,4426,4428,4430,4433,4435,4437,4439,4441,4444,4446,4449,4451,4453,4455,4457,4459,4462,4464],{"class":167,"line":4416},233,[165,4418,3073],{"class":599},[165,4420,4421],{"class":364}," details",[165,4423,95],{"class":358},[165,4425,3081],{"class":440},[165,4427,540],{"class":358},[165,4429,382],{"class":226},[165,4431,4432],{"class":179},"status",[165,4434,382],{"class":226},[165,4436,3092],{"class":358},[165,4438,3095],{"class":222},[165,4440,227],{"class":226},[165,4442,4443],{"class":179},"running",[165,4445,382],{"class":226},[165,4447,4448],{"class":222}," and",[165,4450,4421],{"class":364},[165,4452,95],{"class":358},[165,4454,3081],{"class":440},[165,4456,540],{"class":358},[165,4458,382],{"class":226},[165,4460,4461],{"class":179},"task_id",[165,4463,382],{"class":226},[165,4465,811],{"class":358},[165,4467,4469,4472,4474,4477,4479,4481,4484,4486,4488,4490,4492,4494,4496,4498],{"class":167,"line":4468},234,[165,4470,4471],{"class":218},"            self",[165,4473,95],{"class":358},[165,4475,4476],{"class":440},"_wait_for_task",[165,4478,540],{"class":358},[165,4480,1750],{"class":440},[165,4482,4483],{"class":358},"[",[165,4485,382],{"class":226},[165,4487,4461],{"class":179},[165,4489,382],{"class":226},[165,4491,3776],{"class":358},[165,4493,4215],{"class":440},[165,4495,564],{"class":358},[165,4497,972],{"class":440},[165,4499,550],{"class":358},[165,4501,4503],{"class":167,"line":4502},235,[165,4504,1604],{"emptyLinePlaceholder":1603},[165,4506,4508,4510,4513,4515,4517,4519,4522,4524,4526,4528,4530],{"class":167,"line":4507},236,[165,4509,2651],{"class":350},[165,4511,4512],{"class":354}," _wait_for_task",[165,4514,540],{"class":358},[165,4516,787],{"class":786},[165,4518,564],{"class":358},[165,4520,4521],{"class":792}," task_id",[165,4523,564],{"class":358},[165,4525,4215],{"class":792},[165,4527,564],{"class":358},[165,4529,972],{"class":792},[165,4531,811],{"class":358},[165,4533,4535,4537,4540],{"class":167,"line":4534},237,[165,4536,2868],{"class":816},[165,4538,4539],{"class":820},"Wait for an asynchronous memory task to finish.",[165,4541,824],{"class":816},[165,4543,4545,4548,4550,4553,4555,4558,4561,4564],{"class":167,"line":4544},238,[165,4546,4547],{"class":364},"        deadline ",[165,4549,368],{"class":222},[165,4551,4552],{"class":364}," time",[165,4554,95],{"class":358},[165,4556,4557],{"class":440},"time",[165,4559,4560],{"class":358},"()",[165,4562,4563],{"class":222}," +",[165,4565,4566],{"class":364}," timeout_seconds\n",[165,4568,4570,4573,4575,4577,4579,4581,4584,4587],{"class":167,"line":4569},239,[165,4571,4572],{"class":599},"        while",[165,4574,4552],{"class":364},[165,4576,95],{"class":358},[165,4578,4557],{"class":440},[165,4580,4560],{"class":358},[165,4582,4583],{"class":222}," \u003C",[165,4585,4586],{"class":364}," deadline",[165,4588,1980],{"class":358},[165,4590,4592,4595,4597,4600,4602,4605],{"class":167,"line":4591},240,[165,4593,4594],{"class":364},"            time",[165,4596,95],{"class":358},[165,4598,4599],{"class":440},"sleep",[165,4601,540],{"class":358},[165,4603,4604],{"class":977},"2",[165,4606,550],{"class":358},[165,4608,4610,4613,4615,4617,4619,4621],{"class":167,"line":4609},241,[165,4611,4612],{"class":364},"            res ",[165,4614,368],{"class":222},[165,4616,2989],{"class":364},[165,4618,95],{"class":358},[165,4620,2994],{"class":440},[165,4622,444],{"class":358},[165,4624,4626,4628,4630,4632,4634,4636,4639],{"class":167,"line":4625},242,[165,4627,3275],{"class":350},[165,4629,382],{"class":179},[165,4631,416],{"class":415},[165,4633,253],{"class":523},[165,4635,421],{"class":415},[165,4637,4638],{"class":179},"/get/status\"",[165,4640,395],{"class":358},[165,4642,4644,4647,4649,4651,4653,4655],{"class":167,"line":4643},243,[165,4645,4646],{"class":971},"                headers",[165,4648,368],{"class":222},[165,4650,787],{"class":218},[165,4652,95],{"class":358},[165,4654,561],{"class":1476},[165,4656,395],{"class":358},[165,4658,4660,4663,4665,4667,4669,4671,4673,4675,4677],{"class":167,"line":4659},244,[165,4661,4662],{"class":971},"                json",[165,4664,368],{"class":222},[165,4666,416],{"class":358},[165,4668,382],{"class":226},[165,4670,4461],{"class":179},[165,4672,382],{"class":226},[165,4674,385],{"class":358},[165,4676,4521],{"class":440},[165,4678,908],{"class":358},[165,4680,4682],{"class":167,"line":4681},245,[165,4683,3308],{"class":358},[165,4685,4687,4690,4692,4694,4696,4698],{"class":167,"line":4686},246,[165,4688,4689],{"class":364},"            body ",[165,4691,368],{"class":222},[165,4693,4292],{"class":364},[165,4695,95],{"class":358},[165,4697,3065],{"class":440},[165,4699,623],{"class":358},[165,4701,4703,4705,4707,4709,4711,4713,4715,4717,4719,4721,4723,4725],{"class":167,"line":4702},247,[165,4704,3694],{"class":599},[165,4706,4306],{"class":364},[165,4708,95],{"class":358},[165,4710,3081],{"class":440},[165,4712,540],{"class":358},[165,4714,382],{"class":226},[165,4716,36],{"class":179},[165,4718,382],{"class":226},[165,4720,3092],{"class":358},[165,4722,4323],{"class":222},[165,4724,3098],{"class":977},[165,4726,1980],{"class":358},[165,4728,4730,4733,4735,4738,4740,4742,4745,4747,4749,4751,4753,4755,4757,4759,4761,4763,4765,4767],{"class":167,"line":4729},248,[165,4731,4732],{"class":364},"                sys",[165,4734,95],{"class":358},[165,4736,4737],{"class":440},"exit",[165,4739,540],{"class":358},[165,4741,579],{"class":350},[165,4743,4744],{"class":179},"\"Failed to query memory task: ",[165,4746,416],{"class":415},[165,4748,4354],{"class":440},[165,4750,95],{"class":358},[165,4752,3081],{"class":440},[165,4754,540],{"class":358},[165,4756,3291],{"class":226},[165,4758,3294],{"class":179},[165,4760,3291],{"class":226},[165,4762,3092],{"class":358},[165,4764,421],{"class":415},[165,4766,382],{"class":179},[165,4768,550],{"class":358},[165,4770,4772,4775,4777,4780,4782,4784,4786,4788,4790,4792,4794,4796,4798,4801,4803,4805,4807,4809,4811],{"class":167,"line":4771},249,[165,4773,4774],{"class":364},"            status ",[165,4776,368],{"class":222},[165,4778,4779],{"class":358}," (",[165,4781,4354],{"class":364},[165,4783,95],{"class":358},[165,4785,3081],{"class":440},[165,4787,540],{"class":358},[165,4789,382],{"class":226},[165,4791,3121],{"class":179},[165,4793,382],{"class":226},[165,4795,3092],{"class":358},[165,4797,2707],{"class":222},[165,4799,4800],{"class":358}," {}).",[165,4802,3081],{"class":440},[165,4804,540],{"class":358},[165,4806,382],{"class":226},[165,4808,4432],{"class":179},[165,4810,382],{"class":226},[165,4812,550],{"class":358},[165,4814,4816,4818,4821,4824,4826,4829,4831],{"class":167,"line":4815},250,[165,4817,3694],{"class":599},[165,4819,4820],{"class":364}," status ",[165,4822,4823],{"class":222},"==",[165,4825,227],{"class":226},[165,4827,4828],{"class":179},"completed",[165,4830,382],{"class":226},[165,4832,1980],{"class":358},[165,4834,4836,4839,4841,4843,4846,4848,4850,4852,4854],{"class":167,"line":4835},251,[165,4837,4838],{"class":523},"                print",[165,4840,540],{"class":358},[165,4842,579],{"class":350},[165,4844,4845],{"class":179},"\"  [MemOS] Finished writing ",[165,4847,416],{"class":415},[165,4849,4344],{"class":440},[165,4851,421],{"class":415},[165,4853,382],{"class":179},[165,4855,550],{"class":358},[165,4857,4859],{"class":167,"line":4858},252,[165,4860,4861],{"class":599},"                return\n",[165,4863,4865,4867,4869,4871,4873,4875,4878,4880,4882,4884,4887,4889,4891,4893,4896,4898,4900,4902,4905,4907],{"class":167,"line":4864},253,[165,4866,3694],{"class":599},[165,4868,4820],{"class":364},[165,4870,3154],{"class":222},[165,4872,876],{"class":358},[165,4874,382],{"class":226},[165,4876,4877],{"class":179},"failed",[165,4879,382],{"class":226},[165,4881,564],{"class":358},[165,4883,227],{"class":226},[165,4885,4886],{"class":179},"error",[165,4888,382],{"class":226},[165,4890,564],{"class":358},[165,4892,227],{"class":226},[165,4894,4895],{"class":179},"cancelled",[165,4897,382],{"class":226},[165,4899,564],{"class":358},[165,4901,227],{"class":226},[165,4903,4904],{"class":179},"canceled",[165,4906,382],{"class":226},[165,4908,4909],{"class":358},"}:\n",[165,4911,4913,4915,4917,4919,4921,4923,4926,4928,4930,4932,4935,4937,4939,4941,4943],{"class":167,"line":4912},254,[165,4914,4732],{"class":364},[165,4916,95],{"class":358},[165,4918,4737],{"class":440},[165,4920,540],{"class":358},[165,4922,579],{"class":350},[165,4924,4925],{"class":179},"\"Memory task failed: ",[165,4927,416],{"class":415},[165,4929,4461],{"class":440},[165,4931,421],{"class":415},[165,4933,4934],{"class":179}," -> ",[165,4936,416],{"class":415},[165,4938,4432],{"class":440},[165,4940,421],{"class":415},[165,4942,382],{"class":179},[165,4944,550],{"class":358},[165,4946,4948,4951,4953,4955,4957,4959,4962,4964,4966,4968,4970,4972,4974,4976,4978],{"class":167,"line":4947},255,[165,4949,4950],{"class":364},"        sys",[165,4952,95],{"class":358},[165,4954,4737],{"class":440},[165,4956,540],{"class":358},[165,4958,579],{"class":350},[165,4960,4961],{"class":179},"\"Timed out waiting for ",[165,4963,416],{"class":415},[165,4965,4344],{"class":440},[165,4967,421],{"class":415},[165,4969,4349],{"class":179},[165,4971,416],{"class":415},[165,4973,4461],{"class":440},[165,4975,421],{"class":415},[165,4977,382],{"class":179},[165,4979,550],{"class":358},[165,4981,4983],{"class":167,"line":4982},256,[165,4984,1604],{"emptyLinePlaceholder":1603},[165,4986,4988],{"class":167,"line":4987},257,[165,4989,4990],{"class":1609},"    # ---- Prompt and generation ----\n",[165,4992,4994],{"class":167,"line":4993},258,[165,4995,1604],{"emptyLinePlaceholder":1603},[165,4997,4999,5001,5004,5006,5008,5010,5012,5014,5017,5019,5021,5023,5026],{"class":167,"line":4998},259,[165,5000,2651],{"class":350},[165,5002,5003],{"class":354}," build_system_prompt",[165,5005,540],{"class":358},[165,5007,787],{"class":786},[165,5009,564],{"class":358},[165,5011,808],{"class":792},[165,5013,564],{"class":358},[165,5015,5016],{"class":792}," memories",[165,5018,564],{"class":358},[165,5020,3779],{"class":792},[165,5022,564],{"class":358},[165,5024,5025],{"class":792}," skills",[165,5027,811],{"class":358},[165,5029,5031,5034,5036],{"class":167,"line":5030},260,[165,5032,5033],{"class":364},"        channel_name ",[165,5035,368],{"class":222},[165,5037,371],{"class":358},[165,5039,5041,5043,5046,5048,5050,5052,5055,5057],{"class":167,"line":5040},261,[165,5042,2737],{"class":226},[165,5044,5045],{"class":179},"webchat",[165,5047,382],{"class":226},[165,5049,385],{"class":358},[165,5051,227],{"class":226},[165,5053,5054],{"class":179},"web chat",[165,5056,382],{"class":226},[165,5058,395],{"class":358},[165,5060,5062,5064,5067,5069,5071,5073,5076,5078],{"class":167,"line":5061},262,[165,5063,2737],{"class":226},[165,5065,5066],{"class":179},"email",[165,5068,382],{"class":226},[165,5070,385],{"class":358},[165,5072,227],{"class":226},[165,5074,5075],{"class":179},"email ticket",[165,5077,382],{"class":226},[165,5079,395],{"class":358},[165,5081,5083,5086,5088,5090,5092,5094,5096],{"class":167,"line":5082},263,[165,5084,5085],{"class":358},"        }.",[165,5087,3081],{"class":440},[165,5089,540],{"class":358},[165,5091,881],{"class":440},[165,5093,564],{"class":358},[165,5095,808],{"class":440},[165,5097,550],{"class":358},[165,5099,5101],{"class":167,"line":5100},264,[165,5102,1604],{"emptyLinePlaceholder":1603},[165,5104,5106,5109,5111,5113,5117,5119,5121,5124],{"class":167,"line":5105},265,[165,5107,5108],{"class":364},"        memory_text ",[165,5110,368],{"class":222},[165,5112,227],{"class":226},[165,5114,5116],{"class":5115},"seOsA","\\n",[165,5118,382],{"class":226},[165,5120,95],{"class":358},[165,5122,5123],{"class":440},"join",[165,5125,444],{"class":358},[165,5127,5129,5131,5133,5135,5138,5140,5143,5145,5148,5150,5152,5154,5156,5159,5161,5163,5165],{"class":167,"line":5128},266,[165,5130,3002],{"class":350},[165,5132,382],{"class":179},[165,5134,416],{"class":415},[165,5136,5137],{"class":440},"i",[165,5139,421],{"class":415},[165,5141,5142],{"class":179},". ",[165,5144,416],{"class":415},[165,5146,5147],{"class":440},"item",[165,5149,95],{"class":358},[165,5151,3081],{"class":440},[165,5153,540],{"class":358},[165,5155,3291],{"class":226},[165,5157,5158],{"class":179},"memory_value",[165,5160,3291],{"class":226},[165,5162,3092],{"class":358},[165,5164,421],{"class":415},[165,5166,233],{"class":179},[165,5168,5170,5173,5176,5178,5180,5182,5185,5187,5190,5192,5195],{"class":167,"line":5169},267,[165,5171,5172],{"class":599},"            for",[165,5174,5175],{"class":440}," i",[165,5177,564],{"class":358},[165,5179,3151],{"class":440},[165,5181,3154],{"class":599},[165,5183,5184],{"class":523}," enumerate",[165,5186,540],{"class":358},[165,5188,5189],{"class":440},"memories",[165,5191,564],{"class":358},[165,5193,5194],{"class":977}," 1",[165,5196,550],{"class":358},[165,5198,5200,5203,5205,5207,5210],{"class":167,"line":5199},268,[165,5201,5202],{"class":358},"        )",[165,5204,2707],{"class":222},[165,5206,227],{"class":226},[165,5208,5209],{"class":179},"(No relevant memories)",[165,5211,233],{"class":226},[165,5213,5215,5218,5220,5222,5224,5226,5228,5230],{"class":167,"line":5214},269,[165,5216,5217],{"class":364},"        preference_text ",[165,5219,368],{"class":222},[165,5221,227],{"class":226},[165,5223,5116],{"class":5115},[165,5225,382],{"class":226},[165,5227,95],{"class":358},[165,5229,5123],{"class":440},[165,5231,444],{"class":358},[165,5233,5235,5237,5239,5241,5243,5245,5247,5249,5251,5253,5255,5257,5259,5261,5263,5265,5267],{"class":167,"line":5234},270,[165,5236,3002],{"class":350},[165,5238,382],{"class":179},[165,5240,416],{"class":415},[165,5242,5137],{"class":440},[165,5244,421],{"class":415},[165,5246,5142],{"class":179},[165,5248,416],{"class":415},[165,5250,5147],{"class":440},[165,5252,95],{"class":358},[165,5254,3081],{"class":440},[165,5256,540],{"class":358},[165,5258,3291],{"class":226},[165,5260,677],{"class":179},[165,5262,3291],{"class":226},[165,5264,3092],{"class":358},[165,5266,421],{"class":415},[165,5268,233],{"class":179},[165,5270,5272,5274,5276,5278,5280,5282,5284,5286,5289,5291,5293],{"class":167,"line":5271},271,[165,5273,5172],{"class":599},[165,5275,5175],{"class":440},[165,5277,564],{"class":358},[165,5279,3151],{"class":440},[165,5281,3154],{"class":599},[165,5283,5184],{"class":523},[165,5285,540],{"class":358},[165,5287,5288],{"class":440},"preferences",[165,5290,564],{"class":358},[165,5292,5194],{"class":977},[165,5294,550],{"class":358},[165,5296,5298,5300,5302,5304,5307],{"class":167,"line":5297},272,[165,5299,5202],{"class":358},[165,5301,2707],{"class":222},[165,5303,227],{"class":226},[165,5305,5306],{"class":179},"(No preference records)",[165,5308,233],{"class":226},[165,5310,5312],{"class":167,"line":5311},273,[165,5313,5314],{"class":1609},"        # Inject only Skills with structured content.\n",[165,5316,5318,5321,5323],{"class":167,"line":5317},274,[165,5319,5320],{"class":364},"        valid_skills ",[165,5322,368],{"class":222},[165,5324,1546],{"class":358},[165,5326,5328,5330,5332,5334,5336],{"class":167,"line":5327},275,[165,5329,3663],{"class":364},[165,5331,3148],{"class":599},[165,5333,3151],{"class":364},[165,5335,3154],{"class":599},[165,5337,3784],{"class":364},[165,5339,5341,5343,5346,5348,5350,5352,5354,5356,5358,5361,5363,5366,5369],{"class":167,"line":5340},276,[165,5342,3694],{"class":599},[165,5344,5345],{"class":523}," isinstance",[165,5347,540],{"class":358},[165,5349,5147],{"class":440},[165,5351,95],{"class":358},[165,5353,3081],{"class":440},[165,5355,540],{"class":358},[165,5357,382],{"class":226},[165,5359,5360],{"class":179},"skill_value",[165,5362,382],{"class":226},[165,5364,5365],{"class":358},"),",[165,5367,5368],{"class":2003}," dict",[165,5370,550],{"class":358},[165,5372,5374,5377,5379,5381,5383,5385,5387,5390,5392,5394,5396,5399,5401],{"class":167,"line":5373},277,[165,5375,5376],{"class":222},"            and",[165,5378,3184],{"class":364},[165,5380,4483],{"class":358},[165,5382,382],{"class":226},[165,5384,5360],{"class":179},[165,5386,382],{"class":226},[165,5388,5389],{"class":358},"].",[165,5391,3081],{"class":440},[165,5393,540],{"class":358},[165,5395,382],{"class":226},[165,5397,5398],{"class":179},"name",[165,5400,382],{"class":226},[165,5402,550],{"class":358},[165,5404,5406],{"class":167,"line":5405},278,[165,5407,3724],{"class":358},[165,5409,5411,5414,5416,5418,5420,5422,5424,5426],{"class":167,"line":5410},279,[165,5412,5413],{"class":364},"        skill_text ",[165,5415,368],{"class":222},[165,5417,227],{"class":226},[165,5419,5116],{"class":5115},[165,5421,382],{"class":226},[165,5423,95],{"class":358},[165,5425,5123],{"class":440},[165,5427,444],{"class":358},[165,5429,5431,5433,5435,5437,5439,5441,5443,5445,5447,5449,5451,5453,5455,5458,5460],{"class":167,"line":5430},280,[165,5432,3002],{"class":350},[165,5434,382],{"class":179},[165,5436,416],{"class":415},[165,5438,5137],{"class":440},[165,5440,421],{"class":415},[165,5442,5142],{"class":179},[165,5444,416],{"class":415},[165,5446,5147],{"class":440},[165,5448,4483],{"class":358},[165,5450,3291],{"class":226},[165,5452,5360],{"class":179},[165,5454,3291],{"class":226},[165,5456,5457],{"class":358},"]",[165,5459,421],{"class":415},[165,5461,233],{"class":179},[165,5463,5465,5467,5469,5471,5473,5475,5477,5479,5482,5484,5486],{"class":167,"line":5464},281,[165,5466,5172],{"class":599},[165,5468,5175],{"class":440},[165,5470,564],{"class":358},[165,5472,3151],{"class":440},[165,5474,3154],{"class":599},[165,5476,5184],{"class":523},[165,5478,540],{"class":358},[165,5480,5481],{"class":440},"valid_skills",[165,5483,564],{"class":358},[165,5485,5194],{"class":977},[165,5487,550],{"class":358},[165,5489,5491,5493,5495,5497,5500],{"class":167,"line":5490},282,[165,5492,5202],{"class":358},[165,5494,2707],{"class":222},[165,5496,227],{"class":226},[165,5498,5499],{"class":179},"(No matching Skills)",[165,5501,233],{"class":226},[165,5503,5505],{"class":167,"line":5504},283,[165,5506,1604],{"emptyLinePlaceholder":1603},[165,5508,5510,5512,5514],{"class":167,"line":5509},284,[165,5511,3757],{"class":599},[165,5513,409],{"class":350},[165,5515,5516],{"class":179},"\"\"\"# Role\n",[165,5518,5520],{"class":167,"line":5519},285,[165,5521,5522],{"class":179},"You are the brand's official customer service Agent, currently helping a\n",[165,5524,5526,5529,5531,5534,5536],{"class":167,"line":5525},286,[165,5527,5528],{"class":179},"consumer through ",[165,5530,416],{"class":415},[165,5532,5533],{"class":364},"channel_name",[165,5535,421],{"class":415},[165,5537,5538],{"class":179},".\n",[165,5540,5542],{"class":167,"line":5541},287,[165,5543,5544],{"class":179},"Use the retrieved memories, preferences, after-sales policies, and Skills to\n",[165,5546,5548],{"class":167,"line":5547},288,[165,5549,5550],{"class":179},"give an accurate, personalized, and actionable response.\n",[165,5552,5554],{"class":167,"line":5553},289,[165,5555,1604],{"emptyLinePlaceholder":1603},[165,5557,5559],{"class":167,"line":5558},290,[165,5560,5561],{"class":179},"# Current time\n",[165,5563,5565,5567,5570,5572,5575,5578,5581,5583,5585,5588,5591,5594,5596,5598],{"class":167,"line":5564},291,[165,5566,416],{"class":415},[165,5568,5569],{"class":364},"datetime",[165,5571,95],{"class":358},[165,5573,5574],{"class":440},"now",[165,5576,5577],{"class":358},"().",[165,5579,5580],{"class":440},"strftime",[165,5582,540],{"class":358},[165,5584,3291],{"class":226},[165,5586,5587],{"class":179},"%Y-%m-",[165,5589,5590],{"class":415},"%d",[165,5592,5593],{"class":179}," %H:%M:%S",[165,5595,3291],{"class":226},[165,5597,3092],{"class":358},[165,5599,1389],{"class":415},[165,5601,5603],{"class":167,"line":5602},292,[165,5604,1604],{"emptyLinePlaceholder":1603},[165,5606,5608],{"class":167,"line":5607},293,[165,5609,5610],{"class":179},"# Retrieved user memories, policies, and Agent Skills\n",[165,5612,5614],{"class":167,"line":5613},294,[165,5615,5616],{"class":179},"\u003Cagent_memories>\n",[165,5618,5620,5622,5625],{"class":167,"line":5619},295,[165,5621,416],{"class":415},[165,5623,5624],{"class":364},"memory_text",[165,5626,1389],{"class":415},[165,5628,5630],{"class":167,"line":5629},296,[165,5631,5632],{"class":179},"\u003C/agent_memories>\n",[165,5634,5636],{"class":167,"line":5635},297,[165,5637,1604],{"emptyLinePlaceholder":1603},[165,5639,5641],{"class":167,"line":5640},298,[165,5642,5643],{"class":179},"\u003Cpreferences>\n",[165,5645,5647,5649,5652],{"class":167,"line":5646},299,[165,5648,416],{"class":415},[165,5650,5651],{"class":364},"preference_text",[165,5653,1389],{"class":415},[165,5655,5657],{"class":167,"line":5656},300,[165,5658,5659],{"class":179},"\u003C/preferences>\n",[165,5661,5663],{"class":167,"line":5662},301,[165,5664,1604],{"emptyLinePlaceholder":1603},[165,5666,5668],{"class":167,"line":5667},302,[165,5669,5670],{"class":179},"\u003Cskills>\n",[165,5672,5674,5676,5679],{"class":167,"line":5673},303,[165,5675,416],{"class":415},[165,5677,5678],{"class":364},"skill_text",[165,5680,1389],{"class":415},[165,5682,5684],{"class":167,"line":5683},304,[165,5685,5686],{"class":179},"\u003C/skills>\n",[165,5688,5690],{"class":167,"line":5689},305,[165,5691,1604],{"emptyLinePlaceholder":1603},[165,5693,5695],{"class":167,"line":5694},306,[165,5696,5697],{"class":179},"# Memory safety rules\n",[165,5699,5701],{"class":167,"line":5700},307,[165,5702,5703],{"class":179},"1. Distinguish the consumer's direct statements from system inferences. Treat\n",[165,5705,5707],{"class":167,"line":5706},308,[165,5708,5709],{"class":179},"   inferences only as supporting context and give direct statements priority.\n",[165,5711,5713],{"class":167,"line":5712},309,[165,5714,5715],{"class":179},"2. Confirm that a memory describes the current consumer, not another user or\n",[165,5717,5719],{"class":167,"line":5718},310,[165,5720,5721],{"class":179},"   a historical example. Never mix information between users.\n",[165,5723,5725],{"class":167,"line":5724},311,[165,5726,5727],{"class":179},"3. Use only memories directly relevant to the current request. Ignore keyword\n",[165,5729,5731],{"class":167,"line":5730},312,[165,5732,5733],{"class":179},"   matches from a different context.\n",[165,5735,5737],{"class":167,"line":5736},313,[165,5738,5739],{"class":179},"4. If a memory conflicts with the consumer's latest message, follow the latest\n",[165,5741,5743],{"class":167,"line":5742},314,[165,5744,5745],{"class":179},"   message.\n",[165,5747,5749],{"class":167,"line":5748},315,[165,5750,5751],{"class":179},"5. For policies, timelines, and monetary amounts, follow the policy knowledge\n",[165,5753,5755],{"class":167,"line":5754},316,[165,5756,5757],{"class":179},"   base.\n",[165,5759,5761],{"class":167,"line":5760},317,[165,5762,1604],{"emptyLinePlaceholder":1603},[165,5764,5766],{"class":167,"line":5765},318,[165,5767,5768],{"class":179},"# Response requirements\n",[165,5770,5772],{"class":167,"line":5771},319,[165,5773,5774],{"class":179},"1. Answer directly. Do not mention internal concepts such as memory or\n",[165,5776,5778],{"class":167,"line":5777},320,[165,5779,5780],{"class":179},"   retrieval to the consumer.\n",[165,5782,5784],{"class":167,"line":5783},321,[165,5785,5786],{"class":179},"2. Proactively continue open cases without asking the consumer to repeat\n",[165,5788,5790],{"class":167,"line":5789},322,[165,5791,5792],{"class":179},"   information they already provided.\n",[165,5794,5796],{"class":167,"line":5795},323,[165,5797,5798],{"class":179},"3. Respond in the same language as the consumer.\"\"\"\n",[165,5800,5802],{"class":167,"line":5801},324,[165,5803,1604],{"emptyLinePlaceholder":1603},[165,5805,5807,5809,5812,5814,5816,5818,5821,5823,5825],{"class":167,"line":5806},325,[165,5808,2651],{"class":350},[165,5810,5811],{"class":354}," generate_reply",[165,5813,540],{"class":358},[165,5815,787],{"class":786},[165,5817,564],{"class":358},[165,5819,5820],{"class":792}," system_prompt",[165,5822,564],{"class":358},[165,5824,793],{"class":792},[165,5826,811],{"class":358},[165,5828,5830,5833,5835,5837,5839,5841,5843,5846,5848,5851,5853,5856],{"class":167,"line":5829},326,[165,5831,5832],{"class":364},"        response ",[165,5834,368],{"class":222},[165,5836,1471],{"class":218},[165,5838,95],{"class":358},[165,5840,2675],{"class":1476},[165,5842,95],{"class":358},[165,5844,5845],{"class":1476},"chat",[165,5847,95],{"class":358},[165,5849,5850],{"class":1476},"completions",[165,5852,95],{"class":358},[165,5854,5855],{"class":440},"create",[165,5857,444],{"class":358},[165,5859,5861,5864,5866,5868],{"class":167,"line":5860},327,[165,5862,5863],{"class":971},"            model",[165,5865,368],{"class":222},[165,5867,268],{"class":523},[165,5869,395],{"class":358},[165,5871,5873,5876,5878,5881,5883,5885,5887,5889,5891,5894,5896,5898,5900,5902,5904,5906,5908,5911,5913,5915],{"class":167,"line":5872},328,[165,5874,5875],{"class":971},"            messages",[165,5877,368],{"class":222},[165,5879,5880],{"class":358},"[{",[165,5882,382],{"class":226},[165,5884,1556],{"class":179},[165,5886,382],{"class":226},[165,5888,385],{"class":358},[165,5890,227],{"class":226},[165,5892,5893],{"class":179},"system",[165,5895,382],{"class":226},[165,5897,564],{"class":358},[165,5899,227],{"class":226},[165,5901,1586],{"class":179},[165,5903,382],{"class":226},[165,5905,385],{"class":358},[165,5907,5820],{"class":440},[165,5909,5910],{"class":358},"},",[165,5912,3770],{"class":222},[165,5914,930],{"class":440},[165,5916,5917],{"class":358},"],\n",[165,5919,5921,5924,5926,5929],{"class":167,"line":5920},329,[165,5922,5923],{"class":971},"            temperature",[165,5925,368],{"class":222},[165,5927,5928],{"class":977},"0.3",[165,5930,395],{"class":358},[165,5932,5934,5937,5939,5942],{"class":167,"line":5933},330,[165,5935,5936],{"class":971},"            top_p",[165,5938,368],{"class":222},[165,5940,5941],{"class":977},"0.9",[165,5943,395],{"class":358},[165,5945,5947],{"class":167,"line":5946},331,[165,5948,2718],{"class":358},[165,5950,5952,5954,5957,5959,5962,5964,5967,5969,5971,5973],{"class":167,"line":5951},332,[165,5953,3757],{"class":599},[165,5955,5956],{"class":364}," response",[165,5958,95],{"class":358},[165,5960,5961],{"class":1476},"choices",[165,5963,4483],{"class":358},[165,5965,5966],{"class":977},"0",[165,5968,5389],{"class":358},[165,5970,3294],{"class":1476},[165,5972,95],{"class":358},[165,5974,5975],{"class":1476},"content\n",[165,5977,5979],{"class":167,"line":5978},333,[165,5980,1604],{"emptyLinePlaceholder":1603},[165,5982,5984],{"class":167,"line":5983},334,[165,5985,5986],{"class":1609},"    # ---- Main flow ----\n",[165,5988,5990],{"class":167,"line":5989},335,[165,5991,1604],{"emptyLinePlaceholder":1603},[165,5993,5995,5997,6000,6002,6004,6006,6008,6010,6012,6014,6016,6018,6020,6022,6025,6027,6030],{"class":167,"line":5994},336,[165,5996,2651],{"class":350},[165,5998,5999],{"class":354}," chat",[165,6001,540],{"class":358},[165,6003,787],{"class":786},[165,6005,564],{"class":358},[165,6007,1306],{"class":792},[165,6009,564],{"class":358},[165,6011,798],{"class":792},[165,6013,564],{"class":358},[165,6015,803],{"class":792},[165,6017,564],{"class":358},[165,6019,808],{"class":792},[165,6021,564],{"class":358},[165,6023,6024],{"class":792}," tool_steps",[165,6026,368],{"class":222},[165,6028,6029],{"class":2017},"None",[165,6031,811],{"class":358},[165,6033,6035],{"class":167,"line":6034},337,[165,6036,6037],{"class":1609},"        # 1. Read current-session history from the Agent's own state.\n",[165,6039,6041,6044,6046,6048,6050,6052,6054],{"class":167,"line":6040},338,[165,6042,6043],{"class":364},"        history_key ",[165,6045,368],{"class":222},[165,6047,4779],{"class":358},[165,6049,38],{"class":364},[165,6051,564],{"class":358},[165,6053,803],{"class":364},[165,6055,550],{"class":358},[165,6057,6059,6062,6064,6066,6068,6070,6072,6074,6076,6079,6081],{"class":167,"line":6058},339,[165,6060,6061],{"class":364},"        history ",[165,6063,368],{"class":222},[165,6065,1471],{"class":218},[165,6067,95],{"class":358},[165,6069,2815],{"class":1476},[165,6071,95],{"class":358},[165,6073,3081],{"class":440},[165,6075,540],{"class":358},[165,6077,6078],{"class":440},"history_key",[165,6080,564],{"class":358},[165,6082,3175],{"class":358},[165,6084,6086],{"class":167,"line":6085},340,[165,6087,1604],{"emptyLinePlaceholder":1603},[165,6089,6091],{"class":167,"line":6090},341,[165,6092,6093],{"class":1609},"        # 2. Retrieve facts/preferences and Agent Skills/policies separately.\n",[165,6095,6097,6100,6102,6104,6106,6109,6111,6113,6115,6118],{"class":167,"line":6096},342,[165,6098,6099],{"class":364},"        memories",[165,6101,564],{"class":358},[165,6103,3779],{"class":364},[165,6105,564],{"class":358},[165,6107,6108],{"class":364}," skills ",[165,6110,368],{"class":222},[165,6112,1471],{"class":218},[165,6114,95],{"class":358},[165,6116,6117],{"class":440},"search_memory",[165,6119,444],{"class":358},[165,6121,6123,6126,6128,6130,6132],{"class":167,"line":6122},343,[165,6124,6125],{"class":440},"            query",[165,6127,564],{"class":358},[165,6129,798],{"class":440},[165,6131,564],{"class":358},[165,6133,6134],{"class":440}," conversation_id\n",[165,6136,6138],{"class":167,"line":6137},344,[165,6139,2718],{"class":358},[165,6141,6143,6145,6147,6150,6152,6154,6156,6158,6160,6162],{"class":167,"line":6142},345,[165,6144,2670],{"class":218},[165,6146,95],{"class":358},[165,6148,6149],{"class":440},"_print_retrieved",[165,6151,540],{"class":358},[165,6153,5189],{"class":440},[165,6155,564],{"class":358},[165,6157,3779],{"class":440},[165,6159,564],{"class":358},[165,6161,5025],{"class":440},[165,6163,550],{"class":358},[165,6165,6167],{"class":167,"line":6166},346,[165,6168,1604],{"emptyLinePlaceholder":1603},[165,6170,6172],{"class":167,"line":6171},347,[165,6173,6174],{"class":1609},"        # 3. Build the task trace and generate a response from tool results.\n",[165,6176,6178,6181,6183,6186,6188,6190,6192,6194,6196,6198,6200,6202,6204,6206,6208,6210,6212],{"class":167,"line":6177},348,[165,6179,6180],{"class":364},"        llm_turn ",[165,6182,368],{"class":222},[165,6184,6185],{"class":358}," [{",[165,6187,382],{"class":226},[165,6189,1556],{"class":179},[165,6191,382],{"class":226},[165,6193,385],{"class":358},[165,6195,227],{"class":226},[165,6197,1565],{"class":179},[165,6199,382],{"class":226},[165,6201,564],{"class":358},[165,6203,227],{"class":226},[165,6205,1586],{"class":179},[165,6207,382],{"class":226},[165,6209,385],{"class":358},[165,6211,1306],{"class":364},[165,6213,6214],{"class":358},"}]\n",[165,6216,6218,6221,6223,6225,6227,6229,6231,6233,6235,6237,6239,6241,6243,6245,6247,6249,6251,6253,6255,6257,6259,6261,6263],{"class":167,"line":6217},349,[165,6219,6220],{"class":364},"        memory_messages ",[165,6222,368],{"class":222},[165,6224,6185],{"class":358},[165,6226,382],{"class":226},[165,6228,1556],{"class":179},[165,6230,382],{"class":226},[165,6232,385],{"class":358},[165,6234,227],{"class":226},[165,6236,1565],{"class":179},[165,6238,382],{"class":226},[165,6240,564],{"class":358},[165,6242,227],{"class":226},[165,6244,1525],{"class":179},[165,6246,382],{"class":226},[165,6248,385],{"class":358},[165,6250,798],{"class":364},[165,6252,564],{"class":358},[165,6254,227],{"class":226},[165,6256,1586],{"class":179},[165,6258,382],{"class":226},[165,6260,385],{"class":358},[165,6262,1306],{"class":364},[165,6264,6214],{"class":358},[165,6266,6268,6271,6274,6276,6279,6282],{"class":167,"line":6267},350,[165,6269,6270],{"class":599},"        for",[165,6272,6273],{"class":364}," step ",[165,6275,3154],{"class":599},[165,6277,6278],{"class":364}," tool_steps ",[165,6280,6281],{"class":222},"or",[165,6283,6284],{"class":358}," []:\n",[165,6286,6288,6291,6293],{"class":167,"line":6287},351,[165,6289,6290],{"class":364},"            tool_call ",[165,6292,368],{"class":222},[165,6294,371],{"class":358},[165,6296,6298,6300,6302,6304,6306,6308,6310,6312],{"class":167,"line":6297},352,[165,6299,3264],{"class":226},[165,6301,1556],{"class":179},[165,6303,382],{"class":226},[165,6305,385],{"class":358},[165,6307,227],{"class":226},[165,6309,1647],{"class":179},[165,6311,382],{"class":226},[165,6313,395],{"class":358},[165,6315,6317,6319,6321,6323,6325,6328],{"class":167,"line":6316},353,[165,6318,3264],{"class":226},[165,6320,1586],{"class":179},[165,6322,382],{"class":226},[165,6324,385],{"class":358},[165,6326,6327],{"class":226}," \"\"",[165,6329,395],{"class":358},[165,6331,6333,6335,6338,6340,6342],{"class":167,"line":6332},354,[165,6334,3264],{"class":226},[165,6336,6337],{"class":179},"tool_calls",[165,6339,382],{"class":226},[165,6341,385],{"class":358},[165,6343,6344],{"class":358}," [{\n",[165,6346,6348,6351,6354,6356,6358,6361,6363,6365,6367,6369],{"class":167,"line":6347},355,[165,6349,6350],{"class":226},"                    \"",[165,6352,6353],{"class":179},"id",[165,6355,382],{"class":226},[165,6357,385],{"class":358},[165,6359,6360],{"class":364}," step",[165,6362,4483],{"class":358},[165,6364,382],{"class":226},[165,6366,6353],{"class":179},[165,6368,382],{"class":226},[165,6370,5917],{"class":358},[165,6372,6374,6376,6379,6381,6383,6385,6388,6390],{"class":167,"line":6373},356,[165,6375,6350],{"class":226},[165,6377,6378],{"class":179},"type",[165,6380,382],{"class":226},[165,6382,385],{"class":358},[165,6384,227],{"class":226},[165,6386,6387],{"class":179},"function",[165,6389,382],{"class":226},[165,6391,395],{"class":358},[165,6393,6395,6397,6399,6401,6403],{"class":167,"line":6394},357,[165,6396,6350],{"class":226},[165,6398,6387],{"class":179},[165,6400,382],{"class":226},[165,6402,385],{"class":358},[165,6404,371],{"class":358},[165,6406,6408,6411,6413,6415,6417,6419,6421,6423,6425,6427],{"class":167,"line":6407},358,[165,6409,6410],{"class":226},"                        \"",[165,6412,5398],{"class":179},[165,6414,382],{"class":226},[165,6416,385],{"class":358},[165,6418,6360],{"class":364},[165,6420,4483],{"class":358},[165,6422,382],{"class":226},[165,6424,5398],{"class":179},[165,6426,382],{"class":226},[165,6428,5917],{"class":358},[165,6430,6432,6434,6437,6439,6441,6443,6445,6447,6449,6451],{"class":167,"line":6431},359,[165,6433,6410],{"class":226},[165,6435,6436],{"class":179},"arguments",[165,6438,382],{"class":226},[165,6440,385],{"class":358},[165,6442,6360],{"class":364},[165,6444,4483],{"class":358},[165,6446,382],{"class":226},[165,6448,6436],{"class":179},[165,6450,382],{"class":226},[165,6452,5917],{"class":358},[165,6454,6456],{"class":167,"line":6455},360,[165,6457,6458],{"class":358},"                    },\n",[165,6460,6462],{"class":167,"line":6461},361,[165,6463,6464],{"class":358},"                }],\n",[165,6466,6468],{"class":167,"line":6467},362,[165,6469,6470],{"class":358},"            }\n",[165,6472,6474,6477,6479],{"class":167,"line":6473},363,[165,6475,6476],{"class":364},"            tool_result ",[165,6478,368],{"class":222},[165,6480,371],{"class":358},[165,6482,6484,6486,6488,6490,6492,6494,6497,6499],{"class":167,"line":6483},364,[165,6485,3264],{"class":226},[165,6487,1556],{"class":179},[165,6489,382],{"class":226},[165,6491,385],{"class":358},[165,6493,227],{"class":226},[165,6495,6496],{"class":179},"tool",[165,6498,382],{"class":226},[165,6500,395],{"class":358},[165,6502,6504,6506,6509,6511,6513,6515,6517,6519,6521,6523],{"class":167,"line":6503},365,[165,6505,3264],{"class":226},[165,6507,6508],{"class":179},"tool_call_id",[165,6510,382],{"class":226},[165,6512,385],{"class":358},[165,6514,6360],{"class":364},[165,6516,4483],{"class":358},[165,6518,382],{"class":226},[165,6520,6353],{"class":179},[165,6522,382],{"class":226},[165,6524,5917],{"class":358},[165,6526,6528,6530,6532,6534,6536,6538,6540,6542,6545,6547],{"class":167,"line":6527},366,[165,6529,3264],{"class":226},[165,6531,1586],{"class":179},[165,6533,382],{"class":226},[165,6535,385],{"class":358},[165,6537,6360],{"class":364},[165,6539,4483],{"class":358},[165,6541,382],{"class":226},[165,6543,6544],{"class":179},"result",[165,6546,382],{"class":226},[165,6548,5917],{"class":358},[165,6550,6552],{"class":167,"line":6551},367,[165,6553,6470],{"class":358},[165,6555,6557,6560,6562,6565,6568,6571,6573,6576],{"class":167,"line":6556},368,[165,6558,6559],{"class":364},"            llm_turn",[165,6561,95],{"class":358},[165,6563,6564],{"class":440},"extend",[165,6566,6567],{"class":358},"([",[165,6569,6570],{"class":440},"tool_call",[165,6572,564],{"class":358},[165,6574,6575],{"class":440}," tool_result",[165,6577,6578],{"class":358},"])\n",[165,6580,6582,6585,6587,6589],{"class":167,"line":6581},369,[165,6583,6584],{"class":364},"            memory_messages",[165,6586,95],{"class":358},[165,6588,6564],{"class":440},[165,6590,6591],{"class":358},"([\n",[165,6593,6595,6598,6601,6603,6605,6607,6609,6611,6613,6615],{"class":167,"line":6594},370,[165,6596,6597],{"class":358},"                {",[165,6599,6600],{"class":222},"**",[165,6602,6570],{"class":440},[165,6604,564],{"class":358},[165,6606,227],{"class":226},[165,6608,1525],{"class":179},[165,6610,382],{"class":226},[165,6612,385],{"class":358},[165,6614,1058],{"class":523},[165,6616,908],{"class":358},[165,6618,6620,6623],{"class":167,"line":6619},371,[165,6621,6622],{"class":440},"                tool_result",[165,6624,395],{"class":358},[165,6626,6628],{"class":167,"line":6627},372,[165,6629,6630],{"class":358},"            ])\n",[165,6632,6634],{"class":167,"line":6633},373,[165,6635,1604],{"emptyLinePlaceholder":1603},[165,6637,6639,6642,6644,6646,6648,6651],{"class":167,"line":6638},374,[165,6640,6641],{"class":364},"        system_prompt ",[165,6643,368],{"class":222},[165,6645,1471],{"class":218},[165,6647,95],{"class":358},[165,6649,6650],{"class":440},"build_system_prompt",[165,6652,444],{"class":358},[165,6654,6656,6659,6661,6663,6665,6667,6669],{"class":167,"line":6655},375,[165,6657,6658],{"class":440},"            channel",[165,6660,564],{"class":358},[165,6662,5016],{"class":440},[165,6664,564],{"class":358},[165,6666,3779],{"class":440},[165,6668,564],{"class":358},[165,6670,3784],{"class":440},[165,6672,6674],{"class":167,"line":6673},376,[165,6675,2718],{"class":358},[165,6677,6679,6682,6684,6686,6688,6691,6693,6696,6698,6700,6702,6705,6707,6709,6712],{"class":167,"line":6678},377,[165,6680,6681],{"class":364},"        reply ",[165,6683,368],{"class":222},[165,6685,1471],{"class":218},[165,6687,95],{"class":358},[165,6689,6690],{"class":440},"generate_reply",[165,6692,540],{"class":358},[165,6694,6695],{"class":440},"system_prompt",[165,6697,564],{"class":358},[165,6699,663],{"class":358},[165,6701,3762],{"class":222},[165,6703,6704],{"class":440},"history",[165,6706,564],{"class":358},[165,6708,3770],{"class":222},[165,6710,6711],{"class":440},"llm_turn",[165,6713,6578],{"class":358},[165,6715,6717],{"class":167,"line":6716},378,[165,6718,1604],{"emptyLinePlaceholder":1603},[165,6720,6722],{"class":167,"line":6721},379,[165,6723,6724],{"class":1609},"        # 4. Save the session locally and write user context and Agent Skills.\n",[165,6726,6728,6730,6732,6734,6736,6739,6741,6743,6745,6748,6750],{"class":167,"line":6727},380,[165,6729,2670],{"class":218},[165,6731,95],{"class":358},[165,6733,2815],{"class":1476},[165,6735,95],{"class":358},[165,6737,6738],{"class":440},"setdefault",[165,6740,540],{"class":358},[165,6742,6078],{"class":440},[165,6744,564],{"class":358},[165,6746,6747],{"class":358}," []).",[165,6749,6564],{"class":440},[165,6751,6591],{"class":358},[165,6753,6755,6758,6760,6762,6764,6766,6768,6770,6772,6774,6776,6778,6780,6782,6784],{"class":167,"line":6754},381,[165,6756,6757],{"class":358},"            {",[165,6759,382],{"class":226},[165,6761,1556],{"class":179},[165,6763,382],{"class":226},[165,6765,385],{"class":358},[165,6767,227],{"class":226},[165,6769,1565],{"class":179},[165,6771,382],{"class":226},[165,6773,564],{"class":358},[165,6775,227],{"class":226},[165,6777,1586],{"class":179},[165,6779,382],{"class":226},[165,6781,385],{"class":358},[165,6783,1306],{"class":440},[165,6785,908],{"class":358},[165,6787,6789,6791,6793,6795,6797,6799,6801,6803,6805,6807,6809,6811,6813,6815,6817],{"class":167,"line":6788},382,[165,6790,6757],{"class":358},[165,6792,382],{"class":226},[165,6794,1556],{"class":179},[165,6796,382],{"class":226},[165,6798,385],{"class":358},[165,6800,227],{"class":226},[165,6802,1647],{"class":179},[165,6804,382],{"class":226},[165,6806,564],{"class":358},[165,6808,227],{"class":226},[165,6810,1586],{"class":179},[165,6812,382],{"class":226},[165,6814,385],{"class":358},[165,6816,1678],{"class":440},[165,6818,908],{"class":358},[165,6820,6822],{"class":167,"line":6821},383,[165,6823,6824],{"class":358},"        ])\n",[165,6826,6828,6831,6833,6835],{"class":167,"line":6827},384,[165,6829,6830],{"class":364},"        memory_messages",[165,6832,95],{"class":358},[165,6834,1629],{"class":440},[165,6836,1632],{"class":358},[165,6838,6840,6842,6844,6846,6848,6850,6852,6854],{"class":167,"line":6839},385,[165,6841,2737],{"class":226},[165,6843,1556],{"class":179},[165,6845,382],{"class":226},[165,6847,385],{"class":358},[165,6849,227],{"class":226},[165,6851,1647],{"class":179},[165,6853,382],{"class":226},[165,6855,395],{"class":358},[165,6857,6859,6861,6863,6865,6867,6869],{"class":167,"line":6858},386,[165,6860,2737],{"class":226},[165,6862,1525],{"class":179},[165,6864,382],{"class":226},[165,6866,385],{"class":358},[165,6868,1058],{"class":523},[165,6870,395],{"class":358},[165,6872,6874,6876,6878,6880,6882,6884],{"class":167,"line":6873},387,[165,6875,2737],{"class":226},[165,6877,1586],{"class":179},[165,6879,382],{"class":226},[165,6881,385],{"class":358},[165,6883,1678],{"class":440},[165,6885,395],{"class":358},[165,6887,6889],{"class":167,"line":6888},388,[165,6890,6891],{"class":358},"        })\n",[165,6893,6895,6897,6899,6902,6904,6906,6908,6910,6912,6914,6916,6918],{"class":167,"line":6894},389,[165,6896,2670],{"class":218},[165,6898,95],{"class":358},[165,6900,6901],{"class":440},"add_user_memories",[165,6903,540],{"class":358},[165,6905,1624],{"class":440},[165,6907,564],{"class":358},[165,6909,798],{"class":440},[165,6911,564],{"class":358},[165,6913,803],{"class":440},[165,6915,564],{"class":358},[165,6917,808],{"class":440},[165,6919,550],{"class":358},[165,6921,6923,6925,6927,6930,6932,6934,6936,6938,6940,6942],{"class":167,"line":6922},390,[165,6924,2670],{"class":218},[165,6926,95],{"class":358},[165,6928,6929],{"class":440},"add_agent_skill",[165,6931,540],{"class":358},[165,6933,1624],{"class":440},[165,6935,564],{"class":358},[165,6937,803],{"class":440},[165,6939,564],{"class":358},[165,6941,808],{"class":440},[165,6943,550],{"class":358},[165,6945,6947,6949],{"class":167,"line":6946},391,[165,6948,3757],{"class":599},[165,6950,6951],{"class":364}," reply\n",[165,6953,6955],{"class":167,"line":6954},392,[165,6956,1604],{"emptyLinePlaceholder":1603},[165,6958,6960,6964],{"class":167,"line":6959},393,[165,6961,6963],{"class":6962},"skqL1","    @",[165,6965,6966],{"class":2003},"staticmethod\n",[165,6968,6970,6972,6975,6977,6979,6981,6983,6985,6987],{"class":167,"line":6969},394,[165,6971,2651],{"class":350},[165,6973,6974],{"class":354}," _print_retrieved",[165,6976,540],{"class":358},[165,6978,5189],{"class":792},[165,6980,564],{"class":358},[165,6982,3779],{"class":792},[165,6984,564],{"class":358},[165,6986,5025],{"class":792},[165,6988,811],{"class":358},[165,6990,6992,6995,6997,6999,7002,7004],{"class":167,"line":6991},395,[165,6993,6994],{"class":523},"        print",[165,6996,540],{"class":358},[165,6998,382],{"class":226},[165,7000,7001],{"class":179},"  ---- Retrieved MemOS Agent memory ----",[165,7003,382],{"class":226},[165,7005,550],{"class":358},[165,7007,7009,7011,7013,7015,7017],{"class":167,"line":7008},396,[165,7010,6270],{"class":599},[165,7012,3151],{"class":364},[165,7014,3154],{"class":599},[165,7016,5016],{"class":364},[165,7018,1980],{"class":358},[165,7020,7022,7025,7027,7030,7032,7034,7036,7038,7040,7042,7044,7046,7048,7050,7053,7056,7058,7060,7062,7064,7066,7068,7070],{"class":167,"line":7021},397,[165,7023,7024],{"class":364},"            value ",[165,7026,368],{"class":222},[165,7028,7029],{"class":2003}," str",[165,7031,540],{"class":358},[165,7033,5147],{"class":440},[165,7035,95],{"class":358},[165,7037,3081],{"class":440},[165,7039,540],{"class":358},[165,7041,382],{"class":226},[165,7043,5158],{"class":179},[165,7045,382],{"class":226},[165,7047,564],{"class":358},[165,7049,6327],{"class":226},[165,7051,7052],{"class":358},")).",[165,7054,7055],{"class":440},"replace",[165,7057,540],{"class":358},[165,7059,382],{"class":226},[165,7061,5116],{"class":5115},[165,7063,382],{"class":226},[165,7065,564],{"class":358},[165,7067,227],{"class":226},[165,7069,227],{"class":226},[165,7071,550],{"class":358},[165,7073,7075,7077,7079,7081,7084,7086,7088,7090,7092,7094,7096,7098,7100,7102,7104,7106,7109,7111,7114,7116,7119,7122,7125,7127,7129,7131],{"class":167,"line":7074},398,[165,7076,3256],{"class":523},[165,7078,540],{"class":358},[165,7080,579],{"class":350},[165,7082,7083],{"class":179},"\"  [Memory ",[165,7085,416],{"class":415},[165,7087,5147],{"class":440},[165,7089,95],{"class":358},[165,7091,3081],{"class":440},[165,7093,540],{"class":358},[165,7095,3291],{"class":226},[165,7097,3195],{"class":179},[165,7099,3291],{"class":226},[165,7101,564],{"class":358},[165,7103,3098],{"class":977},[165,7105,3092],{"class":358},[165,7107,7108],{"class":350},":.2f",[165,7110,421],{"class":415},[165,7112,7113],{"class":179},"] ",[165,7115,416],{"class":415},[165,7117,7118],{"class":440},"value",[165,7120,7121],{"class":358},"[:",[165,7123,7124],{"class":977},"80",[165,7126,5457],{"class":358},[165,7128,421],{"class":415},[165,7130,382],{"class":179},[165,7132,550],{"class":358},[165,7134,7136,7138,7140,7142,7144],{"class":167,"line":7135},399,[165,7137,6270],{"class":599},[165,7139,3151],{"class":364},[165,7141,3154],{"class":599},[165,7143,3779],{"class":364},[165,7145,1980],{"class":358},[165,7147,7149,7151,7153,7155,7158,7160,7162,7164,7166,7168,7170,7172,7174,7176,7178,7180],{"class":167,"line":7148},400,[165,7150,3256],{"class":523},[165,7152,540],{"class":358},[165,7154,579],{"class":350},[165,7156,7157],{"class":179},"\"  [Preference] ",[165,7159,416],{"class":415},[165,7161,5147],{"class":440},[165,7163,95],{"class":358},[165,7165,3081],{"class":440},[165,7167,540],{"class":358},[165,7169,3291],{"class":226},[165,7171,677],{"class":179},[165,7173,3291],{"class":226},[165,7175,3092],{"class":358},[165,7177,421],{"class":415},[165,7179,382],{"class":179},[165,7181,550],{"class":358},[165,7183,7185,7187,7189,7191,7193],{"class":167,"line":7184},401,[165,7186,6270],{"class":599},[165,7188,3151],{"class":364},[165,7190,3154],{"class":599},[165,7192,5025],{"class":364},[165,7194,1980],{"class":358},[165,7196,7198,7200,7202,7204,7206,7208,7210,7212,7214,7216,7218,7220],{"class":167,"line":7197},402,[165,7199,7024],{"class":364},[165,7201,368],{"class":222},[165,7203,3184],{"class":364},[165,7205,95],{"class":358},[165,7207,3081],{"class":440},[165,7209,540],{"class":358},[165,7211,382],{"class":226},[165,7213,5360],{"class":179},[165,7215,382],{"class":226},[165,7217,3092],{"class":358},[165,7219,2707],{"class":222},[165,7221,2820],{"class":358},[165,7223,7225,7228,7230,7233,7235,7237,7239,7241,7243,7245,7247,7249,7251,7254,7256,7258,7260,7262,7264,7266,7268,7270,7272,7274],{"class":167,"line":7224},403,[165,7226,7227],{"class":364},"            label ",[165,7229,368],{"class":222},[165,7231,7232],{"class":364}," value",[165,7234,95],{"class":358},[165,7236,3081],{"class":440},[165,7238,540],{"class":358},[165,7240,382],{"class":226},[165,7242,5398],{"class":179},[165,7244,382],{"class":226},[165,7246,3092],{"class":358},[165,7248,2707],{"class":222},[165,7250,409],{"class":350},[165,7252,7253],{"class":179},"\"id=",[165,7255,416],{"class":415},[165,7257,5147],{"class":364},[165,7259,95],{"class":358},[165,7261,3081],{"class":440},[165,7263,540],{"class":358},[165,7265,3291],{"class":226},[165,7267,6353],{"class":179},[165,7269,3291],{"class":226},[165,7271,3092],{"class":358},[165,7273,421],{"class":415},[165,7275,233],{"class":179},[165,7277,7279,7281,7283,7285,7288,7290,7292,7294,7296,7298,7300,7302,7304,7306,7308,7310,7312,7314,7316,7318,7320,7322,7324],{"class":167,"line":7278},404,[165,7280,3256],{"class":523},[165,7282,540],{"class":358},[165,7284,579],{"class":350},[165,7286,7287],{"class":179},"\"  [Skill ",[165,7289,416],{"class":415},[165,7291,5147],{"class":440},[165,7293,95],{"class":358},[165,7295,3081],{"class":440},[165,7297,540],{"class":358},[165,7299,3291],{"class":226},[165,7301,3195],{"class":179},[165,7303,3291],{"class":226},[165,7305,564],{"class":358},[165,7307,3098],{"class":977},[165,7309,3092],{"class":358},[165,7311,7108],{"class":350},[165,7313,421],{"class":415},[165,7315,7113],{"class":179},[165,7317,416],{"class":415},[165,7319,4344],{"class":440},[165,7321,421],{"class":415},[165,7323,382],{"class":179},[165,7325,550],{"class":358},[165,7327,7329,7331,7333,7335,7338,7340,7342,7344,7346],{"class":167,"line":7328},405,[165,7330,3256],{"class":523},[165,7332,540],{"class":358},[165,7334,579],{"class":350},[165,7336,7337],{"class":179},"\"  [Skill details] ",[165,7339,416],{"class":415},[165,7341,7118],{"class":440},[165,7343,421],{"class":415},[165,7345,382],{"class":179},[165,7347,550],{"class":358},[165,7349,7351,7353,7355,7357,7360,7362],{"class":167,"line":7350},406,[165,7352,6994],{"class":523},[165,7354,540],{"class":358},[165,7356,382],{"class":226},[165,7358,7359],{"class":179},"  --------------------------------------",[165,7361,382],{"class":226},[165,7363,550],{"class":358},[165,7365,7367],{"class":167,"line":7366},407,[165,7368,1604],{"emptyLinePlaceholder":1603},[165,7370,7372],{"class":167,"line":7371},408,[165,7373,1604],{"emptyLinePlaceholder":1603},[165,7375,7377],{"class":167,"line":7376},409,[165,7378,2029],{"class":1609},[165,7380,7382],{"class":167,"line":7381},410,[165,7383,7384],{"class":1609},"# Initialize the policy knowledge base\n",[165,7386,7388],{"class":167,"line":7387},411,[165,7389,2029],{"class":1609},[165,7391,7393],{"class":167,"line":7392},412,[165,7394,1604],{"emptyLinePlaceholder":1603},[165,7396,7398,7400,7403,7405,7407],{"class":167,"line":7397},413,[165,7399,351],{"class":350},[165,7401,7402],{"class":354}," _b64_md",[165,7404,540],{"class":358},[165,7406,67],{"class":792},[165,7408,811],{"class":358},[165,7410,7412,7415,7417,7420,7422,7425,7427,7429,7431,7434,7436,7438,7441,7443,7445,7448,7450,7452,7454,7456],{"class":167,"line":7411},414,[165,7413,7414],{"class":364},"    encoded ",[165,7416,368],{"class":222},[165,7418,7419],{"class":364}," base64",[165,7421,95],{"class":358},[165,7423,7424],{"class":440},"b64encode",[165,7426,540],{"class":358},[165,7428,67],{"class":440},[165,7430,95],{"class":358},[165,7432,7433],{"class":440},"encode",[165,7435,540],{"class":358},[165,7437,382],{"class":226},[165,7439,7440],{"class":179},"utf-8",[165,7442,382],{"class":226},[165,7444,7052],{"class":358},[165,7446,7447],{"class":440},"decode",[165,7449,540],{"class":358},[165,7451,382],{"class":226},[165,7453,7440],{"class":179},[165,7455,382],{"class":226},[165,7457,550],{"class":358},[165,7459,7461,7463,7465,7468,7470,7473,7475],{"class":167,"line":7460},415,[165,7462,600],{"class":599},[165,7464,409],{"class":350},[165,7466,7467],{"class":179},"\"data:text/markdown;base64,",[165,7469,416],{"class":415},[165,7471,7472],{"class":364},"encoded",[165,7474,421],{"class":415},[165,7476,233],{"class":179},[165,7478,7480],{"class":167,"line":7479},416,[165,7481,1604],{"emptyLinePlaceholder":1603},[165,7483,7485],{"class":167,"line":7484},417,[165,7486,1604],{"emptyLinePlaceholder":1603},[165,7488,7490,7492,7494,7496,7498,7500,7503,7505,7508],{"class":167,"line":7489},418,[165,7491,351],{"class":350},[165,7493,441],{"class":354},[165,7495,540],{"class":358},[165,7497,561],{"class":792},[165,7499,564],{"class":358},[165,7501,7502],{"class":792}," name",[165,7504,564],{"class":358},[165,7506,7507],{"class":792}," description",[165,7509,811],{"class":358},[165,7511,7513,7516,7518,7520,7522,7524],{"class":167,"line":7512},419,[165,7514,7515],{"class":364},"    res ",[165,7517,368],{"class":222},[165,7519,2989],{"class":364},[165,7521,95],{"class":358},[165,7523,2994],{"class":440},[165,7525,444],{"class":358},[165,7527,7529,7532,7534,7536,7538,7540,7543],{"class":167,"line":7528},420,[165,7530,7531],{"class":350},"        f",[165,7533,382],{"class":179},[165,7535,416],{"class":415},[165,7537,253],{"class":523},[165,7539,421],{"class":415},[165,7541,7542],{"class":179},"/create/knowledgebase\"",[165,7544,395],{"class":358},[165,7546,7548,7550,7552,7554],{"class":167,"line":7547},421,[165,7549,450],{"class":971},[165,7551,368],{"class":222},[165,7553,561],{"class":440},[165,7555,395],{"class":358},[165,7557,7559,7562,7564,7566,7568,7571,7573,7575,7577,7579,7581,7584,7586,7588,7590],{"class":167,"line":7558},422,[165,7560,7561],{"class":971},"        json",[165,7563,368],{"class":222},[165,7565,416],{"class":358},[165,7567,382],{"class":226},[165,7569,7570],{"class":179},"knowledgebase_name",[165,7572,382],{"class":226},[165,7574,385],{"class":358},[165,7576,7502],{"class":440},[165,7578,564],{"class":358},[165,7580,227],{"class":226},[165,7582,7583],{"class":179},"knowledgebase_description",[165,7585,382],{"class":226},[165,7587,385],{"class":358},[165,7589,7507],{"class":440},[165,7591,908],{"class":358},[165,7593,7595],{"class":167,"line":7594},423,[165,7596,482],{"class":358},[165,7598,7600,7603,7605,7607,7609,7611],{"class":167,"line":7599},424,[165,7601,7602],{"class":364},"    body ",[165,7604,368],{"class":222},[165,7606,4292],{"class":364},[165,7608,95],{"class":358},[165,7610,3065],{"class":440},[165,7612,623],{"class":358},[165,7614,7616,7619,7621,7623,7625,7627,7629,7631,7633,7635,7637,7639],{"class":167,"line":7615},425,[165,7617,7618],{"class":599},"    if",[165,7620,4306],{"class":364},[165,7622,95],{"class":358},[165,7624,3081],{"class":440},[165,7626,540],{"class":358},[165,7628,382],{"class":226},[165,7630,36],{"class":179},[165,7632,382],{"class":226},[165,7634,3092],{"class":358},[165,7636,4323],{"class":222},[165,7638,3098],{"class":977},[165,7640,1980],{"class":358},[165,7642,7644,7646,7648,7650,7652,7654,7657,7659,7661,7663,7665,7667,7669,7671,7673,7675,7677,7679],{"class":167,"line":7643},426,[165,7645,4950],{"class":364},[165,7647,95],{"class":358},[165,7649,4737],{"class":440},[165,7651,540],{"class":358},[165,7653,579],{"class":350},[165,7655,7656],{"class":179},"\"Failed to create knowledge base: ",[165,7658,416],{"class":415},[165,7660,4354],{"class":440},[165,7662,95],{"class":358},[165,7664,3081],{"class":440},[165,7666,540],{"class":358},[165,7668,3291],{"class":226},[165,7670,3294],{"class":179},[165,7672,3291],{"class":226},[165,7674,3092],{"class":358},[165,7676,421],{"class":415},[165,7678,382],{"class":179},[165,7680,550],{"class":358},[165,7682,7684,7687,7689],{"class":167,"line":7683},427,[165,7685,7686],{"class":364},"    kb_id ",[165,7688,368],{"class":222},[165,7690,7691],{"class":358}," (\n",[165,7693,7695,7698,7700,7702,7704,7706,7708,7710,7712,7714,7716,7718,7720,7722,7724],{"class":167,"line":7694},428,[165,7696,7697],{"class":364},"        body",[165,7699,95],{"class":358},[165,7701,3081],{"class":440},[165,7703,540],{"class":358},[165,7705,382],{"class":226},[165,7707,3121],{"class":179},[165,7709,382],{"class":226},[165,7711,564],{"class":358},[165,7713,4800],{"class":358},[165,7715,3081],{"class":440},[165,7717,540],{"class":358},[165,7719,382],{"class":226},[165,7721,6353],{"class":179},[165,7723,382],{"class":226},[165,7725,550],{"class":358},[165,7727,7729,7732,7734,7736,7738,7740,7742,7744,7746,7748,7750,7752,7754,7756,7759,7761],{"class":167,"line":7728},429,[165,7730,7731],{"class":222},"        or",[165,7733,4306],{"class":364},[165,7735,95],{"class":358},[165,7737,3081],{"class":440},[165,7739,540],{"class":358},[165,7741,382],{"class":226},[165,7743,3121],{"class":179},[165,7745,382],{"class":226},[165,7747,564],{"class":358},[165,7749,4800],{"class":358},[165,7751,3081],{"class":440},[165,7753,540],{"class":358},[165,7755,382],{"class":226},[165,7757,7758],{"class":179},"knowledgebase_id",[165,7760,382],{"class":226},[165,7762,550],{"class":358},[165,7764,7766],{"class":167,"line":7765},430,[165,7767,482],{"class":358},[165,7769,7771,7773,7776,7779],{"class":167,"line":7770},431,[165,7772,7618],{"class":599},[165,7774,7775],{"class":222}," not",[165,7777,7778],{"class":364}," kb_id",[165,7780,1980],{"class":358},[165,7782,7784,7786,7788,7790,7792,7794,7797,7799,7801,7803,7805],{"class":167,"line":7783},432,[165,7785,4950],{"class":364},[165,7787,95],{"class":358},[165,7789,4737],{"class":440},[165,7791,540],{"class":358},[165,7793,579],{"class":350},[165,7795,7796],{"class":179},"\"Knowledge base created, but no ID was returned: ",[165,7798,416],{"class":415},[165,7800,5398],{"class":440},[165,7802,421],{"class":415},[165,7804,382],{"class":179},[165,7806,550],{"class":358},[165,7808,7810,7812,7814,7816,7819,7821,7823,7825,7827,7829,7832,7834,7836],{"class":167,"line":7809},433,[165,7811,537],{"class":523},[165,7813,540],{"class":358},[165,7815,579],{"class":350},[165,7817,7818],{"class":179},"\"Knowledge base created: ",[165,7820,416],{"class":415},[165,7822,5398],{"class":440},[165,7824,421],{"class":415},[165,7826,4934],{"class":179},[165,7828,416],{"class":415},[165,7830,7831],{"class":440},"kb_id",[165,7833,421],{"class":415},[165,7835,382],{"class":179},[165,7837,550],{"class":358},[165,7839,7841,7843],{"class":167,"line":7840},434,[165,7842,600],{"class":599},[165,7844,7845],{"class":364}," kb_id\n",[165,7847,7849],{"class":167,"line":7848},435,[165,7850,1604],{"emptyLinePlaceholder":1603},[165,7852,7854],{"class":167,"line":7853},436,[165,7855,1604],{"emptyLinePlaceholder":1603},[165,7857,7859,7861,7864,7866,7868,7870,7872,7874,7876,7878,7881],{"class":167,"line":7858},437,[165,7860,351],{"class":350},[165,7862,7863],{"class":354}," _upload_file",[165,7865,540],{"class":358},[165,7867,561],{"class":792},[165,7869,564],{"class":358},[165,7871,7778],{"class":792},[165,7873,564],{"class":358},[165,7875,7502],{"class":792},[165,7877,564],{"class":358},[165,7879,7880],{"class":792}," text",[165,7882,811],{"class":358},[165,7884,7886,7888,7890,7892,7894,7896],{"class":167,"line":7885},438,[165,7887,7515],{"class":364},[165,7889,368],{"class":222},[165,7891,2989],{"class":364},[165,7893,95],{"class":358},[165,7895,2994],{"class":440},[165,7897,444],{"class":358},[165,7899,7901,7903,7905,7907,7909,7911,7914],{"class":167,"line":7900},439,[165,7902,7531],{"class":350},[165,7904,382],{"class":179},[165,7906,416],{"class":415},[165,7908,253],{"class":523},[165,7910,421],{"class":415},[165,7912,7913],{"class":179},"/add/knowledgebase-file\"",[165,7915,395],{"class":358},[165,7917,7919,7921,7923,7925],{"class":167,"line":7918},440,[165,7920,450],{"class":971},[165,7922,368],{"class":222},[165,7924,561],{"class":440},[165,7926,395],{"class":358},[165,7928,7930,7932,7934],{"class":167,"line":7929},441,[165,7931,7561],{"class":971},[165,7933,368],{"class":222},[165,7935,7936],{"class":358},"{\n",[165,7938,7940,7942,7944,7946,7948,7950],{"class":167,"line":7939},442,[165,7941,2737],{"class":226},[165,7943,7758],{"class":179},[165,7945,382],{"class":226},[165,7947,385],{"class":358},[165,7949,7778],{"class":440},[165,7951,395],{"class":358},[165,7953,7955,7957,7960,7962,7964,7966,7968,7970,7972,7974,7976,7979,7981,7983,7985,7987,7989,7991,7993,7995,7997,7999,8001,8003,8005,8007,8009],{"class":167,"line":7954},443,[165,7956,2737],{"class":226},[165,7958,7959],{"class":179},"file",[165,7961,382],{"class":226},[165,7963,385],{"class":358},[165,7965,6185],{"class":358},[165,7967,382],{"class":226},[165,7969,6378],{"class":179},[165,7971,382],{"class":226},[165,7973,385],{"class":358},[165,7975,227],{"class":226},[165,7977,7978],{"class":179},"document",[165,7980,382],{"class":226},[165,7982,564],{"class":358},[165,7984,227],{"class":226},[165,7986,5398],{"class":179},[165,7988,382],{"class":226},[165,7990,385],{"class":358},[165,7992,7502],{"class":440},[165,7994,564],{"class":358},[165,7996,227],{"class":226},[165,7998,1586],{"class":179},[165,8000,382],{"class":226},[165,8002,385],{"class":358},[165,8004,7402],{"class":440},[165,8006,540],{"class":358},[165,8008,67],{"class":440},[165,8010,8011],{"class":358},")}],\n",[165,8013,8015],{"class":167,"line":8014},444,[165,8016,8017],{"class":358},"        },\n",[165,8019,8021],{"class":167,"line":8020},445,[165,8022,482],{"class":358},[165,8024,8026,8028,8030,8032,8034,8036,8038,8040,8042,8044,8046,8048,8050,8052],{"class":167,"line":8025},446,[165,8027,7618],{"class":599},[165,8029,4292],{"class":364},[165,8031,95],{"class":358},[165,8033,3065],{"class":440},[165,8035,5577],{"class":358},[165,8037,3081],{"class":440},[165,8039,540],{"class":358},[165,8041,382],{"class":226},[165,8043,36],{"class":179},[165,8045,382],{"class":226},[165,8047,3092],{"class":358},[165,8049,4323],{"class":222},[165,8051,3098],{"class":977},[165,8053,1980],{"class":358},[165,8055,8057,8059,8061,8063,8065,8067,8070,8072,8075,8077,8079,8081,8083,8085,8087,8089,8091,8093,8095,8097],{"class":167,"line":8056},447,[165,8058,4950],{"class":364},[165,8060,95],{"class":358},[165,8062,4737],{"class":440},[165,8064,540],{"class":358},[165,8066,579],{"class":350},[165,8068,8069],{"class":179},"\"Failed to upload policy: ",[165,8071,416],{"class":415},[165,8073,8074],{"class":440},"res",[165,8076,95],{"class":358},[165,8078,3065],{"class":440},[165,8080,5577],{"class":358},[165,8082,3081],{"class":440},[165,8084,540],{"class":358},[165,8086,3291],{"class":226},[165,8088,3294],{"class":179},[165,8090,3291],{"class":226},[165,8092,3092],{"class":358},[165,8094,421],{"class":415},[165,8096,382],{"class":179},[165,8098,550],{"class":358},[165,8100,8102],{"class":167,"line":8101},448,[165,8103,1604],{"emptyLinePlaceholder":1603},[165,8105,8107],{"class":167,"line":8106},449,[165,8108,1604],{"emptyLinePlaceholder":1603},[165,8110,8112,8114,8117,8119,8121,8123,8125],{"class":167,"line":8111},450,[165,8113,351],{"class":350},[165,8115,8116],{"class":354}," _wait_kb_ready",[165,8118,540],{"class":358},[165,8120,561],{"class":792},[165,8122,564],{"class":358},[165,8124,7778],{"class":792},[165,8126,811],{"class":358},[165,8128,8130,8133,8136,8138,8141,8143,8146],{"class":167,"line":8129},451,[165,8131,8132],{"class":599},"    for",[165,8134,8135],{"class":364}," _ ",[165,8137,3154],{"class":599},[165,8139,8140],{"class":523}," range",[165,8142,540],{"class":358},[165,8144,8145],{"class":977},"40",[165,8147,811],{"class":358},[165,8149,8151,8154,8156,8158,8160,8163],{"class":167,"line":8150},452,[165,8152,8153],{"class":364},"        time",[165,8155,95],{"class":358},[165,8157,4599],{"class":440},[165,8159,540],{"class":358},[165,8161,8162],{"class":977},"3",[165,8164,550],{"class":358},[165,8166,8168,8170,8172,8174,8176,8178],{"class":167,"line":8167},453,[165,8169,4227],{"class":364},[165,8171,368],{"class":222},[165,8173,2989],{"class":364},[165,8175,95],{"class":358},[165,8177,2994],{"class":440},[165,8179,444],{"class":358},[165,8181,8183,8185,8187,8189,8191,8193,8196],{"class":167,"line":8182},454,[165,8184,3002],{"class":350},[165,8186,382],{"class":179},[165,8188,416],{"class":415},[165,8190,253],{"class":523},[165,8192,421],{"class":415},[165,8194,8195],{"class":179},"/get/knowledgebase-file\"",[165,8197,395],{"class":358},[165,8199,8201,8203,8205,8207],{"class":167,"line":8200},455,[165,8202,3021],{"class":971},[165,8204,368],{"class":222},[165,8206,561],{"class":440},[165,8208,395],{"class":358},[165,8210,8212,8214,8216,8218,8220,8222,8224,8226,8228,8230,8232,8235,8237,8239,8241,8243,8245,8248,8250,8252,8255],{"class":167,"line":8211},456,[165,8213,3037],{"class":971},[165,8215,368],{"class":222},[165,8217,416],{"class":358},[165,8219,382],{"class":226},[165,8221,7758],{"class":179},[165,8223,382],{"class":226},[165,8225,385],{"class":358},[165,8227,7778],{"class":440},[165,8229,564],{"class":358},[165,8231,227],{"class":226},[165,8233,8234],{"class":179},"page",[165,8236,382],{"class":226},[165,8238,385],{"class":358},[165,8240,5194],{"class":977},[165,8242,564],{"class":358},[165,8244,227],{"class":226},[165,8246,8247],{"class":179},"page_size",[165,8249,382],{"class":226},[165,8251,385],{"class":358},[165,8253,8254],{"class":977}," 20",[165,8256,908],{"class":358},[165,8258,8260],{"class":167,"line":8259},457,[165,8261,2718],{"class":358},[165,8263,8265,8268,8270,8272,8274,8276,8278,8280,8282,8284,8286,8288,8290,8292,8294,8296,8298,8301,8303,8305],{"class":167,"line":8264},458,[165,8266,8267],{"class":364},"        files ",[165,8269,368],{"class":222},[165,8271,4292],{"class":364},[165,8273,95],{"class":358},[165,8275,3065],{"class":440},[165,8277,5577],{"class":358},[165,8279,3081],{"class":440},[165,8281,540],{"class":358},[165,8283,382],{"class":226},[165,8285,3121],{"class":179},[165,8287,382],{"class":226},[165,8289,564],{"class":358},[165,8291,4800],{"class":358},[165,8293,3081],{"class":440},[165,8295,540],{"class":358},[165,8297,382],{"class":226},[165,8299,8300],{"class":179},"file_detail_list",[165,8302,382],{"class":226},[165,8304,564],{"class":358},[165,8306,3175],{"class":358},[165,8308,8310,8313,8315,8317,8320,8322,8324,8326,8328,8330,8332,8334,8336,8338,8340,8342,8345,8347,8350,8352,8354,8357],{"class":167,"line":8309},459,[165,8311,8312],{"class":364},"        statuses ",[165,8314,368],{"class":222},[165,8316,876],{"class":358},[165,8318,8319],{"class":2003},"str",[165,8321,540],{"class":358},[165,8323,5147],{"class":440},[165,8325,95],{"class":358},[165,8327,3081],{"class":440},[165,8329,540],{"class":358},[165,8331,382],{"class":226},[165,8333,4432],{"class":179},[165,8335,382],{"class":226},[165,8337,564],{"class":358},[165,8339,6327],{"class":226},[165,8341,7052],{"class":358},[165,8343,8344],{"class":440},"lower",[165,8346,4560],{"class":358},[165,8348,8349],{"class":599}," for",[165,8351,3151],{"class":364},[165,8353,3154],{"class":599},[165,8355,8356],{"class":364}," files",[165,8358,1389],{"class":358},[165,8360,8362,8364,8367,8370,8373,8376,8378,8380,8382,8384,8386,8388,8391,8393,8395,8397,8399,8401],{"class":167,"line":8361},460,[165,8363,3073],{"class":599},[165,8365,8366],{"class":364}," files ",[165,8368,8369],{"class":222},"and",[165,8371,8372],{"class":364}," statuses ",[165,8374,8375],{"class":222},"\u003C=",[165,8377,876],{"class":358},[165,8379,382],{"class":226},[165,8381,4828],{"class":179},[165,8383,382],{"class":226},[165,8385,564],{"class":358},[165,8387,227],{"class":226},[165,8389,8390],{"class":179},"available",[165,8392,382],{"class":226},[165,8394,564],{"class":358},[165,8396,227],{"class":226},[165,8398,4877],{"class":179},[165,8400,382],{"class":226},[165,8402,4909],{"class":358},[165,8404,8406,8408,8410,8412,8414,8417,8420],{"class":167,"line":8405},461,[165,8407,3694],{"class":599},[165,8409,227],{"class":226},[165,8411,4877],{"class":179},[165,8413,382],{"class":226},[165,8415,8416],{"class":222}," in",[165,8418,8419],{"class":364}," statuses",[165,8421,1980],{"class":358},[165,8423,8425,8427,8429,8431,8433,8435,8438,8440,8442,8444,8446],{"class":167,"line":8424},462,[165,8426,4732],{"class":364},[165,8428,95],{"class":358},[165,8430,4737],{"class":440},[165,8432,540],{"class":358},[165,8434,579],{"class":350},[165,8436,8437],{"class":179},"\"Policy processing failed for knowledge base ",[165,8439,416],{"class":415},[165,8441,7831],{"class":440},[165,8443,421],{"class":415},[165,8445,382],{"class":179},[165,8447,550],{"class":358},[165,8449,8451],{"class":167,"line":8450},463,[165,8452,4380],{"class":599},[165,8454,8456,8459,8461,8463,8465,8467,8470,8472,8474,8476,8478],{"class":167,"line":8455},464,[165,8457,8458],{"class":364},"    sys",[165,8460,95],{"class":358},[165,8462,4737],{"class":440},[165,8464,540],{"class":358},[165,8466,579],{"class":350},[165,8468,8469],{"class":179},"\"Timed out waiting for policy knowledge base ",[165,8471,416],{"class":415},[165,8473,7831],{"class":440},[165,8475,421],{"class":415},[165,8477,382],{"class":179},[165,8479,550],{"class":358},[165,8481,8483],{"class":167,"line":8482},465,[165,8484,1604],{"emptyLinePlaceholder":1603},[165,8486,8488],{"class":167,"line":8487},466,[165,8489,1604],{"emptyLinePlaceholder":1603},[165,8491,8493,8495,8497],{"class":167,"line":8492},467,[165,8494,351],{"class":350},[165,8496,355],{"class":354},[165,8498,359],{"class":358},[165,8500,8502,8504,8506],{"class":167,"line":8501},468,[165,8503,365],{"class":364},[165,8505,368],{"class":222},[165,8507,371],{"class":358},[165,8509,8511,8513,8515,8517,8519,8521,8523,8525],{"class":167,"line":8510},469,[165,8512,376],{"class":226},[165,8514,379],{"class":179},[165,8516,382],{"class":226},[165,8518,385],{"class":358},[165,8520,227],{"class":226},[165,8522,390],{"class":179},[165,8524,382],{"class":226},[165,8526,395],{"class":358},[165,8528,8530,8532,8534,8536,8538,8540,8542,8544,8546,8548,8550],{"class":167,"line":8529},470,[165,8531,376],{"class":226},[165,8533,402],{"class":179},[165,8535,382],{"class":226},[165,8537,385],{"class":358},[165,8539,409],{"class":350},[165,8541,412],{"class":179},[165,8543,416],{"class":415},[165,8545,219],{"class":218},[165,8547,421],{"class":415},[165,8549,382],{"class":179},[165,8551,395],{"class":358},[165,8553,8555],{"class":167,"line":8554},471,[165,8556,430],{"class":358},[165,8558,8560,8562,8564,8566],{"class":167,"line":8559},472,[165,8561,435],{"class":364},[165,8563,368],{"class":222},[165,8565,441],{"class":440},[165,8567,444],{"class":358},[165,8569,8571,8573],{"class":167,"line":8570},473,[165,8572,450],{"class":440},[165,8574,395],{"class":358},[165,8576,8578,8580,8582,8584],{"class":167,"line":8577},474,[165,8579,376],{"class":226},[165,8581,460],{"class":179},[165,8583,382],{"class":226},[165,8585,395],{"class":358},[165,8587,8589,8591,8593,8595],{"class":167,"line":8588},475,[165,8590,376],{"class":226},[165,8592,472],{"class":179},[165,8594,382],{"class":226},[165,8596,395],{"class":358},[165,8598,8600],{"class":167,"line":8599},476,[165,8601,482],{"class":358},[165,8603,8605,8607],{"class":167,"line":8604},477,[165,8606,488],{"class":440},[165,8608,444],{"class":358},[165,8610,8612,8614],{"class":167,"line":8611},478,[165,8613,450],{"class":440},[165,8615,395],{"class":358},[165,8617,8619,8621],{"class":167,"line":8618},479,[165,8620,503],{"class":440},[165,8622,395],{"class":358},[165,8624,8626,8628,8630,8632],{"class":167,"line":8625},480,[165,8627,376],{"class":226},[165,8629,513],{"class":179},[165,8631,382],{"class":226},[165,8633,395],{"class":358},[165,8635,8637,8639],{"class":167,"line":8636},481,[165,8638,524],{"class":523},[165,8640,395],{"class":358},[165,8642,8644],{"class":167,"line":8643},482,[165,8645,482],{"class":358},[165,8647,8649,8651,8653,8655,8658,8660],{"class":167,"line":8648},483,[165,8650,537],{"class":523},[165,8652,540],{"class":358},[165,8654,382],{"class":226},[165,8656,8657],{"class":179},"Policy uploaded. Waiting for processing...",[165,8659,382],{"class":226},[165,8661,550],{"class":358},[165,8663,8665,8667,8669,8671,8673,8675],{"class":167,"line":8664},484,[165,8666,556],{"class":440},[165,8668,540],{"class":358},[165,8670,561],{"class":440},[165,8672,564],{"class":358},[165,8674,567],{"class":440},[165,8676,550],{"class":358},[165,8678,8680,8682,8684,8686,8688,8690,8692,8694,8696],{"class":167,"line":8679},485,[165,8681,537],{"class":523},[165,8683,540],{"class":358},[165,8685,579],{"class":350},[165,8687,582],{"class":179},[165,8689,416],{"class":415},[165,8691,587],{"class":440},[165,8693,421],{"class":415},[165,8695,382],{"class":179},[165,8697,550],{"class":358},[165,8699,8701,8703],{"class":167,"line":8700},486,[165,8702,600],{"class":599},[165,8704,603],{"class":364},[165,8706,8708],{"class":167,"line":8707},487,[165,8709,1604],{"emptyLinePlaceholder":1603},[165,8711,8713],{"class":167,"line":8712},488,[165,8714,1604],{"emptyLinePlaceholder":1603},[165,8716,8718],{"class":167,"line":8717},489,[165,8719,2029],{"class":1609},[165,8721,8723],{"class":167,"line":8722},490,[165,8724,8725],{"class":1609},"# Demo: isolate user context and reuse Agent Skills across users\n",[165,8727,8729],{"class":167,"line":8728},491,[165,8730,2029],{"class":1609},[165,8732,8734],{"class":167,"line":8733},492,[165,8735,1604],{"emptyLinePlaceholder":1603},[165,8737,8739,8742,8744,8746,8748,8750],{"class":167,"line":8738},493,[165,8740,8741],{"class":218},"CUSTOMER_ID",[165,8743,223],{"class":222},[165,8745,227],{"class":226},[165,8747,1720],{"class":179},[165,8749,382],{"class":226},[165,8751,8752],{"class":1609},"    # Use a stable authenticated user ID in production.\n",[165,8754,8756,8759,8761,8763,8765,8767],{"class":167,"line":8755},494,[165,8757,8758],{"class":218},"CUSTOMER_ID_2",[165,8760,223],{"class":222},[165,8762,227],{"class":226},[165,8764,1727],{"class":179},[165,8766,382],{"class":226},[165,8768,8769],{"class":1609},"  # Verifies Skill reuse and user isolation.\n",[165,8771,8773],{"class":167,"line":8772},495,[165,8774,1604],{"emptyLinePlaceholder":1603},[165,8776,8778],{"class":167,"line":8777},496,[165,8779,1604],{"emptyLinePlaceholder":1603},[165,8781,8783,8785,8788],{"class":167,"line":8782},497,[165,8784,351],{"class":350},[165,8786,8787],{"class":354}," run_demo",[165,8789,359],{"class":358},[165,8791,8793,8795,8797,8799],{"class":167,"line":8792},498,[165,8794,435],{"class":364},[165,8796,368],{"class":222},[165,8798,355],{"class":440},[165,8800,623],{"class":358},[165,8802,8804,8807,8809,8811,8813,8815],{"class":167,"line":8803},499,[165,8805,8806],{"class":364},"    assistant ",[165,8808,368],{"class":222},[165,8810,633],{"class":440},[165,8812,540],{"class":358},[165,8814,587],{"class":440},[165,8816,550],{"class":358},[165,8818,8820],{"class":167,"line":8819},500,[165,8821,1604],{"emptyLinePlaceholder":1603},[165,8823,8825,8827,8829,8831,8833,8835,8837,8840],{"class":167,"line":8824},501,[165,8826,537],{"class":523},[165,8828,540],{"class":358},[165,8830,382],{"class":226},[165,8832,368],{"class":179},[165,8834,382],{"class":226},[165,8836,3770],{"class":222},[165,8838,8839],{"class":977}," 64",[165,8841,550],{"class":358},[165,8843,8845,8847,8849,8851,8854,8856],{"class":167,"line":8844},502,[165,8846,537],{"class":523},[165,8848,540],{"class":358},[165,8850,382],{"class":226},[165,8852,8853],{"class":179},"DAY 1 · Web chat: exchange request with delivery preferences",[165,8855,382],{"class":226},[165,8857,550],{"class":358},[165,8859,8861,8863,8865,8867,8869,8871,8873,8875],{"class":167,"line":8860},503,[165,8862,537],{"class":523},[165,8864,540],{"class":358},[165,8866,382],{"class":226},[165,8868,368],{"class":179},[165,8870,382],{"class":226},[165,8872,3770],{"class":222},[165,8874,8839],{"class":977},[165,8876,550],{"class":358},[165,8878,8880,8883,8885,8887,8890],{"class":167,"line":8879},504,[165,8881,8882],{"class":364},"    chat_conv ",[165,8884,368],{"class":222},[165,8886,227],{"class":226},[165,8888,8889],{"class":179},"conv_chat_0821",[165,8891,233],{"class":226},[165,8893,8895],{"class":167,"line":8894},505,[165,8896,1604],{"emptyLinePlaceholder":1603},[165,8898,8900,8903,8905],{"class":167,"line":8899},506,[165,8901,8902],{"class":364},"    q1 ",[165,8904,368],{"class":222},[165,8906,7691],{"class":358},[165,8908,8910,8912,8915],{"class":167,"line":8909},507,[165,8911,376],{"class":226},[165,8913,8914],{"class":179},"Hi, I received order 20260820-88 on August 20. The left side of the ",[165,8916,233],{"class":226},[165,8918,8920,8922,8925],{"class":167,"line":8919},508,[165,8921,376],{"class":226},[165,8923,8924],{"class":179},"noise-canceling headset has a strong buzzing noise, and I want to ",[165,8926,233],{"class":226},[165,8928,8930,8932,8935],{"class":167,"line":8929},509,[165,8931,376],{"class":226},[165,8933,8934],{"class":179},"exchange it.",[165,8936,233],{"class":226},[165,8938,8940],{"class":167,"line":8939},510,[165,8941,482],{"class":358},[165,8943,8945,8947,8949,8951,8953,8955,8958,8960,8963,8965,8967],{"class":167,"line":8944},511,[165,8946,537],{"class":523},[165,8948,540],{"class":358},[165,8950,579],{"class":350},[165,8952,382],{"class":179},[165,8954,5116],{"class":5115},[165,8956,8957],{"class":179},"[Consumer] ",[165,8959,416],{"class":415},[165,8961,8962],{"class":440},"q1",[165,8964,421],{"class":415},[165,8966,382],{"class":179},[165,8968,550],{"class":358},[165,8970,8972],{"class":167,"line":8971},512,[165,8973,8974],{"class":1609},"    # The Agent's actual work in order, ticket, and notification systems is\n",[165,8976,8978],{"class":167,"line":8977},513,[165,8979,8980],{"class":1609},"    # written to MemOS as task-trace material for Skill extraction.\n",[165,8982,8984,8987,8989],{"class":167,"line":8983},514,[165,8985,8986],{"class":364},"    tool_steps ",[165,8988,368],{"class":222},[165,8990,1546],{"class":358},[165,8992,8994],{"class":167,"line":8993},515,[165,8995,8996],{"class":358},"        {\n",[165,8998,9000,9002,9004,9006,9008,9010,9013,9015],{"class":167,"line":8999},516,[165,9001,2737],{"class":226},[165,9003,6353],{"class":179},[165,9005,382],{"class":226},[165,9007,385],{"class":358},[165,9009,227],{"class":226},[165,9011,9012],{"class":179},"call_1",[165,9014,382],{"class":226},[165,9016,395],{"class":358},[165,9018,9020,9022,9024,9026,9028,9030,9033,9035],{"class":167,"line":9019},517,[165,9021,2737],{"class":226},[165,9023,5398],{"class":179},[165,9025,382],{"class":226},[165,9027,385],{"class":358},[165,9029,227],{"class":226},[165,9031,9032],{"class":179},"query_order",[165,9034,382],{"class":226},[165,9036,395],{"class":358},[165,9038,9040,9042,9044,9046,9048,9051,9054,9056],{"class":167,"line":9039},518,[165,9041,2737],{"class":226},[165,9043,6436],{"class":179},[165,9045,382],{"class":226},[165,9047,385],{"class":358},[165,9049,9050],{"class":226}," '",[165,9052,9053],{"class":179},"{\"order_id\": \"20260820-88\"}",[165,9055,3291],{"class":226},[165,9057,395],{"class":358},[165,9059,9061,9063,9065,9067,9069],{"class":167,"line":9060},519,[165,9062,2737],{"class":226},[165,9064,6544],{"class":179},[165,9066,382],{"class":226},[165,9068,385],{"class":358},[165,9070,7691],{"class":358},[165,9072,9074,9077,9080],{"class":167,"line":9073},520,[165,9075,9076],{"class":226},"                '",[165,9078,9079],{"class":179},"{\"order_id\": \"20260820-88\", \"product\": ",[165,9081,9082],{"class":226},"'\n",[165,9084,9086,9088,9091],{"class":167,"line":9085},521,[165,9087,9076],{"class":226},[165,9089,9090],{"class":179},"\"noise-canceling headset\", \"sign_date\": \"2026-08-20\", ",[165,9092,9082],{"class":226},[165,9094,9096,9098,9101],{"class":167,"line":9095},522,[165,9097,9076],{"class":226},[165,9099,9100],{"class":179},"\"status\": \"delivered\"}",[165,9102,9082],{"class":226},[165,9104,9106],{"class":167,"line":9105},523,[165,9107,9108],{"class":358},"            ),\n",[165,9110,9112],{"class":167,"line":9111},524,[165,9113,8017],{"class":358},[165,9115,9117],{"class":167,"line":9116},525,[165,9118,8996],{"class":358},[165,9120,9122,9124,9126,9128,9130,9132,9135,9137],{"class":167,"line":9121},526,[165,9123,2737],{"class":226},[165,9125,6353],{"class":179},[165,9127,382],{"class":226},[165,9129,385],{"class":358},[165,9131,227],{"class":226},[165,9133,9134],{"class":179},"call_2",[165,9136,382],{"class":226},[165,9138,395],{"class":358},[165,9140,9142,9144,9146,9148,9150,9152,9155,9157],{"class":167,"line":9141},527,[165,9143,2737],{"class":226},[165,9145,5398],{"class":179},[165,9147,382],{"class":226},[165,9149,385],{"class":358},[165,9151,227],{"class":226},[165,9153,9154],{"class":179},"check_exchange_policy",[165,9156,382],{"class":226},[165,9158,395],{"class":358},[165,9160,9162,9164,9166,9168,9170],{"class":167,"line":9161},528,[165,9163,2737],{"class":226},[165,9165,6436],{"class":179},[165,9167,382],{"class":226},[165,9169,385],{"class":358},[165,9171,7691],{"class":358},[165,9173,9175,9177,9180],{"class":167,"line":9174},529,[165,9176,9076],{"class":226},[165,9178,9179],{"class":179},"{\"order_id\": \"20260820-88\", ",[165,9181,9082],{"class":226},[165,9183,9185,9187,9190],{"class":167,"line":9184},530,[165,9186,9076],{"class":226},[165,9188,9189],{"class":179},"\"issue\": \"buzzing noise in left side\"}",[165,9191,9082],{"class":226},[165,9193,9195],{"class":167,"line":9194},531,[165,9196,9108],{"class":358},[165,9198,9200,9202,9204,9206,9208],{"class":167,"line":9199},532,[165,9201,2737],{"class":226},[165,9203,6544],{"class":179},[165,9205,382],{"class":226},[165,9207,385],{"class":358},[165,9209,7691],{"class":358},[165,9211,9213,9215,9218],{"class":167,"line":9212},533,[165,9214,9076],{"class":226},[165,9216,9217],{"class":179},"{\"eligible\": true, \"policy\": \"15-day exchange for performance ",[165,9219,9082],{"class":226},[165,9221,9223,9225,9228],{"class":167,"line":9222},534,[165,9224,9076],{"class":226},[165,9226,9227],{"class":179},"defects\", \"shipping\": \"covered both ways\"}",[165,9229,9082],{"class":226},[165,9231,9233],{"class":167,"line":9232},535,[165,9234,9108],{"class":358},[165,9236,9238],{"class":167,"line":9237},536,[165,9239,8017],{"class":358},[165,9241,9243],{"class":167,"line":9242},537,[165,9244,8996],{"class":358},[165,9246,9248,9250,9252,9254,9256,9258,9261,9263],{"class":167,"line":9247},538,[165,9249,2737],{"class":226},[165,9251,6353],{"class":179},[165,9253,382],{"class":226},[165,9255,385],{"class":358},[165,9257,227],{"class":226},[165,9259,9260],{"class":179},"call_3",[165,9262,382],{"class":226},[165,9264,395],{"class":358},[165,9266,9268,9270,9272,9274,9276,9278,9281,9283],{"class":167,"line":9267},539,[165,9269,2737],{"class":226},[165,9271,5398],{"class":179},[165,9273,382],{"class":226},[165,9275,385],{"class":358},[165,9277,227],{"class":226},[165,9279,9280],{"class":179},"create_exchange_ticket",[165,9282,382],{"class":226},[165,9284,395],{"class":358},[165,9286,9288,9290,9292,9294,9296],{"class":167,"line":9287},540,[165,9289,2737],{"class":226},[165,9291,6436],{"class":179},[165,9293,382],{"class":226},[165,9295,385],{"class":358},[165,9297,7691],{"class":358},[165,9299,9301,9303,9305],{"class":167,"line":9300},541,[165,9302,9076],{"class":226},[165,9304,9179],{"class":179},[165,9306,9082],{"class":226},[165,9308,9310,9312,9315],{"class":167,"line":9309},542,[165,9311,9076],{"class":226},[165,9313,9314],{"class":179},"\"reason\": \"buzzing noise in left side\", ",[165,9316,9082],{"class":226},[165,9318,9320,9322,9325],{"class":167,"line":9319},543,[165,9321,9076],{"class":226},[165,9323,9324],{"class":179},"\"type\": \"defective product exchange\"}",[165,9326,9082],{"class":226},[165,9328,9330],{"class":167,"line":9329},544,[165,9331,9108],{"class":358},[165,9333,9335,9337,9339,9341,9343],{"class":167,"line":9334},545,[165,9336,2737],{"class":226},[165,9338,6544],{"class":179},[165,9340,382],{"class":226},[165,9342,385],{"class":358},[165,9344,7691],{"class":358},[165,9346,9348,9350,9353],{"class":167,"line":9347},546,[165,9349,9076],{"class":226},[165,9351,9352],{"class":179},"{\"ticket_id\": \"EX20260821-03\", \"status\": \"created\"}",[165,9354,9082],{"class":226},[165,9356,9358],{"class":167,"line":9357},547,[165,9359,9108],{"class":358},[165,9361,9363],{"class":167,"line":9362},548,[165,9364,8017],{"class":358},[165,9366,9368],{"class":167,"line":9367},549,[165,9369,8996],{"class":358},[165,9371,9373,9375,9377,9379,9381,9383,9386,9388],{"class":167,"line":9372},550,[165,9374,2737],{"class":226},[165,9376,6353],{"class":179},[165,9378,382],{"class":226},[165,9380,385],{"class":358},[165,9382,227],{"class":226},[165,9384,9385],{"class":179},"call_4",[165,9387,382],{"class":226},[165,9389,395],{"class":358},[165,9391,9393,9395,9397,9399,9401,9403,9406,9408],{"class":167,"line":9392},551,[165,9394,2737],{"class":226},[165,9396,5398],{"class":179},[165,9398,382],{"class":226},[165,9400,385],{"class":358},[165,9402,227],{"class":226},[165,9404,9405],{"class":179},"update_ticket",[165,9407,382],{"class":226},[165,9409,395],{"class":358},[165,9411,9413,9415,9417,9419,9421],{"class":167,"line":9412},552,[165,9414,2737],{"class":226},[165,9416,6436],{"class":179},[165,9418,382],{"class":226},[165,9420,385],{"class":358},[165,9422,7691],{"class":358},[165,9424,9426,9428,9431],{"class":167,"line":9425},553,[165,9427,9076],{"class":226},[165,9429,9430],{"class":179},"{\"ticket_id\": \"EX20260821-03\", ",[165,9432,9082],{"class":226},[165,9434,9436,9438,9441],{"class":167,"line":9435},554,[165,9437,9076],{"class":226},[165,9439,9440],{"class":179},"\"address\": \"100 Century Avenue, Pudong, Shanghai\", ",[165,9442,9082],{"class":226},[165,9444,9446,9448,9451],{"class":167,"line":9445},555,[165,9447,9076],{"class":226},[165,9449,9450],{"class":179},"\"deliver_before\": \"Friday\", \"notify\": \"sms\"}",[165,9452,9082],{"class":226},[165,9454,9456],{"class":167,"line":9455},556,[165,9457,9108],{"class":358},[165,9459,9461,9463,9465,9467,9469,9471,9474,9476],{"class":167,"line":9460},557,[165,9462,2737],{"class":226},[165,9464,6544],{"class":179},[165,9466,382],{"class":226},[165,9468,385],{"class":358},[165,9470,9050],{"class":226},[165,9472,9473],{"class":179},"{\"ticket_id\": \"EX20260821-03\", \"updated\": true}",[165,9475,3291],{"class":226},[165,9477,395],{"class":358},[165,9479,9481],{"class":167,"line":9480},558,[165,9482,8017],{"class":358},[165,9484,9486],{"class":167,"line":9485},559,[165,9487,8996],{"class":358},[165,9489,9491,9493,9495,9497,9499,9501,9504,9506],{"class":167,"line":9490},560,[165,9492,2737],{"class":226},[165,9494,6353],{"class":179},[165,9496,382],{"class":226},[165,9498,385],{"class":358},[165,9500,227],{"class":226},[165,9502,9503],{"class":179},"call_5",[165,9505,382],{"class":226},[165,9507,395],{"class":358},[165,9509,9511,9513,9515,9517,9519,9521,9524,9526],{"class":167,"line":9510},561,[165,9512,2737],{"class":226},[165,9514,5398],{"class":179},[165,9516,382],{"class":226},[165,9518,385],{"class":358},[165,9520,227],{"class":226},[165,9522,9523],{"class":179},"schedule_notification",[165,9525,382],{"class":226},[165,9527,395],{"class":358},[165,9529,9531,9533,9535,9537,9539],{"class":167,"line":9530},562,[165,9532,2737],{"class":226},[165,9534,6436],{"class":179},[165,9536,382],{"class":226},[165,9538,385],{"class":358},[165,9540,7691],{"class":358},[165,9542,9544,9546,9549],{"class":167,"line":9543},563,[165,9545,9076],{"class":226},[165,9547,9548],{"class":179},"{\"ticket_id\": \"EX20260821-03\", \"channel\": \"sms\", ",[165,9550,9082],{"class":226},[165,9552,9554,9556,9559],{"class":167,"line":9553},564,[165,9555,9076],{"class":226},[165,9557,9558],{"class":179},"\"events\": [\"shipped\", \"out for delivery\"]}",[165,9560,9082],{"class":226},[165,9562,9564],{"class":167,"line":9563},565,[165,9565,9108],{"class":358},[165,9567,9569,9571,9573,9575,9577,9579,9582,9584],{"class":167,"line":9568},566,[165,9570,2737],{"class":226},[165,9572,6544],{"class":179},[165,9574,382],{"class":226},[165,9576,385],{"class":358},[165,9578,9050],{"class":226},[165,9580,9581],{"class":179},"{\"scheduled\": true, \"channel\": \"sms\"}",[165,9583,3291],{"class":226},[165,9585,395],{"class":358},[165,9587,9589],{"class":167,"line":9588},567,[165,9590,8017],{"class":358},[165,9592,9594],{"class":167,"line":9593},568,[165,9595,9596],{"class":358},"    ]\n",[165,9598,9600,9602],{"class":167,"line":9599},569,[165,9601,537],{"class":523},[165,9603,444],{"class":358},[165,9605,9607,9609],{"class":167,"line":9606},570,[165,9608,7531],{"class":350},[165,9610,9611],{"class":179},"\"[Customer Service] \"\n",[165,9613,9615,9617,9619,9621,9623,9625,9627,9629,9631,9633,9636,9638,9641,9643,9645,9647,9649,9651,9653,9655,9658,9660,9662],{"class":167,"line":9614},571,[165,9616,7531],{"class":350},[165,9618,382],{"class":179},[165,9620,416],{"class":415},[165,9622,1647],{"class":440},[165,9624,95],{"class":358},[165,9626,5845],{"class":440},[165,9628,540],{"class":358},[165,9630,8962],{"class":440},[165,9632,564],{"class":358},[165,9634,9635],{"class":523}," CUSTOMER_ID",[165,9637,564],{"class":358},[165,9639,9640],{"class":440}," chat_conv",[165,9642,564],{"class":358},[165,9644,9050],{"class":226},[165,9646,5045],{"class":179},[165,9648,3291],{"class":226},[165,9650,564],{"class":358},[165,9652,6024],{"class":971},[165,9654,368],{"class":222},[165,9656,9657],{"class":440},"tool_steps",[165,9659,3092],{"class":358},[165,9661,421],{"class":415},[165,9663,233],{"class":179},[165,9665,9667],{"class":167,"line":9666},572,[165,9668,482],{"class":358},[165,9670,9672],{"class":167,"line":9671},573,[165,9673,1604],{"emptyLinePlaceholder":1603},[165,9675,9677,9680,9682],{"class":167,"line":9676},574,[165,9678,9679],{"class":364},"    q2 ",[165,9681,368],{"class":222},[165,9683,7691],{"class":358},[165,9685,9687,9689,9692],{"class":167,"line":9686},575,[165,9688,376],{"class":226},[165,9690,9691],{"class":179},"One more thing: I am traveling next week. Please send the replacement ",[165,9693,233],{"class":226},[165,9695,9697,9699,9702],{"class":167,"line":9696},576,[165,9698,376],{"class":226},[165,9700,9701],{"class":179},"to my office at 100 Century Avenue, Pudong, Shanghai by Friday, and ",[165,9703,233],{"class":226},[165,9705,9707,9709,9712],{"class":167,"line":9706},577,[165,9708,376],{"class":226},[165,9710,9711],{"class":179},"send progress updates by SMS.",[165,9713,233],{"class":226},[165,9715,9717],{"class":167,"line":9716},578,[165,9718,482],{"class":358},[165,9720,9722,9724,9726,9728,9730,9732,9734,9736,9739,9741,9743],{"class":167,"line":9721},579,[165,9723,537],{"class":523},[165,9725,540],{"class":358},[165,9727,579],{"class":350},[165,9729,382],{"class":179},[165,9731,5116],{"class":5115},[165,9733,8957],{"class":179},[165,9735,416],{"class":415},[165,9737,9738],{"class":440},"q2",[165,9740,421],{"class":415},[165,9742,382],{"class":179},[165,9744,550],{"class":358},[165,9746,9748,9750,9752,9754,9757,9759,9761,9763,9765,9767,9769,9771,9773,9775,9777,9779,9781,9783,9785,9787,9789,9791],{"class":167,"line":9747},580,[165,9749,537],{"class":523},[165,9751,540],{"class":358},[165,9753,579],{"class":350},[165,9755,9756],{"class":179},"\"[Customer Service] ",[165,9758,416],{"class":415},[165,9760,1647],{"class":440},[165,9762,95],{"class":358},[165,9764,5845],{"class":440},[165,9766,540],{"class":358},[165,9768,9738],{"class":440},[165,9770,564],{"class":358},[165,9772,9635],{"class":523},[165,9774,564],{"class":358},[165,9776,9640],{"class":440},[165,9778,564],{"class":358},[165,9780,9050],{"class":226},[165,9782,5045],{"class":179},[165,9784,3291],{"class":226},[165,9786,3092],{"class":358},[165,9788,421],{"class":415},[165,9790,382],{"class":179},[165,9792,550],{"class":358},[165,9794,9796],{"class":167,"line":9795},581,[165,9797,1604],{"emptyLinePlaceholder":1603},[165,9799,9801,9803],{"class":167,"line":9800},582,[165,9802,537],{"class":523},[165,9804,623],{"class":358},[165,9806,9808,9810,9812,9814,9816,9818,9820,9822],{"class":167,"line":9807},583,[165,9809,537],{"class":523},[165,9811,540],{"class":358},[165,9813,382],{"class":226},[165,9815,368],{"class":179},[165,9817,382],{"class":226},[165,9819,3770],{"class":222},[165,9821,8839],{"class":977},[165,9823,550],{"class":358},[165,9825,9827,9829,9831,9833,9836,9838],{"class":167,"line":9826},584,[165,9828,537],{"class":523},[165,9830,540],{"class":358},[165,9832,382],{"class":226},[165,9834,9835],{"class":179},"DAY 4 · Email ticket: same consumer, new session and channel",[165,9837,382],{"class":226},[165,9839,550],{"class":358},[165,9841,9843,9845,9847,9849,9851,9853,9855,9857],{"class":167,"line":9842},585,[165,9844,537],{"class":523},[165,9846,540],{"class":358},[165,9848,382],{"class":226},[165,9850,368],{"class":179},[165,9852,382],{"class":226},[165,9854,3770],{"class":222},[165,9856,8839],{"class":977},[165,9858,550],{"class":358},[165,9860,9862,9865,9867,9869,9872],{"class":167,"line":9861},586,[165,9863,9864],{"class":364},"    mail_conv ",[165,9866,368],{"class":222},[165,9868,227],{"class":226},[165,9870,9871],{"class":179},"conv_mail_0824",[165,9873,233],{"class":226},[165,9875,9877],{"class":167,"line":9876},587,[165,9878,1604],{"emptyLinePlaceholder":1603},[165,9880,9882,9885,9887,9889,9892],{"class":167,"line":9881},588,[165,9883,9884],{"class":364},"    q3 ",[165,9886,368],{"class":222},[165,9888,227],{"class":226},[165,9890,9891],{"class":179},"Hi, what is the status of the headset exchange I reported earlier?",[165,9893,233],{"class":226},[165,9895,9897,9899,9901,9903,9905,9907,9909,9911,9914,9916,9918],{"class":167,"line":9896},589,[165,9898,537],{"class":523},[165,9900,540],{"class":358},[165,9902,579],{"class":350},[165,9904,382],{"class":179},[165,9906,5116],{"class":5115},[165,9908,8957],{"class":179},[165,9910,416],{"class":415},[165,9912,9913],{"class":440},"q3",[165,9915,421],{"class":415},[165,9917,382],{"class":179},[165,9919,550],{"class":358},[165,9921,9923,9925,9927,9929,9931,9933,9935,9937,9939,9941,9943,9945,9947,9949,9952,9954,9956,9958,9960,9962,9964,9966],{"class":167,"line":9922},590,[165,9924,537],{"class":523},[165,9926,540],{"class":358},[165,9928,579],{"class":350},[165,9930,9756],{"class":179},[165,9932,416],{"class":415},[165,9934,1647],{"class":440},[165,9936,95],{"class":358},[165,9938,5845],{"class":440},[165,9940,540],{"class":358},[165,9942,9913],{"class":440},[165,9944,564],{"class":358},[165,9946,9635],{"class":523},[165,9948,564],{"class":358},[165,9950,9951],{"class":440}," mail_conv",[165,9953,564],{"class":358},[165,9955,9050],{"class":226},[165,9957,5066],{"class":179},[165,9959,3291],{"class":226},[165,9961,3092],{"class":358},[165,9963,421],{"class":415},[165,9965,382],{"class":179},[165,9967,550],{"class":358},[165,9969,9971],{"class":167,"line":9970},591,[165,9972,1604],{"emptyLinePlaceholder":1603},[165,9974,9976,9978],{"class":167,"line":9975},592,[165,9977,537],{"class":523},[165,9979,623],{"class":358},[165,9981,9983,9985,9987,9989,9991,9993,9995,9997],{"class":167,"line":9982},593,[165,9984,537],{"class":523},[165,9986,540],{"class":358},[165,9988,382],{"class":226},[165,9990,368],{"class":179},[165,9992,382],{"class":226},[165,9994,3770],{"class":222},[165,9996,8839],{"class":977},[165,9998,550],{"class":358},[165,10000,10002,10004,10006,10008,10011,10013],{"class":167,"line":10001},594,[165,10003,537],{"class":523},[165,10005,540],{"class":358},[165,10007,382],{"class":226},[165,10009,10010],{"class":179},"DAY 7 · Web chat: another consumer with a similar issue",[165,10012,382],{"class":226},[165,10014,550],{"class":358},[165,10016,10018,10020,10022,10024,10026,10028,10030,10032],{"class":167,"line":10017},595,[165,10019,537],{"class":523},[165,10021,540],{"class":358},[165,10023,382],{"class":226},[165,10025,368],{"class":179},[165,10027,382],{"class":226},[165,10029,3770],{"class":222},[165,10031,8839],{"class":977},[165,10033,550],{"class":358},[165,10035,10037,10040,10042,10044,10047],{"class":167,"line":10036},596,[165,10038,10039],{"class":364},"    conv_2 ",[165,10041,368],{"class":222},[165,10043,227],{"class":226},[165,10045,10046],{"class":179},"conv_chat_0828",[165,10048,233],{"class":226},[165,10050,10052],{"class":167,"line":10051},597,[165,10053,1604],{"emptyLinePlaceholder":1603},[165,10055,10057,10060,10062,10064,10067],{"class":167,"line":10056},598,[165,10058,10059],{"class":364},"    q4 ",[165,10061,368],{"class":222},[165,10063,227],{"class":226},[165,10065,10066],{"class":179},"Hi, my new noise-canceling headset has a buzzing noise. What should I do?",[165,10068,233],{"class":226},[165,10070,10072,10074,10076,10078,10080,10082,10084,10086,10089,10091,10093],{"class":167,"line":10071},599,[165,10073,537],{"class":523},[165,10075,540],{"class":358},[165,10077,579],{"class":350},[165,10079,382],{"class":179},[165,10081,5116],{"class":5115},[165,10083,8957],{"class":179},[165,10085,416],{"class":415},[165,10087,10088],{"class":440},"q4",[165,10090,421],{"class":415},[165,10092,382],{"class":179},[165,10094,550],{"class":358},[165,10096,10098,10100,10102,10104,10106,10108,10110,10112,10114,10116,10118,10120,10123,10125,10128,10130,10132,10134,10136,10138,10140,10142],{"class":167,"line":10097},600,[165,10099,537],{"class":523},[165,10101,540],{"class":358},[165,10103,579],{"class":350},[165,10105,9756],{"class":179},[165,10107,416],{"class":415},[165,10109,1647],{"class":440},[165,10111,95],{"class":358},[165,10113,5845],{"class":440},[165,10115,540],{"class":358},[165,10117,10088],{"class":440},[165,10119,564],{"class":358},[165,10121,10122],{"class":523}," CUSTOMER_ID_2",[165,10124,564],{"class":358},[165,10126,10127],{"class":440}," conv_2",[165,10129,564],{"class":358},[165,10131,9050],{"class":226},[165,10133,5045],{"class":179},[165,10135,3291],{"class":226},[165,10137,3092],{"class":358},[165,10139,421],{"class":415},[165,10141,382],{"class":179},[165,10143,550],{"class":358},[165,10145,10147],{"class":167,"line":10146},601,[165,10148,1604],{"emptyLinePlaceholder":1603},[165,10150,10152,10154],{"class":167,"line":10151},602,[165,10153,537],{"class":523},[165,10155,623],{"class":358},[165,10157,10159,10161,10163,10165,10168,10170],{"class":167,"line":10158},603,[165,10160,537],{"class":523},[165,10162,540],{"class":358},[165,10164,382],{"class":226},[165,10166,10167],{"class":179},"Demo complete. Verify these three points:",[165,10169,382],{"class":226},[165,10171,550],{"class":358},[165,10173,10175,10177,10179,10181,10184,10186],{"class":167,"line":10174},604,[165,10176,537],{"class":523},[165,10178,540],{"class":358},[165,10180,382],{"class":226},[165,10182,10183],{"class":179},"1. The User Cube generates only facts and preferences; the Agent Cube",[165,10185,382],{"class":226},[165,10187,550],{"class":358},[165,10189,10191,10193,10195,10197,10200,10202],{"class":167,"line":10190},605,[165,10192,537],{"class":523},[165,10194,540],{"class":358},[165,10196,382],{"class":226},[165,10198,10199],{"class":179},"   generates only Skills.",[165,10201,382],{"class":226},[165,10203,550],{"class":358},[165,10205,10207,10209,10211,10213,10216,10218],{"class":167,"line":10206},606,[165,10208,537],{"class":523},[165,10210,540],{"class":358},[165,10212,382],{"class":226},[165,10214,10215],{"class":179},"2. DAY 4 retrieves facts and preferences from customer_001 memory.",[165,10217,382],{"class":226},[165,10219,550],{"class":358},[165,10221,10223,10225,10227,10229,10232,10234],{"class":167,"line":10222},607,[165,10224,537],{"class":523},[165,10226,540],{"class":358},[165,10228,382],{"class":226},[165,10230,10231],{"class":179},"3. DAY 7 does not expose facts or preferences from customer_001, but",[165,10233,382],{"class":226},[165,10235,550],{"class":358},[165,10237,10239,10241,10243,10245,10248,10250,10252,10254,10257],{"class":167,"line":10238},608,[165,10240,537],{"class":523},[165,10242,540],{"class":358},[165,10244,579],{"class":350},[165,10246,10247],{"class":179},"\"   it can retrieve generalized Skills from ",[165,10249,416],{"class":415},[165,10251,298],{"class":523},[165,10253,421],{"class":415},[165,10255,10256],{"class":179},".\"",[165,10258,550],{"class":358},[165,10260,10262],{"class":167,"line":10261},609,[165,10263,1604],{"emptyLinePlaceholder":1603},[165,10265,10267],{"class":167,"line":10266},610,[165,10268,1604],{"emptyLinePlaceholder":1603},[165,10270,10272,10275,10278,10280,10282,10285,10287],{"class":167,"line":10271},611,[165,10273,10274],{"class":599},"if",[165,10276,10277],{"class":218}," __name__",[165,10279,3095],{"class":222},[165,10281,227],{"class":226},[165,10283,10284],{"class":179},"__main__",[165,10286,382],{"class":226},[165,10288,1980],{"class":358},[165,10290,10292,10295,10297],{"class":167,"line":10291},612,[165,10293,10294],{"class":364},"    config ",[165,10296,368],{"class":222},[165,10298,371],{"class":358},[165,10300,10302,10304,10306,10308,10310,10313],{"class":167,"line":10301},613,[165,10303,376],{"class":226},[165,10305,219],{"class":179},[165,10307,382],{"class":226},[165,10309,385],{"class":358},[165,10311,10312],{"class":218}," MEMOS_API_KEY",[165,10314,395],{"class":358},[165,10316,10318,10320,10322,10324,10326,10329],{"class":167,"line":10317},614,[165,10319,376],{"class":226},[165,10321,238],{"class":179},[165,10323,382],{"class":226},[165,10325,385],{"class":358},[165,10327,10328],{"class":218}," OPENAI_API_KEY",[165,10330,395],{"class":358},[165,10332,10334,10336,10338,10340,10342,10345],{"class":167,"line":10333},615,[165,10335,376],{"class":226},[165,10337,253],{"class":179},[165,10339,382],{"class":226},[165,10341,385],{"class":358},[165,10343,10344],{"class":218}," MEMOS_BASE_URL",[165,10346,395],{"class":358},[165,10348,10350,10352,10354,10356,10358,10361],{"class":167,"line":10349},616,[165,10351,376],{"class":226},[165,10353,268],{"class":179},[165,10355,382],{"class":226},[165,10357,385],{"class":358},[165,10359,10360],{"class":218}," OPENAI_MODEL",[165,10362,395],{"class":358},[165,10364,10366,10368,10370,10372,10374,10377],{"class":167,"line":10365},617,[165,10367,376],{"class":226},[165,10369,283],{"class":179},[165,10371,382],{"class":226},[165,10373,385],{"class":358},[165,10375,10376],{"class":218}," OPENAI_BASE_URL",[165,10378,395],{"class":358},[165,10380,10382,10384,10386,10388,10390,10392],{"class":167,"line":10381},618,[165,10383,376],{"class":226},[165,10385,298],{"class":179},[165,10387,382],{"class":226},[165,10389,385],{"class":358},[165,10391,1058],{"class":218},[165,10393,395],{"class":358},[165,10395,10397],{"class":167,"line":10396},619,[165,10398,430],{"class":358},[165,10400,10402,10405,10407],{"class":167,"line":10401},620,[165,10403,10404],{"class":364},"    missing ",[165,10406,368],{"class":222},[165,10408,1546],{"class":358},[165,10410,10412],{"class":167,"line":10411},621,[165,10413,10414],{"class":364},"        name\n",[165,10416,10418,10420,10422,10424,10427,10429,10432,10434,10437],{"class":167,"line":10417},622,[165,10419,6270],{"class":599},[165,10421,7502],{"class":364},[165,10423,564],{"class":358},[165,10425,10426],{"class":364}," value ",[165,10428,3154],{"class":599},[165,10430,10431],{"class":364}," config",[165,10433,95],{"class":358},[165,10435,10436],{"class":440},"items",[165,10438,623],{"class":358},[165,10440,10442,10444,10446,10448,10450,10452,10454,10457,10459,10461,10464,10466],{"class":167,"line":10441},623,[165,10443,3073],{"class":599},[165,10445,7775],{"class":222},[165,10447,10426],{"class":364},[165,10449,6281],{"class":222},[165,10451,7232],{"class":364},[165,10453,95],{"class":358},[165,10455,10456],{"class":440},"startswith",[165,10458,540],{"class":358},[165,10460,382],{"class":226},[165,10462,10463],{"class":179},"YOUR_",[165,10465,382],{"class":226},[165,10467,550],{"class":358},[165,10469,10471],{"class":167,"line":10470},624,[165,10472,9596],{"class":358},[165,10474,10476,10478,10481],{"class":167,"line":10475},625,[165,10477,7618],{"class":599},[165,10479,10480],{"class":364}," missing",[165,10482,1980],{"class":358},[165,10484,10486,10488,10490,10492,10494,10496,10499,10501,10503,10505,10507,10509,10511,10513,10516,10518,10520,10522],{"class":167,"line":10485},626,[165,10487,4950],{"class":364},[165,10489,95],{"class":358},[165,10491,4737],{"class":440},[165,10493,540],{"class":358},[165,10495,579],{"class":350},[165,10497,10498],{"class":179},"\"Configure these values at the top of the file: ",[165,10500,416],{"class":415},[165,10502,3291],{"class":226},[165,10504,1240],{"class":179},[165,10506,3291],{"class":226},[165,10508,95],{"class":358},[165,10510,5123],{"class":440},[165,10512,540],{"class":358},[165,10514,10515],{"class":440},"missing",[165,10517,3092],{"class":358},[165,10519,421],{"class":415},[165,10521,382],{"class":179},[165,10523,550],{"class":358},[165,10525,10527,10529,10532,10535,10537],{"class":167,"line":10526},627,[165,10528,7618],{"class":599},[165,10530,10531],{"class":364}," OpenAI ",[165,10533,10534],{"class":222},"is",[165,10536,2710],{"class":2017},[165,10538,1980],{"class":358},[165,10540,10542,10544,10546,10548,10550,10552,10555,10557],{"class":167,"line":10541},628,[165,10543,4950],{"class":364},[165,10545,95],{"class":358},[165,10547,4737],{"class":440},[165,10549,540],{"class":358},[165,10551,382],{"class":226},[165,10553,10554],{"class":179},"Install the OpenAI SDK first: pip install openai",[165,10556,382],{"class":226},[165,10558,550],{"class":358},[165,10560,10562,10565],{"class":167,"line":10561},629,[165,10563,10564],{"class":440},"    run_demo",[165,10566,623],{"class":358},[10568,10569,10570],"style",{},"html pre.shiki code .saonL, html code.shiki .saonL{--shiki-light:#E2931D;--shiki-default:#702C00;--shiki-dark:#FFA657}html pre.shiki code .sp2SP, html code.shiki .sp2SP{--shiki-light:#91B859;--shiki-default:#023B95;--shiki-dark:#79C0FF}html pre.shiki code .sp1uZ, html code.shiki .sp1uZ{--shiki-light:#91B859;--shiki-default:#032563;--shiki-dark:#A5D6FF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sZaqd, html code.shiki .sZaqd{--shiki-light:#90A4AE;--shiki-default:#023B95;--shiki-dark:#79C0FF}html pre.shiki code .saN0X, html code.shiki .saN0X{--shiki-light:#39ADB5;--shiki-default:#A0111F;--shiki-dark:#FF7B72}html pre.shiki code .sjUum, html code.shiki .sjUum{--shiki-light:#39ADB5;--shiki-default:#032563;--shiki-dark:#A5D6FF}html pre.shiki code .sZ6T4, html code.shiki .sZ6T4{--shiki-light:#9C3EDA;--shiki-default:#A0111F;--shiki-dark:#FF7B72}html pre.shiki code .sbcIq, html code.shiki .sbcIq{--shiki-light:#6182B8;--shiki-default:#622CBC;--shiki-dark:#D2A8FF}html pre.shiki code .suWxN, html code.shiki .suWxN{--shiki-light:#39ADB5;--shiki-default:#0E1116;--shiki-dark:#E6EDF3}html pre.shiki code .s5ojA, html code.shiki .s5ojA{--shiki-light:#90A4AE;--shiki-default:#0E1116;--shiki-dark:#E6EDF3}html pre.shiki code .scyET, html code.shiki .scyET{--shiki-light:#F76D47;--shiki-default:#A0111F;--shiki-dark:#FF7B72}html pre.shiki code .sa-2m, html code.shiki .sa-2m{--shiki-light:#6182B8;--shiki-default:#0E1116;--shiki-dark:#E6EDF3}html pre.shiki code .svxCd, html code.shiki .svxCd{--shiki-light:#6182B8;--shiki-default:#023B95;--shiki-dark:#79C0FF}html pre.shiki code .sBMTB, html code.shiki .sBMTB{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#A0111F;--shiki-default-font-style:inherit;--shiki-dark:#FF7B72;--shiki-dark-font-style:inherit}html pre.shiki code .sZhmI, html code.shiki .sZhmI{--shiki-light:#E53935;--shiki-light-font-style:italic;--shiki-default:#0E1116;--shiki-default-font-style:inherit;--shiki-dark:#E6EDF3;--shiki-dark-font-style:inherit}html pre.shiki code .sM07a, html code.shiki .sM07a{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#0E1116;--shiki-default-font-style:inherit;--shiki-dark:#E6EDF3;--shiki-dark-font-style:inherit}html pre.shiki code .s9tbJ, html code.shiki .s9tbJ{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#032563;--shiki-default-font-style:inherit;--shiki-dark:#A5D6FF;--shiki-dark-font-style:inherit}html pre.shiki code .soLfw, html code.shiki .soLfw{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#032563;--shiki-default-font-style:inherit;--shiki-dark:#A5D6FF;--shiki-dark-font-style:inherit}html pre.shiki code .sp4zP, html code.shiki .sp4zP{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#702C00;--shiki-default-font-style:inherit;--shiki-dark:#FFA657;--shiki-dark-font-style:inherit}html pre.shiki code .sJNII, html code.shiki .sJNII{--shiki-light:#F76D47;--shiki-default:#023B95;--shiki-dark:#79C0FF}html pre.shiki code .s5qkx, html code.shiki .s5qkx{--shiki-light:#E53935;--shiki-default:#0E1116;--shiki-dark:#E6EDF3}html pre.shiki code .sfVK4, html code.shiki .sfVK4{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#66707B;--shiki-default-font-style:inherit;--shiki-dark:#8B949E;--shiki-dark-font-style:inherit}html pre.shiki code .skqQ-, html code.shiki .skqQ-{--shiki-light:#E2931D;--shiki-default:#023B95;--shiki-dark:#79C0FF}html pre.shiki code .smHB8, html code.shiki .smHB8{--shiki-light:#39ADB5;--shiki-default:#023B95;--shiki-dark:#79C0FF}html pre.shiki code .seOsA, html code.shiki .seOsA{--shiki-light:#90A4AE;--shiki-default:#A0111F;--shiki-dark:#FF7B72}html pre.shiki code .skqL1, html code.shiki .skqL1{--shiki-light:#39ADB5;--shiki-default:#622CBC;--shiki-dark:#D2A8FF}",{"title":68,"searchDepth":186,"depth":186,"links":10572},[10573,10574,10575,10576,10577,10578,10579,10583,10584,10588,10589,10590],{"id":26,"depth":186,"text":27},{"id":56,"depth":186,"text":57},{"id":78,"depth":186,"text":79},{"id":118,"depth":186,"text":119},{"id":140,"depth":186,"text":141},{"id":336,"depth":186,"text":337},{"id":644,"depth":186,"text":645,"children":10580},[10581,10582],{"id":759,"depth":250,"text":760},{"id":988,"depth":250,"text":989},{"id":1214,"depth":186,"text":1215},{"id":1261,"depth":186,"text":1262,"children":10585},[10586,10587],{"id":1270,"depth":250,"text":1271},{"id":1397,"depth":250,"text":1398},{"id":1519,"depth":186,"text":1520},{"id":1702,"depth":186,"text":1703},{"id":1736,"depth":186,"text":1737},"Separate user memories, Agent Skills, and policy knowledge so a customer service Agent can continue user cases across sessions and reuse general workflows.","md",{},"/en/usecase/customer_service_assistant",{"title":5,"description":13},"en/usecase/customer_service_assistant","L2aXMsJPqXGUezdBJBMPUZS7YaA8AcykSfeJpHrWh6o",[10599,10607],{"title":10600,"path":10601,"stem":10602,"icon":10603,"framework":6,"module":6,"class":10604,"target":-1,"active":10605,"defaultOpen":10605,"children":-1,"description":10606},"Knowledge Q&A Assistant","/usecase/knowledge_qa_assistant","usecase/knowledge_qa_assistant","i-ri-customer-service-2-line",[],false,"Combine long-term memory with a knowledge base to move beyond “one-size-fits-all” retrieval results—deliver personalized, more accurate answers based on each user’s background and preferences, and turn your knowledge base into a consultant that truly understands you.",{"title":10608,"path":10609,"stem":10610,"icon":10611,"framework":6,"module":6,"class":10612,"target":-1,"active":10605,"defaultOpen":10605,"children":-1,"description":10613},"Financial Assistant","/usecase/financial_assistant","usecase/financial_assistant","i-ri-money-dollar-circle-line",[],"With MemOS, user operations and conversational behaviors are abstracted into \"memories,\" enabling the identification and extraction of underlying investment preferences to deliver more personalized services.",1788345948301]